CPD Results
The following document contains the results of PMD's CPD 7.17.0.
Duplications
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 228 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 200 |
public HiveDMLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) {
return visit(ctx.queryExpressionParens());
}
@Override
public ASTNode visitQueryExpressionParens(final QueryExpressionParensContext ctx) {
if (null != ctx.queryExpressionParens()) {
return visit(ctx.queryExpressionParens());
}
SelectStatement result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitLockClauseList(final LockClauseListContext ctx) {
LockSegment result = new LockSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (LockClauseContext each : ctx.lockClause()) {
if (null != each.tableLockingList()) {
result.getTables().addAll(generateTablesFromTableAliasRefList(each.tableLockingList().tableAliasRefList()));
}
}
return result;
}
@Override
public ASTNode visitQueryExpression(final QueryExpressionContext ctx) {
SelectStatement result;
if (null != ctx.queryExpressionBody()) {
result = (SelectStatement) visit(ctx.queryExpressionBody());
} else {
result = (SelectStatement) visit(ctx.queryExpressionParens());
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
return result;
}
@Override
public ASTNode visitSelectWithInto(final SelectWithIntoContext ctx) {
if (null != ctx.selectWithInto()) {
return visit(ctx.selectWithInto());
}
SelectStatement result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
return result;
}
@Override
public ASTNode visitQueryExpressionBody(final QueryExpressionBodyContext ctx) {
if (1 == ctx.getChildCount() && ctx.getChild(0) instanceof QueryPrimaryContext) {
return visit(ctx.queryPrimary());
}
if (null != ctx.queryExpressionBody()) {
SelectStatement result = new SelectStatement(getDatabaseType());
SubquerySegment left = new SubquerySegment(ctx.queryExpressionBody().start.getStartIndex(), ctx.queryExpressionBody().stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionBody()), getOriginalText(ctx.queryExpressionBody()));
result.setProjections(left.getSelect().getProjections());
left.getSelect().getFrom().ifPresent(result::setFrom);
result.setCombine(createCombineSegment(ctx.combineClause(), left));
return result;
}
if (null != ctx.queryExpressionParens()) {
SelectStatement result = new SelectStatement(getDatabaseType());
SubquerySegment left = new SubquerySegment(ctx.queryExpressionParens().start.getStartIndex(), ctx.queryExpressionParens().stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionParens()), getOriginalText(ctx.queryExpressionParens()));
result.setProjections(left.getSelect().getProjections());
left.getSelect().getFrom().ifPresent(result::setFrom);
result.setCombine(createCombineSegment(ctx.combineClause(), left));
return result;
}
return visit(ctx.queryExpressionParens());
}
private CombineSegment createCombineSegment(final CombineClauseContext ctx, final SubquerySegment left) {
CombineType combineType;
if (null != ctx.EXCEPT()) {
combineType = CombineType.EXCEPT;
} else {
combineType = null == ctx.combineOption() || null == ctx.combineOption().ALL() ? CombineType.UNION : CombineType.UNION_ALL;
}
ParserRuleContext ruleContext = null == ctx.queryPrimary() ? ctx.queryExpressionParens() : ctx.queryPrimary();
SubquerySegment right = new SubquerySegment(ruleContext.start.getStartIndex(), ruleContext.stop.getStopIndex(), (SelectStatement) visit(ruleContext), getOriginalText(ruleContext));
return new CombineSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), left, combineType, right);
}
@Override
public ASTNode visitQuerySpecification(final QuerySpecificationContext ctx) {
SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
}
if (null != ctx.fromClause()) {
if (null != ctx.fromClause().tableReferences()) {
TableSegment tableSource = (TableSegment) visit(ctx.fromClause().tableReferences());
result.setFrom(tableSource);
}
if (null != ctx.fromClause().DUAL()) {
TableSegment tableSource = new SimpleTableSegment(new TableNameSegment(ctx.fromClause().DUAL().getSymbol().getStartIndex(),
ctx.fromClause().DUAL().getSymbol().getStopIndex(), new IdentifierValue(ctx.fromClause().DUAL().getText())));
result.setFrom(tableSource);
}
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
if (null != ctx.windowClause()) {
result.setWindow((WindowSegment) visit(ctx.windowClause()));
}
return result;
}
@Override
public ASTNode visitTableValueConstructor(final TableValueConstructorContext ctx) {
SelectStatement result = new SelectStatement(getDatabaseType());
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
valuesExpression.getRowConstructorList().addAll(createRowConstructorList(ctx.rowConstructorList()));
result.setProjections(new ProjectionsSegment(startIndex, stopIndex));
result.getProjections().getProjections().add(new ExpressionProjectionSegment(startIndex, stopIndex, getOriginalText(ctx), valuesExpression));
return result;
}
private Collection<InsertValuesSegment> createRowConstructorList(final RowConstructorListContext ctx) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : ctx.assignmentValues()) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitTableStatement(final TableStatementContext ctx) {
SelectStatement result = new SelectStatement(getDatabaseType());
if (null != ctx.TABLE()) {
result.setFrom(new SimpleTableSegment(new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
new IdentifierValue(ctx.tableName().getText()))));
} else {
result.setFrom((SimpleTableSegment) visit(ctx.tableName()));
}
return result;
}
@Override
public ASTNode visitWindowClause(final WindowClauseContext ctx) {
WindowSegment result = new WindowSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (WindowItemContext each : ctx.windowItem()) {
result.getItemSegments().add((WindowItemSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWindowItem(final WindowItemContext ctx) {
WindowItemSegment result = new WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.setWindowName(new IdentifierValue(ctx.identifier().getText()));
if (null != ctx.windowSpecification().PARTITION()) {
result.setPartitionListSegments(getExpressionsFromExprList(ctx.windowSpecification().expr()));
}
if (null != ctx.windowSpecification().orderByClause()) {
result.setOrderBySegment((OrderBySegment) visit(ctx.windowSpecification().orderByClause()));
}
if (null != ctx.windowSpecification().frameClause()) {
result.setFrameClause(new CommonExpressionSegment(ctx.windowSpecification().frameClause().start.getStartIndex(), ctx.windowSpecification().frameClause().stop.getStopIndex(),
ctx.windowSpecification().frameClause().getText()));
}
return result;
}
private Collection<ExpressionSegment> getExpressionsFromExprList(final List<ExprContext> exprList) {
if (null == exprList) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new ArrayList<>(exprList.size());
for (ExprContext each : exprList) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitHavingClause(final HavingClauseContext ctx) {
ExpressionSegment expr = (ExpressionSegment) visit(ctx.expr());
return new HavingSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), expr);
}
@Override
public ASTNode visitIntervalExpression(final IntervalExpressionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.INTERVAL().getSymbol().getStartIndex(), ctx.INTERVAL().getSymbol().getStopIndex(), ctx.INTERVAL().getText(), ctx.INTERVAL().getText());
result.getParameters().add((ExpressionSegment) visit(ctx.intervalValue().expr()));
result.getParameters().add(new LiteralExpressionSegment(ctx.intervalValue().intervalUnit().getStart().getStartIndex(), ctx.intervalValue().intervalUnit().getStop().getStopIndex(),
ctx.intervalValue().intervalUnit().getText()));
return result;
}
@Override
public ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
if (null != ctx.jsonFunction()) {
return visit(ctx.jsonFunction());
}
if (null != ctx.udfFunction()) {
return visit(ctx.udfFunction());
}
throw new IllegalStateException("FunctionCallContext must have aggregationFunction, regularFunction, specialFunction, jsonFunction or udfFunction.");
}
@Override
public ASTNode visitUdfFunction(final UdfFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx), getOriginalText(ctx));
if (null != ctx.expr()) {
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
}
return result;
}
@Override
public ASTNode visitAggregationFunction(final AggregationFunctionContext ctx) {
String aggregationType = ctx.aggregationFunctionName().getText();
return AggregationType.isAggregationType(aggregationType)
? createAggregationSegment(ctx, aggregationType)
: new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx));
}
@Override
public ASTNode visitJsonFunction(final JsonFunctionContext ctx) {
JsonFunctionNameContext functionNameContext = ctx.jsonFunctionName();
String functionName;
if (null != functionNameContext) {
functionName = functionNameContext.getText();
for (ExprContext each : ctx.expr()) {
visit(each);
}
} else if (null != ctx.JSON_SEPARATOR()) {
functionName = ctx.JSON_SEPARATOR().getText();
} else {
functionName = ctx.JSON_UNQUOTED_SEPARATOR().getText();
}
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), functionName, getOriginalText(ctx));
}
private ASTNode createAggregationSegment(final AggregationFunctionContext ctx, final String aggregationType) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase());
String innerExpression = ctx.start.getInputStream().getText(new Interval(ctx.LP_().getSymbol().getStartIndex(), ctx.stop.getStopIndex()));
if (null != ctx.distinct()) {
AggregationDistinctProjectionSegment result = new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
type, innerExpression, getDistinctExpression(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, innerExpression);
result.getParameters().addAll(getExpressions(ctx));
return result;
}
private Collection<ExpressionSegment> getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new LinkedList<>();
for (ExprContext each : ctx.expr()) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.groupConcatFunction()) {
return visit(ctx.groupConcatFunction());
}
if (null != ctx.windowFunction()) {
return visit(ctx.windowFunction());
}
if (null != ctx.castFunction()) {
return visit(ctx.castFunction());
}
if (null != ctx.convertFunction()) {
return visit(ctx.convertFunction());
}
if (null != ctx.positionFunction()) {
return visit(ctx.positionFunction());
}
if (null != ctx.substringFunction()) {
return visit(ctx.substringFunction());
}
if (null != ctx.extractFunction()) {
return visit(ctx.extractFunction());
}
if (null != ctx.charFunction()) {
return visit(ctx.charFunction());
}
if (null != ctx.trimFunction()) {
return visit(ctx.trimFunction());
}
if (null != ctx.weightStringFunction()) {
return visit(ctx.weightStringFunction());
}
if (null != ctx.valuesFunction()) {
return visit(ctx.valuesFunction());
}
if (null != ctx.currentUserFunction()) {
return visit(ctx.currentUserFunction());
}
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx), getOriginalText(ctx));
}
@Override
public ASTNode visitGroupConcatFunction(final GroupConcatFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.GROUP_CONCAT().getText(), getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWindowFunction(final WindowFunctionContext ctx) {
super.visitWindowFunction(ctx);
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.funcName.getText(), getOriginalText(ctx));
}
@Override
public ASTNode visitCastFunction(final CastFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CAST().getText(), getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
ASTNode expr = visit(each);
if (expr instanceof ColumnSegment) {
result.getParameters().add((ColumnSegment) expr);
} else if (expr instanceof LiteralExpressionSegment) {
result.getParameters().add((LiteralExpressionSegment) expr);
}
}
if (null != ctx.castType()) {
result.getParameters().add((DataTypeSegment) visit(ctx.castType()));
}
if (null != ctx.DATETIME()) {
DataTypeSegment dataType = new DataTypeSegment();
dataType.setDataTypeName(ctx.DATETIME().getText());
dataType.setStartIndex(ctx.DATETIME().getSymbol().getStartIndex());
dataType.setStopIndex(ctx.DATETIME().getSymbol().getStopIndex());
if (null != ctx.typeDatetimePrecision()) {
dataType.setDataLength((DataTypeLengthSegment) visit(ctx.typeDatetimePrecision()));
}
result.getParameters().add(dataType);
}
return result;
}
@Override
public ASTNode visitCastType(final CastTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.castTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public ASTNode visitConvertFunction(final ConvertFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CONVERT().getText(), getOriginalText(ctx));
}
@Override
public ASTNode visitPositionFunction(final PositionFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.POSITION().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(0)));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(1)));
return result;
}
@Override
public ASTNode visitSubstringFunction(final SubstringFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(
ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null == ctx.SUBSTR() ? ctx.SUBSTRING().getText() : ctx.SUBSTR().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
for (TerminalNode each : ctx.NUMBER_()) {
result.getParameters().add(new LiteralExpressionSegment(each.getSymbol().getStartIndex(), each.getSymbol().getStopIndex(), new NumberLiteralValue(each.getText()).getValue()));
}
return result;
}
@Override
public ASTNode visitExtractFunction(final ExtractFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.EXTRACT().getText(), getOriginalText(ctx));
result.getParameters().add(new LiteralExpressionSegment(ctx.identifier().getStart().getStartIndex(), ctx.identifier().getStop().getStopIndex(), ctx.identifier().getText()));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
return result;
}
@Override
public ASTNode visitCharFunction(final CharFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CHAR().getText(), getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
ASTNode expr = visit(each);
result.getParameters().add((ExpressionSegment) expr);
}
return result;
}
@Override
public ASTNode visitTrimFunction(final TrimFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.TRIM().getText(), getOriginalText(ctx));
if (null != ctx.BOTH()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.BOTH().getSymbol().getStartIndex(), ctx.BOTH().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.BOTH().getSymbol().getText()).getValue()));
}
if (null != ctx.TRAILING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.TRAILING().getSymbol().getStartIndex(), ctx.TRAILING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.TRAILING().getSymbol().getText()).getValue()));
}
if (null != ctx.LEADING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.LEADING().getSymbol().getStartIndex(), ctx.LEADING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.LEADING().getSymbol().getText()).getValue()));
}
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWeightStringFunction(final WeightStringFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.WEIGHT_STRING().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
return result;
}
@Override
public ASTNode visitValuesFunction(final ValuesFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.VALUES().getText(), getOriginalText(ctx));
if (!ctx.columnRefList().columnRef().isEmpty()) {
ColumnSegment columnSegment = (ColumnSegment) visit(ctx.columnRefList().columnRef(0));
result.getParameters().add(columnSegment);
}
return result;
}
@Override
public ASTNode visitCurrentUserFunction(final CurrentUserFunctionContext ctx) {
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CURRENT_USER().getText(), getOriginalText(ctx));
}
@Override
public ASTNode visitRegularFunction(final RegularFunctionContext ctx) {
return null == ctx.completeRegularFunction() ? visit(ctx.shorthandRegularFunction()) : visit(ctx.completeRegularFunction());
}
@Override
public ASTNode visitCompleteRegularFunction(final CompleteRegularFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.regularFunctionName().getText(), getOriginalText(ctx));
Collection<ExpressionSegment> expressionSegments = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
result.getParameters().addAll(expressionSegments);
return result;
}
@Override
public ASTNode visitShorthandRegularFunction(final ShorthandRegularFunctionContext ctx) {
String text = getOriginalText(ctx);
FunctionSegment result;
if (null != ctx.CURRENT_TIME()) {
result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.CURRENT_TIME().getText(), text);
if (null != ctx.NUMBER_()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.NUMBER_().getSymbol().getStartIndex(), ctx.NUMBER_().getSymbol().getStopIndex(),
new NumberLiteralValue(ctx.NUMBER_().getText())));
}
} else {
result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), text);
}
return result;
}
@Override
public ASTNode visitCaseExpression(final CaseExpressionContext ctx) {
Collection<ExpressionSegment> whenExprs = new LinkedList<>();
Collection<ExpressionSegment> thenExprs = new LinkedList<>();
for (CaseWhenContext each : ctx.caseWhen()) {
whenExprs.add((ExpressionSegment) visit(each.expr(0)));
thenExprs.add((ExpressionSegment) visit(each.expr(1)));
}
ExpressionSegment caseExpr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr());
ExpressionSegment elseExpr = null == ctx.caseElse() ? null : (ExpressionSegment) visit(ctx.caseElse().expr());
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
public ASTNode visitVariable(final VariableContext ctx) {
return null == ctx.systemVariable() ? visit(ctx.userVariable()) : visit(ctx.systemVariable());
}
@Override
public ASTNode visitUserVariable(final UserVariableContext ctx) {
return new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.textOrIdentifier().getText());
}
@Override
public ASTNode visitSystemVariable(final SystemVariableContext ctx) {
VariableSegment result = new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.rvalueSystemVariable().getText());
if (null != ctx.systemVariableScope) {
result.setScope(ctx.systemVariableScope.getText());
}
return result;
}
@Override
public ASTNode visitMatchExpression(final MatchExpressionContext ctx) {
visit(ctx.expr());
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), text);
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection<ExprContext> exprContexts) {
for (ExprContext each : exprContexts) {
visit(each);
}
}
@Override
public ASTNode visitDataType(final DataTypeContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDCLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 123 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 123 |
public DorisDCLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitGrantRoleOrPrivilegeTo(final GrantRoleOrPrivilegeToContext ctx) {
MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
for (UsernameContext each : ctx.userList().username()) {
result.getUsers().add((UserSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitGrantRoleOrPrivilegeOnTo(final GrantRoleOrPrivilegeOnToContext ctx) {
MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
if (null == ctx.roleOrPrivileges()) {
result.setAllPrivileges(true);
} else {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
}
result.setLevel(generateGrantLevel(ctx.grantIdentifier()));
for (UsernameContext each : ctx.userList().username()) {
result.getUsers().add((UserSegment) visit(each));
}
if (null != ctx.aclType()) {
result.setAclObject(ctx.aclType().getText().toUpperCase());
}
return result;
}
@Override
public ASTNode visitGrantProxy(final GrantProxyContext ctx) {
MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
PrivilegeSegment privilege = new PrivilegeSegment(ctx.PROXY().getSymbol().getStartIndex(), ctx.PROXY().getSymbol().getStopIndex(), "GRANT");
result.getRoleOrPrivileges().add(new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege));
for (UsernameContext each : ctx.userList().username()) {
result.getUsers().add((UserSegment) visit(each));
}
return result;
}
private void fillRoleOrPrivileges(final MySQLGrantStatement statement, final RoleOrPrivilegesContext ctx) {
for (RoleOrPrivilegeContext each : ctx.roleOrPrivilege()) {
statement.getRoleOrPrivileges().add((RoleOrPrivilegeSegment) visit(each));
}
}
private void fillRoleOrPrivileges(final MySQLRevokeStatement statement, final RoleOrPrivilegesContext ctx) {
for (RoleOrPrivilegeContext each : ctx.roleOrPrivilege()) {
statement.getRoleOrPrivileges().add((RoleOrPrivilegeSegment) visit(each));
}
}
private GrantLevelSegment generateGrantLevel(final GrantIdentifierContext ctx) {
if (ctx instanceof GrantLevelGlobalContext) {
return new GrantLevelSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "*", "*");
}
if (ctx instanceof GrantLevelDatabaseGlobalContext) {
String databaseName = new IdentifierValue(((GrantLevelDatabaseGlobalContext) ctx).databaseName().getText()).getValue();
return new GrantLevelSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), databaseName, "*");
}
String databaseName = null;
String tableName;
if (null != ((GrantLevelTableContext) ctx).tableName().owner()) {
databaseName = new IdentifierValue(((GrantLevelTableContext) ctx).tableName().owner().getText()).getValue();
}
tableName = new IdentifierValue(((GrantLevelTableContext) ctx).tableName().name().getText()).getValue();
return new GrantLevelSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), databaseName, tableName);
}
@Override
public ASTNode visitRoleOrDynamicPrivilege(final RoleOrDynamicPrivilegeContext ctx) {
String role = new IdentifierValue(ctx.roleIdentifierOrText().getText()).getValue();
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), role, null, null);
}
@Override
public ASTNode visitRoleAtHost(final RoleAtHostContext ctx) {
String role = new IdentifierValue(ctx.roleIdentifierOrText().getText()).getValue();
String host = new IdentifierValue(ctx.textOrIdentifier().getText()).getValue();
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), role, host, null);
}
@Override
public ASTNode visitStaticPrivilegeSelect(final StaticPrivilegeSelectContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "SELECT");
if (null != ctx.columnNames()) {
for (ColumnNameContext each : ctx.columnNames().columnName()) {
privilege.getColumns().add(new IdentifierValue(each.getText()).getValue());
}
}
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeInsert(final StaticPrivilegeInsertContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "INSERT");
if (null != ctx.columnNames()) {
for (ColumnNameContext each : ctx.columnNames().columnName()) {
privilege.getColumns().add(new IdentifierValue(each.getText()).getValue());
}
}
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeUpdate(final StaticPrivilegeUpdateContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "UPDATE");
if (null != ctx.columnNames()) {
for (ColumnNameContext each : ctx.columnNames().columnName()) {
privilege.getColumns().add(new IdentifierValue(each.getText()).getValue());
}
}
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeReferences(final StaticPrivilegeReferencesContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "REFERENCES");
if (null != ctx.columnNames()) {
for (ColumnNameContext each : ctx.columnNames().columnName()) {
privilege.getColumns().add(new IdentifierValue(each.getText()).getValue());
}
}
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeDelete(final StaticPrivilegeDeleteContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "DELETE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeUsage(final StaticPrivilegeUsageContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "USAGE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeIndex(final StaticPrivilegeIndexContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "INDEX");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeAlter(final StaticPrivilegeAlterContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "ALTER");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreate(final StaticPrivilegeCreateContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeDrop(final StaticPrivilegeDropContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "DROP");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeExecute(final StaticPrivilegeExecuteContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "EXECUTE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeReload(final StaticPrivilegeReloadContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "RELOAD");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeShutdown(final StaticPrivilegeShutdownContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "SHUTDOWN");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeProcess(final StaticPrivilegeProcessContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "PROCESS");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeFile(final StaticPrivilegeFileContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "FILE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeGrant(final StaticPrivilegeGrantContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "GRANT");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeShowDatabases(final StaticPrivilegeShowDatabasesContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "SHOW_DB");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeSuper(final StaticPrivilegeSuperContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "SUPER");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreateTemporaryTables(final StaticPrivilegeCreateTemporaryTablesContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE_TMP");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeLockTables(final StaticPrivilegeLockTablesContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "LOCK_TABLES");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeReplicationSlave(final StaticPrivilegeReplicationSlaveContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "REPL_SLAVE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeReplicationClient(final StaticPrivilegeReplicationClientContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "REPL_CLIENT");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreateView(final StaticPrivilegeCreateViewContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE_VIEW");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeShowView(final StaticPrivilegeShowViewContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "SHOW_VIEW");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreateRoutine(final StaticPrivilegeCreateRoutineContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE_PROC");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeAlterRoutine(final StaticPrivilegeAlterRoutineContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "ALTER_PROC");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreateUser(final StaticPrivilegeCreateUserContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE_USER");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeEvent(final StaticPrivilegeEventContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "EVENT");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeTrigger(final StaticPrivilegeTriggerContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "TRIGGER");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreateTablespace(final StaticPrivilegeCreateTablespaceContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE_TABLESPACE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeCreateRole(final StaticPrivilegeCreateRoleContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "CREATE_ROLE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitStaticPrivilegeDropRole(final StaticPrivilegeDropRoleContext ctx) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "DROP_ROLE");
return new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege);
}
@Override
public ASTNode visitRevokeFrom(final RevokeFromContext ctx) {
MySQLRevokeStatement result = new MySQLRevokeStatement(getDatabaseType());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
result.setAllPrivileges(true);
}
for (UsernameContext each : ctx.userList().username()) {
result.getFromUsers().add((UserSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitRevokeOnFrom(final RevokeOnFromContext ctx) {
MySQLRevokeStatement result = new MySQLRevokeStatement(getDatabaseType());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
result.setAllPrivileges(true);
} else if (null != ctx.PROXY()) {
PrivilegeSegment privilege = new PrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), "DROP_ROLE");
result.getRoleOrPrivileges().add(new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege));
result.setOnUser((UserSegment) visit(ctx.username()));
}
if (null != ctx.grantIdentifier()) {
result.setLevel(generateGrantLevel(ctx.grantIdentifier()));
}
for (UsernameContext each : ctx.userList().username()) {
result.getFromUsers().add((UserSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
MySQLCreateUserStatement result = new MySQLCreateUserStatement(getDatabaseType());
for (CreateUserEntryContext each : ctx.createUserList().createUserEntry()) {
result.getUsers().add((UserSegment) visit(each));
}
if (null != ctx.defaultRoleClause()) {
for (RoleNameContext each : ctx.defaultRoleClause().roleName()) {
result.getDefaultRoles().add(each.getText());
}
}
if (null != ctx.requireClause()) {
result.setTlsOptionSegment((TLSOptionSegment) visit(ctx.requireClause()));
}
if (null != ctx.connectOptions()) {
result.setUserResource((UserResourceSegment) visit(ctx.connectOptions()));
}
if (null != ctx.accountLockPasswordExpireOptions()) {
result.setPasswordOrLockOption((PasswordOrLockOptionSegment) visit(ctx.accountLockPasswordExpireOptions()));
}
return result;
}
@Override
public ASTNode visitRequireClause(final RequireClauseContext ctx) {
TLSOptionSegment result = new TLSOptionSegment();
if (null != ctx.NONE()) {
result.setType(SSLType.NONE);
} else if (null != ctx.X509()) {
result.setType(SSLType.X509);
} else if (null != ctx.SSL()) {
result.setType(SSLType.ANY);
} else {
result.setType(SSLType.SPECIFIED);
for (TlsOptionContext each : ctx.tlsOption()) {
if (null != each.SUBJECT()) {
result.setX509Subject(each.string_().getText());
} else if (null != each.ISSUER()) {
result.setX509Issuer(each.string_().getText());
} else if (null != each.CIPHER()) {
result.setX509Cipher(each.string_().getText());
}
}
}
return result;
}
@Override
public ASTNode visitConnectOptions(final ConnectOptionsContext ctx) {
UserResourceSegment result = new UserResourceSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
for (ConnectOptionContext each : ctx.connectOption()) {
if (null != each.MAX_QUERIES_PER_HOUR()) {
result.setSpecifiedLimits(UserResourceSpecifiedLimitType.QUERIES_PER_HOUR);
result.setQuestions(new NumberLiteralValue(each.NUMBER_().getText()).getValue().intValue());
}
if (null != each.MAX_UPDATES_PER_HOUR()) {
result.setSpecifiedLimits(UserResourceSpecifiedLimitType.UPDATES_PER_HOUR);
result.setUpdates(new NumberLiteralValue(each.NUMBER_().getText()).getValue().intValue());
}
if (null != each.MAX_CONNECTIONS_PER_HOUR()) {
result.setSpecifiedLimits(UserResourceSpecifiedLimitType.CONNECTIONS_PER_HOUR);
result.setConnPerHour(new NumberLiteralValue(each.NUMBER_().getText()).getValue().intValue());
}
if (null != each.MAX_USER_CONNECTIONS()) {
result.setSpecifiedLimits(UserResourceSpecifiedLimitType.USER_CONNECTIONS);
result.setUserConn(new NumberLiteralValue(each.NUMBER_().getText()).getValue().intValue());
}
}
return result;
}
@Override
public ASTNode visitCreateUserEntryNoOption(final CreateUserEntryNoOptionContext ctx) {
UserSegment result = (UserSegment) visit(ctx.username());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
return result;
}
@Override
public ASTNode visitCreateUserEntryIdentifiedBy(final CreateUserEntryIdentifiedByContext ctx) {
UserSegment result = (UserSegment) visit(ctx.username());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.string_()) {
result.setAuth(((StringLiteralValue) visit(ctx.string_())).getValue());
result.setHasPasswordGenerator(false);
result.setUsesIdentifiedByClause(true);
result.setDiscardOldPassword(false);
} else {
result.setHasPasswordGenerator(true);
result.setUsesIdentifiedByClause(true);
result.setDiscardOldPassword(false);
result.setUsesIdentifiedWithClause(false);
}
result.setRetainCurrentPassword(false);
return result;
}
@Override
public ASTNode visitCreateUserEntryIdentifiedWith(final CreateUserEntryIdentifiedWithContext ctx) {
UserSegment result = (UserSegment) visit(ctx.username());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.textOrIdentifier()) {
result.setPlugin(ctx.textOrIdentifier().getText());
result.setHasPasswordGenerator(false);
result.setUsesIdentifiedByClause(true);
result.setDiscardOldPassword(false);
result.setRetainCurrentPassword(false);
} else if (null != ctx.AS()) {
result.setPlugin(ctx.textOrIdentifier().getText());
result.setAuth(((StringLiteralValue) visit(ctx.string_())).getValue());
result.setHasPasswordGenerator(false);
result.setUsesIdentifiedByClause(true);
result.setDiscardOldPassword(false);
result.setRetainCurrentPassword(false);
} else if (null != ctx.BY() && null != ctx.string_()) {
result.setPlugin(ctx.textOrIdentifier().getText());
result.setAuth(((StringLiteralValue) visit(ctx.string_())).getValue());
result.setHasPasswordGenerator(false);
result.setUsesIdentifiedByClause(true);
result.setUsesIdentifiedWithClause(true);
result.setDiscardOldPassword(false);
result.setRetainCurrentPassword(false);
} else {
result.setPlugin(ctx.textOrIdentifier().getText());
result.setAuth(((StringLiteralValue) visit(ctx.string_())).getValue());
result.setHasPasswordGenerator(true);
result.setUsesIdentifiedByClause(true);
result.setUsesIdentifiedWithClause(true);
result.setDiscardOldPassword(false);
result.setRetainCurrentPassword(false);
}
return result;
}
@Override
public ASTNode visitAccountLockPasswordExpireOptions(final AccountLockPasswordExpireOptionsContext ctx) {
PasswordOrLockOptionSegment result = new PasswordOrLockOptionSegment();
for (AccountLockPasswordExpireOptionContext each : ctx.accountLockPasswordExpireOption()) {
fillAccountLockPasswordExpireOption(result, each);
}
return result;
}
private void fillAccountLockPasswordExpireOption(final PasswordOrLockOptionSegment segment, final AccountLockPasswordExpireOptionContext ctx) {
if (null != ctx.ACCOUNT()) {
fillAccountLock(segment, ctx);
} else if (null != ctx.PASSWORD() && null != ctx.EXPIRE()) {
fillPasswordExpire(segment, ctx);
} else if (null != ctx.PASSWORD() && null != ctx.HISTORY()) {
fillPasswordHistory(segment, ctx);
} else if (null != ctx.PASSWORD() && null != ctx.REUSE()) {
fillPasswordReuse(segment, ctx);
} else if (null != ctx.PASSWORD() && null != ctx.REQUIRE()) {
fillPasswordRequire(segment, ctx);
} else if (null != ctx.FAILED_LOGIN_ATTEMPTS()) {
segment.setUpdateFailedLoginAttempts(true);
segment.setFailedLoginAttempts(new NumberLiteralValue(ctx.NUMBER_().getText()).getValue().intValue());
} else {
if (null == ctx.UNBOUNDED()) {
segment.setUpdatePasswordLockTime(true);
segment.setPasswordLockTime(new NumberLiteralValue(ctx.NUMBER_().getText()).getValue().intValue());
} else {
segment.setUpdatePasswordLockTime(true);
segment.setPasswordLockTime(-1);
}
}
}
private void fillAccountLock(final PasswordOrLockOptionSegment segment, final AccountLockPasswordExpireOptionContext ctx) {
if (null == ctx.LOCK()) {
segment.setUpdateAccountLockedColumn(true);
segment.setAccountLocked(false);
} else {
segment.setUpdateAccountLockedColumn(true);
segment.setAccountLocked(true);
}
}
private void fillPasswordExpire(final PasswordOrLockOptionSegment segment, final AccountLockPasswordExpireOptionContext ctx) {
if (null != ctx.INTERVAL()) {
segment.setExpireAfterDays(new NumberLiteralValue(ctx.NUMBER_().getText()).getValue().intValue());
segment.setUpdatePasswordExpiredColumn(false);
segment.setUpdatePasswordExpiredFields(true);
segment.setUseDefaultPasswordLifeTime(false);
} else if (null != ctx.NEVER()) {
segment.setExpireAfterDays(0);
segment.setUpdatePasswordExpiredColumn(false);
segment.setUpdatePasswordExpiredFields(true);
segment.setUseDefaultPasswordLifeTime(false);
} else if (null != ctx.DEFAULT()) {
segment.setExpireAfterDays(0);
segment.setUpdatePasswordExpiredColumn(false);
segment.setUpdatePasswordExpiredFields(true);
segment.setUseDefaultPasswordLifeTime(true);
} else {
segment.setExpireAfterDays(0);
segment.setUpdatePasswordExpiredColumn(true);
segment.setUpdatePasswordExpiredFields(true);
segment.setUseDefaultPasswordLifeTime(true);
}
}
private void fillPasswordHistory(final PasswordOrLockOptionSegment segment, final AccountLockPasswordExpireOptionContext ctx) {
if (null == ctx.DEFAULT()) {
segment.setPasswordHistoryLength(new NumberLiteralValue(ctx.NUMBER_().getText()).getValue().intValue());
segment.setUpdatePasswordHistory(true);
segment.setUseDefaultPasswordHistory(false);
} else {
segment.setPasswordHistoryLength(0);
segment.setUpdatePasswordHistory(true);
segment.setUseDefaultPasswordHistory(true);
}
}
private void fillPasswordReuse(final PasswordOrLockOptionSegment segment, final AccountLockPasswordExpireOptionContext ctx) {
if (null == ctx.DEFAULT()) {
segment.setPasswordReuseInterval(new NumberLiteralValue(ctx.NUMBER_().getText()).getValue().intValue());
segment.setUpdatePasswordReuseInterval(true);
segment.setUseDefaultPasswordReuseInterval(false);
} else {
segment.setPasswordReuseInterval(0);
segment.setUpdatePasswordReuseInterval(true);
segment.setUseDefaultPasswordReuseInterval(true);
}
}
private void fillPasswordRequire(final PasswordOrLockOptionSegment segment, final AccountLockPasswordExpireOptionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 199 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 215 |
}
@Override
public final ASTNode visitViewName(final ViewNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier().getStart().getStartIndex(),
ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitOwner(final OwnerContext ctx) {
return new OwnerSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.identifier().IDENTIFIER_().getText(), ctx.getText());
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
return new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public ASTNode visitTableList(final TableListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitViewNames(final ViewNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) {
return createBinaryOperationExpression(ctx, "XOR");
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(),
ctx.NOT().getSymbol().getStopIndex()))).concat(" ");
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex())));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
if (null != ctx.MEMBER()) {
int startIndex = ctx.MEMBER().getSymbol().getStopIndex() + 5;
int endIndex = ctx.stop.getStopIndex() - 1;
String rightText = ctx.start.getInputStream().getText(new Interval(startIndex, endIndex));
ExpressionSegment right = new ExpressionProjectionSegment(startIndex, endIndex, rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "MEMBER OF";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.assignmentOperator()) {
return createAssignmentSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createAssignmentSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right = (ExpressionSegment) visit(ctx.predicate());
String operator = ctx.assignmentOperator().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
String operator;
if (null != ctx.ALL()) {
operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() + " ALL" : ctx.SAFE_EQ_().getText();
} else {
operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
}
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = new SubqueryExpressionSegment(new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()),
getOriginalText(ctx.subquery())));
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
if (null != ctx.REGEXP()) {
return createBinaryOperationExpressionFromRegexp(ctx);
}
if (null != ctx.RLIKE()) {
return createBinaryOperationExpressionFromRlike(ctx);
}
return visit(ctx.bitExpr(0));
}
private InExpression createInSegment(final PredicateContext ctx) {
boolean not = null != ctx.NOT();
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()),
getOriginalText(ctx.subquery())));
} else {
right = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ExprContext each : ctx.expr()) {
((ListExpression) right).getItems().add((ExpressionSegment) visit(each));
}
}
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
String operator;
ExpressionSegment right;
if (null != ctx.SOUNDS()) {
right = (ExpressionSegment) visit(ctx.bitExpr(1));
operator = "SOUNDS LIKE";
} else {
ListExpression listExpression = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
listExpression.getItems().add((ExpressionSegment) visit(each));
}
right = listExpression;
operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRegexp(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "REGEXP" : "NOT REGEXP";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRlike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "RLIKE" : "NOT RLIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr());
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.start.getStartIndex();
int stopIndex = ctx.stop.getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(
ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
return null == ctx.EXISTS() ? new SubqueryExpressionSegment(subquerySegment) : new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) {
return visit(ctx.intervalExpression());
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
ExpressionSegment expr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr(0));
return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()), expr);
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
}
if (null != ctx.matchExpression()) {
return visit(ctx.matchExpression());
}
if (null != ctx.notOperator()) {
ASTNode expression = visit(ctx.simpleExpr(0));
if (expression instanceof ExistsSubqueryExpression) {
((ExistsSubqueryExpression) expression).setNot(true);
return expression;
}
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 220 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 221 |
public abstract class OpenGaussStatementVisitor extends OpenGaussStatementParserBaseVisitor<ASTNode> {
private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
public final ASTNode visitParameterMarker(final ParameterMarkerContext ctx) {
if (null == ctx.DOLLAR_()) {
return new ParameterMarkerValue(parameterMarkerSegments.size(), ParameterMarkerType.QUESTION);
}
return new ParameterMarkerValue(new NumberLiteralValue(ctx.NUMBER_().getText()).getValue().intValue() - 1, ParameterMarkerType.DOLLAR);
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.NUMBER_().getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
UnreservedWordContext unreservedWord = ctx.unreservedWord();
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
ColumnSegment result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitAExpr(final AExprContext ctx) {
if (null != ctx.cExpr()) {
return visit(ctx.cExpr());
}
if (null != ctx.TYPE_CAST_()) {
return new TypeCastExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), (ExpressionSegment) visit(ctx.aExpr(0)), ctx.typeName().getText());
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.patternMatchingOperator()) {
return createPatternMatchingOperationSegment(ctx);
}
Optional<String> binaryOperator = findBinaryOperator(ctx);
if (binaryOperator.isPresent()) {
return createBinaryOperationSegment(ctx, binaryOperator.get());
}
super.visitAExpr(ctx);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), text);
}
private Optional<String> findBinaryOperator(final AExprContext ctx) {
if (null != ctx.IS()) {
return Optional.of(ctx.IS().getText());
}
if (null != ctx.ISNULL()) {
return Optional.of("IS");
}
if (1 == ctx.aExpr().size()) {
return Optional.empty();
}
if (null != ctx.comparisonOperator()) {
return Optional.of(ctx.comparisonOperator().getText());
}
if (null != ctx.andOperator()) {
return Optional.of(ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return Optional.of(ctx.orOperator().getText());
}
if (null != ctx.PLUS_()) {
return Optional.of(ctx.PLUS_().getText());
}
if (null != ctx.MINUS_()) {
return Optional.of(ctx.MINUS_().getText());
}
if (null != ctx.ASTERISK_()) {
return Optional.of(ctx.ASTERISK_().getText());
}
if (null != ctx.SLASH_()) {
return Optional.of(ctx.SLASH_().getText());
}
return Optional.empty();
}
private BinaryOperationExpression createPatternMatchingOperationSegment(final AExprContext ctx) {
String operator = getOriginalText(ctx.patternMatchingOperator()).toUpperCase();
ExpressionSegment left = (ExpressionSegment) visit(ctx.aExpr(0));
ListExpression right = new ListExpression(ctx.aExpr(1).start.getStartIndex(), ctx.aExpr().get(ctx.aExpr().size() - 1).stop.getStopIndex());
for (int i = 1; i < ctx.aExpr().size(); i++) {
right.getItems().add((ExpressionSegment) visit(ctx.aExpr().get(i)));
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationSegment(final AExprContext ctx, final String operator) {
if ("IS".equalsIgnoreCase(operator)) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.aExpr(0));
String rightText;
ExpressionSegment right;
if (null != ctx.IS()) {
rightText = ctx.start.getInputStream().getText(new Interval(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex())).trim();
right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
} else {
rightText = ctx.start.getInputStream().getText(new Interval(ctx.ISNULL().getSymbol().getStartIndex() + 2, ctx.stop.getStopIndex())).trim();
right = new LiteralExpressionSegment(ctx.ISNULL().getSymbol().getStartIndex() + 2, ctx.stop.getStopIndex(), rightText);
}
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, "IS",
ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex())));
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.aExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.aExpr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public ASTNode visitCExpr(final CExprContext ctx) {
if (null != ctx.columnref()) {
return visit(ctx.columnref());
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.aexprConst()) {
return visit(ctx.aexprConst());
}
if (null != ctx.aExpr()) {
return visit(ctx.aExpr());
}
if (null != ctx.funcExpr()) {
return visit(ctx.funcExpr());
}
if (null != ctx.selectWithParens()) {
return createSubqueryExpressionSegment(ctx);
}
if (null != ctx.caseExpr()) {
return visit(ctx.caseExpr());
}
super.visitCExpr(ctx);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new CommonExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), text);
}
private ExpressionSegment createSubqueryExpressionSegment(final CExprContext ctx) {
SubquerySegment subquerySegment = new SubquerySegment(ctx.selectWithParens().getStart().getStartIndex(),
ctx.selectWithParens().getStop().getStopIndex(), (SelectStatement) visit(ctx.selectWithParens()), getOriginalText(ctx.selectWithParens()));
if (null != ctx.EXISTS()) {
subquerySegment.getSelect().setSubqueryType(SubqueryType.EXISTS);
return new ExistsSubqueryExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
}
return new SubqueryExpressionSegment(subquerySegment);
}
@Override
public ASTNode visitCaseExpr(final CaseExprContext ctx) {
Collection<ExpressionSegment> whenExprs = new LinkedList<>();
Collection<ExpressionSegment> thenExprs = new LinkedList<>();
for (WhenClauseContext each : ctx.whenClauseList().whenClause()) {
whenExprs.add((ExpressionSegment) visit(each.aExpr(0)));
thenExprs.add((ExpressionSegment) visit(each.aExpr(1)));
}
ExpressionSegment caseExpr = null == ctx.caseArg() ? null : (ExpressionSegment) visit(ctx.caseArg().aExpr());
ExpressionSegment elseExpr = null == ctx.caseDefault() ? null : (ExpressionSegment) visit(ctx.caseDefault().aExpr());
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
public ASTNode visitFuncExpr(final FuncExprContext ctx) {
if (null != ctx.functionExprCommonSubexpr()) {
return visit(ctx.functionExprCommonSubexpr());
}
return visit(ctx.funcApplication());
}
@Override
public ASTNode visitFunctionExprCommonSubexpr(final FunctionExprCommonSubexprContext ctx) {
if (null != ctx.CAST()) {
return new TypeCastExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), (ExpressionSegment) visit(ctx.aExpr(0)), ctx.typeName().getText());
}
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getChild(0).getText(), getOriginalText(ctx));
Collection<ExpressionSegment> expressionSegments = getExpressionSegments(getTargetRuleContextFromParseTree(ctx, AExprContext.class));
if ("EXTRACT".equalsIgnoreCase(ctx.getChild(0).getText())) {
result.getParameters().add((ExpressionSegment) visit(getTargetRuleContextFromParseTree(ctx, ExtractArgContext.class).iterator().next()));
}
result.getParameters().addAll(expressionSegments);
return result;
}
@Override
public ASTNode visitExtractArg(final ExtractArgContext ctx) {
return new ExtractArgExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getChild(0).getText());
}
private <T extends ParseTree> Collection<T> getTargetRuleContextFromParseTree(final ParseTree parseTree, final Class<? extends T> clazz) {
Collection<T> result = new LinkedList<>();
for (int index = 0; index < parseTree.getChildCount(); index++) {
ParseTree child = parseTree.getChild(index);
if (clazz.isInstance(child)) {
result.add(clazz.cast(child));
} else {
result.addAll(getTargetRuleContextFromParseTree(child, clazz));
}
}
return result;
}
private Collection<ExpressionSegment> getExpressionSegments(final Collection<AExprContext> aExprContexts) {
Collection<ExpressionSegment> result = new LinkedList<>();
for (AExprContext each : aExprContexts) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitAexprConst(final AexprConstContext ctx) {
LiteralValue<?> value;
if (null != ctx.numberConst()) {
value = new NumberLiteralValue(ctx.numberConst().getText());
} else if (null != ctx.STRING_()) {
value = new StringLiteralValue(ctx.STRING_().getText());
} else if (null != ctx.FALSE()) {
value = new BooleanLiteralValue(ctx.FALSE().getText());
} else if (null != ctx.TRUE()) {
value = new BooleanLiteralValue(ctx.TRUE().getText());
} else if (null != ctx.NULL()) {
value = new NullLiteralValue(ctx.getText());
} else {
value = new OtherLiteralValue(ctx.getText());
}
if (null != ctx.constTypeName() || null != ctx.funcName() && null == ctx.LP_()) {
LiteralExpressionSegment expression = new LiteralExpressionSegment(ctx.STRING_().getSymbol().getStartIndex(), ctx.STRING_().getSymbol().getStopIndex(), value.getValue().toString());
String dataType = null == ctx.constTypeName() ? ctx.funcName().getText() : ctx.constTypeName().getText();
return new TypeCastExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), expression, dataType);
}
return SQLUtils.createLiteralExpression(value, ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitColumnref(final ColumnrefContext ctx) {
if (null != ctx.indirection()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 690 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 703 |
if (null != ctx.algorithmOptionAndLockOption()) {
if (null != ctx.algorithmOptionAndLockOption().alterAlgorithmOption()) {
result.setAlgorithmType((AlgorithmTypeSegment) visit(ctx.algorithmOptionAndLockOption().alterAlgorithmOption()));
}
if (null != ctx.algorithmOptionAndLockOption().alterLockOption()) {
result.setLockTable((LockTableSegment) visit(ctx.algorithmOptionAndLockOption().alterLockOption()));
}
}
return result;
}
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.getIndexes().add(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
if (null != ctx.algorithmOptionAndLockOption()) {
if (null != ctx.algorithmOptionAndLockOption().alterAlgorithmOption()) {
result.setAlgorithmType((AlgorithmTypeSegment) visit(ctx.algorithmOptionAndLockOption().alterAlgorithmOption()));
}
if (null != ctx.algorithmOptionAndLockOption().alterLockOption()) {
result.setLockTable((LockTableSegment) visit(ctx.algorithmOptionAndLockOption().alterLockOption()));
}
}
return result;
}
@Override
public ASTNode visitRenameIndex(final RenameIndexContext ctx) {
IndexSegment indexNameSegment = (IndexSegment) visitIndexName(ctx.indexName(0));
IndexSegment renameIndexName = (IndexSegment) visitIndexName(ctx.indexName(1));
return new RenameIndexDefinitionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), indexNameSegment, renameIndexName);
}
@Override
public ASTNode visitKeyParts(final KeyPartsContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
List<KeyPartContext> keyParts = ctx.keyPart();
for (KeyPartContext each : keyParts) {
if (null != each.columnName()) {
result.getValue().add((ColumnSegment) visit(each.columnName()));
}
}
return result;
}
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
CreateProcedureStatement result = new CreateProcedureStatement(getDatabaseType());
result.setProcedureName((FunctionNameSegment) visit(ctx.functionName()));
result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
return result;
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionNameSegment result = new FunctionNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
CreateFunctionStatement result = new CreateFunctionStatement(getDatabaseType());
result.setFunctionName((FunctionNameSegment) visit(ctx.functionName()));
result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitRoutineBody(final RoutineBodyContext ctx) {
RoutineBodySegment result = new RoutineBodySegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
CollectionValue<ValidStatementSegment> validStatements = null == ctx.simpleStatement()
? (CollectionValue<ValidStatementSegment>) visit(ctx.compoundStatement())
: (CollectionValue<ValidStatementSegment>) visit(ctx.simpleStatement());
result.getValidStatements().addAll(validStatements.getValue());
return result;
}
@Override
public ASTNode visitSimpleStatement(final SimpleStatementContext ctx) {
return visit(ctx.validStatement());
}
@Override
public ASTNode visitCompoundStatement(final CompoundStatementContext ctx) {
return visit(ctx.beginStatement());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitBeginStatement(final BeginStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
for (ValidStatementContext each : ctx.validStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(each));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitValidStatement(final ValidStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
ValidStatementSegment validStatement = createValidStatementSegment(ctx);
if (null != validStatement.getSqlStatement()) {
result.getValue().add(validStatement);
}
if (null != ctx.beginStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.beginStatement()));
}
if (null != ctx.flowControlStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.flowControlStatement()));
}
return result;
}
private ValidStatementSegment createValidStatementSegment(final ValidStatementContext ctx) {
ValidStatementSegment result = new ValidStatementSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
SQLStatement sqlStatement = null;
if (null != ctx.createTable()) {
sqlStatement = (CreateTableStatement) visit(ctx.createTable());
} else if (null != ctx.alterTable()) {
sqlStatement = (AlterTableStatement) visit(ctx.alterTable());
} else if (null != ctx.dropTable()) {
sqlStatement = (DropTableStatement) visit(ctx.dropTable());
} else if (null != ctx.truncateTable()) {
sqlStatement = (TruncateStatement) visit(ctx.truncateTable());
} else if (null != ctx.insert()) {
sqlStatement = (InsertStatement) visit(ctx.insert());
} else if (null != ctx.replace()) {
sqlStatement = (InsertStatement) visit(ctx.replace());
} else if (null != ctx.update()) {
sqlStatement = (UpdateStatement) visit(ctx.update());
} else if (null != ctx.delete()) {
sqlStatement = (DeleteStatement) visit(ctx.delete());
} else if (null != ctx.select()) {
sqlStatement = (SelectStatement) visit(ctx.select());
}
result.setSqlStatement(sqlStatement);
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitFlowControlStatement(final FlowControlStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
if (null != ctx.caseStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.caseStatement()));
}
if (null != ctx.ifStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.ifStatement()));
}
if (null != ctx.loopStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.loopStatement()));
}
if (null != ctx.repeatStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.repeatStatement()));
}
if (null != ctx.whileStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(ctx.whileStatement()));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCaseStatement(final CaseStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
for (ValidStatementContext each : ctx.validStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(each));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitIfStatement(final IfStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
for (ValidStatementContext each : ctx.validStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(each));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitLoopStatement(final LoopStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
for (ValidStatementContext each : ctx.validStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(each));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitRepeatStatement(final RepeatStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
for (ValidStatementContext each : ctx.validStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(each));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitWhileStatement(final WhileStatementContext ctx) {
CollectionValue<ValidStatementSegment> result = new CollectionValue<>();
for (ValidStatementContext each : ctx.validStatement()) {
result.combine((CollectionValue<ValidStatementSegment>) visit(each));
}
return result;
}
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
return new DropFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateEvent(final CreateEventContext ctx) {
return new MySQLCreateEventStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterEvent(final AlterEventContext ctx) {
return new MySQLAlterEventStatement(getDatabaseType());
}
@Override
public ASTNode visitDropEvent(final DropEventContext ctx) {
return new MySQLDropEventStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterInstance(final AlterInstanceContext ctx) {
return new MySQLAlterInstanceStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLogfileGroup(final CreateLogfileGroupContext ctx) {
return new MySQLCreateLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterLogfileGroup(final AlterLogfileGroupContext ctx) {
return new MySQLAlterLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLogfileGroup(final DropLogfileGroupContext ctx) {
return new MySQLDropLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateServer(final CreateServerContext ctx) {
return new CreateServerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterServer(final AlterServerContext ctx) {
return new AlterServerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropServer(final DropServerContext ctx) {
return new DropServerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
return new CreateTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
return new DropTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
return new CreateTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
if (null != ctx.alterTablespaceInnodb()) {
return visit(ctx.alterTablespaceInnodb());
} else {
return visit(ctx.alterTablespaceNdb());
}
}
@Override
public ASTNode visitAlterTablespaceInnodb(final AlterTablespaceInnodbContext ctx) {
return new AlterTablespaceStatement(
getDatabaseType(), null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTablespace ? null : createTablespaceSegment(ctx.renameTablespace));
}
@Override
public ASTNode visitAlterTablespaceNdb(final AlterTablespaceNdbContext ctx) {
return new AlterTablespaceStatement(
getDatabaseType(), null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTableSpace ? null : createTablespaceSegment(ctx.renameTableSpace));
}
private TablespaceSegment createTablespaceSegment(final IdentifierContext ctx) {
return new TablespaceSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx));
}
@Override
public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitPrepare(final PrepareContext ctx) {
return new PrepareStatement(getDatabaseType());
}
@Override
public ASTNode visitExecuteStmt(final ExecuteStmtContext ctx) {
return new ExecuteStatement(getDatabaseType());
}
@Override
public ASTNode visitDeallocate(final DeallocateContext ctx) {
return new DeallocateStatement(getDatabaseType());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 438 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 449 |
}
@Override
public ASTNode visitLoadIndexInfo(final LoadIndexInfoContext ctx) {
return new MySQLLoadIndexInfoStatement(getDatabaseType(), ctx.loadTableIndexList().stream().map(each -> (LoadTableIndexSegment) visit(each)).collect(Collectors.toList()));
}
@Override
public ASTNode visitLoadTableIndexList(final LoadTableIndexListContext ctx) {
LoadTableIndexSegment result = new LoadTableIndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.indexName()) {
for (IndexNameContext each : ctx.indexName()) {
result.getIndexes().add((IndexSegment) visitIndexName(each));
}
}
if (null != ctx.partitionList()) {
result.getPartitions().addAll(((CollectionValue<PartitionSegment>) visit(ctx.partitionList())).getValue());
}
return result;
}
@Override
public ASTNode visitInstallPlugin(final InstallPluginContext ctx) {
return new MySQLInstallPluginStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.pluginName())).getValue());
}
@Override
public ASTNode visitClone(final CloneContext ctx) {
return new MySQLCloneStatement(getDatabaseType(), (CloneActionSegment) visit(ctx.cloneAction()));
}
@Override
public ASTNode visitCloneAction(final CloneActionContext ctx) {
CloneActionSegment result = new CloneActionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
if (null != ctx.cloneInstance()) {
CloneInstanceContext cloneInstance = ctx.cloneInstance();
CloneInstanceSegment cloneInstanceSegment = new CloneInstanceSegment(cloneInstance.start.getStartIndex(), cloneInstance.stop.getStopIndex());
cloneInstanceSegment.setUsername(((StringLiteralValue) visitUsername(cloneInstance.username())).getValue());
cloneInstanceSegment.setHostname(((StringLiteralValue) visit(cloneInstance.hostname())).getValue());
cloneInstanceSegment.setPort(new NumberLiteralValue(cloneInstance.port().NUMBER_().getText()).getValue().intValue());
cloneInstanceSegment.setPassword(((StringLiteralValue) visit(ctx.string_())).getValue());
if (null != ctx.SSL() && null == ctx.NO()) {
cloneInstanceSegment.setSslRequired(true);
}
result.setCloneInstance(cloneInstanceSegment);
}
if (null != ctx.cloneDir()) {
result.setCloneDir(((StringLiteralValue) visit(ctx.cloneDir())).getValue());
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitOptimizeTable(final OptimizeTableContext ctx) {
return new MySQLOptimizeTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitUse(final UseContext ctx) {
return new MySQLUseStatement(getDatabaseType(), ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
return null == ctx.tableName()
? new ExplainStatement(getDatabaseType(), getExplainableSQLStatement(ctx).orElse(null))
: new MySQLDescribeStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx));
}
private Optional<SQLStatement> getExplainableSQLStatement(final ExplainContext ctx) {
if (null != ctx.explainableStatement()) {
return Optional.of((SQLStatement) visit(ctx.explainableStatement()));
}
if (null != ctx.select()) {
return Optional.of((SQLStatement) visit(ctx.select()));
}
if (null != ctx.delete()) {
return Optional.of((SQLStatement) visit(ctx.delete()));
}
if (null != ctx.update()) {
return Optional.of((SQLStatement) visit(ctx.update()));
}
if (null != ctx.insert()) {
return Optional.of((SQLStatement) visit(ctx.insert()));
}
return Optional.empty();
}
private ColumnSegment getColumnWildcard(final ExplainContext ctx) {
if (null != ctx.columnRef()) {
return (ColumnSegment) visit(ctx.columnRef());
}
if (null != ctx.textString()) {
return (ColumnSegment) visit(ctx.textString());
}
return null;
}
@Override
public ASTNode visitExplainableStatement(final ExplainableStatementContext ctx) {
if (null != ctx.select()) {
return visit(ctx.select());
}
if (null != ctx.delete()) {
return visit(ctx.delete());
}
if (null != ctx.insert()) {
return visit(ctx.insert());
}
if (null != ctx.replace()) {
return visit(ctx.replace());
}
return visit(ctx.update());
}
@Override
public ASTNode visitShowProcedureCode(final ShowProcedureCodeContext ctx) {
return new MySQLShowProcedureCodeStatement(getDatabaseType(), (FunctionSegment) visit(ctx.functionName()));
}
@Override
public ASTNode visitShowProfile(final ShowProfileContext ctx) {
return new MySQLShowProfileStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowProfiles(final ShowProfilesContext ctx) {
return new MySQLShowProfilesStatement(getDatabaseType());
}
@Override
public ASTNode visitShowDatabases(final ShowDatabasesContext ctx) {
MySQLShowDatabasesStatement result = new MySQLShowDatabasesStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowEvents(final ShowEventsContext ctx) {
MySQLShowEventsStatement result = new MySQLShowEventsStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowTables(final ShowTablesContext ctx) {
MySQLShowTablesStatement result = new MySQLShowTablesStatement(getDatabaseType(), null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()),
null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()), null != ctx.FULL());
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowTriggers(final ShowTriggersContext ctx) {
MySQLShowTriggersStatement result = new MySQLShowTriggersStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowWhereClause(final ShowWhereClauseContext ctx) {
return new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ExpressionSegment) visit(ctx.expr()));
}
@Override
public ASTNode visitShowTableStatus(final ShowTableStatusContext ctx) {
MySQLShowTableStatusStatement result = new MySQLShowTableStatusStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowColumns(final ShowColumnsContext ctx) {
MySQLShowColumnsStatement result = new MySQLShowColumnsStatement(getDatabaseType(), null == ctx.fromTable() ? null : ((FromTableSegment) visit(ctx.fromTable())).getTable(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowFilter(final ShowFilterContext ctx) {
ShowFilterSegment result = new ShowFilterSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.showLike()) {
result.setLike((ShowLikeSegment) visit(ctx.showLike()));
}
if (null != ctx.showWhereClause()) {
result.setWhere((WhereSegment) visit(ctx.showWhereClause()));
}
return result;
}
@Override
public ASTNode visitShowIndex(final ShowIndexContext ctx) {
return new MySQLShowIndexStatement(getDatabaseType(), null == ctx.fromTable() ? null : ((FromTableSegment) visitFromTable(ctx.fromTable())).getTable(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()));
}
@Override
public ASTNode visitShowCreateTable(final ShowCreateTableContext ctx) {
return new MySQLShowCreateTableStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitShowCreateTrigger(final ShowCreateTriggerContext ctx) {
return new MySQLShowCreateTriggerStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.triggerName())).getValue());
}
@Override
public ASTNode visitShowRelaylogEvent(final ShowRelaylogEventContext ctx) {
return new MySQLShowRelayLogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ((StringLiteralValue) visit(ctx.logName().stringLiterals().string_())).getValue(), | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 298 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 309 |
return new StringLiteralValue(ctx.getText());
}
@Override
public ASTNode visitString_(final String_Context ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public ASTNode visitTemporalLiterals(final TemporalLiteralsContext ctx) {
// TODO deal with TemporalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitViewName(final ViewNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier().getStart().getStartIndex(),
ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitOwner(final OwnerContext ctx) {
return new OwnerSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.identifier().IDENTIFIER_().getText(), ctx.getText());
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
return new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public ASTNode visitTableList(final TableListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitViewNames(final ViewNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) {
return createBinaryOperationExpression(ctx, "XOR");
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " ";
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
if (null != ctx.MEMBER()) {
int startIndex = ctx.MEMBER().getSymbol().getStopIndex() + 5;
int endIndex = ctx.stop.getStopIndex() - 1;
String rightText = ctx.start.getInputStream().getText(new Interval(startIndex, endIndex));
ExpressionSegment right = new ExpressionProjectionSegment(startIndex, endIndex, rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "MEMBER OF";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.assignmentOperator()) {
return createAssignmentSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createAssignmentSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right = (ExpressionSegment) visit(ctx.predicate());
String operator = ctx.assignmentOperator().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = new SubqueryExpressionSegment( | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1044 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1010 |
result.setProjections(new ProjectionsSegment(-1, -1));
}
if (null != ctx.intoClause()) {
result.setInto((TableSegment) visit(ctx.intoClause()));
}
if (null != ctx.fromClause()) {
TableSegment tableSegment = (TableSegment) visit(ctx.fromClause());
result.setFrom(tableSegment);
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
if (null != ctx.windowClause()) {
result.setWindow((WindowSegment) visit(ctx.windowClause()));
}
return result;
}
@Override
public ASTNode visitIntoClause(final IntoClauseContext ctx) {
return visit(ctx.optTempTableName().qualifiedName());
}
@Override
public ASTNode visitHavingClause(final HavingClauseContext ctx) {
ExpressionSegment expr = (ExpressionSegment) visit(ctx.aExpr());
return new HavingSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), expr);
}
@Override
public ASTNode visitWindowClause(final WindowClauseContext ctx) {
WindowSegment result = new WindowSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
appendWindowItems(ctx.windowDefinitionList(), result.getItemSegments());
return result;
}
private void appendWindowItems(final WindowDefinitionListContext ctx, final Collection<WindowItemSegment> windowItems) {
if (null != ctx.windowDefinitionList()) {
appendWindowItems(ctx.windowDefinitionList(), windowItems);
windowItems.add((WindowItemSegment) visit(ctx.windowDefinition()));
return;
}
windowItems.add((WindowItemSegment) visit(ctx.windowDefinition()));
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitWindowDefinition(final WindowDefinitionContext ctx) {
WindowItemSegment result = new WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.setWindowName(new IdentifierValue(ctx.colId().getText()));
if (null != ctx.windowSpecification().partitionClause()) {
CollectionValue<ExpressionSegment> value = (CollectionValue<ExpressionSegment>) visit(ctx.windowSpecification().partitionClause().exprList());
result.setPartitionListSegments(value.getValue());
}
if (null != ctx.windowSpecification().sortClause()) {
OrderBySegment orderBySegment = (OrderBySegment) visit(ctx.windowSpecification().sortClause());
result.setOrderBySegment(orderBySegment);
}
if (null != ctx.windowSpecification().frameClause()) {
result.setFrameClause(new CommonExpressionSegment(ctx.windowSpecification().frameClause().start.getStartIndex(), ctx.windowSpecification().frameClause().stop.getStopIndex(),
ctx.windowSpecification().frameClause().getText()));
}
return result;
}
@Override
public ASTNode visitGroupClause(final GroupClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (GroupByItemContext each : ctx.groupByList().groupByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new GroupBySegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), items);
}
@Override
public ASTNode visitGroupByItem(final GroupByItemContext ctx) {
if (null != ctx.aExpr()) {
ASTNode astNode = visit(ctx.aExpr());
if (astNode instanceof ColumnSegment) {
return new ColumnOrderByItemSegment((ColumnSegment) astNode, OrderDirection.ASC, null);
}
if (astNode instanceof LiteralExpressionSegment) {
LiteralExpressionSegment index = (LiteralExpressionSegment) astNode;
return new IndexOrderByItemSegment(index.getStartIndex(), index.getStopIndex(),
Integer.parseInt(index.getLiterals().toString()), OrderDirection.ASC, null);
}
return new ExpressionOrderByItemSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), OrderDirection.ASC, null, (ExpressionSegment) visit(ctx.aExpr()));
}
return new ExpressionOrderByItemSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), OrderDirection.ASC, null);
}
@Override
public ASTNode visitTargetList(final TargetListContext ctx) {
ProjectionsSegment result = new ProjectionsSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
if (null != ctx.targetList()) {
ProjectionsSegment projections = (ProjectionsSegment) visit(ctx.targetList());
result.getProjections().addAll(projections.getProjections());
}
ProjectionSegment projection = (ProjectionSegment) visit(ctx.targetEl());
result.getProjections().add(projection);
return result;
}
@Override
public ASTNode visitTargetEl(final TargetElContext ctx) {
ProjectionSegment result = createProjectionSegment(ctx, ctx.aExpr());
if (null != ctx.identifier()) {
((AliasAvailable) result).setAlias(new AliasSegment(ctx.identifier().start.getStartIndex(), ctx.identifier().stop.getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
}
return result;
}
private ProjectionSegment createProjectionSegment(final TargetElContext ctx, final AExprContext expr) {
if (null != ctx.ASTERISK_()) {
return new ShorthandProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
}
if (null != ctx.DOT_ASTERISK_()) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
result.setOwner(new OwnerSegment(ctx.colId().start.getStartIndex(), ctx.colId().stop.getStopIndex(), new IdentifierValue(ctx.colId().getText())));
return result;
}
if (null != ctx.aExpr()) {
ASTNode projection = visit(ctx.aExpr());
return createProjectionSegment(ctx, expr, projection);
}
return new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(expr), null);
}
private ProjectionSegment createProjectionSegment(final TargetElContext ctx, final AExprContext expr, final ASTNode projection) {
if (projection instanceof ColumnSegment) {
return new ColumnProjectionSegment((ColumnSegment) projection);
}
if (projection instanceof AggregationProjectionSegment) {
return (AggregationProjectionSegment) projection;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpression = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpression.getStartIndex(), subqueryExpression.getStopIndex()));
return new SubqueryProjectionSegment(subqueryExpression.getSubquery(), text);
}
if (projection instanceof ExpressionSegment) {
return new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(expr), (ExpressionSegment) projection);
}
return new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(expr), null);
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.fromList());
}
@Override
public ASTNode visitFromList(final FromListContext ctx) {
if (null != ctx.fromList()) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft((TableSegment) visit(ctx.fromList()));
result.setRight((TableSegment) visit(ctx.tableReference()));
result.setJoinType(JoinType.COMMA.name());
return result;
}
return visit(ctx.tableReference());
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
if (null != ctx.relationExpr()) {
return getSimpleTableSegment(ctx);
}
if (null != ctx.selectWithParens()) {
return getSubqueryTableSegment(ctx);
}
if (null != ctx.tableReference()) {
return getJoinTableSegment(ctx);
}
if (null != ctx.functionTable() && null != ctx.functionTable().functionExprWindowless() && null != ctx.functionTable().functionExprWindowless().funcApplication()) {
return getFunctionTableSegment(ctx);
}
// TODO deal with functionTable and xmlTable
return new SimpleTableSegment(new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue("not support")));
}
private SimpleTableSegment getSimpleTableSegment(final TableReferenceContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.relationExpr().qualifiedName());
if (null != ctx.aliasClause()) {
result.setAlias((AliasSegment) visit(ctx.aliasClause()));
}
return result;
}
private SubqueryTableSegment getSubqueryTableSegment(final TableReferenceContext ctx) {
SelectStatement select = (SelectStatement) visit(ctx.selectWithParens());
SubquerySegment subquery = new SubquerySegment(ctx.selectWithParens().start.getStartIndex(), ctx.selectWithParens().stop.getStopIndex(), select, getOriginalText(ctx.selectWithParens())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1868 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1906 |
}
// DORIS ADDED END
return result;
}
private JoinTableSegment generateJoinTableSourceFromEscapedTableReference(final TableReferenceContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft(tableSegment);
result.setJoinType(JoinType.COMMA.name());
result.setRight((TableSegment) visit(ctx));
return result;
}
@Override
public ASTNode visitEscapedTableReference(final EscapedTableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = null == ctx.tableFactor() ? (TableSegment) visit(ctx.escapedTableReference()) : (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
if (null != ctx.indexHintList()) {
ctx.indexHintList().indexHint().forEach(each -> result.getIndexHintSegments().add((IndexHintSegment) visit(each)));
}
return result;
}
if (null != ctx.expr()) {
ExpressionSegment exprSegment = (ExpressionSegment) visit(ctx.expr());
FunctionTableSegment result = new FunctionTableSegment(exprSegment.getStartIndex(), exprSegment.getStopIndex(), exprSegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setJoinType(getJoinType(ctx));
result.setNatural(null != ctx.naturalJoinType());
TableSegment right = null == ctx.tableFactor() ? (TableSegment) visit(ctx.tableReference()) : (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
return null == ctx.joinSpecification() ? result : visitJoinSpecification(ctx.joinSpecification(), result);
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.innerJoinType()) {
return JoinType.INNER.name();
}
if (null != ctx.outerJoinType()) {
return null == ctx.outerJoinType().LEFT() ? JoinType.RIGHT.name() : JoinType.LEFT.name();
}
if (null != ctx.naturalJoinType()) {
return getNaturalJoinType(ctx.naturalJoinType());
}
return JoinType.COMMA.name();
}
private String getNaturalJoinType(final NaturalJoinTypeContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
}
if (null != ctx.RIGHT()) {
return JoinType.RIGHT.name();
}
return JoinType.INNER.name();
}
private JoinTableSegment visitJoinSpecification(final JoinSpecificationContext ctx, final JoinTableSegment result) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
result.setCondition(condition);
}
if (null != ctx.USING()) {
result.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return result;
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) {
ASTNode segment = visit(ctx.expr());
return new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ExpressionSegment) segment);
}
@Override
public ASTNode visitGroupByClause(final GroupByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new GroupBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public ASTNode visitLimitClause(final LimitClauseContext ctx) {
if (null == ctx.limitOffset()) {
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null, (PaginationValueSegment) visit(ctx.limitRowCount()));
}
PaginationValueSegment rowCount;
PaginationValueSegment offset;
if (null != ctx.OFFSET()) {
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
offset = (PaginationValueSegment) visit(ctx.limitOffset());
} else {
offset = (PaginationValueSegment) visit(ctx.limitOffset());
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
}
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), offset, rowCount);
}
@Override
public ASTNode visitLimitRowCount(final LimitRowCountContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
parameterMarkerSegments.add(result);
return result;
}
@Override
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitLimitOffset(final LimitOffsetContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
parameterMarkerSegments.add(result);
return result;
}
@Override
public ASTNode visitCollateClause(final CollateClauseContext ctx) {
if (null != ctx.collationName()) {
return new LiteralExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.collationName().textOrIdentifier().getText());
}
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
parameterMarkerSegments.add(segment);
return segment;
}
@Override
public ASTNode visitEngineRef(final EngineRefContext ctx) {
return new EngineSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), SQLUtils.getExactlyValue(ctx.textOrIdentifier().getText()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 445 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 450 |
return Optional.of(new DropConstraintDefinitionSegment(alterListContext.getStart().getStartIndex(), alterListContext.getStop().getStopIndex(), constraint));
}
if (null == alterTableDrop.KEY() && null == alterTableDrop.keyOrIndex()) {
ColumnSegment column = new ColumnSegment(alterTableDrop.columnInternalRef.start.getStartIndex(), alterTableDrop.columnInternalRef.stop.getStopIndex(),
(IdentifierValue) visit(alterTableDrop.columnInternalRef));
return Optional.of(new DropColumnDefinitionSegment(alterTableDrop.getStart().getStartIndex(), alterTableDrop.getStop().getStopIndex(), Collections.singleton(column)));
}
if (null != alterTableDrop.keyOrIndex()) {
return Optional.of(
new DropIndexDefinitionSegment(alterListContext.getStart().getStartIndex(), alterListContext.getStop().getStopIndex(), (IndexSegment) visit(alterTableDrop.indexName())));
}
return Optional.empty();
}
@Override
public ASTNode visitAlterAlgorithmOption(final AlterAlgorithmOptionContext ctx) {
AlgorithmOption algorithmOption = null;
if (null != ctx.INSTANT()) {
algorithmOption = AlgorithmOption.INSTANT;
} else if (null != ctx.DEFAULT()) {
algorithmOption = AlgorithmOption.DEFAULT;
} else if (null != ctx.INPLACE()) {
algorithmOption = AlgorithmOption.INPLACE;
} else if (null != ctx.COPY()) {
algorithmOption = AlgorithmOption.COPY;
}
return new AlgorithmTypeSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), algorithmOption);
}
@Override
public ASTNode visitAlterLockOption(final AlterLockOptionContext ctx) {
LockTableOption lockOption = null;
if (null != ctx.DEFAULT()) {
lockOption = LockTableOption.DEFAULT;
} else if (null != ctx.NONE()) {
lockOption = LockTableOption.NONE;
} else if (null != ctx.SHARED()) {
lockOption = LockTableOption.SHARED;
} else if (null != ctx.EXCLUSIVE()) {
lockOption = LockTableOption.EXCLUSIVE;
}
return new LockTableSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), lockOption);
}
@Override
public ASTNode visitAlterConvert(final AlterConvertContext ctx) {
ConvertTableDefinitionSegment result = new ConvertTableDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (CharsetNameSegment) visit(ctx.charsetName()));
if (null != ctx.collateClause()) {
result.setCollateValue((SimpleExpressionSegment) visit(ctx.collateClause()));
}
return result;
}
@Override
public ASTNode visitCharsetName(final CharsetNameContext ctx) {
return new CharsetNameSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitAddTableConstraint(final AddTableConstraintContext ctx) {
return new AddConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintDefinitionSegment) visit(ctx.tableConstraintDef()));
}
@Override
public ASTNode visitAlterCheck(final AlterCheckContext ctx) {
return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
}
@Override
public ASTNode visitAlterRenameTable(final AlterRenameTableContext ctx) {
RenameTableDefinitionSegment result = new RenameTableDefinitionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
result.setRenameTable((SimpleTableSegment) visit(ctx.tableName()));
return result;
}
@Override
public ASTNode visitRenameTable(final RenameTableContext ctx) {
Collection<RenameTableDefinitionSegment> renameTables = new LinkedList<>();
for (int i = 0, len = ctx.tableName().size(); i < len; i += 2) {
TableNameContext tableName = ctx.tableName(i);
TableNameContext renameTableName = ctx.tableName(i + 1);
renameTables.add(createRenameTableDefinitionSegment(tableName, renameTableName));
}
return new RenameTableStatement(getDatabaseType(), renameTables);
}
private RenameTableDefinitionSegment createRenameTableDefinitionSegment(final TableNameContext tableName, final TableNameContext renameTableName) {
RenameTableDefinitionSegment result = new RenameTableDefinitionSegment(tableName.start.getStartIndex(), renameTableName.stop.getStopIndex());
result.setTable((SimpleTableSegment) visit(tableName));
result.setRenameTable((SimpleTableSegment) visit(renameTableName));
return result;
}
private ModifyColumnDefinitionSegment generateModifyColumnDefinitionSegment(final ModifyColumnContext ctx) {
ColumnSegment column = new ColumnSegment(ctx.columnInternalRef.start.getStartIndex(), ctx.columnInternalRef.stop.getStopIndex(), (IdentifierValue) visit(ctx.columnInternalRef));
ModifyColumnDefinitionSegment result = new ModifyColumnDefinitionSegment(
ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), generateColumnDefinitionSegment(column, ctx.fieldDefinition()));
if (null != ctx.place()) {
result.setColumnPosition((ColumnPositionSegment) visit(ctx.place()));
}
return result;
}
private ChangeColumnDefinitionSegment generateModifyColumnDefinitionSegment(final ChangeColumnContext ctx) {
ChangeColumnDefinitionSegment result = new ChangeColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ColumnDefinitionSegment) visit(ctx.columnDefinition()));
result.setPreviousColumn(new ColumnSegment(ctx.columnInternalRef.getStart().getStartIndex(), ctx.columnInternalRef.getStop().getStopIndex(),
new IdentifierValue(ctx.columnInternalRef.getText())));
if (null != ctx.place()) {
result.setColumnPosition((ColumnPositionSegment) visit(ctx.place()));
}
return result;
}
@Override
public ASTNode visitAddColumn(final AddColumnContext ctx) {
Collection<ColumnDefinitionSegment> columnDefinitions = new LinkedList<>();
if (null != ctx.columnDefinition()) {
columnDefinitions.add((ColumnDefinitionSegment) visit(ctx.columnDefinition()));
}
if (null != ctx.tableElementList()) {
for (TableElementContext each : ctx.tableElementList().tableElement()) {
if (null != each.columnDefinition()) {
columnDefinitions.add((ColumnDefinitionSegment) visit(each.columnDefinition()));
}
}
}
AddColumnDefinitionSegment result = new AddColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinitions);
if (null != ctx.place()) {
Preconditions.checkState(1 == columnDefinitions.size());
result.setColumnPosition((ColumnPositionSegment) visit(ctx.place()));
}
return result;
}
@Override
public ASTNode visitRenameColumn(final RenameColumnContext ctx) {
ColumnSegment oldColumnSegment = (ColumnSegment) visit(ctx.oldColumn());
ColumnSegment newColumnSegment = (ColumnSegment) visit(ctx.newColumn());
return new RenameColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), oldColumnSegment, newColumnSegment);
}
@Override
public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
ColumnSegment column = new ColumnSegment(ctx.column_name.start.getStartIndex(), ctx.column_name.stop.getStopIndex(), (IdentifierValue) visit(ctx.column_name));
DataTypeSegment dataTypeSegment = (DataTypeSegment) visit(ctx.fieldDefinition().dataType());
boolean isPrimaryKey = ctx.fieldDefinition().columnAttribute().stream().anyMatch(each -> null != each.KEY() && null == each.UNIQUE());
boolean isAutoIncrement = ctx.fieldDefinition().columnAttribute().stream().anyMatch(each -> null != each.AUTO_INCREMENT());
boolean isNotNull = ctx.fieldDefinition().columnAttribute().stream().anyMatch(each -> null != each.NOT() && null != each.NULL());
ColumnDefinitionSegment result = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataTypeSegment, isPrimaryKey, isNotNull, getText(ctx));
result.getReferencedTables().addAll(getReferencedTables(ctx));
result.setAutoIncrement(isAutoIncrement); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 651 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 662 |
return new MySQLShowRelayLogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ((StringLiteralValue) visit(ctx.logName().stringLiterals().string_())).getValue(),
null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitShowFunctionCode(final ShowFunctionCodeContext ctx) {
return new MySQLShowFunctionCodeStatement(getDatabaseType(), ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
}
@Override
public ASTNode visitShowGrants(final ShowGrantsContext ctx) {
return new MySQLShowGrantsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowMasterStatus(final ShowMasterStatusContext ctx) {
return new MySQLShowMasterStatusStatement(getDatabaseType());
}
@Override
public ASTNode visitShowSlaveHosts(final ShowSlaveHostsContext ctx) {
return new MySQLShowSlaveHostsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowReplicaStatus(final ShowReplicaStatusContext ctx) {
return new MySQLShowReplicaStatusStatement(getDatabaseType(), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitShowSlaveStatus(final ShowSlaveStatusContext ctx) {
return new MySQLShowSlaveStatusStatement(getDatabaseType(), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitCreateResourceGroup(final CreateResourceGroupContext ctx) {
return new MySQLCreateResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitBinlog(final BinlogContext ctx) {
return new MySQLBinlogStatement(getDatabaseType(), ((StringLiteralValue) visit(ctx.stringLiterals())).getValue());
}
@Override
public ASTNode visitFromTable(final FromTableContext ctx) {
FromTableSegment result = new FromTableSegment();
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
return result;
}
@Override
public ASTNode visitShowVariables(final ShowVariablesContext ctx) {
MySQLShowVariablesStatement result = new MySQLShowVariablesStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCharacterSet(final ShowCharacterSetContext ctx) {
MySQLShowCharacterSetStatement result = new MySQLShowCharacterSetStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCollation(final ShowCollationContext ctx) {
MySQLShowCollationStatement result = new MySQLShowCollationStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowFunctionStatus(final ShowFunctionStatusContext ctx) {
MySQLShowFunctionStatusStatement result = new MySQLShowFunctionStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowProcedureStatus(final ShowProcedureStatusContext ctx) {
MySQLShowProcedureStatusStatement result = new MySQLShowProcedureStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowOpenTables(final ShowOpenTablesContext ctx) {
MySQLShowOpenTablesStatement result = new MySQLShowOpenTablesStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowPlugins(final ShowPluginsContext ctx) {
return new MySQLShowPluginsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowPrivileges(final ShowPrivilegesContext ctx) {
return new MySQLShowPrivilegesStatement(getDatabaseType());
}
@Override
public ASTNode visitShutdown(final ShutdownContext ctx) {
return new MySQLShutdownStatement(getDatabaseType());
}
@Override
public ASTNode visitShowProcesslist(final ShowProcesslistContext ctx) {
return new MySQLShowProcessListStatement(getDatabaseType(), null != ctx.FULL());
}
@Override
public ASTNode visitShowCreateUser(final ShowCreateUserContext ctx) {
return new MySQLShowCreateUserStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.username())).getValue());
}
@Override
public ASTNode visitSetVariable(final SetVariableContext ctx) {
return new SetStatement(getDatabaseType(), getVariableAssigns(ctx.optionValueList()));
}
private List<VariableAssignSegment> getVariableAssigns(final OptionValueListContext ctx) {
List<VariableAssignSegment> result = new LinkedList<>();
result.add(null == ctx.optionValueNoOptionType() ? getVariableAssignSegment(ctx) : getVariableAssignSegment(ctx.optionValueNoOptionType()));
for (OptionValueContext each : ctx.optionValue()) {
result.add(getVariableAssignSegment(each));
}
return result;
}
private VariableAssignSegment getVariableAssignSegment(final OptionValueContext ctx) {
if (null != ctx.optionValueNoOptionType()) {
return getVariableAssignSegment(ctx.optionValueNoOptionType());
}
VariableSegment variable = new VariableSegment(
ctx.internalVariableName().start.getStartIndex(), ctx.internalVariableName().stop.getStopIndex(), ctx.internalVariableName().getText(), ctx.optionType().getText());
return new VariableAssignSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), variable, ctx.setExprOrDefault().getText());
}
private VariableAssignSegment getVariableAssignSegment(final OptionValueListContext ctx) {
VariableSegment variable = new VariableSegment(
ctx.internalVariableName().start.getStartIndex(), ctx.internalVariableName().stop.getStopIndex(), ctx.internalVariableName().getText(), ctx.optionType().getText());
return new VariableAssignSegment(ctx.start.getStartIndex(), ctx.setExprOrDefault().stop.getStopIndex(), variable, ctx.setExprOrDefault().getText());
}
private VariableAssignSegment getVariableAssignSegment(final OptionValueNoOptionTypeContext ctx) {
return new VariableAssignSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getVariableSegment(ctx), getAssignValue(ctx));
}
private VariableSegment getVariableSegment(final OptionValueNoOptionTypeContext ctx) {
if (null != ctx.NAMES()) {
// TODO Consider setting all three system variables: character_set_client, character_set_results, character_set_connection
return new VariableSegment(ctx.NAMES().getSymbol().getStartIndex(), ctx.NAMES().getSymbol().getStopIndex(), "character_set_client");
}
if (null != ctx.internalVariableName()) {
return new VariableSegment(ctx.internalVariableName().start.getStartIndex(), ctx.internalVariableName().stop.getStopIndex(), ctx.internalVariableName().getText());
}
if (null != ctx.userVariable()) {
return new VariableSegment(ctx.userVariable().start.getStartIndex(), ctx.userVariable().stop.getStopIndex(), ctx.userVariable().getText());
}
if (null != ctx.setSystemVariable()) {
VariableSegment result = new VariableSegment(
ctx.setSystemVariable().start.getStartIndex(), ctx.setSystemVariable().stop.getStopIndex(), ctx.setSystemVariable().internalVariableName().getText());
OptionTypeContext optionType = ctx.setSystemVariable().optionType();
result.setScope(null == optionType ? "SESSION" : optionType.getText());
return result;
}
return null;
}
private String getAssignValue(final OptionValueNoOptionTypeContext ctx) {
if (null != ctx.NAMES()) {
return ctx.charsetName().getText();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 321 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 249 |
return result;
}
@Override
public ASTNode visitHavingClause(final HavingClauseContext ctx) {
ExpressionSegment expr = (ExpressionSegment) visit(ctx.expr());
return new HavingSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), expr);
}
private boolean isDistinct(final SelectSpecificationContext ctx) {
return ((BooleanLiteralValue) visit(ctx.duplicateSpecification())).getValue();
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
return new BooleanLiteralValue(null != ctx.DISTINCT());
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
QualifiedShorthandContext shorthand = ctx.qualifiedShorthand();
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierValue identifier = new IdentifierValue(shorthand.identifier().getText());
result.setOwner(new OwnerSegment(shorthand.identifier().getStart().getStartIndex(), shorthand.identifier().getStop().getStopIndex(), identifier));
return result;
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias());
if (null != ctx.columnName()) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
ColumnProjectionSegment result = new ColumnProjectionSegment(column);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias);
}
@Override
public ASTNode visitAlias(final AliasContext ctx) {
return null == ctx.identifier()
? new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.STRING_().getText()))
: new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias) {
ASTNode projection = visit(ctx.expr());
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
BinaryOperationExpression binaryExpression = (BinaryOperationExpression) projection;
int startIndex = binaryExpression.getStartIndex();
int stopIndex = null == alias ? binaryExpression.getStopIndex() : alias.getStopIndex();
ExpressionProjectionSegment result = new ExpressionProjectionSegment(startIndex, stopIndex, binaryExpression.getText(), binaryExpression);
result.setAlias(alias);
return result;
}
if (projection instanceof ParameterMarkerExpressionSegment) {
ParameterMarkerExpressionSegment result = (ParameterMarkerExpressionSegment) projection;
result.setAlias(alias);
return projection;
}
ExpressionSegment column = (ExpressionSegment) projection;
ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getText()), column)
: new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getText()), column);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.escapedTableReference(0));
if (ctx.escapedTableReference().size() > 1) {
for (int i = 1; i < ctx.escapedTableReference().size(); i++) {
result = generateJoinTableSourceFromEscapedTableReference(ctx.escapedTableReference(i), result);
}
}
return result;
}
private JoinTableSegment generateJoinTableSourceFromEscapedTableReference(final EscapedTableReferenceContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft(tableSegment);
result.setRight((TableSegment) visit(ctx));
result.setJoinType(JoinType.COMMA.name());
return result;
}
@Override
public ASTNode visitEscapedTableReference(final EscapedTableReferenceContext ctx) {
return visit(ctx.tableReference());
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = (TableSegment) visit(ctx.tableFactor());
if (!ctx.joinedTable().isEmpty()) {
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 243 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 241 |
public DorisDALStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitUninstallPlugin(final UninstallPluginContext ctx) {
return new MySQLUninstallPluginStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.pluginName())).getValue());
}
@Override
public ASTNode visitShowCreateDatabase(final ShowCreateDatabaseContext ctx) {
return new MySQLShowCreateDatabaseStatement(getDatabaseType(), ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
}
@Override
public ASTNode visitShowBinaryLogs(final ShowBinaryLogsContext ctx) {
return new MySQLShowBinaryLogsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowStatus(final ShowStatusContext ctx) {
MySQLShowStatusStatement result = new MySQLShowStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCreateView(final ShowCreateViewContext ctx) {
return new MySQLShowCreateViewStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitShowEngines(final ShowEnginesContext ctx) {
return new MySQLShowOtherStatement(getDatabaseType());
}
@Override
public ASTNode visitShowEngine(final ShowEngineContext ctx) {
return new MySQLShowEngineStatement(getDatabaseType(), ctx.engineRef().getText());
}
@Override
public ASTNode visitShowCharset(final ShowCharsetContext ctx) {
return new MySQLShowOtherStatement(getDatabaseType());
}
@Override
public ASTNode visitShowCreateEvent(final ShowCreateEventContext ctx) {
return new MySQLShowCreateEventStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.eventName())).getValue());
}
@Override
public ASTNode visitShowCreateFunction(final ShowCreateFunctionContext ctx) {
return new MySQLShowCreateFunctionStatement(getDatabaseType(), ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
}
@Override
public ASTNode visitShowCreateProcedure(final ShowCreateProcedureContext ctx) {
return new MySQLShowCreateProcedureStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.procedureName())).getValue());
}
@Override
public ASTNode visitShowBinlogEvents(final ShowBinlogEventsContext ctx) {
return new MySQLShowBinlogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ctx.logName().getText(),
null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowErrors(final ShowErrorsContext ctx) {
return new MySQLShowErrorsStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowWarnings(final ShowWarningsContext ctx) {
return new MySQLShowWarningsStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitResetStatement(final ResetStatementContext ctx) {
ResetPersistContext persistContext = ctx.resetPersist();
return null == persistContext
? new MySQLResetStatement(getDatabaseType(),
ctx.resetOption().stream().filter(each -> null != each.MASTER() || null != each.SLAVE()).map(each -> (ResetOptionSegment) visit(each)).collect(Collectors.toList()))
: visit(persistContext);
}
@Override
public ASTNode visitResetPersist(final ResetPersistContext ctx) {
return new MySQLResetPersistStatement(getDatabaseType(), null != ctx.ifExists(), null == ctx.identifier() ? null : new IdentifierValue(ctx.identifier().getText()));
}
@Override
public ASTNode visitResetOption(final ResetOptionContext ctx) {
if (null != ctx.MASTER()) {
ResetMasterOptionSegment result = new ResetMasterOptionSegment();
if (null != ctx.binaryLogFileIndexNumber()) {
result.setBinaryLogFileIndexNumber(((NumberLiteralValue) visit(ctx.binaryLogFileIndexNumber())).getValue().longValue());
}
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
return result;
}
ResetSlaveOptionSegment result = new ResetSlaveOptionSegment();
if (null != ctx.ALL()) {
result.setAll(true);
}
if (null != ctx.channelOption()) {
result.setChannelOption(((StringLiteralValue) visit(ctx.channelOption())).getValue());
}
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
return result;
}
@Override
public ASTNode visitChannelOption(final ChannelOptionContext ctx) {
return visit(ctx.string_());
}
@Override
public ASTNode visitBinaryLogFileIndexNumber(final BinaryLogFileIndexNumberContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public ASTNode visitShowReplicas(final ShowReplicasContext ctx) {
return new MySQLShowReplicasStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitRepairTable(final RepairTableContext ctx) {
return new MySQLRepairTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAnalyzeTable(final AnalyzeTableContext ctx) {
return new AnalyzeTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitCacheIndex(final CacheIndexContext ctx) {
IdentifierValue name = null == ctx.DEFAULT() ? (IdentifierValue) visit(ctx.identifier()) : new IdentifierValue(ctx.DEFAULT().getText());
Collection<CacheTableIndexSegment> tableIndexes = null == ctx.cacheTableIndexList()
? Collections.emptyList()
: ctx.cacheTableIndexList().stream().map(each -> (CacheTableIndexSegment) visit(each)).collect(Collectors.toList());
PartitionDefinitionSegment partitionDefinition = null == ctx.partitionList()
? null
: new PartitionDefinitionSegment(ctx.tableName().getStart().getStartIndex(), ctx.partitionList().getStop().getStopIndex(),
(SimpleTableSegment) visit(ctx.tableName()), ((CollectionValue<PartitionSegment>) visit(ctx.partitionList())).getValue());
return new MySQLCacheIndexStatement(getDatabaseType(), name, tableIndexes, partitionDefinition);
}
@Override
public ASTNode visitCacheTableIndexList(final CacheTableIndexListContext ctx) {
CacheTableIndexSegment result = new CacheTableIndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SimpleTableSegment) visit(ctx.tableName()));
for (IndexNameContext each : ctx.indexName()) {
result.getIndexes().add((IndexSegment) visitIndexName(each));
}
return result;
}
@Override
public ASTNode visitPartitionList(final PartitionListContext ctx) {
CollectionValue<PartitionSegment> result = new CollectionValue<>();
for (PartitionNameContext each : ctx.partitionName()) {
result.getValue().add((PartitionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitPartitionName(final PartitionNameContext ctx) {
return new PartitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitChecksumTable(final ChecksumTableContext ctx) {
return new MySQLChecksumTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitFlush(final FlushContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 616 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 638 |
return new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) {
return visit(ctx.intervalExpression());
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
ExpressionSegment expr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr(0));
return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()), expr);
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
}
if (null != ctx.matchExpression()) {
return visit(ctx.matchExpression());
}
if (null != ctx.notOperator()) {
ASTNode expression = visit(ctx.simpleExpr(0));
if (expression instanceof ExistsSubqueryExpression) {
((ExistsSubqueryExpression) expression).setNot(true);
return expression;
}
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) {
ASTNode result = visit(ctx.expr(0));
if (result instanceof ColumnSegment) {
((ColumnSegment) result).setLeftParentheses(new ParenthesesSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.LP_().getSymbol().getStopIndex(), ctx.LP_().getSymbol().getText()));
((ColumnSegment) result).setRightParentheses(new ParenthesesSegment(ctx.RP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), ctx.RP_().getSymbol().getText()));
}
return result;
}
if (null != ctx.VERTICAL_BAR_() && 2 == ctx.VERTICAL_BAR_().size()) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.simpleExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.simpleExpr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, ctx.VERTICAL_BAR_(0).getText() + ctx.VERTICAL_BAR_(1).getText(), text);
}
return visitRemainSimpleExpr(ctx);
}
@Override
public ASTNode visitColumnRef(final ColumnRefContext ctx) {
int identifierCount = ctx.identifier().size();
ColumnSegment result;
if (1 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(0)));
} else if (2 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
result.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
} else {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(2)));
OwnerSegment owner = new OwnerSegment(ctx.identifier(1).start.getStartIndex(), ctx.identifier(1).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
owner.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
result.setOwner(owner);
}
return result;
}
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) {
return visit(ctx.queryExpressionParens());
}
@Override
public ASTNode visitQueryExpressionParens(final QueryExpressionParensContext ctx) {
if (null != ctx.queryExpressionParens()) {
return visit(ctx.queryExpressionParens());
}
SelectStatement result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitLockClauseList(final LockClauseListContext ctx) {
LockSegment result = new LockSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (LockClauseContext each : ctx.lockClause()) {
if (null != each.tableLockingList()) {
result.getTables().addAll(generateTablesFromTableAliasRefList(each.tableLockingList().tableAliasRefList()));
}
}
return result;
}
@Override
public ASTNode visitQueryExpression(final QueryExpressionContext ctx) {
SelectStatement result;
if (null != ctx.queryExpressionBody()) {
result = (SelectStatement) visit(ctx.queryExpressionBody());
} else {
result = (SelectStatement) visit(ctx.queryExpressionParens());
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
if (null != result && null != ctx.withClause()) {
result.setWith((WithSegment) visit(ctx.withClause()));
}
return result;
}
@Override
public ASTNode visitSelectWithInto(final SelectWithIntoContext ctx) {
if (null != ctx.selectWithInto()) {
return visit(ctx.selectWithInto());
}
SelectStatement result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
return result;
}
@Override
public ASTNode visitWithClause(final WithClauseContext ctx) {
Collection<CommonTableExpressionSegment> commonTableExpressions = new LinkedList<>();
for (CteClauseContext each : ctx.cteClause()) {
commonTableExpressions.add((CommonTableExpressionSegment) visit(each));
}
return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 259 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 100 |
public abstract class DorisStatementVisitor extends DorisStatementBaseVisitor<ASTNode> {
private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
public final ASTNode visitParameterMarker(final ParameterMarkerContext ctx) {
return new ParameterMarkerValue(parameterMarkerSegments.size(), ParameterMarkerType.QUESTION);
}
@Override
public final ASTNode visitLiterals(final LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.temporalLiterals()) {
return visit(ctx.temporalLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public ASTNode visitString_(final String_Context ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public ASTNode visitTemporalLiterals(final TemporalLiteralsContext ctx) {
// TODO deal with TemporalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitViewName(final ViewNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier().getStart().getStartIndex(),
ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitOwner(final OwnerContext ctx) {
return new OwnerSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.identifier().IDENTIFIER_().getText(), ctx.getText());
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
return new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public ASTNode visitTableList(final TableListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitViewNames(final ViewNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) {
return createBinaryOperationExpression(ctx, "XOR");
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " "; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDMLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 63 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDMLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 69 |
public DorisDMLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitCall(final CallContext ctx) {
String procedureName = null == ctx.owner() ? ctx.identifier().getText() : ctx.owner().getText() + "." + ctx.identifier().getText();
List<ExpressionSegment> params = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
return new CallStatement(getDatabaseType(), procedureName, params);
}
@Override
public ASTNode visitDoStatement(final DoStatementContext ctx) {
return new DoStatement(getDatabaseType(), ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList()));
}
@Override
public ASTNode visitHandlerStatement(final HandlerStatementContext ctx) {
return new MySQLHandlerStatement(getDatabaseType());
}
@Override
public ASTNode visitImportStatement(final ImportStatementContext ctx) {
return new MySQLImportStatement(getDatabaseType());
}
@Override
public ASTNode visitLoadStatement(final LoadStatementContext ctx) {
return null == ctx.loadDataStatement() ? visit(ctx.loadXmlStatement()) : visit(ctx.loadDataStatement());
}
@Override
public ASTNode visitLoadDataStatement(final LoadDataStatementContext ctx) {
return new MySQLLoadDataStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitLoadXmlStatement(final LoadXmlStatementContext ctx) {
return new MySQLLoadXMLStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitIndexHint(final IndexHintContext ctx) {
Collection<String> indexNames = new LinkedList<>();
if (null != ctx.indexNameList()) {
ctx.indexNameList().indexName().forEach(each -> indexNames.add(each.getText()));
}
String useType;
if (null != ctx.USE()) {
useType = ctx.USE().getText();
} else if (null != ctx.IGNORE()) {
useType = ctx.IGNORE().getText();
} else {
useType = ctx.FORCE().getText();
}
IndexHintSegment result = new IndexHintSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), indexNames, useType,
null == ctx.INDEX() ? ctx.KEY().getText() : ctx.INDEX().getText(), getOriginalText(ctx));
if (null != ctx.indexHintClause().FOR()) {
String hintScope;
if (null != ctx.indexHintClause().JOIN()) {
hintScope = "JOIN";
} else if (null != ctx.indexHintClause().ORDER()) {
hintScope = "ORDER BY";
} else {
hintScope = "GROUP BY";
}
result.setHintScope(hintScope);
}
return result;
}
@Override
public ASTNode visitWindowClause(final WindowClauseContext ctx) {
WindowSegment result = new WindowSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (WindowItemContext each : ctx.windowItem()) {
result.getItemSegments().add((WindowItemSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWindowItem(final WindowItemContext ctx) {
WindowItemSegment result = new WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.setWindowName(new IdentifierValue(ctx.identifier().getText()));
WindowItemSegment windowItemSegment = (WindowItemSegment) visit(ctx.windowSpecification());
result.setPartitionListSegments(windowItemSegment.getPartitionListSegments());
result.setOrderBySegment(windowItemSegment.getOrderBySegment());
result.setFrameClause(windowItemSegment.getFrameClause());
return result;
}
@Override
public ASTNode visitWindowSpecification(final WindowSpecificationContext ctx) {
WindowItemSegment result = new WindowItemSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
if (null != ctx.PARTITION()) {
result.setPartitionListSegments(getExpressions(ctx.expr()));
}
if (null != ctx.orderByClause()) {
result.setOrderBySegment((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.frameClause()) {
result.setFrameClause(new CommonExpressionSegment(ctx.frameClause().start.getStartIndex(), ctx.frameClause().stop.getStopIndex(), ctx.frameClause().getText()));
}
if (null != ctx.identifier()) {
result.setWindowName(new IdentifierValue(ctx.identifier().getText()));
}
return result;
}
@Override
public ASTNode visitWindowFunction(final WindowFunctionContext ctx) {
super.visitWindowFunction(ctx);
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.funcName.getText(), getOriginalText(ctx));
if (null != ctx.NTILE()) {
result.getParameters().add((ExpressionSegment) visit(ctx.simpleExpr()));
}
if (null != ctx.LEAD() || null != ctx.LAG() || null != ctx.FIRST_VALUE() || null != ctx.LAST_VALUE()) {
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
}
if (null != ctx.NTH_VALUE()) {
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
result.getParameters().add((ExpressionSegment) visit(ctx.simpleExpr()));
}
result.setWindow((WindowItemSegment) visit(ctx.windowingClause()));
return result;
}
@Override
public ASTNode visitWindowingClause(final WindowingClauseContext ctx) {
WindowItemSegment result = new WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.windowName) {
result.setWindowName((IdentifierValue) visit(ctx.windowName));
}
if (null != ctx.windowSpecification()) {
WindowItemSegment windowItemSegment = (WindowItemSegment) visit(ctx.windowSpecification());
result.setPartitionListSegments(windowItemSegment.getPartitionListSegments());
result.setOrderBySegment(windowItemSegment.getOrderBySegment());
result.setFrameClause(windowItemSegment.getFrameClause());
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1369 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1102 |
owner.setOwner(new OwnerSegment(databaseIdentifier.getStart().getStartIndex(), databaseIdentifier.getStop().getStopIndex(), new IdentifierValue(databaseIdentifier.getText())));
}
return result;
}
@Override
public ASTNode visitAlias(final AliasContext ctx) {
return new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.textOrIdentifier().getText()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias, final ASTNode projection) {
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment functionSegment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(functionSegment.getStartIndex(), functionSegment.getStopIndex(), functionSegment.getText(), functionSegment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(subqueryExpressionSegment.getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
int startIndex = ((BinaryOperationExpression) projection).getStartIndex();
int stopIndex = null == alias ? ((BinaryOperationExpression) projection).getStopIndex() : alias.getStopIndex();
ExpressionProjectionSegment result = new ExpressionProjectionSegment(startIndex, stopIndex, ((BinaryOperationExpression) projection).getText(), (BinaryOperationExpression) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof ParameterMarkerExpressionSegment) {
ParameterMarkerExpressionSegment result = (ParameterMarkerExpressionSegment) projection;
result.setAlias(alias);
return projection;
}
if (projection instanceof CaseWhenExpression) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), (CaseWhenExpression) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof VariableSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), (VariableSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof BetweenExpression) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), (BetweenExpression) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof InExpression) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), (InExpression) projection);
result.setAlias(alias);
return result;
}
ExpressionSegment column = (ExpressionSegment) projection;
ExpressionProjectionSegment result = null == alias
? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getText()), column)
: new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getText()), column);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.tableReference(0));
if (ctx.tableReference().size() > 1) {
for (int i = 1; i < ctx.tableReference().size(); i++) {
result = generateJoinTableSourceFromEscapedTableReference(ctx.tableReference(i), result);
}
}
return result;
}
private JoinTableSegment generateJoinTableSourceFromEscapedTableReference(final TableReferenceContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft(tableSegment);
result.setJoinType(JoinType.COMMA.name());
result.setRight((TableSegment) visit(ctx));
return result;
}
@Override
public ASTNode visitEscapedTableReference(final EscapedTableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = null == ctx.tableFactor() ? (TableSegment) visit(ctx.escapedTableReference()) : (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 883 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 852 |
return new ColumnSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.getText()));
}
@Override
public ASTNode visitRelationExprOptAlias(final RelationExprOptAliasContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.relationExpr().qualifiedName());
if (null != ctx.colId()) {
result.setAlias(new AliasSegment(ctx.colId().start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.colId().getText())));
}
return result;
}
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
UpdateStatement result = new UpdateStatement(databaseType);
SimpleTableSegment tableSegment = (SimpleTableSegment) visit(ctx.relationExprOptAlias());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setClauseList()));
if (null != ctx.whereOrCurrentClause()) {
result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
}
if (null != ctx.fromClause()) {
result.setFrom((TableSegment) visit(ctx.fromClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetClauseList(final SetClauseListContext ctx) {
Collection<ColumnAssignmentSegment> assignments = generateAssignmentSegments(ctx);
return new SetAssignmentSegment(ctx.start.getStartIndex() - 4, ctx.stop.getStopIndex(), assignments);
}
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
DeleteStatement result = new DeleteStatement(databaseType);
SimpleTableSegment tableSegment = (SimpleTableSegment) visit(ctx.relationExprOptAlias());
result.setTable(tableSegment);
if (null != ctx.whereOrCurrentClause()) {
result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitWhereOrCurrentClause(final WhereOrCurrentClauseContext ctx) {
return visit(ctx.whereClause());
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
// TODO :Unsupported for withClause.
SelectStatement result = (SelectStatement) visit(ctx.selectNoParens());
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSelectNoParens(final SelectNoParensContext ctx) {
SelectStatement result = (SelectStatement) visit(ctx.selectClauseN());
if (null != ctx.sortClause()) {
OrderBySegment orderBySegment = (OrderBySegment) visit(ctx.sortClause());
result.setOrderBy(orderBySegment);
}
if (null != ctx.selectLimit()) {
LimitSegment limitSegment = (LimitSegment) visit(ctx.selectLimit());
result.setLimit(limitSegment);
}
if (null != ctx.forLockingClause()) {
LockSegment lockSegment = (LockSegment) visit(ctx.forLockingClause());
result.setLock(lockSegment);
}
if (null != ctx.withClause()) {
WithSegment withSegment = (WithSegment) visit(ctx.withClause());
result.setWith(withSegment);
}
return result;
}
@Override
public ASTNode visitWithClause(final WithClauseContext ctx) {
Collection<CommonTableExpressionSegment> commonTableExpressions = new LinkedList<>();
for (CommonTableExprContext each : ctx.cteList().commonTableExpr()) {
commonTableExpressions.add((CommonTableExpressionSegment) visit(each));
}
return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions, null != ctx.RECURSIVE());
}
@Override
public ASTNode visitCommonTableExpr(final CommonTableExprContext ctx) {
return new CommonTableExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (AliasSegment) visit(ctx.alias()),
new SubquerySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SelectStatement) visit(ctx.preparableStmt().select()),
getOriginalText(ctx.preparableStmt().select())));
}
@Override
public ASTNode visitAlias(final AliasContext ctx) {
return new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.identifier().getText()));
}
@Override
public ASTNode visitForLockingClause(final ForLockingClauseContext ctx) {
return new LockSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
}
@Override
public ASTNode visitSelectWithParens(final SelectWithParensContext ctx) {
if (null != ctx.selectWithParens()) {
return visit(ctx.selectWithParens());
}
return visit(ctx.selectNoParens());
}
@Override
public ASTNode visitSelectClauseN(final SelectClauseNContext ctx) {
if (null != ctx.simpleSelect()) {
return visit(ctx.simpleSelect());
}
if (null != ctx.selectClauseN() && !ctx.selectClauseN().isEmpty()) {
SelectStatement result = new SelectStatement(databaseType);
SelectStatement left = (SelectStatement) visit(ctx.selectClauseN(0));
result.setProjections(left.getProjections());
left.getFrom().ifPresent(result::setFrom);
CombineSegment combineSegment = new CombineSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
createSubquerySegment(ctx.selectClauseN(0), left), getCombineType(ctx), createSubquerySegment(ctx.selectClauseN(1), (SelectStatement) visit(ctx.selectClauseN(1))));
result.setCombine(combineSegment);
return result;
}
return visit(ctx.selectWithParens());
}
private SubquerySegment createSubquerySegment(final SelectClauseNContext ctx, final SelectStatement selectStatement) {
return new SubquerySegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), selectStatement, getOriginalText(ctx));
}
private CombineType getCombineType(final SelectClauseNContext ctx) {
boolean isDistinct = null == ctx.allOrDistinct() || null != ctx.allOrDistinct().DISTINCT();
if (null != ctx.UNION()) {
return isDistinct ? CombineType.UNION : CombineType.UNION_ALL;
}
if (null != ctx.INTERSECT()) {
return isDistinct ? CombineType.INTERSECT : CombineType.INTERSECT_ALL;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 139 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 309 |
return new StringLiteralValue(ctx.getText());
}
@Override
public ASTNode visitString_(final String_Context ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public ASTNode visitTemporalLiterals(final TemporalLiteralsContext ctx) {
// TODO deal with TemporalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitViewName(final ViewNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier().getStart().getStartIndex(),
ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitOwner(final OwnerContext ctx) {
return new OwnerSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.identifier().IDENTIFIER_().getText(), ctx.getText());
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
return new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public ASTNode visitTableList(final TableListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitViewNames(final ViewNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) {
return createBinaryOperationExpression(ctx, "XOR");
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 510 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 357 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 373 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
if (null != ctx.REGEXP()) {
return createBinaryOperationExpressionFromRegexp(ctx);
}
if (null != ctx.RLIKE()) {
return createBinaryOperationExpressionFromRlike(ctx);
}
return visit(ctx.bitExpr(0));
}
private InExpression createInSegment(final PredicateContext ctx) {
boolean not = null != ctx.NOT();
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
} else {
right = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ExprContext each : ctx.expr()) {
((ListExpression) right).getItems().add((ExpressionSegment) visit(each));
}
}
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
String operator;
ExpressionSegment right;
if (null != ctx.SOUNDS()) {
right = (ExpressionSegment) visit(ctx.bitExpr(1));
operator = "SOUNDS LIKE";
} else {
ListExpression listExpression = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
listExpression.getItems().add((ExpressionSegment) visit(each));
}
right = listExpression;
operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRegexp(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "REGEXP" : "NOT REGEXP";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRlike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "RLIKE" : "NOT RLIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr());
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.start.getStartIndex();
int stopIndex = ctx.stop.getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(
ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1520 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1256 |
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setJoinType(getJoinType(ctx));
result.setNatural(null != ctx.naturalJoinType());
TableSegment right = null == ctx.tableFactor() ? (TableSegment) visit(ctx.tableReference()) : (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
return null == ctx.joinSpecification() ? result : visitJoinSpecification(ctx.joinSpecification(), result);
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.innerJoinType()) {
return JoinType.INNER.name();
}
if (null != ctx.outerJoinType()) {
return null == ctx.outerJoinType().LEFT() ? JoinType.RIGHT.name() : JoinType.LEFT.name();
}
if (null != ctx.naturalJoinType()) {
return getNaturalJoinType(ctx.naturalJoinType());
}
return JoinType.COMMA.name();
}
private String getNaturalJoinType(final NaturalJoinTypeContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
} else if (null != ctx.RIGHT()) {
return JoinType.RIGHT.name();
} else {
return JoinType.INNER.name();
}
}
private JoinTableSegment visitJoinSpecification(final JoinSpecificationContext ctx, final JoinTableSegment result) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
result.setCondition(condition);
}
if (null != ctx.USING()) {
result.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return result;
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) {
ASTNode segment = visit(ctx.expr());
return new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ExpressionSegment) segment);
}
@Override
public ASTNode visitGroupByClause(final GroupByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new GroupBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public ASTNode visitLimitClause(final LimitClauseContext ctx) {
if (null == ctx.limitOffset()) {
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null, (PaginationValueSegment) visit(ctx.limitRowCount()));
}
PaginationValueSegment rowCount;
PaginationValueSegment offset;
if (null != ctx.OFFSET()) {
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
offset = (PaginationValueSegment) visit(ctx.limitOffset());
} else {
offset = (PaginationValueSegment) visit(ctx.limitOffset());
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
}
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), offset, rowCount);
}
@Override
public ASTNode visitLimitRowCount(final LimitRowCountContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
getParameterMarkerSegments().add(result);
return result;
}
@Override
public ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitLimitOffset(final LimitOffsetContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
getParameterMarkerSegments().add(result);
return result;
}
@Override
public ASTNode visitCollateClause(final CollateClauseContext ctx) {
if (null != ctx.collationName()) {
return new LiteralExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.collationName().textOrIdentifier().getText());
}
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
getParameterMarkerSegments().add(result);
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 512 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 534 |
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
if (null != ctx.REGEXP()) {
return createBinaryOperationExpressionFromRegexp(ctx);
}
if (null != ctx.RLIKE()) {
return createBinaryOperationExpressionFromRlike(ctx);
}
return visit(ctx.bitExpr(0));
}
private InExpression createInSegment(final PredicateContext ctx) {
boolean not = null != ctx.NOT();
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
} else {
right = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ExprContext each : ctx.expr()) {
((ListExpression) right).getItems().add((ExpressionSegment) visit(each));
}
}
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
String operator;
ExpressionSegment right;
if (null != ctx.SOUNDS()) {
right = (ExpressionSegment) visit(ctx.bitExpr(1));
operator = "SOUNDS LIKE";
} else {
ListExpression listExpression = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
listExpression.getItems().add((ExpressionSegment) visit(each));
}
right = listExpression;
operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRegexp(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "REGEXP" : "NOT REGEXP";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRlike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "RLIKE" : "NOT RLIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr());
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.start.getStartIndex();
int stopIndex = ctx.stop.getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(
ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
if (null == ctx.EXISTS()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 359 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 534 |
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
if (null != ctx.REGEXP()) {
return createBinaryOperationExpressionFromRegexp(ctx);
}
if (null != ctx.RLIKE()) {
return createBinaryOperationExpressionFromRlike(ctx);
}
return visit(ctx.bitExpr(0));
}
private InExpression createInSegment(final PredicateContext ctx) {
boolean not = null != ctx.NOT();
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()),
getOriginalText(ctx.subquery())));
} else {
right = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ExprContext each : ctx.expr()) {
((ListExpression) right).getItems().add((ExpressionSegment) visit(each));
}
}
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
String operator;
ExpressionSegment right;
if (null != ctx.SOUNDS()) {
right = (ExpressionSegment) visit(ctx.bitExpr(1));
operator = "SOUNDS LIKE";
} else {
ListExpression listExpression = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
listExpression.getItems().add((ExpressionSegment) visit(each));
}
right = listExpression;
operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRegexp(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "REGEXP" : "NOT REGEXP";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRlike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "RLIKE" : "NOT RLIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr());
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.start.getStartIndex();
int stopIndex = ctx.stop.getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(
ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 534 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 375 |
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
if (null != ctx.REGEXP()) {
return createBinaryOperationExpressionFromRegexp(ctx);
}
if (null != ctx.RLIKE()) {
return createBinaryOperationExpressionFromRlike(ctx);
}
return visit(ctx.bitExpr(0));
}
private InExpression createInSegment(final PredicateContext ctx) {
boolean not = null != ctx.NOT();
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
} else {
right = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ExprContext each : ctx.expr()) {
((ListExpression) right).getItems().add((ExpressionSegment) visit(each));
}
}
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
String operator;
ExpressionSegment right;
if (null != ctx.SOUNDS()) {
right = (ExpressionSegment) visit(ctx.bitExpr(1));
operator = "SOUNDS LIKE";
} else {
ListExpression listExpression = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
listExpression.getItems().add((ExpressionSegment) visit(each));
}
right = listExpression;
operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRegexp(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "REGEXP" : "NOT REGEXP";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BinaryOperationExpression createBinaryOperationExpressionFromRlike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bitExpr(1));
String operator = null == ctx.NOT() ? "RLIKE" : "NOT RLIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr());
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.start.getStartIndex();
int stopIndex = ctx.stop.getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(
ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 427 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 542 |
return new AlterDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitRenameTableSpecification(final RenameTableSpecificationContext ctx) {
RenameTableDefinitionSegment result = new RenameTableDefinitionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
TableNameSegment tableName = new TableNameSegment(ctx.identifier().start.getStartIndex(), ctx.identifier().stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
result.setRenameTable(new SimpleTableSegment(tableName));
return result;
}
@Override
public ASTNode visitAddColumnSpecification(final AddColumnSpecificationContext ctx) {
CollectionValue<AddColumnDefinitionSegment> result = new CollectionValue<>();
ColumnDefinitionContext columnDefinition = ctx.columnDefinition();
if (null != columnDefinition) {
AddColumnDefinitionSegment addColumnDefinition = new AddColumnDefinitionSegment(
ctx.columnDefinition().getStart().getStartIndex(), columnDefinition.getStop().getStopIndex(), Collections.singleton((ColumnDefinitionSegment) visit(columnDefinition)));
result.getValue().add(addColumnDefinition);
}
return result;
}
@Override
public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
DataTypeSegment dataType = (DataTypeSegment) visit(ctx.dataType());
boolean isPrimaryKey = ctx.columnConstraint().stream().anyMatch(each -> null != each.columnConstraintOption() && null != each.columnConstraintOption().primaryKey());
// TODO parse not null
ColumnDefinitionSegment result = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, isPrimaryKey, false, getText(ctx));
for (ColumnConstraintContext each : ctx.columnConstraint()) {
if (null != each.columnConstraintOption().tableName()) {
result.getReferencedTables().add((SimpleTableSegment) visit(each.columnConstraintOption().tableName()));
}
}
return result;
}
private String getText(final ParserRuleContext ctx) {
return ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}
@Override
public ASTNode visitTableConstraintUsingIndex(final TableConstraintUsingIndexContext ctx) {
ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.constraintName()) {
result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
}
if (null != ctx.indexName()) {
result.setIndexName((IndexSegment) visit(ctx.indexName()));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitTableConstraint(final TableConstraintContext ctx) {
ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.constraintClause()) {
result.setConstraintName((ConstraintSegment) visit(ctx.constraintClause().constraintName()));
}
if (null != ctx.tableConstraintOption().primaryKey()) {
result.getPrimaryKeyColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.tableConstraintOption().columnNames(0))).getValue());
}
if (null != ctx.tableConstraintOption().FOREIGN()) {
result.setReferencedTable((SimpleTableSegment) visit(ctx.tableConstraintOption().tableName()));
}
return result;
}
@Override
public ASTNode visitModifyColumnSpecification(final ModifyColumnSpecificationContext ctx) {
// TODO visit pk and table ref
ColumnSegment column = (ColumnSegment) visit(ctx.modifyColumn().columnName());
DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType());
ColumnDefinitionSegment columnDefinition = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, false, false, getText(ctx));
return new ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinition);
}
@Override
public ASTNode visitDropColumnSpecification(final DropColumnSpecificationContext ctx) {
return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), Collections.singleton((ColumnSegment) visit(ctx.columnName())));
}
@Override
public ASTNode visitRenameColumnSpecification(final RenameColumnSpecificationContext ctx) {
return new RenameColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ColumnSegment) visit(ctx.columnName(0)), (ColumnSegment) visit(ctx.columnName(1)));
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
boolean containsCascade = null != ctx.dropTableOpt() && null != ctx.dropTableOpt().CASCADE();
DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.setContainsCascade(containsCascade);
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
return new TruncateStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableNamesClause())).getValue());
}
@SuppressWarnings("unchecked") | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1317 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1354 |
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
public ASTNode visitVariable(final VariableContext ctx) {
return null == ctx.systemVariable() ? visit(ctx.userVariable()) : visit(ctx.systemVariable());
}
@Override
public ASTNode visitUserVariable(final UserVariableContext ctx) {
return new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.textOrIdentifier().getText());
}
@Override
public ASTNode visitSystemVariable(final SystemVariableContext ctx) {
VariableSegment result = new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.rvalueSystemVariable().getText());
if (null != ctx.systemVariableScope) {
result.setScope(ctx.systemVariableScope.getText());
}
return result;
}
@Override
public final ASTNode visitMatchExpression(final MatchExpressionContext ctx) {
ExpressionSegment expressionSegment = (ExpressionSegment) visit(ctx.expr());
MatchAgainstExpression result = new MatchAgainstExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), expressionSegment, getOriginalText(ctx.matchSearchModifier()),
getOriginalText(ctx));
for (ColumnRefContext each : ctx.columnRefList().columnRef()) {
result.getColumns().add((ColumnSegment) visit(each));
}
return result;
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection<ExprContext> exprContexts) {
for (ExprContext each : exprContexts) {
visit(each);
}
}
@Override
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.dataTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public ASTNode visitFieldLength(final FieldLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(new BigDecimal(ctx.length.getText()).intValue());
return result;
}
@Override
public ASTNode visitPrecision(final PrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
return result;
}
@Override
public ASTNode visitTypeDatetimePrecision(final TypeDatetimePrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(Integer.parseInt(ctx.NUMBER_().getText()));
return result;
}
@Override
public final ASTNode visitOrderByClause(final OrderByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new OrderBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public final ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection;
if (null != ctx.direction()) {
orderDirection = null == ctx.direction().DESC() ? OrderDirection.ASC : OrderDirection.DESC;
} else {
orderDirection = OrderDirection.ASC;
}
if (null != ctx.numberLiterals()) {
return new IndexOrderByItemSegment(ctx.numberLiterals().getStart().getStartIndex(), ctx.numberLiterals().getStop().getStopIndex(),
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
} else {
ASTNode expr = visitExpr(ctx.expr());
if (expr instanceof ColumnSegment) {
return new ColumnOrderByItemSegment((ColumnSegment) expr, orderDirection, null);
} else {
return new ExpressionOrderByItemSegment(ctx.expr().getStart().getStartIndex(),
ctx.expr().getStop().getStopIndex(), getOriginalText(ctx.expr()), orderDirection, null, (ExpressionSegment) expr);
}
}
}
@Override
public ASTNode visitInsert(final InsertContext ctx) {
// TODO :FIXME, since there is no segment for insertValuesClause, InsertStatement is created by sub rule.
InsertStatement result;
if (null != ctx.insertValuesClause()) {
result = (InsertStatement) visit(ctx.insertValuesClause());
} else if (null != ctx.insertSelectClause()) {
result = (InsertStatement) visit(ctx.insertSelectClause());
} else {
result = new InsertStatement(databaseType);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
}
if (null != ctx.onDuplicateKeyClause()) {
result.setOnDuplicateKeyColumns((OnDuplicateKeyColumnsSegment) visit(ctx.onDuplicateKeyClause()));
}
result.setTable((SimpleTableSegment) visit(ctx.tableName())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 246 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 492 |
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private ASTNode createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " ";
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = (ExpressionSegment) visit(ctx.subquery());
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
return visit(ctx.bitExpr(0));
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ListExpression right = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
right.getItems().add((ExpressionSegment) visit(each));
}
String operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private InExpression createInSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1242 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 975 |
result.getWhenAndThens().add(seg);
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSingleTableClause(final SingleTableClauseContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
@Override
public ASTNode visitMultipleTablesClause(final MultipleTablesClauseContext ctx) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
TableSegment relateTableSource = (TableSegment) visit(ctx.tableReferences());
result.setRelationTable(relateTableSource);
result.setActualDeleteTables(generateTablesFromTableAliasRefList(ctx.tableAliasRefList()));
return result;
}
private List<SimpleTableSegment> generateTablesFromTableAliasRefList(final TableAliasRefListContext ctx) {
List<SimpleTableSegment> result = new LinkedList<>();
for (TableIdentOptWildContext each : ctx.tableIdentOptWild()) {
result.add((SimpleTableSegment) visit(each.tableName()));
}
return result;
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
// TODO :Unsupported for withClause.
SelectStatement result;
if (null != ctx.queryExpression()) {
result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
} else if (null != ctx.selectWithInto()) {
result = (SelectStatement) visit(ctx.selectWithInto());
} else {
result = (SelectStatement) visit(ctx.getChild(0));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
private boolean isDistinct(final QuerySpecificationContext ctx) {
for (SelectSpecificationContext each : ctx.selectSpecification()) {
if (((BooleanLiteralValue) visit(each)).getValue()) {
return true;
}
}
return false;
}
@Override
public ASTNode visitSelectSpecification(final SelectSpecificationContext ctx) {
if (null != ctx.duplicateSpecification()) {
return visit(ctx.duplicateSpecification());
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
String text = ctx.getText();
if ("DISTINCT".equalsIgnoreCase(text) || "DISTINCTROW".equalsIgnoreCase(text)) {
return new BooleanLiteralValue(true);
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
return createShorthandProjection(ctx.qualifiedShorthand());
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias());
ASTNode exprProjection = visit(ctx.expr());
if (exprProjection instanceof ColumnSegment) {
ColumnProjectionSegment result = new ColumnProjectionSegment((ColumnSegment) exprProjection);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof SubquerySegment) {
SubquerySegment subquerySegment = (SubquerySegment) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(subquerySegment.getStartIndex(), subquerySegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof ExistsSubqueryExpression) {
ExistsSubqueryExpression existsSubqueryExpression = (ExistsSubqueryExpression) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(existsSubqueryExpression.getStartIndex(), existsSubqueryExpression.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((ExistsSubqueryExpression) exprProjection).getSubquery(), text);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias, exprProjection);
}
private ShorthandProjectionSegment createShorthandProjection(final QualifiedShorthandContext shorthand) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierContext identifier = shorthand.identifier().get(shorthand.identifier().size() - 1);
OwnerSegment owner = new OwnerSegment(identifier.getStart().getStartIndex(), identifier.getStop().getStopIndex(), new IdentifierValue(identifier.getText()));
result.setOwner(owner);
if (shorthand.identifier().size() > 1) {
IdentifierContext databaseIdentifier = shorthand.identifier().get(0); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 543 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 683 |
result.setIndex((IndexSegment) visit(ctx.indexName()));
}
return result;
}
@Override
public ASTNode visitIndexParams(final IndexParamsContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (IndexElemContext each : ctx.indexElem()) {
if (null != each.colId()) {
result.getValue().add(new ColumnSegment(each.colId().start.getStartIndex(), each.colId().stop.getStopIndex(), new IdentifierValue(each.colId().getText())));
}
if (null != each.functionExprWindowless()) {
FunctionSegment functionSegment = (FunctionSegment) visit(each.functionExprWindowless());
functionSegment.getParameters().forEach(param -> {
if (param instanceof ColumnSegment) {
result.getValue().add((ColumnSegment) param);
}
});
}
}
return result;
}
@Override
public ASTNode visitFunctionExprWindowless(final FunctionExprWindowlessContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.funcApplication().funcName().getText(), getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx.funcApplication().funcArgList().funcArgExpr()));
return result;
}
private Collection<ExpressionSegment> getExpressions(final Collection<FuncArgExprContext> aExprContexts) {
if (null == aExprContexts) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new ArrayList<>(aExprContexts.size());
for (FuncArgExprContext each : aExprContexts) {
result.add((ExpressionSegment) visit(each.aExpr()));
}
return result;
}
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
AlterIndexStatement result = new AlterIndexStatement(getDatabaseType());
result.setIndex(createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())));
if (null != ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
result.setRenameIndex((IndexSegment) visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
}
return result;
}
private IndexSegment createIndexSegment(final SimpleTableSegment tableSegment) {
IndexNameSegment indexName = new IndexNameSegment(tableSegment.getTableName().getStartIndex(), tableSegment.getTableName().getStopIndex(), tableSegment.getTableName().getIdentifier());
IndexSegment result = new IndexSegment(tableSegment.getStartIndex(), tableSegment.getStopIndex(), indexName);
tableSegment.getOwner().ifPresent(result::setOwner);
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getIndexes().addAll(createIndexSegments(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue()));
return result;
}
private Collection<IndexSegment> createIndexSegments(final Collection<SimpleTableSegment> tableSegments) {
Collection<IndexSegment> result = new LinkedList<>();
for (SimpleTableSegment each : tableSegments) {
result.add(createIndexSegment(each));
}
return result;
}
@Override
public ASTNode visitIndexNames(final IndexNamesContext ctx) {
CollectionValue<IndexSegment> result = new CollectionValue<>();
for (IndexNameContext each : ctx.indexName()) {
result.getValue().add((IndexSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitTableNameClause(final TableNameClauseContext ctx) {
return visit(ctx.tableName());
}
@Override
public ASTNode visitTableNamesClause(final TableNamesClauseContext ctx) {
Collection<SimpleTableSegment> tableSegments = new LinkedList<>();
for (int i = 0; i < ctx.tableNameClause().size(); i++) {
tableSegments.add((SimpleTableSegment) visit(ctx.tableNameClause(i)));
}
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
result.getValue().addAll(tableSegments);
return result;
}
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
return new CreateFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
return new CreateProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
return new DropFunctionStatement(getDatabaseType());
}
@SuppressWarnings("unchecked") | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 753 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 775 |
return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions);
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCteClause(final CteClauseContext ctx) {
CommonTableExpressionSegment result = new CommonTableExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (AliasSegment) visit(ctx.alias()),
new SubquerySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
if (null != ctx.columnNames()) {
CollectionValue<ColumnSegment> columns = (CollectionValue<ColumnSegment>) visit(ctx.columnNames());
result.getColumns().addAll(columns.getValue());
}
return result;
}
@Override
public ASTNode visitQueryExpressionBody(final QueryExpressionBodyContext ctx) {
if (1 == ctx.getChildCount() && ctx.getChild(0) instanceof QueryPrimaryContext) {
return visit(ctx.queryPrimary());
}
if (null != ctx.queryExpressionBody() && ctx.queryExpressionBody().size() > 1) {
SelectStatement result = new SelectStatement(databaseType);
SubquerySegment left = new SubquerySegment(ctx.queryExpressionBody(0).start.getStartIndex(), ctx.queryExpressionBody(0).stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionBody(0)), getOriginalText(ctx.queryExpressionBody(0)));
result.setProjections(left.getSelect().getProjections());
left.getSelect().getFrom().ifPresent(result::setFrom);
result.setCombine(createCombineSegment(ctx, left));
return result;
}
return visit(ctx.queryExpressionParens());
}
private CombineSegment createCombineSegment(final QueryExpressionBodyContext ctx, final SubquerySegment left) {
CombineType combineType;
if (null != ctx.EXCEPT()) {
combineType = null == ctx.combineOption() || null == ctx.combineOption().ALL() ? CombineType.EXCEPT : CombineType.EXCEPT_ALL;
} else if (null != ctx.INTERSECT()) {
combineType = null == ctx.combineOption() || null == ctx.combineOption().ALL() ? CombineType.INTERSECT : CombineType.INTERSECT_ALL;
} else {
combineType = null == ctx.combineOption() || null == ctx.combineOption().ALL() ? CombineType.UNION : CombineType.UNION_ALL;
}
ParserRuleContext ruleContext = ctx.queryExpressionBody(1);
SubquerySegment right = new SubquerySegment(ruleContext.start.getStartIndex(), ruleContext.stop.getStopIndex(), (SelectStatement) visit(ruleContext), getOriginalText(ruleContext));
return new CombineSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), left, combineType, right);
}
@Override
public ASTNode visitQuerySpecification(final QuerySpecificationContext ctx) {
SelectStatement result = new SelectStatement(databaseType);
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
}
if (null != ctx.fromClause()) {
if (null != ctx.fromClause().tableReferences()) {
TableSegment tableSource = (TableSegment) visit(ctx.fromClause().tableReferences());
result.setFrom(tableSource);
}
if (null != ctx.fromClause().DUAL()) {
TableSegment tableSource = new SimpleTableSegment(new TableNameSegment(ctx.fromClause().DUAL().getSymbol().getStartIndex(),
ctx.fromClause().DUAL().getSymbol().getStopIndex(), new IdentifierValue(ctx.fromClause().DUAL().getText())));
result.setFrom(tableSource);
}
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
if (null != ctx.windowClause()) {
result.setWindow((WindowSegment) visit(ctx.windowClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 605 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 602 |
new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), getDistinctExpression(ctx), separator);
result.getParameters().addAll(expressionSegments);
return result;
}
private String getDistinctExpression(final FuncApplicationContext ctx) {
StringBuilder result = new StringBuilder();
result.append(ctx.funcArgList().getText());
if (null != ctx.sortClause()) {
result.append(ctx.sortClause().getText());
}
return result.toString();
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
IdentifierContext identifierContext = ctx.identifier();
if (null != identifierContext) {
return new KeywordValue(identifierContext.getText());
}
Collection<String> dataTypeNames = new LinkedList<>();
for (int i = 0; i < ctx.getChildCount(); i++) {
dataTypeNames.add(ctx.getChild(i).getText());
}
return new KeywordValue(String.join(" ", dataTypeNames));
}
@Override
public final ASTNode visitSortClause(final SortClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (SortbyContext each : ctx.sortbyList().sortby()) {
items.add((OrderByItemSegment) visit(each));
}
return new OrderBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public final ASTNode visitSortby(final SortbyContext ctx) {
OrderDirection orderDirection = null == ctx.ascDesc() ? OrderDirection.ASC : generateOrderDirection(ctx.ascDesc());
NullsOrderType nullsOrderType = generateNullsOrderType(ctx.nullsOrder());
ASTNode expr = visit(ctx.aExpr());
if (expr instanceof ColumnSegment) {
ColumnSegment column = (ColumnSegment) expr;
return new ColumnOrderByItemSegment(column, orderDirection, nullsOrderType);
}
if (expr instanceof LiteralExpressionSegment) {
LiteralExpressionSegment index = (LiteralExpressionSegment) expr;
return new IndexOrderByItemSegment(index.getStartIndex(), index.getStopIndex(), Integer.parseInt(index.getLiterals().toString()), orderDirection, nullsOrderType);
}
if (expr instanceof ExpressionSegment) {
return new ExpressionOrderByItemSegment(ctx.aExpr().getStart().getStartIndex(),
ctx.aExpr().getStop().getStopIndex(), getOriginalText(ctx.aExpr()), orderDirection, nullsOrderType, (ExpressionSegment) expr);
}
return new ExpressionOrderByItemSegment(ctx.aExpr().getStart().getStartIndex(), ctx.aExpr().getStop().getStopIndex(), getOriginalText(ctx.aExpr()), orderDirection, nullsOrderType);
}
private NullsOrderType generateNullsOrderType(final NullsOrderContext ctx) {
if (null == ctx) {
return null;
}
return null == ctx.FIRST() ? NullsOrderType.LAST : NullsOrderType.FIRST;
}
private OrderDirection generateOrderDirection(final AscDescContext ctx) {
return null == ctx.DESC() ? OrderDirection.ASC : OrderDirection.DESC;
}
@Override
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(((KeywordValue) visit(ctx.dataTypeName())).getValue());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.dataTypeLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.dataTypeLength());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (1 == numbers.size()) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
}
if (2 == numbers.size()) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
}
@Override
public ASTNode visitInsert(final InsertContext ctx) {
// TODO :FIXME, since there is no segment for insertValuesClause, InsertStatement is created by sub rule.
// TODO :deal with insert select
InsertStatement result = (InsertStatement) visit(ctx.insertRest());
result.setTable((SimpleTableSegment) visit(ctx.insertTarget()));
if (null != ctx.optOnDuplicateKey()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 595 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 605 |
result.setAutoIncrement(isAutoIncrement);
return result;
}
private Collection<SimpleTableSegment> getReferencedTables(final ColumnDefinitionContext ctx) {
Collection<SimpleTableSegment> result = new LinkedList<>();
if (null != ctx.referenceDefinition()) {
result.add((SimpleTableSegment) visit(ctx.referenceDefinition()));
}
return result;
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitTableConstraintDef(final TableConstraintDefContext ctx) {
ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.constraintClause() && null != ctx.constraintClause().constraintName()) {
result.setConstraintName((ConstraintSegment) visit(ctx.constraintClause().constraintName()));
}
if (null != ctx.KEY() && null != ctx.PRIMARY()) {
result.setPrimaryKey(true);
result.getPrimaryKeyColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
return result;
}
if (null != ctx.FOREIGN()) {
result.setReferencedTable((SimpleTableSegment) visit(ctx.referenceDefinition()));
return result;
}
if (null != ctx.UNIQUE()) {
result.setUniqueKey(true);
result.getIndexColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
if (null != ctx.indexName()) {
result.setIndexName((IndexSegment) visit(ctx.indexName()));
}
return result;
}
if (null != ctx.checkConstraint()) {
return result;
}
result.getIndexColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
if (null != ctx.indexName()) {
result.setIndexName((IndexSegment) visit(ctx.indexName()));
}
return result;
}
@Override
public ASTNode visitKeyListWithExpression(final KeyListWithExpressionContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (KeyPartWithExpressionContext each : ctx.keyPartWithExpression()) {
if (null != each.keyPart()) {
result.getValue().add((ColumnSegment) visit(each.keyPart().columnName()));
}
}
return result;
}
@Override
public ASTNode visitReferenceDefinition(final ReferenceDefinitionContext ctx) {
return visit(ctx.tableName());
}
@Override
public ASTNode visitPlace(final PlaceContext ctx) {
ColumnSegment columnName = null;
if (null != ctx.columnName()) {
columnName = (ColumnSegment) visit(ctx.columnName());
}
return null == ctx.columnName()
? new ColumnFirstPositionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnName)
: new ColumnAfterPositionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnName);
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
return result;
}
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
return new TruncateStatement(getDatabaseType(), Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.setIndex(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
result.getColumns().addAll(((CollectionValue) visit(ctx.keyListWithExpression())).getValue());
if (null != ctx.algorithmOptionAndLockOption()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 524 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 525 |
if (null != ctx.indirection()) {
AttrNameContext attrName = ctx.indirection().indirectionEl().attrName();
ColumnSegment result = new ColumnSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(attrName.getText()));
OwnerSegment owner = new OwnerSegment(ctx.colId().start.getStartIndex(), ctx.colId().stop.getStopIndex(), new IdentifierValue(ctx.colId().getText()));
result.setOwner(owner);
return result;
}
return new ColumnSegment(ctx.colId().start.getStartIndex(), ctx.colId().stop.getStopIndex(), new IdentifierValue(ctx.colId().getText()));
}
private InExpression createInSegment(final AExprContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.aExpr(0));
ExpressionSegment right = createInExpressionSegment(ctx.inExpr());
boolean not = null != ctx.NOT();
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
@SuppressWarnings("unchecked")
private ExpressionSegment createInExpressionSegment(final InExprContext ctx) {
if (null != ctx.selectWithParens()) {
SelectStatement select = (SelectStatement) visit(ctx.selectWithParens());
SubquerySegment subquerySegment = new SubquerySegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), select, getOriginalText(ctx.selectWithParens()));
return new SubqueryExpressionSegment(subquerySegment);
}
ListExpression result = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
result.getItems().addAll(((CollectionValue<ExpressionSegment>) visit(ctx.exprList())).getValue());
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitExprList(final ExprListContext ctx) {
CollectionValue<ExpressionSegment> result = new CollectionValue<>();
if (null != ctx.exprList()) {
result.combine((CollectionValue<ExpressionSegment>) visitExprList(ctx.exprList()));
}
result.getValue().add((ExpressionSegment) visit(ctx.aExpr()));
return result;
}
private BetweenExpression createBetweenSegment(final AExprContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.aExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bExpr());
ExpressionSegment and = (ExpressionSegment) visit(ctx.aExpr(1));
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public ASTNode visitBExpr(final BExprContext ctx) {
if (null != ctx.cExpr()) {
return visit(ctx.cExpr());
}
if (null != ctx.TYPE_CAST_()) {
return new TypeCastExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), (ExpressionSegment) visit(ctx.bExpr(0)), ctx.typeName().getText());
}
if (null != ctx.qualOp()) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.bExpr(1));
String operator = ctx.qualOp().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
for (BExprContext each : ctx.bExpr()) {
visit(each);
}
return new LiteralExpressionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText());
}
private ProjectionSegment createAggregationSegment(final FuncApplicationContext ctx, final String aggregationType, final Collection<ExpressionSegment> expressionSegments) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 912 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 962 |
: new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx));
}
@Override
public final ASTNode visitJsonFunction(final JsonFunctionContext ctx) {
JsonFunctionNameContext functionNameContext = ctx.jsonFunctionName();
String functionName;
FunctionSegment result;
if (null != functionNameContext) {
functionName = functionNameContext.getText();
result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), functionName, getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
} else if (null != ctx.JSON_SEPARATOR()) {
result = createJsonSeparatorFunction(ctx.JSON_SEPARATOR().getText(), ctx);
} else if (null != ctx.JSON_UNQUOTED_SEPARATOR()) {
result = createJsonSeparatorFunction(ctx.JSON_UNQUOTED_SEPARATOR().getText(), ctx);
} else {
result = (FunctionSegment) visitJsonTableFunction(ctx.jsonTableFunction());
}
return result;
}
private FunctionSegment createJsonSeparatorFunction(final String functionName, final JsonFunctionContext ctx) {
FunctionSegment result;
result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), functionName, getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.columnRef()));
result.getParameters().add(new LiteralExpressionSegment(ctx.path().getStart().getStartIndex(), ctx.path().getStop().getStopIndex(), ctx.path().getText()));
return result;
}
@Override
public final ASTNode visitJsonTableFunction(final JsonTableFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.JSON_TABLE().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
result.getParameters().add(new LiteralExpressionSegment(ctx.path().getStart().getStartIndex(), ctx.path().getStop().getStopIndex(), getOriginalText(ctx.path())));
result.getParameters().add(new LiteralExpressionSegment(ctx.jsonTableColumns().getStart().getStartIndex(), ctx.jsonTableColumns().getStop().getStopIndex(),
getOriginalText(ctx.jsonTableColumns())));
return result;
}
private ASTNode createAggregationSegment(final AggregationFunctionContext ctx, final String aggregationType) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase());
String separator = null;
if (null != ctx.separatorName()) {
separator = new StringLiteralValue(ctx.separatorName().string_().getText()).getValue();
}
if (null != ctx.distinct()) {
AggregationDistinctProjectionSegment result =
new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), getDistinctExpression(ctx), separator);
result.getParameters().addAll(getExpressions(ctx.aggregationExpression().expr()));
return result;
}
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), separator);
result.getParameters().addAll(getExpressions(ctx.aggregationExpression().expr()));
return result;
}
protected Collection<ExpressionSegment> getExpressions(final List<ExprContext> exprList) {
if (null == exprList) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new ArrayList<>(exprList.size());
for (ExprContext each : exprList) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
return ctx.aggregationExpression().getText();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.groupConcatFunction()) {
return visit(ctx.groupConcatFunction());
}
if (null != ctx.windowFunction()) {
return visit(ctx.windowFunction());
}
// DORIS ADDED BEGIN
if (null != ctx.bitwiseFunction()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 358 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 215 |
}
@Override
public final ASTNode visitViewName(final ViewNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier().getStart().getStartIndex(),
ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitOwner(final OwnerContext ctx) {
return new OwnerSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.identifier().IDENTIFIER_().getText(), ctx.getText());
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
return new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public ASTNode visitTableList(final TableListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitViewNames(final ViewNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) {
return createBinaryOperationExpression(ctx, "XOR");
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " "; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 369 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 215 |
}
@Override
public final ASTNode visitViewName(final ViewNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier().getStart().getStartIndex(),
ctx.identifier().getStop().getStopIndex(), new IdentifierValue(ctx.identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner((OwnerSegment) visit(owner));
}
return result;
}
@Override
public final ASTNode visitOwner(final OwnerContext ctx) {
return new OwnerSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitFunctionName(final FunctionNameContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.identifier().IDENTIFIER_().getText(), ctx.getText());
if (null != ctx.owner()) {
result.setOwner((OwnerSegment) visit(ctx.owner()));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
return new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public ASTNode visitTableList(final TableListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitViewNames(final ViewNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) {
return createBinaryOperationExpression(ctx, "XOR");
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " "; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1163 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1191 |
}
return result;
}
@Override
public final ASTNode visitExtractFunction(final ExtractFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.EXTRACT().getText(), getOriginalText(ctx));
result.getParameters().add(new LiteralExpressionSegment(ctx.intervalUnit().getStart().getStartIndex(), ctx.intervalUnit().getStop().getStopIndex(), ctx.intervalUnit().getText()));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
return result;
}
@Override
public final ASTNode visitCharFunction(final CharFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CHAR().getText(), getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
ASTNode expr = visit(each);
result.getParameters().add((ExpressionSegment) expr);
}
return result;
}
@Override
public final ASTNode visitTrimFunction(final TrimFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.TRIM().getText(), getOriginalText(ctx));
if (null != ctx.BOTH()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.BOTH().getSymbol().getStartIndex(), ctx.BOTH().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.BOTH().getSymbol().getText()).getValue()));
}
if (null != ctx.TRAILING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.TRAILING().getSymbol().getStartIndex(), ctx.TRAILING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.TRAILING().getSymbol().getText()).getValue()));
}
if (null != ctx.LEADING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.LEADING().getSymbol().getStartIndex(), ctx.LEADING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.LEADING().getSymbol().getText()).getValue()));
}
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitWeightStringFunction(final WeightStringFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.WEIGHT_STRING().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
return result;
}
@Override
public final ASTNode visitValuesFunction(final ValuesFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.VALUES().getText(), getOriginalText(ctx));
if (!ctx.columnRefList().columnRef().isEmpty()) {
ColumnSegment columnSegment = (ColumnSegment) visit(ctx.columnRefList().columnRef(0));
result.getParameters().add(columnSegment);
}
return result;
}
@Override
public final ASTNode visitCurrentUserFunction(final CurrentUserFunctionContext ctx) {
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CURRENT_USER().getText(), getOriginalText(ctx));
}
@Override
public ASTNode visitTimeStampDiffFunction(final TimeStampDiffFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1084 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 852 |
}
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext ctx) {
Collection<ColumnAssignmentSegment> columns = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
columns.add((ColumnAssignmentSegment) visit(each));
}
return new OnDuplicateKeyColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
}
private List<ColumnSegment> createInsertColumns(final FieldsContext fields) {
List<ColumnSegment> result = new LinkedList<>();
for (InsertIdentifierContext each : fields.insertIdentifier()) {
result.add((ColumnSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
UpdateStatement result = new UpdateStatement(getDatabaseType());
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef());
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
return new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1638 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 962 |
DeleteStatement result = new DeleteStatement(databaseType);
if (null != ctx.multipleTablesClause()) {
result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
} else {
result.setTable((TableSegment) visit(ctx.singleTableClause()));
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSingleTableClause(final SingleTableClauseContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
@Override
public ASTNode visitMultipleTablesClause(final MultipleTablesClauseContext ctx) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
TableSegment relateTableSource = (TableSegment) visit(ctx.tableReferences());
result.setRelationTable(relateTableSource);
result.setActualDeleteTables(generateTablesFromTableAliasRefList(ctx.tableAliasRefList()));
return result;
}
private List<SimpleTableSegment> generateTablesFromTableAliasRefList(final TableAliasRefListContext ctx) {
List<SimpleTableSegment> result = new LinkedList<>();
for (TableIdentOptWildContext each : ctx.tableIdentOptWild()) {
result.add((SimpleTableSegment) visit(each.tableName()));
}
return result;
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
SelectStatement result;
if (null != ctx.queryExpression()) {
result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
} else if (null != ctx.selectWithInto()) {
result = (SelectStatement) visit(ctx.selectWithInto());
} else {
result = (SelectStatement) visit(ctx.getChild(0));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
private boolean isDistinct(final QuerySpecificationContext ctx) {
for (SelectSpecificationContext each : ctx.selectSpecification()) {
if (((BooleanLiteralValue) visit(each)).getValue()) {
return true;
}
}
return false;
}
@Override
public ASTNode visitSelectSpecification(final SelectSpecificationContext ctx) {
if (null != ctx.duplicateSpecification()) {
return visit(ctx.duplicateSpecification());
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
String text = ctx.getText();
if ("DISTINCT".equalsIgnoreCase(text) || "DISTINCTROW".equalsIgnoreCase(text)) {
return new BooleanLiteralValue(true);
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
return createShorthandProjection(ctx.qualifiedShorthand());
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 359 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 361 |
alterTableStatement.setLockTableSegment((LockTableSegment) alterDefinitionSegment);
}
}
private ColumnDefinitionSegment generateColumnDefinitionSegment(final ColumnSegment column, final FieldDefinitionContext ctx) {
DataTypeSegment dataTypeSegment = (DataTypeSegment) visit(ctx.dataType());
boolean isPrimaryKey = ctx.columnAttribute().stream().anyMatch(each -> null != each.KEY() && null == each.UNIQUE());
boolean isAutoIncrement = ctx.columnAttribute().stream().anyMatch(each -> null != each.AUTO_INCREMENT());
// TODO parse not null
ColumnDefinitionSegment result = new ColumnDefinitionSegment(column.getStartIndex(), ctx.getStop().getStopIndex(), column, dataTypeSegment, isPrimaryKey, false, getText(ctx));
result.setAutoIncrement(isAutoIncrement);
return result;
}
private String getText(final ParserRuleContext ctx) {
return ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}
@Override
public ASTNode visitAlterConstraint(final AlterConstraintContext ctx) {
return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
}
@Override
public ASTNode visitAlterList(final AlterListContext ctx) {
CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
if (ctx.alterListItem().isEmpty()) {
return result;
}
result.getValue().addAll(getAlterDefinitionSegments(ctx));
for (AlterCommandsModifierContext each : ctx.alterCommandsModifier()) {
if (null != each.alterAlgorithmOption()) {
result.getValue().add((AlgorithmTypeSegment) visit(each));
} else if (null != each.alterLockOption()) {
result.getValue().add((LockTableSegment) visit(each));
}
}
return result;
}
private Collection<AlterDefinitionSegment> getAlterDefinitionSegments(final AlterListContext ctx) {
Collection<AlterDefinitionSegment> result = new LinkedList<>();
for (AlterListItemContext each : ctx.alterListItem()) {
getAlterDefinitionSegment(ctx, each).ifPresent(result::add);
}
return result;
}
private Optional<AlterDefinitionSegment> getAlterDefinitionSegment(final AlterListContext alterListContext, final AlterListItemContext alterListItemContext) {
if (alterListItemContext instanceof AddColumnContext) {
return Optional.of((AddColumnDefinitionSegment) visit(alterListItemContext));
}
if (alterListItemContext instanceof AlterConstraintContext || alterListItemContext instanceof AlterCheckContext) {
return Optional.of((AlterDefinitionSegment) visit(alterListItemContext));
}
if (alterListItemContext instanceof ChangeColumnContext) {
return Optional.of(generateModifyColumnDefinitionSegment((ChangeColumnContext) alterListItemContext));
}
if (alterListItemContext instanceof ModifyColumnContext) {
return Optional.of(generateModifyColumnDefinitionSegment((ModifyColumnContext) alterListItemContext));
}
if (alterListItemContext instanceof AlterTableDropContext) {
return getDropItemDefinitionSegment(alterListContext, (AlterTableDropContext) alterListItemContext);
}
if (alterListItemContext instanceof AddTableConstraintContext) {
return Optional.of((AddConstraintDefinitionSegment) visit(alterListItemContext));
}
if (alterListItemContext instanceof AlterRenameTableContext) {
return Optional.of((RenameTableDefinitionSegment) visit(alterListItemContext));
}
if (alterListItemContext instanceof AlterConvertContext) {
return Optional.of((ConvertTableDefinitionSegment) visit(alterListItemContext));
}
if (alterListItemContext instanceof RenameColumnContext) {
return Optional.of((RenameColumnSegment) visit(alterListItemContext));
}
if (alterListItemContext instanceof RenameIndexContext) {
return Optional.of((RenameIndexDefinitionSegment) visit(alterListItemContext));
}
return Optional.empty();
}
private Optional<AlterDefinitionSegment> getDropItemDefinitionSegment(final AlterListContext alterListContext, final AlterTableDropContext alterTableDrop) {
if (null != alterTableDrop.CHECK() || null != alterTableDrop.CONSTRAINT()) {
ConstraintSegment constraint = new ConstraintSegment(alterTableDrop.identifier().getStart().getStartIndex(), alterTableDrop.identifier().getStop().getStopIndex(),
(IdentifierValue) visit(alterTableDrop.identifier()));
return Optional.of(new DropConstraintDefinitionSegment(alterListContext.getStart().getStartIndex(), alterListContext.getStop().getStopIndex(), constraint));
}
if (null == alterTableDrop.KEY() && null == alterTableDrop.keyOrIndex()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1654 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1705 |
return result;
}
@Override
public ASTNode visitSingleTableClause(final SingleTableClauseContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
@Override
public ASTNode visitMultipleTablesClause(final MultipleTablesClauseContext ctx) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
TableSegment relateTableSource = (TableSegment) visit(ctx.tableReferences());
result.setRelationTable(relateTableSource);
result.setActualDeleteTables(generateTablesFromTableAliasRefList(ctx.tableAliasRefList()));
return result;
}
private List<SimpleTableSegment> generateTablesFromTableAliasRefList(final TableAliasRefListContext ctx) {
List<SimpleTableSegment> result = new LinkedList<>();
for (TableIdentOptWildContext each : ctx.tableIdentOptWild()) {
result.add((SimpleTableSegment) visit(each.tableName()));
}
return result;
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
SelectStatement result;
if (null != ctx.queryExpression()) {
result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
} else if (null != ctx.selectWithInto()) {
result = (SelectStatement) visit(ctx.selectWithInto());
} else {
result = (SelectStatement) visit(ctx.getChild(0));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
private boolean isDistinct(final QuerySpecificationContext ctx) {
for (SelectSpecificationContext each : ctx.selectSpecification()) {
if (((BooleanLiteralValue) visit(each)).getValue()) {
return true;
}
}
return false;
}
@Override
public ASTNode visitSelectSpecification(final SelectSpecificationContext ctx) {
if (null != ctx.duplicateSpecification()) {
return visit(ctx.duplicateSpecification());
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
String text = ctx.getText();
if ("DISTINCT".equalsIgnoreCase(text) || "DISTINCTROW".equalsIgnoreCase(text)) {
return new BooleanLiteralValue(true);
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
return createShorthandProjection(ctx.qualifiedShorthand());
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias());
ExpressionSegment exprProjection = (ExpressionSegment) visit(ctx.expr());
if (exprProjection instanceof ColumnSegment) {
ColumnProjectionSegment result = new ColumnProjectionSegment((ColumnSegment) exprProjection);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof SubquerySegment) {
SubquerySegment subquerySegment = (SubquerySegment) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(subquerySegment.getStartIndex(), subquerySegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisTCLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 65 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLTCLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 65 |
public DorisTCLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
return new SetTransactionStatement(getDatabaseType(), getOperationScope(ctx.optionType()),
getTransactionIsolationLevel(null == ctx.transactionCharacteristics().isolationLevel() ? null : ctx.transactionCharacteristics().isolationLevel().isolationTypes()),
getTransactionAccessType(ctx.transactionCharacteristics().transactionAccessMode()));
}
private OperationScope getOperationScope(final OptionTypeContext ctx) {
if (null == ctx) {
return null;
}
if (null != ctx.SESSION()) {
return OperationScope.SESSION;
}
if (null != ctx.GLOBAL()) {
return OperationScope.GLOBAL;
}
return null;
}
private TransactionIsolationLevel getTransactionIsolationLevel(final IsolationTypesContext ctx) {
if (null == ctx) {
return null;
}
if (null != ctx.SERIALIZABLE()) {
return TransactionIsolationLevel.SERIALIZABLE;
}
if (null != ctx.COMMITTED()) {
return TransactionIsolationLevel.READ_COMMITTED;
}
if (null != ctx.UNCOMMITTED()) {
return TransactionIsolationLevel.READ_UNCOMMITTED;
}
if (null != ctx.REPEATABLE()) {
return TransactionIsolationLevel.REPEATABLE_READ;
}
return null;
}
private TransactionAccessType getTransactionAccessType(final TransactionAccessModeContext ctx) {
if (null == ctx) {
return null;
}
if (null != ctx.ONLY()) {
return TransactionAccessType.READ_ONLY;
}
if (null != ctx.WRITE()) {
return TransactionAccessType.READ_WRITE;
}
return null;
}
@Override
public ASTNode visitSetAutoCommit(final SetAutoCommitContext ctx) {
return new SetAutoCommitStatement(getDatabaseType(), generateAutoCommitSegment(ctx.autoCommitValue).isAutoCommit());
}
private AutoCommitSegment generateAutoCommitSegment(final Token ctx) {
boolean autoCommit = "1".equals(ctx.getText()) || "ON".equals(ctx.getText());
return new AutoCommitSegment(ctx.getStartIndex(), ctx.getStopIndex(), autoCommit);
}
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
return null == ctx.identifier() ? new RollbackStatement(getDatabaseType()) : new RollbackStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
return new SavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitReleaseSavepoint(final ReleaseSavepointContext ctx) {
return new ReleaseSavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitXaBegin(final XaBeginContext ctx) {
return new XABeginStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaPrepare(final XaPrepareContext ctx) {
return new XAPrepareStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaCommit(final XaCommitContext ctx) {
return new XACommitStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaRollback(final XaRollbackContext ctx) {
return new XARollbackStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaEnd(final XaEndContext ctx) {
return new XAEndStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaRecovery(final XaRecoveryContext ctx) {
return new XARecoveryStatement(getDatabaseType());
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 134 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 110 |
DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType());
boolean isPrimaryKey = ctx.dataTypeOption().stream().anyMatch(each -> null != each.primaryKey());
ColumnDefinitionSegment result = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, isPrimaryKey, false, getText(ctx));
for (DataTypeOptionContext each : ctx.dataTypeOption()) {
if (null != each.referenceDefinition()) {
result.getReferencedTables().add((SimpleTableSegment) visit(each.referenceDefinition().tableName()));
}
}
return result;
}
private String getText(final ParserRuleContext ctx) {
return ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}
@Override
public ASTNode visitCheckConstraintDefinition(final CheckConstraintDefinitionContext ctx) {
return new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
}
@Override
public ASTNode visitAddConstraintSpecification(final AddConstraintSpecificationContext ctx) {
return new AddConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintDefinitionSegment) visit(ctx.constraintDefinition()));
}
@Override
public ASTNode visitDropConstraintSpecification(final DropConstraintSpecificationContext ctx) {
return new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintDefinition().constraintName()));
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitConstraintDefinition(final ConstraintDefinitionContext ctx) {
ConstraintDefinitionSegment result = new ConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
if (null != ctx.constraintName()) {
result.setConstraintName((ConstraintSegment) visit(ctx.constraintName()));
}
if (null != ctx.primaryKeyOption()) {
result.getPrimaryKeyColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.primaryKeyOption().columnNames())).getValue());
}
if (null != ctx.foreignKeyOption()) {
result.setReferencedTable((SimpleTableSegment) visit(ctx.foreignKeyOption().referenceDefinition().tableName()));
}
return result;
}
@Override
public ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) {
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 311 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 295 |
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
return visit(ctx.bitExpr(0));
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ListExpression right = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
right.getItems().add((ExpressionSegment) visit(each));
}
String operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private InExpression createInSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()),
getOriginalText(ctx.subquery())));
} else {
ListExpression listExpression = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ExprContext each : ctx.expr()) {
listExpression.getItems().add((ExpressionSegment) visit(each));
}
right = listExpression;
}
boolean not = null != ctx.NOT();
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1523 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1570 |
return result;
}
@Override
public ASTNode visitReplaceSelectClause(final ReplaceSelectClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.setInsertSelect(createReplaceSelectSegment(ctx));
return result;
}
private SubquerySegment createReplaceSelectSegment(final ReplaceSelectClauseContext ctx) {
SelectStatement selectStatement = (SelectStatement) visit(ctx.select());
return new SubquerySegment(ctx.select().start.getStartIndex(), ctx.select().stop.getStopIndex(), selectStatement, getOriginalText(ctx.select()));
}
@Override
public ASTNode visitReplaceValuesClause(final ReplaceValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private List<ColumnSegment> createInsertColumns(final FieldsContext fields) {
List<ColumnSegment> result = new LinkedList<>();
for (InsertIdentifierContext each : fields.insertIdentifier()) {
result.add((ColumnSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
UpdateStatement result = new UpdateStatement(databaseType);
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 809 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 785 |
@Override
public ASTNode visitInsertColumnList(final InsertColumnListContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
if (null != ctx.insertColumnList()) {
result.getValue().addAll(((CollectionValue<ColumnSegment>) visit(ctx.insertColumnList())).getValue());
}
result.getValue().add((ColumnSegment) visit(ctx.insertColumnItem()));
return result;
}
@Override
public ASTNode visitInsertColumnItem(final InsertColumnItemContext ctx) {
if (null == ctx.optIndirection().indirectionEl()) {
return new ColumnSegment(ctx.colId().start.getStartIndex(), ctx.colId().stop.getStopIndex(), new IdentifierValue(ctx.colId().getText()));
}
ColumnSegment result = new ColumnSegment(
ctx.colId().start.getStartIndex(), ctx.optIndirection().stop.getStopIndex(), new IdentifierValue(ctx.optIndirection().indirectionEl().attrName().getText()));
result.setOwner(new OwnerSegment(ctx.colId().start.getStartIndex(), ctx.colId().stop.getStopIndex(), new IdentifierValue(ctx.colId().getText())));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final ValuesClauseContext ctx) {
Collection<InsertValuesSegment> result = new LinkedList<>();
if (null != ctx.valuesClause()) {
Collection<InsertValuesSegment> expressions = createInsertValuesSegments(ctx.valuesClause());
result.addAll(expressions);
}
Collection<ExpressionSegment> expressions = createInsertValuesSegments(ctx.exprList());
InsertValuesSegment insertValuesSegment = new InsertValuesSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), (List<ExpressionSegment>) expressions);
result.add(insertValuesSegment);
return result;
}
private Collection<ExpressionSegment> createInsertValuesSegments(final ExprListContext ctx) {
Collection<ExpressionSegment> result = new LinkedList<>();
if (null != ctx.exprList()) {
Collection<ExpressionSegment> tmpResult = createInsertValuesSegments(ctx.exprList());
result.addAll(tmpResult);
}
ExpressionSegment expr = (ExpressionSegment) visit(ctx.aExpr());
result.add(expr);
return result;
}
private Collection<ColumnAssignmentSegment> generateAssignmentSegments(final SetClauseListContext ctx) {
Collection<ColumnAssignmentSegment> result = new LinkedList<>();
if (null != ctx.setClauseList()) {
Collection<ColumnAssignmentSegment> tmpResult = generateAssignmentSegments(ctx.setClauseList());
result.addAll(tmpResult);
}
ColumnAssignmentSegment assignmentSegment = (ColumnAssignmentSegment) visit(ctx.setClause());
result.add(assignmentSegment);
return result;
}
@Override
public ASTNode visitSetClause(final SetClauseContext ctx) {
ColumnSegment columnSegment = (ColumnSegment) visit(ctx.setTarget());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(columnSegment);
ExpressionSegment expressionSegment = (ExpressionSegment) visit(ctx.aExpr());
return new ColumnAssignmentSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), columnSegments, expressionSegment);
}
@Override
public ASTNode visitSetTarget(final SetTargetContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1251 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1216 |
private JoinTableSegment getJoinTableSegment(final TableReferenceContext ctx) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft((TableSegment) visit(ctx.tableReference()));
int startIndex = null == ctx.LP_() ? ctx.tableReference().start.getStartIndex() : ctx.LP_().getSymbol().getStartIndex();
int stopIndex = 0;
AliasSegment alias = null;
if (null == ctx.aliasClause()) {
stopIndex = null == ctx.RP_() ? ctx.tableReference().start.getStopIndex() : ctx.RP_().getSymbol().getStopIndex();
} else {
alias = (AliasSegment) visit(ctx.aliasClause());
startIndex = null == ctx.RP_() ? ctx.joinedTable().stop.getStopIndex() : ctx.RP_().getSymbol().getStopIndex();
}
result.setStartIndex(startIndex);
result.setStopIndex(stopIndex);
visitJoinedTable(ctx.joinedTable(), result);
result.setAlias(alias);
return result;
}
private FunctionTableSegment getFunctionTableSegment(final TableReferenceContext ctx) {
FunctionSegment functionSegment = (FunctionSegment) visit(ctx.functionTable().functionExprWindowless().funcApplication());
return new FunctionTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), functionSegment);
}
@Override
public ASTNode visitFuncApplication(final FuncApplicationContext ctx) {
Collection<ExpressionSegment> expressionSegments = getExpressionSegments(getTargetRuleContextFromParseTree(ctx, AExprContext.class));
FuncNameContext funcNameContext = ctx.funcName();
String functionName = null == funcNameContext.typeFunctionName() ? funcNameContext.indirection().indirectionEl().attrName().getText() : funcNameContext.typeFunctionName().getText();
if (AggregationType.isAggregationType(functionName)) {
return createAggregationSegment(ctx, functionName, expressionSegments);
}
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), functionName, getOriginalText(ctx));
if (null != funcNameContext.colId()) {
result.setOwner(new OwnerSegment(funcNameContext.colId().start.getStartIndex(), funcNameContext.colId().stop.getStopIndex(), new IdentifierValue(funcNameContext.colId().getText())));
}
result.getParameters().addAll(expressionSegments);
return result;
}
private void visitJoinedTable(final JoinedTableContext ctx, final JoinTableSegment tableSegment) {
TableSegment right = (TableSegment) visit(ctx.tableReference());
tableSegment.setRight(right);
tableSegment.setJoinType(getJoinType(ctx));
tableSegment.setNatural(null != ctx.naturalJoinType());
if (null != ctx.joinQual()) {
visitJoinQual(ctx.joinQual(), tableSegment);
}
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.crossJoinType()) {
return JoinType.CROSS.name();
}
if (null != ctx.innerJoinType()) {
return JoinType.INNER.name();
}
if (null != ctx.outerJoinType()) {
return getOutJoinType(ctx.outerJoinType());
}
if (null != ctx.naturalJoinType()) {
return getNaturalJoinType(ctx.naturalJoinType());
}
return JoinType.COMMA.name();
}
private String getOutJoinType(final OuterJoinTypeContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1651 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1242 |
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSingleTableClause(final SingleTableClauseContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
@Override
public ASTNode visitMultipleTablesClause(final MultipleTablesClauseContext ctx) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
TableSegment relateTableSource = (TableSegment) visit(ctx.tableReferences());
result.setRelationTable(relateTableSource);
result.setActualDeleteTables(generateTablesFromTableAliasRefList(ctx.tableAliasRefList()));
return result;
}
private List<SimpleTableSegment> generateTablesFromTableAliasRefList(final TableAliasRefListContext ctx) {
List<SimpleTableSegment> result = new LinkedList<>();
for (TableIdentOptWildContext each : ctx.tableIdentOptWild()) {
result.add((SimpleTableSegment) visit(each.tableName()));
}
return result;
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
SelectStatement result;
if (null != ctx.queryExpression()) {
result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
} else if (null != ctx.selectWithInto()) {
result = (SelectStatement) visit(ctx.selectWithInto());
} else {
result = (SelectStatement) visit(ctx.getChild(0));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
private boolean isDistinct(final QuerySpecificationContext ctx) {
for (SelectSpecificationContext each : ctx.selectSpecification()) {
if (((BooleanLiteralValue) visit(each)).getValue()) {
return true;
}
}
return false;
}
@Override
public ASTNode visitSelectSpecification(final SelectSpecificationContext ctx) {
if (null != ctx.duplicateSpecification()) {
return visit(ctx.duplicateSpecification());
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
String text = ctx.getText();
if ("DISTINCT".equalsIgnoreCase(text) || "DISTINCTROW".equalsIgnoreCase(text)) {
return new BooleanLiteralValue(true);
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
return createShorthandProjection(ctx.qualifiedShorthand());
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 93 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 98 |
variableAssigns.add(variableAssignSegment);
}
return new SetStatement(getDatabaseType(), variableAssigns);
}
@Override
public ASTNode visitConfigurationParameterClause(final ConfigurationParameterClauseContext ctx) {
return new VariableAssignSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
new VariableSegment(ctx.varName().start.getStartIndex(), ctx.varName().stop.getStopIndex(), ctx.varName().getText()), getAssignValue(ctx));
}
private String getAssignValue(final ConfigurationParameterClauseContext ctx) {
if (null != ctx.varList()) {
return ctx.varList().getText();
}
if (null != ctx.DEFAULT()) {
return ctx.DEFAULT().getText();
}
return null;
}
@Override
public ASTNode visitResetParameter(final ResetParameterContext ctx) {
return new PostgreSQLResetParameterStatement(getDatabaseType(), null == ctx.ALL() ? ctx.identifier().getText() : "ALL");
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAnalyzeTable(final AnalyzeTableContext ctx) {
return new AnalyzeTableStatement(getDatabaseType(),
null == ctx.vacuumRelationList() ? Collections.emptyList() : ((CollectionValue<SimpleTableSegment>) visit(ctx.vacuumRelationList())).getValue());
}
@Override
public ASTNode visitVacuumRelationList(final VacuumRelationListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (VacuumRelationContext each : ctx.vacuumRelation()) {
ColIdContext colId = each.qualifiedName().colId();
TableNameSegment tableName = new TableNameSegment(colId.start.getStartIndex(), colId.stop.getStopIndex(), new IdentifierValue(colId.getText()));
result.getValue().add(new SimpleTableSegment(tableName));
}
return result;
}
@Override
public ASTNode visitLoad(final LoadContext ctx) {
return new PostgreSQLLoadStatement(getDatabaseType());
}
@Override
public ASTNode visitVacuum(final VacuumContext ctx) {
return new PostgreSQLVacuumStatement(getDatabaseType());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
return new ExplainStatement(getDatabaseType(), (SQLStatement) visit(ctx.explainableStmt()));
}
@Override
public ASTNode visitExplainableStmt(final ExplainableStmtContext ctx) {
if (null != ctx.select()) {
return visit(ctx.select());
}
if (null != ctx.insert()) {
return visit(ctx.insert());
}
if (null != ctx.update()) {
return visit(ctx.update());
}
if (null != ctx.delete()) {
return visit(ctx.delete());
}
if (null != ctx.declare()) {
// TODO visit declare statement
return visit(ctx.declare());
}
if (null != ctx.executeStmt()) {
return visit(ctx.executeStmt());
}
if (null != ctx.createMaterializedView()) {
// TODO visit create materialized view statement
return visit(ctx.createMaterializedView());
}
// TODO visit refresh materialized view statement
return visit(ctx.refreshMatViewStmt());
}
@Override
public ASTNode visitCheckpoint(final CheckpointContext ctx) {
return new PostgreSQLCheckpointStatement(getDatabaseType());
}
@Override
public ASTNode visitEmptyStatement(final EmptyStatementContext ctx) {
return new EmptyStatement(getDatabaseType());
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1046 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1242 |
return new FetchStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
}
@Override
public ASTNode visitNext(final NextContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.NEXT);
}
@Override
public ASTNode visitPrior(final PriorContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.PRIOR);
}
@Override
public ASTNode visitFirst(final FirstContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FIRST);
}
@Override
public ASTNode visitLast(final LastContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.LAST);
}
@Override
public ASTNode visitAbsoluteCount(final AbsoluteCountContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.ABSOLUTE_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
}
@Override
public ASTNode visitRelativeCount(final RelativeCountContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.RELATIVE_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
}
@Override
public ASTNode visitCount(final CountContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
}
@Override
public ASTNode visitAll(final AllContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.ALL);
}
@Override
public ASTNode visitForward(final ForwardContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FORWARD);
}
@Override
public ASTNode visitForwardCount(final ForwardCountContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FORWARD_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
}
@Override
public ASTNode visitForwardAll(final ForwardAllContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.FORWARD_ALL);
}
@Override
public ASTNode visitBackward(final BackwardContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.BACKWARD);
}
@Override
public ASTNode visitBackwardCount(final BackwardCountContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.BACKWARD_COUNT, ((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue());
}
@Override
public ASTNode visitBackwardAll(final BackwardAllContext ctx) {
return new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), DirectionType.BACKWARD_ALL);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1763 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1807 |
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((ExistsSubqueryExpression) exprProjection).getSubquery(), text);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias, exprProjection);
}
private ShorthandProjectionSegment createShorthandProjection(final QualifiedShorthandContext shorthand) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierContext identifier = shorthand.identifier().get(shorthand.identifier().size() - 1);
OwnerSegment owner = new OwnerSegment(identifier.getStart().getStartIndex(), identifier.getStop().getStopIndex(), new IdentifierValue(identifier.getText()));
result.setOwner(owner);
if (shorthand.identifier().size() > 1) {
IdentifierContext databaseIdentifier = shorthand.identifier().get(0);
owner.setOwner(new OwnerSegment(databaseIdentifier.getStart().getStartIndex(), databaseIdentifier.getStop().getStopIndex(), new IdentifierValue(databaseIdentifier.getText())));
}
return result;
}
@Override
public ASTNode visitAlias(final AliasContext ctx) {
return new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.textOrIdentifier().getText()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias, final ExpressionSegment projection) {
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment functionSegment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(functionSegment.getStartIndex(), functionSegment.getStopIndex(), functionSegment.getText(), functionSegment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(subqueryExpressionSegment.getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
int startIndex = projection.getStartIndex();
int stopIndex = null == alias ? projection.getStopIndex() : alias.getStopIndex();
ExpressionProjectionSegment result = new ExpressionProjectionSegment(startIndex, stopIndex, projection.getText(), projection);
result.setAlias(alias);
return result;
}
if (projection instanceof ParameterMarkerExpressionSegment) {
ParameterMarkerExpressionSegment result = (ParameterMarkerExpressionSegment) projection;
result.setAlias(alias);
return projection;
}
if (projection instanceof CaseWhenExpression || projection instanceof VariableSegment || projection instanceof BetweenExpression || projection instanceof InExpression
|| projection instanceof CollateExpression || projection instanceof NotExpression) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1245 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1705 |
return result;
}
@Override
public ASTNode visitSingleTableClause(final SingleTableClauseContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
@Override
public ASTNode visitMultipleTablesClause(final MultipleTablesClauseContext ctx) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
TableSegment relateTableSource = (TableSegment) visit(ctx.tableReferences());
result.setRelationTable(relateTableSource);
result.setActualDeleteTables(generateTablesFromTableAliasRefList(ctx.tableAliasRefList()));
return result;
}
private List<SimpleTableSegment> generateTablesFromTableAliasRefList(final TableAliasRefListContext ctx) {
List<SimpleTableSegment> result = new LinkedList<>();
for (TableIdentOptWildContext each : ctx.tableIdentOptWild()) {
result.add((SimpleTableSegment) visit(each.tableName()));
}
return result;
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
// TODO :Unsupported for withClause.
SelectStatement result;
if (null != ctx.queryExpression()) {
result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
} else if (null != ctx.selectWithInto()) {
result = (SelectStatement) visit(ctx.selectWithInto());
} else {
result = (SelectStatement) visit(ctx.getChild(0));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
private boolean isDistinct(final QuerySpecificationContext ctx) {
for (SelectSpecificationContext each : ctx.selectSpecification()) {
if (((BooleanLiteralValue) visit(each)).getValue()) {
return true;
}
}
return false;
}
@Override
public ASTNode visitSelectSpecification(final SelectSpecificationContext ctx) {
if (null != ctx.duplicateSpecification()) {
return visit(ctx.duplicateSpecification());
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
String text = ctx.getText();
if ("DISTINCT".equalsIgnoreCase(text) || "DISTINCTROW".equalsIgnoreCase(text)) {
return new BooleanLiteralValue(true);
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
return createShorthandProjection(ctx.qualifiedShorthand());
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1705 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 978 |
return result;
}
@Override
public ASTNode visitSingleTableClause(final SingleTableClauseContext ctx) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
@Override
public ASTNode visitMultipleTablesClause(final MultipleTablesClauseContext ctx) {
DeleteMultiTableSegment result = new DeleteMultiTableSegment();
TableSegment relateTableSource = (TableSegment) visit(ctx.tableReferences());
result.setRelationTable(relateTableSource);
result.setActualDeleteTables(generateTablesFromTableAliasRefList(ctx.tableAliasRefList()));
return result;
}
private List<SimpleTableSegment> generateTablesFromTableAliasRefList(final TableAliasRefListContext ctx) {
List<SimpleTableSegment> result = new LinkedList<>();
for (TableIdentOptWildContext each : ctx.tableIdentOptWild()) {
result.add((SimpleTableSegment) visit(each.tableName()));
}
return result;
}
@Override
public ASTNode visitSelect(final SelectContext ctx) {
SelectStatement result;
if (null != ctx.queryExpression()) {
result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
} else if (null != ctx.selectWithInto()) {
result = (SelectStatement) visit(ctx.selectWithInto());
} else {
result = (SelectStatement) visit(ctx.getChild(0));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
private boolean isDistinct(final QuerySpecificationContext ctx) {
for (SelectSpecificationContext each : ctx.selectSpecification()) {
if (((BooleanLiteralValue) visit(each)).getValue()) {
return true;
}
}
return false;
}
@Override
public ASTNode visitSelectSpecification(final SelectSpecificationContext ctx) {
if (null != ctx.duplicateSpecification()) {
return visit(ctx.duplicateSpecification());
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitDuplicateSpecification(final DuplicateSpecificationContext ctx) {
String text = ctx.getText();
if ("DISTINCT".equalsIgnoreCase(text) || "DISTINCTROW".equalsIgnoreCase(text)) {
return new BooleanLiteralValue(true);
}
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
return createShorthandProjection(ctx.qualifiedShorthand());
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1272 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1309 |
return visit(ctx.simpleExpr(0));
}
if (null != ctx.TILDE_()) {
return new UnaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.simpleExpr(0)), "~", ctx.getText());
}
if (null != ctx.variable()) {
return visit(ctx.variable());
}
if (null != ctx.LP_()) {
RowExpression result = new RowExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText());
for (ExprContext each : ctx.expr()) {
result.getItems().add((ExpressionSegment) visit(each));
}
return result;
}
if (null != ctx.RETURNING()) {
ListExpression result = new ListExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
result.getItems().add(new LiteralExpressionSegment(ctx.path().start.getStartIndex(), ctx.path().stop.getStopIndex(), ctx.path().getText()));
result.getItems().add(new LiteralExpressionSegment(ctx.RETURNING().getSymbol().getStartIndex(), ctx.RETURNING().getSymbol().getStopIndex(), ctx.RETURNING().getSymbol().getText()));
result.getItems().add((ExpressionSegment) visit(ctx.dataType()));
return result;
}
if (null != ctx.LBE_()) {
return visit(ctx.expr(0));
}
for (ExprContext each : ctx.expr()) {
visit(each);
}
for (SimpleExprContext each : ctx.simpleExpr()) {
visit(each);
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), text);
}
@Override
public ASTNode visitCaseExpression(final CaseExpressionContext ctx) {
Collection<ExpressionSegment> whenExprs = new LinkedList<>();
Collection<ExpressionSegment> thenExprs = new LinkedList<>();
for (CaseWhenContext each : ctx.caseWhen()) {
whenExprs.add((ExpressionSegment) visit(each.expr(0)));
thenExprs.add((ExpressionSegment) visit(each.expr(1)));
}
ExpressionSegment caseExpr = null == ctx.expr() ? null : (ExpressionSegment) visit(ctx.expr());
ExpressionSegment elseExpr = null == ctx.caseElse() ? null : (ExpressionSegment) visit(ctx.caseElse().expr());
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 265 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 340 |
public OpenGaussDDLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (CreateDefinitionContext each : ctx.createDefinition()) {
if (null != each.columnDefinition()) {
result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
}
if (null != each.tableConstraint()) {
result.getValue().add((ConstraintDefinitionSegment) visit(each.tableConstraint()));
}
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableNameClause().tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof ValidateConstraintDefinitionSegment) {
result.getValidateConstraintDefinitions().add((ValidateConstraintDefinitionSegment) each);
} else if (each instanceof ModifyConstraintDefinitionSegment) {
result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) {
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
} else if (each instanceof RenameTableDefinitionSegment) {
result.setRenameTable(((RenameTableDefinitionSegment) each).getRenameTable());
} else if (each instanceof RenameColumnSegment) {
result.getRenameColumnDefinitions().add((RenameColumnSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitAlterAggregate(final AlterAggregateContext ctx) {
return new PostgreSQLAlterAggregateStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDefaultPrivileges(final AlterDefaultPrivilegesContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 261 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 492 |
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private ASTNode createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " ";
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = new SubqueryExpressionSegment( | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 294 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 294 |
result.setCommentSegment(new CommentSegment(each.string_().getText(), each.string_().getStart().getStartIndex(), each.string_().getStop().getStopIndex()));
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (TableElementContext each : ctx.tableElementList().tableElement()) {
if (null != each.columnDefinition()) {
result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
}
if (null != each.tableConstraintDef()) {
result.getValue().add((ConstraintDefinitionSegment) visit(each.tableConstraintDef()));
}
}
return result;
}
@Override
public ASTNode visitCreateLikeClause(final CreateLikeClauseContext ctx) {
return visit(ctx.tableName());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null == ctx.alterTableActions() || null == ctx.alterTableActions().alterCommandList() || null == ctx.alterTableActions().alterCommandList().alterList()) {
return result;
}
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterTableActions().alterCommandList().alterList())).getValue()) {
setAlterDefinition(result, each);
}
return result;
}
private void setAlterDefinition(final AlterTableStatement alterTableStatement, final AlterDefinitionSegment alterDefinitionSegment) {
if (alterDefinitionSegment instanceof AddColumnDefinitionSegment) {
alterTableStatement.getAddColumnDefinitions().add((AddColumnDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof ModifyColumnDefinitionSegment) {
alterTableStatement.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof ChangeColumnDefinitionSegment) {
alterTableStatement.getChangeColumnDefinitions().add((ChangeColumnDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof DropColumnDefinitionSegment) {
alterTableStatement.getDropColumnDefinitions().add((DropColumnDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof AddConstraintDefinitionSegment) {
alterTableStatement.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof DropConstraintDefinitionSegment) {
alterTableStatement.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof RenameTableDefinitionSegment) {
alterTableStatement.setRenameTable(((RenameTableDefinitionSegment) alterDefinitionSegment).getRenameTable());
} else if (alterDefinitionSegment instanceof ConvertTableDefinitionSegment) {
alterTableStatement.setConvertTableDefinition((ConvertTableDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof DropIndexDefinitionSegment) {
alterTableStatement.getDropIndexDefinitions().add((DropIndexDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof RenameIndexDefinitionSegment) {
alterTableStatement.getRenameIndexDefinitions().add((RenameIndexDefinitionSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof RenameColumnSegment) {
alterTableStatement.getRenameColumnDefinitions().add((RenameColumnSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof AlgorithmTypeSegment) {
alterTableStatement.setAlgorithmSegment((AlgorithmTypeSegment) alterDefinitionSegment);
} else if (alterDefinitionSegment instanceof LockTableSegment) {
alterTableStatement.setLockTableSegment((LockTableSegment) alterDefinitionSegment);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 846 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 855 |
String assignValue = null == ctx.DEFAULT() ? ctx.charsetName().getText() : ctx.DEFAULT().getText();
return new SetStatement(getDatabaseType(), Collections.singletonList(new VariableAssignSegment(startIndex, stopIndex, variable, assignValue)));
}
@Override
public ASTNode visitFromDatabase(final FromDatabaseContext ctx) {
return new FromDatabaseSegment(ctx.getStart().getStartIndex(), (DatabaseSegment) visit(ctx.databaseName()));
}
@Override
public ASTNode visitShowLike(final ShowLikeContext ctx) {
StringLiteralValue literalValue = (StringLiteralValue) visit(ctx.stringLiterals());
return new ShowLikeSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), literalValue.getValue());
}
@Override
public ASTNode visitCreateLoadableFunction(final CreateLoadableFunctionContext ctx) {
return new MySQLCreateLoadableFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitInstallComponent(final InstallComponentContext ctx) {
return new MySQLInstallComponentStatement(getDatabaseType(), ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
}
@Override
public ASTNode visitUninstallComponent(final UninstallComponentContext ctx) {
return new MySQLUninstallComponentStatement(getDatabaseType(), ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
}
@Override
public ASTNode visitRestart(final RestartContext ctx) {
return new MySQLRestartStatement(getDatabaseType());
}
@Override
public ASTNode visitSetResourceGroup(final SetResourceGroupContext ctx) {
return new MySQLSetResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitCheckTable(final CheckTableContext ctx) {
return new MySQLCheckTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitDropResourceGroup(final DropResourceGroupContext ctx) {
return new MySQLDropResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitAlterResourceGroup(final AlterResourceGroupContext ctx) {
return new MySQLAlterResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitChangeMasterTo(final ChangeMasterToContext ctx) {
return new MySQLChangeMasterStatement(getDatabaseType());
}
@Override
public ASTNode visitStartSlave(final StartSlaveContext ctx) {
return new MySQLStartSlaveStatement(getDatabaseType());
}
@Override
public ASTNode visitStopSlave(final StopSlaveContext ctx) {
return new MySQLStopSlaveStatement(getDatabaseType());
}
@Override
public ASTNode visitChangeReplicationSourceTo(final ChangeReplicationSourceToContext ctx) {
return new MySQLChangeReplicationSourceToStatement(getDatabaseType());
}
@Override
public ASTNode visitStartReplica(final DorisStatementParser.StartReplicaContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1337 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1302 |
return JoinType.INNER.name();
}
private void visitJoinQual(final JoinQualContext ctx, final JoinTableSegment joinTableSource) {
if (null != ctx.aExpr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.aExpr());
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
joinTableSource.setUsing(generateUsingColumn(ctx.nameList()));
}
}
private List<ColumnSegment> generateUsingColumn(final NameListContext ctx) {
List<ColumnSegment> result = new ArrayList<>();
if (null != ctx.nameList()) {
result.addAll(generateUsingColumn(ctx.nameList()));
}
if (null != ctx.name()) {
result.add(new ColumnSegment(ctx.name().start.getStartIndex(), ctx.name().stop.getStopIndex(), new IdentifierValue(ctx.name().getText())));
}
return result;
}
@Override
public ASTNode visitAliasClause(final AliasClauseContext ctx) {
StringBuilder aliasName = new StringBuilder(ctx.colId().getText());
if (null != ctx.nameList()) {
aliasName.append(ctx.LP_().getText());
aliasName.append(ctx.nameList().getText());
aliasName.append(ctx.RP_().getText());
}
return new AliasSegment(ctx.colId().start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(aliasName.toString()));
}
private OwnerSegment createTableOwner(final IndirectionContext ctx) {
AttrNameContext attrName = ctx.indirectionEl().attrName();
return new OwnerSegment(attrName.start.getStartIndex(), attrName.stop.getStopIndex(), new IdentifierValue(attrName.getText()));
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) {
ExpressionSegment expr = (ExpressionSegment) visit(ctx.aExpr());
return new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), expr);
}
@Override
public ASTNode visitSelectLimit(final SelectLimitContext ctx) {
if (null != ctx.limitClause() && null != ctx.offsetClause()) {
return createLimitSegmentWhenLimitAndOffset(ctx);
}
return createLimitSegmentWhenRowCountOrOffsetAbsent(ctx);
}
@Override
public ASTNode visitSelectLimitValue(final SelectLimitValueContext ctx) {
if (null != ctx.ALL()) {
return null;
}
ASTNode astNode = visit(ctx.cExpr());
if (astNode instanceof ParameterMarkerExpressionSegment) {
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex());
}
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 210 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 209 |
public DorisDDLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
return result;
}
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.viewNames())).getValue());
return result;
}
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
return new CreateDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifNotExists());
}
@Override
public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
return new AlterDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
return new DropDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
if (null != ctx.createLikeClause()) {
result.setLikeTable((SimpleTableSegment) visit(ctx.createLikeClause()));
}
if (null != ctx.createTableOptions()) {
result.setCreateTableOption((CreateTableOptionSegment) visit(ctx.createTableOptions()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationResultSet.java | shardingsphere-jdbc | 89 |
| org/apache/shardingsphere/sqlfederation/resultset/AbstractUnsupportedOperationSQLFederationResultSet.java | shardingsphere-sql-federation-core | 89 |
public final int getRow() throws SQLException {
throw new SQLFeatureNotSupportedException("getRow");
}
@Override
public final void insertRow() throws SQLException {
throw new SQLFeatureNotSupportedException("insertRow");
}
@Override
public final void updateRow() throws SQLException {
throw new SQLFeatureNotSupportedException("updateRow");
}
@Override
public final void deleteRow() throws SQLException {
throw new SQLFeatureNotSupportedException("deleteRow");
}
@Override
public final void refreshRow() throws SQLException {
throw new SQLFeatureNotSupportedException("refreshRow");
}
@Override
public final void cancelRowUpdates() throws SQLException {
throw new SQLFeatureNotSupportedException("cancelRowUpdates");
}
@Override
public final void moveToInsertRow() throws SQLException {
throw new SQLFeatureNotSupportedException("moveToInsertRow");
}
@Override
public final void moveToCurrentRow() throws SQLException {
throw new SQLFeatureNotSupportedException("moveToCurrentRow");
}
@Override
public final boolean rowInserted() throws SQLException {
throw new SQLFeatureNotSupportedException("rowInserted");
}
@Override
public final boolean rowUpdated() throws SQLException {
throw new SQLFeatureNotSupportedException("rowUpdated");
}
@Override
public final boolean rowDeleted() throws SQLException {
throw new SQLFeatureNotSupportedException("rowDeleted");
}
@Override
public final String getCursorName() throws SQLException {
throw new SQLFeatureNotSupportedException("getCursorName");
}
@Override
public final int getHoldability() throws SQLException {
throw new SQLFeatureNotSupportedException("getHoldability");
}
@Override
public final NClob getNClob(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getNClob");
}
@Override
public final NClob getNClob(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getNClob");
}
@Override
public final Reader getNCharacterStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getNCharacterStream");
}
@Override
public final Reader getNCharacterStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getNCharacterStream");
}
@Override
public final Ref getRef(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getRef");
}
@Override
public final Ref getRef(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getRef");
}
@Override
public final RowId getRowId(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getRowId");
}
@Override
public final RowId getRowId(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getRowId");
}
@Override
public <T> T getObject(final int columnIndex, final Class<T> type) throws SQLException {
throw new SQLFeatureNotSupportedException("getObject with type");
}
@Override
public <T> T getObject(final String columnLabel, final Class<T> type) throws SQLException {
throw new SQLFeatureNotSupportedException("getObject with type");
}
@Override
public final Object getObject(final String columnLabel, final Map<String, Class<?>> map) throws SQLException {
throw new SQLFeatureNotSupportedException("getObject with map");
}
@Override
public final Object getObject(final int columnIndex, final Map<String, Class<?>> map) throws SQLException {
throw new SQLFeatureNotSupportedException("getObject with map");
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 426 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 410 |
return visit(ctx.variable());
}
return new CommonExpressionSegment(startIndex, stopIndex, ctx.getText());
}
@Override
public final ASTNode visitIntervalExpression(final IntervalExpressionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
return new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx));
}
@Override
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
throw new IllegalStateException("FunctionCallContext must have aggregationFunction, regularFunction or specialFunction.");
}
@Override
public final ASTNode visitAggregationFunction(final AggregationFunctionContext ctx) {
String aggregationType = ctx.aggregationFunctionName().getText();
return AggregationType.isAggregationType(aggregationType)
? createAggregationSegment(ctx, aggregationType)
: new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx));
}
private ASTNode createAggregationSegment(final AggregationFunctionContext ctx, final String aggregationType) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase());
if (null != ctx.distinct()) {
AggregationDistinctProjectionSegment result =
new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), getDistinctExpression(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
private Collection<ExpressionSegment> getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new LinkedList<>();
for (ExprContext each : ctx.expr()) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.castFunction()) {
return visit(ctx.castFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1573 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 897 |
UpdateStatement result = new UpdateStatement(databaseType);
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef());
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
return new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) {
ASTNode result = visit(expr);
if (result instanceof ColumnSegment) {
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
} else {
return result;
}
}
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitBlobValue(final BlobValueContext ctx) {
return new StringLiteralValue(ctx.string_().getText());
}
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
DeleteStatement result = new DeleteStatement(databaseType); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 339 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 585 |
}
boolean not = null != ctx.NOT();
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return createExpressionSegment(visit(ctx.simpleExpr()), ctx);
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createExpressionSegment(final ASTNode astNode, final ParserRuleContext context) {
if (astNode instanceof StringLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((StringLiteralValue) astNode).getValue());
}
if (astNode instanceof NumberLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((NumberLiteralValue) astNode).getValue());
}
if (astNode instanceof BooleanLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((BooleanLiteralValue) astNode).getValue());
}
if (astNode instanceof ParameterMarkerValue) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) astNode;
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(),
parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(segment);
return segment;
}
if (astNode instanceof SubquerySegment) {
return new SubqueryExpressionSegment((SubquerySegment) astNode);
}
if (astNode instanceof OtherLiteralValue) {
return new CommonExpressionSegment(context.getStart().getStartIndex(), context.getStop().getStopIndex(), ((OtherLiteralValue) astNode).getValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1200 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1367 |
}
return new GroupBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
private Collection<OrderByItemSegment> generateOrderByItemsFromGroupByItem(final GroupByItemContext ctx) {
Collection<OrderByItemSegment> result = new LinkedList<>();
if (null != ctx.expr()) {
OrderByItemSegment item = (OrderByItemSegment) extractValueFromGroupByItemExpression(ctx.expr());
result.add(item);
} else if (null != ctx.rollupCubeClause()) {
result.addAll(generateOrderByItemSegmentsFromRollupCubeClause(ctx.rollupCubeClause()));
} else {
result.addAll(generateOrderByItemSegmentsFromGroupingSetsClause(ctx.groupingSetsClause()));
}
return result;
}
private ASTNode extractValueFromGroupByItemExpression(final ExprContext ctx) {
ASTNode expression = visit(ctx);
if (expression instanceof ColumnSegment) {
ColumnSegment column = (ColumnSegment) expression;
return new ColumnOrderByItemSegment(column, OrderDirection.ASC, null);
}
if (expression instanceof LiteralExpressionSegment) {
LiteralExpressionSegment literalExpression = (LiteralExpressionSegment) expression;
return new IndexOrderByItemSegment(literalExpression.getStartIndex(), literalExpression.getStopIndex(),
SQLUtils.getExactlyNumber(literalExpression.getLiterals().toString(), 10).intValue(), OrderDirection.ASC, null);
}
return new ExpressionOrderByItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx), OrderDirection.ASC, null, (ExpressionSegment) expression);
}
private Collection<OrderByItemSegment> generateOrderByItemSegmentsFromRollupCubeClause(final RollupCubeClauseContext ctx) {
return new LinkedList<>(generateOrderByItemSegmentsFromGroupingExprList(ctx.groupingExprList()));
}
private Collection<OrderByItemSegment> generateOrderByItemSegmentsFromGroupingSetsClause(final GroupingSetsClauseContext ctx) {
Collection<OrderByItemSegment> result = new LinkedList<>();
if (null != ctx.rollupCubeClause()) {
for (RollupCubeClauseContext each : ctx.rollupCubeClause()) {
result.addAll(generateOrderByItemSegmentsFromRollupCubeClause(each));
}
}
if (null != ctx.groupingExprList()) {
for (GroupingExprListContext each : ctx.groupingExprList()) {
result.addAll(generateOrderByItemSegmentsFromGroupingExprList(each));
}
}
return result;
}
private Collection<OrderByItemSegment> generateOrderByItemSegmentsFromGroupingExprList(final GroupingExprListContext ctx) {
Collection<OrderByItemSegment> result = new LinkedList<>();
for (ExpressionListContext each : ctx.expressionList()) {
result.addAll(generateOrderByItemSegmentsFromExpressionList(each));
}
return result;
}
private Collection<OrderByItemSegment> generateOrderByItemSegmentsFromExpressionList(final ExpressionListContext ctx) {
Collection<OrderByItemSegment> result = new LinkedList<>();
if (null != ctx.expr()) {
for (ExprContext each : ctx.expr()) {
result.add((OrderByItemSegment) extractValueFromGroupByItemExpression(each));
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1972 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1557 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 2009 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1293 |
}
private JoinTableSegment visitJoinSpecification(final JoinSpecificationContext ctx, final JoinTableSegment result) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
result.setCondition(condition);
}
if (null != ctx.USING()) {
result.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
return result;
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) {
ASTNode segment = visit(ctx.expr());
return new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ExpressionSegment) segment);
}
@Override
public ASTNode visitGroupByClause(final GroupByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new GroupBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public ASTNode visitLimitClause(final LimitClauseContext ctx) {
if (null == ctx.limitOffset()) {
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null, (PaginationValueSegment) visit(ctx.limitRowCount()));
}
PaginationValueSegment rowCount;
PaginationValueSegment offset;
if (null != ctx.OFFSET()) {
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
offset = (PaginationValueSegment) visit(ctx.limitOffset());
} else {
offset = (PaginationValueSegment) visit(ctx.limitOffset());
rowCount = (PaginationValueSegment) visit(ctx.limitRowCount());
}
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), offset, rowCount);
}
@Override
public ASTNode visitLimitRowCount(final LimitRowCountContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1448 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1889 |
: new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getText()), column);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.tableReference(0));
if (ctx.tableReference().size() > 1) {
for (int i = 1; i < ctx.tableReference().size(); i++) {
result = generateJoinTableSourceFromEscapedTableReference(ctx.tableReference(i), result);
}
}
return result;
}
private JoinTableSegment generateJoinTableSourceFromEscapedTableReference(final TableReferenceContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft(tableSegment);
result.setJoinType(JoinType.COMMA.name());
result.setRight((TableSegment) visit(ctx));
return result;
}
@Override
public ASTNode visitEscapedTableReference(final EscapedTableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = null == ctx.tableFactor() ? (TableSegment) visit(ctx.escapedTableReference()) : (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1889 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1181 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), projection);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.tableReference(0));
if (ctx.tableReference().size() > 1) {
for (int i = 1; i < ctx.tableReference().size(); i++) {
result = generateJoinTableSourceFromEscapedTableReference(ctx.tableReference(i), result);
}
}
return result;
}
private JoinTableSegment generateJoinTableSourceFromEscapedTableReference(final TableReferenceContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft(tableSegment);
result.setJoinType(JoinType.COMMA.name());
result.setRight((TableSegment) visit(ctx));
return result;
}
@Override
public ASTNode visitEscapedTableReference(final EscapedTableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = null == ctx.tableFactor() ? (TableSegment) visit(ctx.escapedTableReference()) : (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 821 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 936 |
return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDomain(final DropDomainContext ctx) {
return new DropDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDomain(final CreateDomainContext ctx) {
return new CreateDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRule(final CreateRuleContext ctx) {
return new PostgreSQLCreateRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLanguage(final CreateLanguageContext ctx) {
return new PostgreSQLCreateLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSchema(final CreateSchemaContext ctx) {
CreateSchemaStatement result = new CreateSchemaStatement(getDatabaseType());
if (null != ctx.createSchemaClauses().colId()) {
result.setSchemaName(new IdentifierValue(ctx.createSchemaClauses().colId().getText()));
}
if (null != ctx.createSchemaClauses().roleSpec() && null != ctx.createSchemaClauses().roleSpec().identifier()) {
result.setUsername((IdentifierValue) visit(ctx.createSchemaClauses().roleSpec().identifier()));
}
return result;
}
@Override
public ASTNode visitAlterSchema(final AlterSchemaContext ctx) {
AlterSchemaStatement result = new AlterSchemaStatement(getDatabaseType());
result.setSchemaName((IdentifierValue) visit(ctx.name().get(0)));
if (ctx.name().size() > 1) {
result.setRenameSchema((IdentifierValue) visit(ctx.name().get(1)));
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropSchema(final DropSchemaContext ctx) {
DropSchemaStatement result = new DropSchemaStatement(getDatabaseType());
result.getSchemaNames().addAll(((CollectionValue<IdentifierValue>) visit(ctx.nameList())).getValue());
result.setContainsCascade(null != ctx.dropBehavior() && null != ctx.dropBehavior().CASCADE());
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitNameList(final NameListContext ctx) {
CollectionValue<IdentifierValue> result = new CollectionValue<>();
if (null != ctx.nameList()) {
result.combine((CollectionValue<IdentifierValue>) visit(ctx.nameList()));
}
if (null != ctx.name()) {
result.getValue().add((IdentifierValue) visit(ctx.name()));
}
return result;
}
@Override
public ASTNode visitAlterLanguage(final AlterLanguageContext ctx) {
return new PostgreSQLAlterLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSynonym(final AlterSynonymContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 288 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 495 |
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = new SubqueryExpressionSegment(
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
return visit(ctx.bitExpr(0));
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 500 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 420 |
FunctionTableSegment result = new FunctionTableSegment(exprSegment.getStartIndex(), exprSegment.getStopIndex(), exprSegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
TableSegment right = (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
result.setJoinType(getJoinType(ctx));
if (null != ctx.joinSpecification()) {
visitJoinSpecification(ctx.joinSpecification(), result);
}
return result;
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
} else if (null != ctx.RIGHT()) {
return JoinType.RIGHT.name();
} else if (null != ctx.INNER()) {
return JoinType.INNER.name();
} else if (null != ctx.CROSS()) {
return JoinType.CROSS.name();
}
return JoinType.INNER.name();
}
private void visitJoinSpecification(final JoinSpecificationContext ctx, final JoinTableSegment joinTableSource) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) {
ExpressionSegment segment = (ExpressionSegment) visit(ctx.expr());
return new WhereSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segment);
}
@Override
public ASTNode visitGroupByClause(final GroupByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new GroupBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 989 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1142 |
return commentOnColumn(ctx);
}
return new CommentStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnColumn(final CommentContext ctx) {
CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
Optional<NameSegment> columnName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
columnName.ifPresent(optional -> result.setColumn(new ColumnSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
result.setComment(new IdentifierValue(ctx.commentClauses().commentText().getText()));
setTableSegment(result, nameSegmentIterator);
return result;
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnTable(final CommentContext ctx) {
CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
result.setComment(new IdentifierValue(ctx.commentClauses().commentText().getText()));
setTableSegment(result, nameSegmentIterator);
return result;
}
private void setTableSegment(final CommentStatement statement, final Iterator<NameSegment> nameSegmentIterator) {
Optional<NameSegment> tableName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
tableName.ifPresent(optional -> statement.setTable(new SimpleTableSegment(new TableNameSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier()))));
Optional<NameSegment> schemaName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
schemaName.ifPresent(optional -> statement.getTable().setOwner(new OwnerSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
Optional<NameSegment> databaseName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
databaseName.ifPresent(optional -> statement.getTable().getOwner()
.ifPresent(owner -> owner.setOwner(new OwnerSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier()))));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 466 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 308 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 324 |
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
if (null != ctx.MEMBER()) {
int startIndex = ctx.MEMBER().getSymbol().getStopIndex() + 5;
int endIndex = ctx.stop.getStopIndex() - 1;
String rightText = ctx.start.getInputStream().getText(new Interval(startIndex, endIndex));
ExpressionSegment right = new ExpressionProjectionSegment(startIndex, endIndex, rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "MEMBER OF";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.assignmentOperator()) {
return createAssignmentSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createAssignmentSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right = (ExpressionSegment) visit(ctx.predicate());
String operator = ctx.assignmentOperator().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 440 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 266 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 451 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 251 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 497 |
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " ";
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.java | shardingsphere-proxy-frontend-opengauss | 72 |
| org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.java | shardingsphere-proxy-frontend-postgresql | 72 |
DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
SQLStatement sqlStatement = ProxySQLComQueryParser.parse(packet.getSQL(), databaseType, connectionSession);
proxyBackendHandler = ProxyBackendHandlerFactory.newInstance(databaseType, packet.getSQL(), sqlStatement, connectionSession, packet.getHintValueContext());
}
@Override
public Collection<DatabasePacket> execute() throws SQLException {
ResponseHeader responseHeader = proxyBackendHandler.execute();
if (responseHeader instanceof QueryResponseHeader) {
return Collections.singleton(createRowDescriptionPacket((QueryResponseHeader) responseHeader));
}
responseType = ResponseType.UPDATE;
return createUpdatePacket((UpdateResponseHeader) responseHeader);
}
private PostgreSQLRowDescriptionPacket createRowDescriptionPacket(final QueryResponseHeader queryResponseHeader) {
responseType = ResponseType.QUERY;
return new PostgreSQLRowDescriptionPacket(createColumnDescriptions(queryResponseHeader));
}
private Collection<PostgreSQLColumnDescription> createColumnDescriptions(final QueryResponseHeader queryResponseHeader) {
Collection<PostgreSQLColumnDescription> result = new LinkedList<>();
int columnIndex = 0;
for (QueryHeader each : queryResponseHeader.getQueryHeaders()) {
result.add(new PostgreSQLColumnDescription(each.getColumnLabel(), ++columnIndex, each.getColumnType(), each.getColumnLength(), each.getColumnTypeName()));
}
return result;
}
private Collection<DatabasePacket> createUpdatePacket(final UpdateResponseHeader updateResponseHeader) throws SQLException {
SQLStatement sqlStatement = updateResponseHeader.getSqlStatement();
if (sqlStatement instanceof CommitStatement || sqlStatement instanceof RollbackStatement) {
portalContext.closeAll();
}
if (sqlStatement instanceof SetStatement) {
return createParameterStatusResponse((SetStatement) sqlStatement);
}
return Collections.singletonList(sqlStatement instanceof EmptyStatement ? new PostgreSQLEmptyQueryResponsePacket()
: new PostgreSQLCommandCompletePacket(PostgreSQLCommand.valueOf(sqlStatement.getClass()).map(PostgreSQLCommand::getTag).orElse(""), updateResponseHeader.getUpdateCount()));
}
private Collection<DatabasePacket> createParameterStatusResponse(final SetStatement sqlStatement) {
Collection<DatabasePacket> result = new ArrayList<>(2);
result.add(new PostgreSQLCommandCompletePacket("SET", 0L));
for (VariableAssignSegment each : sqlStatement.getVariableAssigns()) {
result.add(new PostgreSQLParameterStatusPacket(each.getVariable().getVariable(), null == each.getAssignValue() ? null : QuoteCharacter.unwrapText(each.getAssignValue())));
}
return result;
}
@Override
public boolean next() throws SQLException {
return proxyBackendHandler.next();
}
@Override
public PostgreSQLPacket getQueryRowPacket() throws SQLException {
return new PostgreSQLDataRowPacket(proxyBackendHandler.getRowData().getData());
}
@Override
public void close() throws SQLException {
proxyBackendHandler.close();
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1446 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1409 |
if (null != ctx.limitClause().selectFetchValue()) {
LimitValueSegment limit = (LimitValueSegment) visit(ctx.limitClause().selectFetchValue());
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null, limit);
}
LimitValueSegment limit = (LimitValueSegment) visit(ctx.limitClause().selectLimitValue());
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null, limit);
}
LimitValueSegment offset = (LimitValueSegment) visit(ctx.offsetClause().selectOffsetValue());
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), offset, null);
}
@Override
public ASTNode visitExecuteStmt(final ExecuteStmtContext ctx) {
return new ExecuteStatement(databaseType);
}
/**
* Get original text.
*
* @param ctx context
* @return original text
*/
protected String getOriginalText(final ParserRuleContext ctx) {
return ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}
@Override
@SuppressWarnings("unchecked")
public ASTNode visitAnyName(final AnyNameContext ctx) {
CollectionValue<NameSegment> result = new CollectionValue<>();
if (null != ctx.attrs()) {
result.combine((CollectionValue<NameSegment>) visit(ctx.attrs()));
}
result.getValue().add(new NameSegment(ctx.colId().getStart().getStartIndex(), ctx.colId().getStop().getStopIndex(), new IdentifierValue(ctx.colId().getText())));
return result;
}
@Override
@SuppressWarnings("unchecked")
public ASTNode visitAttrs(final AttrsContext ctx) {
CollectionValue<NameSegment> result = new CollectionValue<>();
result.getValue().add(new NameSegment(ctx.attrName().getStart().getStartIndex(), ctx.attrName().getStop().getStopIndex(), new IdentifierValue(ctx.attrName().getText())));
if (null != ctx.attrs()) {
result.combine((CollectionValue<NameSegment>) visit(ctx.attrs()));
}
return result;
}
@Override
public ASTNode visitSignedIconst(final SignedIconstContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/connector/opengauss/metadata/data/loader/OpenGaussMetaDataLoader.java | shardingsphere-database-connector-opengauss | 85 |
| org/apache/shardingsphere/database/connector/postgresql/metadata/data/loader/PostgreSQLMetaDataLoader.java | shardingsphere-database-connector-postgresql | 103 |
Map<String, Multimap<String, IndexMetaData>> result = new LinkedHashMap<>();
try (
PreparedStatement preparedStatement = connection.prepareStatement(getIndexMetaDataSQL(schemaNames));
ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String schemaName = resultSet.getString("schemaname");
String tableName = resultSet.getString("tablename");
String indexName = resultSet.getString("indexname");
Multimap<String, IndexMetaData> indexMetaDataMap = result.computeIfAbsent(schemaName, key -> LinkedHashMultimap.create());
indexMetaDataMap.put(tableName, new IndexMetaData(indexName));
}
}
try (
PreparedStatement preparedStatement = connection.prepareStatement(getAdvanceIndexMetaDataSQL(schemaNames));
ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String schemaName = resultSet.getString("index_schema");
String tableName = resultSet.getString("table_name");
String columnName = resultSet.getString("column_name");
String indexName = resultSet.getString("index_name");
boolean isUnique = resultSet.getBoolean("is_unique");
Collection<IndexMetaData> indexMetaDatas = result.getOrDefault(schemaName, LinkedHashMultimap.create()).get(tableName);
if (indexMetaDatas.isEmpty()) {
continue;
}
Optional<IndexMetaData> indexMetaData = indexMetaDatas.stream().filter(each -> each.getName().equals(indexName)).findFirst();
if (indexMetaData.isPresent()) {
indexMetaData.get().setUnique(isUnique);
indexMetaData.get().getColumns().add(columnName);
}
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection<String> schemaNames) {
return String.format(BASIC_INDEX_META_DATA_SQL, schemaNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
}
private String getAdvanceIndexMetaDataSQL(final Collection<String> schemaNames) {
return String.format(ADVANCE_INDEX_META_DATA_SQL, schemaNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
}
private Map<String, Multimap<String, ColumnMetaData>> loadColumnMetaDataMap(final Connection connection, final Collection<String> tables,
final Collection<String> schemaNames) throws SQLException {
Map<String, Multimap<String, ColumnMetaData>> result = new LinkedHashMap<>(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1095 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1102 |
}
return result;
}
// DORIS ADDED END
@Override
public final ASTNode visitCastFunction(final CastFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CAST().getText(), getOriginalText(ctx));
for (ExprContext each : ctx.expr()) {
ASTNode expr = visit(each);
result.getParameters().add((ExpressionSegment) expr);
}
if (null != ctx.castType()) {
result.getParameters().add((DataTypeSegment) visit(ctx.castType()));
}
if (null != ctx.DATETIME()) {
DataTypeSegment dataType = new DataTypeSegment();
dataType.setDataTypeName(ctx.DATETIME().getText());
dataType.setStartIndex(ctx.DATETIME().getSymbol().getStartIndex());
dataType.setStopIndex(ctx.DATETIME().getSymbol().getStopIndex());
if (null != ctx.typeDatetimePrecision()) {
dataType.setDataLength((DataTypeLengthSegment) visit(ctx.typeDatetimePrecision()));
}
result.getParameters().add(dataType);
}
return result;
}
@Override
public ASTNode visitCastType(final CastTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.castTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitConvertFunction(final ConvertFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CONVERT().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 340 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 425 |
return new PostgreSQLAlterDefaultPrivilegesStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
if (null != ctx.alterTableActions()) {
result.getValue().addAll(ctx.alterTableActions().alterTableAction().stream().flatMap(each -> getAlterDefinitionSegments(each).stream()).collect(Collectors.toList()));
}
if (null != ctx.renameColumnSpecification()) {
result.getValue().add((RenameColumnSegment) visit(ctx.renameColumnSpecification()));
}
if (null != ctx.renameTableSpecification()) {
result.getValue().add((RenameTableDefinitionSegment) visit(ctx.renameTableSpecification()));
}
return result;
}
@SuppressWarnings("unchecked")
private Collection<AlterDefinitionSegment> getAlterDefinitionSegments(final AlterTableActionContext ctx) {
Collection<AlterDefinitionSegment> result = new LinkedList<>();
if (null != ctx.addColumnSpecification()) {
result.addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.addColumnSpecification())).getValue());
}
if (null != ctx.addConstraintSpecification() && null != ctx.addConstraintSpecification().tableConstraint()) {
result.add((AddConstraintDefinitionSegment) visit(ctx.addConstraintSpecification()));
}
if (null != ctx.validateConstraintSpecification()) {
result.add((ValidateConstraintDefinitionSegment) visit(ctx.validateConstraintSpecification()));
}
if (null != ctx.modifyColumnSpecification()) {
result.add((ModifyColumnDefinitionSegment) visit(ctx.modifyColumnSpecification()));
}
if (null != ctx.modifyConstraintSpecification()) {
result.add((ModifyConstraintDefinitionSegment) visit(ctx.modifyConstraintSpecification()));
}
if (null != ctx.dropColumnSpecification()) {
result.add((DropColumnDefinitionSegment) visit(ctx.dropColumnSpecification()));
}
if (null != ctx.dropConstraintSpecification()) {
result.add((DropConstraintDefinitionSegment) visit(ctx.dropConstraintSpecification()));
}
return result;
}
@Override
public ASTNode visitAlterForeignTable(final AlterForeignTableContext ctx) {
return new PostgreSQLAlterForeignTableStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterGroup(final AlterGroupContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 259 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 109 |
public abstract class DorisStatementVisitor extends DorisStatementBaseVisitor<ASTNode> {
private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
public final ASTNode visitParameterMarker(final ParameterMarkerContext ctx) {
return new ParameterMarkerValue(parameterMarkerSegments.size(), ParameterMarkerType.QUESTION);
}
@Override
public final ASTNode visitLiterals(final LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.temporalLiterals()) {
return visit(ctx.temporalLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public ASTNode visitString_(final String_Context ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public ASTNode visitTemporalLiterals(final TemporalLiteralsContext ctx) {
// TODO deal with TemporalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1747 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1339 |
ExpressionSegment exprProjection = (ExpressionSegment) visit(ctx.expr());
if (exprProjection instanceof ColumnSegment) {
ColumnProjectionSegment result = new ColumnProjectionSegment((ColumnSegment) exprProjection);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof SubquerySegment) {
SubquerySegment subquerySegment = (SubquerySegment) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(subquerySegment.getStartIndex(), subquerySegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof ExistsSubqueryExpression) {
ExistsSubqueryExpression existsSubqueryExpression = (ExistsSubqueryExpression) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(existsSubqueryExpression.getStartIndex(), existsSubqueryExpression.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((ExistsSubqueryExpression) exprProjection).getSubquery(), text);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias, exprProjection);
}
private ShorthandProjectionSegment createShorthandProjection(final QualifiedShorthandContext shorthand) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierContext identifier = shorthand.identifier().get(shorthand.identifier().size() - 1);
OwnerSegment owner = new OwnerSegment(identifier.getStart().getStartIndex(), identifier.getStop().getStopIndex(), new IdentifierValue(identifier.getText()));
result.setOwner(owner);
if (shorthand.identifier().size() > 1) {
IdentifierContext databaseIdentifier = shorthand.identifier().get(0);
owner.setOwner(new OwnerSegment(databaseIdentifier.getStart().getStartIndex(), databaseIdentifier.getStop().getStopIndex(), new IdentifierValue(databaseIdentifier.getText())));
}
return result;
}
@Override
public ASTNode visitAlias(final AliasContext ctx) {
return new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.textOrIdentifier().getText()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias, final ExpressionSegment projection) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 283 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 380 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 308 |
private ASTNode createProjection(final ClickHouseStatementParser.ProjectionContext ctx, final AliasSegment alias) {
ASTNode projection = visit(ctx.expr());
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
BinaryOperationExpression binaryExpression = (BinaryOperationExpression) projection;
int startIndex = binaryExpression.getStartIndex();
int stopIndex = null == alias ? binaryExpression.getStopIndex() : alias.getStopIndex();
ExpressionProjectionSegment result = new ExpressionProjectionSegment(startIndex, stopIndex, binaryExpression.getText(), binaryExpression);
result.setAlias(alias);
return result;
}
if (projection instanceof ParameterMarkerExpressionSegment) {
ParameterMarkerExpressionSegment result = (ParameterMarkerExpressionSegment) projection;
result.setAlias(alias);
return projection;
}
ExpressionSegment column = (ExpressionSegment) projection;
ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), column.getText(), column) | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1573 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1129 |
UpdateStatement result = new UpdateStatement(databaseType);
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef());
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
return new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1868 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1465 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1198 |
}
// DORIS ADDED END
return result;
}
private JoinTableSegment generateJoinTableSourceFromEscapedTableReference(final TableReferenceContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setLeft(tableSegment);
result.setJoinType(JoinType.COMMA.name());
result.setRight((TableSegment) visit(ctx));
return result;
}
@Override
public ASTNode visitEscapedTableReference(final EscapedTableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableReference(final TableReferenceContext ctx) {
TableSegment result;
TableSegment left;
left = null == ctx.tableFactor() ? (TableSegment) visit(ctx.escapedTableReference()) : (TableSegment) visit(ctx.tableFactor());
for (JoinedTableContext each : ctx.joinedTable()) {
left = visitJoinedTable(each, left);
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 324 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 353 |
public final ASTNode visitBitExpr(final ClickHouseStatementParser.BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return createExpressionSegment(visit(ctx.simpleExpr()), ctx);
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createExpressionSegment(final ASTNode astNode, final ParserRuleContext context) {
if (astNode instanceof StringLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((StringLiteralValue) astNode).getValue());
}
if (astNode instanceof NumberLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((NumberLiteralValue) astNode).getValue());
}
if (astNode instanceof BooleanLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((BooleanLiteralValue) astNode).getValue());
}
if (astNode instanceof ParameterMarkerValue) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) astNode;
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(),
parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(segment);
return segment;
}
if (astNode instanceof SubquerySegment) {
return new SubqueryExpressionSegment((SubquerySegment) astNode);
}
if (astNode instanceof OtherLiteralValue) {
return new CommonExpressionSegment(context.getStart().getStartIndex(), context.getStop().getStopIndex(), ((OtherLiteralValue) astNode).getValue());
}
return astNode;
}
@Override
public final ASTNode visitSimpleExpr(final ClickHouseStatementParser.SimpleExprContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 517 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 527 |
visit(each);
}
for (SimpleExprContext each : ctx.simpleExpr()) {
visit(each);
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), text);
}
@Override
public ASTNode visitColumnRef(final ColumnRefContext ctx) {
int identifierCount = ctx.identifier().size();
ColumnSegment result;
if (1 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(0)));
} else if (2 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
result.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
} else {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(2)));
OwnerSegment owner = new OwnerSegment(ctx.identifier(1).start.getStartIndex(), ctx.identifier(1).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
owner.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
result.setOwner(owner);
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 311 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 541 |
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
return visit(ctx.bitExpr(0));
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ListExpression right = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
right.getItems().add((ExpressionSegment) visit(each));
}
String operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private InExpression createInSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 324 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 599 |
public final ASTNode visitBitExpr(final ClickHouseStatementParser.BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return createExpressionSegment(visit(ctx.simpleExpr()), ctx);
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createExpressionSegment(final ASTNode astNode, final ParserRuleContext context) {
if (astNode instanceof StringLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((StringLiteralValue) astNode).getValue());
}
if (astNode instanceof NumberLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((NumberLiteralValue) astNode).getValue());
}
if (astNode instanceof BooleanLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((BooleanLiteralValue) astNode).getValue());
}
if (astNode instanceof ParameterMarkerValue) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) astNode;
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(),
parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(segment);
return segment;
}
if (astNode instanceof SubquerySegment) {
return new SubqueryExpressionSegment((SubquerySegment) astNode);
}
if (astNode instanceof OtherLiteralValue) {
return new CommonExpressionSegment(context.getStart().getStartIndex(), context.getStop().getStopIndex(), ((OtherLiteralValue) astNode).getValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1233 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1270 |
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.TIMESTAMPDIFF().getText(), getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx.expr()));
return result;
}
@Override
public final ASTNode visitRegularFunction(final RegularFunctionContext ctx) {
return null == ctx.completeRegularFunction() ? visit(ctx.shorthandRegularFunction()) : visit(ctx.completeRegularFunction());
}
@Override
public ASTNode visitCompleteRegularFunction(final CompleteRegularFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.regularFunctionName().getText(), getOriginalText(ctx));
Collection<ExpressionSegment> expressionSegments = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
result.getParameters().addAll(expressionSegments);
return result;
}
@Override
public ASTNode visitShorthandRegularFunction(final ShorthandRegularFunctionContext ctx) {
String text = getOriginalText(ctx);
FunctionSegment result;
if (null != ctx.CURRENT_TIME()) {
result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.CURRENT_TIME().getText(), text);
if (null != ctx.NUMBER_()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.NUMBER_().getSymbol().getStartIndex(), ctx.NUMBER_().getSymbol().getStopIndex(),
new NumberLiteralValue(ctx.NUMBER_().getText())));
}
} else {
result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), text);
}
return result;
}
private ASTNode visitRemainSimpleExpr(final SimpleExprContext ctx) {
if (null != ctx.caseExpression()) {
return visit(ctx.caseExpression());
}
if (null != ctx.BINARY()) {
return visit(ctx.simpleExpr(0)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 836 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 771 |
}
@Override
public ASTNode visitTypeDatetimePrecision(final TypeDatetimePrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(Integer.parseInt(ctx.NUMBER_().getText()));
return result;
}
@Override
public ASTNode visitOrderByClause(final OrderByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new OrderBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection;
if (null != ctx.direction()) {
orderDirection = null == ctx.direction().DESC() ? OrderDirection.ASC : OrderDirection.DESC;
} else {
orderDirection = OrderDirection.ASC;
}
if (null != ctx.numberLiterals()) {
return new IndexOrderByItemSegment(ctx.numberLiterals().getStart().getStartIndex(), ctx.numberLiterals().getStop().getStopIndex(),
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
} else {
ASTNode expr = visitExpr(ctx.expr());
if (expr instanceof ColumnSegment) {
return new ColumnOrderByItemSegment((ColumnSegment) expr, orderDirection, null);
} else {
return new ExpressionOrderByItemSegment(ctx.expr().getStart().getStartIndex(),
ctx.expr().getStop().getStopIndex(), getOriginalText(ctx.expr()), orderDirection, null, (ExpressionSegment) expr);
}
}
}
@Override
public ASTNode visitInsert(final InsertContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 616 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 459 |
return new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) {
return visit(ctx.intervalExpression());
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
ExpressionSegment expr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr(0));
return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()), expr);
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
}
if (null != ctx.matchExpression()) {
return visit(ctx.matchExpression());
}
if (null != ctx.notOperator()) {
ASTNode expression = visit(ctx.simpleExpr(0));
if (expression instanceof ExistsSubqueryExpression) {
((ExistsSubqueryExpression) expression).setNot(true);
return expression;
}
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1140 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1634 |
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef());
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
return new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) {
return visit(expr);
}
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitBlobValue(final BlobValueContext ctx) {
return new StringLiteralValue(ctx.string_().getText());
}
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
DeleteStatement result = new DeleteStatement(getDatabaseType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 229 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 289 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 305 |
public final ASTNode visitBooleanPrimary(final ClickHouseStatementParser.BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(),
ctx.NOT().getSymbol().getStopIndex()))).concat(" ");
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex())));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 459 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 638 |
return null == ctx.EXISTS() ? new SubqueryExpressionSegment(subquerySegment) : new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) {
return visit(ctx.intervalExpression());
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
ExpressionSegment expr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr(0));
return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()), expr);
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
}
if (null != ctx.matchExpression()) {
return visit(ctx.matchExpression());
}
if (null != ctx.notOperator()) {
ASTNode expression = visit(ctx.simpleExpr(0));
if (expression instanceof ExistsSubqueryExpression) {
((ExistsSubqueryExpression) expression).setNot(true);
return expression;
}
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1358 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 802 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1395 |
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.dataTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public ASTNode visitFieldLength(final FieldLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(new BigDecimal(ctx.length.getText()).intValue());
return result;
}
@Override
public ASTNode visitPrecision(final PrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
return result;
}
@Override
public ASTNode visitTypeDatetimePrecision(final TypeDatetimePrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(Integer.parseInt(ctx.NUMBER_().getText()));
return result;
}
@Override
public final ASTNode visitOrderByClause(final OrderByClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 52 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 56 |
public OpenGaussDCLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitGrant(final GrantContext ctx) {
GrantStatement result = new GrantStatement(getDatabaseType());
if (containsTableSegment(ctx.privilegeClause())) {
result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
}
return result;
}
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
RevokeStatement result = new RevokeStatement(getDatabaseType());
if (containsTableSegment(ctx.privilegeClause())) {
result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
}
return result;
}
private boolean containsTableSegment(final PrivilegeClauseContext ctx) {
return null != ctx && null != ctx.onObjectClause() && null != ctx.onObjectClause().privilegeLevel() && null != ctx.onObjectClause().privilegeLevel().tableNames();
}
@SuppressWarnings("unchecked")
private Collection<SimpleTableSegment> getTableSegments(final PrivilegeClauseContext ctx) {
return ((CollectionValue<SimpleTableSegment>) visit(ctx.onObjectClause().privilegeLevel().tableNames())).getValue();
}
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
return new CreateUserStatement(getDatabaseType());
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
return new DropUserStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
return new DropRoleStatement(getDatabaseType());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 616 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 475 |
return new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) {
return visit(ctx.intervalExpression());
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
ExpressionSegment expr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr(0));
return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()), expr);
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
}
if (null != ctx.matchExpression()) {
return visit(ctx.matchExpression());
}
if (null != ctx.notOperator()) {
ASTNode expression = visit(ctx.simpleExpr(0));
if (expression instanceof ExistsSubqueryExpression) {
((ExistsSubqueryExpression) expression).setNot(true);
return expression;
}
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 638 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 475 |
return new SubqueryExpressionSegment(subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) {
return visit(ctx.intervalExpression());
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.collateClause()) {
ExpressionSegment expr = null == ctx.simpleExpr() ? null : (ExpressionSegment) visit(ctx.simpleExpr(0));
return new CollateExpression(startIndex, stopIndex, (SimpleExpressionSegment) visit(ctx.collateClause()), expr);
}
if (null != ctx.columnRef()) {
return visit(ctx.columnRef());
}
if (null != ctx.matchExpression()) {
return visit(ctx.matchExpression());
}
if (null != ctx.notOperator()) {
ASTNode expression = visit(ctx.simpleExpr(0));
if (expression instanceof ExistsSubqueryExpression) {
((ExistsSubqueryExpression) expression).setNot(true);
return expression;
}
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 192 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 236 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 237 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 177 |
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
UnreservedWordContext unreservedWord = ctx.unreservedWord();
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) {
ColumnSegment result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowFunctionStatusExecutor.java | shardingsphere-proxy-backend-mysql | 44 |
| org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/show/MySQLShowProcedureStatusExecutor.java | shardingsphere-proxy-backend-mysql | 44 |
private final MySQLShowFunctionStatusStatement sqlStatement;
private MergedResult mergedResult;
@Override
public void execute(final ConnectionSession connectionSession, final ShardingSphereMetaData metaData) {
mergedResult = new LocalDataMergedResult(Collections.emptyList());
}
@Override
public QueryResultMetaData getQueryResultMetaData() {
List<RawQueryResultColumnMetaData> columns = new ArrayList<>(11);
columns.add(new RawQueryResultColumnMetaData("", "Db", "Db", Types.VARCHAR, "VARCHAR", 255, 0));
columns.add(new RawQueryResultColumnMetaData("", "Name", "Name", Types.VARCHAR, "VARCHAR", 255, 0));
columns.add(new RawQueryResultColumnMetaData("", "Type", "Type", Types.VARCHAR, "VARCHAR", 64, 0));
columns.add(new RawQueryResultColumnMetaData("", "Definer", "Definer", Types.VARCHAR, "VARCHAR", 64, 0));
columns.add(new RawQueryResultColumnMetaData("", "Modified", "Modified", Types.VARCHAR, "VARCHAR", 64, 0));
columns.add(new RawQueryResultColumnMetaData("", "Created", "Created", Types.VARCHAR, "VARCHAR", 64, 0));
columns.add(new RawQueryResultColumnMetaData("", "Security_type", "Security_type", Types.VARCHAR, "VARCHAR", 64, 0));
columns.add(new RawQueryResultColumnMetaData("", "Comment", "Comment", Types.VARCHAR, "VARCHAR", 120, 0));
columns.add(new RawQueryResultColumnMetaData("", "character_set_client", "character_set_client", Types.VARCHAR, "VARCHAR", 20, 0));
columns.add(new RawQueryResultColumnMetaData("", "collation_connection", "collation_connection", Types.VARCHAR, "VARCHAR", 20, 0));
columns.add(new RawQueryResultColumnMetaData("", "Database_Collation", "Database_Collation", Types.VARCHAR, "VARCHAR", 20, 0));
return new RawQueryResultMetaData(columns);
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 666 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 811 |
return new DropFunctionStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue());
return result;
}
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
return result;
}
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
NameContext nameContext = ((AlterRenameViewContext) ctx.alterViewClauses()).name();
result.setRenameView(
new SimpleTableSegment(new TableNameSegment(nameContext.getStart().getStartIndex(), nameContext.getStop().getStopIndex(), (IdentifierValue) visit(nameContext.identifier()))));
}
return result;
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
return new DropDatabaseStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name())).getValue(), null != ctx.ifExists());
}
@Override
public ASTNode visitDropServer(final DropServerContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 179 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1703 |
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visitColumnName(ctx.columnName());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
return new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) {
return visit(expr);
}
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
DeleteStatement result = new DeleteStatement(getDatabaseType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 678 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 887 |
}
return result;
}
@Override
public ASTNode visitTrimFunction(final TrimFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.TRIM().getText(), getOriginalText(ctx));
if (null != ctx.BOTH()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.BOTH().getSymbol().getStartIndex(), ctx.BOTH().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.BOTH().getSymbol().getText()).getValue()));
}
if (null != ctx.TRAILING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.TRAILING().getSymbol().getStartIndex(), ctx.TRAILING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.TRAILING().getSymbol().getText()).getValue()));
}
if (null != ctx.LEADING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.LEADING().getSymbol().getStartIndex(), ctx.LEADING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.LEADING().getSymbol().getText()).getValue()));
}
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWeightStringFunction(final WeightStringFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 650 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 887 |
}
return result;
}
@Override
public ASTNode visitTrimFunction(final TrimFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.TRIM().getText(), getOriginalText(ctx));
if (null != ctx.BOTH()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.BOTH().getSymbol().getStartIndex(), ctx.BOTH().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.BOTH().getSymbol().getText()).getValue()));
}
if (null != ctx.TRAILING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.TRAILING().getSymbol().getStartIndex(), ctx.TRAILING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.TRAILING().getSymbol().getText()).getValue()));
}
if (null != ctx.LEADING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.LEADING().getSymbol().getStartIndex(), ctx.LEADING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.LEADING().getSymbol().getText()).getValue()));
}
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWeightStringFunction(final WeightStringFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 324 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 582 |
public final ASTNode visitBitExpr(final ClickHouseStatementParser.BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return createExpressionSegment(visit(ctx.simpleExpr()), ctx);
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createExpressionSegment(final ASTNode astNode, final ParserRuleContext context) {
if (astNode instanceof StringLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((StringLiteralValue) astNode).getValue());
}
if (astNode instanceof NumberLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((NumberLiteralValue) astNode).getValue());
}
if (astNode instanceof BooleanLiteralValue) {
return new LiteralExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(), ((BooleanLiteralValue) astNode).getValue());
}
if (astNode instanceof ParameterMarkerValue) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) astNode;
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(context.start.getStartIndex(), context.stop.getStopIndex(),
parameterMarker.getValue(), parameterMarker.getType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 665 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 533 |
return visitRemainSimpleExpr(ctx);
}
@Override
public ASTNode visitColumnRef(final ColumnRefContext ctx) {
int identifierCount = ctx.identifier().size();
ColumnSegment result;
if (1 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(0)));
} else if (2 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
result.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
} else {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(2)));
OwnerSegment owner = new OwnerSegment(ctx.identifier(1).start.getStartIndex(), ctx.identifier(1).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
owner.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
result.setOwner(owner);
}
return result;
}
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 801 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 330 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 302 |
SelectStatement result = new SelectStatement(databaseType);
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
}
if (null != ctx.fromClause()) {
if (null != ctx.fromClause().tableReferences()) {
TableSegment tableSource = (TableSegment) visit(ctx.fromClause().tableReferences());
result.setFrom(tableSource);
}
if (null != ctx.fromClause().DUAL()) {
TableSegment tableSource = new SimpleTableSegment(new TableNameSegment(ctx.fromClause().DUAL().getSymbol().getStartIndex(),
ctx.fromClause().DUAL().getSymbol().getStopIndex(), new IdentifierValue(ctx.fromClause().DUAL().getText())));
result.setFrom(tableSource);
}
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
if (null != ctx.windowClause()) {
result.setWindow((WindowSegment) visit(ctx.windowClause()));
}
return result;
}
@Override
public ASTNode visitTableValueConstructor(final TableValueConstructorContext ctx) {
SelectStatement result = new SelectStatement(databaseType); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 665 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 523 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 687 |
return visitRemainSimpleExpr(ctx);
}
@Override
public ASTNode visitColumnRef(final ColumnRefContext ctx) {
int identifierCount = ctx.identifier().size();
ColumnSegment result;
if (1 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(0)));
} else if (2 == identifierCount) {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
result.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
} else {
result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier(2)));
OwnerSegment owner = new OwnerSegment(ctx.identifier(1).start.getStartIndex(), ctx.identifier(1).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(1)));
owner.setOwner(new OwnerSegment(ctx.identifier(0).start.getStartIndex(), ctx.identifier(0).stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier(0))));
result.setOwner(owner);
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 92 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 68 |
public FirebirdDDLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (CreateDefinitionContext each : ctx.createDefinition()) {
if (null != each.columnDefinition()) {
result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
}
if (null != each.constraintDefinition()) {
result.getValue().add((ConstraintDefinitionSegment) visit(each.constraintDefinition()));
}
if (null != each.checkConstraintDefinition()) {
result.getValue().add((ConstraintDefinitionSegment) visit(each.checkConstraintDefinition()));
}
}
return result;
}
@Override
public ASTNode visitColumnDefinition(final ColumnDefinitionContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1188 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 683 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1216 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 655 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 892 |
public final ASTNode visitTrimFunction(final TrimFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.TRIM().getText(), getOriginalText(ctx));
if (null != ctx.BOTH()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.BOTH().getSymbol().getStartIndex(), ctx.BOTH().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.BOTH().getSymbol().getText()).getValue()));
}
if (null != ctx.TRAILING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.TRAILING().getSymbol().getStartIndex(), ctx.TRAILING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.TRAILING().getSymbol().getText()).getValue()));
}
if (null != ctx.LEADING()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.LEADING().getSymbol().getStartIndex(), ctx.LEADING().getSymbol().getStopIndex(),
new OtherLiteralValue(ctx.LEADING().getSymbol().getText()).getValue()));
}
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitWeightStringFunction(final WeightStringFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 684 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 230 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 706 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 202 |
}
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) {
return visit(ctx.queryExpressionParens());
}
@Override
public ASTNode visitQueryExpressionParens(final QueryExpressionParensContext ctx) {
if (null != ctx.queryExpressionParens()) {
return visit(ctx.queryExpressionParens());
}
SelectStatement result = (SelectStatement) visit(ctx.queryExpression());
if (null != ctx.lockClauseList()) {
result.setLock((LockSegment) visit(ctx.lockClauseList()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitLockClauseList(final LockClauseListContext ctx) {
LockSegment result = new LockSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (LockClauseContext each : ctx.lockClause()) {
if (null != each.tableLockingList()) {
result.getTables().addAll(generateTablesFromTableAliasRefList(each.tableLockingList().tableAliasRefList()));
}
}
return result;
}
@Override
public ASTNode visitQueryExpression(final QueryExpressionContext ctx) {
SelectStatement result;
if (null != ctx.queryExpressionBody()) {
result = (SelectStatement) visit(ctx.queryExpressionBody());
} else {
result = (SelectStatement) visit(ctx.queryExpressionParens());
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1930 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1515 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1967 |
FunctionTableSegment result = new FunctionTableSegment(exprSegment.getStartIndex(), exprSegment.getStopIndex(), exprSegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setJoinType(getJoinType(ctx));
result.setNatural(null != ctx.naturalJoinType());
TableSegment right = null == ctx.tableFactor() ? (TableSegment) visit(ctx.tableReference()) : (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
return null == ctx.joinSpecification() ? result : visitJoinSpecification(ctx.joinSpecification(), result);
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.innerJoinType()) {
return JoinType.INNER.name();
}
if (null != ctx.outerJoinType()) {
return null == ctx.outerJoinType().LEFT() ? JoinType.RIGHT.name() : JoinType.LEFT.name();
}
if (null != ctx.naturalJoinType()) {
return getNaturalJoinType(ctx.naturalJoinType());
}
return JoinType.COMMA.name();
}
private String getNaturalJoinType(final NaturalJoinTypeContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1462 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1503 |
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
return result;
}
private SubquerySegment createInsertSelectSegment(final InsertSelectClauseContext ctx) {
SelectStatement selectStatement = (SelectStatement) visit(ctx.select());
selectStatement.addParameterMarkers(getParameterMarkerSegments());
return new SubquerySegment(ctx.select().start.getStartIndex(), ctx.select().stop.getStopIndex(), selectStatement, getOriginalText(ctx.select()));
}
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1239 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 727 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1276 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 699 |
public final ASTNode visitRegularFunction(final RegularFunctionContext ctx) {
return null == ctx.completeRegularFunction() ? visit(ctx.shorthandRegularFunction()) : visit(ctx.completeRegularFunction());
}
@Override
public ASTNode visitCompleteRegularFunction(final CompleteRegularFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.regularFunctionName().getText(), getOriginalText(ctx));
Collection<ExpressionSegment> expressionSegments = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
result.getParameters().addAll(expressionSegments);
return result;
}
@Override
public ASTNode visitShorthandRegularFunction(final ShorthandRegularFunctionContext ctx) {
String text = getOriginalText(ctx);
FunctionSegment result;
if (null != ctx.CURRENT_TIME()) {
result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.CURRENT_TIME().getText(), text);
if (null != ctx.NUMBER_()) {
result.getParameters().add(new LiteralExpressionSegment(ctx.NUMBER_().getSymbol().getStartIndex(), ctx.NUMBER_().getSymbol().getStopIndex(),
new NumberLiteralValue(ctx.NUMBER_().getText())));
}
} else {
result = new FunctionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.getText(), text);
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1478 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1088 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 856 |
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext ctx) {
Collection<ColumnAssignmentSegment> columns = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
columns.add((ColumnAssignmentSegment) visit(each));
}
return new OnDuplicateKeyColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1747 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1072 |
ExpressionSegment exprProjection = (ExpressionSegment) visit(ctx.expr());
if (exprProjection instanceof ColumnSegment) {
ColumnProjectionSegment result = new ColumnProjectionSegment((ColumnSegment) exprProjection);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof SubquerySegment) {
SubquerySegment subquerySegment = (SubquerySegment) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(subquerySegment.getStartIndex(), subquerySegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof ExistsSubqueryExpression) {
ExistsSubqueryExpression existsSubqueryExpression = (ExistsSubqueryExpression) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(existsSubqueryExpression.getStartIndex(), existsSubqueryExpression.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((ExistsSubqueryExpression) exprProjection).getSubquery(), text);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias, exprProjection);
}
private ShorthandProjectionSegment createShorthandProjection(final QualifiedShorthandContext shorthand) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierContext identifier = shorthand.identifier().get(shorthand.identifier().size() - 1);
OwnerSegment owner = new OwnerSegment(identifier.getStart().getStartIndex(), identifier.getStop().getStopIndex(), new IdentifierValue(identifier.getText()));
result.setOwner(owner);
if (shorthand.identifier().size() > 1) {
IdentifierContext databaseIdentifier = shorthand.identifier().get(0); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngine.java | shardingsphere-proxy-frontend-opengauss | 91 |
| org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngine.java | shardingsphere-proxy-frontend-postgresql | 79 |
private byte[] md5Salt;
private AuthenticationResult currentAuthResult;
@Override
public int handshake(final ChannelHandlerContext context) {
return ConnectionIdGenerator.getInstance().nextId();
}
@Override
public AuthenticationResult authenticate(final ChannelHandlerContext context, final PacketPayload payload) {
if (SSL_REQUEST_PAYLOAD_LENGTH == payload.getByteBuf().markReaderIndex().readInt() && SSL_REQUEST_CODE == payload.getByteBuf().readInt()) {
if (ProxySSLContext.getInstance().isSSLEnabled()) {
SslHandler sslHandler = new SslHandler(ProxySSLContext.getInstance().newSSLEngine(context.alloc()), true);
context.pipeline().addFirst(SslHandler.class.getSimpleName(), sslHandler);
context.writeAndFlush(new PostgreSQLSSLWillingPacket());
} else {
context.writeAndFlush(new PostgreSQLSSLUnwillingPacket());
}
return AuthenticationResultBuilder.continued();
}
payload.getByteBuf().resetReaderIndex();
AuthorityRule rule = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class);
return startupMessageReceived ? processPasswordMessage(context, (PostgreSQLPacketPayload) payload, rule) : processStartupMessage(context, (PostgreSQLPacketPayload) payload, rule);
}
private AuthenticationResult processPasswordMessage(final ChannelHandlerContext context, final PostgreSQLPacketPayload payload, final AuthorityRule rule) {
char messageType = (char) payload.readInt1();
ShardingSpherePreconditions.checkState(PostgreSQLMessagePacketType.PASSWORD_MESSAGE.getValue() == messageType,
() -> new ProtocolViolationException("password", Character.toString(messageType)));
PostgreSQLPasswordMessagePacket passwordMessagePacket = new PostgreSQLPasswordMessagePacket(payload);
login(rule, passwordMessagePacket.getDigest()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDCLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 697 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 694 |
}
@Override
public ASTNode visitUsername(final UsernameContext ctx) {
UserSegment result = new UserSegment();
if (null != ctx.userIdentifierOrText()) {
result.setUser(new IdentifierValue(ctx.userIdentifierOrText().textOrIdentifier(0).getText()).getValue());
if (null != ctx.userIdentifierOrText().AT_()) {
result.setHost(new IdentifierValue(ctx.userIdentifierOrText().textOrIdentifier(1).getText()).getValue());
}
}
return result;
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
return new DropUserStatement(getDatabaseType(), ctx.username().stream().map(UsernameContext::getText).collect(Collectors.toList()));
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitRenameUser(final RenameUserContext ctx) {
return new MySQLRenameUserStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetDefaultRole(final SetDefaultRoleContext ctx) {
return new MySQLSetDefaultRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetRole(final SetRoleContext ctx) {
return new SetRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetPassword(final SetPasswordContext ctx) {
return new MySQLSetPasswordStatement(getDatabaseType());
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 330 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 823 |
SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
}
if (null != ctx.fromClause()) {
if (null != ctx.fromClause().tableReferences()) {
TableSegment tableSource = (TableSegment) visit(ctx.fromClause().tableReferences());
result.setFrom(tableSource);
}
if (null != ctx.fromClause().DUAL()) {
TableSegment tableSource = new SimpleTableSegment(new TableNameSegment(ctx.fromClause().DUAL().getSymbol().getStartIndex(),
ctx.fromClause().DUAL().getSymbol().getStopIndex(), new IdentifierValue(ctx.fromClause().DUAL().getText())));
result.setFrom(tableSource);
}
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
if (null != ctx.windowClause()) {
result.setWindow((WindowSegment) visit(ctx.windowClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 823 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 302 |
SelectStatement result = new SelectStatement(databaseType);
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
}
if (null != ctx.fromClause()) {
if (null != ctx.fromClause().tableReferences()) {
TableSegment tableSource = (TableSegment) visit(ctx.fromClause().tableReferences());
result.setFrom(tableSource);
}
if (null != ctx.fromClause().DUAL()) {
TableSegment tableSource = new SimpleTableSegment(new TableNameSegment(ctx.fromClause().DUAL().getSymbol().getStartIndex(),
ctx.fromClause().DUAL().getSymbol().getStopIndex(), new IdentifierValue(ctx.fromClause().DUAL().getText())));
result.setFrom(tableSource);
}
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
if (null != ctx.windowClause()) {
result.setWindow((WindowSegment) visit(ctx.windowClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/connector/opengauss/metadata/data/loader/OpenGaussMetaDataLoader.java | shardingsphere-database-connector-opengauss | 152 |
| org/apache/shardingsphere/database/connector/postgresql/metadata/data/loader/PostgreSQLMetaDataLoader.java | shardingsphere-database-connector-postgresql | 191 |
Collection<String> result = new HashSet<>();
try (
PreparedStatement preparedStatement = connection.prepareStatement(getPrimaryKeyMetaDataSQL(schemaNames));
ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String schemaName = resultSet.getString("table_schema");
String tableName = resultSet.getString("table_name");
String columnName = resultSet.getString("column_name");
result.add(schemaName + "," + tableName + "," + columnName);
}
}
return result;
}
private String getPrimaryKeyMetaDataSQL(final Collection<String> schemaNames) {
return String.format(PRIMARY_KEY_META_DATA_SQL, schemaNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
}
private ColumnMetaData loadColumnMetaData(final Collection<String> primaryKeys, final ResultSet resultSet) throws SQLException {
String schemaName = resultSet.getString("table_schema");
String tableName = resultSet.getString("table_name");
String columnName = resultSet.getString("column_name");
String dataType = resultSet.getString("udt_name");
boolean isPrimaryKey = primaryKeys.contains(schemaName + "," + tableName + "," + columnName);
String columnDefault = resultSet.getString("column_default");
boolean generated = null != columnDefault && columnDefault.startsWith("nextval(");
// TODO user defined collation which deterministic is false
boolean caseSensitive = true;
boolean isNullable = "YES".equals(resultSet.getString("is_nullable"));
return new ColumnMetaData(columnName, DataTypeRegistry.getDataType(getDatabaseType(), dataType).orElse(Types.OTHER), isPrimaryKey, generated, caseSensitive, true, false, isNullable);
}
private Collection<TableMetaData> createTableMetaDataList(final Multimap<String, IndexMetaData> tableIndexMetaDataMap, final Multimap<String, ColumnMetaData> tableColumnMetaDataMap) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 457 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 710 |
}
private ASTNode createAggregationSegment(final AggregationFunctionContext ctx, final String aggregationType) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase());
if (null != ctx.distinct()) {
AggregationDistinctProjectionSegment result =
new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), getDistinctExpression(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
private Collection<ExpressionSegment> getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new LinkedList<>();
for (ExprContext each : ctx.expr()) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.castFunction()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 441 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 710 |
}
private ASTNode createAggregationSegment(final AggregationFunctionContext ctx, final String aggregationType) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase());
if (null != ctx.distinct()) {
AggregationDistinctProjectionSegment result =
new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), getDistinctExpression(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
private Collection<ExpressionSegment> getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new LinkedList<>();
for (ExprContext each : ctx.expr()) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.castFunction()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 799 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 552 |
}
@Override
public ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.dataTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public ASTNode visitFieldLength(final FieldLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(new BigDecimal(ctx.length.getText()).intValue());
return result;
}
@Override
public ASTNode visitPrecision(final PrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1413 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 792 |
public final ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection;
if (null != ctx.direction()) {
orderDirection = null == ctx.direction().DESC() ? OrderDirection.ASC : OrderDirection.DESC;
} else {
orderDirection = OrderDirection.ASC;
}
if (null != ctx.numberLiterals()) {
return new IndexOrderByItemSegment(ctx.numberLiterals().getStart().getStartIndex(), ctx.numberLiterals().getStop().getStopIndex(),
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
} else {
ASTNode expr = visitExpr(ctx.expr());
if (expr instanceof ColumnSegment) {
return new ColumnOrderByItemSegment((ColumnSegment) expr, orderDirection, null);
} else {
return new ExpressionOrderByItemSegment(ctx.expr().getStart().getStartIndex(),
ctx.expr().getStop().getStopIndex(), getOriginalText(ctx.expr()), orderDirection, null, (ExpressionSegment) expr);
}
}
}
@Override
public ASTNode visitInsert(final InsertContext ctx) {
// TODO :FIXME, since there is no segment for insertValuesClause, InsertStatement is created by sub rule.
InsertStatement result;
if (null != ctx.insertValuesClause()) {
result = (InsertStatement) visit(ctx.insertValuesClause());
} else if (null != ctx.insertSelectClause()) {
result = (InsertStatement) visit(ctx.insertSelectClause());
} else {
result = new InsertStatement(databaseType); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1358 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 555 |
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.dataTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public ASTNode visitFieldLength(final FieldLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
result.setPrecision(new BigDecimal(ctx.length.getText()).intValue());
return result;
}
@Override
public ASTNode visitPrecision(final PrecisionContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1584 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1634 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 908 |
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef());
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
return new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1935 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1256 |
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setJoinType(getJoinType(ctx));
result.setNatural(null != ctx.naturalJoinType());
TableSegment right = null == ctx.tableFactor() ? (TableSegment) visit(ctx.tableReference()) : (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
return null == ctx.joinSpecification() ? result : visitJoinSpecification(ctx.joinSpecification(), result);
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.innerJoinType()) {
return JoinType.INNER.name();
}
if (null != ctx.outerJoinType()) {
return null == ctx.outerJoinType().LEFT() ? JoinType.RIGHT.name() : JoinType.LEFT.name();
}
if (null != ctx.naturalJoinType()) {
return getNaturalJoinType(ctx.naturalJoinType());
}
return JoinType.COMMA.name();
}
private String getNaturalJoinType(final NaturalJoinTypeContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1972 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1256 |
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
result.setJoinType(getJoinType(ctx));
result.setNatural(null != ctx.naturalJoinType());
TableSegment right = null == ctx.tableFactor() ? (TableSegment) visit(ctx.tableReference()) : (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
return null == ctx.joinSpecification() ? result : visitJoinSpecification(ctx.joinSpecification(), result);
}
private String getJoinType(final JoinedTableContext ctx) {
if (null != ctx.innerJoinType()) {
return JoinType.INNER.name();
}
if (null != ctx.outerJoinType()) {
return null == ctx.outerJoinType().LEFT() ? JoinType.RIGHT.name() : JoinType.LEFT.name();
}
if (null != ctx.naturalJoinType()) {
return getNaturalJoinType(ctx.naturalJoinType());
}
return JoinType.COMMA.name();
}
private String getNaturalJoinType(final NaturalJoinTypeContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1106 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 602 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1112 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 574 |
}
if (null != ctx.castType()) {
result.getParameters().add((DataTypeSegment) visit(ctx.castType()));
}
if (null != ctx.DATETIME()) {
DataTypeSegment dataType = new DataTypeSegment();
dataType.setDataTypeName(ctx.DATETIME().getText());
dataType.setStartIndex(ctx.DATETIME().getSymbol().getStartIndex());
dataType.setStopIndex(ctx.DATETIME().getSymbol().getStopIndex());
if (null != ctx.typeDatetimePrecision()) {
dataType.setDataLength((DataTypeLengthSegment) visit(ctx.typeDatetimePrecision()));
}
result.getParameters().add(dataType);
}
return result;
}
@Override
public ASTNode visitCastType(final CastTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.castTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitConvertFunction(final ConvertFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 263 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 467 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 248 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 494 |
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private ASTNode createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " ";
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 497 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 301 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 508 |
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = new SubqueryExpressionSegment(
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 495 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 273 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 519 |
operatorToken = ctx.NAN().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createCompareSegment(final BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = new SubqueryExpressionSegment( | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 440 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 470 |
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " ";
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 535 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1037 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 507 |
public ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.groupConcatFunction()) {
return visit(ctx.groupConcatFunction());
}
if (null != ctx.windowFunction()) {
return visit(ctx.windowFunction());
}
if (null != ctx.castFunction()) {
return visit(ctx.castFunction());
}
if (null != ctx.convertFunction()) {
return visit(ctx.convertFunction());
}
if (null != ctx.positionFunction()) {
return visit(ctx.positionFunction());
}
if (null != ctx.substringFunction()) {
return visit(ctx.substringFunction());
}
if (null != ctx.extractFunction()) {
return visit(ctx.extractFunction());
}
if (null != ctx.charFunction()) {
return visit(ctx.charFunction());
}
if (null != ctx.trimFunction()) {
return visit(ctx.trimFunction());
}
if (null != ctx.weightStringFunction()) {
return visit(ctx.weightStringFunction());
}
if (null != ctx.valuesFunction()) {
return visit(ctx.valuesFunction());
}
if (null != ctx.currentUserFunction()) {
return visit(ctx.currentUserFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1498 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 403 |
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1355 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1807 |
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((ExistsSubqueryExpression) exprProjection).getSubquery(), text);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias, exprProjection);
}
private ShorthandProjectionSegment createShorthandProjection(final QualifiedShorthandContext shorthand) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierContext identifier = shorthand.identifier().get(shorthand.identifier().size() - 1);
OwnerSegment owner = new OwnerSegment(identifier.getStart().getStartIndex(), identifier.getStop().getStopIndex(), new IdentifierValue(identifier.getText()));
result.setOwner(owner);
if (shorthand.identifier().size() > 1) {
IdentifierContext databaseIdentifier = shorthand.identifier().get(0);
owner.setOwner(new OwnerSegment(databaseIdentifier.getStart().getStartIndex(), databaseIdentifier.getStop().getStopIndex(), new IdentifierValue(databaseIdentifier.getText())));
}
return result;
}
@Override
public ASTNode visitAlias(final AliasContext ctx) {
return new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.textOrIdentifier().getText()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias, final ASTNode projection) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 582 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 357 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 429 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 604 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 445 |
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr());
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.start.getStartIndex(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java | shardingsphere-database-connector-hive | 81 |
| org/apache/shardingsphere/database/connector/presto/metadata/data/loader/PrestoMetaDataLoader.java | shardingsphere-database-connector-presto | 64 |
preparedStatement.setString(1, "default");
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String tableName = resultSet.getString("TABLE_NAME");
ColumnMetaData columnMetaData = loadColumnMetaData(resultSet);
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList<>());
}
result.get(tableName).add(columnMetaData);
}
}
}
return result;
}
private String getTableMetaDataSQL(final Collection<String> tables) {
if (tables.isEmpty()) {
return "SELECT TABLE_CATALOG,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ORDINAL_POSITION,IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG=? ORDER BY ORDINAL_POSITION";
}
String tableNames = tables.stream().map(each -> String.format("'%s'", each).toUpperCase()).collect(Collectors.joining(","));
return String.format("SELECT TABLE_CATALOG,TABLE_NAME,COLUMN_NAME,DATA_TYPE,ORDINAL_POSITION,IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS"
+ " WHERE TABLE_CATALOG=? AND UPPER(TABLE_NAME) IN (%s) ORDER BY ORDINAL_POSITION", tableNames);
}
private ColumnMetaData loadColumnMetaData(final ResultSet resultSet) throws SQLException {
String columnName = resultSet.getString("COLUMN_NAME");
String dataType = resultSet.getString("DATA_TYPE");
boolean isNullable = "YES".equals(resultSet.getString("IS_NULLABLE"));
return new ColumnMetaData(columnName, DataTypeRegistry.getDataType(getDatabaseType(), dataType).orElse(Types.OTHER), Boolean.FALSE, Boolean.FALSE, false, Boolean.TRUE, false, isNullable);
}
@Override
public String getDatabaseType() {
return "Hive"; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1834 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1878 |
|| projection instanceof CollateExpression || projection instanceof NotExpression) {
return createExpressionProjectionSegment(ctx, alias, projection);
}
ExpressionProjectionSegment result = null == alias
? new ExpressionProjectionSegment(projection.getStartIndex(), projection.getStopIndex(), String.valueOf(projection.getText()), projection)
: new ExpressionProjectionSegment(projection.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(projection.getText()), projection);
result.setAlias(alias);
return result;
}
private ExpressionProjectionSegment createExpressionProjectionSegment(final ProjectionContext ctx, final AliasSegment alias, final ExpressionSegment projection) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), projection);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.tableReference(0));
if (ctx.tableReference().size() > 1) {
for (int i = 1; i < ctx.tableReference().size(); i++) {
result = generateJoinTableSourceFromEscapedTableReference(ctx.tableReference(i), result);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1040 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1078 |
return visit(ctx.timeStampDiffFunction());
}
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx), getOriginalText(ctx));
}
@Override
public final ASTNode visitGroupConcatFunction(final GroupConcatFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.GROUP_CONCAT().getText(), getOriginalText(ctx));
for (ExprContext each : getTargetRuleContextFromParseTree(ctx, ExprContext.class)) {
result.getParameters().add((ExpressionSegment) visit(each));
}
return result;
}
private <T extends ParseTree> Collection<T> getTargetRuleContextFromParseTree(final ParseTree parseTree, final Class<? extends T> clazz) {
Collection<T> result = new LinkedList<>();
for (int index = 0; index < parseTree.getChildCount(); index++) {
ParseTree child = parseTree.getChild(index);
if (clazz.isInstance(child)) {
result.add(clazz.cast(child));
} else {
result.addAll(getTargetRuleContextFromParseTree(child, clazz));
}
}
return result;
}
// DORIS ADDED BEGIN
@Override
public final ASTNode visitBitwiseFunction(final BitwiseFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 362 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 391 |
public final ASTNode visitSimpleExpr(final ClickHouseStatementParser.SimpleExprContext ctx) {
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
if (null != ctx.subquery()) {
return new SubquerySegment(startIndex, stopIndex, (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(segment);
return segment;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.functionCall()) {
return visit(ctx.functionCall());
}
if (null != ctx.columnName()) {
return visit(ctx.columnName());
}
return new CommonExpressionSegment(startIndex, stopIndex, ctx.getText());
}
@Override
public final ASTNode visitIntervalExpression(final ClickHouseStatementParser.IntervalExpressionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 197 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 221 |
public ASTNode visitCombineClause(final ClickHouseStatementParser.CombineClauseContext ctx) {
// TODO :Unsupported for union SQL.
return visit(ctx.selectClause(0));
}
@Override
public ASTNode visitSelectClause(final SelectClauseContext ctx) {
SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (!ctx.selectSpecification().isEmpty()) {
result.getProjections().setDistinctRow(isDistinct(ctx.selectSpecification().get(0)));
}
if (null != ctx.fromClause()) {
TableSegment tableSegment = (TableSegment) visit(ctx.fromClause());
result.setFrom(tableSegment);
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
return result;
}
@Override
public ASTNode visitHavingClause(final ClickHouseStatementParser.HavingClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 538 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1157 |
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
}
@Override
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(((KeywordValue) visit(ctx.dataTypeName())).getValue());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.dataTypeLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.dataTypeLength());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (numbers.size() == 1) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
}
if (numbers.size() == 2) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 760 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 764 |
@Override
public ASTNode visitInsertRest(final InsertRestContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
ValuesClauseContext valuesClause = ctx.select().selectNoParens().selectClauseN().simpleSelect().valuesClause();
if (null == valuesClause) {
SelectStatement selectStatement = (SelectStatement) visit(ctx.select());
result.setInsertSelect(new SubquerySegment(ctx.select().start.getStartIndex(), ctx.select().stop.getStopIndex(), selectStatement, getOriginalText(ctx.select())));
} else {
result.getValues().addAll(createInsertValuesSegments(valuesClause));
}
if (null == ctx.insertColumnList()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} else {
InsertColumnListContext insertColumns = ctx.insertColumnList();
CollectionValue<ColumnSegment> columns = (CollectionValue<ColumnSegment>) visit(insertColumns);
InsertColumnsSegment insertColumnsSegment = new InsertColumnsSegment(insertColumns.start.getStartIndex() - 1, insertColumns.stop.getStopIndex() + 1, columns.getValue());
result.setInsertColumns(insertColumnsSegment);
}
return result;
}
@Override
public ASTNode visitOptOnDuplicateKey(final OptOnDuplicateKeyContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 83 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 107 |
public ClickHouseDMLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitInsert(final InsertContext ctx) {
InsertStatement result = (InsertStatement) visit(ctx.insertValuesClause());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.columnNames()) {
ColumnNamesContext columnNames = ctx.columnNames();
CollectionValue<ColumnSegment> columnSegments = (CollectionValue<ColumnSegment>) visit(columnNames);
result.setInsertColumns(new InsertColumnsSegment(columnNames.start.getStartIndex(), columnNames.stop.getStopIndex(), columnSegments.getValue()));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (ClickHouseStatementParser.AssignmentValuesContext each : assignmentValuesContexts) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 273 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 431 |
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitAExpr(final AExprContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 274 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 431 |
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitAExpr(final AExprContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 654 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 764 |
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
}
@Override
public ASTNode visitWithClause(final WithClauseContext ctx) {
Collection<CommonTableExpressionSegment> commonTableExpressions = new LinkedList<>();
for (CteClauseContext each : ctx.cteClause()) {
commonTableExpressions.add((CommonTableExpressionSegment) visit(each));
}
return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions, null != ctx.RECURSIVE());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCteClause(final CteClauseContext ctx) {
CommonTableExpressionSegment result = new CommonTableExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (AliasSegment) visit(ctx.alias()),
new SubquerySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
if (null != ctx.columnNames()) {
CollectionValue<ColumnSegment> columns = (CollectionValue<ColumnSegment>) visit(ctx.columnNames());
result.getColumns().addAll(columns.getValue());
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 211 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 183 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
if (null != ctx.addColumnSpecification()) {
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.addColumnSpecification())).getValue());
}
if (null != ctx.modifyColumnSpecification()) {
result.getValue().add((ModifyColumnDefinitionSegment) visit(ctx.modifyColumnSpecification()));
}
if (null != ctx.dropColumnSpecification()) {
result.getValue().add((DropColumnDefinitionSegment) visit(ctx.dropColumnSpecification()));
}
return result;
}
@Override
public ASTNode visitAddColumnSpecification(final AddColumnSpecificationContext ctx) {
CollectionValue<AddColumnDefinitionSegment> result = new CollectionValue<>();
AddColumnDefinitionSegment addColumnDefinition = new AddColumnDefinitionSegment(
ctx.columnDefinition().getStart().getStartIndex(), ctx.columnDefinition().getStop().getStopIndex(),
Collections.singletonList((ColumnDefinitionSegment) visit(ctx.columnDefinition())));
result.getValue().add(addColumnDefinition);
return result;
}
@Override
public ASTNode visitModifyColumnSpecification(final ModifyColumnSpecificationContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussTCLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 59 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLTCLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 103 |
}
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitAbort(final AbortContext ctx) {
return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
return new SavepointStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitRollbackToSavepoint(final RollbackToSavepointContext ctx) {
return new RollbackStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitReleaseSavepoint(final ReleaseSavepointContext ctx) {
return new ReleaseSavepointStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitStartTransaction(final StartTransactionContext ctx) {
return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitEnd(final EndContext ctx) {
return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitSetConstraints(final SetConstraintsContext ctx) {
return new SetConstraintsStatement(getDatabaseType());
}
@Override
public ASTNode visitCommitPrepared(final CommitPreparedContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1418 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1386 |
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText()));
}
private LimitSegment createLimitSegmentWhenLimitAndOffset(final SelectLimitContext ctx) {
ParseTree astNode0 = ctx.getChild(0);
LimitValueSegment rowCount = null;
LimitValueSegment offset = null;
if (astNode0 instanceof LimitClauseContext) {
rowCount = null == ctx.limitClause().selectLimitValue() ? null : (LimitValueSegment) visit(ctx.limitClause().selectLimitValue());
} else {
offset = (LimitValueSegment) visit(ctx.offsetClause().selectOffsetValue());
}
ParseTree astNode1 = ctx.getChild(1);
if (astNode1 instanceof LimitClauseContext) {
rowCount = null == ctx.limitClause().selectLimitValue() ? null : (LimitValueSegment) visit(ctx.limitClause().selectLimitValue());
} else {
offset = (LimitValueSegment) visit(ctx.offsetClause().selectOffsetValue());
}
return new LimitSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), offset, rowCount);
}
private LimitSegment createLimitSegmentWhenRowCountOrOffsetAbsent(final SelectLimitContext ctx) {
if (null != ctx.limitClause()) {
if (null != ctx.limitClause().selectOffsetValue()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 259 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 267 |
public abstract class DorisStatementVisitor extends DorisStatementBaseVisitor<ASTNode> {
private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
public final ASTNode visitParameterMarker(final ParameterMarkerContext ctx) {
return new ParameterMarkerValue(parameterMarkerSegments.size(), ParameterMarkerType.QUESTION);
}
@Override
public final ASTNode visitLiterals(final LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.temporalLiterals()) {
return visit(ctx.temporalLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/type/AlterShardingTableRuleStatementAssert.java | shardingsphere-test-it-parser | 63 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/type/CreateShardingTableRuleStatementAssert.java | shardingsphere-test-it-parser | 67 |
Collection<TableRuleSegment> actualTableRules = actual.getRules().stream().map(TableRuleSegment.class::cast).collect(Collectors.toList());
assertShardingTableRules(assertContext, actualTableRules, tableRuleStatementTestCase.getRules());
}
}
}
private static void assertShardingAutoTableRules(final SQLCaseAssertContext assertContext, final Collection<AutoTableRuleSegment> actual, final List<ExpectedAutoTableRule> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual sharding auto table rule should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual sharding auto table rule should exist."));
int count = 0;
for (AutoTableRuleSegment each : actual) {
AutoTableRuleAssert.assertIs(assertContext, each, expected.get(count));
count++;
}
}
}
private static void assertShardingTableRules(final SQLCaseAssertContext assertContext, final Collection<TableRuleSegment> actual, final List<ExpectedTableRule> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual sharding table rule should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual sharding table rule should exist."));
int count = 0;
for (TableRuleSegment each : actual) {
TableRuleAssert.assertIs(assertContext, each, expected.get(count));
count++;
}
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/mask/algorithm/cover/KeepFromXToYMaskAlgorithm.java | shardingsphere-mask-core | 32 |
| org/apache/shardingsphere/mask/algorithm/cover/MaskFromXToYMaskAlgorithm.java | shardingsphere-mask-core | 32 |
public final class KeepFromXToYMaskAlgorithm implements MaskAlgorithm<Object, String> {
private static final String FROM_X = "from-x";
private static final String TO_Y = "to-y";
private static final String REPLACE_CHAR = "replace-char";
private Integer fromX;
private Integer toY;
private Character replaceChar;
@Override
public void init(final Properties props) {
fromX = createFromX(props);
toY = createToY(props);
replaceChar = createReplaceChar(props);
ShardingSpherePreconditions.checkState(fromX <= toY, () -> new AlgorithmInitializationException(this, "fromX must be less than or equal to toY"));
}
private Integer createFromX(final Properties props) {
MaskAlgorithmPropertiesChecker.checkPositiveInteger(props, FROM_X, this);
return Integer.parseInt(props.getProperty(FROM_X));
}
private Integer createToY(final Properties props) {
MaskAlgorithmPropertiesChecker.checkPositiveInteger(props, TO_Y, this);
return Integer.parseInt(props.getProperty(TO_Y));
}
private Character createReplaceChar(final Properties props) {
MaskAlgorithmPropertiesChecker.checkSingleChar(props, REPLACE_CHAR, this);
return props.getProperty(REPLACE_CHAR).charAt(0);
}
@HighFrequencyInvocation
@Override
public String mask(final Object plainValue) {
String result = null == plainValue ? null : String.valueOf(plainValue);
if (Strings.isNullOrEmpty(result)) {
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1488 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1531 |
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext ctx) {
Collection<ColumnAssignmentSegment> columns = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
columns.add((ColumnAssignmentSegment) visit(each));
}
return new OnDuplicateKeyColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
}
@Override
public ASTNode visitReplace(final ReplaceContext ctx) {
// TODO :FIXME, since there is no segment for replaceValuesClause, ReplaceStatement is created by sub rule.
InsertStatement result;
if (null != ctx.replaceValuesClause()) {
result = (InsertStatement) visit(ctx.replaceValuesClause());
} else if (null != ctx.replaceSelectClause()) {
result = (InsertStatement) visit(ctx.replaceSelectClause());
} else {
result = new InsertStatement(databaseType);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
}
result.setTable((SimpleTableSegment) visit(ctx.tableName())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 229 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 408 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 214 |
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.LP_()) {
return visit(ctx.expr(0));
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 402 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 492 |
return new AlterMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitAddConstraintSpecification(final AddConstraintSpecificationContext ctx) {
return new AddConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintDefinitionSegment) visit(ctx.tableConstraint()));
}
@Override
public ASTNode visitValidateConstraintSpecification(final ValidateConstraintSpecificationContext ctx) {
return new ValidateConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
}
@Override
public ASTNode visitModifyConstraintSpecification(final ModifyConstraintSpecificationContext ctx) {
return new ModifyConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
}
@Override
public ASTNode visitDropConstraintSpecification(final DropConstraintSpecificationContext ctx) {
return new DropConstraintDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (ConstraintSegment) visit(ctx.constraintName()));
}
@Override
public ASTNode visitAlterDomain(final AlterDomainContext ctx) {
return new AlterDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitRenameTableSpecification(final RenameTableSpecificationContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1413 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 857 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1450 |
public final ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection;
if (null != ctx.direction()) {
orderDirection = null == ctx.direction().DESC() ? OrderDirection.ASC : OrderDirection.DESC;
} else {
orderDirection = OrderDirection.ASC;
}
if (null != ctx.numberLiterals()) {
return new IndexOrderByItemSegment(ctx.numberLiterals().getStart().getStartIndex(), ctx.numberLiterals().getStop().getStopIndex(),
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
} else {
ASTNode expr = visitExpr(ctx.expr());
if (expr instanceof ColumnSegment) {
return new ColumnOrderByItemSegment((ColumnSegment) expr, orderDirection, null);
} else {
return new ExpressionOrderByItemSegment(ctx.expr().getStart().getStartIndex(),
ctx.expr().getStop().getStopIndex(), getOriginalText(ctx.expr()), orderDirection, null, (ExpressionSegment) expr);
}
}
}
@Override
public ASTNode visitInsert(final InsertContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1627 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1672 |
}
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitBlobValue(final BlobValueContext ctx) {
return new StringLiteralValue(ctx.string_().getText());
}
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
DeleteStatement result = new DeleteStatement(databaseType);
if (null != ctx.multipleTablesClause()) {
result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
} else {
result.setTable((TableSegment) visit(ctx.singleTableClause()));
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1315 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 763 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 735 |
ExpressionSegment caseExpr = null == ctx.expr() ? null : (ExpressionSegment) visit(ctx.expr());
ExpressionSegment elseExpr = null == ctx.caseElse() ? null : (ExpressionSegment) visit(ctx.caseElse().expr());
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
public ASTNode visitVariable(final VariableContext ctx) {
return null == ctx.systemVariable() ? visit(ctx.userVariable()) : visit(ctx.systemVariable());
}
@Override
public ASTNode visitUserVariable(final UserVariableContext ctx) {
return new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.textOrIdentifier().getText());
}
@Override
public ASTNode visitSystemVariable(final SystemVariableContext ctx) {
VariableSegment result = new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.rvalueSystemVariable().getText());
if (null != ctx.systemVariableScope) {
result.setScope(ctx.systemVariableScope.getText());
}
return result;
}
@Override
public final ASTNode visitMatchExpression(final MatchExpressionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 877 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 446 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 418 |
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
if (null != ctx.jsonFunction()) {
return visit(ctx.jsonFunction());
}
if (null != ctx.udfFunction()) {
return visit(ctx.udfFunction());
}
throw new IllegalStateException("FunctionCallContext must have aggregationFunction, regularFunction, specialFunction, jsonFunction or udfFunction.");
}
@Override
public ASTNode visitUdfFunction(final UdfFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx), getOriginalText(ctx));
if (null != ctx.expr()) {
for (ExprContext each : ctx.expr()) {
result.getParameters().add((ExpressionSegment) visit(each));
}
}
return result;
}
@Override
public final ASTNode visitAggregationFunction(final AggregationFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 64 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 64 |
public OpenGaussDALStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitShow(final ShowContext ctx) {
if (null != ctx.varName()) {
return new ShowStatement(getDatabaseType(), ctx.varName().getText());
}
if (null != ctx.ZONE()) {
return new ShowStatement(getDatabaseType(), "timezone");
}
if (null != ctx.ISOLATION()) {
return new ShowStatement(getDatabaseType(), "transaction_isolation");
}
if (null != ctx.AUTHORIZATION()) {
return new ShowStatement(getDatabaseType(), "session_authorization");
}
return new ShowStatement(getDatabaseType(), "ALL");
}
@Override
public ASTNode visitSet(final SetContext ctx) {
List<VariableAssignSegment> variableAssigns = new LinkedList<>();
if (null != ctx.configurationParameterClause()) {
VariableAssignSegment variableAssignSegment = (VariableAssignSegment) visit(ctx.configurationParameterClause());
if (null != ctx.runtimeScope()) {
variableAssignSegment.getVariable().setScope(ctx.runtimeScope().getText());
}
variableAssigns.add(variableAssignSegment);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 555 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 503 |
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
Collection<String> dataTypeNames = new LinkedList<>();
for (int i = 0; i < ctx.getChildCount(); i++) {
dataTypeNames.add(ctx.getChild(i).getText());
}
return new KeywordValue(String.join(" ", dataTypeNames));
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection<ExprContext> exprContexts) {
for (ExprContext each : exprContexts) {
visit(each);
}
}
@Override
public final ASTNode visitOrderByClause(final OrderByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new OrderBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public final ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection = null == ctx.DESC() ? OrderDirection.ASC : OrderDirection.DESC;
if (null != ctx.numberLiterals()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 178 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 151 |
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visitColumnName(ctx.columnName());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedDatabaseMetaDataResultSet.java | shardingsphere-jdbc | 39 |
| org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedGeneratedKeysResultSet.java | shardingsphere-jdbc | 120 |
@Override
public final InputStream getAsciiStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getAsciiStream");
}
@Override
public final InputStream getAsciiStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getAsciiStream");
}
@Override
public final InputStream getUnicodeStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getUnicodeStream");
}
@Override
public final InputStream getUnicodeStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getUnicodeStream");
}
@Override
public final InputStream getBinaryStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getBinaryStream");
}
@Override
public final InputStream getBinaryStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getBinaryStream");
}
@Override
public final SQLWarning getWarnings() throws SQLException {
throw new SQLFeatureNotSupportedException("getWarnings");
}
@Override
public final void clearWarnings() throws SQLException {
throw new SQLFeatureNotSupportedException("clearWarnings");
}
@Override
public final Reader getCharacterStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException("getCharacterStream");
}
@Override
public final Reader getCharacterStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException("getCharacterStream");
}
@Override
public final Array getArray(final int columnIndex) throws SQLException { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 152 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1703 |
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visitColumnName(ctx.columnName());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 135 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 116 |
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.columnNames()) {
ColumnNamesContext columnNames = ctx.columnNames();
CollectionValue<ColumnSegment> columnSegments = (CollectionValue<ColumnSegment>) visit(columnNames);
result.setInsertColumns(new InsertColumnsSegment(columnNames.start.getStartIndex(), columnNames.stop.getStopIndex(), columnSegments.getValue()));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitReturningClause(final ReturningClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1197 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 501 |
result.getParameters().addAll(getExpressions(ctx.expr()));
return result;
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
Collection<String> dataTypeNames = new LinkedList<>();
for (int i = 0; i < ctx.getChildCount(); i++) {
dataTypeNames.add(ctx.getChild(i).getText());
}
return new KeywordValue(String.join(" ", dataTypeNames));
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection<ExprContext> exprContexts) {
for (ExprContext each : exprContexts) {
visit(each);
}
}
@Override
public final ASTNode visitOrderByClause(final OrderByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new OrderBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public final ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection = null == ctx.DESC() ? OrderDirection.ASC : OrderDirection.DESC; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 166 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 282 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 151 |
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
UnreservedWordContext unreservedWord = ctx.unreservedWord();
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/mask/algorithm/cover/KeepFirstNLastMMaskAlgorithm.java | shardingsphere-mask-core | 30 |
| org/apache/shardingsphere/mask/algorithm/cover/MaskFirstNLastMMaskAlgorithm.java | shardingsphere-mask-core | 30 |
public final class KeepFirstNLastMMaskAlgorithm implements MaskAlgorithm<Object, String> {
private static final String FIRST_N = "first-n";
private static final String LAST_M = "last-m";
private static final String REPLACE_CHAR = "replace-char";
private Integer firstN;
private Integer lastM;
private Character replaceChar;
@Override
public void init(final Properties props) {
firstN = createFirstN(props);
lastM = createLastM(props);
replaceChar = createReplaceChar(props);
}
private Integer createFirstN(final Properties props) {
MaskAlgorithmPropertiesChecker.checkPositiveInteger(props, FIRST_N, this);
return Integer.parseInt(props.getProperty(FIRST_N));
}
private Integer createLastM(final Properties props) {
MaskAlgorithmPropertiesChecker.checkPositiveInteger(props, LAST_M, this);
return Integer.parseInt(props.getProperty(LAST_M));
}
private Character createReplaceChar(final Properties props) {
MaskAlgorithmPropertiesChecker.checkSingleChar(props, REPLACE_CHAR, this);
return props.getProperty(REPLACE_CHAR).charAt(0);
}
@HighFrequencyInvocation
@Override
public String mask(final Object plainValue) {
String result = null == plainValue ? null : String.valueOf(plainValue);
if (Strings.isNullOrEmpty(result)) {
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 555 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1199 |
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
Collection<String> dataTypeNames = new LinkedList<>();
for (int i = 0; i < ctx.getChildCount(); i++) {
dataTypeNames.add(ctx.getChild(i).getText());
}
return new KeywordValue(String.join(" ", dataTypeNames));
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection<ExprContext> exprContexts) {
for (ExprContext each : exprContexts) {
visit(each);
}
}
@Override
public final ASTNode visitOrderByClause(final OrderByClauseContext ctx) {
Collection<OrderByItemSegment> items = new LinkedList<>();
for (OrderByItemContext each : ctx.orderByItem()) {
items.add((OrderByItemSegment) visit(each));
}
return new OrderBySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), items);
}
@Override
public final ASTNode visitOrderByItem(final OrderByItemContext ctx) {
OrderDirection orderDirection = null == ctx.DESC() ? OrderDirection.ASC : OrderDirection.DESC; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 475 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1231 |
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.expr()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 463 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 495 |
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 474 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 495 |
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText + ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/type/AlterDefaultShardingStrategyStatementAssert.java | shardingsphere-test-it-parser | 45 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/type/CreateDefaultShardingStrategyStatementAssert.java | shardingsphere-test-it-parser | 46 |
assertThat(assertContext.getText(String.format("`%s`'s default sharding strategy segment assertion error: ", actual.getClass().getSimpleName())),
actual.getDefaultType(), is(expected.getStrategy().getDefaultType()));
assertThat(assertContext.getText(String.format("`%s`'s default sharding strategy segment assertion error: ", actual.getClass().getSimpleName())),
actual.getShardingColumn(), is(expected.getStrategy().getShardingColumn()));
assertThat(assertContext.getText(String.format("`%s`'s default sharding strategy segment assertion error: ", actual.getClass().getSimpleName())),
actual.getStrategyType(), is(expected.getStrategy().getStrategyType()));
if (!"none".equalsIgnoreCase(actual.getStrategyType())) {
assertThat(assertContext.getText(String.format("`%s`'s default sharding strategy segment assertion error: ", actual.getClass().getSimpleName())),
actual.getAlgorithmSegment().getName(), is(expected.getStrategy().getAlgorithmSegment().getName()));
}
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 497 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 478 |
return visit(ctx.genIdFunction());
}
return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getChild(0).getChild(0).getText(), getOriginalText(ctx));
}
@Override
public final ASTNode visitCastFunction(final CastFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CAST().getText(), getOriginalText(ctx));
ASTNode exprSegment = visit(ctx.expr());
if (exprSegment instanceof ColumnSegment) {
result.getParameters().add((ColumnSegment) exprSegment);
} else if (exprSegment instanceof LiteralExpressionSegment) {
result.getParameters().add((LiteralExpressionSegment) exprSegment);
}
result.getParameters().add((DataTypeSegment) visit(ctx.dataType()));
return result;
}
@Override
public final ASTNode visitGenIdFunction(final GenIdFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 285 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 324 |
public ASTNode visitTableNameWithDb(final TableNameWithDbContext ctx) {
if (1 == ctx.identifier().size()) {
return new SimpleTableSegment(new TableNameSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
new IdentifierValue(ctx.identifier(0).getText())));
} else {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.identifier(1).getStart().getStartIndex(),
ctx.identifier(1).getStop().getStopIndex(), new IdentifierValue(ctx.identifier(1).getText())));
result.setOwner(new org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment(
ctx.identifier(0).getStart().getStartIndex(), ctx.identifier(0).getStop().getStopIndex(),
new IdentifierValue(ctx.identifier(0).getText())));
return result;
}
}
@Override
public ASTNode visitTableConstraint(final TableConstraintContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 309 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 148 |
return new StringLiteralValue(ctx.getText());
}
@Override
public ASTNode visitString_(final String_Context ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public ASTNode visitTemporalLiterals(final TemporalLiteralsContext ctx) {
// TODO deal with TemporalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 384 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1504 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 409 |
public ASTNode visitTableFactor(final ClickHouseStatementParser.TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final ClickHouseStatementParser.JoinedTableContext ctx, final TableSegment tableSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 763 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 888 |
return new DropDirectoryStatement(getDatabaseType());
}
@Override
public ASTNode visitPrepare(final PrepareContext ctx) {
PrepareStatement result = new PrepareStatement(getDatabaseType());
if (null != ctx.preparableStmt().select()) {
result.setSelect((SelectStatement) visit(ctx.preparableStmt().select()));
}
if (null != ctx.preparableStmt().insert()) {
result.setInsert((InsertStatement) visit(ctx.preparableStmt().insert()));
}
if (null != ctx.preparableStmt().update()) {
result.setUpdate((UpdateStatement) visit(ctx.preparableStmt().update()));
}
if (null != ctx.preparableStmt().delete()) {
result.setDelete((DeleteStatement) visit(ctx.preparableStmt().delete()));
}
return result;
}
@Override
public ASTNode visitDeallocate(final DeallocateContext ctx) {
return new DeallocateStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSynonym(final CreateSynonymContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java | shardingsphere-protocol-opengauss | 97 |
| org/apache/shardingsphere/database/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java | shardingsphere-protocol-postgresql | 95 |
return OpenGaussCommandPacketType.isExtendedProtocolPacketType(commandPacketType)
&& PostgreSQLCommandPacketType.SYNC_COMMAND != commandPacketType && PostgreSQLCommandPacketType.FLUSH_COMMAND != commandPacketType;
}
private void handlePendingMessages(final ChannelHandlerContext context, final ByteBuf in, final List<Object> out, final int payloadLength) {
CompositeByteBuf result = context.alloc().compositeBuffer(pendingMessages.size() + 1);
result.addComponents(true, pendingMessages).addComponent(true, in.readRetainedSlice(MESSAGE_TYPE_LENGTH + payloadLength));
out.add(result);
pendingMessages.clear();
}
@Override
public void encode(final ChannelHandlerContext context, final DatabasePacket message, final ByteBuf out) {
boolean isIdentifierPacket = message instanceof PostgreSQLIdentifierPacket;
if (isIdentifierPacket) {
prepareMessageHeader(out, ((PostgreSQLIdentifierPacket) message).getIdentifier().getValue());
}
PostgreSQLPacketPayload payload = new PostgreSQLPacketPayload(out, context.channel().attr(CommonConstants.CHARSET_ATTRIBUTE_KEY).get());
try {
message.write(payload);
// CHECKSTYLE:OFF
} catch (final RuntimeException ex) {
// CHECKSTYLE:ON
payload.getByteBuf().resetWriterIndex(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 475 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1498 |
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 495 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 508 |
return visit(ctx.expr(0));
}
if (null != ctx.OR_()) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.simpleExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.simpleExpr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, ctx.OR_().getText(), text);
}
return visitRemainSimpleExpr(ctx);
}
private ASTNode visitRemainSimpleExpr(final SimpleExprContext ctx) {
if (null != ctx.caseExpression()) {
return visit(ctx.caseExpression());
}
if (null != ctx.BINARY()) {
return visit(ctx.simpleExpr(0));
}
if (null != ctx.variable()) {
return visit(ctx.variable());
}
for (ExprContext each : ctx.expr()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1231 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 403 |
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1012 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1048 |
return visit(ctx.instrFunction());
}
// DORIS ADDED END
if (null != ctx.positionFunction()) {
return visit(ctx.positionFunction());
}
if (null != ctx.substringFunction()) {
return visit(ctx.substringFunction());
}
if (null != ctx.extractFunction()) {
return visit(ctx.extractFunction());
}
if (null != ctx.charFunction()) {
return visit(ctx.charFunction());
}
if (null != ctx.trimFunction()) {
return visit(ctx.trimFunction());
}
if (null != ctx.weightStringFunction()) {
return visit(ctx.weightStringFunction());
}
if (null != ctx.valuesFunction()) {
return visit(ctx.valuesFunction());
}
if (null != ctx.currentUserFunction()) {
return visit(ctx.currentUserFunction());
}
if (null != ctx.timeStampDiffFunction()) {
return visit(ctx.timeStampDiffFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1902 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 475 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1939 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 403 |
}
result = left;
return result;
}
@Override
public ASTNode visitTableFactor(final TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java | shardingsphere-jdbc | 114 |
| org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java | shardingsphere-jdbc | 119 |
return null != results && !results.isEmpty() && null != results.get(0) && results.get(0);
} finally {
processEngine.completeSQLExecution(executionGroupContext.getReportContext().getProcessId());
}
}
private Collection<Statement> getStatements(final ExecutionGroup<JDBCExecutionUnit> executionGroup) {
Collection<Statement> result = new LinkedList<>();
for (JDBCExecutionUnit each : executionGroup.getInputs()) {
result.add(each.getStorageResource());
}
return result;
}
private Collection<List<Object>> getParameterSets(final ExecutionGroup<JDBCExecutionUnit> executionGroup) {
Collection<List<Object>> result = new LinkedList<>();
for (JDBCExecutionUnit each : executionGroup.getInputs()) {
result.add(each.getExecutionUnit().getSqlUnit().getParameters());
}
return result;
}
private boolean isNeedImplicitCommit(final SQLStatement sqlStatement) {
DialectTransactionOption transactionOption = new DatabaseTypeRegistry(sqlStatement.getDatabaseType()).getDialectDatabaseMetaData().getTransactionOption();
return !connection.getAutoCommit() && sqlStatement instanceof DDLStatement && transactionOption.isDDLNeedImplicitCommit();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 847 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 876 |
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitTableStatement(final TableStatementContext ctx) {
SelectStatement result = new SelectStatement(databaseType);
result.setProjections(new ProjectionsSegment(ctx.start.getStartIndex(), ctx.start.getStartIndex()));
result.getProjections().getProjections().add(new ShorthandProjectionSegment(ctx.start.getStartIndex(), ctx.start.getStartIndex()));
result.setFrom(new SimpleTableSegment(new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), new IdentifierValue(ctx.tableName().getText()))));
return result;
}
@Override
public ASTNode visitHavingClause(final HavingClauseContext ctx) {
ExpressionSegment expr = (ExpressionSegment) visit(ctx.expr());
return new HavingSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), expr);
}
@Override
public final ASTNode visitIntervalExpression(final IntervalExpressionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 727 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 867 |
return new PostgreSQLDropRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
return new CreateDatabaseStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name())).getValue(), false);
}
@Override
public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
return new CreateSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
}
@Override
public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
return new AlterSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitDropSequence(final DropSequenceContext ctx) {
return new DropSequenceStatement(getDatabaseType(), ((CollectionValue) visit(ctx.qualifiedNameList())).getValue());
}
@Override
public ASTNode visitDropSynonym(final DropSynonymContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 206 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 263 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 230 |
if (!ctx.selectSpecification().isEmpty()) {
result.getProjections().setDistinctRow(isDistinct(ctx.selectSpecification().get(0)));
}
if (null != ctx.fromClause()) {
TableSegment tableSegment = (TableSegment) visit(ctx.fromClause());
result.setFrom(tableSegment);
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.groupByClause()) {
result.setGroupBy((GroupBySegment) visit(ctx.groupByClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.havingClause()) {
result.setHaving((HavingSegment) visit(ctx.havingClause()));
}
return result;
}
@Override
public ASTNode visitHavingClause(final ClickHouseStatementParser.HavingClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/protocol/firebird/packet/command/query/statement/FirebirdFetchStatementPacket.java | shardingsphere-protocol-firebird | 50 |
| org/apache/shardingsphere/database/protocol/firebird/packet/command/query/statement/execute/FirebirdExecuteStatementPacket.java | shardingsphere-protocol-firebird | 111 |
}
private List<FirebirdBinaryColumnType> parseBLR(final ByteBuf blrBuffer) {
if (!blrBuffer.isReadable()) {
return new ArrayList<>(0);
}
blrBuffer.skipBytes(4);
int length = blrBuffer.readUnsignedByte();
length += 256 * blrBuffer.readUnsignedByte();
List<FirebirdBinaryColumnType> result = new ArrayList<>(length / 2);
int blrType = blrBuffer.readUnsignedByte();
while (blrType != BlrConstants.blr_end) {
FirebirdBinaryColumnType type = FirebirdBinaryColumnType.valueOfBLRType(blrType);
result.add(type);
blrBuffer.skipBytes(getSkipCount(type) + 2);
blrType = blrBuffer.readUnsignedByte();
}
return result;
}
private int getSkipCount(final FirebirdBinaryColumnType type) {
switch (type) {
case VARYING:
case TEXT:
return 4;
case NULL:
case LEGACY_TEXT:
case LEGACY_VARYING:
return 2;
case BLOB:
case ARRAY:
case LONG:
case SHORT:
case INT64:
case QUAD:
case INT128:
return 1;
default:
return 0;
}
}
/**
* Get length of packet.
*
* @param payload Firebird packet payload
* @return Length of packet
*/
public static int getLength(final FirebirdPacketPayload payload) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 485 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.expr()) {
ExpressionSegment exprSegment = (ExpressionSegment) visit(ctx.expr());
FunctionTableSegment result = new FunctionTableSegment(exprSegment.getStartIndex(), exprSegment.getStopIndex(), exprSegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1068 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 831 |
}
@Override
public ASTNode visitInsertSelectClause(final InsertSelectClauseContext ctx) {
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.setInsertSelect(createInsertSelectSegment(ctx));
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1477 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1548 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1595 |
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1584 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 148 |
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1140 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 148 |
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 272 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 309 |
return new DateTimeLiteralValue(dateTimeType, ((StringLiteralValue) visit(ctx.stringLiterals())).getValue(), false);
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) {
if (null != ctx.STRING_()) {
return new StringLiteralValue(ctx.getText());
} else {
return new StringLiteralValue(ctx.getText().substring(1));
}
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 92 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 135 |
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.columnNames()) {
ColumnNamesContext columnNames = ctx.columnNames();
CollectionValue<ColumnSegment> columnSegments = (CollectionValue<ColumnSegment>) visit(columnNames);
result.setInsertColumns(new InsertColumnsSegment(columnNames.start.getStartIndex(), columnNames.stop.getStopIndex(), columnSegments.getValue()));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (ClickHouseStatementParser.AssignmentValuesContext each : assignmentValuesContexts) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 384 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 481 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1237 |
public ASTNode visitTableFactor(final ClickHouseStatementParser.TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/data/pipeline/opengauss/ingest/incremental/wal/decode/MppdbDecodingPlugin.java | shardingsphere-data-pipeline-opengauss | 285 |
| org/apache/shardingsphere/data/pipeline/postgresql/ingest/incremental/wal/decode/TestDecodingPlugin.java | shardingsphere-data-pipeline-postgresql | 292 |
}
private byte[] decodeHex(final String hexString) {
int dataLength = hexString.length();
Preconditions.checkArgument(0 == (dataLength & 1), "Illegal hex data `%s`", hexString);
if (0 == dataLength) {
return new byte[0];
}
byte[] result = new byte[dataLength >>> 1];
for (int i = 0; i < dataLength; i += 2) {
result[i >>> 1] = decodeHexByte(hexString, i);
}
return result;
}
private byte decodeHexByte(final String hexString, final int index) {
int firstHexChar = Character.digit(hexString.charAt(index), 16);
int secondHexChar = Character.digit(hexString.charAt(index + 1), 16);
Preconditions.checkArgument(-1 != firstHexChar && -1 != secondHexChar, "Illegal hex byte `%s` in index `%d`", hexString, index);
return (byte) ((firstHexChar << 4) + secondHexChar);
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 384 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1908 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1945 |
public ASTNode visitTableFactor(final ClickHouseStatementParser.TableFactorContext ctx) {
if (null != ctx.subquery()) {
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery()));
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 581 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 569 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 444 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 329 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 559 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 313 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 559 |
return visit(ctx.bitExpr(0));
}
private BinaryOperationExpression createBinaryOperationExpressionFromLike(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ListExpression right = new ListExpression(ctx.simpleExpr(0).start.getStartIndex(), ctx.simpleExpr().get(ctx.simpleExpr().size() - 1).stop.getStopIndex());
for (SimpleExprContext each : ctx.simpleExpr()) {
right.getItems().add((ExpressionSegment) visit(each));
}
String operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private InExpression createInSegment(final PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 428 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 569 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 603 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 569 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1787 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1379 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1831 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1112 |
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias, final ExpressionSegment projection) {
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment functionSegment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(functionSegment.getStartIndex(), functionSegment.getStopIndex(), functionSegment.getText(), functionSegment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), projection); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 236 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 494 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 609 |
return result;
}
@Override
public ASTNode visitModifyColumnSpecification(final ModifyColumnSpecificationContext ctx) {
// TODO visit pk and table ref
ColumnSegment column = (ColumnSegment) visit(ctx.modifyColumn().columnName());
DataTypeSegment dataType = null == ctx.dataType() ? null : (DataTypeSegment) visit(ctx.dataType());
ColumnDefinitionSegment columnDefinition = new ColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), column, dataType, false, false, getText(ctx));
return new ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinition);
}
@Override
public ASTNode visitDropColumnSpecification(final DropColumnSpecificationContext ctx) {
return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), Collections.singleton((ColumnSegment) visit(ctx.columnName())));
}
@SuppressWarnings("unchecked") | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 377 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1850 |
: new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias) {
ASTNode projection = visit(ctx.expr());
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 305 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1850 |
: new AliasSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
private ASTNode createProjection(final ProjectionContext ctx, final AliasSegment alias) {
ASTNode projection = visit(ctx.expr());
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java | shardingsphere-protocol-opengauss | 73 |
| org/apache/shardingsphere/database/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java | shardingsphere-protocol-postgresql | 71 |
CommandPacketType commandPacketType = OpenGaussCommandPacketType.valueOf(type);
if (requireAggregation(commandPacketType)) {
pendingMessages.add(in.readRetainedSlice(MESSAGE_TYPE_LENGTH + payloadLength));
} else if (pendingMessages.isEmpty()) {
out.add(in.readRetainedSlice(MESSAGE_TYPE_LENGTH + payloadLength));
} else {
handlePendingMessages(context, in, out, payloadLength);
}
}
}
private void handleStartupPhase(final ByteBuf in, final List<Object> out) {
int readerIndex = in.readerIndex();
if (in.readableBytes() == SSL_REQUEST_PAYLOAD_LENGTH && SSL_REQUEST_PAYLOAD_LENGTH == in.getInt(readerIndex) && SSL_REQUEST_CODE == in.getInt(readerIndex + 4)) {
out.add(in.readRetainedSlice(SSL_REQUEST_PAYLOAD_LENGTH));
return;
}
if (in.readableBytes() == in.getInt(readerIndex)) {
out.add(in.readRetainedSlice(in.readableBytes()));
startupPhase = false;
}
}
private boolean requireAggregation(final CommandPacketType commandPacketType) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/broadcast/rule/changed/BroadcastRuleChangedProcessor.java | shardingsphere-broadcast-core | 33 |
| org/apache/shardingsphere/broadcast/rule/changed/BroadcastTableChangedProcessor.java | shardingsphere-broadcast-core | 33 |
public class BroadcastRuleChangedProcessor implements RuleItemConfigurationChangedProcessor<BroadcastRuleConfiguration, BroadcastRuleConfiguration> {
@SuppressWarnings("unchecked")
@Override
public BroadcastRuleConfiguration swapRuleItemConfiguration(final String itemName, final String yamlContent) {
return new BroadcastRuleConfiguration(YamlEngine.unmarshal(yamlContent, LinkedHashSet.class));
}
@Override
public BroadcastRuleConfiguration findRuleConfiguration(final ShardingSphereDatabase database) {
return database.getRuleMetaData().findSingleRule(BroadcastRule.class).map(BroadcastRule::getConfiguration).orElseGet(() -> new BroadcastRuleConfiguration(new LinkedList<>()));
}
@Override
public void changeRuleItemConfiguration(final String itemName, final BroadcastRuleConfiguration currentRuleConfig, final BroadcastRuleConfiguration toBeChangedItemConfig) {
currentRuleConfig.getTables().clear();
currentRuleConfig.getTables().addAll(toBeChangedItemConfig.getTables());
}
@Override
public void dropRuleItemConfiguration(final String itemName, final BroadcastRuleConfiguration currentRuleConfig) {
currentRuleConfig.getTables().clear();
}
@Override
public RuleChangedItemType getType() {
return new RuleChangedItemType("broadcast", null); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 526 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 555 |
public final ASTNode visitDataTypeLength(final ClickHouseStatementParser.DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (numbers.size() == 1) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
}
if (numbers.size() == 2) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
}
/**
* Get original text.
*
* @param ctx context
* @return original text
*/
protected String getOriginalText(final ParserRuleContext ctx) {
return ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1549 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1088 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 856 |
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private List<ColumnSegment> createInsertColumns(final FieldsContext fields) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 183 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 539 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 160 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1088 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1596 |
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 261 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 357 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 285 |
ClickHouseStatementParser.QualifiedShorthandContext shorthand = ctx.qualifiedShorthand();
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierValue identifier = new IdentifierValue(shorthand.identifier().getText());
result.setOwner(new OwnerSegment(shorthand.identifier().getStart().getStartIndex(), shorthand.identifier().getStop().getStopIndex(), identifier));
return result;
}
AliasSegment alias = null == ctx.alias() ? null : (AliasSegment) visit(ctx.alias());
if (null != ctx.columnName()) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
ColumnProjectionSegment result = new ColumnProjectionSegment(column);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias);
}
@Override
public ASTNode visitAlias(final ClickHouseStatementParser.AliasContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1012 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 546 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 518 |
return visit(ctx.instrFunction());
}
// DORIS ADDED END
if (null != ctx.positionFunction()) {
return visit(ctx.positionFunction());
}
if (null != ctx.substringFunction()) {
return visit(ctx.substringFunction());
}
if (null != ctx.extractFunction()) {
return visit(ctx.extractFunction());
}
if (null != ctx.charFunction()) {
return visit(ctx.charFunction());
}
if (null != ctx.trimFunction()) {
return visit(ctx.trimFunction());
}
if (null != ctx.weightStringFunction()) {
return visit(ctx.weightStringFunction());
}
if (null != ctx.valuesFunction()) {
return visit(ctx.valuesFunction());
}
if (null != ctx.currentUserFunction()) {
return visit(ctx.currentUserFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/data/pipeline/cdc/distsql/parser/core/CDCDistSQLStatementVisitor.java | shardingsphere-data-pipeline-cdc-distsql-parser | 84 |
| org/apache/shardingsphere/data/pipeline/scenario/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.java | shardingsphere-data-pipeline-scenario-migration-distsql-parser | 106 |
return new AlterTransmissionRuleStatement("STREAMING", (TransmissionRuleSegment) visit(ctx.transmissionRule()));
}
@Override
public ASTNode visitTransmissionRule(final TransmissionRuleContext ctx) {
TransmissionRuleSegment result = new TransmissionRuleSegment();
if (null != ctx.readDefinition()) {
result.setReadSegment((ReadOrWriteSegment) visit(ctx.readDefinition()));
}
if (null != ctx.writeDefinition()) {
result.setWriteSegment((ReadOrWriteSegment) visit(ctx.writeDefinition()));
}
if (null != ctx.streamChannel()) {
result.setStreamChannel((AlgorithmSegment) visit(ctx.streamChannel()));
}
return result;
}
@Override
public ASTNode visitReadDefinition(final ReadDefinitionContext ctx) {
return new ReadOrWriteSegment(getWorkerThread(ctx.workerThread()), getBatchSize(ctx.batchSize()), getShardingSize(ctx.shardingSize()), getAlgorithmSegment(ctx.rateLimiter()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 267 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 78 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (CreateDefinitionContext each : ctx.createDefinition()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 342 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 78 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (CreateDefinitionContext each : ctx.createDefinition()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java | shardingsphere-protocol-opengauss | 42 |
| org/apache/shardingsphere/database/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java | shardingsphere-protocol-postgresql | 40 |
public final class OpenGaussPacketCodecEngine implements DatabasePacketCodecEngine {
private static final int SSL_REQUEST_PAYLOAD_LENGTH = 8;
private static final int SSL_REQUEST_CODE = (1234 << 16) + 5679;
private static final int MESSAGE_TYPE_LENGTH = 1;
private static final int PAYLOAD_LENGTH = 4;
private boolean startupPhase = true;
private final List<ByteBuf> pendingMessages = new LinkedList<>();
@Override
public boolean isValidHeader(final int readableBytes) {
return readableBytes >= (startupPhase ? 0 : MESSAGE_TYPE_LENGTH) + PAYLOAD_LENGTH;
}
@Override
public void decode(final ChannelHandlerContext context, final ByteBuf in, final List<Object> out) {
while (isValidHeader(in.readableBytes())) {
if (startupPhase) {
handleStartupPhase(in, out);
return;
}
int payloadLength = in.getInt(in.readerIndex() + 1);
if (in.readableBytes() < MESSAGE_TYPE_LENGTH + payloadLength) {
return;
}
byte type = in.getByte(in.readerIndex()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableReferenceRuleExecutor.java | shardingsphere-sharding-distsql-handler | 89 |
| org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleExecutor.java | shardingsphere-sharding-distsql-handler | 75 |
private void checkToBeReferencedShardingTablesExisted(final AlterShardingTableReferenceRuleStatement sqlStatement) {
Collection<String> currentShardingTableNames = getCurrentShardingTableNames();
Collection<String> notExistedTableNames = sqlStatement.getTableNames().stream().filter(each -> !currentShardingTableNames.contains(each)).collect(Collectors.toSet());
ShardingSpherePreconditions.checkMustEmpty(notExistedTableNames, () -> new MissingRequiredRuleException("Sharding", database.getName(), notExistedTableNames));
}
private Collection<String> getCurrentShardingTableNames() {
Collection<String> result = new CaseInsensitiveSet<>();
result.addAll(rule.getConfiguration().getTables().stream().map(ShardingTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
result.addAll(rule.getConfiguration().getAutoTables().stream().map(ShardingAutoTableRuleConfiguration::getLogicTable).collect(Collectors.toSet()));
return result;
}
private void checkShardingTableReferenceRulesValid(final AlterShardingTableReferenceRuleStatement sqlStatement) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1587 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 178 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1143 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1637 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 911 |
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 518 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 295 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 541 |
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
}
return visit(ctx.bitExpr(0));
}
private InExpression createInSegment(final PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1373 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1398 |
public ASTNode visitIntoClause(final IntoClauseContext ctx) {
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.viewName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.viewName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
SelectStatement subquery = (SelectStatement) visit(ctx.subquery());
SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery, getOriginalText(ctx.subquery())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 608 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 624 |
statementParameterMarkerSegments.add(segment);
return segment;
}
if (astNode instanceof SubquerySegment) {
return new SubqueryExpressionSegment((SubquerySegment) astNode);
}
if (astNode instanceof OtherLiteralValue) {
return new CommonExpressionSegment(context.getStart().getStartIndex(), context.getStop().getStopIndex(), context.getText());
}
return astNode;
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
if (null != ctx.subquery()) {
return new SubquerySegment(startIndex, stopIndex, (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1588 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1703 |
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1144 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1703 |
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1638 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1703 |
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 912 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1703 |
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {
Collection<ColumnAssignmentSegment> assignments = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
assignments.add((ColumnAssignmentSegment) visit(each));
}
return new SetAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), assignments);
}
@Override
public ASTNode visitAssignmentValues(final AssignmentValuesContext ctx) {
List<ExpressionSegment> segments = new LinkedList<>();
for (AssignmentValueContext each : ctx.assignmentValue()) {
segments.add((ExpressionSegment) visit(each));
}
return new InsertValuesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), segments);
}
@Override
public ASTNode visitAssignment(final AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnRef()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 283 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1853 |
private ASTNode createProjection(final ClickHouseStatementParser.ProjectionContext ctx, final AliasSegment alias) {
ASTNode projection = visit(ctx.expr());
if (projection instanceof AggregationProjectionSegment) {
((AggregationProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof ExpressionProjectionSegment) {
((ExpressionProjectionSegment) projection).setAlias(alias);
return projection;
}
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 100 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 274 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 349 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 76 |
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (CreateDefinitionContext each : ctx.createDefinition()) {
if (null != each.columnDefinition()) {
result.getValue().add((ColumnDefinitionSegment) visit(each.columnDefinition()));
}
if (null != each.constraintDefinition()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1071 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1087 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 834 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 855 |
public ASTNode visitInsertSelectClause(final InsertSelectClauseContext ctx) {
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.setInsertSelect(createInsertSelectSegment(ctx)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 278 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 402 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 279 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 436 |
return new IndexSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), indexName);
}
@Override
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitAExpr(final AExprContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 649 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 409 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 671 |
return new NotExpression(startIndex, stopIndex, (ExpressionSegment) expression, "!".equalsIgnoreCase(ctx.notOperator().getText()));
}
if (null != ctx.LP_() && 1 == ctx.expr().size()) {
ASTNode result = visit(ctx.expr(0));
if (result instanceof ColumnSegment) {
((ColumnSegment) result).setLeftParentheses(new ParenthesesSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.LP_().getSymbol().getStopIndex(), ctx.LP_().getSymbol().getText()));
((ColumnSegment) result).setRightParentheses(new ParenthesesSegment(ctx.RP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), ctx.RP_().getSymbol().getText()));
}
return result;
}
if (null != ctx.VERTICAL_BAR_() && 2 == ctx.VERTICAL_BAR_().size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/distsql/handler/engine/query/DistSQLDatabaseRuleQueryExecutorAssert.java | shardingsphere-test-it-distsql | 58 |
| org/apache/shardingsphere/test/it/distsql/handler/engine/query/DistSQLDatabaseRuleQueryExecutorTest.java | shardingsphere-test-it-distsql | 47 |
public void assertQueryResultRows(final DatabaseRuleConfiguration ruleConfig, final DistSQLStatement sqlStatement, final Collection<LocalDataQueryResultRow> expected) throws SQLException {
DistSQLQueryExecuteEngine engine = new DistSQLQueryExecuteEngine(sqlStatement, "foo_db", mockContextManager(ruleConfig), mock(DistSQLConnectionContext.class));
engine.executeQuery();
Collection<LocalDataQueryResultRow> actual = new ArrayList<>(engine.getRows());
assertThat(actual, deepEqual(new ArrayList<>(expected)));
}
private ContextManager mockContextManager(final DatabaseRuleConfiguration ruleConfig) {
ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
when(mockedRule.getConfiguration()).thenReturn(ruleConfig);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getRuleMetaData()).thenReturn(new RuleMetaData(Collections.singleton(mockedRule)));
when(result.getDatabase("foo_db")).thenReturn(database);
return result;
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1477 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1527 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1548 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1574 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1595 |
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 834 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 363 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 335 |
SelectStatement result = new SelectStatement(databaseType);
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
valuesExpression.getRowConstructorList().addAll(createRowConstructorList(ctx.rowConstructorList()));
result.setProjections(new ProjectionsSegment(startIndex, stopIndex));
result.getProjections().getProjections().add(new ExpressionProjectionSegment(startIndex, stopIndex, getOriginalText(ctx), valuesExpression));
return result;
}
private Collection<InsertValuesSegment> createRowConstructorList(final RowConstructorListContext ctx) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : ctx.assignmentValues()) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitTableStatement(final TableStatementContext ctx) {
SelectStatement result = new SelectStatement(databaseType); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1527 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1518 |
public ASTNode visitReplaceSelectClause(final ReplaceSelectClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisLCLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 42 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLLCLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 42 |
public DorisLCLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitLock(final LockContext ctx) {
return new LockStatement(getDatabaseType(), null == ctx.tableLock() ? Collections.emptyList() : getLockTables(ctx.tableLock()));
}
private Collection<SimpleTableSegment> getLockTables(final List<TableLockContext> tableLockContexts) {
Collection<SimpleTableSegment> result = new LinkedList<>();
for (TableLockContext each : tableLockContexts) {
SimpleTableSegment simpleTableSegment = (SimpleTableSegment) visit(each.tableName());
if (null != each.alias()) {
simpleTableSegment.setAlias((AliasSegment) visit(each.alias()));
}
result.add(simpleTableSegment);
}
return result;
}
@Override
public ASTNode visitUnlock(final UnlockContext ctx) {
return new UnlockStatement(getDatabaseType());
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1518 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1574 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1595 |
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 260 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 289 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 535 |
private ASTNode createCompareSegment(final ClickHouseStatementParser.BooleanPrimaryContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
ExpressionSegment right;
if (null != ctx.predicate()) {
right = (ExpressionSegment) visit(ctx.predicate());
} else {
right = (ExpressionSegment) visit(ctx.subquery());
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final ClickHouseStatementParser.PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1420 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 585 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 864 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1457 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 799 |
if (null != ctx.numberLiterals()) {
return new IndexOrderByItemSegment(ctx.numberLiterals().getStart().getStartIndex(), ctx.numberLiterals().getStop().getStopIndex(),
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
} else {
ASTNode expr = visitExpr(ctx.expr());
if (expr instanceof ColumnSegment) {
return new ColumnOrderByItemSegment((ColumnSegment) expr, orderDirection, null);
} else {
return new ExpressionOrderByItemSegment(ctx.expr().getStart().getStartIndex(),
ctx.expr().getStop().getStopIndex(), getOriginalText(ctx.expr()), orderDirection, null, (ExpressionSegment) expr);
}
}
}
@Override
public ASTNode visitInsert(final InsertContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1723 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 336 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1315 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1774 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1048 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 264 |
return new BooleanLiteralValue(false);
}
@Override
public ASTNode visitProjections(final ProjectionsContext ctx) {
Collection<ProjectionSegment> projections = new LinkedList<>();
if (null != ctx.unqualifiedShorthand()) {
projections.add(new ShorthandProjectionSegment(ctx.unqualifiedShorthand().getStart().getStartIndex(), ctx.unqualifiedShorthand().getStop().getStopIndex()));
}
for (ProjectionContext each : ctx.projection()) {
projections.add((ProjectionSegment) visit(each));
}
ProjectionsSegment result = new ProjectionsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.getProjections().addAll(projections);
return result;
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 507 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 295 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 541 |
new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 2029 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1614 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 2066 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1350 |
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) {
return new ConstraintSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public ASTNode visitLimitOffset(final LimitOffsetContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 527 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 2075 |
return JoinType.RIGHT.name();
} else if (null != ctx.INNER()) {
return JoinType.INNER.name();
} else if (null != ctx.CROSS()) {
return JoinType.CROSS.name();
}
return JoinType.INNER.name();
}
private void visitJoinSpecification(final JoinSpecificationContext ctx, final JoinTableSegment joinTableSource) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 447 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 2075 |
return JoinType.RIGHT.name();
} else if (null != ctx.INNER()) {
return JoinType.INNER.name();
} else if (null != ctx.CROSS()) {
return JoinType.CROSS.name();
}
return JoinType.INNER.name();
}
private void visitJoinSpecification(final JoinSpecificationContext ctx, final JoinTableSegment joinTableSource) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
}
@Override
public ASTNode visitWhereClause(final WhereClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/mask/algorithm/cover/MaskAfterSpecialCharsAlgorithm.java | shardingsphere-mask-core | 30 |
| org/apache/shardingsphere/mask/algorithm/cover/MaskBeforeSpecialCharsAlgorithm.java | shardingsphere-mask-core | 30 |
public final class MaskAfterSpecialCharsAlgorithm implements MaskAlgorithm<Object, String> {
private static final String SPECIAL_CHARS = "special-chars";
private static final String REPLACE_CHAR = "replace-char";
private String specialChars;
private Character replaceChar;
@Override
public void init(final Properties props) {
specialChars = createSpecialChars(props);
replaceChar = createReplaceChar(props);
}
private String createSpecialChars(final Properties props) {
MaskAlgorithmPropertiesChecker.checkAtLeastOneChar(props, SPECIAL_CHARS, this);
return props.getProperty(SPECIAL_CHARS);
}
private Character createReplaceChar(final Properties props) {
MaskAlgorithmPropertiesChecker.checkSingleChar(props, REPLACE_CHAR, this);
return props.getProperty(REPLACE_CHAR).charAt(0);
}
@HighFrequencyInvocation
@Override
public String mask(final Object plainValue) {
String result = null == plainValue ? null : String.valueOf(plainValue);
if (Strings.isNullOrEmpty(result)) {
return result;
}
int index = result.contains(specialChars) ? result.indexOf(specialChars) + specialChars.length() : -1; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 670 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 539 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1158 |
}
@Override
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(((KeywordValue) visit(ctx.dataTypeName())).getValue());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.dataTypeLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.dataTypeLength());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (1 == numbers.size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 667 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 539 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1158 |
}
@Override
public final ASTNode visitDataType(final DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(((KeywordValue) visit(ctx.dataTypeName())).getValue());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.dataTypeLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.dataTypeLength());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (1 == numbers.size()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/checker/cryptographic/InsertSelectColumnsEncryptorChecker.java | shardingsphere-encrypt-core | 54 |
| org/apache/shardingsphere/encrypt/checker/cryptographic/InsertSelectColumnsEncryptorChecker.java | shardingsphere-encrypt-core | 81 |
public static void checkIsSame(final Collection<ColumnSegment> insertColumns, final Collection<Projection> projections, final EncryptRule encryptRule) {
Iterator<ColumnSegment> insertColumnsIterator = insertColumns.iterator();
Iterator<Projection> projectionIterator = projections.iterator();
while (insertColumnsIterator.hasNext()) {
ColumnSegment insertColumnSegment = insertColumnsIterator.next();
Projection projection = projectionIterator.next();
if (isLiteralOrParameterMarker(projection)) {
continue;
}
ColumnSegmentBoundInfo projectionColumnBoundInfo = getColumnSegmentBoundInfo(projection);
EncryptAlgorithm insertColumnEncryptor = encryptRule.findQueryEncryptor(
insertColumnSegment.getColumnBoundInfo().getOriginalTable().getValue(), insertColumnSegment.getColumnBoundInfo().getOriginalColumn().getValue()).orElse(null);
EncryptAlgorithm projectionEncryptor =
encryptRule.findQueryEncryptor(projectionColumnBoundInfo.getOriginalTable().getValue(), projectionColumnBoundInfo.getOriginalColumn().getValue()).orElse(null); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 295 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1390 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1123 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 320 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1528 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1072 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 835 |
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.setInsertSelect(createReplaceSelectSegment(ctx)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 392 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1390 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1123 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) {
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1072 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1575 |
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.setInsertSelect(createInsertSelectSegment(ctx)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/agent/plugin/core/util/AgentReflectionUtils.java | shardingsphere-agent-plugin-core | 47 |
| org/apache/shardingsphere/infra/util/reflection/ReflectionUtils.java | shardingsphere-infra-util | 46 |
throw new IllegalStateException(String.format("Can not find field name `%s` in class %s.", fieldName, target.getClass()));
}
@SuppressWarnings("unchecked")
@SneakyThrows(IllegalAccessException.class)
private static <T> T getFieldValue(final Object target, final Field field) {
boolean accessible = field.isAccessible();
if (!accessible) {
field.setAccessible(true);
}
T result = (T) field.get(target);
if (!accessible) {
field.setAccessible(false);
}
return result;
}
private static Optional<Field> findField(final String fieldName, final Class<?> targetClass) {
Class<?> currentTargetClass = targetClass;
while (Object.class != currentTargetClass) {
try {
return Optional.of(currentTargetClass.getDeclaredField(fieldName));
} catch (final NoSuchFieldException ignored) {
currentTargetClass = currentTargetClass.getSuperclass();
}
}
return Optional.empty();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 247 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 291 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 498 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 276 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 522 |
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex())));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
}
return visit(ctx.predicate());
}
private ASTNode createCompareSegment(final ClickHouseStatementParser.BooleanPrimaryContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 868 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 437 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 409 |
public final ASTNode visitIntervalExpression(final IntervalExpressionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.INTERVAL().getSymbol().getStartIndex(), ctx.INTERVAL().getSymbol().getStopIndex(), ctx.INTERVAL().getText(), ctx.INTERVAL().getText());
result.getParameters().add((ExpressionSegment) visit(ctx.intervalValue().expr()));
result.getParameters().add(new LiteralExpressionSegment(ctx.intervalValue().intervalUnit().getStart().getStartIndex(), ctx.intervalValue().intervalUnit().getStop().getStopIndex(),
ctx.intervalValue().intervalUnit().getText()));
return result;
}
@Override
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1478 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1072 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1088 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 835 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 856 |
InsertStatement result = new InsertStatement(databaseType);
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 355 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 585 |
}
boolean not = null != ctx.NOT();
return new InExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, not);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1072 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1575 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1596 |
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.setInsertSelect(createInsertSelectSegment(ctx)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1457 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1072 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1088 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 835 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 856 |
result.setInsertSelect(createInsertSelectSegment(ctx));
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 765 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1354 |
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr);
}
@Override
public ASTNode visitVariable(final VariableContext ctx) {
return null == ctx.systemVariable() ? visit(ctx.userVariable()) : visit(ctx.systemVariable());
}
@Override
public ASTNode visitUserVariable(final UserVariableContext ctx) {
return new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.textOrIdentifier().getText());
}
@Override
public ASTNode visitSystemVariable(final SystemVariableContext ctx) {
VariableSegment result = new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.rvalueSystemVariable().getText());
if (null != ctx.systemVariableScope) {
result.setScope(ctx.systemVariableScope.getText());
}
return result;
}
@Override
public ASTNode visitMatchExpression(final MatchExpressionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1354 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 737 |
return new CaseWhenExpression(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), caseExpr, whenExprs, thenExprs, elseExpr, getOriginalText(ctx));
}
@Override
public ASTNode visitVariable(final VariableContext ctx) {
return null == ctx.systemVariable() ? visit(ctx.userVariable()) : visit(ctx.systemVariable());
}
@Override
public ASTNode visitUserVariable(final UserVariableContext ctx) {
return new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.textOrIdentifier().getText());
}
@Override
public ASTNode visitSystemVariable(final SystemVariableContext ctx) {
VariableSegment result = new VariableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), ctx.rvalueSystemVariable().getText());
if (null != ctx.systemVariableScope) {
result.setScope(ctx.systemVariableScope.getText());
}
return result;
}
@Override
public final ASTNode visitMatchExpression(final MatchExpressionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/rule/column/item/AssistedQueryColumnItem.java | shardingsphere-encrypt-core | 33 |
| org/apache/shardingsphere/encrypt/rule/column/item/CipherColumnItem.java | shardingsphere-encrypt-core | 33 |
public final class AssistedQueryColumnItem {
private final String name;
private final EncryptAlgorithm encryptor;
/**
* Get encrypt assisted query value.
*
* @param databaseName database name
* @param schemaName schema name
* @param tableName table name
* @param logicColumnName logic column name
* @param originalValue original value
* @return assisted query values
*/
public Object encrypt(final String databaseName, final String schemaName, final String tableName, final String logicColumnName, final Object originalValue) {
if (null == originalValue) {
return null;
}
return encryptor.encrypt(originalValue, new AlgorithmSQLContext(databaseName, schemaName, tableName, logicColumnName));
}
/**
* Get encrypt assisted query values.
*
* @param databaseName database name
* @param schemaName schema name
* @param tableName table name
* @param logicColumnName logic column name
* @param originalValues original values
* @return assisted query values
*/
public List<Object> encrypt(final String databaseName, final String schemaName, final String tableName, final String logicColumnName, final List<Object> originalValues) {
AlgorithmSQLContext algorithmSQLContext = new AlgorithmSQLContext(databaseName, schemaName, tableName, logicColumnName);
List<Object> result = new LinkedList<>();
for (Object each : originalValues) {
result.add(null == each ? null : encryptor.encrypt(each, algorithmSQLContext));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/rule/column/item/AssistedQueryColumnItem.java | shardingsphere-encrypt-core | 35 |
| org/apache/shardingsphere/encrypt/rule/column/item/LikeQueryColumnItem.java | shardingsphere-encrypt-core | 35 |
private final String name;
private final EncryptAlgorithm encryptor;
/**
* Get encrypt assisted query value.
*
* @param databaseName database name
* @param schemaName schema name
* @param tableName table name
* @param logicColumnName logic column name
* @param originalValue original value
* @return assisted query values
*/
public Object encrypt(final String databaseName, final String schemaName, final String tableName, final String logicColumnName, final Object originalValue) {
if (null == originalValue) {
return null;
}
return encryptor.encrypt(originalValue, new AlgorithmSQLContext(databaseName, schemaName, tableName, logicColumnName));
}
/**
* Get encrypt assisted query values.
*
* @param databaseName database name
* @param schemaName schema name
* @param tableName table name
* @param logicColumnName logic column name
* @param originalValues original values
* @return assisted query values
*/
public List<Object> encrypt(final String databaseName, final String schemaName, final String tableName, final String logicColumnName, final List<Object> originalValues) {
AlgorithmSQLContext algorithmSQLContext = new AlgorithmSQLContext(databaseName, schemaName, tableName, logicColumnName);
List<Object> result = new LinkedList<>();
for (Object each : originalValues) {
result.add(null == each ? null : encryptor.encrypt(each, algorithmSQLContext));
}
return result;
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1157 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 652 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 624 |
public final ASTNode visitSubstringFunction(final SubstringFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(
ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null == ctx.SUBSTR() ? ctx.SUBSTRING().getText() : ctx.SUBSTR().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr()));
for (TerminalNode each : ctx.NUMBER_()) {
result.getParameters().add(new LiteralExpressionSegment(each.getSymbol().getStartIndex(), each.getSymbol().getStopIndex(), new NumberLiteralValue(each.getText()).getValue()));
}
return result;
}
@Override
public final ASTNode visitExtractFunction(final ExtractFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1457 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1478 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1528 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1549 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1519 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1575 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1596 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 835 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 856 |
result.setInsertSelect(createInsertSelectSegment(ctx));
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1072 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1519 |
InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), Collections.emptyList()));
}
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/rule/column/item/CipherColumnItem.java | shardingsphere-encrypt-core | 35 |
| org/apache/shardingsphere/encrypt/rule/column/item/LikeQueryColumnItem.java | shardingsphere-encrypt-core | 35 |
private final String name;
private final EncryptAlgorithm encryptor;
/**
* Encrypt.
*
* @param databaseName database name
* @param schemaName schema name
* @param tableName table name
* @param logicColumnName logic column name
* @param originalValue original value
* @return encrypted value
*/
public Object encrypt(final String databaseName, final String schemaName, final String tableName, final String logicColumnName, final Object originalValue) {
if (null == originalValue) {
return null;
}
return encryptor.encrypt(originalValue, new AlgorithmSQLContext(databaseName, schemaName, tableName, logicColumnName));
}
/**
* Encrypt.
*
* @param databaseName database name
* @param schemaName schema name
* @param tableName table name
* @param logicColumnName logic column name
* @param originalValues original values
* @return encrypted values
*/
public List<Object> encrypt(final String databaseName, final String schemaName, final String tableName, final String logicColumnName, final List<Object> originalValues) {
AlgorithmSQLContext algorithmSQLContext = new AlgorithmSQLContext(databaseName, schemaName, tableName, logicColumnName);
List<Object> result = new LinkedList<>();
for (Object each : originalValues) {
result.add(null == each ? null : encryptor.encrypt(each, algorithmSQLContext));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/oracle/statistics/OracleAssociateStatisticsStatementTestCase.java | shardingsphere-test-it-parser | 40 |
| org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/dialect/oracle/statistics/OracleDisassociateStatisticsStatementTestCase.java | shardingsphere-test-it-parser | 40 |
public final class OracleAssociateStatisticsStatementTestCase extends SQLParserTestCase {
@XmlElement(name = "index")
private final List<ExpectedIndex> indexes = new LinkedList<>();
@XmlElement(name = "table")
private final List<ExpectedSimpleTable> tables = new LinkedList<>();
@XmlElement(name = "column")
private final List<ExpectedColumn> columns = new LinkedList<>();
@XmlElement(name = "function")
private final List<ExpectedFunction> functions = new LinkedList<>();
@XmlElement(name = "package")
private final List<ExpectedPackage> packages = new LinkedList<>();
@XmlElement(name = "type")
private final List<ExpectedType> types = new LinkedList<>();
@XmlElement(name = "index-type")
private final List<ExpectedIndexType> indexTypes = new LinkedList<>();
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 753 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 665 |
return new WithSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), commonTableExpressions);
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCteClause(final CteClauseContext ctx) {
CommonTableExpressionSegment result = new CommonTableExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (AliasSegment) visit(ctx.alias()),
new SubquerySegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery())));
if (null != ctx.columnNames()) {
CollectionValue<ColumnSegment> columns = (CollectionValue<ColumnSegment>) visit(ctx.columnNames());
result.getColumns().addAll(columns.getValue());
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/AlterStorageUnitStatementAssert.java | shardingsphere-test-it-parser | 54 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/RegisterStorageUnitStatementAssert.java | shardingsphere-test-it-parser | 55 |
assertNotNull(actual, assertContext.getText("Actual statement should exist."));
assertDataSources(assertContext, actual.getStorageUnits(), expected.getDataSources());
}
}
private static void assertDataSources(final SQLCaseAssertContext assertContext, final Collection<DataSourceSegment> actual, final List<ExpectedDataSource> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual storage unit should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual storage unit should exist."));
assertThat(assertContext.getText(String.format("Actual storage unit size should be %s , but it was %s", expected.size(), actual.size())), actual.size(), is(expected.size()));
int count = 0;
for (DataSourceSegment each : actual) {
DataSourceAssert.assertIs(assertContext, each, expected.get(count));
count++;
}
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/infra/binder/engine/segment/dml/expression/type/ColumnSegmentBinder.java | shardingsphere-infra-binder-core | 262 |
| org/apache/shardingsphere/infra/binder/engine/segment/dml/with/CommonTableExpressionSegmentBinder.java | shardingsphere-infra-binder-core | 141 |
private static ColumnSegmentBoundInfo createColumnSegmentBoundInfo(final ColumnSegment segment, final ColumnSegment inputColumnSegment, final TableSourceType tableSourceType) {
IdentifierValue originalDatabase = null == inputColumnSegment ? null : inputColumnSegment.getColumnBoundInfo().getOriginalDatabase();
IdentifierValue originalSchema = null == inputColumnSegment ? null : inputColumnSegment.getColumnBoundInfo().getOriginalSchema();
IdentifierValue segmentOriginalTable = segment.getColumnBoundInfo().getOriginalTable();
IdentifierValue originalTable = Strings.isNullOrEmpty(segmentOriginalTable.getValue())
? Optional.ofNullable(inputColumnSegment).map(optional -> optional.getColumnBoundInfo().getOriginalTable()).orElse(segmentOriginalTable)
: segmentOriginalTable;
IdentifierValue segmentOriginalColumn = segment.getColumnBoundInfo().getOriginalColumn();
IdentifierValue originalColumn = Optional.ofNullable(inputColumnSegment).map(optional -> optional.getColumnBoundInfo().getOriginalColumn()).orElse(segmentOriginalColumn);
return new ColumnSegmentBoundInfo(new TableSegmentBoundInfo(originalDatabase, originalSchema), originalTable, originalColumn, tableSourceType); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/frontend/firebird/command/FirebirdCommandExecuteEngine.java | shardingsphere-proxy-frontend-firebird | 67 |
| org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java | shardingsphere-proxy-frontend-mysql | 64 |
return FirebirdErrorPacketFactory.newInstance(cause);
}
@Override
public void writeQueryData(final ChannelHandlerContext context,
final ProxyDatabaseConnectionManager databaseConnectionManager, final QueryCommandExecutor queryCommandExecutor, final int headerPackagesCount) throws SQLException {
if (ResponseType.QUERY != queryCommandExecutor.getResponseType() || !context.channel().isActive()) {
return;
}
int count = 0;
int flushThreshold = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.PROXY_FRONTEND_FLUSH_THRESHOLD);
while (queryCommandExecutor.next()) {
count++;
databaseConnectionManager.getConnectionResourceLock().doAwait(context);
DatabasePacket dataValue = queryCommandExecutor.getQueryRowPacket();
context.write(dataValue);
if (flushThreshold == count) {
context.flush();
count = 0;
}
}
context.flush(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 137 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 227 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 122 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 286 |
return new ParameterMarkerValue(parameterMarkerSegments.size(), ParameterMarkerType.QUESTION);
}
@Override
public final ASTNode visitLiterals(final LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 467 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 510 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 482 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 451 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 720 |
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
private Collection<ExpressionSegment> getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection<ExpressionSegment> result = new LinkedList<>();
for (ExprContext each : ctx.expr()) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/type/AlterReadwriteSplittingRuleStatementAssert.java | shardingsphere-test-it-parser | 53 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/type/CreateReadwriteSplittingRuleStatementAssert.java | shardingsphere-test-it-parser | 54 |
assertReadwriteSplittingRule(assertContext, actual.getRules(), expected.getRules());
}
}
private static void assertReadwriteSplittingRule(final SQLCaseAssertContext assertContext, final Collection<ReadwriteSplittingRuleSegment> actual,
final List<ExceptedReadwriteSplittingRule> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual readwrite-splitting rule should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual readwrite-splitting rule should exist."));
assertThat(assertContext.getText(String.format("Actual readwrite-splitting rule size should be %s , but it was %s", expected.size(), actual.size())), actual.size(), is(expected.size()));
int count = 0;
for (ReadwriteSplittingRuleSegment each : actual) {
ReadwriteSplittingRuleAssert.assertIs(assertContext, each, expected.get(count));
count++;
}
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/type/AlterShardingTableReferenceRulesStatementAssert.java | shardingsphere-test-it-parser | 53 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/type/CreateShardingTableReferenceRuleStatementAssert.java | shardingsphere-test-it-parser | 54 |
assertShardingBindingTableRules(assertContext, actual.getRules(), expected.getRules());
}
}
private static void assertShardingBindingTableRules(final SQLCaseAssertContext assertContext, final Collection<TableReferenceRuleSegment> actual,
final List<ExpectedShardingTableReferenceRule> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual sharding table reference rule should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual sharding table reference rule should exist."));
assertThat(assertContext.getText(String.format("Actual sharding table reference rule size should be %s , but it was %s", expected.size(), actual.size())),
actual.size(), is(expected.size()));
int count = 0;
for (TableReferenceRuleSegment each : actual) {
ShardingTableReferenceRuleAssert.assertIs(assertContext, each, expected.get(count));
count++;
}
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 39 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 35 |
public FirebirdDCLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitGrant(final GrantContext ctx) {
GrantStatement result = new GrantStatement(getDatabaseType());
if (null != ctx.privilegeClause()) {
result.getTables().add((SimpleTableSegment) visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
}
return result;
}
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
RevokeStatement result = new RevokeStatement(getDatabaseType());
if (null != ctx.privilegeClause()) {
result.getTables().add((SimpleTableSegment) visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 827 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 852 |
result.setWindow((WindowSegment) visit(ctx.windowClause()));
}
return result;
}
@Override
public ASTNode visitTableValueConstructor(final TableValueConstructorContext ctx) {
SelectStatement result = new SelectStatement(databaseType);
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
valuesExpression.getRowConstructorList().addAll(createRowConstructorList(ctx.rowConstructorList()));
result.setProjections(new ProjectionsSegment(startIndex, stopIndex));
result.getProjections().getProjections().add(new ExpressionProjectionSegment(startIndex, stopIndex, getOriginalText(ctx), valuesExpression));
return result;
}
private Collection<InsertValuesSegment> createRowConstructorList(final RowConstructorListContext ctx) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : ctx.assignmentValues()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 95 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 141 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 126 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 290 |
public final ASTNode visitLiterals(final ClickHouseStatementParser.LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final ClickHouseStatementParser.StringLiteralsContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1145 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1169 |
}
@Override
public final ASTNode visitPositionFunction(final PositionFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.POSITION().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(0)));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(1)));
return result;
}
@Override
public final ASTNode visitSubstringFunction(final SubstringFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(
ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), null == ctx.SUBSTR() ? ctx.SUBSTRING().getText() : ctx.SUBSTR().getText(), getOriginalText(ctx)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 641 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1171 |
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (numbers.size() == 1) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
}
if (numbers.size() == 2) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
}
@Override
public ASTNode visitWithClause(final WithClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 254 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 266 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 341 |
return new DropDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 281 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 276 |
result.setSelectStatement((SelectStatement) visit(ctx.duplicateAsQueryExpression().select()));
}
// DORIS ADDED END
return result;
}
@Override
public ASTNode visitCreateTableOptions(final CreateTableOptionsContext ctx) {
CreateTableOptionSegment result = new CreateTableOptionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (CreateTableOptionContext each : ctx.createTableOption()) {
if (null != each.engineRef()) {
result.setEngine((EngineSegment) visit(each.engineRef()));
} else if (null != each.COMMENT()) {
result.setCommentSegment(new CommentSegment(each.string_().getText(), each.string_().getStart().getStartIndex(), each.string_().getStop().getStopIndex()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 266 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 281 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 297 |
private ASTNode createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText + ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), ctx.NOT().getSymbol().getStopIndex())) + " "; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 281 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 470 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 251 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 497 |
private BinaryOperationExpression createBinaryOperationExpression(final ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final BooleanPrimaryContext ctx) {
if (null != ctx.IS()) {
// TODO optimize operatorToken
String rightText = "";
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(), | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 253 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 266 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 341 |
return new DropDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 414 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 459 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 443 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 712 |
private ASTNode createAggregationSegment(final ClickHouseStatementParser.AggregationFunctionContext ctx, final String aggregationType) {
AggregationType type = AggregationType.valueOf(aggregationType.toUpperCase());
if (null != ctx.distinct()) {
AggregationDistinctProjectionSegment result =
new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx), getDistinctExpression(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, getOriginalText(ctx));
result.getParameters().addAll(getExpressions(ctx));
return result;
}
private Collection<ExpressionSegment> getExpressions(final ClickHouseStatementParser.AggregationFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 455 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 484 |
public final ASTNode visitCastFunction(final ClickHouseStatementParser.CastFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CAST().getText(), getOriginalText(ctx));
ASTNode exprSegment = visit(ctx.expr());
if (exprSegment instanceof ColumnSegment) {
result.getParameters().add((ColumnSegment) exprSegment);
} else if (exprSegment instanceof LiteralExpressionSegment) {
result.getParameters().add((LiteralExpressionSegment) exprSegment);
}
result.getParameters().add((DataTypeSegment) visit(ctx.dataType()));
return result;
}
@Override
public final ASTNode visitRegularFunction(final ClickHouseStatementParser.RegularFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 255 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 78 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 254 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 78 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 205 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 250 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 235 |
public final ASTNode visitExpr(final ClickHouseStatementParser.ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.LP_()) {
return visit(ctx.expr(0));
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0)), false);
}
private ASTNode createBinaryOperationExpression(final ClickHouseStatementParser.ExprContext ctx, final String operator) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 641 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 552 |
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (numbers.size() == 1) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
}
if (numbers.size() == 2) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/type/AlterEncryptRuleStatementAssert.java | shardingsphere-test-it-parser | 53 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/type/CreateEncryptRuleStatementAssert.java | shardingsphere-test-it-parser | 54 |
assertEncryptRules(assertContext, actual.getRules(), expected.getRules());
}
}
private static void assertEncryptRules(final SQLCaseAssertContext assertContext, final Collection<EncryptRuleSegment> actual, final List<ExpectedEncryptRule> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual encrypt rule should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual encrypt rule should exist."));
assertThat(assertContext.getText(String.format("Actual encrypt rule size should be %s , but it was %s", expected.size(), actual.size())), actual.size(), is(expected.size()));
int count = 0;
for (EncryptRuleSegment each : actual) {
ExpectedEncryptRule expectedEncryptRule = expected.get(count);
assertThat(assertContext.getText("encrypt rule table name assertion error: "), each.getTableName(), is(expectedEncryptRule.getName())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1924 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 494 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1961 |
ctx.indexHintList().indexHint().forEach(each -> result.getIndexHintSegments().add((IndexHintSegment) visit(each)));
}
return result;
}
if (null != ctx.expr()) {
ExpressionSegment exprSegment = (ExpressionSegment) visit(ctx.expr());
FunctionTableSegment result = new FunctionTableSegment(exprSegment.getStartIndex(), exprSegment.getStopIndex(), exprSegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteExecutor.java | shardingsphere-jdbc | 114 |
| org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteQueryExecutor.java | shardingsphere-jdbc | 116 |
| org/apache/shardingsphere/driver/executor/engine/pushdown/jdbc/DriverJDBCPushDownExecuteUpdateExecutor.java | shardingsphere-jdbc | 119 |
return null != results && !results.isEmpty() && null != results.get(0) && results.get(0);
} finally {
processEngine.completeSQLExecution(executionGroupContext.getReportContext().getProcessId());
}
}
private Collection<Statement> getStatements(final ExecutionGroup<JDBCExecutionUnit> executionGroup) {
Collection<Statement> result = new LinkedList<>();
for (JDBCExecutionUnit each : executionGroup.getInputs()) {
result.add(each.getStorageResource());
}
return result;
}
private Collection<List<Object>> getParameterSets(final ExecutionGroup<JDBCExecutionUnit> executionGroup) {
Collection<List<Object>> result = new LinkedList<>();
for (JDBCExecutionUnit each : executionGroup.getInputs()) {
result.add(each.getExecutionUnit().getSqlUnit().getParameters());
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 247 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 466 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 308 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 477 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 498 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 324 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 276 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 522 |
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex())));
ExpressionSegment right = new LiteralExpressionSegment(ctx.IS().getSymbol().getStopIndex() + 2, ctx.stop.getStopIndex(), rightText);
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
ExpressionSegment left = (ExpressionSegment) visit(ctx.booleanPrimary());
String operator = "IS";
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
if (null != ctx.comparisonOperator() || null != ctx.SAFE_EQ_()) {
return createCompareSegment(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 455 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 503 |
public final ASTNode visitCastFunction(final ClickHouseStatementParser.CastFunctionContext ctx) {
calculateParameterCount(Collections.singleton(ctx.expr()));
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CAST().getText(), getOriginalText(ctx));
ASTNode exprSegment = visit(ctx.expr());
if (exprSegment instanceof ColumnSegment) {
result.getParameters().add((ColumnSegment) exprSegment);
} else if (exprSegment instanceof LiteralExpressionSegment) {
result.getParameters().add((LiteralExpressionSegment) exprSegment);
}
result.getParameters().add((DataTypeSegment) visit(ctx.dataType()));
return result;
}
@Override
public final ASTNode visitRegularFunction(final ClickHouseStatementParser.RegularFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 890 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 816 |
InsertStatement result;
if (null != ctx.insertValuesClause()) {
result = (InsertStatement) visit(ctx.insertValuesClause());
} else if (null != ctx.insertSelectClause()) {
result = (InsertStatement) visit(ctx.insertSelectClause());
} else {
result = new InsertStatement(getDatabaseType());
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
}
if (null != ctx.onDuplicateKeyClause()) {
result.setOnDuplicateKeyColumns((OnDuplicateKeyColumnsSegment) visit(ctx.onDuplicateKeyClause()));
}
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitInsertDataIntoTablesFromQueries(final InsertDataIntoTablesFromQueriesContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1683 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 962 |
DeleteStatement result = new DeleteStatement(databaseType);
if (null != ctx.multipleTablesClause()) {
result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
} else {
result.setTable((TableSegment) visit(ctx.singleTableClause()));
}
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 422 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 465 |
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.LP_()) {
return visit(ctx.expr(0));
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
}
if (null != ctx.datetimeExpr()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 547 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 240 |
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof ModifyConstraintDefinitionSegment) {
result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) {
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
} else if (each instanceof ModifyCollectionRetrievalSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 94 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 388 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 70 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1807 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1088 |
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
}
return createProjection(ctx, alias, exprProjection);
}
private ShorthandProjectionSegment createShorthandProjection(final QualifiedShorthandContext shorthand) {
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierContext identifier = shorthand.identifier().get(shorthand.identifier().size() - 1);
OwnerSegment owner = new OwnerSegment(identifier.getStart().getStartIndex(), identifier.getStop().getStopIndex(), new IdentifierValue(identifier.getText()));
result.setOwner(owner);
if (shorthand.identifier().size() > 1) {
IdentifierContext databaseIdentifier = shorthand.identifier().get(0); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 176 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 250 |
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) {
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) each);
}
}
}
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
if (null != ctx.addColumnSpecification()) {
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.addColumnSpecification())).getValue());
}
if (null != ctx.modifyColumnSpecification()) {
result.getValue().add((ModifyColumnDefinitionSegment) visit(ctx.modifyColumnSpecification()));
}
if (null != ctx.dropColumnSpecification()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/type/ShowStorageUnitsStatementAssert.java | shardingsphere-test-it-parser | 53 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/type/ShowTablesStatementAssert.java | shardingsphere-test-it-parser | 53 |
private static void assertIs(final SQLCaseAssertContext assertContext, final ShowStorageUnitsStatement actual, final ShowStorageUnitsStatementTestCase expected) {
if (null == expected.getDatabase()) {
assertNull(actual.getFromDatabase(), assertContext.getText("Actual database should not exist."));
} else {
DatabaseAssert.assertIs(assertContext, actual.getFromDatabase().getDatabase(), expected.getDatabase());
}
if (null == expected.getLikePattern()) {
assertFalse(actual.getLikePattern().isPresent(), assertContext.getText("Actual like pattern should not exist."));
} else {
assertTrue(actual.getLikePattern().isPresent(), assertContext.getText("Actual like pattern should exist."));
assertThat(assertContext.getText("Like pattern assertion error"), actual.getLikePattern().get(), is(expected.getLikePattern()));
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/rule/checker/ShardingRuleChecker.java | shardingsphere-sharding-core | 110 |
| org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java | shardingsphere-sharding-distsql-handler | 270 |
private boolean isValidActualTableName(final ShardingTable sampleShardingTable, final ShardingTable shardingTable) {
for (String each : sampleShardingTable.getActualDataSourceNames()) {
Collection<String> sampleActualTableNames = sampleShardingTable.getActualTableNames(each).stream()
.map(actualTableName -> actualTableName.replace(sampleShardingTable.getTableDataNode().getPrefix(), "")).collect(Collectors.toSet());
Collection<String> actualTableNames =
shardingTable.getActualTableNames(each).stream().map(optional -> optional.replace(shardingTable.getTableDataNode().getPrefix(), "")).collect(Collectors.toSet());
if (!sampleActualTableNames.equals(actualTableNames)) {
return false;
}
}
return true;
}
private boolean isBindingShardingAlgorithm(final ShardingTable sampleShardingTable, final ShardingTable shardingTable, final boolean databaseAlgorithm, | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 383 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 630 |
int stopIndex = ctx.getStop().getStopIndex();
if (null != ctx.subquery()) {
SubquerySegment subquerySegment = new SubquerySegment(
ctx.subquery().getStart().getStartIndex(), ctx.subquery().getStop().getStopIndex(), (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
if (null != ctx.EXISTS()) {
subquerySegment.getSelect().setSubqueryType(SubqueryType.EXISTS);
return new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
return new SubqueryExpressionSegment(subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 206 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 181 |
}
@Override
public ASTNode visitAssignmentValue(final AssignmentValueContext ctx) {
ExprContext expr = ctx.expr();
if (null != expr) {
return visit(expr);
}
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.getText());
}
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
DeleteStatement result = new DeleteStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.singleTableClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
result.addParameterMarkers(getParameterMarkerSegments()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java | shardingsphere-encrypt-distsql-parser | 113 |
| org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java | shardingsphere-sharding-distsql-parser | 305 |
return new AlgorithmSegment(IdentifierValueUtils.getValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition()));
}
private Properties getProperties(final PropertiesDefinitionContext ctx) {
Properties result = new Properties();
if (null == ctx || null == ctx.properties()) {
return result;
}
for (PropertyContext each : ctx.properties().property()) {
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), QuoteCharacter.unwrapAndTrimText(each.value.getText()));
}
return result;
}
@Override
public ASTNode visitTableName(final TableNameContext ctx) {
return new TableNameSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
}
@Override
public ASTNode visitDatabaseName(final DatabaseNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 189 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 306 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 545 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 381 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 166 |
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.java | shardingsphere-data-pipeline-opengauss | 48 |
| org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.java | shardingsphere-data-pipeline-postgresql | 58 |
PipelineSQLSegmentBuilder sqlSegmentBuilder = new PipelineSQLSegmentBuilder(getType());
result.append(dataRecord.getColumns().stream()
.filter(each -> !each.isUniqueKey()).map(each -> sqlSegmentBuilder.getEscapedIdentifier(each.getName()) + "=EXCLUDED." + sqlSegmentBuilder.getEscapedIdentifier(each.getName()))
.collect(Collectors.joining(",")));
return Optional.of(result.toString());
}
@Override
public String buildCheckEmptyTableSQL(final String qualifiedTableName) {
return String.format("SELECT * FROM %s LIMIT 1", qualifiedTableName);
}
@Override
public Optional<String> buildEstimatedCountSQL(final String catalogName, final String qualifiedTableName) {
return Optional.of(String.format("SELECT reltuples::integer FROM pg_class WHERE oid='%s'::regclass::oid;", qualifiedTableName));
}
@Override
public Collection<String> buildCreateTableSQLs(final DataSource dataSource, final String schemaName, final String tableName) throws SQLException { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/connector/opengauss/checker/OpenGaussDatabasePrivilegeChecker.java | shardingsphere-database-connector-opengauss | 38 |
| org/apache/shardingsphere/database/connector/postgresql/checker/PostgreSQLDatabasePrivilegeChecker.java | shardingsphere-database-connector-postgresql | 38 |
public final class OpenGaussDatabasePrivilegeChecker implements DialectDatabasePrivilegeChecker {
private static final String SHOW_GRANTS_SQL = "SELECT * FROM pg_roles WHERE rolname = ?";
@Override
public void check(final DataSource dataSource, final PrivilegeCheckType privilegeCheckType) {
if (PrivilegeCheckType.PIPELINE != privilegeCheckType) {
return;
}
try (
Connection connection = dataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(SHOW_GRANTS_SQL)) {
DatabaseMetaData metaData = connection.getMetaData();
preparedStatement.setString(1, metaData.getUserName());
try (ResultSet resultSet = preparedStatement.executeQuery()) {
String username = metaData.getUserName();
ShardingSpherePreconditions.checkState(resultSet.next(), () -> new MissingRequiredUserException(username));
String isSuperRole = resultSet.getString("rolsuper");
String isReplicationRole = resultSet.getString("rolreplication"); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 526 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 644 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1174 |
public final ASTNode visitDataTypeLength(final ClickHouseStatementParser.DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_();
if (numbers.size() == 1) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
}
if (numbers.size() == 2) {
result.setPrecision(Integer.parseInt(numbers.get(0).getText()));
result.setScale(Integer.parseInt(numbers.get(1).getText()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 243 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 465 |
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.LP_()) {
return visit(ctx.expr(0));
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDCLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 71 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 85 |
}
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
return new CreateUserStatement(getDatabaseType());
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
return new DropUserStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetRole(final SetRoleContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 228 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 465 |
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.LP_()) {
return visit(ctx.expr(0));
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java | shardingsphere-encrypt-core | 53 |
| org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.java | shardingsphere-mask-core | 51 |
@Override
public Object getValue(final int columnIndex, final Class<?> type) throws SQLException {
Optional<ColumnSegmentBoundInfo> columnSegmentBoundInfo = selectStatementContext.findColumnBoundInfo(columnIndex);
if (!columnSegmentBoundInfo.isPresent()) {
return getMergedResult().getValue(columnIndex, type);
}
String originalTableName = columnSegmentBoundInfo.get().getOriginalTable().getValue();
String originalColumnName = columnSegmentBoundInfo.get().getOriginalColumn().getValue();
ShardingSphereDatabase database = metaData.containsDatabase(columnSegmentBoundInfo.get().getOriginalDatabase().getValue())
? metaData.getDatabase(columnSegmentBoundInfo.get().getOriginalDatabase().getValue())
: this.database;
Optional<EncryptRule> rule = database.getRuleMetaData().findSingleRule(EncryptRule.class); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/rule/ShardingTable.java | shardingsphere-sharding-core | 144 |
| org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java | shardingsphere-sharding-distsql-handler | 564 |
private DataNodeInfo createTableDataNode(final Collection<DataNode> actualDataNodes) {
String tableName = actualDataNodes.iterator().next().getTableName();
String prefix = tableName.startsWith(logicTable) ? logicTable + ShardingTableConstants.DATA_NODE_SUFFIX_PATTERN.matcher(tableName.substring(logicTable.length())).replaceAll("")
: ShardingTableConstants.DATA_NODE_SUFFIX_PATTERN.matcher(tableName).replaceAll("");
int suffixMinLength = actualDataNodes.stream().map(each -> each.getTableName().length() - prefix.length()).min(Comparator.comparing(Integer::intValue)).orElse(1);
return new DataNodeInfo(prefix, suffixMinLength, ShardingTableConstants.DEFAULT_PADDING_CHAR);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 615 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 385 |
return new CommonExpressionSegment(context.getStart().getStartIndex(), context.getStop().getStopIndex(), context.getText());
}
return astNode;
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
if (null != ctx.subquery()) {
return new SubquerySegment(startIndex, stopIndex, (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 95 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 231 |
public final ASTNode visitLiterals(final ClickHouseStatementParser.LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1098 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1531 |
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext ctx) {
Collection<ColumnAssignmentSegment> columns = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
columns.add((ColumnAssignmentSegment) visit(each));
}
return new OnDuplicateKeyColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1531 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 866 |
result.getValues().addAll(insertValuesSegments);
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext ctx) {
Collection<ColumnAssignmentSegment> columns = new LinkedList<>();
for (AssignmentContext each : ctx.assignment()) {
columns.add((ColumnAssignmentSegment) visit(each));
}
return new OnDuplicateKeyColumnsSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 945 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1050 |
return new PostgreSQLCreateTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchDictionary(final AlterTextSearchDictionaryContext ctx) {
return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchTemplate(final AlterTextSearchTemplateContext ctx) {
return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchParser(final AlterTextSearchParserContext ctx) {
return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateExtension(final CreateExtensionContext ctx) {
return new PostgreSQLCreateExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterExtension(final AlterExtensionContext ctx) {
return new PostgreSQLAlterExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropExtension(final DropExtensionContext ctx) {
return new PostgreSQLDropExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDeclare(final DeclareContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyExecutor.java | shardingsphere-sharding-distsql-handler | 105 |
| org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyExecutor.java | shardingsphere-sharding-distsql-handler | 103 |
shardingRuleConfig.getShardingAlgorithms().put(result, createAlgorithmConfiguration(sqlStatement.getAlgorithmSegment()));
return result;
}
private AlgorithmConfiguration createAlgorithmConfiguration(final AlgorithmSegment segment) {
return new AlgorithmConfiguration(segment.getName(), segment.getProps());
}
private String getDefaultShardingAlgorithmName(final String defaultType, final String algorithmType) {
return String.format("default_%s_%s", defaultType, algorithmType).toLowerCase();
}
private void setStrategyConfiguration(final ShardingRuleConfiguration ruleConfig, final String type, final ShardingStrategyConfiguration shardingStrategyConfig) {
if (type.equalsIgnoreCase(ShardingStrategyLevelType.TABLE.name())) {
ruleConfig.setDefaultTableShardingStrategy(shardingStrategyConfig);
} else {
ruleConfig.setDefaultDatabaseShardingStrategy(shardingStrategyConfig);
}
}
@Override
public ShardingRuleConfiguration buildToBeDroppedRuleConfiguration(final ShardingRuleConfiguration toBeAlteredRuleConfig) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDMLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 129 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 388 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDMLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 135 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 360 |
result.setHintScope(hintScope);
}
return result;
}
@Override
public ASTNode visitWindowClause(final WindowClauseContext ctx) {
WindowSegment result = new WindowSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
for (WindowItemContext each : ctx.windowItem()) {
result.getItemSegments().add((WindowItemSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitWindowItem(final WindowItemContext ctx) {
WindowItemSegment result = new WindowItemSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
result.setWindowName(new IdentifierValue(ctx.identifier().getText())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 427 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1444 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1177 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 355 |
}
ExpressionSegment column = (ExpressionSegment) projection;
ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getText()), column)
: new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getText()), column);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.escapedTableReference(0)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 81 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDCLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 71 |
}
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
return new CreateUserStatement(getDatabaseType());
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
return new DropUserStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
return new DropRoleStatement(getDatabaseType());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 166 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 319 |
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) {
return new NumberLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java | shardingsphere-encrypt-distsql-parser | 108 |
| org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java | shardingsphere-mask-distsql-parser | 91 |
return null == ctx.likeQueryAlgorithm() ? null : (AlgorithmSegment) visit(ctx.likeQueryAlgorithm().algorithmDefinition());
}
@Override
public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext ctx) {
return new AlgorithmSegment(IdentifierValueUtils.getValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition()));
}
private Properties getProperties(final PropertiesDefinitionContext ctx) {
Properties result = new Properties();
if (null == ctx || null == ctx.properties()) {
return result;
}
for (PropertyContext each : ctx.properties().property()) {
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), QuoteCharacter.unwrapAndTrimText(each.value.getText()));
}
return result;
}
@Override
public ASTNode visitTableName(final TableNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleExecutor.java | shardingsphere-sharding-distsql-handler | 75 |
| org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleExecutor.java | shardingsphere-sharding-distsql-handler | 108 |
}
UnusedAlgorithmFinder.findUnusedShardingAlgorithm(rule.getConfiguration()).forEach(each -> result.getShardingAlgorithms().put(each, rule.getConfiguration().getShardingAlgorithms().get(each)));
UnusedAlgorithmFinder.findUnusedKeyGenerator(rule.getConfiguration()).forEach(each -> result.getKeyGenerators().put(each, rule.getConfiguration().getKeyGenerators().get(each)));
UnusedAlgorithmFinder.findUnusedAuditor(rule.getConfiguration()).forEach(each -> result.getAuditors().put(each, rule.getConfiguration().getAuditors().get(each)));
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java | shardingsphere-mask-distsql-parser | 91 |
| org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java | shardingsphere-sql-translator-distsql-parser | 50 |
return new MaskColumnSegment(IdentifierValueUtils.getValue(ctx.columnName()), (AlgorithmSegment) visit(ctx.algorithmDefinition()));
}
@Override
public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext ctx) {
return new AlgorithmSegment(IdentifierValueUtils.getValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition()));
}
private Properties getProperties(final PropertiesDefinitionContext ctx) {
Properties result = new Properties();
if (null == ctx || null == ctx.properties()) {
return result;
}
for (PropertyContext each : ctx.properties().property()) {
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), QuoteCharacter.unwrapAndTrimText(each.value.getText()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 298 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 343 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 327 |
private InExpression createInSegment(final ClickHouseStatementParser.PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment right;
if (null != ctx.subquery()) {
right = new SubqueryExpressionSegment(new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (SelectStatement) visit(ctx.subquery()),
getOriginalText(ctx.subquery())));
} else {
ListExpression listExpression = new ListExpression(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex());
for (ClickHouseStatementParser.ExprContext each : ctx.expr()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 314 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 357 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 373 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 357 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 521 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 298 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 544 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 521 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 373 |
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final PredicateContext ctx) {
if (null != ctx.IN()) {
return createInSegment(ctx);
}
if (null != ctx.BETWEEN()) {
return createBetweenSegment(ctx);
}
if (null != ctx.LIKE()) {
return createBinaryOperationExpressionFromLike(ctx);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 502 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 531 |
public final ASTNode visitOrderByItem(final ClickHouseStatementParser.OrderByItemContext ctx) {
OrderDirection orderDirection = null == ctx.DESC() ? OrderDirection.ASC : OrderDirection.DESC;
if (null != ctx.columnName()) {
ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
return new ColumnOrderByItemSegment(column, orderDirection, null);
}
return new IndexOrderByItemSegment(ctx.numberLiterals().getStart().getStartIndex(), ctx.numberLiterals().getStop().getStopIndex(),
SQLUtils.getExactlyNumber(ctx.numberLiterals().getText(), 10).intValue(), orderDirection, null);
}
@Override
public final ASTNode visitDataType(final ClickHouseStatementParser.DataTypeContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 198 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 366 |
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 242 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 366 |
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 243 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 366 |
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 183 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 366 |
return null == unreservedWord ? new IdentifierValue(ctx.getText()) : visit(unreservedWord);
}
@Override
public final ASTNode visitUnreservedWord(final UnreservedWordContext ctx) {
return new IdentifierValue(ctx.getText());
}
@Override
public final ASTNode visitSchemaName(final SchemaNameContext ctx) {
return visit(ctx.identifier());
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java | shardingsphere-encrypt-distsql-parser | 108 |
| org/apache/shardingsphere/sqltranslator/distsql/parser/core/SQLTranslatorDistSQLStatementVisitor.java | shardingsphere-sql-translator-distsql-parser | 50 |
return null == ctx.likeQueryAlgorithm() ? null : (AlgorithmSegment) visit(ctx.likeQueryAlgorithm().algorithmDefinition());
}
@Override
public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext ctx) {
return new AlgorithmSegment(IdentifierValueUtils.getValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition()));
}
private Properties getProperties(final PropertiesDefinitionContext ctx) {
Properties result = new Properties();
if (null == ctx || null == ctx.properties()) {
return result;
}
for (PropertyContext each : ctx.properties().property()) {
result.setProperty(QuoteCharacter.unwrapAndTrimText(each.key.getText()), QuoteCharacter.unwrapAndTrimText(each.value.getText()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/AlterDatabaseRuleOperator.java | shardingsphere-infra-distsql-handler | 59 |
| org/apache/shardingsphere/distsql/handler/engine/update/rdl/rule/engine/database/type/CreateDatabaseRuleOperator.java | shardingsphere-infra-distsql-handler | 52 |
}
@SuppressWarnings("unchecked")
private RuleConfiguration decorateRuleConfiguration(final ShardingSphereDatabase database, final RuleConfiguration ruleConfig) {
return TypedSPILoader.findService(RuleConfigurationDecorator.class, ruleConfig.getClass()).map(optional -> optional.decorate(database.getName(),
database.getResourceMetaData().getStorageUnits().entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, entry -> entry.getValue().getDataSource(), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)),
database.getRuleMetaData().getRules(), ruleConfig)).orElse(ruleConfig);
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 345 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 195 |
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 186 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 195 |
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 356 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 195 |
public final ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.identifier()));
}
@Override
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 333 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 369 |
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(),
ctx.name().getStop().getStopIndex(), new IdentifierValue(ctx.name().identifier().getText())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 226 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 64 |
AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.viewNames())).getValue());
return result;
}
@Override | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 225 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 64 |
AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
return result;
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.viewNames())).getValue());
return result;
}
@Override | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactory.java | shardingsphere-proxy-frontend-opengauss | 90 |
| org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactory.java | shardingsphere-proxy-frontend-postgresql | 85 |
result.add(getCommandExecutor((CommandPacketType) each.getIdentifier(), each, connectionSession, portalContext));
}
return new PostgreSQLAggregatedCommandExecutor(result);
}
private static List<CommandExecutor> getExecutorsOfAggregatedBatchedStatements(final PostgreSQLAggregatedCommandPacket aggregatedCommandPacket,
final ConnectionSession connectionSession, final PortalContext portalContext) throws SQLException {
List<PostgreSQLCommandPacket> packets = aggregatedCommandPacket.getPackets();
int batchPacketBeginIndex = aggregatedCommandPacket.getBatchPacketBeginIndex();
int batchPacketEndIndex = aggregatedCommandPacket.getBatchPacketEndIndex();
List<CommandExecutor> result = new ArrayList<>(batchPacketBeginIndex + packets.size() - batchPacketEndIndex);
for (int i = 0; i < batchPacketBeginIndex; i++) {
PostgreSQLCommandPacket each = packets.get(i);
result.add(getCommandExecutor((CommandPacketType) each.getIdentifier(), each, connectionSession, portalContext)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/CreateIndexStatementAssert.java | shardingsphere-test-it-parser | 78 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/DropIndexStatementAssert.java | shardingsphere-test-it-parser | 75 |
private static void assertLockTable(final SQLCaseAssertContext assertContext, final CreateIndexStatement actual, final CreateIndexStatementTestCase expected) {
if (null == expected.getLockOption()) {
assertFalse(actual.getLockTable().isPresent(), assertContext.getText("Actual lock table segments should not exist."));
} else {
assertTrue(actual.getLockTable().isPresent(), assertContext.getText("Actual lock table segments should exist."));
assertThat(assertContext.getText(String.format("`%s`'s lock table assertion error: ", actual.getClass().getSimpleName())),
actual.getLockTable().get().getLockTableOption().name(), is(expected.getLockOption().getType()));
}
}
private static void assertAlgorithm(final SQLCaseAssertContext assertContext, final CreateIndexStatement actual, final CreateIndexStatementTestCase expected) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 279 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 146 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 131 |
return visit(ctx.temporalLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public ASTNode visitString_(final String_Context ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 146 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 120 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 129 |
return visit(ctx.numberLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) {
return new StringLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNumberLiterals(final NumberLiteralsContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 185 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 274 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 349 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 85 |
result.setIfNotExists(null != ctx.createTableCommonClause().ifNotExists());
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (ColumnDefinitionContext each : ctx.columnDefinition()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1129 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1620 |
UpdateStatement result = new UpdateStatement(getDatabaseType());
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1620 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 897 |
UpdateStatement result = new UpdateStatement(databaseType);
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactory.java | shardingsphere-proxy-frontend-opengauss | 120 |
| org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactory.java | shardingsphere-proxy-frontend-postgresql | 112 |
return new OpenGaussComQueryExecutor(portalContext, (PostgreSQLComQueryPacket) commandPacket, connectionSession);
case PARSE_COMMAND:
return new PostgreSQLComParseExecutor((PostgreSQLComParsePacket) commandPacket, connectionSession);
case BIND_COMMAND:
return new PostgreSQLComBindExecutor(portalContext, (PostgreSQLComBindPacket) commandPacket, connectionSession);
case DESCRIBE_COMMAND:
return new PostgreSQLComDescribeExecutor(portalContext, (PostgreSQLComDescribePacket) commandPacket, connectionSession);
case EXECUTE_COMMAND:
return new PostgreSQLComExecuteExecutor(portalContext, (PostgreSQLComExecutePacket) commandPacket);
case SYNC_COMMAND:
return new PostgreSQLComSyncExecutor(connectionSession);
case CLOSE_COMMAND:
return new PostgreSQLComCloseExecutor(portalContext, (PostgreSQLComClosePacket) commandPacket, connectionSession);
case FLUSH_COMMAND:
return new PostgreSQLComFlushExecutor();
case TERMINATE:
return new PostgreSQLComTerminationExecutor();
default:
return new PostgreSQLUnsupportedCommandExecutor();
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 363 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 859 |
SelectStatement result = new SelectStatement(getDatabaseType());
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
valuesExpression.getRowConstructorList().addAll(createRowConstructorList(ctx.rowConstructorList()));
result.setProjections(new ProjectionsSegment(startIndex, stopIndex));
result.getProjections().getProjections().add(new ExpressionProjectionSegment(startIndex, stopIndex, getOriginalText(ctx), valuesExpression));
return result;
}
private Collection<InsertValuesSegment> createRowConstructorList(final RowConstructorListContext ctx) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : ctx.assignmentValues()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 859 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 335 |
SelectStatement result = new SelectStatement(databaseType);
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
valuesExpression.getRowConstructorList().addAll(createRowConstructorList(ctx.rowConstructorList()));
result.setProjections(new ProjectionsSegment(startIndex, stopIndex));
result.getProjections().getProjections().add(new ExpressionProjectionSegment(startIndex, stopIndex, getOriginalText(ctx), valuesExpression));
return result;
}
private Collection<InsertValuesSegment> createRowConstructorList(final RowConstructorListContext ctx) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (int index = 0; index < ctx.getChildCount(); index++) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 408 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 234 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 249 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 419 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 413 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 265 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 219 |
for (ViewNameContext each : ctx.viewName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.XOR()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleExecutor.java | shardingsphere-encrypt-distsql-handler | 72 |
| org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleExecutor.java | shardingsphere-encrypt-distsql-handler | 75 |
private void checkColumnNames(final AlterEncryptRuleStatement sqlStatement) {
for (EncryptRuleSegment each : sqlStatement.getRules()) {
ShardingSpherePreconditions.checkState(isColumnNameNotConflicts(each),
() -> new InvalidRuleConfigurationException("encrypt", "assisted query column or like query column conflicts with logic column"));
}
}
private boolean isColumnNameNotConflicts(final EncryptRuleSegment rule) {
return rule.getColumns().stream().noneMatch(each -> null != each.getLikeQuery() && each.getName().equals(each.getLikeQuery().getName())
|| null != each.getAssistedQuery() && each.getName().equals(each.getAssistedQuery().getName()));
}
private void checkToBeAlteredEncryptors(final AlterEncryptRuleStatement sqlStatement) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/rule/ShardingRule.java | shardingsphere-sharding-core | 158 |
| org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java | shardingsphere-sharding-distsql-handler | 180 |
private Collection<String> getDataSourceNames(final Collection<ShardingTableRuleConfiguration> tableRuleConfigs,
final Collection<ShardingAutoTableRuleConfiguration> autoTableRuleConfigs, final Collection<String> dataSourceNames) {
if (tableRuleConfigs.isEmpty() && autoTableRuleConfigs.isEmpty()) {
return dataSourceNames;
}
if (tableRuleConfigs.stream().map(ShardingTableRuleConfiguration::getActualDataNodes).anyMatch(each -> null == each || each.isEmpty())) {
return dataSourceNames;
}
Collection<String> result = new LinkedHashSet<>();
tableRuleConfigs.forEach(each -> result.addAll(getDataSourceNames(each)));
autoTableRuleConfigs.forEach(each -> result.addAll(getDataSourceNames(each))); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 582 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 570 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 341 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 587 |
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private BetweenExpression createBetweenSegment(final PredicateContext ctx) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0));
ExpressionSegment between = (ExpressionSegment) visit(ctx.bitExpr(1));
ExpressionSegment and = (ExpressionSegment) visit(ctx.predicate());
boolean not = null != ctx.NOT();
return new BetweenExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, between, and, not);
}
@Override
public final ASTNode visitBitExpr(final BitExprContext ctx) {
if (null != ctx.simpleExpr()) {
return visit(ctx.simpleExpr()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 874 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 901 |
}
@Override
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
if (null != ctx.jsonFunction()) {
return visit(ctx.jsonFunction());
}
if (null != ctx.udfFunction()) {
return visit(ctx.udfFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 100 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 185 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 85 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 76 |
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
if (each instanceof ColumnDefinitionSegment) {
result.getColumnDefinitions().add((ColumnDefinitionSegment) each);
} else if (each instanceof ConstraintDefinitionSegment) {
result.getConstraintDefinitions().add((ConstraintDefinitionSegment) each);
}
}
}
return result;
}
@Override
public ASTNode visitCreateDefinitionClause(final CreateDefinitionClauseContext ctx) {
CollectionValue<CreateDefinitionSegment> result = new CollectionValue<>();
for (CreateDefinitionContext each : ctx.createDefinition()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/backend/firebird/response/header/query/FirebirdQueryHeaderBuilder.java | shardingsphere-proxy-backend-firebird | 30 |
| org/apache/shardingsphere/proxy/backend/postgresql/response/header/query/PostgreSQLQueryHeaderBuilder.java | shardingsphere-proxy-backend-postgresql | 30 |
public final class FirebirdQueryHeaderBuilder implements QueryHeaderBuilder {
private static final int UNUSED_INT_FIELD = 0;
private static final String UNUSED_STRING_FIELD = "";
private static final boolean UNUSED_BOOLEAN_FIELD = false;
@Override
public QueryHeader build(final QueryResultMetaData queryResultMetaData,
final ShardingSphereDatabase database, final String columnName, final String columnLabel, final int columnIndex) throws SQLException {
int columnType = queryResultMetaData.getColumnType(columnIndex);
String columnTypeName = queryResultMetaData.getColumnTypeName(columnIndex);
int columnLength = queryResultMetaData.getColumnLength(columnIndex);
return new QueryHeader(UNUSED_STRING_FIELD, UNUSED_STRING_FIELD, columnLabel, UNUSED_STRING_FIELD, columnType, columnTypeName, columnLength,
UNUSED_INT_FIELD, UNUSED_BOOLEAN_FIELD, UNUSED_BOOLEAN_FIELD, UNUSED_BOOLEAN_FIELD, UNUSED_BOOLEAN_FIELD);
}
@Override
public String getDatabaseType() {
return "Firebird"; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLInstallComponentStatementAssert.java | shardingsphere-test-it-parser | 45 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLUninstallComponentStatementAssert.java | shardingsphere-test-it-parser | 45 |
public static void assertIs(final SQLCaseAssertContext assertContext, final MySQLInstallComponentStatement actual, final MySQLInstallComponentStatementTestCase expected) {
assertThat(assertContext.getText("Actual components size assertion error: "), actual.getComponents().size(), is(expected.getComponents().size()));
assertComponents(assertContext, actual.getComponents(), expected.getComponents());
}
private static void assertComponents(final SQLCaseAssertContext assertContext, final List<String> actual, final List<ExpectedComponent> expected) {
int count = 0;
for (String each : actual) {
assertThat(assertContext.getText("Actual component value does not match: "), each, is(expected.get(count).getName()));
count++;
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/data/pipeline/opengauss/ingest/incremental/dumper/OpenGaussIncrementalDumper.java | shardingsphere-data-pipeline-opengauss | 94 |
| org/apache/shardingsphere/data/pipeline/postgresql/ingest/incremental/dumper/PostgreSQLIncrementalDumper.java | shardingsphere-data-pipeline-postgresql | 84 |
logicalReplication = new OpenGaussLogicalReplication();
decodeWithTX = dumperContext.isDecodeWithTX();
}
@SneakyThrows(InterruptedException.class)
@Override
protected void runBlocking() {
AtomicInteger reconnectTimes = new AtomicInteger();
while (isRunning()) {
try {
dump();
break;
} catch (final SQLException ex) {
int times = reconnectTimes.incrementAndGet();
log.error("Connect failed, reconnect times={}", times, ex);
if (isRunning()) {
Thread.sleep(5000L);
}
if (times >= 5) {
throw new IngestException(ex);
}
}
}
}
@SneakyThrows(InterruptedException.class)
private void dump() throws SQLException { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/data/pipeline/cdc/core/prepare/CDCJobPreparer.java | shardingsphere-data-pipeline-cdc-core | 108 |
| org/apache/shardingsphere/data/pipeline/scenario/migration/preparer/MigrationJobPreparer.java | shardingsphere-data-pipeline-scenario-migration-core | 152 |
CDCTaskConfiguration taskConfig = jobItemContext.getTaskConfig();
JobItemIncrementalTasksProgress initIncremental = null == jobItemContext.getInitProgress() ? null : jobItemContext.getInitProgress().getIncremental();
try {
DatabaseType databaseType = taskConfig.getDumperContext().getCommonContext().getDataSourceConfig().getDatabaseType();
IngestPosition position = new IncrementalTaskPositionManager(databaseType).getPosition(initIncremental, taskConfig.getDumperContext(), jobItemContext.getDataSourceManager());
taskConfig.getDumperContext().getCommonContext().setPosition(position);
} catch (final SQLException ex) {
throw new PrepareJobWithGetBinlogPositionException(jobItemContext.getJobId(), ex);
}
}
private void initInventoryTasks(final CDCJobItemContext jobItemContext, final AtomicBoolean importerUsed, final List<CDCChannelProgressPair> channelProgressPairs) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 366 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 391 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 395 |
return new SubquerySegment(startIndex, stopIndex, (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(segment);
return segment;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.functionCall()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 616 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 641 |
return new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 2018 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 2034 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 2055 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 2071 |
public ASTNode visitLimitRowCount(final LimitRowCountContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue());
parameterMarkerSegments.add(result);
return result;
}
@Override
public final ASTNode visitConstraintName(final ConstraintNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 459 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 641 |
return null == ctx.EXISTS() ? new SubqueryExpressionSegment(subquerySegment) : new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 638 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 641 |
return new SubqueryExpressionSegment(subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 475 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 641 |
return null == ctx.EXISTS() ? new SubqueryExpressionSegment(subquerySegment) : new ExistsSubqueryExpression(startIndex, stopIndex, subquerySegment);
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment result = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType());
parameterMarkerSegments.add(result);
return result;
}
if (null != ctx.literals()) {
return SQLUtils.createLiteralExpression(visit(ctx.literals()), startIndex, stopIndex, ctx.literals().start.getInputStream().getText(new Interval(startIndex, stopIndex)));
}
if (null != ctx.intervalExpression()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1241 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.valuesTable()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/view/AlterViewPushDownMetaDataRefresher.java | shardingsphere-mode-core | 73 |
| org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/view/CreateViewPushDownMetaDataRefresher.java | shardingsphere-mode-core | 50 |
RuleMetaData ruleMetaData = new RuleMetaData(new LinkedList<>(database.getRuleMetaData().getRules()));
if (TableRefreshUtils.isSingleTable(viewName, database)) {
ruleMetaData.getAttributes(MutableDataNodeRuleAttribute.class).forEach(each -> each.put(logicDataSourceName, schemaName, viewName));
}
GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getResourceMetaData().getStorageUnits(), ruleMetaData.getRules(), props, schemaName);
Map<String, ShardingSphereSchema> schemas = GenericSchemaBuilder.build(Collections.singletonList(viewName), database.getProtocolType(), material);
Optional<ShardingSphereTable> actualViewMetaData = Optional.ofNullable(schemas.get(schemaName)).map(optional -> optional.getTable(viewName)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 362 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 621 |
public final ASTNode visitSimpleExpr(final ClickHouseStatementParser.SimpleExprContext ctx) {
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
if (null != ctx.subquery()) {
return new SubquerySegment(startIndex, stopIndex, (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 229 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 284 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 285 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 214 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 442 |
}
@Override
public final ASTNode visitTableNames(final TableNamesContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue<ColumnSegment> result = new CollectionValue<>();
for (ColumnNameContext each : ctx.columnName()) {
result.getValue().add((ColumnSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitExpr(final ExprContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java | shardingsphere-agent-tracing-opentelemetry | 55 |
| org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java | shardingsphere-agent-tracing-opentelemetry | 48 |
}
@Override
public void afterMethod(final TargetAdviceObject target, final TargetAdviceMethod method, final Object[] args, final Object result, final String pluginType) {
Span span = (Span) target.getAttachment();
span.setStatus(StatusCode.OK);
span.end();
}
@Override
public void onThrowing(final TargetAdviceObject target, final TargetAdviceMethod method, final Object[] args, final Throwable throwable, final String pluginType) {
Span span = (Span) target.getAttachment();
span.setStatus(StatusCode.ERROR).recordException(throwable);
span.end();
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 212 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1190 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 119 |
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 477 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1006 |
for (ExprContext each : ctx.expr()) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.castFunction()) {
return visit(ctx.castFunction());
}
if (null != ctx.genIdFunction()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 256 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1190 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 119 |
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 667 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 688 |
Collection<ColumnSegment> columns = new LinkedList<>();
if (null != ctx.columnOrColumnList().columnName()) {
columns.add((ColumnSegment) visit(ctx.columnOrColumnList().columnName()));
} else {
for (ColumnNameContext each : ctx.columnOrColumnList().columnNames().columnName()) {
columns.add((ColumnSegment) visit(each));
}
}
return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columns);
}
@Override
public ASTNode visitModifyColProperties(final ModifyColPropertiesContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 257 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1190 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 119 |
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 197 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1190 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 119 |
public final ASTNode visitTableName(final TableNameContext ctx) {
SimpleTableSegment result = new SimpleTableSegment(new TableNameSegment(ctx.name().getStart().getStartIndex(), ctx.name().getStop().getStopIndex(), (IdentifierValue) visit(ctx.name())));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitColumnName(final ColumnNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java | shardingsphere-protocol-opengauss | 123 |
| org/apache/shardingsphere/database/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java | shardingsphere-protocol-postgresql | 121 |
PostgreSQLMessageSeverityLevel.ERROR, PostgreSQLVendorError.SYSTEM_ERROR.getSqlState().getValue(), ex.getMessage());
isIdentifierPacket = true;
prepareMessageHeader(out, errorResponsePacket.getIdentifier().getValue());
errorResponsePacket.write(payload);
} finally {
if (isIdentifierPacket) {
updateMessageLength(out);
}
}
}
private void prepareMessageHeader(final ByteBuf out, final char type) {
out.writeByte(type);
out.writeInt(0);
}
private void updateMessageLength(final ByteBuf out) {
out.setInt(1, out.readableBytes() - MESSAGE_TYPE_LENGTH);
}
@Override
public PostgreSQLPacketPayload createPacketPayload(final ByteBuf message, final Charset charset) {
return new PostgreSQLPacketPayload(message, charset);
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/infra/binder/context/segment/insert/values/InsertValueContext.java | shardingsphere-infra-binder-core | 53 |
| org/apache/shardingsphere/infra/binder/context/segment/insert/values/OnDuplicateUpdateContext.java | shardingsphere-infra-binder-core | 57 |
parameters = getParameters(params, parametersOffset);
}
private List<ExpressionSegment> getValueExpressions(final Collection<ExpressionSegment> assignments) {
List<ExpressionSegment> result = new ArrayList<>(assignments.size());
result.addAll(assignments);
return result;
}
private List<Object> getParameters(final List<Object> params, final int paramsOffset) {
if (params.isEmpty() || 0 == parameterCount) {
return Collections.emptyList();
}
List<Object> result = new ArrayList<>(parameterCount);
result.addAll(params.subList(paramsOffset, paramsOffset + parameterCount));
return result;
}
/**
* Get literal value.
*
* @param index index
* @return literal value
*/
public Optional<Object> getLiteralValue(final int index) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 351 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1804 |
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
QualifiedShorthandContext shorthand = ctx.qualifiedShorthand();
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierValue identifier = new IdentifierValue(shorthand.identifier().getText());
result.setOwner(new OwnerSegment(shorthand.identifier().getStart().getStartIndex(), shorthand.identifier().getStop().getStopIndex(), identifier));
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 279 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1804 |
}
@Override
public ASTNode visitProjection(final ProjectionContext ctx) {
// FIXME :The stop index of project is the stop index of projection, instead of alias.
if (null != ctx.qualifiedShorthand()) {
QualifiedShorthandContext shorthand = ctx.qualifiedShorthand();
ShorthandProjectionSegment result = new ShorthandProjectionSegment(shorthand.getStart().getStartIndex(), shorthand.getStop().getStopIndex());
IdentifierValue identifier = new IdentifierValue(shorthand.identifier().getText());
result.setOwner(new OwnerSegment(shorthand.identifier().getStart().getStartIndex(), shorthand.identifier().getStop().getStopIndex(), identifier));
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/encrypt/rewrite/token/generator/insert/EncryptInsertValuesTokenGenerator.java | shardingsphere-encrypt-core | 114 |
| org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingInsertValuesTokenGenerator.java | shardingsphere-sharding-core | 62 |
result.getInsertValues().add(insertValueToken);
}
return result;
}
private int getStartIndex(final Collection<InsertValuesSegment> segments) {
int result = segments.iterator().next().getStartIndex();
for (InsertValuesSegment each : segments) {
result = Math.min(result, each.getStartIndex());
}
return result;
}
private int getStopIndex(final Collection<InsertValuesSegment> segments) {
int result = segments.iterator().next().getStopIndex();
for (InsertValuesSegment each : segments) {
result = Math.max(result, each.getStopIndex());
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 314 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 323 |
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) {
return new IdentifierValue(ctx.getText()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1485 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 146 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1095 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 863 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 127 |
} else {
result.setInsertColumns(new InsertColumnsSegment(ctx.start.getStartIndex() - 1, ctx.start.getStartIndex() - 1, Collections.emptyList()));
}
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
private Collection<InsertValuesSegment> createInsertValuesSegments(final Collection<AssignmentValuesContext> assignmentValuesContexts) {
Collection<InsertValuesSegment> result = new LinkedList<>();
for (AssignmentValuesContext each : assignmentValuesContexts) {
result.add((InsertValuesSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitOnDuplicateKeyClause(final OnDuplicateKeyClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 427 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 428 |
return null == ctx.tablesOption() ? new MySQLFlushStatement(getDatabaseType(), Collections.emptyList(), false) : visit(ctx.tablesOption());
}
@Override
public ASTNode visitTablesOption(final TablesOptionContext ctx) {
return new MySQLFlushStatement(getDatabaseType(), ctx.tableName().stream().map(each -> (SimpleTableSegment) visit(each)).collect(Collectors.toList()), true);
}
@Override
public ASTNode visitKill(final KillContext ctx) {
return new MySQLKillStatement(getDatabaseType(), null == ctx.AT_() ? ctx.IDENTIFIER_().getText() : ctx.AT_().getText() + ctx.IDENTIFIER_().getText(), null); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDALStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 834 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDALStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 842 |
if (null != ctx.setSystemVariable()) {
return ctx.setExprOrDefault().getText();
}
return null;
}
@Override
public ASTNode visitSetCharacter(final SetCharacterContext ctx) {
int startIndex = null == ctx.CHARSET() ? ctx.CHARACTER().getSymbol().getStartIndex() : ctx.CHARSET().getSymbol().getStartIndex();
int stopIndex = null == ctx.CHARSET() ? ctx.SET(1).getSymbol().getStopIndex() : ctx.CHARSET().getSymbol().getStopIndex(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 245 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 214 |
return new ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnDefinition);
}
@Override
public ASTNode visitDropColumnSpecification(final DropColumnSpecificationContext ctx) {
return new DropColumnDefinitionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), Collections.singleton((ColumnSegment) visit(ctx.columnName())));
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
DropTableStatement result = new DropTableStatement(getDatabaseType());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 446 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 904 |
public ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
if (null != ctx.jsonFunction()) {
return visit(ctx.jsonFunction());
}
if (null != ctx.udfFunction()) {
return visit(ctx.udfFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 904 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 418 |
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
if (null != ctx.jsonFunction()) {
return visit(ctx.jsonFunction());
}
if (null != ctx.udfFunction()) {
return visit(ctx.udfFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/CreateIndexStatementAssert.java | shardingsphere-test-it-parser | 88 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/DropIndexStatementAssert.java | shardingsphere-test-it-parser | 85 |
private static void assertAlgorithm(final SQLCaseAssertContext assertContext, final CreateIndexStatement actual, final CreateIndexStatementTestCase expected) {
if (null == expected.getAlgorithmOption()) {
assertFalse(actual.getAlgorithmType().isPresent(), assertContext.getText("Actual algorithm segments should not exist."));
} else {
assertTrue(actual.getAlgorithmType().isPresent(), assertContext.getText("Actual algorithm segments should exist."));
assertThat(assertContext.getText(String.format("`%s`'s algorithm assertion error: ", actual.getClass().getSimpleName())),
actual.getAlgorithmType().get().getAlgorithmOption().name(), is(expected.getAlgorithmOption().getType()));
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/mode/manager/cluster/persist/service/ClusterMetaDataManagerPersistService.java | shardingsphere-cluster-mode-core | 173 |
| org/apache/shardingsphere/mode/manager/standalone/persist/service/StandaloneMetaDataManagerPersistService.java | shardingsphere-standalone-mode-core | 195 |
}
private Collection<String> getToBeDroppedResourceNames(final String databaseName, final Collection<String> toBeDroppedResourceNames) {
Map<String, DataSourcePoolProperties> propsMap = metaDataPersistFacade.getDataSourceUnitService().load(databaseName);
return toBeDroppedResourceNames.stream().filter(propsMap::containsKey).collect(Collectors.toList());
}
@Override
public void alterSingleRuleConfiguration(final ShardingSphereDatabase database, final RuleMetaData ruleMetaData) {
SingleRuleConfiguration singleRuleConfig = ruleMetaData.getSingleRule(SingleRule.class).getConfiguration();
metaDataPersistFacade.getDatabaseRuleService().persist(database.getName(), Collections.singleton(singleRuleConfig)); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 314 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 170 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 155 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 325 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 286 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 164 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 155 |
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitHexadecimalLiterals(final HexadecimalLiteralsContext ctx) {
// TODO deal with hexadecimalLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBitValueLiterals(final BitValueLiteralsContext ctx) {
// TODO deal with bitValueLiterals
return new OtherLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitBooleanLiterals(final BooleanLiteralsContext ctx) {
return new BooleanLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitNullValueLiterals(final NullValueLiteralsContext ctx) {
return new NullLiteralValue(ctx.getText());
}
@Override
public final ASTNode visitIdentifier(final IdentifierContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1361 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1371 |
ASTNode astNode = visit(ctx.cExpr());
if (astNode instanceof ParameterMarkerExpressionSegment) {
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex());
}
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
(null == ((ExpressionSegment) astNode).getText()) ? null : Long.parseLong(((ExpressionSegment) astNode).getText()));
}
@Override
public ASTNode visitSelectOffsetValue(final SelectOffsetValueContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sqlfederation/compiler/context/connection/config/impl/OpenGaussConnectionConfigBuilder.java | shardingsphere-sql-federation-compiler | 33 |
| org/apache/shardingsphere/sqlfederation/compiler/context/connection/config/impl/PostgreSQLConnectionConfigBuilder.java | shardingsphere-sql-federation-compiler | 33 |
public final class OpenGaussConnectionConfigBuilder implements ConnectionConfigBuilder {
@Override
public CalciteConnectionConfig build() {
Properties result = new Properties();
result.setProperty(CalciteConnectionProperty.LEX.camelName(), Lex.JAVA.name());
result.setProperty(CalciteConnectionProperty.CONFORMANCE.camelName(), SqlConformanceEnum.BABEL.name());
result.setProperty(CalciteConnectionProperty.FUN.camelName(), SqlLibrary.POSTGRESQL.fun);
result.setProperty(CalciteConnectionProperty.CASE_SENSITIVE.camelName(), String.valueOf(false));
return new CalciteConnectionConfigImpl(result);
}
@Override
public String getDatabaseType() {
return "openGauss"; | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 388 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 497 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 662 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 510 |
if (null != ctx.OR_()) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.simpleExpr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.simpleExpr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, ctx.OR_().getText(), text);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1508 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1370 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1380 |
public ASTNode visitSelectOffsetValue(final SelectOffsetValueContext ctx) {
ASTNode astNode = visit(ctx.cExpr());
if (astNode instanceof ParameterMarkerExpressionSegment) {
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex());
}
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
(null == ((ExpressionSegment) astNode).getText()) ? null : Long.parseLong(((ExpressionSegment) astNode).getText()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 413 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/factory/OpenGaussSystemTableQueryExecutorFactory.java | shardingsphere-proxy-backend-opengauss | 125 |
| org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/factory/PostgreSQLSelectAdminExecutorFactory.java | shardingsphere-proxy-backend-postgresql | 110 |
return dialectStatisticsCollector.map(dialectDatabaseStatisticsCollector -> dialectDatabaseStatisticsCollector.isStatisticsTables(selectedSchemaTables)).orElse(false);
}
private static boolean isSelectedShardingSphereSystemTable(final Map<String, Collection<String>> selectedSchemaTables) {
if (selectedSchemaTables.isEmpty()) {
return false;
}
for (Entry<String, Collection<String>> each : selectedSchemaTables.entrySet()) {
if (!SCHEMA_TABLES.containsKey(each.getKey())) {
return false;
}
if (!SCHEMA_TABLES.get(each.getKey()).containsAll(each.getValue())) {
return false;
}
}
return true;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/connector/h2/metadata/data/loader/H2MetaDataLoader.java | shardingsphere-database-connector-h2 | 73 |
| org/apache/shardingsphere/database/connector/sql92/sqlserver/metadata/data/loader/SQLServerMetaDataLoader.java | shardingsphere-database-connector-sqlserver | 73 |
Map<String, Collection<IndexMetaData>> indexMetaDataMap = columnMetaDataMap.isEmpty() ? Collections.emptyMap() : loadIndexMetaData(connection, columnMetaDataMap.keySet());
for (Entry<String, Collection<ColumnMetaData>> entry : columnMetaDataMap.entrySet()) {
Collection<IndexMetaData> indexMetaDataList = indexMetaDataMap.getOrDefault(entry.getKey(), Collections.emptyList());
tableMetaDataList.add(new TableMetaData(entry.getKey(), entry.getValue(), indexMetaDataList, Collections.emptyList()));
}
}
return Collections.singleton(new SchemaMetaData(material.getDefaultSchemaName(), tableMetaDataList));
}
private Map<String, Collection<ColumnMetaData>> loadColumnMetaDataMap(final Connection connection, final Collection<String> tables) throws SQLException { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 676 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1258 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 673 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 545 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1164 |
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.dataTypeLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.dataTypeLength());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitDataTypeLength(final DataTypeLengthContext ctx) {
DataTypeLengthSegment result = new DataTypeLengthSegment();
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStartIndex());
List<TerminalNode> numbers = ctx.NUMBER_(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 385 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 631 |
return new CommonExpressionSegment(context.getStart().getStartIndex(), context.getStop().getStopIndex(), ((OtherLiteralValue) astNode).getValue());
}
return astNode;
}
@Override
public final ASTNode visitSimpleExpr(final SimpleExprContext ctx) {
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
if (null != ctx.subquery()) {
return new SubquerySegment(startIndex, stopIndex, (SelectStatement) visit(ctx.subquery()), getOriginalText(ctx.subquery()));
}
if (null != ctx.parameterMarker()) {
ParameterMarkerValue parameterMarker = (ParameterMarkerValue) visit(ctx.parameterMarker());
ParameterMarkerExpressionSegment segment = new ParameterMarkerExpressionSegment(startIndex, stopIndex, parameterMarker.getValue(), parameterMarker.getType()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/data/pipeline/core/ingest/dumper/inventory/query/calculator/AbstractRecordTableInventoryCalculator.java | shardingsphere-data-pipeline-core | 120 |
| org/apache/shardingsphere/data/pipeline/core/ingest/dumper/inventory/query/calculator/AbstractRecordTableInventoryCalculator.java | shardingsphere-data-pipeline-core | 140 |
private List<C> allQuery(final TableInventoryCalculateParameter param, final InventoryColumnValueReaderEngine columnValueReaderEngine) throws SQLException {
List<C> result = new LinkedList<>();
CalculationContext<C> calculationContext = prepareCalculationContext(param);
prepareDatabaseResources(calculationContext, param);
ResultSet resultSet = calculationContext.getDatabaseResources().getResultSet();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
while (resultSet.next()) {
ShardingSpherePreconditions.checkState(!isCanceling(), () -> new PipelineJobCancelingException("Calculate chunk canceled, qualified table: %s", param.getTable()));
result.add(readRecord(resultSet, resultSetMetaData, columnValueReaderEngine));
if (result.size() == chunkSize) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 259 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 129 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 100 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 267 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 109 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 114 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 278 |
public abstract class DorisStatementVisitor extends DorisStatementBaseVisitor<ASTNode> {
private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
public final ASTNode visitParameterMarker(final ParameterMarkerContext ctx) {
return new ParameterMarkerValue(parameterMarkerSegments.size(), ParameterMarkerType.QUESTION);
}
@Override
public final ASTNode visitLiterals(final LiteralsContext ctx) {
if (null != ctx.stringLiterals()) {
return visit(ctx.stringLiterals());
}
if (null != ctx.numberLiterals()) {
return visit(ctx.numberLiterals());
}
if (null != ctx.temporalLiterals()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 287 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 295 |
return visit(ctx.temporalLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) {
if (!ctx.string_().isEmpty()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 1006 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 461 |
for (ExprContext each : exprList) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
private String getDistinctExpression(final AggregationFunctionContext ctx) {
StringBuilder result = new StringBuilder();
for (int i = 3; i < ctx.getChildCount() - 1; i++) {
result.append(ctx.getChild(i).getText());
}
return result.toString();
}
@Override
public final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) {
if (null != ctx.castFunction()) {
return visit(ctx.castFunction());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dml/standard/type/DeleteStatementAssert.java | shardingsphere-test-it-parser | 135 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dml/standard/type/UpdateStatementAssert.java | shardingsphere-test-it-parser | 109 |
private static void assertLimitClause(final SQLCaseAssertContext assertContext, final DeleteStatement actual, final DeleteStatementTestCase expected) {
Optional<LimitSegment> limitSegment = actual.getLimit();
if (null == expected.getLimitClause()) {
assertFalse(limitSegment.isPresent(), assertContext.getText("Actual limit segment should not exist."));
} else {
assertTrue(limitSegment.isPresent(), assertContext.getText("Actual limit segment should exist."));
LimitClauseAssert.assertRowCount(assertContext, limitSegment.get().getRowCount().orElse(null), expected.getLimitClause().getRowCount());
SQLSegmentAssert.assertIs(assertContext, limitSegment.get(), expected.getLimitClause());
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/database/connector/opengauss/metadata/data/loader/OpenGaussMetaDataLoader.java | shardingsphere-database-connector-opengauss | 143 |
| org/apache/shardingsphere/database/connector/postgresql/metadata/data/loader/PostgreSQLMetaDataLoader.java | shardingsphere-database-connector-postgresql | 182 |
}
private String getColumnMetaDataSQL(final Collection<String> schemaNames, final Collection<String> tables) {
String schemaNameParam = schemaNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(","));
return tables.isEmpty() ? String.format(TABLE_META_DATA_SQL_WITHOUT_TABLES, schemaNameParam)
: String.format(TABLE_META_DATA_SQL_WITH_TABLES, schemaNameParam, tables.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(",")));
}
private Collection<String> loadPrimaryKeys(final Connection connection, final Collection<String> schemaNames) throws SQLException { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 221 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 440 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 266 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 281 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 451 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 470 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 297 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 251 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 497 |
private ASTNode createBinaryOperationExpression(final ClickHouseStatementParser.ExprContext ctx, final String operator) {
ExpressionSegment left = (ExpressionSegment) visit(ctx.expr(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.expr(1));
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitBooleanPrimary(final ClickHouseStatementParser.BooleanPrimaryContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 290 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 335 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 319 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 565 |
for (ClickHouseStatementParser.SimpleExprContext each : ctx.simpleExpr()) {
right.getItems().add((ExpressionSegment) visit(each));
}
String operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private InExpression createInSegment(final ClickHouseStatementParser.PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1912 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 434 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 680 |
return new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx));
}
@Override
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
throw new IllegalStateException("FunctionCallContext must have aggregationFunction, regularFunction or specialFunction.");
}
@Override
public final ASTNode visitAggregationFunction(final AggregationFunctionContext ctx) {
String aggregationType = ctx.aggregationFunctionName().getText(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 211 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 257 |
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>();
if (null != ctx.addColumnSpecification()) {
result.getValue().addAll(((CollectionValue<AddColumnDefinitionSegment>) visit(ctx.addColumnSpecification())).getValue());
}
if (null != ctx.modifyColumnSpecification()) {
result.getValue().add((ModifyColumnDefinitionSegment) visit(ctx.modifyColumnSpecification()));
}
if (null != ctx.dropColumnSpecification()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1949 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1948 |
SubqueryTableSegment result = new SubqueryTableSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), subquerySegment);
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
}
return result;
}
if (null != ctx.tableName()) {
SimpleTableSegment result = (SimpleTableSegment) visit(ctx.tableName());
if (null != ctx.alias()) {
result.setAlias((AliasSegment) visit(ctx.alias()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1361 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1381 |
ASTNode astNode = visit(ctx.cExpr());
if (astNode instanceof ParameterMarkerExpressionSegment) {
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex());
}
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
(null == ((ExpressionSegment) astNode).getText()) ? null : Long.parseLong(((ExpressionSegment) astNode).getText()));
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 418 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 680 |
return new ExpressionProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), getOriginalText(ctx));
}
@Override
public final ASTNode visitFunctionCall(final FunctionCallContext ctx) {
if (null != ctx.aggregationFunction()) {
return visit(ctx.aggregationFunction());
}
if (null != ctx.specialFunction()) {
return visit(ctx.specialFunction());
}
if (null != ctx.regularFunction()) {
return visit(ctx.regularFunction());
}
throw new IllegalStateException("FunctionCallContext must have aggregationFunction, regularFunction or specialFunction.");
}
@Override
public final ASTNode visitAggregationFunction(final AggregationFunctionContext ctx) {
String aggregationType = ctx.aggregationFunctionName().getText(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/shadow/route/retriever/dml/table/column/impl/ShadowDeleteStatementDataSourceMappingsRetriever.java | shardingsphere-shadow-core | 54 |
| org/apache/shardingsphere/shadow/route/retriever/dml/table/column/impl/ShadowUpdateStatementDataSourceMappingsRetriever.java | shardingsphere-shadow-core | 58 |
String tableName = sqlStatementContext.getTablesContext().getTableNames().iterator().next();
ShadowExtractor.extractValues(each, parameters).map(values -> new ShadowColumnCondition(tableName, shadowColumnName, values)).ifPresent(result::add);
}
return result;
}
private Collection<ExpressionSegment> getWhereSegment() {
Collection<ExpressionSegment> result = new LinkedList<>();
for (WhereSegment each : sqlStatementContext.getWhereSegments()) {
result.addAll(ExpressionExtractor.extractAllExpressions(each.getExpr()));
}
return result;
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/transaction/xa/jta/connection/dialect/FirebirdXAConnectionWrapper.java | shardingsphere-transaction-xa-core | 33 |
| org/apache/shardingsphere/transaction/xa/jta/connection/dialect/MariaDBXAConnectionWrapper.java | shardingsphere-transaction-xa-core | 33 |
| org/apache/shardingsphere/transaction/xa/jta/connection/dialect/OpenGaussXAConnectionWrapper.java | shardingsphere-transaction-xa-core | 33 |
| org/apache/shardingsphere/transaction/xa/jta/connection/dialect/OracleXAConnectionWrapper.java | shardingsphere-transaction-xa-core | 33 |
| org/apache/shardingsphere/transaction/xa/jta/connection/dialect/PostgreSQLXAConnectionWrapper.java | shardingsphere-transaction-xa-core | 33 |
public final class FirebirdXAConnectionWrapper implements XAConnectionWrapper {
private Class<Connection> jdbcConnectionClass;
private Constructor<?> xaConnectionConstructor;
@Override
public XAConnection wrap(final XADataSource xaDataSource, final Connection connection) throws SQLException {
return createXAConnection(connection.unwrap(jdbcConnectionClass));
}
@Override
public void init(final Properties props) {
loadReflection();
}
private void loadReflection() {
jdbcConnectionClass = getJDBCConnectionClass();
xaConnectionConstructor = getXAConnectionConstructor();
}
@SuppressWarnings("unchecked")
@SneakyThrows(ReflectiveOperationException.class)
private Class<Connection> getJDBCConnectionClass() {
return (Class<Connection>) Class.forName("org.firebirdsql.jdbc.FBConnection"); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 326 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 596 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 371 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 443 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 618 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 584 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 459 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 355 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 601 |
return createExpressionSegment(visit(ctx.simpleExpr()), ctx);
}
ExpressionSegment left = (ExpressionSegment) visit(ctx.getChild(0));
ExpressionSegment right = (ExpressionSegment) visit(ctx.getChild(2));
String operator = ctx.getChild(1).getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 279 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 131 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 295 |
return visit(ctx.temporalLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1845 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1448 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1181 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx.expr()), projection);
result.setAlias(alias);
return result;
}
@Override
public ASTNode visitFromClause(final FromClauseContext ctx) {
return visit(ctx.tableReferences());
}
@Override
public ASTNode visitTableReferences(final TableReferencesContext ctx) {
TableSegment result = (TableSegment) visit(ctx.tableReference(0));
if (ctx.tableReference().size() > 1) {
for (int i = 1; i < ctx.tableReference().size(); i++) {
result = generateJoinTableSourceFromEscapedTableReference(ctx.tableReference(i), result);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 146 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 287 |
return visit(ctx.numberLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final StringLiteralsContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussLCLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 38 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLLCLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 38 |
public OpenGaussLCLStatementVisitor(final DatabaseType databaseType) {
super(databaseType);
}
@Override
public ASTNode visitLock(final LockContext ctx) {
return new LockStatement(getDatabaseType(), null == ctx.relationExprList() ? Collections.emptyList() : getLockTables(ctx.relationExprList().relationExpr()));
}
private Collection<SimpleTableSegment> getLockTables(final Collection<RelationExprContext> relationExprContexts) {
return relationExprContexts.stream().map(each -> (SimpleTableSegment) visit(each.qualifiedName())).collect(Collectors.toList());
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLShowTableStatusStatementAssert.java | shardingsphere-test-it-parser | 42 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/dialect/mysql/type/MySQLShowTablesStatementAssert.java | shardingsphere-test-it-parser | 42 |
public static void assertIs(final SQLCaseAssertContext assertContext, final MySQLShowTableStatusStatement actual, final MySQLShowTableStatusStatementTestCase expected) {
if (actual.getFromDatabase().isPresent()) {
DatabaseAssert.assertIs(assertContext, actual.getFromDatabase().get().getDatabase(), expected.getFromDatabase().getDatabase());
SQLSegmentAssert.assertIs(assertContext, actual.getFromDatabase().get(), expected.getFromDatabase());
}
if (actual.getFilter().isPresent()) {
ShowFilterAssert.assertIs(assertContext, actual.getFilter().get(), expected.getFilter());
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/type/AlterShadowRuleStatementAssert.java | shardingsphere-test-it-parser | 51 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/type/CreateShadowRuleStatementAssert.java | shardingsphere-test-it-parser | 54 |
assertShadowRule(assertContext, actual.getRules(), expected.getRules());
}
}
private static void assertShadowRule(final SQLCaseAssertContext assertContext, final Collection<ShadowRuleSegment> actual, final List<ExpectedShadowRule> expected) {
if (null == expected) {
assertNull(actual, assertContext.getText("Actual shadow rule should not exist."));
} else {
assertNotNull(actual, assertContext.getText("Actual shadow rule should exist."));
int count = 0;
for (ShadowRuleSegment each : actual) {
ShadowRuleAssert.assertIs(assertContext, each, expected.get(count));
count++;
}
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLMySQLSchemaExecutorFactory.java | shardingsphere-proxy-backend-mysql | 36 |
| org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLPerformanceSchemaExecutorFactory.java | shardingsphere-proxy-backend-mysql | 36 |
| org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLSysSchemaExecutorFactory.java | shardingsphere-proxy-backend-mysql | 36 |
public final class MySQLMySQLSchemaExecutorFactory {
/**
* Create executor.
*
* @param selectStatementContext select statement context
* @param sql SQL being executed
* @param parameters parameters
* @return executor
*/
public static Optional<DatabaseAdminExecutor> newInstance(final SelectStatementContext selectStatementContext, final String sql, final List<Object> parameters) {
SelectStatement sqlStatement = selectStatementContext.getSqlStatement();
if (!sqlStatement.getFrom().isPresent() || !(sqlStatement.getFrom().get() instanceof SimpleTableSegment)) {
return Optional.empty();
}
String tableName = ((SimpleTableSegment) sqlStatement.getFrom().get()).getTableName().getIdentifier().getValue();
if (SystemSchemaManager.isSystemTable("mysql", "mysql", tableName)) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 235 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 454 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 279 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 296 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 465 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 312 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 264 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 510 |
}
Token operatorToken = null;
if (null != ctx.NULL()) {
operatorToken = ctx.NULL().getSymbol();
}
if (null != ctx.TRUE()) {
operatorToken = ctx.TRUE().getSymbol();
}
if (null != ctx.FALSE()) {
operatorToken = ctx.FALSE().getSymbol();
}
int startIndex = null == operatorToken ? ctx.IS().getSymbol().getStopIndex() + 2 : operatorToken.getStartIndex();
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(startIndex, ctx.stop.getStopIndex()))); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1053 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 475 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 476 |
}
private <T extends ParseTree> Collection<T> getTargetRuleContextFromParseTree(final ParseTree parseTree, final Class<? extends T> clazz) {
Collection<T> result = new LinkedList<>();
for (int index = 0; index < parseTree.getChildCount(); index++) {
ParseTree child = parseTree.getChild(index);
if (clazz.isInstance(child)) {
result.add(clazz.cast(child));
} else {
result.addAll(getTargetRuleContextFromParseTree(child, clazz));
}
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1148 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 643 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1172 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 615 |
public final ASTNode visitPositionFunction(final PositionFunctionContext ctx) {
calculateParameterCount(ctx.expr());
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.POSITION().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(0)));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(1)));
return result;
}
@Override
public final ASTNode visitSubstringFunction(final SubstringFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 2018 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 301 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 313 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1603 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1619 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 2055 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 2071 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1339 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1355 |
public ASTNode visitLimitRowCount(final LimitRowCountContext ctx) {
if (null != ctx.numberLiterals()) {
return new NumberLiteralLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((NumberLiteralValue) visit(ctx.numberLiterals())).getValue().longValue());
}
ParameterMarkerSegment result = new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
((ParameterMarkerValue) visit(ctx.parameterMarker())).getValue()); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1091 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 475 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 476 |
}
private <T extends ParseTree> Collection<T> getTargetRuleContextFromParseTree(final ParseTree parseTree, final Class<? extends T> clazz) {
Collection<T> result = new LinkedList<>();
for (int index = 0; index < parseTree.getChildCount(); index++) {
ParseTree child = parseTree.getChild(index);
if (clazz.isInstance(child)) {
result.add(clazz.cast(child));
} else {
result.addAll(getTargetRuleContextFromParseTree(child, clazz));
}
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.java | shardingsphere-agent-metrics-core | 39 |
| org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCStateExporter.java | shardingsphere-agent-metrics-core | 38 |
Arrays.asList("driver_instance", "database", "type"));
@Override
public Optional<GaugeMetricFamilyMetricsCollector> export(final String pluginType) {
GaugeMetricFamilyMetricsCollector result = MetricsCollectorRegistry.get(config, pluginType);
result.cleanMetrics();
for (Entry<String, ShardingSphereDataSourceContext> entry : ShardingSphereDataSourceContextHolder.getShardingSphereDataSourceContexts().entrySet()) {
Optional.ofNullable(entry.getValue().getContextManager().getDatabase(entry.getValue().getDatabaseName()))
.ifPresent(optional -> result.addMetric(Arrays.asList(entry.getKey(), optional.getName(), "storage_unit_count"), optional.getResourceMetaData().getStorageUnits().size())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 290 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 565 |
for (ClickHouseStatementParser.SimpleExprContext each : ctx.simpleExpr()) {
right.getItems().add((ExpressionSegment) visit(each));
}
String operator = null == ctx.NOT() ? "LIKE" : "NOT LIKE";
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
private InExpression createInSegment(final ClickHouseStatementParser.PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 949 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 960 |
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.PARSE().getText(), getOriginalText(ctx));
result.getParameters().add((ExpressionSegment) visit(ctx.expr(0)));
result.getParameters().add((DataTypeSegment) visit(ctx.dataType()));
if (null != ctx.USING() && ctx.expr().size() > 1) {
result.getParameters().add((ExpressionSegment) visit(ctx.expr(1)));
}
return result;
}
@Override
public ASTNode visitTryParseFunction(final TryParseFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/statement/core/util/SQLUtils.java | shardingsphere-parser-sql-statement-core | 75 |
| org/apache/shardingsphere/sql/parser/statement/core/value/literal/impl/NumberLiteralValue.java | shardingsphere-parser-sql-statement-core | 48 |
BigInteger result = new BigInteger(value, radix);
if (result.compareTo(new BigInteger(String.valueOf(Integer.MIN_VALUE))) >= 0 && result.compareTo(new BigInteger(String.valueOf(Integer.MAX_VALUE))) <= 0) {
return result.intValue();
}
if (result.compareTo(new BigInteger(String.valueOf(Long.MIN_VALUE))) >= 0 && result.compareTo(new BigInteger(String.valueOf(Long.MAX_VALUE))) <= 0) {
return result.longValue();
}
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/sqlserver/type/SQLServerAlterLoginStatementAssert.java | shardingsphere-test-it-parser | 45 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/sqlserver/type/SQLServerCreateLoginStatementAssert.java | shardingsphere-test-it-parser | 45 |
| org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/dialect/sqlserver/type/SQLServerDropLoginStatementAssert.java | shardingsphere-test-it-parser | 45 |
public static void assertIs(final SQLCaseAssertContext assertContext, final SQLServerAlterLoginStatement actual, final SQLServerAlterLoginStatementTestCase expected) {
if (null == expected.getLogin()) {
assertNull(actual.getLoginSegment(), assertContext.getText("Actual login should not exist."));
} else {
assertNotNull(actual.getLoginSegment(), assertContext.getText("Actual login should exist."));
assertThat(assertContext.getText("Login name assertion error: "), actual.getLoginSegment().getLoginName().getValueWithQuoteCharacters(), is(expected.getLogin().getName()));
SQLSegmentAssert.assertIs(assertContext, actual.getLoginSegment(), expected.getLogin());
}
}
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sharding/rule/changed/DefaultDatabaseShardingStrategyChangedProcessor.java | shardingsphere-sharding-core | 33 |
| org/apache/shardingsphere/sharding/rule/changed/DefaultTableShardingStrategyChangedProcessor.java | shardingsphere-sharding-core | 33 |
public final class DefaultDatabaseShardingStrategyChangedProcessor implements RuleItemConfigurationChangedProcessor<ShardingRuleConfiguration, ShardingStrategyConfiguration> {
@Override
public ShardingStrategyConfiguration swapRuleItemConfiguration(final String itemName, final String yamlContent) {
return new YamlShardingStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContent, YamlShardingStrategyConfiguration.class));
}
@Override
public ShardingRuleConfiguration findRuleConfiguration(final ShardingSphereDatabase database) {
return database.getRuleMetaData().findSingleRule(ShardingRule.class).map(ShardingRule::getConfiguration).orElseGet(ShardingRuleConfiguration::new);
}
@Override
public void changeRuleItemConfiguration(final String itemName, final ShardingRuleConfiguration currentRuleConfig, final ShardingStrategyConfiguration toBeChangedItemConfig) {
currentRuleConfig.setDefaultDatabaseShardingStrategy(toBeChangedItemConfig); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 100 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 279 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 120 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 287 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 129 |
return visit(ctx.numberLiterals());
}
if (null != ctx.hexadecimalLiterals()) {
return visit(ctx.hexadecimalLiterals());
}
if (null != ctx.bitValueLiterals()) {
return visit(ctx.bitValueLiterals());
}
if (null != ctx.booleanLiterals()) {
return visit(ctx.booleanLiterals());
}
if (null != ctx.nullValueLiterals()) {
return visit(ctx.nullValueLiterals());
}
throw new IllegalStateException("Literals must have string, number, dateTime, hex, bit, boolean or null.");
}
@Override
public final ASTNode visitStringLiterals(final ClickHouseStatementParser.StringLiteralsContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 266 |
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 507 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/FirebirdStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 311 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 518 |
right = (ExpressionSegment) visit(ctx.subquery());
}
String operator = null == ctx.SAFE_EQ_() ? ctx.comparisonOperator().getText() : ctx.SAFE_EQ_().getText();
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new BinaryOperationExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, right, operator, text);
}
@Override
public final ASTNode visitPredicate(final ClickHouseStatementParser.PredicateContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 469 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 498 |
public final ASTNode visitRegularFunction(final ClickHouseStatementParser.RegularFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.regularFunctionName().getText(), getOriginalText(ctx));
Collection<ExpressionSegment> expressionSegments = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
result.getParameters().addAll(expressionSegments);
return result;
}
@Override
public final ASTNode visitDataTypeName(final ClickHouseStatementParser.DataTypeNameContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1217 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 712 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1245 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 684 |
public final ASTNode visitValuesFunction(final ValuesFunctionContext ctx) {
FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.VALUES().getText(), getOriginalText(ctx));
if (!ctx.columnRefList().columnRef().isEmpty()) {
ColumnSegment columnSegment = (ColumnSegment) visit(ctx.columnRefList().columnRef(0));
result.getParameters().add(columnSegment);
}
return result;
}
@Override
public final ASTNode visitCurrentUserFunction(final CurrentUserFunctionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1576 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1190 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 900 |
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1132 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1190 |
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
}
if (null != ctx.orderByClause()) {
result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
}
if (null != ctx.limitClause()) {
result.setLimit((LimitSegment) visit(ctx.limitClause()));
}
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 267 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 371 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 268 |
ColumnSegment result = new ColumnSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), (IdentifierValue) visit(ctx.name()));
OwnerContext owner = ctx.owner();
if (null != owner) {
result.setOwner(new OwnerSegment(owner.getStart().getStartIndex(), owner.getStop().getStopIndex(), (IdentifierValue) visit(owner.identifier())));
}
return result;
}
@Override
public final ASTNode visitIndexName(final IndexNameContext ctx) {
IndexNameSegment indexName = new IndexNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (IdentifierValue) visit(ctx.identifier())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 745 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 748 |
AttrNameContext attrName = ctx.indirection().indirectionEl().attrName();
TableNameSegment tableName = new TableNameSegment(attrName.start.getStartIndex(), attrName.stop.getStopIndex(), new IdentifierValue(attrName.getText()));
OwnerSegment owner = new OwnerSegment(ctx.colId().start.getStartIndex(), ctx.colId().stop.getStopIndex(), new IdentifierValue(ctx.colId().getText()));
SimpleTableSegment result = new SimpleTableSegment(tableName);
if (null == ctx.indirection().indirection()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 262 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 297 |
if (null != ctx.selectSubquery()) {
SubquerySegment subquerySegment = new SubquerySegment(ctx.selectSubquery().start.getStartIndex(), ctx.selectSubquery().stop.getStopIndex(),
(SelectStatement) visit(ctx.selectSubquery()), getOriginalText(ctx.selectSubquery()));
SubqueryExpressionSegment value = new SubqueryExpressionSegment(subquerySegment);
ColumnAssignmentSegment result = new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
result.getColumns().add(column);
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 293 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 847 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 318 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1863 |
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 307 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1877 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
BinaryOperationExpression binaryExpression = (BinaryOperationExpression) projection;
int startIndex = binaryExpression.getStartIndex(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 404 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 509 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 429 |
private JoinTableSegment visitJoinedTable(final ClickHouseStatementParser.JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
TableSegment right = (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
result.setJoinType(getJoinType(ctx));
if (null != ctx.joinSpecification()) {
visitJoinSpecification(ctx.joinSpecification(), result);
}
return result;
}
private String getJoinType(final ClickHouseStatementParser.JoinedTableContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 390 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 847 |
if (projection instanceof FunctionSegment) {
FunctionSegment segment = (FunctionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
if (projection instanceof CommonExpressionSegment) {
CommonExpressionSegment segment = (CommonExpressionSegment) projection;
ExpressionProjectionSegment result = new ExpressionProjectionSegment(segment.getStartIndex(), segment.getStopIndex(), segment.getText(), segment);
result.setAlias(alias);
return result;
}
// FIXME :For DISTINCT()
if (projection instanceof ColumnSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 404 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1877 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
BinaryOperationExpression binaryExpression = (BinaryOperationExpression) projection;
int startIndex = binaryExpression.getStartIndex(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 506 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 2049 |
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
TableSegment right = (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
result.setJoinType(getJoinType(ctx));
if (null != ctx.joinSpecification()) {
visitJoinSpecification(ctx.joinSpecification(), result);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1400 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1366 |
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText()));
}
@Override
public ASTNode visitSelectOffsetValue(final SelectOffsetValueContext ctx) {
ASTNode astNode = visit(ctx.cExpr());
if (astNode instanceof ParameterMarkerExpressionSegment) {
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex());
}
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 1409 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 1376 |
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText()));
}
@Override
public ASTNode visitSelectFetchValue(final SelectFetchValueContext ctx) {
ASTNode astNode = visit(ctx.cExpr());
if (astNode instanceof ParameterMarkerExpressionSegment) {
return new ParameterMarkerLimitValueSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ((ParameterMarkerExpressionSegment) astNode).getParameterMarkerIndex());
}
return new NumberLiteralLimitValueSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), Long.parseLong(((ExpressionSegment) astNode).getText())); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 332 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1877 |
ExpressionProjectionSegment result = new ExpressionProjectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), getOriginalText(ctx), (ColumnSegment) projection);
result.setAlias(alias);
return result;
}
if (projection instanceof SubqueryExpressionSegment) {
SubqueryExpressionSegment subqueryExpressionSegment = (SubqueryExpressionSegment) projection;
String text = ctx.start.getInputStream().getText(new Interval(subqueryExpressionSegment.getStartIndex(), subqueryExpressionSegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment(((SubqueryExpressionSegment) projection).getSubquery(), text);
result.setAlias(alias);
return result;
}
if (projection instanceof BinaryOperationExpression) {
BinaryOperationExpression binaryExpression = (BinaryOperationExpression) projection;
int startIndex = binaryExpression.getStartIndex(); | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 426 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 2049 |
return visit(ctx.tableReferences());
}
private JoinTableSegment visitJoinedTable(final JoinedTableContext ctx, final TableSegment tableSegment) {
JoinTableSegment result = new JoinTableSegment();
result.setLeft(tableSegment);
result.setStartIndex(tableSegment.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
TableSegment right = (TableSegment) visit(ctx.tableFactor());
result.setRight(right);
result.setJoinType(getJoinType(ctx));
if (null != ctx.joinSpecification()) {
visitJoinSpecification(ctx.joinSpecification(), result);
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 205 |
| org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/OracleStatementVisitor.java | shardingsphere-parser-sql-engine-oracle | 429 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 472 |
public final ASTNode visitExpr(final ClickHouseStatementParser.ExprContext ctx) {
if (null != ctx.booleanPrimary()) {
return visit(ctx.booleanPrimary());
}
if (null != ctx.LP_()) {
return visit(ctx.expr(0));
}
if (null != ctx.andOperator()) {
return createBinaryOperationExpression(ctx, ctx.andOperator().getText());
}
if (null != ctx.orOperator()) {
return createBinaryOperationExpression(ctx, ctx.orOperator().getText());
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 418 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 523 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 443 |
private String getJoinType(final ClickHouseStatementParser.JoinedTableContext ctx) {
if (null != ctx.LEFT()) {
return JoinType.LEFT.name();
} else if (null != ctx.RIGHT()) {
return JoinType.RIGHT.name();
} else if (null != ctx.INNER()) {
return JoinType.INNER.name();
} else if (null != ctx.CROSS()) {
return JoinType.CROSS.name();
}
return JoinType.INNER.name();
}
private void visitJoinSpecification(final ClickHouseStatementParser.JoinSpecificationContext ctx, final JoinTableSegment joinTableSource) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1295 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/HiveStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 514 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1332 |
return visit(ctx.expr(0));
}
for (ExprContext each : ctx.expr()) {
visit(each);
}
for (SimpleExprContext each : ctx.simpleExpr()) {
visit(each);
}
String text = ctx.start.getInputStream().getText(new Interval(ctx.start.getStartIndex(), ctx.stop.getStopIndex()));
return new CommonExpressionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), text);
}
@Override
public ASTNode visitCaseExpression(final CaseExpressionContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/ClickHouseStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 513 |
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 673 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 670 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/SQL92StatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 542 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 1161 |
public final ASTNode visitDataType(final ClickHouseStatementParser.DataTypeContext ctx) {
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(((KeywordValue) visit(ctx.dataTypeName())).getValue());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.dataTypeLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.dataTypeLength());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public final ASTNode visitDataTypeLength(final ClickHouseStatementParser.DataTypeLengthContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 149 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 173 |
public ASTNode visitAssignment(final ClickHouseStatementParser.AssignmentContext ctx) {
ColumnSegment column = (ColumnSegment) visitColumnName(ctx.columnName());
List<ColumnSegment> columnSegments = new LinkedList<>();
columnSegments.add(column);
ExpressionSegment value = (ExpressionSegment) visit(ctx.assignmentValue());
ColumnAssignmentSegment result = new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value);
result.getColumns().add(column);
return result;
}
@Override
public ASTNode visitAssignmentValue(final ClickHouseStatementParser.AssignmentValueContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java | shardingsphere-parser-sql-engine-clickhouse | 431 |
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 536 |
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 456 |
private void visitJoinSpecification(final ClickHouseStatementParser.JoinSpecificationContext ctx, final JoinTableSegment joinTableSource) {
if (null != ctx.expr()) {
ExpressionSegment condition = (ExpressionSegment) visit(ctx.expr());
joinTableSource.setCondition(condition);
}
if (null != ctx.USING()) {
joinTableSource.setUsing(ctx.columnNames().columnName().stream().map(each -> (ColumnSegment) visit(each)).collect(Collectors.toList()));
}
}
@Override
public ASTNode visitWhereClause(final ClickHouseStatementParser.WhereClauseContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java | shardingsphere-parser-sql-engine-doris | 1360 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 622 |
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 804 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1397 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/PrestoStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 557 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 594 |
result.setDataTypeName(ctx.dataTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
result.setStopIndex(ctx.stop.getStopIndex());
if (null != ctx.fieldLength()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.fieldLength());
result.setDataLength(dataTypeLengthSegment);
}
if (null != ctx.precision()) {
DataTypeLengthSegment dataTypeLengthSegment = (DataTypeLengthSegment) visit(ctx.precision());
result.setDataLength(dataTypeLengthSegment);
}
return result;
}
@Override
public ASTNode visitFieldLength(final FieldLengthContext ctx) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java | shardingsphere-parser-sql-engine-firebird | 191 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 240 |
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java | shardingsphere-parser-sql-engine-hive | 1339 |
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1798 |
ASTNode exprProjection = visit(ctx.expr());
if (exprProjection instanceof ColumnSegment) {
ColumnProjectionSegment result = new ColumnProjectionSegment((ColumnSegment) exprProjection);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof SubquerySegment) {
SubquerySegment subquerySegment = (SubquerySegment) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(subquerySegment.getStartIndex(), subquerySegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java | shardingsphere-parser-sql-engine-mysql | 1798 |
| org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java | shardingsphere-parser-sql-engine-presto | 1072 |
ExpressionSegment exprProjection = (ExpressionSegment) visit(ctx.expr());
if (exprProjection instanceof ColumnSegment) {
ColumnProjectionSegment result = new ColumnProjectionSegment((ColumnSegment) exprProjection);
result.setAlias(alias);
return result;
}
if (exprProjection instanceof SubquerySegment) {
SubquerySegment subquerySegment = (SubquerySegment) exprProjection;
String text = ctx.start.getInputStream().getText(new Interval(subquerySegment.getStartIndex(), subquerySegment.getStopIndex()));
SubqueryProjectionSegment result = new SubqueryProjectionSegment((SubquerySegment) exprProjection, text);
result.setAlias(alias);
return result;
} | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 728 |
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 733 |
@Override
public ASTNode visitQualifiedNameList(final QualifiedNameListContext ctx) {
CollectionValue<SimpleTableSegment> result = new CollectionValue<>();
if (null != ctx.qualifiedName()) {
result.getValue().add((SimpleTableSegment) visit(ctx.qualifiedName()));
}
if (null != ctx.qualifiedNameList()) {
result.combine((CollectionValue) visit(ctx.qualifiedNameList()));
}
return result;
}
@Override
public ASTNode visitQualifiedName(final QualifiedNameContext ctx) {
if (null == ctx.indirection()) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java | shardingsphere-parser-sql-engine-opengauss | 308 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 240 |
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof ValidateConstraintDefinitionSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java | shardingsphere-parser-sql-engine-postgresql | 383 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 240 |
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof ValidateConstraintDefinitionSegment) { | ||
| File | Project | Line |
|---|---|---|
| org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java | shardingsphere-parser-sql-engine-sql92 | 168 |
| org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java | shardingsphere-parser-sql-engine-sqlserver | 240 |
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
if (each instanceof AddColumnDefinitionSegment) {
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
} else if (each instanceof ModifyColumnDefinitionSegment) {
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
} else if (each instanceof DropColumnDefinitionSegment) {
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
} else if (each instanceof AddConstraintDefinitionSegment) {
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
} else if (each instanceof DropConstraintDefinitionSegment) { | ||
