@@ -836,7 +836,7 @@ pub fn create_pg_get_userbyid_udf() -> ScalarUDF {
836836 )
837837}
838838
839- pub fn create_pg_table_is_visible ( ) -> ScalarUDF {
839+ pub fn create_pg_table_is_visible ( name : & str ) -> ScalarUDF {
840840 // Define the function implementation
841841 let func = move |args : & [ ColumnarValue ] | {
842842 let args = ColumnarValue :: values_to_arrays ( args) ?;
@@ -855,20 +855,20 @@ pub fn create_pg_table_is_visible() -> ScalarUDF {
855855
856856 // Wrap the implementation in a scalar function
857857 create_udf (
858- "pg_catalog.pg_table_is_visible" ,
858+ name ,
859859 vec ! [ DataType :: Int32 ] ,
860860 DataType :: Boolean ,
861861 Volatility :: Stable ,
862862 Arc :: new ( func) ,
863863 )
864864}
865865
866- pub fn create_has_table_privilege_3param_udf ( ) -> ScalarUDF {
866+ pub fn create_has_privilege_3param_udf ( name : & str ) -> ScalarUDF {
867867 // Define the function implementation for 3-parameter version
868868 let func = move |args : & [ ColumnarValue ] | {
869869 let args = ColumnarValue :: values_to_arrays ( args) ?;
870870 let user = & args[ 0 ] ; // User (can be name or OID)
871- let _table = & args[ 1 ] ; // Table (can be name or OID)
871+ let _obj = & args[ 1 ] ; // Table (can be name or OID)
872872 let _privilege = & args[ 2 ] ; // Privilege type (SELECT, INSERT, etc.)
873873
874874 // For now, always return true (full access)
@@ -884,24 +884,24 @@ pub fn create_has_table_privilege_3param_udf() -> ScalarUDF {
884884
885885 // Wrap the implementation in a scalar function
886886 create_udf (
887- "has_table_privilege" ,
887+ name ,
888888 vec ! [ DataType :: Utf8 , DataType :: Utf8 , DataType :: Utf8 ] ,
889889 DataType :: Boolean ,
890890 Volatility :: Stable ,
891891 Arc :: new ( func) ,
892892 )
893893}
894894
895- pub fn create_has_table_privilege_2param_udf ( ) -> ScalarUDF {
895+ pub fn create_has_privilege_2param_udf ( name : & str ) -> ScalarUDF {
896896 // Define the function implementation for 2-parameter version (current user, table, privilege)
897897 let func = move |args : & [ ColumnarValue ] | {
898898 let args = ColumnarValue :: values_to_arrays ( args) ?;
899- let table = & args[ 0 ] ; // Table (can be name or OID)
899+ let obj = & args[ 0 ] ; // Table (can be name or OID)
900900 let _privilege = & args[ 1 ] ; // Privilege type (SELECT, INSERT, etc.)
901901
902902 // For now, always return true (full access for current user)
903- let mut builder = BooleanArray :: builder ( table . len ( ) ) ;
904- for _ in 0 ..table . len ( ) {
903+ let mut builder = BooleanArray :: builder ( obj . len ( ) ) ;
904+ for _ in 0 ..obj . len ( ) {
905905 builder. append_value ( true ) ;
906906 }
907907 let array: ArrayRef = Arc :: new ( builder. finish ( ) ) ;
@@ -911,7 +911,7 @@ pub fn create_has_table_privilege_2param_udf() -> ScalarUDF {
911911
912912 // Wrap the implementation in a scalar function
913913 create_udf (
914- "has_table_privilege" ,
914+ name ,
915915 vec ! [ DataType :: Utf8 , DataType :: Utf8 ] ,
916916 DataType :: Boolean ,
917917 Volatility :: Stable ,
@@ -970,7 +970,6 @@ pub fn create_pg_get_partkeydef_udf() -> ScalarUDF {
970970 let args = ColumnarValue :: values_to_arrays ( args) ?;
971971 let oid = & args[ 0 ] ;
972972
973- // For now, always return true (full access for current user)
974973 let mut builder = StringBuilder :: new ( ) ;
975974 for _ in 0 ..oid. len ( ) {
976975 builder. append_value ( "" ) ;
@@ -1016,9 +1015,32 @@ pub fn setup_pg_catalog(
10161015 session_context. register_udf ( create_current_schemas_udf ( "pg_catalog.current_schemas" ) ) ;
10171016 session_context. register_udf ( create_version_udf ( ) ) ;
10181017 session_context. register_udf ( create_pg_get_userbyid_udf ( ) ) ;
1019- session_context. register_udf ( create_has_table_privilege_2param_udf ( ) ) ;
1020- session_context. register_udf ( create_has_table_privilege_3param_udf ( ) ) ;
1021- session_context. register_udf ( create_pg_table_is_visible ( ) ) ;
1018+ session_context. register_udf ( create_has_privilege_2param_udf ( "has_table_privilege" ) ) ;
1019+ session_context. register_udf ( create_has_privilege_2param_udf (
1020+ "pg_catalog.has_table_privilege" ,
1021+ ) ) ;
1022+ session_context. register_udf ( create_has_privilege_2param_udf ( "has_schema_privilege" ) ) ;
1023+ session_context. register_udf ( create_has_privilege_2param_udf (
1024+ "pg_catalog.has_schema_privilege" ,
1025+ ) ) ;
1026+ session_context. register_udf ( create_has_privilege_2param_udf ( "has_any_column_privilege" ) ) ;
1027+ session_context. register_udf ( create_has_privilege_2param_udf (
1028+ "pg_catalog.has_any_column_privilege" ,
1029+ ) ) ;
1030+ session_context. register_udf ( create_has_privilege_3param_udf ( "has_table_privilege" ) ) ;
1031+ session_context. register_udf ( create_has_privilege_3param_udf (
1032+ "pg_catalog.has_table_privilege" ,
1033+ ) ) ;
1034+ session_context. register_udf ( create_has_privilege_3param_udf ( "has_schema_privilege" ) ) ;
1035+ session_context. register_udf ( create_has_privilege_3param_udf (
1036+ "pg_catalog.has_schema_privilege" ,
1037+ ) ) ;
1038+ session_context. register_udf ( create_has_privilege_3param_udf ( "has_any_column_privilege" ) ) ;
1039+ session_context. register_udf ( create_has_privilege_3param_udf (
1040+ "pg_catalog.has_any_column_privilege" ,
1041+ ) ) ;
1042+ session_context. register_udf ( create_pg_table_is_visible ( "pg_catalog" ) ) ;
1043+ session_context. register_udf ( create_pg_table_is_visible ( "pg_catalog.pg_table_is_visible" ) ) ;
10221044 session_context. register_udf ( create_format_type_udf ( ) ) ;
10231045 session_context. register_udf ( create_session_user_udf ( ) ) ;
10241046 session_context. register_udtf ( "pg_get_keywords" , static_tables. pg_get_keywords . clone ( ) ) ;
0 commit comments