@Override public TableNode visit(JoinTableNode joinNode) throws SQLException { TableNode lhsNode = joinNode.getLHS(); TableNode rhsNode = joinNode.getRHS(); ParseNode onNode = joinNode.getOnNode(); TableNode normLhsNode = lhsNode.accept(this); TableNode normRhsNode = rhsNode.accept(this); parseNodeRewriter.reset(); ParseNode normOnNode = onNode == null ? null : onNode.accept(parseNodeRewriter); if (lhsNode == normLhsNode && rhsNode == normRhsNode && onNode == normOnNode) return joinNode; return NODE_FACTORY.join(joinNode.getType(), normLhsNode, normRhsNode, normOnNode, joinNode.isSingleValueOnly()); }
public SelectStatement select(SelectStatement statement, HintNode hint) { return hint == null || hint.isEmpty() ? statement : select(statement.getFrom(), hint, statement.isDistinct(), statement.getSelect(), statement.getWhere(), statement.getGroupBy(), statement.getHaving(), statement.getOrderBy(), statement.getLimit(), statement.getOffset(), statement.getBindCount(), statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }
@Override public boolean visitEnter(FunctionParseNode node) throws SQLException { boolean isAggregate = node.isAggregate(); this.hasNoAggregateFunctions = this.hasNoAggregateFunctions && !isAggregate; return !isAggregate && super.visitEnter(node); }
@Override public TableNode visit(JoinTableNode joinNode) throws SQLException { TableNode lhs = joinNode.getLHS(); TableNode rhs = joinNode.getRHS(); TableNode lhsReplace = lhs.accept(this); TableNode rhsReplace = rhs.accept(this); if (lhs == lhsReplace && rhs == rhsReplace) return joinNode; return FACTORY.join(joinNode.getType(), lhsReplace, rhsReplace, joinNode.getOnNode(), joinNode.isSingleValueOnly()); }
@Override public ParseNode visit(FamilyWildcardParseNode node) throws SQLException { if (!multiTable) return super.visit(node); return super.visit(NODE_FACTORY.tableWildcard(NODE_FACTORY.table(null, node.isCaseSensitive() ? '"' + node.getName() + '"' : node.getName()))); } }
@BuiltInFunction(name="NO_DEFAULT_ARGS", args={ @Argument(allowedTypes={PVarchar.class}), @Argument(allowedTypes={PVarchar.class})}) static class NoDefaultArgsFunction extends BaseFunctionAdapter { public NoDefaultArgsFunction(List<Expression> ignoreChildren) { super("NO_DEFAULT_ARGS"); } }
public SelectStatement select(SelectStatement statement, LimitNode limit) { return select(statement.getFrom(), statement.getHint(), statement.isDistinct(), statement.getSelect(), statement.getWhere(), statement.getGroupBy(), statement.getHaving(), statement.getOrderBy(), limit, statement.getOffset(), statement.getBindCount(), statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }
@BuiltInFunction(name="WITH_MULTIPLE_DEFAULT_ARGS", args={ @Argument(allowedTypes={PVarchar.class}), @Argument(allowedTypes={PVarchar.class}, defaultValue = "'a'"), @Argument(allowedTypes={PVarchar.class}, defaultValue = "'b'") }) static class WithMultipleDefaultArgs extends BaseFunctionAdapter { public WithMultipleDefaultArgs(List<Expression> ignoreChildren) { super("WITH_MULTIPLE_DEFAULT_ARGS"); } } }
public SelectStatement select(SelectStatement statement, List<OrderByNode> orderBy, LimitNode limit, OffsetNode offset, int bindCount, boolean isAggregate) { return select(statement.getFrom(), statement.getHint(), statement.isDistinct(), statement.getSelect(), statement.getWhere(), statement.getGroupBy(), statement.getHaving(), orderBy, limit, offset, bindCount, isAggregate || statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }
public SelectStatement select(SelectStatement statement, TableNode table, ParseNode where) { return select(table, statement.getHint(), statement.isDistinct(), statement.getSelect(), where, statement.getGroupBy(), statement.getHaving(), statement.getOrderBy(), statement.getLimit(), statement.getOffset(), statement.getBindCount(), statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }
public SelectStatement select(SelectStatement statement, boolean isDistinct, List<AliasedNode> select, ParseNode where) { return select(statement.getFrom(), statement.getHint(), isDistinct, select, where, statement.getGroupBy(), statement.getHaving(), statement.getOrderBy(), statement.getLimit(), statement.getOffset(), statement.getBindCount(), statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }
public SelectStatement select(SelectStatement statement, List<OrderByNode> orderBy, LimitNode limit, OffsetNode offset) { return select(statement.getFrom(), statement.getHint(), statement.isDistinct(), statement.getSelect(), statement.getWhere(), statement.getGroupBy(), statement.getHaving(), orderBy, limit,offset, statement.getBindCount(), statement.isAggregate(), statement.hasSequence(), statement.getSelects(), statement.getUdfParseNodes()); }