Search in sources :

Example 6 with RowDescriptorBuilder

use of org.firebirdsql.gds.ng.fields.RowDescriptorBuilder in project jaybird by FirebirdSQL.

the class FBDatabaseMetaData method getBestRowIdentifier.

// @formatter:on
@Override
public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable) throws SQLException {
    // TODO Handling of scope is wrong
    final RowDescriptor rowDescriptor = new RowDescriptorBuilder(8, datatypeCoder).at(0).simple(SQL_SHORT, 0, "SCOPE", "ROWIDENTIFIER").addField().at(1).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "COLUMN_NAME", "ROWIDENTIFIER").addField().at(2).simple(SQL_SHORT, 0, "DATA_TYPE", "ROWIDENTIFIER").addField().at(3).simple(SQL_VARYING, 31, "TYPE_NAME", "ROWIDENTIFIER").addField().at(4).simple(SQL_LONG, 0, "COLUMN_SIZE", "ROWIDENTIFIER").addField().at(5).simple(SQL_LONG, 0, "BUFFER_LENGTH", "ROWIDENTIFIER").addField().at(6).simple(SQL_SHORT, 0, "DECIMAL_DIGITS", "ROWIDENTIFIER").addField().at(7).simple(SQL_SHORT, 0, "PSEUDO_COLUMN", "ROWIDENTIFIER").addField().toRowDescriptor();
    List<RowValue> rows;
    final RowValueBuilder rowValueBuilder = new RowValueBuilder(rowDescriptor);
    // Check if table exists, need to escape as getTables takes a pattern
    String quoteLikeTable = escapeWildcards(table);
    try (ResultSet tables = getTables(catalog, schema, quoteLikeTable, null)) {
        if (!tables.next()) {
            return new FBResultSet(rowDescriptor, Collections.<RowValue>emptyList());
        }
        rows = getPrimaryKeyIdentifier(tables.getString(3), scope, rowValueBuilder);
    }
    // if no primary key exists, add RDB$DB_KEY as pseudo-column
    if (rows.size() == 0) {
        rows.add(rowValueBuilder.at(0).set(createShort(scope)).at(1).set(getBytes("RDB$DB_KEY")).at(2).set(createShort(Types.ROWID)).at(3).set(getBytes(getDataTypeName(char_type, 0, CS_BINARY))).at(4).set(// TODO Consider querying RDB$RELATIONS for the actual size of the DB_KEY
        createInt(8)).at(6).set(createShort(0)).at(7).set(createShort(bestRowPseudo)).toRowValue(true));
    }
    return new FBResultSet(rowDescriptor, rows);
}
Also used : RowDescriptorBuilder(org.firebirdsql.gds.ng.fields.RowDescriptorBuilder) RowValueBuilder(org.firebirdsql.gds.ng.fields.RowValueBuilder) RowValue(org.firebirdsql.gds.ng.fields.RowValue) RowDescriptor(org.firebirdsql.gds.ng.fields.RowDescriptor)

Example 7 with RowDescriptorBuilder

use of org.firebirdsql.gds.ng.fields.RowDescriptorBuilder in project jaybird by FirebirdSQL.

the class FBDatabaseMetaData method getExportedKeys.

/**
 * Gets a description of the foreign key columns that reference a
 * table's primary key columns (the foreign keys exported by a
 * table).  They are ordered by FKTABLE_CAT, FKTABLE_SCHEM,
 * FKTABLE_NAME, and KEY_SEQ.
 *
 * <P>Each foreign key column description has the following columns:
 *  <OL>
 *  <LI><B>PKTABLE_CAT</B> String => primary key table catalog (may be null)
 *  <LI><B>PKTABLE_SCHEM</B> String => primary key table schema (may be null)
 *  <LI><B>PKTABLE_NAME</B> String => primary key table name
 *  <LI><B>PKCOLUMN_NAME</B> String => primary key column name
 *  <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be null)
 *      being exported (may be null)
 *  <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be null)
 *      being exported (may be null)
 *  <LI><B>FKTABLE_NAME</B> String => foreign key table name
 *      being exported
 *  <LI><B>FKCOLUMN_NAME</B> String => foreign key column name
 *      being exported
 *  <LI><B>KEY_SEQ</B> short => sequence number within foreign key
 *  <LI><B>UPDATE_RULE</B> short => What happens to
 *       foreign key when primary is updated:
 *      <UL>
 *      <LI> importedNoAction - do not allow update of primary
 *               key if it has been imported
 *      <LI> importedKeyCascade - change imported key to agree
 *               with primary key update
 *      <LI> importedKeySetNull - change imported key to NULL if
 *               its primary key has been updated
 *      <LI> importedKeySetDefault - change imported key to default values
 *               if its primary key has been updated
 *      <LI> importedKeyRestrict - same as importedKeyNoAction
 *                                 (for ODBC 2.x compatibility)
 *      </UL>
 *  <LI><B>DELETE_RULE</B> short => What happens to
 *      the foreign key when primary is deleted.
 *      <UL>
 *      <LI> importedKeyNoAction - do not allow delete of primary
 *               key if it has been imported
 *      <LI> importedKeyCascade - delete rows that import a deleted key
 *      <LI> importedKeySetNull - change imported key to NULL if
 *               its primary key has been deleted
 *      <LI> importedKeyRestrict - same as importedKeyNoAction
 *                                 (for ODBC 2.x compatibility)
 *      <LI> importedKeySetDefault - change imported key to default if
 *               its primary key has been deleted
 *      </UL>
 *  <LI><B>FK_NAME</B> String => foreign key name (may be null)
 *  <LI><B>PK_NAME</B> String => primary key name (may be null)
 *  <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key
 *      constraints be deferred until commit
 *      <UL>
 *      <LI> importedKeyInitiallyDeferred - see SQL92 for definition
 *      <LI> importedKeyInitiallyImmediate - see SQL92 for definition
 *      <LI> importedKeyNotDeferrable - see SQL92 for definition
 *      </UL>
 *  </OL>
 *
 * @param catalog a catalog name; "" retrieves those without a
 * catalog; null means drop catalog name from the selection criteria
 * @param schema a schema name; "" retrieves those
 * without a schema
 * @param table a table name
 * @return <code>ResultSet</code> - each row is a foreign key column description
 * @exception SQLException if a database access error occurs
 * @see #getImportedKeys
 */
public ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException {
    final RowDescriptor rowDescriptor = new RowDescriptorBuilder(14, datatypeCoder).at(0).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKTABLE_CAT", "COLUMNINFO").addField().at(1).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKTABLE_SCHEM", "COLUMNINFO").addField().at(2).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKTABLE_NAME", "COLUMNINFO").addField().at(3).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKCOLUMN_NAME", "COLUMNINFO").addField().at(4).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKTABLE_CAT", "COLUMNINFO").addField().at(5).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKTABLE_SCHEM", "COLUMNINFO").addField().at(6).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKTABLE_NAME", "COLUMNINFO").addField().at(7).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKCOLUMN_NAME", "COLUMNINFO").addField().at(8).simple(SQL_SHORT, 0, "KEY_SEQ", "COLUMNINFO").addField().at(9).simple(SQL_SHORT, 0, "UPDATE_RULE", "COLUMNINFO").addField().at(10).simple(SQL_SHORT, 0, "DELETE_RULE", "COLUMNINFO").addField().at(11).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FK_NAME", "COLUMNINFO").addField().at(12).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PK_NAME", "COLUMNINFO").addField().at(13).simple(SQL_SHORT, 0, "DEFERRABILITY", "COLUMNINFO").addField().toRowDescriptor();
    List<String> params = Collections.singletonList(table);
    try (ResultSet rs = doQuery(GET_EXPORTED_KEYS, params)) {
        // if nothing found, return an empty result set
        if (!rs.next()) {
            return new FBResultSet(rowDescriptor, Collections.<RowValue>emptyList());
        }
        List<RowValue> rows = new ArrayList<>();
        final RowValueBuilder valueBuilder = new RowValueBuilder(rowDescriptor);
        do {
            rows.add(valueBuilder.at(2).set(getBytes(rs.getString("PKTABLE_NAME"))).at(3).set(getBytes(rs.getString("PKCOLUMN_NAME"))).at(6).set(getBytes(rs.getString("FKTABLE_NAME"))).at(7).set(getBytes(rs.getString("FKCOLUMN_NAME"))).at(8).set(createShort(rs.getShort("KEY_SEQ"))).at(9).set(mapAction(rs.getString("UPDATE_RULE"))).at(10).set(mapAction(rs.getString("DELETE_RULE"))).at(11).set(getBytes(rs.getString("FK_NAME"))).at(12).set(getBytes(rs.getString("PK_NAME"))).at(13).set(IMPORTED_KEY_NOT_DEFERRABLE).toRowValue(true));
        } while (rs.next());
        return new FBResultSet(rowDescriptor, rows);
    }
}
Also used : RowDescriptorBuilder(org.firebirdsql.gds.ng.fields.RowDescriptorBuilder) RowValueBuilder(org.firebirdsql.gds.ng.fields.RowValueBuilder) RowValue(org.firebirdsql.gds.ng.fields.RowValue) RowDescriptor(org.firebirdsql.gds.ng.fields.RowDescriptor)

Example 8 with RowDescriptorBuilder

use of org.firebirdsql.gds.ng.fields.RowDescriptorBuilder in project jaybird by FirebirdSQL.

the class FBDatabaseMetaData method getIndexInfo.

/**
 * Gets a description of a table's indices and statistics. They are
 * ordered by NON_UNIQUE, TYPE, INDEX_NAME, and ORDINAL_POSITION.
 *
 * <P>Each index column description has the following columns:
 *  <OL>
 *  <LI><B>TABLE_CAT</B> String => table catalog (may be null)
 *  <LI><B>TABLE_SCHEM</B> String => table schema (may be null)
 *  <LI><B>TABLE_NAME</B> String => table name
 *  <LI><B>NON_UNIQUE</B> boolean => Can index values be non-unique?
 *      false when TYPE is tableIndexStatistic
 *  <LI><B>INDEX_QUALIFIER</B> String => index catalog (may be null);
 *      null when TYPE is tableIndexStatistic
 *  <LI><B>INDEX_NAME</B> String => index name; null when TYPE is
 *      tableIndexStatistic
 *  <LI><B>TYPE</B> short => index type:
 *      <UL>
 *      <LI> tableIndexStatistic - this identifies table statistics that are
 *           returned in conjuction with a table's index descriptions
 *      <LI> tableIndexClustered - this is a clustered index
 *      <LI> tableIndexHashed - this is a hashed index
 *      <LI> tableIndexOther - this is some other style of index
 *      </UL>
 *  <LI><B>ORDINAL_POSITION</B> short => column sequence number
 *      within index; zero when TYPE is tableIndexStatistic
 *  <LI><B>COLUMN_NAME</B> String => column name; null when TYPE is
 *      tableIndexStatistic
 *  <LI><B>ASC_OR_DESC</B> String => column sort sequence, "A" => ascending,
 *      "D" => descending, may be null if sort sequence is not supported;
 *      null when TYPE is tableIndexStatistic
 *  <LI><B>CARDINALITY</B> int => When TYPE is tableIndexStatistic, then
 *      this is the number of rows in the table; otherwise, it is the
 *      number of unique values in the index.
 *  <LI><B>PAGES</B> int => When TYPE is  tableIndexStatisic then
 *      this is the number of pages used for the table, otherwise it
 *      is the number of pages used for the current index.
 *  <LI><B>FILTER_CONDITION</B> String => Filter condition, if any.
 *      (may be null)
 *  </OL>
 *
 * @param catalog a catalog name; "" retrieves those without a
 * catalog; null means drop catalog name from the selection criteria
 * @param schema a schema name; "" retrieves those without a schema
 * @param table a table name
 * @param unique when true, return only indices for unique values;
 *     when false, return indices regardless of whether unique or not
 * @param approximate when true, result is allowed to reflect approximate
 *     or out of data values; when false, results are requested to be
 *     accurate
 * @return <code>ResultSet</code> - each row is an index column description
 * @exception SQLException if a database access error occurs
 */
public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate) throws SQLException {
    final RowDescriptor rowDescriptor = new RowDescriptorBuilder(13, datatypeCoder).at(0).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "TABLE_CAT", "INDEXINFO").addField().at(1).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "TABLE_SCHEM", "INDEXINFO").addField().at(2).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "TABLE_NAME", "INDEXINFO").addField().at(3).simple(SQL_TEXT, 1, "NON_UNIQUE", "INDEXINFO").addField().at(4).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "INDEX_QUALIFIER", "INDEXINFO").addField().at(5).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "INDEX_NAME", "INDEXINFO").addField().at(6).simple(SQL_SHORT, 0, "TYPE", "INDEXINFO").addField().at(7).simple(SQL_SHORT, 0, "ORDINAL_POSITION", "INDEXINFO").addField().at(8).simple(SQL_VARYING, Integer.MAX_VALUE, "COLUMN_NAME", "INDEXINFO").addField().at(9).simple(SQL_VARYING, 31, "ASC_OR_DESC", "INDEXINFO").addField().at(10).simple(SQL_LONG, 0, "CARDINALITY", "INDEXINFO").addField().at(11).simple(SQL_LONG, 0, "PAGES", "INDEXINFO").addField().at(12).simple(SQL_VARYING, 31, "FILTER_CONDITION", "INDEXINFO").addField().toRowDescriptor();
    List<String> params = Collections.singletonList(table);
    try (ResultSet rs = doQuery(GET_INDEX_INFO, params)) {
        if (!rs.next()) {
            return new FBResultSet(rowDescriptor, Collections.<RowValue>emptyList());
        }
        final List<RowValue> rows = new ArrayList<>();
        final RowValueBuilder valueBuilder = new RowValueBuilder(rowDescriptor);
        do {
            final boolean isNotUnique = rs.getInt("UNIQUE_FLAG") == 0;
            if (unique && isNotUnique) {
                // Skip indices that are not unique, as requested
                continue;
            }
            valueBuilder.at(2).set(getBytes(rs.getString("TABLE_NAME"))).at(3).set(isNotUnique ? TRUE_BYTES : FALSE_BYTES).at(5).set(getBytes(rs.getString("INDEX_NAME"))).at(6).set(TABLE_INDEX_OTHER);
            String columnName = rs.getString("COLUMN_NAME");
            if (rs.wasNull()) {
                valueBuilder.at(7).set(SHORT_ONE);
                String expressionSource = rs.getString("EXPRESSION_SOURCE");
                if (expressionSource != null) {
                    valueBuilder.at(8).set(getBytes(expressionSource));
                }
            } else {
                valueBuilder.at(7).set(createShort(rs.getShort("ORDINAL_POSITION"))).at(8).set(getBytes(columnName));
            }
            int ascOrDesc = rs.getInt("ASC_OR_DESC");
            if (ascOrDesc == 0) {
                valueBuilder.at(9).set(ASC_BYTES);
            } else if (ascOrDesc == 1) {
                valueBuilder.at(9).set(DESC_BYTES);
            }
            // NOTE: We are setting CARDINALITY and PAGES to NULL as we don't have this info; might contravene JDBC spec
            // TODO index 10: use 1 / RDB$STATISTICS for approximation of CARDINALITY?
            // TODO index 11: query RDB$PAGES for PAGES information?
            rows.add(valueBuilder.toRowValue(true));
        } while (rs.next());
        return new FBResultSet(rowDescriptor, rows);
    }
}
Also used : RowDescriptorBuilder(org.firebirdsql.gds.ng.fields.RowDescriptorBuilder) RowValueBuilder(org.firebirdsql.gds.ng.fields.RowValueBuilder) RowValue(org.firebirdsql.gds.ng.fields.RowValue) RowDescriptor(org.firebirdsql.gds.ng.fields.RowDescriptor)

Example 9 with RowDescriptorBuilder

use of org.firebirdsql.gds.ng.fields.RowDescriptorBuilder in project jaybird by FirebirdSQL.

the class FBDatabaseMetaData method getTableTypes.

/**
 * Gets the table types available in this database.  The results
 * are ordered by table type.
 *
 * <P>The table type is:
 *  <OL>
 *  <LI><B>TABLE_TYPE</B> String => table type.  Typical types are "TABLE",
 *          "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY",
 *          "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
 *  </OL>
 *
 * @return <code>ResultSet</code> - each row has a single String column that is a
 * table type
 * @exception SQLException if a database access error occurs
 */
public ResultSet getTableTypes() throws SQLException {
    final RowDescriptor rowDescriptor = new RowDescriptorBuilder(1, datatypeCoder).at(0).simple(SQL_VARYING, 31, "TABLE_TYPE", "TABLETYPES").addField().toRowDescriptor();
    final String[] types = hasGlobalTemporaryTables() ? ALL_TYPES_2_5 : ALL_TYPES_2_1;
    final List<RowValue> rows = new ArrayList<>(types.length);
    for (String type : types) {
        rows.add(RowValue.of(rowDescriptor, getBytes(type)));
    }
    return new FBResultSet(rowDescriptor, rows);
}
Also used : RowDescriptorBuilder(org.firebirdsql.gds.ng.fields.RowDescriptorBuilder) RowValue(org.firebirdsql.gds.ng.fields.RowValue) RowDescriptor(org.firebirdsql.gds.ng.fields.RowDescriptor)

Example 10 with RowDescriptorBuilder

use of org.firebirdsql.gds.ng.fields.RowDescriptorBuilder in project jaybird by FirebirdSQL.

the class FBDatabaseMetaData method getImportedKeys.

/**
 * Gets a description of the primary key columns that are
 * referenced by a table's foreign key columns (the primary keys
 * imported by a table).  They are ordered by PKTABLE_CAT,
 * PKTABLE_SCHEM, PKTABLE_NAME, and KEY_SEQ.
 *
 * <P>Each primary key column description has the following columns:
 *  <OL>
 *  <LI><B>PKTABLE_CAT</B> String => primary key table catalog
 *      being imported (may be null)
 *  <LI><B>PKTABLE_SCHEM</B> String => primary key table schema
 *      being imported (may be null)
 *  <LI><B>PKTABLE_NAME</B> String => primary key table name
 *      being imported
 *  <LI><B>PKCOLUMN_NAME</B> String => primary key column name
 *      being imported
 *  <LI><B>FKTABLE_CAT</B> String => foreign key table catalog (may be null)
 *  <LI><B>FKTABLE_SCHEM</B> String => foreign key table schema (may be null)
 *  <LI><B>FKTABLE_NAME</B> String => foreign key table name
 *  <LI><B>FKCOLUMN_NAME</B> String => foreign key column name
 *  <LI><B>KEY_SEQ</B> short => sequence number within foreign key
 *  <LI><B>UPDATE_RULE</B> short => What happens to
 *       foreign key when primary is updated:
 *      <UL>
 *      <LI> importedNoAction - do not allow update of primary
 *               key if it has been imported
 *      <LI> importedKeyCascade - change imported key to agree
 *               with primary key update
 *      <LI> importedKeySetNull - change imported key to NULL if
 *               its primary key has been updated
 *      <LI> importedKeySetDefault - change imported key to default values
 *               if its primary key has been updated
 *      <LI> importedKeyRestrict - same as importedKeyNoAction
 *                                 (for ODBC 2.x compatibility)
 *      </UL>
 *  <LI><B>DELETE_RULE</B> short => What happens to
 *      the foreign key when primary is deleted.
 *      <UL>
 *      <LI> importedKeyNoAction - do not allow delete of primary
 *               key if it has been imported
 *      <LI> importedKeyCascade - delete rows that import a deleted key
 *      <LI> importedKeySetNull - change imported key to NULL if
 *               its primary key has been deleted
 *      <LI> importedKeyRestrict - same as importedKeyNoAction
 *                                 (for ODBC 2.x compatibility)
 *      <LI> importedKeySetDefault - change imported key to default if
 *               its primary key has been deleted
 *      </UL>
 *  <LI><B>FK_NAME</B> String => foreign key name (may be null)
 *  <LI><B>PK_NAME</B> String => primary key name (may be null)
 *  <LI><B>DEFERRABILITY</B> short => can the evaluation of foreign key
 *      constraints be deferred until commit
 *      <UL>
 *      <LI> importedKeyInitiallyDeferred - see SQL92 for definition
 *      <LI> importedKeyInitiallyImmediate - see SQL92 for definition
 *      <LI> importedKeyNotDeferrable - see SQL92 for definition
 *      </UL>
 *  </OL>
 *
 * @param catalog a catalog name; "" retrieves those without a
 * catalog; null means drop catalog name from the selection criteria
 * @param schema a schema name; "" retrieves those
 * without a schema
 * @param table a table name
 * @return <code>ResultSet</code> - each row is a primary key column description
 * @exception SQLException if a database access error occurs
 * @see #getExportedKeys
 */
public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
    final RowDescriptor rowDescriptor = new RowDescriptorBuilder(14, datatypeCoder).at(0).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKTABLE_CAT", "COLUMNINFO").addField().at(1).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKTABLE_SCHEM", "COLUMNINFO").addField().at(2).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKTABLE_NAME", "COLUMNINFO").addField().at(3).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PKCOLUMN_NAME", "COLUMNINFO").addField().at(4).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKTABLE_CAT", "COLUMNINFO").addField().at(5).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKTABLE_SCHEM", "COLUMNINFO").addField().at(6).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKTABLE_NAME", "COLUMNINFO").addField().at(7).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FKCOLUMN_NAME", "COLUMNINFO").addField().at(8).simple(SQL_SHORT, 0, "KEY_SEQ", "COLUMNINFO").addField().at(9).simple(SQL_SHORT, 0, "UPDATE_RULE", "COLUMNINFO").addField().at(10).simple(SQL_SHORT, 0, "DELETE_RULE", "COLUMNINFO").addField().at(11).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "FK_NAME", "COLUMNINFO").addField().at(12).simple(SQL_VARYING, OBJECT_NAME_LENGTH, "PK_NAME", "COLUMNINFO").addField().at(13).simple(SQL_SHORT, 0, "DEFERRABILITY", "COLUMNINFO").addField().toRowDescriptor();
    List<String> params = Collections.singletonList(table);
    try (ResultSet rs = doQuery(GET_IMPORTED_KEYS, params)) {
        // if nothing found, return an empty result set
        if (!rs.next()) {
            return new FBResultSet(rowDescriptor, Collections.<RowValue>emptyList());
        }
        final List<RowValue> rows = new ArrayList<>();
        final RowValueBuilder valueBuilder = new RowValueBuilder(rowDescriptor);
        do {
            rows.add(valueBuilder.at(2).set(getBytes(rs.getString("PKTABLE_NAME"))).at(3).set(getBytes(rs.getString("PKCOLUMN_NAME"))).at(6).set(getBytes(rs.getString("FKTABLE_NAME"))).at(7).set(getBytes(rs.getString("FKCOLUMN_NAME"))).at(8).set(createShort(rs.getShort("KEY_SEQ"))).at(9).set(mapAction(rs.getString("UPDATE_RULE"))).at(10).set(mapAction(rs.getString("DELETE_RULE"))).at(11).set(getBytes(rs.getString("FK_NAME"))).at(12).set(getBytes(rs.getString("PK_NAME"))).at(13).set(IMPORTED_KEY_NOT_DEFERRABLE).toRowValue(true));
        } while (rs.next());
        return new FBResultSet(rowDescriptor, rows);
    }
}
Also used : RowDescriptorBuilder(org.firebirdsql.gds.ng.fields.RowDescriptorBuilder) RowValueBuilder(org.firebirdsql.gds.ng.fields.RowValueBuilder) RowValue(org.firebirdsql.gds.ng.fields.RowValue) RowDescriptor(org.firebirdsql.gds.ng.fields.RowDescriptor)

Aggregations

RowDescriptorBuilder (org.firebirdsql.gds.ng.fields.RowDescriptorBuilder)15 RowDescriptor (org.firebirdsql.gds.ng.fields.RowDescriptor)12 RowValue (org.firebirdsql.gds.ng.fields.RowValue)12 RowValueBuilder (org.firebirdsql.gds.ng.fields.RowValueBuilder)10 FieldDescriptor (org.firebirdsql.gds.ng.fields.FieldDescriptor)1 Before (org.junit.Before)1