org.apache.calcite.sql.SqlInsert Java Examples
The following examples show how to use
org.apache.calcite.sql.SqlInsert.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: SqlParseUtil.java From alchemy with Apache License 2.0 | 6 votes |
public static void parse(List<String> sqls, List<String> sources, List<String> udfs, List<String> sinks) throws SqlParseException { for (String sql : sqls) { SqlParser sqlParser = SqlParser.create(sql, CONFIG); SqlNode sqlNode = sqlParser.parseStmt(); SqlKind kind = sqlNode.getKind(); switch (kind){ case INSERT: SqlInsert sqlInsert = (SqlInsert)sqlNode; addSink(sinks, findSinkName(sqlInsert)); SqlSelect source = (SqlSelect) sqlInsert.getSource(); parseSource(source, sources, udfs); break; case SELECT: parseSource((SqlSelect) sqlNode, sources, udfs); break; default: throw new IllegalArgumentException("It must be an insert SQL, sql:" + sql); } } }
Example #2
Source File: SqlValidatorImpl.java From Flink-CEPplus with Apache License 2.0 | 6 votes |
protected RelDataType getLogicalTargetRowType( RelDataType targetRowType, SqlInsert insert) { if (insert.getTargetColumnList() == null && conformance.isInsertSubsetColumnsAllowed()) { // Target an implicit subset of columns. final SqlNode source = insert.getSource(); final RelDataType sourceRowType = getNamespace(source).getRowType(); final RelDataType logicalSourceRowType = getLogicalSourceRowType(sourceRowType, insert); final RelDataType implicitTargetRowType = typeFactory.createStructType( targetRowType.getFieldList() .subList(0, logicalSourceRowType.getFieldCount())); final SqlValidatorNamespace targetNamespace = getNamespace(insert); validateNamespace(targetNamespace, implicitTargetRowType); return implicitTargetRowType; } else { // Either the set of columns are explicitly targeted, or target the full // set of columns. return targetRowType; } }
Example #3
Source File: SideParser.java From alchemy with Apache License 2.0 | 6 votes |
public static void rewrite(SqlNode sqlNode, SqlSelect sqlSelect) { SqlKind sqlKind = sqlNode.getKind(); switch (sqlKind) { case INSERT: SqlInsert sqlInsert = ((SqlInsert)sqlNode); sqlInsert.setSource(sqlSelect); break; case SELECT: SqlSelect select = (SqlSelect)sqlNode; select.setFrom(sqlSelect); break; case AS: SqlBasicCall basicCall = (SqlBasicCall)sqlNode; basicCall.setOperand(0, sqlSelect); break; default: throw new UnsupportedOperationException(sqlKind + "目前不支持维表操作"); } }
Example #4
Source File: SideParser.java From alchemy with Apache License 2.0 | 6 votes |
public static void parse(SqlNode sqlNode, Deque<SqlNode> deque) { deque.offer(sqlNode); SqlKind sqlKind = sqlNode.getKind(); switch (sqlKind) { case INSERT: SqlNode sqlSource = ((SqlInsert)sqlNode).getSource(); parse(sqlSource, deque); break; case SELECT: SqlNode sqlFrom = ((SqlSelect)sqlNode).getFrom(); parse(sqlFrom, deque); break; case JOIN: SqlNode sqlLeft = ((SqlJoin)sqlNode).getLeft(); SqlNode sqlRight = ((SqlJoin)sqlNode).getRight(); parse(sqlLeft, deque); parse(sqlRight, deque); break; case AS: SqlNode sqlAs = ((SqlBasicCall)sqlNode).getOperands()[0]; parse(sqlAs, deque); break; default: return; } }
Example #5
Source File: SqlValidatorImpl.java From flink with Apache License 2.0 | 6 votes |
protected RelDataType getLogicalTargetRowType( RelDataType targetRowType, SqlInsert insert) { if (insert.getTargetColumnList() == null && conformance.isInsertSubsetColumnsAllowed()) { // Target an implicit subset of columns. final SqlNode source = insert.getSource(); final RelDataType sourceRowType = getNamespace(source).getRowType(); final RelDataType logicalSourceRowType = getLogicalSourceRowType(sourceRowType, insert); final RelDataType implicitTargetRowType = typeFactory.createStructType( targetRowType.getFieldList() .subList(0, logicalSourceRowType.getFieldCount())); final SqlValidatorNamespace targetNamespace = getNamespace(insert); validateNamespace(targetNamespace, implicitTargetRowType); return implicitTargetRowType; } else { // Either the set of columns are explicitly targeted, or target the full // set of columns. return targetRowType; } }
Example #6
Source File: SqlParseUtil.java From alchemy with Apache License 2.0 | 5 votes |
public static List<String> findQuerySql(List<String> sqls) throws SqlParseException { List<String> newSqls = new ArrayList<>(sqls.size()); for (String sql : sqls) { SqlParser sqlParser = SqlParser.create(sql, CONFIG); SqlNode sqlNode = sqlParser.parseStmt(); if (sqlNode.getKind() != SqlKind.INSERT) { throw new IllegalArgumentException("It must be an insert SQL, sql:" + sql); } SqlInsert sqlInsert = (SqlInsert)sqlNode; newSqls.add(sqlInsert.getSource().toString()); } return newSqls; }
Example #7
Source File: SqlParseUtil.java From alchemy with Apache License 2.0 | 5 votes |
public static String parseSinkName(String sql) throws SqlParseException { SqlParser sqlParser = SqlParser.create(sql, CONFIG); SqlNode sqlNode = sqlParser.parseStmt(); SqlKind sqlKind = sqlNode.getKind(); if (sqlKind != SqlKind.INSERT) { throw new IllegalArgumentException("It must be an insert SQL, sql:" + sql); } return findSinkName((SqlInsert)sqlNode); }
Example #8
Source File: SqlParseUtil.java From alchemy with Apache License 2.0 | 5 votes |
private static String findSinkName(SqlInsert sqlInsert) { SqlNode target = sqlInsert.getTargetTable(); SqlKind targetKind = target.getKind(); if (targetKind != SqlKind.IDENTIFIER) { throw new IllegalArgumentException("invalid insert SQL, sql:" + sqlInsert.toString()); } SqlIdentifier identifier = (SqlIdentifier)target; return identifier.getSimple(); }
Example #9
Source File: SqlValidatorImpl.java From flink with Apache License 2.0 | 5 votes |
/** * Locates the n'th expression in an INSERT or UPDATE query. * * @param query Query * @param ordinal Ordinal of expression * @param sourceCount Number of expressions * @return Ordinal'th expression, never null */ private SqlNode getNthExpr(SqlNode query, int ordinal, int sourceCount) { if (query instanceof SqlInsert) { SqlInsert insert = (SqlInsert) query; if (insert.getTargetColumnList() != null) { return insert.getTargetColumnList().get(ordinal); } else { return getNthExpr( insert.getSource(), ordinal, sourceCount); } } else if (query instanceof SqlUpdate) { SqlUpdate update = (SqlUpdate) query; if (update.getTargetColumnList() != null) { return update.getTargetColumnList().get(ordinal); } else if (update.getSourceExpressionList() != null) { return update.getSourceExpressionList().get(ordinal); } else { return getNthExpr( update.getSourceSelect(), ordinal, sourceCount); } } else if (query instanceof SqlSelect) { SqlSelect select = (SqlSelect) query; if (select.getSelectList().size() == sourceCount) { return select.getSelectList().get(ordinal); } else { return query; // give up } } else { return query; // give up } }
Example #10
Source File: CalcitePlanner.java From herddb with Apache License 2.0 | 5 votes |
private static boolean detectUpsert(PlannerResult res) { if (res.sql instanceof SqlInsert) { SqlInsert si = (SqlInsert) res.sql; return si.isUpsert(); } return false; }
Example #11
Source File: SqlValidatorImpl.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
/** * Locates the n'th expression in an INSERT or UPDATE query. * * @param query Query * @param ordinal Ordinal of expression * @param sourceCount Number of expressions * @return Ordinal'th expression, never null */ private SqlNode getNthExpr(SqlNode query, int ordinal, int sourceCount) { if (query instanceof SqlInsert) { SqlInsert insert = (SqlInsert) query; if (insert.getTargetColumnList() != null) { return insert.getTargetColumnList().get(ordinal); } else { return getNthExpr( insert.getSource(), ordinal, sourceCount); } } else if (query instanceof SqlUpdate) { SqlUpdate update = (SqlUpdate) query; if (update.getTargetColumnList() != null) { return update.getTargetColumnList().get(ordinal); } else if (update.getSourceExpressionList() != null) { return update.getSourceExpressionList().get(ordinal); } else { return getNthExpr( update.getSourceSelect(), ordinal, sourceCount); } } else if (query instanceof SqlSelect) { SqlSelect select = (SqlSelect) query; if (select.getSelectList().size() == sourceCount) { return select.getSelectList().get(ordinal); } else { return query; // give up } } else { return query; // give up } }
Example #12
Source File: TypeCoercionImpl.java From calcite with Apache License 2.0 | 5 votes |
/** * Coerces the field expression at index {@code columnIndex} of source * in an INSERT or UPDATE query to target type. * * @param sourceScope Query source scope * @param query Query * @param columnIndex Source column index to coerce type * @param targetType Target type */ private boolean coerceSourceRowType( SqlValidatorScope sourceScope, SqlNode query, int columnIndex, RelDataType targetType) { switch (query.getKind()) { case INSERT: SqlInsert insert = (SqlInsert) query; return coerceSourceRowType(sourceScope, insert.getSource(), columnIndex, targetType); case UPDATE: SqlUpdate update = (SqlUpdate) query; if (update.getSourceExpressionList() != null) { final SqlNodeList sourceExpressionList = update.getSourceExpressionList(); return coerceColumnType(sourceScope, sourceExpressionList, columnIndex, targetType); } else { return coerceSourceRowType(sourceScope, update.getSourceSelect(), columnIndex, targetType); } default: return rowTypeCoercion(sourceScope, query, columnIndex, targetType); } }
Example #13
Source File: CalciteSqlValidator.java From Mycat2 with GNU General Public License v3.0 | 4 votes |
@Override protected RelDataType getLogicalSourceRowType( RelDataType sourceRowType, SqlInsert insert) { final RelDataType superType = super.getLogicalSourceRowType(sourceRowType, insert); return ((JavaTypeFactory) typeFactory).toSql(superType); }
Example #14
Source File: CalciteSqlValidator.java From Mycat2 with GNU General Public License v3.0 | 4 votes |
@Override protected RelDataType getLogicalTargetRowType( RelDataType targetRowType, SqlInsert insert) { final RelDataType superType = super.getLogicalTargetRowType(targetRowType, insert); return ((JavaTypeFactory) typeFactory).toSql(superType); }
Example #15
Source File: CalciteSqlValidator.java From calcite with Apache License 2.0 | 4 votes |
@Override protected RelDataType getLogicalSourceRowType( RelDataType sourceRowType, SqlInsert insert) { final RelDataType superType = super.getLogicalSourceRowType(sourceRowType, insert); return ((JavaTypeFactory) typeFactory).toSql(superType); }
Example #16
Source File: CalciteSqlValidator.java From calcite with Apache License 2.0 | 4 votes |
@Override protected RelDataType getLogicalTargetRowType( RelDataType targetRowType, SqlInsert insert) { final RelDataType superType = super.getLogicalTargetRowType(targetRowType, insert); return ((JavaTypeFactory) typeFactory).toSql(superType); }
Example #17
Source File: SqlValidatorImpl.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
public void validateInsert(SqlInsert insert) { final SqlValidatorNamespace targetNamespace = getNamespace(insert); validateNamespace(targetNamespace, unknownType); final RelOptTable relOptTable = SqlValidatorUtil.getRelOptTable( targetNamespace, catalogReader.unwrap(Prepare.CatalogReader.class), null, null); final SqlValidatorTable table = relOptTable == null ? targetNamespace.getTable() : relOptTable.unwrap(SqlValidatorTable.class); // INSERT has an optional column name list. If present then // reduce the rowtype to the columns specified. If not present // then the entire target rowtype is used. final RelDataType targetRowType = createTargetRowType( table, insert.getTargetColumnList(), false); final SqlNode source = insert.getSource(); if (source instanceof SqlSelect) { final SqlSelect sqlSelect = (SqlSelect) source; validateSelect(sqlSelect, targetRowType); } else { final SqlValidatorScope scope = scopes.get(source); validateQuery(source, scope, targetRowType); } // REVIEW jvs 4-Dec-2008: In FRG-365, this namespace row type is // discarding the type inferred by inferUnknownTypes (which was invoked // from validateSelect above). It would be better if that information // were used here so that we never saw any untyped nulls during // checkTypeAssignment. final RelDataType sourceRowType = getNamespace(source).getRowType(); final RelDataType logicalTargetRowType = getLogicalTargetRowType(targetRowType, insert); setValidatedNodeType(insert, logicalTargetRowType); final RelDataType logicalSourceRowType = getLogicalSourceRowType(sourceRowType, insert); checkFieldCount(insert.getTargetTable(), table, source, logicalSourceRowType, logicalTargetRowType); checkTypeAssignment(logicalSourceRowType, logicalTargetRowType, insert); checkConstraint(table, source, logicalTargetRowType); validateAccess(insert.getTargetTable(), table, SqlAccessEnum.INSERT); }
Example #18
Source File: SqlValidatorImpl.java From flink with Apache License 2.0 | 4 votes |
public SqlInsert getNode() { return node; }
Example #19
Source File: SqlValidatorImpl.java From flink with Apache License 2.0 | 4 votes |
InsertNamespace(SqlValidatorImpl validator, SqlInsert node, SqlNode enclosingNode, SqlValidatorScope parentScope) { super(validator, node.getTargetTable(), enclosingNode, parentScope); this.node = Objects.requireNonNull(node); }
Example #20
Source File: SqlValidatorImpl.java From flink with Apache License 2.0 | 4 votes |
protected RelDataType getLogicalSourceRowType( RelDataType sourceRowType, SqlInsert insert) { return sourceRowType; }
Example #21
Source File: SqlValidatorImpl.java From flink with Apache License 2.0 | 4 votes |
public void validateInsert(SqlInsert insert) { final SqlValidatorNamespace targetNamespace = getNamespace(insert); validateNamespace(targetNamespace, unknownType); final RelOptTable relOptTable = SqlValidatorUtil.getRelOptTable( targetNamespace, catalogReader.unwrap(Prepare.CatalogReader.class), null, null); final SqlValidatorTable table = relOptTable == null ? targetNamespace.getTable() : relOptTable.unwrap(SqlValidatorTable.class); // INSERT has an optional column name list. If present then // reduce the rowtype to the columns specified. If not present // then the entire target rowtype is used. final RelDataType targetRowType = createTargetRowType( table, insert.getTargetColumnList(), false); final SqlNode source = insert.getSource(); if (source instanceof SqlSelect) { final SqlSelect sqlSelect = (SqlSelect) source; validateSelect(sqlSelect, targetRowType); } else { final SqlValidatorScope scope = scopes.get(source); validateQuery(source, scope, targetRowType); } // REVIEW jvs 4-Dec-2008: In FRG-365, this namespace row type is // discarding the type inferred by inferUnknownTypes (which was invoked // from validateSelect above). It would be better if that information // were used here so that we never saw any untyped nulls during // checkTypeAssignment. final RelDataType sourceRowType = getNamespace(source).getRowType(); final RelDataType logicalTargetRowType = getLogicalTargetRowType(targetRowType, insert); setValidatedNodeType(insert, logicalTargetRowType); final RelDataType logicalSourceRowType = getLogicalSourceRowType(sourceRowType, insert); checkFieldCount(insert.getTargetTable(), table, source, logicalSourceRowType, logicalTargetRowType); checkTypeAssignment(logicalSourceRowType, logicalTargetRowType, insert); checkConstraint(table, source, logicalTargetRowType); validateAccess(insert.getTargetTable(), table, SqlAccessEnum.INSERT); }
Example #22
Source File: SqlValidatorImpl.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
public SqlInsert getNode() { return node; }
Example #23
Source File: SqlValidatorImpl.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
InsertNamespace(SqlValidatorImpl validator, SqlInsert node, SqlNode enclosingNode, SqlValidatorScope parentScope) { super(validator, node.getTargetTable(), enclosingNode, parentScope); this.node = Objects.requireNonNull(node); }
Example #24
Source File: SqlValidatorImpl.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
protected RelDataType getLogicalSourceRowType( RelDataType sourceRowType, SqlInsert insert) { return sourceRowType; }
Example #25
Source File: SqlValidator.java From Bats with Apache License 2.0 | 2 votes |
/** * Validates an INSERT statement. * * @param insert INSERT statement */ void validateInsert(SqlInsert insert);
Example #26
Source File: SqlValidator.java From calcite with Apache License 2.0 | 2 votes |
/** * Validates an INSERT statement. * * @param insert INSERT statement */ void validateInsert(SqlInsert insert);