@Override public int getNumColumns() { return table.fields().length; }
@Override public void delete(final TableReference tableRef, final Multimap<Cell, Long> keys) { if (keys.isEmpty()) { return; } for (List<Entry<Cell, Long>> partition : Iterables.partition(keys.entries(), batchSizeForMutations)) { run((Function<DSLContext, Void>) ctx -> { Collection<Row3<byte[], byte[], Long>> rows = Lists.newArrayListWithCapacity(partition.size()); for (Entry<Cell, Long> entry : partition) { rows.add(row(entry.getKey().getRowName(), entry.getKey().getColumnName(), entry.getValue())); } ctx.deleteFrom(atlasTable(tableRef).as(ATLAS_TABLE)) .where(row(A_ROW_NAME, A_COL_NAME, A_TIMESTAMP).in(rows)) .execute(); return null; }); } }
@Override public T readResult(Record record, int offset) { T toReturn; try { toReturn = constructor.newInstance(); } catch (Exception e) { throw new IllegalArgumentException("Cannot construct class " + table.getRecordType().getName()); } Field<?>[] fields = table.fields(); for (int idx = 0; idx < fields.length; idx++) { Field<?> f = fields[idx]; copyValueIntoRecord(toReturn, record, f, idx); } return toReturn; }
int endIndex = partialSql.lastIndexOf(')'); String fullSql = partialSql.substring(0, endIndex) + "," + " CONSTRAINT pk_" + kvs.METADATA_TABLE.getName() + " PRIMARY KEY (" + TABLE_NAME.getName() + ")" + partialSql.substring(endIndex);
if (!StringUtils.isBlank(t.getCatalog().getName())) it.setTableCatalog(t.getCatalog().getName()); if (!StringUtils.isBlank(t.getSchema().getName())) it.setTableSchema(t.getSchema().getName()); it.setTableName(t.getName()); it.setComment(t.getComment()); result.getTables().add(it); Field<?>[] fields = t.fields(); for (int i = 0; i < fields.length; i++) { Field<?> f = fields[i]; Column ic = new Column(); if (!StringUtils.isBlank(t.getCatalog().getName())) ic.setTableCatalog(t.getCatalog().getName()); if (!StringUtils.isBlank(t.getSchema().getName())) ic.setTableSchema(t.getSchema().getName()); ic.setTableName(t.getName()); ic.setColumnName(f.getName()); ic.setComment(f.getComment()); for (UniqueKey<?> key : t.getKeys()) exportKey0(result, t, key, key.isPrimary() ? PRIMARY_KEY : UNIQUE); for (ForeignKey<?, ?> fk : t.getReferences())
public boolean isSemanticallyEquals(Table<Record> table) { if (!table.getName().equals(getName())) { return false; } if (table.getSchema() == null || !getSchema().getName().equals(table.getSchema().getName())) { return false; } if (table.fields().length != 7) { return false; } return true; //TODO: improve the check }
@Override public final LoaderImpl<R> onDuplicateKeyUpdate() { if (table.getPrimaryKey() == null) { throw new IllegalStateException("ON DUPLICATE KEY UPDATE only works on tables with explicit primary keys. Table is not updatable : " + table); } onDuplicate = ON_DUPLICATE_KEY_UPDATE; return this; }
@SuppressWarnings("unchecked") public ReflectedTable(Table<?> table) { super(table.getQualifiedName()); this.table = table; for (Field<?> field : table.fields()) { String name = field.getName(); DataType<Object> dataType = (DataType<Object>) field.getDataType(); TableField newField = createField(name, dataType); fields.put(name, newField); } UniqueKey<?> primaryKey = table.getPrimaryKey(); if (primaryKey != null) { if (primaryKey.getFields().size() == 1) { pk = primaryKey.getFields().get(0); } } for (ForeignKey<?, ?> fk : table.getReferences()) { fks.put(findForeignKeyFieldName(fk), findForeignKeyReference(fk)); } }
private SqlSubJoin(SqlQuery parent, SqlQuery sub, SqlJoin join) { this.sqlQuery = sub; AbstractSqlDatabase database = sub.database; String alias = sub.recordTableAlias; Field<?> id = DSL.field(DSL.name(alias, database.recordIdField.getName()), database.uuidType()); this.table = sub.initialize(DSL.table(DSL.name(database.recordTable.getName())).as(alias)); this.on = join.valueField.eq(id); if (sub.needsDistinct) { parent.needsDistinct = true; } } }
public TableRowReader(Table<T> table) { this.table = table; try { constructor = table.getRecordType().getDeclaredConstructor(); } catch (Exception e) { throw new IllegalArgumentException("Cannot find constructor for class " + table.getRecordType().getName()); } }
@Override public final void addJoinOnKey(TableLike<?> table, JoinType type) throws DataAccessException { // TODO: This and similar methods should be refactored, patterns extracted... int index = getFrom().size() - 1; Table<?> joined = null; switch (type) { case JOIN: case LEFT_OUTER_JOIN: case RIGHT_OUTER_JOIN: case FULL_OUTER_JOIN: case LEFT_SEMI_JOIN: case LEFT_ANTI_JOIN: joined = getFrom().get(index).join(table, type).onKey(); break; default: throw new IllegalArgumentException("JoinType " + type + " is not supported with the addJoinOnKey() method. Use INNER or OUTER JOINs only"); } getFrom().set(index, joined); }
private final Name generatedName() { Name t = table.getQualifiedName(); StringBuilder sb = new StringBuilder(table.getName()); for (SortField<?> f : sortFields) sb.append('_').append(f.getName()); sb.append("_idx"); if (t.qualified()) return t.qualifier().append(sb.toString()); else return name(sb.toString()); }
@Override public final void addJoinOnKey(TableLike<?> table, JoinType type, TableField<?, ?>... keyFields) throws DataAccessException { // TODO: This and similar methods should be refactored, patterns extracted... int index = getFrom().size() - 1; Table<?> joined = null; switch (type) { case JOIN: joined = getFrom().get(index).join(table).onKey(keyFields); break; case LEFT_OUTER_JOIN: joined = getFrom().get(index).leftOuterJoin(table).onKey(keyFields); break; case RIGHT_OUTER_JOIN: joined = getFrom().get(index).rightOuterJoin(table).onKey(keyFields); break; case FULL_OUTER_JOIN: joined = getFrom().get(index).fullOuterJoin(table).onKey(keyFields); break; default: throw new IllegalArgumentException("JoinType " + type + " is not supported with the addJoinOnKey() method. Use INNER or OUTER JOINs only"); } getFrom().set(index, joined); }
@SuppressWarnings("unchecked") @Override public final Class<? extends R> getRecordType() { // Generated record classes only come into play, when the select is // - on a single table // - a select * if (getFrom().size() == 1 && getSelect0().isEmpty()) { return (Class<? extends R>) getFrom().get(0).asTable().getRecordType(); } else { return (Class<? extends R>) RecordImpl.class; } }
joined = getFrom().get(index).join(table).on(conditions); break; case LEFT_OUTER_JOIN: { TablePartitionByStep p = getFrom().get(index).leftOuterJoin(table); TableOnStep o = p; TablePartitionByStep p = getFrom().get(index).rightOuterJoin(table); TableOnStep o = p; joined = getFrom().get(index).fullOuterJoin(table).on(conditions); break; joined = getFrom().get(index).crossJoin(table); break; case NATURAL_JOIN: joined = getFrom().get(index).naturalJoin(table); break; case NATURAL_LEFT_OUTER_JOIN: joined = getFrom().get(index).naturalLeftOuterJoin(table); break; case NATURAL_RIGHT_OUTER_JOIN: joined = getFrom().get(index).naturalRightOuterJoin(table); break;
if (foreignKey == null) { Table<?> childTable = JooqUtils.getTableFromRecordClass(child); for (ForeignKey<?, ?> foreignKeyTest : childTable.getReferences()) { if (foreignKeyTest.getKey().getTable().getRecordType() == parent) { if (propertyField != null) { if (foreignKeyTest.getFields().get(0).getName().equals(propertyField.getName())) {
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public final List<ForeignKey<Record, ?>> getReferences() { List<ForeignKey<?, ?>> result = new ArrayList<ForeignKey<?, ?>>(); result.addAll(lhs.getReferences()); result.addAll(rhs.getReferences()); return (List) result; }
@Override public final Table<?> getTable(String name) { for (Table<?> table : getTables()) { if (table.getName().equals(name)) { return table; } } return null; }