public ColumnStrategy get(int index) { return ief.generationStrategy(table, index); } };
@SuppressWarnings("deprecation") public boolean columnHasDefaultValue(RelDataType rowType, int ordinal, InitializerContext initializerContext) { // This method is no longer used final Table table = this.unwrap(Table.class); if (table != null && table instanceof Wrapper) { final InitializerExpressionFactory initializerExpressionFactory = ((Wrapper) table).unwrap(InitializerExpressionFactory.class); if (initializerExpressionFactory != null) { return initializerExpressionFactory .newColumnDefaultValue(this, ordinal, initializerContext) .getType().getSqlTypeName() != SqlTypeName.NULL; } } if (ordinal >= rowType.getFieldList().size()) { return true; } return !rowType.getFieldList().get(ordinal).getType().isNullable(); }
for (RelDataTypeField f : table.getRowType().getFieldList()) { final ColumnStrategy strategy = ief.generationStrategy(table, f.getIndex()); switch (strategy) { case VIRTUAL: list.add(ief.newColumnDefaultValue(table, f.getIndex(), bb.get())); ++virtualCount; break;
fieldNames.set(i, fieldName); if (sourceExps.get(i) != null) { if (initializerFactory.isGeneratedAlways(targetTable, i)) { throw RESOURCE.insertIntoAlwaysGenerated(fieldName).ex(); initializerFactory.newColumnDefaultValue(targetTable, i));
private static RexNode makeConstructorCall( SqlRexContext cx, SqlFunction constructor, List<RexNode> exprs) { final RexBuilder rexBuilder = cx.getRexBuilder(); RelDataType type = rexBuilder.deriveReturnType(constructor, exprs); int n = type.getFieldCount(); ImmutableList.Builder<RexNode> initializationExprs = ImmutableList.builder(); final InitializerContext initializerContext = new InitializerContext() { public RexBuilder getRexBuilder() { return rexBuilder; } public RexNode convertExpression(SqlNode e) { throw new UnsupportedOperationException(); } }; for (int i = 0; i < n; ++i) { initializationExprs.add( cx.getInitializerExpressionFactory().newAttributeInitializer( type, constructor, i, exprs, initializerContext)); } List<RexNode> defaultCasts = RexUtil.generateCastExpressions( rexBuilder, type, initializationExprs.build()); return rexBuilder.makeNewInvocation(type, defaultCasts); }
|| sourceExps.get(i).getKind() == SqlKind.DEFAULT) { sourceExps.set(i, initializerFactory.newColumnDefaultValue(targetTable, i, bb.get()));
for (RelDataTypeField f : table.getRowType().getFieldList()) { final ColumnStrategy strategy = ief.generationStrategy(table, f.getIndex()); switch (strategy) { case VIRTUAL: list.add(ief.newColumnDefaultValue(table, f.getIndex(), bb.get())); ++virtualCount; break;
fieldNames.set(i, fieldName); if (sourceExps.get(i) != null) { if (initializerFactory.isGeneratedAlways(targetTable, i)) { throw RESOURCE.insertIntoAlwaysGenerated(fieldName).ex(); initializerFactory.newColumnDefaultValue(targetTable, i, new InitializerContext() { public RexBuilder getRexBuilder() {
private static RexNode makeConstructorCall( SqlRexContext cx, SqlFunction constructor, List<RexNode> exprs) { final RexBuilder rexBuilder = cx.getRexBuilder(); RelDataType type = rexBuilder.deriveReturnType(constructor, exprs); int n = type.getFieldCount(); ImmutableList.Builder<RexNode> initializationExprs = ImmutableList.builder(); final InitializerContext initializerContext = new InitializerContext() { public RexBuilder getRexBuilder() { return rexBuilder; } public RexNode convertExpression(SqlNode e) { throw new UnsupportedOperationException(); } }; for (int i = 0; i < n; ++i) { initializationExprs.add( cx.getInitializerExpressionFactory().newAttributeInitializer( type, constructor, i, exprs, initializerContext)); } List<RexNode> defaultCasts = RexUtil.generateCastExpressions( rexBuilder, type, initializationExprs.build()); return rexBuilder.makeNewInvocation(type, defaultCasts); }
@SuppressWarnings("deprecation") public boolean columnHasDefaultValue(RelDataType rowType, int ordinal, InitializerContext initializerContext) { // This method is no longer used final Table table = this.unwrap(Table.class); if (table != null && table instanceof Wrapper) { final InitializerExpressionFactory initializerExpressionFactory = ((Wrapper) table).unwrap(InitializerExpressionFactory.class); if (initializerExpressionFactory != null) { return initializerExpressionFactory .newColumnDefaultValue(this, ordinal, initializerContext) .getType().getSqlTypeName() != SqlTypeName.NULL; } } if (ordinal >= rowType.getFieldList().size()) { return true; } return !rowType.getFieldList().get(ordinal).getType().isNullable(); }
public ColumnStrategy get(int index) { return ief.generationStrategy(table, index); } };
|| sourceExps.get(i).getKind() == SqlKind.DEFAULT) { sourceExps.set(i, initializerFactory.newColumnDefaultValue(targetTable, i, bb.get()));
@Override public ColumnStrategy generationStrategy(RelOptTable table, int iColumn) { final ModifiableViewTable viewTable = table.unwrap(ModifiableViewTable.class); assert iColumn < viewTable.columnMapping.size(); // Use the view constraint to generate the default value if the column is // constrained. final int mappedOrdinal = viewTable.columnMapping.get(iColumn); final RexNode viewConstraint = projectMap.get(mappedOrdinal); if (viewConstraint != null) { return ColumnStrategy.DEFAULT; } // Otherwise use the default value of the underlying table. final Table schemaTable = viewTable.getTable(); if (schemaTable instanceof Wrapper) { final InitializerExpressionFactory initializerExpressionFactory = ((Wrapper) schemaTable).unwrap(InitializerExpressionFactory.class); if (initializerExpressionFactory != null) { return initializerExpressionFactory.generationStrategy(table, iColumn); } } return super.generationStrategy(table, iColumn); }
Util.first(targetTable.unwrap(InitializerExpressionFactory.class), NullInitializerExpressionFactory.INSTANCE); expr = f.newColumnDefaultValue(targetTable, i, bb); break; case VIRTUAL:
@Override public ColumnStrategy generationStrategy(RelOptTable table, int iColumn) { final ModifiableViewTable viewTable = table.unwrap(ModifiableViewTable.class); assert iColumn < viewTable.columnMapping.size(); // Use the view constraint to generate the default value if the column is // constrained. final int mappedOrdinal = viewTable.columnMapping.get(iColumn); final RexNode viewConstraint = projectMap.get(mappedOrdinal); if (viewConstraint != null) { return ColumnStrategy.DEFAULT; } // Otherwise use the default value of the underlying table. final Table schemaTable = viewTable.getTable(); if (schemaTable instanceof Wrapper) { final InitializerExpressionFactory initializerExpressionFactory = ((Wrapper) schemaTable).unwrap(InitializerExpressionFactory.class); if (initializerExpressionFactory != null) { return initializerExpressionFactory.generationStrategy(table, iColumn); } } return super.generationStrategy(table, iColumn); }
Util.first(targetTable.unwrap(InitializerExpressionFactory.class), NullInitializerExpressionFactory.INSTANCE); expr = f.newColumnDefaultValue(targetTable, i, bb); break; case VIRTUAL:
@Override public RexNode newColumnDefaultValue(RelOptTable table, int iColumn, InitializerContext context) { final ModifiableViewTable viewTable = table.unwrap(ModifiableViewTable.class); assert iColumn < viewTable.columnMapping.size(); final RexBuilder rexBuilder = context.getRexBuilder(); final RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory(); final RelDataType viewType = viewTable.getRowType(typeFactory); final RelDataType iType = viewType.getFieldList().get(iColumn).getType(); // Use the view constraint to generate the default value if the column is constrained. final int mappedOrdinal = viewTable.columnMapping.get(iColumn); final RexNode viewConstraint = projectMap.get(mappedOrdinal); if (viewConstraint != null) { return rexBuilder.ensureType(iType, viewConstraint, true); } // Otherwise use the default value of the underlying table. final Table schemaTable = viewTable.getTable(); if (schemaTable instanceof Wrapper) { final InitializerExpressionFactory initializerExpressionFactory = ((Wrapper) schemaTable).unwrap(InitializerExpressionFactory.class); if (initializerExpressionFactory != null) { final RexNode tableConstraint = initializerExpressionFactory.newColumnDefaultValue(table, iColumn, context); return rexBuilder.ensureType(iType, tableConstraint, true); } } // Otherwise Sql type of NULL. return super.newColumnDefaultValue(table, iColumn, context); }
@Override public RexNode newColumnDefaultValue(RelOptTable table, int iColumn, InitializerContext context) { final ModifiableViewTable viewTable = table.unwrap(ModifiableViewTable.class); assert iColumn < viewTable.columnMapping.size(); final RexBuilder rexBuilder = context.getRexBuilder(); final RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory(); final RelDataType viewType = viewTable.getRowType(typeFactory); final RelDataType iType = viewType.getFieldList().get(iColumn).getType(); // Use the view constraint to generate the default value if the column is constrained. final int mappedOrdinal = viewTable.columnMapping.get(iColumn); final RexNode viewConstraint = projectMap.get(mappedOrdinal); if (viewConstraint != null) { return rexBuilder.ensureType(iType, viewConstraint, true); } // Otherwise use the default value of the underlying table. final Table schemaTable = viewTable.getTable(); if (schemaTable instanceof Wrapper) { final InitializerExpressionFactory initializerExpressionFactory = ((Wrapper) schemaTable).unwrap(InitializerExpressionFactory.class); if (initializerExpressionFactory != null) { final RexNode tableConstraint = initializerExpressionFactory.newColumnDefaultValue(table, iColumn, context); return rexBuilder.ensureType(iType, tableConstraint, true); } } // Otherwise Sql type of NULL. return super.newColumnDefaultValue(table, iColumn, context); }