SqlTypeUtil.addCharsetAndCollation( type, getTypeFactory()); return type;
@Override public RelDataType nullifyType(SqlNode node, RelDataType type) { final Resolved r = this.resolved.get(); for (Ord<SqlNode> groupExpr : Ord.zip(r.groupExprList)) { if (groupExpr.e.equalsDeep(node, Litmus.IGNORE)) { if (r.isNullable(groupExpr.i)) { return validator.getTypeFactory().createTypeWithNullability(type, true); } } } return type; }
@Override public RelDataType nullifyType(SqlNode node, RelDataType type) { final Resolved r = this.resolved.get(); for (Ord<SqlNode> groupExpr : Ord.zip(r.groupExprList)) { if (groupExpr.e.equalsDeep(node, Litmus.IGNORE)) { if (r.isNullable(groupExpr.i)) { return validator.getTypeFactory().createTypeWithNullability(type, true); } } } return type; }
protected RelDataType validateImpl(RelDataType targetRowType) { if (extendedFields.isEmpty()) { return table.getRowType(); } final RelDataTypeFactory.Builder builder = validator.getTypeFactory().builder(); builder.addAll(table.getRowType().getFieldList()); builder.addAll(extendedFields); return builder.build(); }
/** Converts a type to a struct if it is not already. */ protected RelDataType toStruct(RelDataType type, SqlNode unnest) { if (type.isStruct()) { return type; } return validator.getTypeFactory().builder() .add(validator.deriveAlias(unnest, 0), type) .build(); } }
protected RelDataType validateImpl(RelDataType targetRowType) { if (extendedFields.isEmpty()) { return table.getRowType(); } final RelDataTypeFactory.Builder builder = validator.getTypeFactory().builder(); builder.addAll(table.getRowType().getFieldList()); builder.addAll(extendedFields); return builder.build(); }
/** Converts a type to a struct if it is not already. */ protected RelDataType toStruct(RelDataType type, SqlNode unnest) { if (type.isStruct()) { return type; } return validator.getTypeFactory().builder() .add(validator.deriveAlias(unnest, 0), type) .build(); } }
typeList.add(field.getType()); return validator.getTypeFactory().createStructType( typeList, nameList);
typeList.add(field.getType()); return validator.getTypeFactory().createStructType( typeList, nameList);
builder.addAll(this.extendedFields); builder.addAll( SqlValidatorUtil.getExtendedColumns(validator.getTypeFactory(), getTable(), extendList)); final List<RelDataTypeField> extendedFields = builder.build();
final List<RelDataTypeField> extendedFields = SqlValidatorUtil.getExtendedColumns( validator.getTypeFactory(), table, extendList); final List<RelDataTypeField> baseFields = getBaseRowType().getFieldList();
final List<RelDataTypeField> extendedFields = SqlValidatorUtil.getExtendedColumns( validator.getTypeFactory(), table, extendList); final List<RelDataTypeField> baseFields = getBaseRowType().getFieldList();
protected RelDataType validateImpl(RelDataType targetRowType) { final RelDataTypeFactory.Builder builder = validator.getTypeFactory().builder(); for (SqlMoniker moniker : validator.catalogReader.getAllSchemaObjectNames(names)) { final List<String> names1 = moniker.getFullyQualifiedNames(); final SqlValidatorTable table = validator.catalogReader.getTable(names1); builder.add(Util.last(names1), table.getRowType()); } return builder.build(); }
protected RelDataType validateImpl(RelDataType targetRowType) { final RelDataTypeFactory.Builder builder = validator.getTypeFactory().builder(); for (SqlMoniker moniker : validator.catalogReader.getAllSchemaObjectNames(names)) { final List<String> names1 = moniker.getFullyQualifiedNames(); final SqlValidatorTable table = validator.catalogReader.getTable(names1); builder.add(Util.last(names1), table.getRowType()); } return builder.build(); }
protected RelDataType convertToStruct(RelDataType type) { // "MULTISET [<expr>, ...]" needs to be wrapped in a record if // <expr> has a scalar type. // For example, "MULTISET [8, 9]" has type // "RECORD(INTEGER EXPR$0 NOT NULL) NOT NULL MULTISET NOT NULL". final RelDataType componentType = type.getComponentType(); if (componentType == null || componentType.isStruct()) { return type; } final RelDataTypeFactory typeFactory = validator.getTypeFactory(); final RelDataType structType = toStruct(componentType, getNode()); final RelDataType collectionType; switch (type.getSqlTypeName()) { case ARRAY: collectionType = typeFactory.createArrayType(structType, -1); break; case MULTISET: collectionType = typeFactory.createMultisetType(structType, -1); break; default: throw new AssertionError(type); } return typeFactory.createTypeWithNullability(collectionType, type.isNullable()); }
protected RelDataType convertToStruct(RelDataType type) { // "MULTISET [<expr>, ...]" needs to be wrapped in a record if // <expr> has a scalar type. // For example, "MULTISET [8, 9]" has type // "RECORD(INTEGER EXPR$0 NOT NULL) NOT NULL MULTISET NOT NULL". final RelDataType componentType = type.getComponentType(); if (componentType == null || componentType.isStruct()) { return type; } final RelDataTypeFactory typeFactory = validator.getTypeFactory(); final RelDataType structType = toStruct(componentType, getNode()); final RelDataType collectionType; switch (type.getSqlTypeName()) { case ARRAY: collectionType = typeFactory.createArrayType(structType, -1); break; case MULTISET: collectionType = typeFactory.createMultisetType(structType, -1); break; default: throw new AssertionError(type); } return typeFactory.createTypeWithNullability(collectionType, type.isNullable()); }
@Override protected RelDataType validateImpl(RelDataType targetRowType) { final SqlValidatorNamespace childNs = validator.getNamespace(withItem.query); final RelDataType rowType = childNs.getRowTypeSansSystemColumns(); if (withItem.columnList == null) { return rowType; } final RelDataTypeFactory.Builder builder = validator.getTypeFactory().builder(); for (Pair<SqlNode, RelDataTypeField> pair : Pair.zip(withItem.columnList, rowType.getFieldList())) { builder.add(((SqlIdentifier) pair.left).getSimple(), pair.right.getType()); } return builder.build(); }
@Override protected RelDataType validateImpl(RelDataType targetRowType) { final SqlValidatorNamespace childNs = validator.getNamespace(withItem.query); final RelDataType rowType = childNs.getRowTypeSansSystemColumns(); if (withItem.columnList == null) { return rowType; } final RelDataTypeFactory.Builder builder = validator.getTypeFactory().builder(); for (Pair<SqlNode, RelDataTypeField> pair : Pair.zip(withItem.columnList, rowType.getFieldList())) { builder.add(((SqlIdentifier) pair.left).getSimple(), pair.right.getType()); } return builder.build(); }
protected RelDataType validateImpl(RelDataType targetRowType) { RelDataType leftType = validator.getNamespace(join.getLeft()).getRowType(); RelDataType rightType = validator.getNamespace(join.getRight()).getRowType(); final RelDataTypeFactory typeFactory = validator.getTypeFactory(); switch (join.getJoinType()) { case LEFT: rightType = typeFactory.createTypeWithNullability(rightType, true); break; case RIGHT: leftType = typeFactory.createTypeWithNullability(leftType, true); break; case FULL: leftType = typeFactory.createTypeWithNullability(leftType, true); rightType = typeFactory.createTypeWithNullability(rightType, true); break; } return typeFactory.createJoinType(leftType, rightType); }
protected RelDataType validateImpl(RelDataType targetRowType) { RelDataType leftType = validator.getNamespace(join.getLeft()).getRowType(); RelDataType rightType = validator.getNamespace(join.getRight()).getRowType(); final RelDataTypeFactory typeFactory = validator.getTypeFactory(); switch (join.getJoinType()) { case LEFT: rightType = typeFactory.createTypeWithNullability(rightType, true); break; case RIGHT: leftType = typeFactory.createTypeWithNullability(leftType, true); break; case FULL: leftType = typeFactory.createTypeWithNullability(leftType, true); rightType = typeFactory.createTypeWithNullability(rightType, true); break; } return typeFactory.createJoinType(leftType, rightType); }