Search in sources :

Example 1 with Rdb$refConstraints

use of org.jooq.util.firebird.rdb.tables.Rdb$refConstraints in project jOOQ by jOOQ.

the class FirebirdDatabase method loadForeignKeys.

@Override
protected void loadForeignKeys(DefaultRelations relations) throws SQLException {
    Rdb$relationConstraints pk = RDB$RELATION_CONSTRAINTS.as("pk");
    Rdb$relationConstraints fk = RDB$RELATION_CONSTRAINTS.as("fk");
    Rdb$refConstraints rc = RDB$REF_CONSTRAINTS.as("rc");
    Rdb$indexSegments isp = RDB$INDEX_SEGMENTS.as("isp");
    Rdb$indexSegments isf = RDB$INDEX_SEGMENTS.as("isf");
    for (Record record : create().selectDistinct(fk.RDB$CONSTRAINT_NAME.trim().as("fk"), fk.RDB$RELATION_NAME.trim().as("fkTable"), isf.RDB$FIELD_NAME.trim().as("fkField"), pk.RDB$CONSTRAINT_NAME.trim().as("pk"), pk.RDB$RELATION_NAME.trim().as("pkTable")).from(fk).join(rc).on(fk.RDB$CONSTRAINT_NAME.eq(rc.RDB$CONSTRAINT_NAME)).join(pk).on(pk.RDB$CONSTRAINT_NAME.eq(rc.RDB$CONST_NAME_UQ)).join(isp).on(isp.RDB$INDEX_NAME.eq(pk.RDB$INDEX_NAME)).join(isf).on(isf.RDB$INDEX_NAME.eq(fk.RDB$INDEX_NAME)).where(isp.RDB$FIELD_POSITION.eq(isf.RDB$FIELD_POSITION)).orderBy(fk.RDB$CONSTRAINT_NAME.asc(), isf.RDB$FIELD_POSITION.asc()).fetch()) {
        String pkName = record.get("pk", String.class);
        String pkTable = record.get("pkTable", String.class);
        String fkName = record.get("fk", String.class);
        String fkTable = record.get("fkTable", String.class);
        String fkField = record.get("fkField", String.class);
        TableDefinition tdReferencing = getTable(getSchemata().get(0), fkTable, true);
        TableDefinition tdReferenced = getTable(getSchemata().get(0), pkTable, true);
        if (tdReferenced != null && tdReferencing != null) {
            ColumnDefinition referencingColumn = tdReferencing.getColumn(fkField);
            relations.addForeignKey(fkName, pkName, referencingColumn, getSchemata().get(0));
        }
    }
}
Also used : TableDefinition(org.jooq.util.TableDefinition) Record(org.jooq.Record) Rdb$relationConstraints(org.jooq.util.firebird.rdb.tables.Rdb$relationConstraints) Rdb$indexSegments(org.jooq.util.firebird.rdb.tables.Rdb$indexSegments) Rdb$refConstraints(org.jooq.util.firebird.rdb.tables.Rdb$refConstraints) ColumnDefinition(org.jooq.util.ColumnDefinition)

Example 2 with Rdb$refConstraints

use of org.jooq.util.firebird.rdb.tables.Rdb$refConstraints in project jOOQ by jOOQ.

the class FirebirdRoutineDefinition method init0.

@Override
protected void init0() throws SQLException {
    Rdb$procedureParameters p = RDB$PROCEDURE_PARAMETERS.as("p");
    Rdb$fields f = RDB$FIELDS.as("f");
    int i = 0;
    for (Record record : create().select(p.RDB$PARAMETER_NUMBER, p.RDB$PARAMETER_TYPE, p.RDB$PARAMETER_NAME.trim().as(p.RDB$PARAMETER_NAME), FIELD_TYPE(f).as("FIELD_TYPE"), CHARACTER_LENGTH(f).as("CHARACTER_LENGTH"), f.RDB$FIELD_PRECISION, FIELD_SCALE(f).as("FIELD_SCALE"), DSL.bitOr(p.RDB$NULL_FLAG.nvl((short) 0), f.RDB$NULL_FLAG.nvl((short) 0)).as(p.RDB$NULL_FLAG), p.RDB$DEFAULT_SOURCE).from(p).leftOuterJoin(f).on(p.RDB$FIELD_SOURCE.eq(f.RDB$FIELD_NAME)).where(p.RDB$PROCEDURE_NAME.eq(getName())).orderBy(p.RDB$PARAMETER_TYPE.desc(), p.RDB$PARAMETER_NUMBER.asc())) {
        DataTypeDefinition type = new DefaultDataTypeDefinition(getDatabase(), getSchema(), record.get("FIELD_TYPE", String.class), record.get("CHARACTER_LENGTH", short.class), record.get(f.RDB$FIELD_PRECISION), record.get("FIELD_SCALE", Integer.class), record.get(p.RDB$NULL_FLAG) == 0, record.get(p.RDB$DEFAULT_SOURCE));
        ParameterDefinition parameter = new DefaultParameterDefinition(this, record.get(p.RDB$PARAMETER_NAME), i++, type);
        addParameter(record.get(p.RDB$PARAMETER_TYPE, int.class).equals(0) ? InOutDefinition.IN : InOutDefinition.OUT, parameter);
    }
}
Also used : DefaultDataTypeDefinition(org.jooq.util.DefaultDataTypeDefinition) Rdb$fields(org.jooq.util.firebird.rdb.tables.Rdb$fields) Record(org.jooq.Record) DefaultParameterDefinition(org.jooq.util.DefaultParameterDefinition) DataTypeDefinition(org.jooq.util.DataTypeDefinition) DefaultDataTypeDefinition(org.jooq.util.DefaultDataTypeDefinition) Rdb$procedureParameters(org.jooq.util.firebird.rdb.tables.Rdb$procedureParameters) DefaultParameterDefinition(org.jooq.util.DefaultParameterDefinition) ParameterDefinition(org.jooq.util.ParameterDefinition)

Example 3 with Rdb$refConstraints

use of org.jooq.util.firebird.rdb.tables.Rdb$refConstraints in project jOOQ by jOOQ.

the class FirebirdTableDefinition method getElements0.

@Override
protected List<ColumnDefinition> getElements0() throws SQLException {
    List<ColumnDefinition> result = new ArrayList<ColumnDefinition>();
    Rdb$relationFields r = RDB$RELATION_FIELDS.as("r");
    Rdb$fields f = RDB$FIELDS.as("f");
    // DatabaseMetaData implementation
    for (Record record : create().select(r.RDB$FIELD_NAME.trim(), r.RDB$DESCRIPTION, r.RDB$DEFAULT_VALUE, DSL.bitOr(r.RDB$NULL_FLAG.nvl((short) 0), f.RDB$NULL_FLAG.nvl((short) 0)).as(r.RDB$NULL_FLAG), r.RDB$DEFAULT_SOURCE, r.RDB$FIELD_POSITION, // [#3342] FIELD_LENGTH should be ignored for LOBs
    CHARACTER_LENGTH(f).as("CHARACTER_LENGTH"), f.RDB$FIELD_PRECISION, FIELD_SCALE(f).as("FIELD_SCALE"), FIELD_TYPE(f).as("FIELD_TYPE"), f.RDB$FIELD_SUB_TYPE).from(r).leftOuterJoin(f).on(r.RDB$FIELD_SOURCE.eq(f.RDB$FIELD_NAME)).where(r.RDB$RELATION_NAME.eq(getName())).orderBy(r.RDB$FIELD_POSITION).fetch()) {
        DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(getDatabase(), getSchema(), record.get("FIELD_TYPE", String.class), record.get("CHARACTER_LENGTH", short.class), record.get(f.RDB$FIELD_PRECISION), record.get("FIELD_SCALE", Integer.class), record.get(r.RDB$NULL_FLAG) == 0, record.get(r.RDB$DEFAULT_SOURCE));
        ColumnDefinition column = new DefaultColumnDefinition(getDatabase().getTable(getSchema(), getName()), record.get(r.RDB$FIELD_NAME.trim()), record.get(r.RDB$FIELD_POSITION), type, false, null);
        result.add(column);
    }
    return result;
}
Also used : Rdb$relationFields(org.jooq.util.firebird.rdb.tables.Rdb$relationFields) DefaultDataTypeDefinition(org.jooq.util.DefaultDataTypeDefinition) DefaultColumnDefinition(org.jooq.util.DefaultColumnDefinition) Rdb$fields(org.jooq.util.firebird.rdb.tables.Rdb$fields) ArrayList(java.util.ArrayList) Record(org.jooq.Record) ColumnDefinition(org.jooq.util.ColumnDefinition) DefaultColumnDefinition(org.jooq.util.DefaultColumnDefinition)

Example 4 with Rdb$refConstraints

use of org.jooq.util.firebird.rdb.tables.Rdb$refConstraints in project jOOQ by jOOQ.

the class FirebirdTableValuedFunction method getElements0.

@Override
protected List<ColumnDefinition> getElements0() throws SQLException {
    List<ColumnDefinition> result = new ArrayList<ColumnDefinition>();
    Rdb$procedureParameters p = RDB$PROCEDURE_PARAMETERS.as("p");
    Rdb$fields f = RDB$FIELDS.as("f");
    // DatabaseMetaData implementation
    for (Record record : create().select(p.RDB$PARAMETER_NUMBER, p.RDB$PARAMETER_NAME.trim(), p.RDB$DESCRIPTION, p.RDB$DEFAULT_VALUE, DSL.bitOr(p.RDB$NULL_FLAG.nvl((short) 0), f.RDB$NULL_FLAG.nvl((short) 0)).as(p.RDB$NULL_FLAG), p.RDB$DEFAULT_SOURCE, // [#3342] FIELD_LENGTH should be ignored for LOBs
    CHARACTER_LENGTH(f).as("CHARACTER_LENGTH"), f.RDB$FIELD_PRECISION, FIELD_SCALE(f).as("FIELD_SCALE"), FIELD_TYPE(f).as("FIELD_TYPE"), f.RDB$FIELD_SUB_TYPE).from(p).leftOuterJoin(f).on(p.RDB$FIELD_SOURCE.eq(f.RDB$FIELD_NAME)).where(p.RDB$PROCEDURE_NAME.eq(getName())).and(p.RDB$PARAMETER_TYPE.eq((short) 1)).orderBy(p.RDB$PARAMETER_NUMBER)) {
        DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(getDatabase(), getSchema(), record.get("FIELD_TYPE", String.class), record.get("CHARACTER_LENGTH", short.class), record.get(f.RDB$FIELD_PRECISION), record.get("FIELD_SCALE", Integer.class), record.get(p.RDB$NULL_FLAG) == 0, record.get(p.RDB$DEFAULT_SOURCE));
        ColumnDefinition column = new DefaultColumnDefinition(getDatabase().getTable(getSchema(), getName()), record.get(p.RDB$PARAMETER_NAME.trim()), record.get(p.RDB$PARAMETER_NUMBER), type, false, null);
        result.add(column);
    }
    return result;
}
Also used : DefaultDataTypeDefinition(org.jooq.util.DefaultDataTypeDefinition) DefaultColumnDefinition(org.jooq.util.DefaultColumnDefinition) Rdb$fields(org.jooq.util.firebird.rdb.tables.Rdb$fields) ArrayList(java.util.ArrayList) Record(org.jooq.Record) Rdb$procedureParameters(org.jooq.util.firebird.rdb.tables.Rdb$procedureParameters) ColumnDefinition(org.jooq.util.ColumnDefinition) DefaultColumnDefinition(org.jooq.util.DefaultColumnDefinition)

Example 5 with Rdb$refConstraints

use of org.jooq.util.firebird.rdb.tables.Rdb$refConstraints in project jOOQ by jOOQ.

the class FirebirdDatabase method getRoutines0.

@Override
protected List<RoutineDefinition> getRoutines0() throws SQLException {
    Rdb$procedures p = RDB$PROCEDURES.as("p");
    Rdb$functions fu = RDB$FUNCTIONS.as("fu");
    Rdb$functionArguments fa = RDB$FUNCTION_ARGUMENTS.as("fa");
    Rdb$fields fi = RDB$FIELDS.as("fi");
    return create().select(p.RDB$PROCEDURE_NAME.trim(), inline(null, VARCHAR).as("t"), inline(null, SMALLINT).as("p"), inline(null, SMALLINT).as("s")).from(p).where(p.RDB$PROCEDURE_TYPE.eq((short) 2)).union(is30() ? select(fu.RDB$FUNCTION_NAME.trim(), FIELD_TYPE(fi).as("t"), coalesce(CHARACTER_LENGTH(fi), fi.RDB$FIELD_PRECISION).as("p"), FIELD_SCALE(fi).as("s")).from(fu).leftAntiJoin(p).on(fu.RDB$FUNCTION_NAME.eq(p.RDB$PROCEDURE_NAME)).join(fa).on(fu.RDB$FUNCTION_NAME.eq(fa.RDB$FUNCTION_NAME)).leftOuterJoin(fi).on(fa.RDB$FIELD_SOURCE.eq(fi.RDB$FIELD_NAME)).where(fa.RDB$ARGUMENT_POSITION.eq(inline((short) 0))) : select(inline(""), inline(""), inline((short) 0), inline((short) 0)).where(falseCondition())).orderBy(1).collect(mapping(r -> new FirebirdRoutineDefinition(getSchemata().get(0), r.get(0, String.class), r.get(1, String.class), r.get(2, Integer.class), r.get(3, Integer.class)), Collectors.<RoutineDefinition>toList()));
}
Also used : Arrays(java.util.Arrays) DSL(org.jooq.impl.DSL) DefaultIndexColumnDefinition(org.jooq.meta.DefaultIndexColumnDefinition) FIELD_SCALE(org.jooq.meta.firebird.FirebirdDatabase.FIELD_SCALE) DefaultDomainDefinition(org.jooq.meta.DefaultDomainDefinition) Rdb$functions(org.jooq.meta.firebird.rdb.tables.Rdb$functions) DefaultSequenceDefinition(org.jooq.meta.DefaultSequenceDefinition) DSL.when(org.jooq.impl.DSL.when) DataTypeDefinition(org.jooq.meta.DataTypeDefinition) Record4(org.jooq.Record4) BigDecimal(java.math.BigDecimal) RoutineDefinition(org.jooq.meta.RoutineDefinition) PackageDefinition(org.jooq.meta.PackageDefinition) RDB$FUNCTIONS(org.jooq.meta.firebird.rdb.Tables.RDB$FUNCTIONS) RDB$PROCEDURES(org.jooq.meta.firebird.rdb.Tables.RDB$PROCEDURES) IndexColumnDefinition(org.jooq.meta.IndexColumnDefinition) DSL.trim(org.jooq.impl.DSL.trim) Rdb$indices(org.jooq.meta.firebird.rdb.tables.Rdb$indices) Arrays.asList(java.util.Arrays.asList) RDB$REF_CONSTRAINTS(org.jooq.meta.firebird.rdb.Tables.RDB$REF_CONSTRAINTS) Map(java.util.Map) ResultQuery(org.jooq.ResultQuery) DSLContext(org.jooq.DSLContext) DSL.coalesce(org.jooq.impl.DSL.coalesce) SQLDialect(org.jooq.SQLDialect) SortOrder(org.jooq.SortOrder) Record6(org.jooq.Record6) SMALLINT(org.jooq.impl.SQLDataType.SMALLINT) RDB$TRIGGERS(org.jooq.meta.firebird.rdb.Tables.RDB$TRIGGERS) Rdb$checkConstraints(org.jooq.meta.firebird.rdb.tables.Rdb$checkConstraints) DSL.falseCondition(org.jooq.impl.DSL.falseCondition) Field(org.jooq.Field) DSL.select(org.jooq.impl.DSL.select) Result(org.jooq.Result) DSL.choose(org.jooq.impl.DSL.choose) Collectors(java.util.stream.Collectors) TableType(org.jooq.TableOptions.TableType) BOOLEAN(org.jooq.impl.SQLDataType.BOOLEAN) DomainDefinition(org.jooq.meta.DomainDefinition) List(java.util.List) INTEGER(org.jooq.impl.SQLDataType.INTEGER) SQLDataType(org.jooq.impl.SQLDataType) Rdb$triggers(org.jooq.meta.firebird.rdb.tables.Rdb$triggers) DSL.noCondition(org.jooq.impl.DSL.noCondition) Entry(java.util.Map.Entry) SchemaMappingType(org.jooq.meta.jaxb.SchemaMappingType) FirebirdDataType(org.jooq.util.firebird.FirebirdDataType) DefaultCheckConstraintDefinition(org.jooq.meta.DefaultCheckConstraintDefinition) AbstractIndexDefinition(org.jooq.meta.AbstractIndexDefinition) DefaultRelations(org.jooq.meta.DefaultRelations) RDB$INDEX_SEGMENTS(org.jooq.meta.firebird.rdb.Tables.RDB$INDEX_SEGMENTS) SequenceDefinition(org.jooq.meta.SequenceDefinition) RDB$RELATION_CONSTRAINTS(org.jooq.meta.firebird.rdb.Tables.RDB$RELATION_CONSTRAINTS) Rdb$procedures(org.jooq.meta.firebird.rdb.tables.Rdb$procedures) DefaultDataTypeDefinition(org.jooq.meta.DefaultDataTypeDefinition) Rdb$refConstraints(org.jooq.meta.firebird.rdb.tables.Rdb$refConstraints) DSL.decode(org.jooq.impl.DSL.decode) DSL.nullif(org.jooq.impl.DSL.nullif) RDB$RELATION_FIELDS(org.jooq.meta.firebird.rdb.Tables.RDB$RELATION_FIELDS) TableDefinition(org.jooq.meta.TableDefinition) IndexDefinition(org.jooq.meta.IndexDefinition) RDB$CHECK_CONSTRAINTS(org.jooq.meta.firebird.rdb.Tables.RDB$CHECK_CONSTRAINTS) ArrayList(java.util.ArrayList) SQLException(java.sql.SQLException) BIGINT(org.jooq.impl.SQLDataType.BIGINT) NUMERIC(org.jooq.impl.SQLDataType.NUMERIC) Collectors.mapping(java.util.stream.Collectors.mapping) VARCHAR(org.jooq.impl.SQLDataType.VARCHAR) ArrayDefinition(org.jooq.meta.ArrayDefinition) UDTDefinition(org.jooq.meta.UDTDefinition) DSL.inline(org.jooq.impl.DSL.inline) Record(org.jooq.Record) CHARACTER_LENGTH(org.jooq.meta.firebird.FirebirdDatabase.CHARACTER_LENGTH) RDB$RELATIONS(org.jooq.meta.firebird.rdb.Tables.RDB$RELATIONS) Rdb$indexSegments(org.jooq.meta.firebird.rdb.tables.Rdb$indexSegments) Rdb$relationConstraints(org.jooq.meta.firebird.rdb.tables.Rdb$relationConstraints) FIELD_TYPE(org.jooq.meta.firebird.FirebirdDatabase.FIELD_TYPE) Rdb$functionArguments(org.jooq.meta.firebird.rdb.tables.Rdb$functionArguments) RDB$FIELDS(org.jooq.meta.firebird.rdb.Tables.RDB$FIELDS) FIREBIRD(org.jooq.SQLDialect.FIREBIRD) StringUtils(org.jooq.tools.StringUtils) Rdb$fields(org.jooq.meta.firebird.rdb.tables.Rdb$fields) Record12(org.jooq.Record12) SchemaDefinition(org.jooq.meta.SchemaDefinition) DSL.max(org.jooq.impl.DSL.max) Tables(org.jooq.meta.firebird.rdb.Tables) DSL.any(org.jooq.impl.DSL.any) EnumDefinition(org.jooq.meta.EnumDefinition) RDB$INDICES(org.jooq.meta.firebird.rdb.Tables.RDB$INDICES) Collections(java.util.Collections) ResultQueryDatabase(org.jooq.meta.ResultQueryDatabase) AbstractDatabase(org.jooq.meta.AbstractDatabase) CatalogDefinition(org.jooq.meta.CatalogDefinition) RoutineDefinition(org.jooq.meta.RoutineDefinition) Rdb$functionArguments(org.jooq.meta.firebird.rdb.tables.Rdb$functionArguments) Rdb$fields(org.jooq.meta.firebird.rdb.tables.Rdb$fields) Rdb$functions(org.jooq.meta.firebird.rdb.tables.Rdb$functions) Rdb$procedures(org.jooq.meta.firebird.rdb.tables.Rdb$procedures)

Aggregations

Record (org.jooq.Record)6 ArrayList (java.util.ArrayList)3 ColumnDefinition (org.jooq.util.ColumnDefinition)3 DefaultDataTypeDefinition (org.jooq.util.DefaultDataTypeDefinition)3 Rdb$fields (org.jooq.util.firebird.rdb.tables.Rdb$fields)3 TableDefinition (org.jooq.meta.TableDefinition)2 Rdb$indexSegments (org.jooq.meta.firebird.rdb.tables.Rdb$indexSegments)2 Rdb$refConstraints (org.jooq.meta.firebird.rdb.tables.Rdb$refConstraints)2 Rdb$relationConstraints (org.jooq.meta.firebird.rdb.tables.Rdb$relationConstraints)2 DefaultColumnDefinition (org.jooq.util.DefaultColumnDefinition)2 Rdb$procedureParameters (org.jooq.util.firebird.rdb.tables.Rdb$procedureParameters)2 BigDecimal (java.math.BigDecimal)1 SQLException (java.sql.SQLException)1 Arrays (java.util.Arrays)1 Arrays.asList (java.util.Arrays.asList)1 Collections (java.util.Collections)1 List (java.util.List)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 Collectors (java.util.stream.Collectors)1