protected ADBResultSet executeGetSchemasQuery()

in asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java [100:134]


    protected ADBResultSet executeGetSchemasQuery(String catalog, String schemaPattern, String tag)
            throws SQLException {
        checkClosed();

        StringBuilder sql = new StringBuilder(512);
        populateQueryProlog(sql, "JDBC-GetSchemas-" + tag);

        sql.append("select TABLE_SCHEM, TABLE_CATALOG ");
        sql.append("from Metadata.`Dataverse` ");
        sql.append("let ");
        switch (connection.catalogDataverseMode) {
            case CATALOG:
                sql.append("TABLE_CATALOG = DataverseName, ");
                sql.append("TABLE_SCHEM = null ");
                sql.append("where true ");
                break;
            case CATALOG_SCHEMA:
                sql.append("name = decode_dataverse_name(DataverseName), ");
                sql.append("TABLE_CATALOG = name[0], ");
                sql.append("TABLE_SCHEM = case array_length(name) when 1 then null else name[1] end ");
                sql.append("where (array_length(name) between 1 and 2) ");
                break;
            default:
                throw new IllegalStateException();
        }
        if (catalog != null) {
            sql.append("and (TABLE_CATALOG = $1) ");
        }
        if (schemaPattern != null) {
            sql.append("and (if_null(TABLE_SCHEM, '') like $2) ");
        }
        sql.append("order by TABLE_CATALOG, TABLE_SCHEM");

        return executeQueryImpl(sql.toString(), Arrays.asList(catalog, schemaPattern));
    }