Skip to content

Commit

Permalink
Fix bugs for GRANT/REVOKE on SCHEMA (babelfish-for-postgresql#2031)
Browse files Browse the repository at this point in the history
Bug fixes  for GRANT/REVOKE .. ON SCHEMA

1. Server crash when using empty bracketed name.  `schema::[]`
2. Server crash when using empty quoted identifier. `schema::""`
3. When granting permission to yourself, we need a different error message.
4. Error message in not-supported multi-keyword permission should (i) be in uppercase (ii) have a space between keywords
5. Not-supported object type in error message should be in uppercase
6. GRANT ON SCHEMA:: TO PUBLIC does not take effect
7. Specified collation for column names using NAME datatype

Issues Resolved : BABEL-4344

Signed-off-by: Shalini Lohia <[email protected]>
  • Loading branch information
shalinilohia50 authored and Jason Teng committed Dec 24, 2023
1 parent 084191e commit 5694078
Show file tree
Hide file tree
Showing 13 changed files with 2,427 additions and 9 deletions.
11 changes: 11 additions & 0 deletions contrib/babelfishpg_tsql/sql/ownership.sql
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ CREATE TABLE sys.babelfish_sysdatabases (

GRANT SELECT on sys.babelfish_sysdatabases TO PUBLIC;

-- BABELFISH_SCHEMA_PERMISSIONS
CREATE TABLE sys.babelfish_schema_permissions (
dbid smallint NOT NULL,
schema_name NAME NOT NULL COLLATE sys.database_default,
object_name NAME NOT NULL COLLATE sys.database_default,
permission NAME NOT NULL COLLATE sys.database_default,
grantee NAME NOT NULL COLLATE sys.database_default,
object_type NAME COLLATE sys.database_default,
PRIMARY KEY(dbid, schema_name, object_name, permission, grantee)
);

-- BABELFISH_FUNCTION_EXT
CREATE TABLE sys.babelfish_function_ext (
nspname NAME NOT NULL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,17 @@ END;
$body$
LANGUAGE plpgsql STABLE;

-- BABELFISH_SCHEMA_PERMISSIONS
CREATE TABLE IF NOT EXISTS sys.babelfish_schema_permissions (
dbid smallint NOT NULL,
schema_name NAME NOT NULL COLLATE sys.database_default,
object_name NAME NOT NULL COLLATE sys.database_default,
permission NAME NOT NULL COLLATE sys.database_default,
grantee NAME NOT NULL COLLATE sys.database_default,
object_type NAME COLLATE sys.database_default,
PRIMARY KEY(dbid, schema_name, object_name, permission, grantee)
);

create or replace function sys.babelfish_timezone_mapping(IN tmz text) returns text
AS 'babelfishpg_tsql', 'timezone_mapping'
LANGUAGE C IMMUTABLE ;
Expand Down
Loading

0 comments on commit 5694078

Please sign in to comment.