Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions contrib/babelfishpg_tsql/sql/sys_functions.sql
Original file line number Diff line number Diff line change
Expand Up @@ -655,17 +655,14 @@ LANGUAGE plpgsql
VOLATILE
RETURNS NULL ON NULL INPUT;

-- This procedure is deliberately short-circuited to always return 1.
-- Babelfish does not currently have full support for permissions,
-- because the Babelfish table names might not match the unerlying
-- Postgres table names, so previous implementation threw an exception
-- on the underlying psql, and thus always returned NULL.
CREATE OR REPLACE FUNCTION sys.has_dbaccess(database_name PG_CATALOG.TEXT) RETURNS INTEGER AS $$
DECLARE has_access BOOLEAN;
BEGIN
has_access = has_database_privilege(database_name, 'CONNECT');
IF has_access THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
EXCEPTION WHEN others THEN
RETURN NULL;
RETURN 1;
END;
$$
STRICT
Expand Down
26 changes: 26 additions & 0 deletions test/JDBC/expected/BABEL-HAS_DBACCESS.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
DROP DATABASE IF EXISTS TestDB;
CREATE DATABASE TestDB;
SELECT HAS_DBACCESS('TestDB');
GO
~~START~~
int
1
~~END~~


SELECT HAS_DBACCESS('does_not_exist');
GO
~~START~~
int
1
~~END~~


DROP DATABASE TestDB;
SELECT HAS_DBACCESS('TestDB');
GO
~~START~~
int
1
~~END~~

11 changes: 11 additions & 0 deletions test/JDBC/input/BABEL-HAS_DBACCESS.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
DROP DATABASE IF EXISTS TestDB;
CREATE DATABASE TestDB;
SELECT HAS_DBACCESS('TestDB');
GO

SELECT HAS_DBACCESS('does_not_exist');
GO

DROP DATABASE TestDB;
SELECT HAS_DBACCESS('TestDB');
GO