Hi! On Friday, 2 September 2022 at 23:40:02 UTC+8 prrvchr wrote:
> > - java.sql.DatabaseMetaData.getUserName() should return the user who > is logged in (current user). > > This method is implemented in H2 itself properly. You can also use standard CURRENT_USER expression in SQL. > - In order to obtain all the users declared on the database the > INFORMATION_SCHEMA.SYSTEM_USERS table is used. This table normalized > by JDBC must list all the users whose current user... The query is: SELECT > USER_NAME FROM INFORMATION_SCHEMA.SYSTEM_USERS > > There is no such table or view in the SQL Standard. INFORMATION_SCHEMA is not related to JDBC in any way, it is covered only by the SQL Standard, Part 11: Information and Definition Schemas (SQL/Schemata). H2 has own non-standard table INFORMATION_SCHEMA.USERS, you need to use it instead. > > - In order to obtain all the roles declared on the database the > INFORMATION_SCHEMA.ADMINISTRABLE_ROLE_AUTHORIZATIONS table is used. This > table normalized by JDBC should list all roles, including default system > roles... The query is: SELECT ROLE_NAME FROM > INFORMATION_SCHEMA.ADMINISTRABLE_ROLE_AUTHORIZATIONS > > This view is a part of the SQL Standard. Database systems with optional features T331, “Basic roles” and F391, “Long identifiers” should also provide this view. We can add this view to H2. > > - in order to obtain the hierarchy of roles as well as the users > assigned to roles since there is no standardized table in JDBC, I need > a table in INFORMATION_SCHEMA allowing to establish these relations. With > HsqlDB, fredt provided me with the > INFORMATION_SCHEMA.ROLE_AUTHORIZATION_DESCRIPTORS table which lists all > the > GRANTEE and ROLE_NAME and allows me to establish the relationships... > > There is no such table or view is the SQL Standard. There is a DEFINITION_SCHEMA.ROLE_AUTHORIZATION_DESCRIPTORS table, but according to the Standard, DEFINITION_SCHEMA is not accessible to applications even if it exists. Applications should use views in INFORMATION_SCHEMA based on this table, such as INFORMATION_SCHEMA.APPLICABLE_ROLES, INFORMATION_SCHEMA.ENABLED_ROLES and others, but they don't provide complete information. We can add these standard views to H2, but we shouldn't add ROLE_AUTHORIZATION_DESCRIPTORS. In the current H2 all available information is provided in INFORMATION_SCHEMA.USERS, INFORMATION_SCHEMA.ROLES, and INFORMATION_SCHEMA.GRANTS. These tables are non-standard and non-portable. https://h2database.com/html/systemtables.html#information_schema_users https://h2database.com/html/systemtables.html#information_schema_roles https://h2database.com/html/systemtables.html#information_schema_rights -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to h2-database+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/h2-database/632e9586-ad71-4180-9601-1e26a3c0b286n%40googlegroups.com.