| <!DOCTYPE html> |
| <!-- |
| | Generated by Apache Maven Doxia Site Renderer 1.11.1 from org.apache.maven.plugins:maven-pmd-plugin:3.20.0:aggregate-cpd at 2023-06-09 |
| |
| | Rendered using Apache Maven Default Skin |
| --> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta charset="UTF-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" /> |
| <title>Apache ShardingSphere – CPD Results</title> |
| <link rel="stylesheet" href="./css/maven-base.css" /> |
| <link rel="stylesheet" href="./css/maven-theme.css" /> |
| <link rel="stylesheet" href="./css/site.css" /> |
| <link rel="stylesheet" href="./css/print.css" media="print" /> |
| </head> |
| <body class="composite"> |
| <div id="banner"> |
| <div id="bannerLeft">Apache ShardingSphere |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| <div id="breadcrumbs"> |
| <div class="xleft"> |
| <span id="publishDate">Last Published: 2023-06-09</span> |
| | <span id="projectVersion">Version: 5.3.3-SNAPSHOT</span> |
| </div> |
| <div class="xright"><a href="./" title="Apache ShardingSphere">Apache ShardingSphere</a> </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| <div id="leftColumn"> |
| <div id="navcolumn"> |
| <h5>Modules</h5> |
| <ul> |
| <li class="none"><a href="shardingsphere-infra/index.html" title="shardingsphere-infra">shardingsphere-infra</a></li> |
| <li class="none"><a href="shardingsphere-dialect-exception/index.html" title="shardingsphere-dialect-exception">shardingsphere-dialect-exception</a></li> |
| <li class="none"><a href="shardingsphere-parser/index.html" title="shardingsphere-parser">shardingsphere-parser</a></li> |
| <li class="none"><a href="shardingsphere-db-protocol/index.html" title="shardingsphere-db-protocol">shardingsphere-db-protocol</a></li> |
| <li class="none"><a href="shardingsphere-mode/index.html" title="shardingsphere-mode">shardingsphere-mode</a></li> |
| <li class="none"><a href="shardingsphere-kernel/index.html" title="shardingsphere-kernel">shardingsphere-kernel</a></li> |
| <li class="none"><a href="shardingsphere-jdbc/index.html" title="shardingsphere-jdbc">shardingsphere-jdbc</a></li> |
| <li class="none"><a href="shardingsphere-proxy/index.html" title="shardingsphere-proxy">shardingsphere-proxy</a></li> |
| <li class="none"><a href="shardingsphere-features/index.html" title="shardingsphere-features">shardingsphere-features</a></li> |
| <li class="none"><a href="shardingsphere-agent/index.html" title="shardingsphere-agent">shardingsphere-agent</a></li> |
| <li class="none"><a href="shardingsphere-test/index.html" title="shardingsphere-test">shardingsphere-test</a></li> |
| <li class="none"><a href="shardingsphere-distribution/index.html" title="shardingsphere-distribution">shardingsphere-distribution</a></li> |
| <li class="none"><a href="shardingsphere-report/index.html" title="shardingsphere-report">shardingsphere-report</a></li> |
| </ul> |
| <h5>Project Documentation</h5> |
| <ul> |
| <li class="collapsed"><a href="project-info.html" title="Project Information">Project Information</a></li> |
| <li class="expanded"><a href="project-reports.html" title="Project Reports">Project Reports</a> |
| <ul> |
| <li class="none"><a href="apidocs/index.html" title="Javadoc">Javadoc</a></li> |
| <li class="none"><a href="xref/index.html" title="Source Xref">Source Xref</a></li> |
| <li class="none"><a href="rat-report.html" title="Rat Report">Rat Report</a></li> |
| <li class="none"><a href="checkstyle-aggregate.html" title="Checkstyle">Checkstyle</a></li> |
| <li class="none"><strong>CPD</strong></li> |
| <li class="none"><a href="pmd.html" title="PMD">PMD</a></li> |
| <li class="none"><a href="jdepend-report.html" title="JDepend">JDepend</a></li> |
| <li class="none"><a href="taglist.html" title="Tag List">Tag List</a></li> |
| </ul></li> |
| </ul> |
| <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> |
| <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /> |
| </a> |
| </div> |
| </div> |
| <div id="bodyColumn"> |
| <div id="contentBox"> |
| <section> |
| <h2><a name="CPD_Results"></a>CPD Results</h2> |
| <p>The following document contains the results of PMD's <a class="externalLink" href="https://pmd.github.io/latest/pmd_userdocs_cpd.html">CPD</a> 6.53.0.</p></section><section> |
| <h2><a name="Duplications"></a>Duplications</h2> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L204">204</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L204">204</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public abstract class OpenGaussStatementVisitor extends OpenGaussStatementBaseVisitor<ASTNode> { |
| |
| 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 ? visit(unreservedWord) : new IdentifierValue(ctx.getText()); |
| } |
| |
| @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(), (OpenGaussSelectStatement) visit(ctx.selectWithParens()));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L525">525</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L522">522</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussSelectStatement select = (OpenGaussSelectStatement) visit(ctx.selectWithParens()); |
| SubquerySegment subquerySegment = new SubquerySegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), select); |
| 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()); |
| String innerExpression = ctx.start.getInputStream().getText(new Interval(ctx.LP_().getSymbol().getStartIndex(), ctx.stop.getStopIndex())); |
| if (null == ctx.DISTINCT()) { |
| AggregationProjectionSegment result = new AggregationProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, innerExpression); |
| result.getParameters().addAll(expressionSegments); |
| return result; |
| } |
| AggregationDistinctProjectionSegment result = |
| new AggregationDistinctProjectionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), type, innerExpression, getDistinctExpression(ctx)); |
| 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() ? generateOrderDirection(ctx.ascDesc()) : OrderDirection.ASC; |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L990">990</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L954">954</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>result.setProjections(new ProjectionsSegment(-1, -1)); |
| } |
| 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 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) { |
| return new WindowSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex()); |
| } |
| |
| @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); |
| } |
| 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 ExistsSubqueryExpression) { |
| ExistsSubqueryExpression existsSubqueryExpression = (ExistsSubqueryExpression) projection; |
| String text = ctx.start.getInputStream().getText(new Interval(existsSubqueryExpression.getStartIndex(), existsSubqueryExpression.getStopIndex())); |
| return new SubqueryProjectionSegment(existsSubqueryExpression.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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L415">415</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L412">412</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()); |
| } |
| Collection<ExpressionSegment> expressionSegments = getExpressionSegments(getTargetRuleContextFromParseTree(ctx, AExprContext.class)); |
| // TODO replace aggregation segment |
| String aggregationType = ctx.funcApplication().funcName().getText(); |
| if (AggregationType.isAggregationType(aggregationType)) { |
| return createAggregationSegment(ctx.funcApplication(), aggregationType, expressionSegments); |
| } |
| FunctionSegment result = new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.funcApplication().funcName().getText(), getOriginalText(ctx)); |
| result.getParameters().addAll(expressionSegments); |
| return result; |
| } |
| |
| @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)); |
| result.getParameters().addAll(expressionSegments); |
| 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; |
| } |
| |
| 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.constTypeName().getText() : ctx.funcName().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()) { |
| 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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L223">223</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L338">338</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()); |
| } |
| return new NotExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), (ExpressionSegment) visit(ctx.expr(0))); |
| } |
| |
| 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.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); |
| } |
| 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.SAFE_EQ_().getText() : ctx.comparisonOperator().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() ? "NOT LIKE" : "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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L1223">1223</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L1175">1175</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return JoinType.INNER.name(); |
| } |
| |
| private JoinTableSegment 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())); |
| } |
| return joinTableSource; |
| } |
| |
| 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(((LiteralExpressionSegment) astNode).getLiterals().toString())); |
| } |
| |
| @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(((LiteralExpressionSegment) astNode).getLiterals().toString())); |
| } |
| |
| @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(((LiteralExpressionSegment) astNode).getLiterals().toString())); |
| } |
| |
| 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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L409">409</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L522">522</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new OpenGaussAlterDomainStatement(); |
| } |
| |
| @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.singletonList((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); |
| for (ColumnConstraintContext each : ctx.columnConstraint()) { |
| if (null != each.columnConstraintOption().tableName()) { |
| result.getReferencedTables().add((SimpleTableSegment) visit(each.columnConstraintOption().tableName())); |
| } |
| } |
| return result; |
| } |
| |
| @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); |
| 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.singletonList((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();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.html#L40">40</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.html#L41">41</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class ClusterModeContextManager implements ModeContextManager, ContextManagerAware { |
| |
| private ContextManager contextManager; |
| |
| @Override |
| public void createDatabase(final String databaseName) { |
| contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().addDatabase(databaseName); |
| } |
| |
| @Override |
| public void dropDatabase(final String databaseName) { |
| contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().dropDatabase(databaseName); |
| } |
| |
| @Override |
| public void createSchema(final String databaseName, final String schemaName) { |
| contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService().addSchema(databaseName, schemaName); |
| } |
| |
| @Override |
| public void alterSchema(final AlterSchemaPOJO alterSchemaPOJO) { |
| String databaseName = alterSchemaPOJO.getDatabaseName(); |
| String schemaName = alterSchemaPOJO.getSchemaName(); |
| ShardingSphereSchema schema = contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getSchema(schemaName); |
| DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService(); |
| databaseMetaDataService.persist(databaseName, alterSchemaPOJO.getRenameSchemaName(), schema); |
| databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, alterSchemaPOJO.getRenameSchemaName(), schema.getViews()); |
| databaseMetaDataService.dropSchema(databaseName, schemaName); |
| } |
| |
| @Override |
| public void dropSchema(final String databaseName, final Collection<String> schemaNames) { |
| DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService(); |
| schemaNames.forEach(each -> databaseMetaDataService.dropSchema(databaseName, each)); |
| } |
| |
| @Override |
| public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO) { |
| String databaseName = alterSchemaMetaDataPOJO.getDatabaseName(); |
| String schemaName = alterSchemaMetaDataPOJO.getSchemaName(); |
| Map<String, ShardingSphereTable> tables = alterSchemaMetaDataPOJO.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName, table -> table)); |
| Map<String, ShardingSphereView> views = alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName, view -> view)); |
| DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService(); |
| databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, schemaName, tables); |
| databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, schemaName, views); |
| alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, schemaName, each)); |
| alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName, schemaName, each)); |
| } |
| |
| @Override |
| public void registerStorageUnits(final String databaseName, final Map<String, DataSourceProperties> toBeRegisterStorageUnitProps) { |
| contextManager.getMetaDataContexts().getPersistService().getDataSourceService().append(databaseName, toBeRegisterStorageUnitProps); |
| } |
| |
| @Override |
| public void alterStorageUnits(final String databaseName, final Map<String, DataSourceProperties> toBeUpdatedStorageUnitProps) { |
| contextManager.getMetaDataContexts().getPersistService().getDataSourceService().append(databaseName, toBeUpdatedStorageUnitProps); |
| } |
| |
| @Override |
| public void unregisterStorageUnits(final String databaseName, final Collection<String> toBeDroppedStorageUnitNames) { |
| contextManager.getMetaDataContexts().getPersistService().getDataSourceService().persist(databaseName, |
| getToBeReversedDataSourcePropsMap(contextManager.getMetaDataContexts().getPersistService().getDataSourceService().load(databaseName), toBeDroppedStorageUnitNames)); |
| } |
| |
| private Map<String, DataSourceProperties> getToBeReversedDataSourcePropsMap(final Map<String, DataSourceProperties> dataSourcePropsMap, final Collection<String> toBeDroppedResourceNames) { |
| return dataSourcePropsMap.entrySet().stream().filter(entry -> !toBeDroppedResourceNames.contains(entry.getKey())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); |
| } |
| |
| @Override |
| public void alterRuleConfiguration(final String databaseName, final Collection<RuleConfiguration> ruleConfigs) { |
| contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persist(databaseName, ruleConfigs); |
| } |
| |
| @Override |
| public void alterGlobalRuleConfiguration(final Collection<RuleConfiguration> globalRuleConfigs) { |
| contextManager.getMetaDataContexts().getPersistService().getGlobalRuleService().persist(globalRuleConfigs); |
| } |
| |
| @Override |
| public void alterProperties(final Properties props) { |
| contextManager.getMetaDataContexts().getPersistService().getPropsService().persist(props); |
| } |
| |
| @Override |
| public void setContextManagerAware(final ContextManager contextManager) { |
| this.contextManager = contextManager; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L1025">1025</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L1221">1221</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @Override |
| public ASTNode visitNext(final NextContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.NEXT); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitPrior(final PriorContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.PRIOR); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitFirst(final FirstContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.FIRST); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitLast(final LastContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.LAST); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitAbsoluteCount(final AbsoluteCountContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.ABSOLUTE_COUNT); |
| result.setCount(((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitRelativeCount(final RelativeCountContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.RELATIVE_COUNT); |
| result.setCount(((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitCount(final CountContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.COUNT); |
| result.setCount(((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitAll(final AllContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.ALL); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitForward(final ForwardContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.FORWARD); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitForwardCount(final ForwardCountContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.FORWARD_COUNT); |
| result.setCount(((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitForwardAll(final ForwardAllContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.FORWARD_ALL); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitBackward(final BackwardContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.BACKWARD); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitBackwardCount(final BackwardCountContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.BACKWARD_COUNT); |
| result.setCount(((NumberLiteralValue) visit(ctx.signedIconst())).getValue().longValue()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitBackwardAll(final BackwardAllContext ctx) { |
| DirectionSegment result = new DirectionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex()); |
| result.setDirectionType(DirectionType.BACKWARD_ALL); |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationResultSet.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedOperationResultSet.html#L31">31</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedOperationResultSet.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/executor/resultset/AbstractUnsupportedOperationResultSet.html#L31">31</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public abstract class AbstractUnsupportedOperationResultSet extends AbstractUnsupportedUpdateOperationResultSet { |
| |
| @Override |
| public boolean previous() throws SQLException { |
| throw new SQLFeatureNotSupportedException("previous"); |
| } |
| |
| @Override |
| public boolean isBeforeFirst() throws SQLException { |
| throw new SQLFeatureNotSupportedException("isBeforeFirst"); |
| } |
| |
| @Override |
| public boolean isAfterLast() throws SQLException { |
| throw new SQLFeatureNotSupportedException("isAfterLast"); |
| } |
| |
| @Override |
| public boolean isFirst() throws SQLException { |
| throw new SQLFeatureNotSupportedException("isFirst"); |
| } |
| |
| @Override |
| public boolean isLast() throws SQLException { |
| throw new SQLFeatureNotSupportedException("isLast"); |
| } |
| |
| @Override |
| public void beforeFirst() throws SQLException { |
| throw new SQLFeatureNotSupportedException("beforeFirst"); |
| } |
| |
| @Override |
| public void afterLast() throws SQLException { |
| throw new SQLFeatureNotSupportedException("afterLast"); |
| } |
| |
| @Override |
| public boolean first() throws SQLException { |
| throw new SQLFeatureNotSupportedException("first"); |
| } |
| |
| @Override |
| public boolean last() throws SQLException { |
| throw new SQLFeatureNotSupportedException("last"); |
| } |
| |
| @Override |
| public boolean absolute(final int row) throws SQLException { |
| throw new SQLFeatureNotSupportedException("absolute"); |
| } |
| |
| @Override |
| public boolean relative(final int rows) throws SQLException { |
| throw new SQLFeatureNotSupportedException("relative"); |
| } |
| |
| @Override |
| public 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"); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L787">787</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L761">761</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>@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<AssignmentSegment> generateAssignmentSegments(final SetClauseListContext ctx) { |
| Collection<AssignmentSegment> result = new LinkedList<>(); |
| if (null != ctx.setClauseList()) { |
| Collection<AssignmentSegment> tmpResult = generateAssignmentSegments(ctx.setClauseList()); |
| result.addAll(tmpResult); |
| } |
| AssignmentSegment assignmentSegment = (AssignmentSegment) 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L434">434</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L451">451</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 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(), 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, (OracleSelectStatement) visit(ctx.subquery()));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L224">224</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L224">224</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L273">273</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>return null != unreservedWord ? visit(unreservedWord) : new IdentifierValue(ctx.getText()); |
| } |
| |
| @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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java</td> |
| <td>shardingsphere-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.html#L113">113</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.java</td> |
| <td>shardingsphere-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.html#L115">115</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>final Map<String, DatabaseConfiguration> databaseConfigs, final MetaDataPersistService persistService) { |
| Map<String, DataSource> effectiveDataSources = persistService.getEffectiveDataSources(databaseName, databaseConfigs); |
| Collection<RuleConfiguration> databaseRuleConfigs = persistService.getDatabaseRulePersistService().load(databaseName); |
| return new DataSourceProvidedDatabaseConfiguration(effectiveDataSources, databaseRuleConfigs); |
| } |
| |
| private static void checkDataSourceStates(final Map<String, DatabaseConfiguration> databaseConfigs, final Map<String, StorageNodeDataSource> storageNodes, final boolean force) { |
| Map<String, DataSourceState> storageDataSourceStates = getStorageDataSourceStates(storageNodes); |
| databaseConfigs.forEach((key, value) -> { |
| if (!value.getDataSources().isEmpty()) { |
| DataSourceStateManager.getInstance().initStates(key, value.getDataSources(), storageDataSourceStates, force); |
| } |
| }); |
| } |
| |
| private static Map<String, DataSourceState> getStorageDataSourceStates(final Map<String, StorageNodeDataSource> storageDataSourceStates) { |
| Map<String, DataSourceState> result = new HashMap<>(storageDataSourceStates.size(), 1F); |
| storageDataSourceStates.forEach((key, value) -> { |
| List<String> values = Splitter.on(".").splitToList(key); |
| Preconditions.checkArgument(3 == values.size(), "Illegal data source of storage node."); |
| String databaseName = values.get(0); |
| String dataSourceName = values.get(2); |
| result.put(databaseName + "." + dataSourceName, DataSourceState.valueOf(value.getStatus().name())); |
| }); |
| return result; |
| } |
| |
| private static void persistDatabaseConfigurations(final MetaDataContexts metadataContexts, final ContextManagerBuilderParameter param) { |
| metadataContexts.getPersistService().persistGlobalRuleConfiguration(param.getGlobalRuleConfigs(), param.getProps()); |
| for (Entry<String, ? extends DatabaseConfiguration> entry : param.getDatabaseConfigs().entrySet()) { |
| String databaseName = entry.getKey(); |
| metadataContexts.getPersistService().persistConfigurations(entry.getKey(), entry.getValue(), |
| metadataContexts.getMetaData().getDatabase(databaseName).getResourceMetaData().getDataSources(), |
| metadataContexts.getMetaData().getDatabase(databaseName).getRuleMetaData().getRules()); |
| } |
| } |
| |
| private static void persistMetaData(final MetaDataContexts metaDataContexts) { |
| metaDataContexts.getMetaData().getDatabases().values().forEach(each -> each.getSchemas() |
| .forEach((schemaName, schema) -> metaDataContexts.getPersistService().getDatabaseMetaDataService().persist(each.getName(), schemaName, schema))); |
| metaDataContexts.getShardingSphereData().getDatabaseData().forEach((databaseName, databaseData) -> databaseData.getSchemaData().forEach((schemaName, schemaData) -> metaDataContexts |
| .getPersistService().getShardingSphereDataPersistService().persist(databaseName, schemaName, schemaData, metaDataContexts.getMetaData().getDatabases()))); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L334">334</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L449">449</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| 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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L413">413</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L538">538</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()); |
| 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 final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) { |
| if (null != ctx.castFunction()) { |
| return visit(ctx.castFunction()); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/metadata/persist/MetaDataPersistService.java</td> |
| <td>shardingsphere-metadata-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/metadata/persist/MetaDataPersistService.html#L72">72</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/metadata/persist/NewMetaDataPersistService.java</td> |
| <td>shardingsphere-metadata-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/metadata/persist/NewMetaDataPersistService.html#L74">74</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>propsService = new PropertiesPersistService(repository); |
| metaDataVersionPersistService = new MetaDataVersionPersistService(repository); |
| shardingSphereDataPersistService = new ShardingSphereDataPersistService(repository); |
| } |
| |
| /** |
| * Persist global rule configurations. |
| * |
| * @param globalRuleConfigs global rule configurations |
| * @param props properties |
| */ |
| @Override |
| public void persistGlobalRuleConfiguration(final Collection<RuleConfiguration> globalRuleConfigs, final Properties props) { |
| globalRuleService.persist(globalRuleConfigs); |
| propsService.persist(props); |
| } |
| |
| /** |
| * Persist configurations. |
| * |
| * @param databaseName database name |
| * @param databaseConfigs database configurations |
| * @param dataSources data sources |
| * @param rules rules |
| */ |
| @Override |
| public void persistConfigurations(final String databaseName, final DatabaseConfiguration databaseConfigs, |
| final Map<String, DataSource> dataSources, final Collection<ShardingSphereRule> rules) { |
| Map<String, DataSourceProperties> dataSourcePropertiesMap = getDataSourcePropertiesMap(databaseConfigs.getDataSources()); |
| if (dataSourcePropertiesMap.isEmpty() && databaseConfigs.getRuleConfigurations().isEmpty()) { |
| databaseMetaDataService.addDatabase(databaseName); |
| } else { |
| dataSourceService.persist(databaseName, getDataSourcePropertiesMap(databaseConfigs.getDataSources())); |
| databaseRulePersistService.persist(databaseName, databaseConfigs.getRuleConfigurations()); |
| } |
| } |
| |
| private Map<String, DataSourceProperties> getDataSourcePropertiesMap(final Map<String, DataSource> dataSourceMap) { |
| Map<String, DataSourceProperties> result = new LinkedHashMap<>(dataSourceMap.size(), 1F); |
| for (Entry<String, DataSource> entry : dataSourceMap.entrySet()) { |
| result.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue())); |
| } |
| return result; |
| } |
| |
| /** |
| * Get effective data sources. |
| * |
| * @param databaseName database name |
| * @param databaseConfigs database configurations |
| * @return effective data sources |
| */ |
| @Override |
| public Map<String, DataSource> getEffectiveDataSources(final String databaseName, final Map<String, ? extends DatabaseConfiguration> databaseConfigs) { |
| Map<String, DataSourceProperties> persistedDataPropsMap = dataSourceService.load(databaseName); |
| return databaseConfigs.containsKey(databaseName) |
| ? mergeEffectiveDataSources(persistedDataPropsMap, databaseConfigs.get(databaseName).getDataSources()) |
| : DataSourcePoolCreator.create(persistedDataPropsMap); |
| } |
| |
| private Map<String, DataSource> mergeEffectiveDataSources(final Map<String, DataSourceProperties> persistedDataSourcePropsMap, final Map<String, DataSource> localConfiguredDataSources) { |
| Map<String, DataSource> result = new LinkedHashMap<>(persistedDataSourcePropsMap.size(), 1F); |
| for (Entry<String, DataSourceProperties> entry : persistedDataSourcePropsMap.entrySet()) { |
| String dataSourceName = entry.getKey(); |
| DataSourceProperties persistedDataSourceProps = entry.getValue(); |
| DataSource localConfiguredDataSource = localConfiguredDataSources.get(dataSourceName); |
| if (null == localConfiguredDataSource) { |
| result.put(dataSourceName, DataSourcePoolCreator.create(persistedDataSourceProps)); |
| } else if (DataSourcePropertiesCreator.create(localConfiguredDataSource).equals(persistedDataSourceProps)) { |
| result.put(dataSourceName, localConfiguredDataSource); |
| } else { |
| result.put(dataSourceName, DataSourcePoolCreator.create(persistedDataSourceProps)); |
| new DataSourcePoolDestroyer(localConfiguredDataSource).asyncDestroy(); |
| } |
| } |
| return result; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L434">434</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L336">336</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 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(), context.getText());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L415">415</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L246">246</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L361">361</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.java</td> |
| <td>shardingsphere-proxy-frontend-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/opengauss/command/query/simple/OpenGaussComQueryExecutor.html#L71">71</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.java</td> |
| <td>shardingsphere-proxy-frontend-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/simple/PostgreSQLComQueryExecutor.html#L71">71</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>proxyBackendHandler = ProxyBackendHandlerFactory.newInstance(TypedSPILoader.getService(DatabaseType.class, "openGauss"), comQueryPacket.getSQL(), connectionSession); |
| } |
| |
| @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", 0)); |
| for (VariableAssignSegment each : sqlStatement.getVariableAssigns()) { |
| result.add(new PostgreSQLParameterStatusPacket(each.getVariable().getVariable(), IdentifierValue.getQuotedContent(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(); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L142">142</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L986">986</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>result.setTable((TableSegment) visit(ctx.tableReferences())); |
| result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause())); |
| if (null != ctx.whereClause()) { |
| result.setWhere((WhereSegment) visit(ctx.whereClause())); |
| } |
| result.getParameterMarkerSegments().addAll(getParameterMarkerSegments()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) { |
| Collection<AssignmentSegment> assignments = new LinkedList<>(); |
| for (AssignmentContext each : ctx.assignment()) { |
| assignments.add((AssignmentSegment) 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()); |
| AssignmentSegment result = new ColumnAssignmentSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), columnSegments, value); |
| result.getColumns().add(column); |
| return result; |
| } |
| |
| @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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L325">325</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L408">408</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new OpenGaussAlterDefaultPrivilegesStatement(); |
| } |
| |
| @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.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 OpenGaussAlterForeignTableStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowFunctionStatusExecutor.java</td> |
| <td>shardingsphere-proxy-backend-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowFunctionStatusExecutor.html#L47">47</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcedureStatusExecutor.java</td> |
| <td>shardingsphere-proxy-backend-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowProcedureStatusExecutor.html#L47">47</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private QueryResultMetaData queryResultMetaData; |
| |
| private MergedResult mergedResult; |
| |
| @Override |
| public void execute(final ConnectionSession connectionSession) { |
| queryResultMetaData = createQueryResultMetaData(); |
| mergedResult = new TransparentMergedResult(getQueryResult()); |
| } |
| |
| private QueryResult getQueryResult() { |
| return new RawMemoryQueryResult(queryResultMetaData, Collections.emptyList()); |
| } |
| |
| private QueryResultMetaData createQueryResultMetaData() { |
| List<RawQueryResultColumnMetaData> columns = new ArrayList<>(); |
| 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); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L111">111</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L196">196</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public abstract class SQL92StatementVisitor extends SQL92StatementBaseVisitor<ASTNode> { |
| |
| 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.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) { |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/agent/core/util/AgentReflectionUtils.java</td> |
| <td>shardingsphere-agent-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/core/util/AgentReflectionUtils.html#L31">31</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/agent/plugin/core/util/AgentReflectionUtils.java</td> |
| <td>shardingsphere-agent-plugin-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/core/util/AgentReflectionUtils.html#L31">31</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>@NoArgsConstructor(access = AccessLevel.PRIVATE) |
| public final class AgentReflectionUtils { |
| |
| /** |
| * Get field value. |
| * |
| * @param target target |
| * @param fieldName field name |
| * @param <T> type of field value |
| * @return field value |
| * @throws IllegalStateException illegal state exception |
| */ |
| public static <T> T getFieldValue(final Object target, final String fieldName) { |
| Optional<Field> field = findField(fieldName, target.getClass()); |
| if (field.isPresent()) { |
| return getFieldValue(target, field.get()); |
| } |
| 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(); |
| } |
| |
| /** |
| * Invoke method. |
| * |
| * @param method method |
| * @param target target |
| * @param args arguments |
| * @param <T> type of invoke result |
| * @return invoke result |
| */ |
| @SuppressWarnings("unchecked") |
| @SneakyThrows(ReflectiveOperationException.class) |
| public static <T> T invokeMethod(final Method method, final Object target, final Object... args) { |
| boolean accessible = method.isAccessible(); |
| if (!accessible) { |
| method.setAccessible(true); |
| } |
| T result = (T) method.invoke(target, args); |
| if (!accessible) { |
| method.setAccessible(false); |
| } |
| return result; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L828">828</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L435">435</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L560">560</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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 final ASTNode visitSpecialFunction(final SpecialFunctionContext ctx) { |
| if (null != ctx.groupConcatFunction()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L218">218</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L218">218</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L172">172</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>return new NumberLiteralValue(ctx.NUMBER_().getText()); |
| } |
| |
| @Override |
| public final ASTNode visitIdentifier(final IdentifierContext ctx) { |
| UnreservedWordContext unreservedWord = ctx.unreservedWord(); |
| return null != unreservedWord ? visit(unreservedWord) : new IdentifierValue(ctx.getText()); |
| } |
| |
| @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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L426">426</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L365">365</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L256">256</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L371">371</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L752">752</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L491">491</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @Override |
| public final ASTNode visitRegularFunction(final 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 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.DESC : OrderDirection.ASC;</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L408">408</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1207">1207</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>SQL92SelectStatement subquery = (SQL92SelectStatement) visit(ctx.subquery()); |
| SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery); |
| SubqueryTableSegment result = new SubqueryTableSegment(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()); |
| 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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngine.java</td> |
| <td>shardingsphere-proxy-frontend-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/opengauss/authentication/OpenGaussAuthenticationEngine.html#L89">89</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngine.java</td> |
| <td>shardingsphere-proxy-frontend-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationEngine.html#L77">77</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L178">178</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L273">273</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return null != unreservedWord ? visit(unreservedWord) : new IdentifierValue(ctx.getText()); |
| } |
| |
| @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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L329">329</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1154">1154</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 ? alias.getStopIndex() : binaryExpression.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; |
| } |
| LiteralExpressionSegment column = (LiteralExpressionSegment) projection; |
| ExpressionProjectionSegment result = null == alias ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) |
| : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); |
| result.setAlias(alias); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitFromClause(final FromClauseContext ctx) { |
| return visit(ctx.tableReferences()); |
| } |
| |
| @Override |
| public ASTNode visitTableReferences(final TableReferencesContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/table/AlterTableStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/table/AlterTableStatementSchemaRefresher.html#L59">59</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/table/RenameTableStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/table/RenameTableStatementSchemaRefresher.html#L56">56</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| private ShardingSphereTable getTable(final ShardingSphereDatabase database, final Collection<String> logicDataSourceNames, final String schemaName, |
| final String tableName, final ConfigurationProperties props) throws SQLException { |
| ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(new LinkedList<>(database.getRuleMetaData().getRules())); |
| if (!containsInImmutableDataNodeContainedRule(tableName, database)) { |
| ruleMetaData.findRules(MutableDataNodeRule.class).forEach(each -> each.put(logicDataSourceNames.iterator().next(), schemaName, tableName)); |
| } |
| GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getProtocolType(), |
| database.getResourceMetaData().getStorageTypes(), database.getResourceMetaData().getDataSources(), ruleMetaData.getRules(), props, schemaName); |
| Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(tableName), material); |
| return Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> optional.getTable(tableName)) |
| .orElseGet(() -> new ShardingSphereTable(tableName, Collections.emptyList(), Collections.emptyList(), Collections.emptyList())); |
| } |
| |
| private boolean containsInImmutableDataNodeContainedRule(final String tableName, final ShardingSphereDatabase database) { |
| return database.getRuleMetaData().findRules(DataNodeContainedRule.class).stream() |
| .filter(each -> !(each instanceof MutableDataNodeRule)).anyMatch(each -> each.getAllTables().contains(tableName)); |
| } |
| |
| @Override |
| public String getType() { |
| return AlterTableStatement.class.getName();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L1346">1346</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L1293">1293</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new OpenGaussExecuteStatement(); |
| } |
| |
| /** |
| * 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java</td> |
| <td>shardingsphere-encrypt-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.html#L106">106</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdater.java</td> |
| <td>shardingsphere-encrypt-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/handler/update/DropEncryptRuleStatementUpdater.html#L68">68</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>currentRuleConfig.getEncryptors().putAll(toBeAlteredRuleConfig.getEncryptors()); |
| } |
| |
| private void dropUnusedEncryptor(final EncryptRuleConfiguration currentRuleConfig) { |
| Collection<String> inUsedEncryptors = currentRuleConfig.getTables().stream().flatMap(each -> each.getColumns().stream()).map(optional -> optional.getCipher().getEncryptorName()) |
| .collect(Collectors.toSet()); |
| inUsedEncryptors.addAll(currentRuleConfig.getTables().stream().flatMap(each -> each.getColumns().stream()) |
| .map(optional -> optional.getAssistedQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("")) |
| .collect(Collectors.toSet())); |
| inUsedEncryptors.addAll(currentRuleConfig.getTables().stream().flatMap(each -> each.getColumns().stream()) |
| .map(optional -> optional.getLikeQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("")) |
| .collect(Collectors.toSet())); |
| Collection<String> unusedEncryptors = currentRuleConfig.getEncryptors().keySet().stream().filter(each -> !inUsedEncryptors.contains(each)).collect(Collectors.toSet()); |
| unusedEncryptors.forEach(each -> currentRuleConfig.getEncryptors().remove(each)); |
| } |
| |
| @Override |
| public Class<EncryptRuleConfiguration> getRuleConfigurationClass() { |
| return EncryptRuleConfiguration.class; |
| } |
| |
| @Override |
| public String getType() { |
| return AlterEncryptRuleStatement.class.getName();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OpenGaussSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OpenGaussSchemaMetaDataLoader.html#L120">120</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/PostgreSQLSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/PostgreSQLSchemaMetaDataLoader.html#L151">151</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 Map<String, Integer> dataTypeMap, 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; |
| return new ColumnMetaData(columnName, dataTypeMap.get(dataType), isPrimaryKey, generated, caseSensitive, true, false); |
| } |
| |
| private Collection<TableMetaData> createTableMetaDataList(final Multimap<String, IndexMetaData> tableIndexMetaDataMap, final Multimap<String, ColumnMetaData> tableColumnMetaDataMap) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L556">556</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L694">694</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussDropIndexStatement result = new OpenGaussDropIndexStatement(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 OpenGaussAlterFunctionStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OpenGaussSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OpenGaussSchemaMetaDataLoader.html#L73">73</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/PostgreSQLSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/PostgreSQLSchemaMetaDataLoader.html#L85">85</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>result.add(new SchemaMetaData(each, createTableMetaDataList(tableIndexMetaDataMap, tableColumnMetaDataMap))); |
| } |
| return result; |
| } |
| } |
| |
| private Map<String, Multimap<String, IndexMetaData>> loadIndexMetaDataMap(final Connection connection, final Collection<String> schemaNames) throws SQLException { |
| 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)); |
| } |
| } |
| 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 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<>();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L292">292</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L365">365</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussAlterTableStatement result = new OpenGaussAlterTableStatement(); |
| 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()); |
| } |
| } |
| } |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitAlterAggregate(final AlterAggregateContext ctx) { |
| return new OpenGaussAlterAggregateStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L738">738</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L611">611</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 visitCharFunction(final CharFunctionContext ctx) { |
| calculateParameterCount(ctx.expr()); |
| return new FunctionSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), ctx.CHAR().getText(), getOriginalText(ctx)); |
| } |
| |
| @Override |
| public final ASTNode visitRegularFunction(final 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 DataTypeNameContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L534">534</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L659">659</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L183">183</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L138">138</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return visit(ctx.dateTimeLiterals()); |
| } |
| 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) { |
| 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 ? visit(unreservedWord) : new IdentifierValue(ctx.getText()); |
| } |
| |
| @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 visitSynonymName(final SynonymNameContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L919">919</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L886">886</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussSelectStatement result = (OpenGaussSelectStatement) 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); |
| } |
| return result; |
| } |
| |
| @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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L260">260</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L333">333</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussCreateTableStatement result = new OpenGaussCreateTableStatement(null != ctx.ifNotExists()); |
| 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.tableConstraint()) { |
| result.getValue().add((ConstraintDefinitionSegment) visit(each.tableConstraint())); |
| } |
| } |
| return result; |
| } |
| |
| @SuppressWarnings("unchecked") |
| @Override |
| public ASTNode visitAlterTable(final AlterTableContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterShardingTableRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterShardingTableRuleStatementAssert.html#L63">63</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateShardingTableRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateShardingTableRuleStatementAssert.html#L67">67</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 tableRuleSegment : actual) { |
| ExpectedAutoTableRule expectedTableRule = expected.get(count); |
| AutoTableRuleAssert.assertIs(assertContext, tableRuleSegment, expectedTableRule); |
| 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 tableRuleSegment : actual) { |
| ExpectedTableRule expectedTableRule = expected.get(count); |
| TableRuleAssert.assertIs(assertContext, tableRuleSegment, expectedTableRule); |
| count++; |
| } |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mask/algorithm/cover/KeepFromXToYMaskAlgorithm.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/algorithm/cover/KeepFromXToYMaskAlgorithm.html#L31">31</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/algorithm/cover/MaskFromXToYMaskAlgorithm.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/algorithm/cover/MaskFromXToYMaskAlgorithm.html#L31">31</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 MaskAlgorithmInitializationException(getType(), "fromX must be less than or equal to toY")); |
| } |
| |
| private Integer createFromX(final Properties props) { |
| MaskAlgorithmPropsChecker.checkPositiveIntegerConfig(props, FROM_X, getType()); |
| return Integer.parseInt(props.getProperty(FROM_X)); |
| } |
| |
| private Integer createToY(final Properties props) { |
| MaskAlgorithmPropsChecker.checkPositiveIntegerConfig(props, TO_Y, getType()); |
| return Integer.parseInt(props.getProperty(TO_Y)); |
| } |
| |
| private Character createReplaceChar(final Properties props) { |
| MaskAlgorithmPropsChecker.checkSingleCharConfig(props, REPLACE_CHAR, getType()); |
| return props.getProperty(REPLACE_CHAR).charAt(0); |
| } |
| |
| @Override |
| public String mask(final Object plainValue) { |
| String result = null == plainValue ? null : String.valueOf(plainValue); |
| if (Strings.isNullOrEmpty(result)) { |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L302">302</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L209">209</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @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()); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.html#L689">689</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1140">1140</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) { |
| ColumnProjectionSegment result = new ColumnProjectionSegment((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();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L974">974</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L1122">1122</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private void setTableSegment(final OpenGaussCommentStatement 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())))); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L1170">1170</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L1122">1122</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>stopIndex = null == ctx.RP_() ? ctx.tableReference().start.getStopIndex() : ctx.RP_().getSymbol().getStopIndex(); |
| } |
| result.setStartIndex(startIndex); |
| result.setStopIndex(stopIndex); |
| visitJoinedTable(ctx.joinedTable(), result); |
| result.setAlias(alias); |
| return result; |
| } |
| |
| private JoinTableSegment 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()); |
| return null == ctx.joinQual() ? tableSegment : 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mask/algorithm/cover/KeepFirstNLastMMaskAlgorithm.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/algorithm/cover/KeepFirstNLastMMaskAlgorithm.html#L29">29</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/algorithm/cover/MaskFirstNLastMMaskAlgorithm.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/algorithm/cover/MaskFirstNLastMMaskAlgorithm.html#L29">29</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) { |
| MaskAlgorithmPropsChecker.checkPositiveIntegerConfig(props, FIRST_N, getType()); |
| return Integer.parseInt(props.getProperty(FIRST_N)); |
| } |
| |
| private Integer createLastM(final Properties props) { |
| MaskAlgorithmPropsChecker.checkPositiveIntegerConfig(props, LAST_M, getType()); |
| return Integer.parseInt(props.getProperty(LAST_M)); |
| } |
| |
| private Character createReplaceChar(final Properties props) { |
| MaskAlgorithmPropsChecker.checkSingleCharConfig(props, REPLACE_CHAR, getType()); |
| return props.getProperty(REPLACE_CHAR).charAt(0); |
| } |
| |
| @Override |
| public String mask(final Object plainValue) { |
| String result = null == plainValue ? null : String.valueOf(plainValue); |
| if (Strings.isNullOrEmpty(result)) { |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedDatabaseMetaDataResultSet.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedDatabaseMetaDataResultSet.html#L39">39</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedGeneratedKeysResultSet.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/unsupported/AbstractUnsupportedGeneratedKeysResultSet.html#L120">120</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>@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 {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L384">384</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L472">472</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new OpenGaussAlterMaterializedViewStatement(); |
| } |
| |
| @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 OpenGaussAlterDomainStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.html#L145">145</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.html#L152">152</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussExplainStatement result = new OpenGaussExplainStatement(); |
| result.setStatement((SQLStatement) visit(ctx.explainableStmt())); |
| return result; |
| } |
| |
| @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 visitEmptyStatement(final EmptyStatementContext ctx) { |
| return new OpenGaussEmptyStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterDefaultShardingStrategyStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterDefaultShardingStrategyStatementAssert.html#L45">45</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateDefaultShardingStrategyStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateDefaultShardingStrategyStatementAssert.html#L46">46</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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())); |
| } |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L474">474</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L602">602</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return visit(ctx.castFunction()); |
| } |
| 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 visitRegularFunction(final RegularFunctionContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java</td> |
| <td>shardingsphere-opengauss-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.html#L97">97</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java</td> |
| <td>shardingsphere-postgresql-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.html#L95">95</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 Exception ex) { |
| // CHECKSTYLE:ON |
| payload.getByteBuf().resetWriterIndex();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1703">1703</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L408">408</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1207">1207</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>MySQLSelectStatement subquery = (MySQLSelectStatement) visit(ctx.subquery()); |
| SubquerySegment subquerySegment = new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), subquery); |
| SubqueryTableSegment result = new SubqueryTableSegment(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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.html#L217">217</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.html#L245">245</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private boolean isTransparentStatement(final ShardingSphereRuleMetaData ruleMetaData) { |
| Optional<DataNodeContainedRule> dataNodeContainedRule = getDataNodeContainedRuleForShardingRule(ruleMetaData.findRules(DataNodeContainedRule.class)); |
| Collection<ColumnContainedRule> columnContainedRules = ruleMetaData.findRules(ColumnContainedRule.class); |
| for (String each : sqlStatementContext.getTablesContext().getTableNames()) { |
| if ((!dataNodeContainedRule.isPresent() || !dataNodeContainedRule.get().getAllTables().contains(each)) && !containsInColumnContainedRule(each, columnContainedRules)) { |
| continue; |
| } |
| return false; |
| } |
| return true; |
| } |
| |
| private Optional<DataNodeContainedRule> getDataNodeContainedRuleForShardingRule(final Collection<DataNodeContainedRule> dataNodeContainedRules) { |
| for (DataNodeContainedRule each : dataNodeContainedRules) { |
| if (!(each instanceof MutableDataNodeRule)) { |
| return Optional.of(each); |
| } |
| } |
| return Optional.empty(); |
| } |
| |
| private boolean containsInColumnContainedRule(final String tableName, final Collection<ColumnContainedRule> columnContainedRules) { |
| for (ColumnContainedRule each : columnContainedRules) { |
| if (each.getTables().contains(tableName)) { |
| return true; |
| } |
| } |
| return false; |
| } |
| |
| @Override |
| public ResultSet executeQuery() throws SQLException {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1377">1377</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L145">145</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L989">989</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>result.setLimit((LimitSegment) visit(ctx.limitClause())); |
| } |
| result.getParameterMarkerSegments().addAll(getParameterMarkerSegments()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) { |
| Collection<AssignmentSegment> assignments = new LinkedList<>(); |
| for (AssignmentContext each : ctx.assignment()) { |
| assignments.add((AssignmentSegment) 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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L708">708</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L586">586</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| 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.charFunction()) { |
| return visit(ctx.charFunction()); |
| } |
| 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;</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L153">153</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L111">111</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L196">196</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>public abstract class OracleStatementVisitor extends OracleStatementBaseVisitor<ASTNode> { |
| |
| 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.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()); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1270">1270</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1341">1341</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) { |
| MySQLInsertStatement result = new MySQLInsertStatement(); |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L488">488</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L390">390</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new SubquerySegment(startIndex, stopIndex, (OracleSelectStatement) visit(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 visitFunctionCall(final FunctionCallContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L260">260</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L333">333</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L68">68</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>OpenGaussCreateTableStatement result = new OpenGaussCreateTableStatement(null != ctx.ifNotExists()); |
| 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.tableConstraint()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.java</td> |
| <td>shardingsphere-data-pipeline-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/opengauss/ingest/wal/decode/MppdbDecodingPlugin.html#L256">256</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/data/pipeline/postgresql/ingest/wal/decode/TestDecodingPlugin.java</td> |
| <td>shardingsphere-data-pipeline-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/postgresql/ingest/wal/decode/TestDecodingPlugin.html#L282">282</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| 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); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L549">549</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L433">433</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L239">239</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L244">244</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L239">239</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L193">193</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L288">288</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L423">423</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L309">309</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L424">424</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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)); |
| 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() ? "NOT LIKE" : "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 BetweenExpression createBetweenSegment(final PredicateContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.html#L354">354</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.html#L228">228</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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); |
| } |
| } |
| } |
| return result; |
| } |
| |
| @SuppressWarnings("unchecked") |
| @Override |
| public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) { |
| CollectionValue<AlterDefinitionSegment> result = new CollectionValue<>(); |
| if (null != ctx.columnClauses()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L302">302</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1127">1127</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>: 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java</td> |
| <td>shardingsphere-opengauss-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.html#L73">73</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java</td> |
| <td>shardingsphere-postgresql-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.html#L71">71</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/agent/core/util/AgentReflectionUtils.java</td> |
| <td>shardingsphere-agent-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/core/util/AgentReflectionUtils.html#L48">48</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/agent/plugin/core/util/AgentReflectionUtils.java</td> |
| <td>shardingsphere-agent-plugin-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/core/util/AgentReflectionUtils.html#L48">48</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/util/reflection/ReflectionUtils.java</td> |
| <td>shardingsphere-infra-util</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/util/reflection/ReflectionUtils.html#L43">43</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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(); |
| } |
| |
| /** |
| * Invoke method. |
| * |
| * @param method method |
| * @param target target |
| * @param args arguments |
| * @param <T> type of invoke result |
| * @return invoke result |
| */ |
| @SuppressWarnings("unchecked") |
| @SneakyThrows(ReflectiveOperationException.class) |
| public static <T> T invokeMethod(final Method method, final Object target, final Object... args) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java</td> |
| <td>shardingsphere-opengauss-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.html#L42">42</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java</td> |
| <td>shardingsphere-postgresql-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.html#L40">40</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L1333">1333</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L1280">1280</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 OpenGaussExecuteStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L260">260</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L296">296</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L260">260</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L309">309</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/DatabaseRequiredBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/DatabaseRequiredBackendHandler.html#L43">43</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandler.html#L43">43</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public abstract class DatabaseRequiredBackendHandler<T extends SQLStatement> implements DistSQLBackendHandler { |
| |
| private final T sqlStatement; |
| |
| private final ConnectionSession connectionSession; |
| |
| @Override |
| public final ResponseHeader execute() throws SQLException { |
| String databaseName = getDatabaseName(connectionSession, sqlStatement); |
| checkDatabaseName(databaseName); |
| return execute(databaseName, sqlStatement); |
| } |
| |
| protected abstract ResponseHeader execute(String databaseName, T sqlStatement); |
| |
| private String getDatabaseName(final ConnectionSession connectionSession, final T sqlStatement) { |
| Optional<DatabaseSegment> databaseSegment = sqlStatement instanceof FromDatabaseAvailable ? ((FromDatabaseAvailable) sqlStatement).getDatabase() : Optional.empty(); |
| return databaseSegment.isPresent() ? databaseSegment.get().getIdentifier().getValue() : connectionSession.getDatabaseName(); |
| } |
| |
| private void checkDatabaseName(final String databaseName) { |
| ShardingSpherePreconditions.checkNotNull(databaseName, NoDatabaseSelectedException::new); |
| ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(databaseName), () -> new UnknownDatabaseException(databaseName)); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1249">1249</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1320">1320</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public ASTNode visitInsertSelectClause(final InsertSelectClauseContext ctx) { |
| MySQLInsertStatement result = new MySQLInsertStatement(); |
| 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));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L828">828</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L941">941</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussDropSchemaStatement result = new OpenGaussDropSchemaStatement(); |
| 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 OpenGaussAlterLanguageStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1249">1249</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1270">1270</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1320">1320</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1341">1341</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public ASTNode visitInsertSelectClause(final InsertSelectClauseContext ctx) { |
| MySQLInsertStatement result = new MySQLInsertStatement(); |
| 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));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L727">727</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L850">850</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussPrepareStatement result = new OpenGaussPrepareStatement(); |
| 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 OpenGaussDeallocateStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.html#L219">219</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.html#L247">247</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/connector/DatabaseConnector.html#L150">150</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>Collection<ColumnContainedRule> columnContainedRules = ruleMetaData.findRules(ColumnContainedRule.class); |
| for (String each : sqlStatementContext.getTablesContext().getTableNames()) { |
| if ((!dataNodeContainedRule.isPresent() || !dataNodeContainedRule.get().getAllTables().contains(each)) && !containsInColumnContainedRule(each, columnContainedRules)) { |
| continue; |
| } |
| return false; |
| } |
| return true; |
| } |
| |
| private Optional<DataNodeContainedRule> getDataNodeContainedRuleForShardingRule(final Collection<DataNodeContainedRule> dataNodeContainedRules) { |
| for (DataNodeContainedRule each : dataNodeContainedRules) { |
| if (!(each instanceof MutableDataNodeRule)) { |
| return Optional.of(each); |
| } |
| } |
| return Optional.empty(); |
| } |
| |
| private boolean containsInColumnContainedRule(final String tableName, final Collection<ColumnContainedRule> columnContainedRules) { |
| for (ColumnContainedRule each : columnContainedRules) { |
| if (each.getTables().contains(tableName)) { |
| return true; |
| } |
| } |
| return false; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L183">183</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L223">223</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return visit(ctx.dateTimeLiterals()); |
| } |
| 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) { |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L538">538</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L676">676</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussAlterIndexStatement result = new OpenGaussAlterIndexStatement(); |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mask/algorithm/cover/MaskAfterSpecialCharsAlgorithm.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/algorithm/cover/MaskAfterSpecialCharsAlgorithm.html#L29">29</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/algorithm/cover/MaskBeforeSpecialCharsAlgorithm.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/algorithm/cover/MaskBeforeSpecialCharsAlgorithm.html#L29">29</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) { |
| MaskAlgorithmPropsChecker.checkAtLeastOneCharConfig(props, SPECIAL_CHARS, getType()); |
| return props.getProperty(SPECIAL_CHARS); |
| } |
| |
| private Character createReplaceChar(final Properties props) { |
| MaskAlgorithmPropsChecker.checkSingleCharConfig(props, REPLACE_CHAR, getType()); |
| return props.getProperty(REPLACE_CHAR).charAt(0); |
| } |
| |
| @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;</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1517">1517</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L261">261</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L444">444</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1245">1245</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-data-pipeline-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/migration/distsql/parser/core/MigrationDistSQLStatementVisitor.html#L151">151</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-distsql-engine</td> |
| <td><a href="./xref/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.html#L136">136</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public ASTNode visitStorageUnitDefinition(final MigrationDistSQLStatementParser.StorageUnitDefinitionContext ctx) { |
| String user = getIdentifierValue(ctx.user()); |
| String password = null == ctx.password() ? "" : getPassword(ctx.password()); |
| Properties props = getProperties(ctx.propertiesDefinition()); |
| return null != ctx.urlSource() ? new URLBasedDataSourceSegment(getIdentifierValue(ctx.storageUnitName()), |
| getIdentifierValue(ctx.urlSource().url()), user, password, props) |
| : new HostnameAndPortBasedDataSourceSegment(getIdentifierValue(ctx.storageUnitName()), |
| getIdentifierValue(ctx.simpleSource().hostname()), ctx.simpleSource().port().getText(), getIdentifierValue(ctx.simpleSource().dbName()), user, password, props); |
| } |
| |
| private String getPassword(final PasswordContext ctx) { |
| return getIdentifierValue(ctx);</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L648">648</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L645">645</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L535">535</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L660">660</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1592">1592</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L317">317</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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);</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.html#L115">115</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.html#L122">122</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussAnalyzeTableStatement result = new OpenGaussAnalyzeTableStatement(); |
| if (null != ctx.vacuumRelationList()) { |
| result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.vacuumRelationList())).getValue()); |
| } |
| return result; |
| } |
| |
| @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 OpenGaussLoadStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-encrypt-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.html#L99">99</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-mask-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.html#L87">87</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return null == ctx.likeQueryAlgorithm() ? null : (AlgorithmSegment) visit(ctx.likeQueryAlgorithm().algorithmDefinition()); |
| } |
| |
| @Override |
| public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext ctx) { |
| return new AlgorithmSegment(getIdentifierValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition())); |
| } |
| |
| private String getIdentifierValue(final ParseTree context) { |
| return null == context ? null : new IdentifierValue(context.getText()).getValue(); |
| } |
| |
| 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(IdentifierValue.getQuotedContent(each.key.getText()), IdentifierValue.getQuotedContent(each.value.getText())); |
| } |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitTableName(final TableNameContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.html#L89">89</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.html#L96">96</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return result; |
| } |
| |
| @Override |
| public ASTNode visitConfigurationParameterClause(final ConfigurationParameterClauseContext ctx) { |
| VariableAssignSegment result = new VariableAssignSegment(); |
| result.setStartIndex(ctx.start.getStartIndex()); |
| result.setStopIndex(ctx.stop.getStopIndex()); |
| result.setVariable(new VariableSegment(ctx.varName().start.getStartIndex(), ctx.varName().stop.getStopIndex(), ctx.varName().getText())); |
| if (null != ctx.varList()) { |
| result.setAssignValue(ctx.varList().getText()); |
| } |
| if (null != ctx.DEFAULT()) { |
| result.setAssignValue(ctx.DEFAULT().getText()); |
| } |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitResetParameter(final ResetParameterContext ctx) { |
| return new OpenGaussResetParameterStatement(null != ctx.ALL() ? "ALL" : ctx.identifier().getText());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/query/ShowUnusedShardingKeyGeneratorExecutor.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/query/ShowUnusedShardingKeyGeneratorExecutor.html#L60">60</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingKeyGeneratorStatementUpdater.html#L64">64</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| private Collection<String> getUsedKeyGenerators(final ShardingRuleConfiguration shardingRuleConfig) { |
| Collection<String> result = new LinkedHashSet<>(); |
| shardingRuleConfig.getTables().stream().filter(each -> null != each.getKeyGenerateStrategy()).forEach(each -> result.add(each.getKeyGenerateStrategy().getKeyGeneratorName())); |
| shardingRuleConfig.getAutoTables().stream().filter(each -> null != each.getKeyGenerateStrategy()).forEach(each -> result.add(each.getKeyGenerateStrategy().getKeyGeneratorName())); |
| KeyGenerateStrategyConfiguration keyGenerateStrategy = shardingRuleConfig.getDefaultKeyGenerateStrategy(); |
| if (null != keyGenerateStrategy && !Strings.isNullOrEmpty(keyGenerateStrategy.getKeyGeneratorName())) { |
| result.add(keyGenerateStrategy.getKeyGeneratorName()); |
| } |
| return result; |
| } |
| |
| @Override |
| public Collection<String> getColumnNames() {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.html#L299">299</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.html#L196">196</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return context.getInputGroups().iterator().next().getInputs().iterator().next(); |
| } |
| |
| private Optional<String> getInstanceIdAndSet(final QueryContext queryContext) { |
| Optional<String> result = connection.getDatabaseConnectionManager().getConnectionContext().getTrafficInstanceId(); |
| if (!result.isPresent()) { |
| result = getInstanceId(queryContext); |
| } |
| if (connection.isHoldTransaction() && result.isPresent()) { |
| connection.getDatabaseConnectionManager().getConnectionContext().setTrafficInstanceId(result.get()); |
| } |
| return result; |
| } |
| |
| private Optional<String> getInstanceId(final QueryContext queryContext) { |
| InstanceContext instanceContext = connection.getContextManager().getInstanceContext(); |
| return null != trafficRule && !trafficRule.getStrategyRules().isEmpty() |
| ? new TrafficEngine(trafficRule, instanceContext).dispatch(queryContext, connection.isHoldTransaction()) |
| : Optional.empty(); |
| } |
| |
| private void resetParameters() throws SQLException {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/query/ShowUnusedShardingAuditorsExecutor.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/query/ShowUnusedShardingAuditorsExecutor.html#L57">57</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAuditorStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAuditorStatementUpdater.html#L62">62</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| private Collection<String> getUsedAuditors(final ShardingRuleConfiguration shardingRuleConfig) { |
| Collection<String> result = new LinkedHashSet<>(); |
| shardingRuleConfig.getTables().stream().filter(each -> null != each.getAuditStrategy()).forEach(each -> result.addAll(each.getAuditStrategy().getAuditorNames())); |
| shardingRuleConfig.getAutoTables().stream().filter(each -> null != each.getAuditStrategy()).forEach(each -> result.addAll(each.getAuditStrategy().getAuditorNames())); |
| ShardingAuditStrategyConfiguration auditStrategy = shardingRuleConfig.getDefaultAuditStrategy(); |
| if (null != auditStrategy && !auditStrategy.getAuditorNames().isEmpty()) { |
| result.addAll(auditStrategy.getAuditorNames()); |
| } |
| return result; |
| } |
| |
| @Override |
| public Collection<String> getColumnNames() {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L648">648</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L808">808</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L645">645</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L535">535</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L660">660</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @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_();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterReadwriteSplittingRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterReadwriteSplittingRuleStatementAssert.html#L53">53</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateReadwriteSplittingRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateReadwriteSplittingRuleStatementAssert.html#L54">54</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 readwriteSplittingRuleSegment : actual) { |
| ExceptedReadwriteSplittingRule exceptedReadwriteSplittingRule = expected.get(count); |
| ReadwriteSplittingRuleAssert.assertIs(assertContext, readwriteSplittingRuleSegment, exceptedReadwriteSplittingRule); |
| count++; |
| } |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterShardingTableReferenceRulesStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterShardingTableReferenceRulesStatementAssert.html#L53">53</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateShardingTableReferenceRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateShardingTableReferenceRuleStatementAssert.html#L54">54</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 shardingTableReferenceRuleSegment : actual) { |
| ExpectedShardingTableReferenceRule expectedShardingTableReferenceRule = expected.get(count); |
| ShardingTableReferenceRuleAssert.assertIs(assertContext, shardingTableReferenceRuleSegment, expectedShardingTableReferenceRule); |
| count++; |
| } |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.java</td> |
| <td>shardingsphere-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/metadata/MetaDataContextsFactory.html#L81">81</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.java</td> |
| <td>shardingsphere-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/metadata/NewMetaDataContextsFactory.html#L82">82</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public static MetaDataContexts create(final MetaDataPersistService persistService, final ContextManagerBuilderParameter param, |
| final InstanceContext instanceContext, final Map<String, StorageNodeDataSource> storageNodes) throws SQLException { |
| boolean isDatabaseMetaDataExisted = !persistService.getDatabaseMetaDataService().loadAllDatabaseNames().isEmpty(); |
| Map<String, DatabaseConfiguration> effectiveDatabaseConfigs = isDatabaseMetaDataExisted |
| ? createEffectiveDatabaseConfigurations(getDatabaseNames(instanceContext, param.getDatabaseConfigs(), persistService), param.getDatabaseConfigs(), persistService) |
| : param.getDatabaseConfigs(); |
| checkDataSourceStates(effectiveDatabaseConfigs, storageNodes, param.isForce()); |
| Collection<RuleConfiguration> globalRuleConfigs = isDatabaseMetaDataExisted ? persistService.getGlobalRuleService().load() : param.getGlobalRuleConfigs(); |
| ConfigurationProperties props = isDatabaseMetaDataExisted ? new ConfigurationProperties(persistService.getPropsService().load()) : new ConfigurationProperties(param.getProps()); |
| Map<String, ShardingSphereDatabase> databases = isDatabaseMetaDataExisted |
| ? InternalMetaDataFactory.create(persistService, effectiveDatabaseConfigs, props, instanceContext)</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/AssociateStatisticsStatementTestCase.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/AssociateStatisticsStatementTestCase.html#L40">40</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/DisassociateStatisticsStatementTestCase.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/DisassociateStatisticsStatementTestCase.html#L40">40</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class AssociateStatisticsStatementTestCase 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<>(); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/AlterStorageUnitStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/AlterStorageUnitStatementAssert.html#L54">54</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/RegisterStorageUnitStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/RegisterStorageUnitStatementAssert.html#L55">55</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 actualDataSource : actual) { |
| DataSourceAssert.assertIs(assertContext, actualDataSource, expected.get(count)); |
| count++; |
| } |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.html#L351">351</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L154">154</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OracleAlterTableStatement result = new OracleAlterTableStatement(); |
| 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 ModifyConstraintDefinitionSegment) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/data/pipeline/opengauss/check/datasource/OpenGaussDataSourceChecker.java</td> |
| <td>shardingsphere-data-pipeline-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/opengauss/check/datasource/OpenGaussDataSourceChecker.html#L38">38</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceChecker.java</td> |
| <td>shardingsphere-data-pipeline-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/postgresql/check/datasource/PostgreSQLDataSourceChecker.html#L40">40</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class OpenGaussDataSourceChecker extends AbstractDataSourceChecker { |
| |
| private static final String SHOW_GRANTS_SQL = "SELECT * FROM pg_roles WHERE rolname = ?"; |
| |
| @Override |
| public void checkPrivilege(final Collection<? extends DataSource> dataSources) { |
| for (DataSource each : dataSources) { |
| checkPrivilege(each); |
| } |
| } |
| |
| private void checkPrivilege(final DataSource dataSource) { |
| 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 PrepareJobWithoutUserException(username)); |
| String isSuperRole = resultSet.getString("rolsuper"); |
| String isReplicationRole = resultSet.getString("rolreplication");</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.html#L61">61</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.html#L65">65</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussRevokeStatement result = new OpenGaussRevokeStatement(); |
| 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 OpenGaussCreateUserStatement();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java</td> |
| <td>shardingsphere-encrypt-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.html#L70">70</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java</td> |
| <td>shardingsphere-encrypt-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.html#L82">82</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private void checkToBeAlteredEncryptors(final AlterEncryptRuleStatement sqlStatement) { |
| Collection<AlgorithmSegment> encryptors = new LinkedHashSet<>(); |
| sqlStatement.getRules().forEach(each -> each.getColumns().forEach(column -> { |
| encryptors.add(column.getCipher().getEncryptor()); |
| if (null != column.getAssistedQuery()) { |
| encryptors.add(column.getAssistedQuery().getEncryptor()); |
| } |
| if (null != column.getLikeQuery()) { |
| encryptors.add(column.getLikeQuery().getEncryptor()); |
| } |
| })); |
| encryptors.stream().filter(Objects::nonNull).forEach(each -> TypedSPILoader.checkService(EncryptAlgorithm.class, each.getName(), each.getProps())); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/MySQLSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/MySQLSchemaMetaDataLoader.html#L149">149</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.html#L129">129</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>try (ResultSet resultSet = preparedStatement.executeQuery()) { |
| while (resultSet.next()) { |
| String indexName = resultSet.getString("INDEX_NAME"); |
| String tableName = resultSet.getString("TABLE_NAME"); |
| if (!result.containsKey(tableName)) { |
| result.put(tableName, new LinkedList<>()); |
| } |
| result.get(tableName).add(new IndexMetaData(indexName)); |
| } |
| } |
| } |
| return result; |
| } |
| |
| private String getIndexMetaDataSQL(final Collection<String> tableNames) { |
| return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(","))); |
| } |
| |
| @Override |
| public String getType() { |
| return "MySQL";</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.java</td> |
| <td>shardingsphere-data-pipeline-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/opengauss/sqlbuilder/OpenGaussPipelineSQLBuilder.html#L81">81</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.java</td> |
| <td>shardingsphere-data-pipeline-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/postgresql/sqlbuilder/PostgreSQLPipelineSQLBuilder.html#L83">83</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>StringBuilder result = new StringBuilder(" ON DUPLICATE KEY UPDATE "); |
| for (int i = 0; i < dataRecord.getColumnCount(); i++) { |
| Column column = dataRecord.getColumn(i); |
| if (column.isUniqueKey()) { |
| continue; |
| } |
| result.append(quote(column.getName())).append("=EXCLUDED.").append(quote(column.getName())).append(','); |
| } |
| result.setLength(result.length() - 1); |
| return result.toString(); |
| } |
| |
| @Override |
| public Optional<String> buildEstimatedCountSQL(final String schemaName, final String tableName) { |
| String qualifiedTableName = getQualifiedTableName(schemaName, tableName); |
| return Optional.of(String.format("SELECT reltuples::integer FROM pg_class WHERE oid='%s'::regclass::oid;", qualifiedTableName)); |
| } |
| |
| @Override |
| public String getType() { |
| return "openGauss";</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L740">740</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L742">742</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussInsertStatement result = new OpenGaussInsertStatement(); |
| 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); |
| } |
| ValuesClauseContext valuesClause = ctx.select().selectNoParens().selectClauseN().simpleSelect().valuesClause(); |
| if (null == valuesClause) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L276">276</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1083">1083</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateFunctionRightValueToken.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateFunctionRightValueToken.html#L54">54</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateInRightValueToken.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/pojo/EncryptPredicateInRightValueToken.html#L50">50</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>result.append(functionName).append(" ("); |
| for (int i = 0; i < indexValues.size() + paramMarkerIndexes.size(); i++) { |
| if (paramMarkerIndexes.contains(i)) { |
| result.append('?'); |
| } else { |
| if (indexValues.get(i) instanceof String) { |
| result.append('\'').append(indexValues.get(i)).append('\''); |
| } else { |
| result.append(indexValues.get(i)); |
| } |
| } |
| result.append(", "); |
| } |
| result.delete(result.length() - 2, result.length()).append(')'); |
| return result.toString(); |
| } |
| |
| @Override |
| public boolean equals(final Object obj) { |
| return obj instanceof EncryptPredicateFunctionRightValueToken && ((EncryptPredicateFunctionRightValueToken) obj).getStartIndex() == getStartIndex()</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/binder/statement/ddl/FetchStatementContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/statement/ddl/FetchStatementContext.html#L53">53</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/binder/statement/ddl/MoveStatementContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/statement/ddl/MoveStatementContext.html#L53">53</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return (FetchStatement) super.getSqlStatement(); |
| } |
| |
| @Override |
| public Optional<CursorNameSegment> getCursorName() { |
| return Optional.of(getSqlStatement().getCursorName()); |
| } |
| |
| @Override |
| public void setUpCursorDefinition(final CursorStatementContext cursorStatementContext) { |
| this.cursorStatementContext = cursorStatementContext; |
| TableExtractor tableExtractor = new TableExtractor(); |
| tableExtractor.extractTablesFromSelect(cursorStatementContext.getSqlStatement().getSelect()); |
| tablesContext = new TablesContext(tableExtractor.getRewriteTables(), getDatabaseType()); |
| } |
| |
| @Override |
| public Collection<WhereSegment> getWhereSegments() { |
| return null != cursorStatementContext ? cursorStatementContext.getWhereSegments() : Collections.emptyList(); |
| } |
| |
| @Override |
| public Collection<ColumnSegment> getColumnSegments() { |
| return null != cursorStatementContext ? cursorStatementContext.getColumnSegments() : Collections.emptyList(); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/metadata/factory/InternalMetaDataFactory.java</td> |
| <td>shardingsphere-metadata-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/metadata/factory/InternalMetaDataFactory.html#L71">71</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/metadata/factory/NewInternalMetaDataFactory.java</td> |
| <td>shardingsphere-metadata-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/metadata/factory/NewInternalMetaDataFactory.html#L72">72</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private static Map<String, ShardingSphereDatabase> createDatabases(final MetaDataBasedPersistService persistService, final Map<String, DatabaseConfiguration> databaseConfigMap, |
| final DatabaseType protocolType, final ConfigurationProperties props, final InstanceContext instanceContext) { |
| Map<String, ShardingSphereDatabase> result = new ConcurrentHashMap<>(databaseConfigMap.size(), 1F); |
| for (Entry<String, DatabaseConfiguration> entry : databaseConfigMap.entrySet()) { |
| String databaseName = entry.getKey(); |
| if (entry.getValue().getDataSources().isEmpty()) { |
| result.put(databaseName.toLowerCase(), ShardingSphereDatabase.create(databaseName, protocolType)); |
| } else { |
| result.put(databaseName.toLowerCase(), create(databaseName, persistService, entry.getValue(), props, instanceContext)); |
| } |
| } |
| return result; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterEncryptRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterEncryptRuleStatementAssert.html#L53">53</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateEncryptRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateEncryptRuleStatementAssert.html#L54">54</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 encryptRuleSegment : actual) { |
| ExpectedEncryptRule expectedEncryptRule = expected.get(count); |
| assertThat(assertContext.getText("encrypt rule table name assertion error: "), encryptRuleSegment.getTableName(), is(expectedEncryptRule.getName()));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1517">1517</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L261">261</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L808">808</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L407">407</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L435">435</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return visit(ctx.bitExpr(0)); |
| } |
| |
| private InExpression createInSegment(final PredicateContext ctx) { |
| ExpressionSegment left = (ExpressionSegment) visit(ctx.bitExpr(0)); |
| ExpressionSegment right; |
| if (null == ctx.subquery()) { |
| 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; |
| } else { |
| right = new SubqueryExpressionSegment(new SubquerySegment(ctx.subquery().start.getStartIndex(), ctx.subquery().stop.getStopIndex(), (OracleSelectStatement) visit(ctx.subquery())));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.html#L124">124</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertOnUpdateTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertOnUpdateTokenGenerator.html#L169">169</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| private void addCipherAssignment(final String schemaName, final String tableName, final AssignmentSegment assignmentSegment, final EncryptLiteralAssignmentToken token) { |
| Object originalValue = ((LiteralExpressionSegment) assignmentSegment.getValue()).getLiterals(); |
| Object cipherValue = encryptRule.encrypt(databaseName, schemaName, tableName, assignmentSegment.getColumns().get(0).getIdentifier().getValue(), |
| Collections.singletonList(originalValue)).iterator().next(); |
| token.addAssignment(encryptRule.getCipherColumn(tableName, assignmentSegment.getColumns().get(0).getIdentifier().getValue()), cipherValue); |
| } |
| |
| private void addAssistedQueryAssignment(final String schemaName, final String tableName, final AssignmentSegment assignmentSegment, final EncryptLiteralAssignmentToken token) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.html#L96">96</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.java</td> |
| <td>shardingsphere-shadow-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.html#L155">155</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return matcher.find(); |
| } |
| |
| /** |
| * Get table name. |
| * |
| * @param rulePath rule path |
| * @return table name |
| */ |
| public static Optional<String> getTableName(final String rulePath) { |
| Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + TABLES_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE); |
| Matcher matcher = pattern.matcher(rulePath); |
| return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty(); |
| } |
| |
| /** |
| * Get algorithm name. |
| * |
| * @param rulePath rule path |
| * @return algorithm name |
| */ |
| public static Optional<String> getAlgorithmName(final String rulePath) { |
| Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + ALGORITHMS_NODE + RULE_NAME_PATTERN, Pattern.CASE_INSENSITIVE); |
| Matcher matcher = pattern.matcher(rulePath); |
| return matcher.find() ? Optional.of(matcher.group(3)) : Optional.empty(); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/query/ShowUnusedShardingAlgorithmsExecutor.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/query/ShowUnusedShardingAlgorithmsExecutor.html#L62">62</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmStatementUpdater.html#L70">70</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private Collection<String> getUsedShardingAlgorithms(final ShardingRuleConfiguration shardingRuleConfig) { |
| Collection<String> result = new LinkedHashSet<>(); |
| shardingRuleConfig.getTables().forEach(each -> { |
| if (null != each.getDatabaseShardingStrategy()) { |
| result.add(each.getDatabaseShardingStrategy().getShardingAlgorithmName()); |
| } |
| if (null != each.getTableShardingStrategy()) { |
| result.add(each.getTableShardingStrategy().getShardingAlgorithmName()); |
| } |
| }); |
| shardingRuleConfig.getAutoTables().stream().filter(each -> null != each.getShardingStrategy()).forEach(each -> result.add(each.getShardingStrategy().getShardingAlgorithmName())); |
| ShardingStrategyConfiguration tableShardingStrategy = shardingRuleConfig.getDefaultTableShardingStrategy(); |
| if (null != tableShardingStrategy && !Strings.isNullOrEmpty(tableShardingStrategy.getShardingAlgorithmName())) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.html#L101">101</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.html#L101">101</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 void updateCurrentRuleConfiguration(final ShardingRuleConfiguration currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/yaml/ClusterYamlPersistRepositoryConfigurationSwapper.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/yaml/ClusterYamlPersistRepositoryConfigurationSwapper.html#L27">27</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/yaml/NewClusterYamlPersistRepositoryConfigurationSwapper.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/yaml/NewClusterYamlPersistRepositoryConfigurationSwapper.html#L28">28</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class ClusterYamlPersistRepositoryConfigurationSwapper implements YamlPersistRepositoryConfigurationSwapper<ClusterPersistRepositoryConfiguration> { |
| |
| @Override |
| public YamlPersistRepositoryConfiguration swapToYamlConfiguration(final ClusterPersistRepositoryConfiguration data) { |
| YamlPersistRepositoryConfiguration result = new YamlPersistRepositoryConfiguration(); |
| result.setType(data.getType()); |
| result.setProps(data.getProps()); |
| result.getProps().setProperty("namespace", data.getNamespace()); |
| result.getProps().setProperty("server-lists", data.getServerLists()); |
| return result; |
| } |
| |
| @Override |
| public ClusterPersistRepositoryConfiguration swapToObject(final YamlPersistRepositoryConfiguration yamlConfig) { |
| return new ClusterPersistRepositoryConfiguration( |
| yamlConfig.getType(), yamlConfig.getProps().getProperty("namespace"), yamlConfig.getProps().getProperty("server-lists"), yamlConfig.getProps()); |
| } |
| |
| @Override |
| public String getType() { |
| return "Cluster";</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L875">875</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L842">842</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussUpdateStatement result = new OpenGaussUpdateStatement(); |
| 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())); |
| } |
| result.getParameterMarkerSegments().addAll(getParameterMarkerSegments()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitSetClauseList(final SetClauseListContext ctx) { |
| Collection<AssignmentSegment> assignments = generateAssignmentSegments(ctx); |
| return new SetAssignmentSegment(ctx.start.getStartIndex() - 4, ctx.stop.getStopIndex(), assignments); |
| } |
| |
| @Override |
| public ASTNode visitDelete(final DeleteContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L391">391</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L293">293</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L408">408</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>ExpressionSegment right = null != ctx.predicate() ? (ExpressionSegment) visit(ctx.predicate()) : (ExpressionSegment) visit(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); |
| } |
| return visit(ctx.bitExpr(0)); |
| } |
| |
| private InExpression createInSegment(final PredicateContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L165">165</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.html#L238">238</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-encrypt-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.html#L108">108</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-sharding-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.html#L325">325</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return null == context ? null : new IdentifierValue(context.getText()).getValue(); |
| } |
| |
| 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(IdentifierValue.getQuotedContent(each.key.getText()), IdentifierValue.getQuotedContent(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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/rule/ShardingRule.java</td> |
| <td>shardingsphere-sharding-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/rule/ShardingRule.html#L252">252</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.html#L272">272</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private boolean isValidActualTableName(final TableRule sampleTableRule, final TableRule tableRule) { |
| for (String each : sampleTableRule.getActualDataSourceNames()) { |
| Collection<String> sampleActualTableNames = |
| sampleTableRule.getActualTableNames(each).stream().map(actualTableName -> actualTableName.replace(sampleTableRule.getTableDataNode().getPrefix(), "")).collect(Collectors.toSet()); |
| Collection<String> actualTableNames = |
| tableRule.getActualTableNames(each).stream().map(optional -> optional.replace(tableRule.getTableDataNode().getPrefix(), "")).collect(Collectors.toSet()); |
| if (!sampleActualTableNames.equals(actualTableNames)) { |
| return false; |
| } |
| } |
| return true; |
| } |
| |
| private boolean isBindingShardingAlgorithm(final TableRule sampleTableRule, final TableRule tableRule, final boolean databaseAlgorithm, final BindingTableCheckedConfiguration checkedConfig) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/database/metadata/dialect/MariaDBDataSourceMetaData.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/database/metadata/dialect/MariaDBDataSourceMetaData.html#L60">60</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/database/metadata/dialect/MySQLDataSourceMetaData.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/database/metadata/dialect/MySQLDataSourceMetaData.html#L60">60</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>defaultQueryProperties.setProperty("prepStmtCacheSize", "200000"); |
| defaultQueryProperties.setProperty("prepStmtCacheSqlLimit", "2048"); |
| defaultQueryProperties.setProperty("useLocalSessionState", Boolean.TRUE.toString()); |
| defaultQueryProperties.setProperty("rewriteBatchedStatements", Boolean.TRUE.toString()); |
| defaultQueryProperties.setProperty("cacheResultSetMetadata", Boolean.FALSE.toString()); |
| defaultQueryProperties.setProperty("cacheServerConfiguration", Boolean.TRUE.toString()); |
| defaultQueryProperties.setProperty("elideSetAutoCommits", Boolean.TRUE.toString()); |
| defaultQueryProperties.setProperty("maintainTimeStats", Boolean.FALSE.toString()); |
| defaultQueryProperties.setProperty("netTimeoutForStreamingResults", "0"); |
| defaultQueryProperties.setProperty("tinyInt1isBit", Boolean.FALSE.toString()); |
| defaultQueryProperties.setProperty("useSSL", Boolean.FALSE.toString()); |
| defaultQueryProperties.setProperty("serverTimezone", "UTC");</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleStatementUpdater.java</td> |
| <td>shardingsphere-mask-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/distsql/handler/update/AlterMaskRuleStatementUpdater.html#L82">82</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleStatementUpdater.java</td> |
| <td>shardingsphere-mask-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/distsql/handler/update/DropMaskRuleStatementUpdater.html#L71">71</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private void dropUnusedAlgorithms(final MaskRuleConfiguration currentRuleConfig) { |
| Collection<String> inUsedAlgorithms = currentRuleConfig.getTables().stream().flatMap(each -> each.getColumns().stream()).map(MaskColumnRuleConfiguration::getMaskAlgorithm) |
| .collect(Collectors.toSet()); |
| Collection<String> unusedAlgorithms = currentRuleConfig.getMaskAlgorithms().keySet().stream().filter(each -> !inUsedAlgorithms.contains(each)).collect(Collectors.toSet()); |
| unusedAlgorithms.forEach(each -> currentRuleConfig.getMaskAlgorithms().remove(each)); |
| } |
| |
| @Override |
| public Class<MaskRuleConfiguration> getRuleConfigurationClass() { |
| return MaskRuleConfiguration.class; |
| } |
| |
| @Override |
| public String getType() { |
| return AlterMaskRuleStatement.class.getName();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/MySQLSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/MySQLSchemaMetaDataLoader.html#L148">148</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.html#L158">158</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>preparedStatement.setString(1, databaseName); |
| try (ResultSet resultSet = preparedStatement.executeQuery()) { |
| while (resultSet.next()) { |
| String indexName = resultSet.getString("INDEX_NAME"); |
| String tableName = resultSet.getString("TABLE_NAME"); |
| if (!result.containsKey(tableName)) { |
| result.put(tableName, new LinkedList<>()); |
| } |
| result.get(tableName).add(new IndexMetaData(indexName)); |
| } |
| } |
| } |
| return result; |
| } |
| |
| private String getIndexMetaDataSQL(final Collection<String> tableNames) { |
| return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(","))); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L293">293</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.html#L352">352</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L366">366</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L155">155</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.html#L159">159</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.html#L129">129</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>try (ResultSet resultSet = preparedStatement.executeQuery()) { |
| while (resultSet.next()) { |
| String indexName = resultSet.getString("INDEX_NAME"); |
| String tableName = resultSet.getString("TABLE_NAME"); |
| if (!result.containsKey(tableName)) { |
| result.put(tableName, new LinkedList<>()); |
| } |
| result.get(tableName).add(new IndexMetaData(indexName)); |
| } |
| } |
| } |
| return result; |
| } |
| |
| private String getIndexMetaDataSQL(final Collection<String> tableNames) { |
| return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -> String.format("'%s'", each)).collect(Collectors.joining(","))); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/view/AlterViewStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/view/AlterViewStatementSchemaRefresher.html#L75">75</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/view/CreateViewStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/view/CreateViewStatementSchemaRefresher.html#L51">51</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(new LinkedList<>(database.getRuleMetaData().getRules())); |
| if (!containsInImmutableDataNodeContainedRule(viewName, database)) { |
| ruleMetaData.findRules(MutableDataNodeRule.class).forEach(each -> each.put(logicDataSourceNames.iterator().next(), schemaName, viewName)); |
| } |
| GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getProtocolType(), |
| database.getResourceMetaData().getStorageTypes(), database.getResourceMetaData().getDataSources(), ruleMetaData.getRules(), props, schemaName); |
| Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(viewName), material); |
| Optional<ShardingSphereTable> actualViewMetaData = Optional.ofNullable(schemaMap.get(schemaName)).map(optional -> optional.getTable(viewName));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.html#L176">176</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.html#L236">236</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private AbstractEnumerable<Object> executeScalarEnumerable(final DatabaseType databaseType, final QueryContext queryContext, |
| final ShardingSphereDatabase database, final ExecutionContext context) { |
| try { |
| ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext = |
| prepareEngine.prepare(context.getRouteContext(), context.getExecutionUnits(), new ExecutionGroupReportContext(database.getName())); |
| setParameters(executionGroupContext.getInputGroups()); |
| processEngine.executeSQL(executionGroupContext, context.getQueryContext()); |
| List<QueryResult> queryResults = execute(executionGroupContext, databaseType); |
| MergeEngine mergeEngine = new MergeEngine(database, executorContext.getProps(), new ConnectionContext()); |
| MergedResult mergedResult = mergeEngine.merge(queryResults, queryContext.getSqlStatementContext()); |
| Collection<Statement> statements = getStatements(executionGroupContext.getInputGroups()); |
| return createScalarEnumerable(mergedResult, statements);</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L316">316</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L338">338</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.html#L546">546</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.html#L628">628</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>currentResultSet = new ShardingSphereResultSet(resultSets, mergedResult, this, transparentStatement, executionContext, columnLabelAndIndexMap); |
| } |
| return currentResultSet; |
| } |
| |
| private List<ResultSet> getResultSets() throws SQLException { |
| List<ResultSet> result = new ArrayList<>(statements.size()); |
| for (Statement each : statements) { |
| if (null != each.getResultSet()) { |
| result.add(each.getResultSet()); |
| } |
| } |
| return result; |
| } |
| |
| private List<QueryResult> getQueryResults(final List<ResultSet> resultSets) throws SQLException { |
| List<QueryResult> result = new ArrayList<>(resultSets.size()); |
| for (ResultSet each : resultSets) { |
| if (null != each) { |
| result.add(new JDBCStreamQueryResult(each)); |
| } |
| } |
| return result; |
| } |
| |
| private ExecutionContext createExecutionContext(final QueryContext queryContext) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.html#L264">264</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L68">68</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OracleCreateTableStatement result = new OracleCreateTableStatement(); |
| 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<>();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L260">260</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.html#L264">264</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L333">333</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>OpenGaussCreateTableStatement result = new OpenGaussCreateTableStatement(null != ctx.ifNotExists()); |
| 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<>();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L828">828</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L555">555</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>List<TerminalNode> numbers = ctx.INTEGER_(); |
| 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())); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/metadata/persist/service/config/database/NewDatabaseRulePersistService.java</td> |
| <td>shardingsphere-metadata-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/metadata/persist/service/config/database/NewDatabaseRulePersistService.html#L91">91</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/metadata/persist/service/config/global/NewGlobalRulePersistService.java</td> |
| <td>shardingsphere-metadata-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/metadata/persist/service/config/global/NewGlobalRulePersistService.html#L80">80</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return Collections.emptyList(); |
| } |
| |
| private void getAllNodes(final Collection<String> keys, final String path) { |
| keys.add(path); |
| List<String> childrenKeys = repository.getChildrenKeys(path); |
| if (childrenKeys.isEmpty()) { |
| return; |
| } |
| for (String each : childrenKeys) { |
| getAllNodes(keys, String.join("/", "", path, each)); |
| } |
| } |
| |
| private Collection<YamlDataNode> getDataNodes(final Collection<String> keys) { |
| Collection<YamlDataNode> result = new LinkedHashSet<>(); |
| for (String each : keys) { |
| result.add(new YamlDataNode(each, repository.getDirectly(each))); |
| } |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/table/AlterTableStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/table/AlterTableStatementSchemaRefresher.html#L63">63</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/table/CreateTableStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/table/CreateTableStatementSchemaRefresher.html#L50">50</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/connection/refresher/type/table/RenameTableStatementSchemaRefresher.java</td> |
| <td>shardingsphere-infra-context</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/connection/refresher/type/table/RenameTableStatementSchemaRefresher.html#L60">60</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(new LinkedList<>(database.getRuleMetaData().getRules())); |
| if (!containsInImmutableDataNodeContainedRule(tableName, database)) { |
| ruleMetaData.findRules(MutableDataNodeRule.class).forEach(each -> each.put(logicDataSourceNames.iterator().next(), schemaName, tableName)); |
| } |
| GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getProtocolType(), |
| database.getResourceMetaData().getStorageTypes(), database.getResourceMetaData().getDataSources(), ruleMetaData.getRules(), props, schemaName); |
| Map<String, ShardingSphereSchema> schemaMap = GenericSchemaBuilder.build(Collections.singletonList(tableName), material);</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1641">1641</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L352">352</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| LiteralExpressionSegment column = (LiteralExpressionSegment) projection; |
| ExpressionProjectionSegment result = null == alias |
| ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) |
| : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), 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));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.html#L136">136</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/executor/TranslatableTableScanExecutor.html#L222">222</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return executeByScalarShardingSphereData(databaseName, schemaName, table); |
| } |
| SqlString sqlString = createSQLString(table, (TranslatableScanNodeExecutorContext) scanContext, SQLDialectFactory.getSQLDialect(databaseType.getType())); |
| SQLFederationExecutorContext federationContext = executorContext.getFederationContext(); |
| QueryContext queryContext = createQueryContext(federationContext.getMetaData(), sqlString, databaseType, federationContext.getQueryContext().isUseCache()); |
| ShardingSphereDatabase database = federationContext.getMetaData().getDatabase(databaseName); |
| ExecutionContext context = new KernelProcessor().generateExecutionContext(queryContext, database, globalRuleMetaData, executorContext.getProps(), new ConnectionContext()); |
| if (federationContext.isPreview()) { |
| federationContext.getExecutionUnits().addAll(context.getExecutionUnits()); |
| return createEmptyScalarEnumerable();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.html#L89">89</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertOnUpdateTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertOnUpdateTokenGenerator.html#L99">99</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return Optional.of(generateParameterSQLToken(tableName, assignmentSegment)); |
| } |
| if (assignmentSegment.getValue() instanceof LiteralExpressionSegment) { |
| return Optional.of(generateLiteralSQLToken(schemaName, tableName, assignmentSegment)); |
| } |
| return Optional.empty(); |
| } |
| |
| private EncryptAssignmentToken generateParameterSQLToken(final String tableName, final AssignmentSegment assignmentSegment) { |
| EncryptParameterAssignmentToken result = new EncryptParameterAssignmentToken(assignmentSegment.getColumns().get(0).getStartIndex(), assignmentSegment.getStopIndex()); |
| String columnName = assignmentSegment.getColumns().get(0).getIdentifier().getValue(); |
| addCipherColumn(tableName, columnName, result); |
| addAssistedQueryColumn(tableName, columnName, result); |
| addLikeQueryColumn(tableName, columnName, result); |
| return result; |
| } |
| |
| private void addCipherColumn(final String tableName, final String columnName, final EncryptParameterAssignmentToken token) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.html#L717">717</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.html#L656">656</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>clearParameters(); |
| } |
| |
| @SuppressWarnings("MagicConstant") |
| @Override |
| public int getResultSetType() { |
| return statementOption.getResultSetType(); |
| } |
| |
| @SuppressWarnings("MagicConstant") |
| @Override |
| public int getResultSetConcurrency() { |
| return statementOption.getResultSetConcurrency(); |
| } |
| |
| @Override |
| public int getResultSetHoldability() { |
| return statementOption.getResultSetHoldability(); |
| } |
| |
| @Override |
| public boolean isAccumulate() { |
| return metaDataContexts.getMetaData().getDatabase(connection.getDatabaseName()).getRuleMetaData().findRules(DataNodeContainedRule.class).stream() |
| .anyMatch(each -> each.isNeedAccumulate(executionContext.getSqlStatementContext().getTablesContext().getTableNames())); |
| } |
| |
| @Override |
| public Collection<PreparedStatement> getRoutedStatements() {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/data/pipeline/opengauss/prepare/datasource/OpenGaussDataSourcePreparer.java</td> |
| <td>shardingsphere-data-pipeline-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/opengauss/prepare/datasource/OpenGaussDataSourcePreparer.html#L52">52</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/data/pipeline/postgresql/prepare/datasource/PostgreSQLDataSourcePreparer.java</td> |
| <td>shardingsphere-data-pipeline-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/postgresql/prepare/datasource/PostgreSQLDataSourcePreparer.html#L36">36</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>@Override |
| public void prepareTargetTables(final PrepareTargetTablesParameter param) throws SQLException { |
| PipelineDataSourceManager dataSourceManager = param.getDataSourceManager(); |
| for (CreateTableEntry each : param.getCreateTableConfig().getCreateTableEntries()) { |
| String createTargetTableSQL = getCreateTargetTableSQL(each, dataSourceManager, param.getSqlParserEngine()); |
| try (Connection targetConnection = getCachedDataSource(dataSourceManager, each.getTargetDataSourceConfig()).getConnection()) { |
| for (String sql : Splitter.on(";").trimResults().splitToList(createTargetTableSQL).stream().filter(cs -> !Strings.isNullOrEmpty(cs)).collect(Collectors.toList())) { |
| executeTargetTableSQL(targetConnection, addIfNotExistsForCreateTableSQL(sql));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L490">490</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L392">392</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L294">294</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L409">409</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/merge/dql/pagination/RowNumberDecoratorMergedResult.java</td> |
| <td>shardingsphere-sharding-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/merge/dql/pagination/RowNumberDecoratorMergedResult.html#L37">37</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/merge/dql/pagination/TopAndRowNumberDecoratorMergedResult.java</td> |
| <td>shardingsphere-sharding-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/merge/dql/pagination/TopAndRowNumberDecoratorMergedResult.html#L37">37</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public RowNumberDecoratorMergedResult(final MergedResult mergedResult, final PaginationContext pagination) throws SQLException { |
| super(mergedResult); |
| this.pagination = pagination; |
| skipAll = skipOffset(); |
| } |
| |
| private boolean skipOffset() throws SQLException { |
| long end = pagination.getActualOffset(); |
| for (int i = 0; i < end; i++) { |
| if (!getMergedResult().next()) { |
| return true; |
| } |
| } |
| rowNumber = end + 1; |
| return false; |
| } |
| |
| @Override |
| public boolean next() throws SQLException { |
| if (skipAll) { |
| return false; |
| } |
| if (!pagination.getActualRowCount().isPresent()) { |
| return getMergedResult().next(); |
| } |
| return rowNumber++ < pagination.getActualRowCount().get() && getMergedResult().next();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/H2SchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/H2SchemaMetaDataLoader.html#L125">125</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/MySQLSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/MySQLSchemaMetaDataLoader.html#L148">148</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OracleSchemaMetaDataLoader.html#L158">158</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>preparedStatement.setString(2, "PUBLIC"); |
| try (ResultSet resultSet = preparedStatement.executeQuery()) { |
| while (resultSet.next()) { |
| String indexName = resultSet.getString("INDEX_NAME"); |
| String tableName = resultSet.getString("TABLE_NAME"); |
| if (!result.containsKey(tableName)) { |
| result.put(tableName, new LinkedList<>()); |
| } |
| result.get(tableName).add(new IndexMetaData(indexName)); |
| } |
| } |
| } |
| return result; |
| } |
| |
| private String getIndexMetaDataSQL(final Collection<String> tableNames) { |
| return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -> String.format("'%s'", each).toUpperCase()).collect(Collectors.joining(",")));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L242">242</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L263">263</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlCompatibleEncryptRuleConfigurationSwapper.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlCompatibleEncryptRuleConfigurationSwapper.html#L50">50</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlEncryptRuleConfigurationSwapper.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/yaml/swapper/NewYamlEncryptRuleConfigurationSwapper.html#L47">47</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public Collection<YamlDataNode> swapToDataNodes(final CompatibleEncryptRuleConfiguration data) { |
| Collection<YamlDataNode> result = new LinkedHashSet<>(); |
| for (EncryptTableRuleConfiguration each : data.getTables()) { |
| result.add(new YamlDataNode(EncryptNodeConverter.getTableNamePath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each)))); |
| } |
| for (Entry<String, AlgorithmConfiguration> entry : data.getEncryptors().entrySet()) { |
| result.add(new YamlDataNode(EncryptNodeConverter.getEncryptorPath(entry.getKey()), YamlEngine.marshal(algorithmSwapper.swapToYamlConfiguration(entry.getValue())))); |
| } |
| return result; |
| } |
| |
| @Override |
| public CompatibleEncryptRuleConfiguration swapToObject(final Collection<YamlDataNode> dataNodes) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/H2SchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/H2SchemaMetaDataLoader.html#L126">126</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.html#L129">129</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>try (ResultSet resultSet = preparedStatement.executeQuery()) { |
| while (resultSet.next()) { |
| String indexName = resultSet.getString("INDEX_NAME"); |
| String tableName = resultSet.getString("TABLE_NAME"); |
| if (!result.containsKey(tableName)) { |
| result.put(tableName, new LinkedList<>()); |
| } |
| result.get(tableName).add(new IndexMetaData(indexName)); |
| } |
| } |
| } |
| return result; |
| } |
| |
| private String getIndexMetaDataSQL(final Collection<String> tableNames) { |
| return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -> String.format("'%s'", each).toUpperCase()).collect(Collectors.joining(",")));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/single/decider/SingleSQLFederationDecider.java</td> |
| <td>shardingsphere-single-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/single/decider/SingleSQLFederationDecider.html#L67">67</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/single/route/SingleSQLRouter.java</td> |
| <td>shardingsphere-single-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/single/route/SingleSQLRouter.html#L109">109</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return rule.getSingleTableNames(result); |
| } |
| |
| private Collection<QualifiedTable> getQualifiedTables(final ShardingSphereDatabase database, final DatabaseType databaseType, final Collection<SimpleTableSegment> tableSegments) { |
| Collection<QualifiedTable> result = new LinkedList<>(); |
| String schemaName = DatabaseTypeEngine.getDefaultSchemaName(databaseType, database.getName()); |
| for (SimpleTableSegment each : tableSegments) { |
| String actualSchemaName = each.getOwner().map(optional -> optional.getIdentifier().getValue()).orElse(schemaName); |
| result.add(new QualifiedTable(actualSchemaName, each.getTableName().getIdentifier().getValue())); |
| } |
| return result; |
| } |
| |
| private boolean containsView(final ShardingSphereDatabase database, final Collection<QualifiedTable> singleTableNames) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L350">350</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L243">243</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L358">358</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>return new DatetimeExpression(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), left, text); |
| } |
| |
| 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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.html#L61">61</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportStorageNodesExecutor.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportStorageNodesExecutor.html#L56">56</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>String exportedData = generateExportData(metaData); |
| if (sqlStatement.getFilePath().isPresent()) { |
| String filePath = sqlStatement.getFilePath().get(); |
| ExportUtils.exportToFile(filePath, exportedData); |
| return Collections.singleton(new LocalDataQueryResultRow(ProxyContext.getInstance().getContextManager().getInstanceContext().getInstance().getCurrentInstanceId(), LocalDateTime.now(), |
| String.format("Successfully exported to:'%s'", filePath))); |
| } |
| return Collections.singleton( |
| new LocalDataQueryResultRow(ProxyContext.getInstance().getContextManager().getInstanceContext().getInstance().getCurrentInstanceId(), LocalDateTime.now(), exportedData)); |
| } |
| |
| private String generateExportData(final ShardingSphereMetaData metaData) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactory.java</td> |
| <td>shardingsphere-proxy-frontend-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactory.html#L90">90</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactory.java</td> |
| <td>shardingsphere-proxy-frontend-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactory.html#L85">85</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-encrypt-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/distsql/parser/core/EncryptDistSQLStatementVisitor.html#L104">104</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-mask-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/distsql/parser/core/MaskDistSQLStatementVisitor.html#L92">92</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/globalclock/distsql/parser/core/GlobalClockDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-global-clock-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/globalclock/distsql/parser/core/GlobalClockDistSQLStatementVisitor.html#L49">49</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>return new AlgorithmSegment(getIdentifierValue(ctx.algorithmTypeName()), getProperties(ctx.propertiesDefinition())); |
| } |
| |
| private String getIdentifierValue(final ParseTree context) { |
| return null == context ? null : new IdentifierValue(context.getText()).getValue(); |
| } |
| |
| 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(IdentifierValue.getQuotedContent(each.key.getText()), IdentifierValue.getQuotedContent(each.value.getText())); |
| } |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L254">254</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L126">126</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L211">211</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactory.java</td> |
| <td>shardingsphere-proxy-frontend-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecutorFactory.html#L120">120</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactory.java</td> |
| <td>shardingsphere-proxy-frontend-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecutorFactory.html#L112">112</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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(); |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/metadata/converter/MaskNodeConverter.html#L70">70</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.java</td> |
| <td>shardingsphere-shadow-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/shadow/metadata/converter/ShadowNodeConverter.html#L105">105</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "\\.*", Pattern.CASE_INSENSITIVE); |
| Matcher matcher = pattern.matcher(rulePath); |
| return matcher.find(); |
| } |
| |
| /** |
| * Is mask table path. |
| * |
| * @param rulePath rule path |
| * @return true or false |
| */ |
| public static boolean isTablePath(final String rulePath) { |
| Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + TABLES_NODE + "\\.*", Pattern.CASE_INSENSITIVE); |
| Matcher matcher = pattern.matcher(rulePath); |
| return matcher.find(); |
| } |
| |
| /** |
| * Is mask algorithm path. |
| * |
| * @param rulePath rule path |
| * @return true or false |
| */ |
| public static boolean isAlgorithmPath(final String rulePath) { |
| Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + "/" + ALGORITHMS_NODE + "\\.*", Pattern.CASE_INSENSITIVE); |
| Matcher matcher = pattern.matcher(rulePath); |
| return matcher.find(); |
| } |
| |
| /** |
| * Get table name. |
| * |
| * @param rulePath rule path |
| * @return table name |
| */ |
| public static Optional<String> getTableName(final String rulePath) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/data/pipeline/opengauss/ingest/OpenGaussWALDumper.java</td> |
| <td>shardingsphere-data-pipeline-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/opengauss/ingest/OpenGaussWALDumper.html#L83">83</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLWALDumper.java</td> |
| <td>shardingsphere-data-pipeline-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/data/pipeline/postgresql/ingest/PostgreSQLWALDumper.html#L85">85</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>logicalReplication = new OpenGaussLogicalReplication(); |
| this.decodeWithTX = dumperConfig.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(5000); |
| } |
| if (times >= 5) { |
| throw new IngestException(ex); |
| } |
| } |
| } |
| } |
| |
| @SneakyThrows(InterruptedException.class) |
| private void dump() throws SQLException {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L383">383</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L307">307</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L214">214</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.java</td> |
| <td>shardingsphere-agent-metrics-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCMetaDataInfoExporter.html#L47">47</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCStateExporter.java</td> |
| <td>shardingsphere-agent-metrics-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/metrics/core/exporter/impl/jdbc/JDBCStateExporter.html#L44">44</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>Arrays.asList("database", "type"), Collections.emptyMap()); |
| |
| @Override |
| public Optional<GaugeMetricFamilyMetricsCollector> export(final String pluginType) { |
| Optional<ShardingSphereDriver> shardingSphereDriverOptional = getShardingSphereDriver(); |
| if (!shardingSphereDriverOptional.isPresent()) { |
| return Optional.empty(); |
| } |
| GaugeMetricFamilyMetricsCollector result = MetricsCollectorRegistry.get(config, pluginType); |
| result.cleanMetrics(); |
| DriverDataSourceCache dataSourceCache = AgentReflectionUtils.getFieldValue(shardingSphereDriverOptional.get(), "dataSourceCache"); |
| Map<String, DataSource> dataSourceMap = AgentReflectionUtils.getFieldValue(dataSourceCache, "dataSourceMap"); |
| for (Map.Entry<String, DataSource> entry : dataSourceMap.entrySet()) { |
| ShardingSphereDataSource shardingSphereDataSource = (ShardingSphereDataSource) entry.getValue();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/rule/ShardingRule.java</td> |
| <td>shardingsphere-sharding-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/rule/ShardingRule.html#L156">156</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/checker/ShardingTableRuleStatementChecker.html#L175">175</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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)));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L415">415</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L353">353</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L550">550</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L336">336</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L451">451</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1444">1444</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1048">1048</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>result.setLimit((LimitSegment) visit(ctx.limitClause())); |
| } |
| result.getParameterMarkerSegments().addAll(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()));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/InstallComponentStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/InstallComponentStatementAssert.html#L45">45</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/UninstallComponentStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/UninstallComponentStatementAssert.html#L45">45</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public static void assertIs(final SQLCaseAssertContext assertContext, final MySQLInstallComponentStatement actual, final InstallComponentStatementTestCase 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++; |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/readwritesplitting/yaml/swapper/NewYamlReadwriteSplittingRuleConfigurationSwapper.java</td> |
| <td>shardingsphere-readwrite-splitting-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/readwritesplitting/yaml/swapper/NewYamlReadwriteSplittingRuleConfigurationSwapper.html#L87">87</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapper.java</td> |
| <td>shardingsphere-readwrite-splitting-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/readwritesplitting/yaml/swapper/YamlReadwriteSplittingRuleConfigurationSwapper.html#L80">80</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private ReadwriteSplittingDataSourceRuleConfiguration swapDataSource(final String name, final YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) { |
| return new ReadwriteSplittingDataSourceRuleConfiguration(name, yamlDataSourceRuleConfig.getWriteDataSourceName(), yamlDataSourceRuleConfig.getReadDataSourceNames(), |
| getTransactionalReadQueryStrategy(yamlDataSourceRuleConfig), yamlDataSourceRuleConfig.getLoadBalancerName()); |
| } |
| |
| private TransactionalReadQueryStrategy getTransactionalReadQueryStrategy(final YamlReadwriteSplittingDataSourceRuleConfiguration yamlDataSourceRuleConfig) { |
| return Strings.isNullOrEmpty(yamlDataSourceRuleConfig.getTransactionalReadQueryStrategy()) |
| ? TransactionalReadQueryStrategy.DYNAMIC |
| : TransactionalReadQueryStrategy.valueOf(yamlDataSourceRuleConfig.getTransactionalReadQueryStrategy()); |
| } |
| |
| @Override |
| public Class<ReadwriteSplittingRuleConfiguration> getTypeClass() { |
| return ReadwriteSplittingRuleConfiguration.class; |
| } |
| |
| @Override |
| public String getRuleTagName() { |
| return "READWRITE_SPLITTING"; |
| } |
| |
| @Override |
| public int getOrder() { |
| return ReadwriteSplittingOrder.ORDER; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L579">579</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L505">505</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1800">1800</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1816">1816</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L520">520</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L658">658</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()))); |
| } |
| } |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitAlterIndex(final AlterIndexContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L535">535</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L428">428</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L553">553</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @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()); |
| String innerExpression = ctx.start.getInputStream().getText(new Interval(ctx.LP_().get(0).getSymbol().getStartIndex(), ctx.stop.getStopIndex()));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/agent/core/spi/AgentServiceLoader.java</td> |
| <td>shardingsphere-agent-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/core/spi/AgentServiceLoader.html#L41">41</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/agent/plugin/core/spi/PluginServiceLoader.java</td> |
| <td>shardingsphere-agent-plugin-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/core/spi/PluginServiceLoader.html#L39">39</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private AgentServiceLoader(final Class<T> service) { |
| validate(service); |
| this.services = load(service); |
| } |
| |
| private void validate(final Class<T> service) { |
| Preconditions.checkNotNull(service, "SPI class is null."); |
| Preconditions.checkArgument(service.isInterface(), "SPI class `%s` is not interface.", service); |
| } |
| |
| private Collection<T> load(final Class<T> service) { |
| Collection<T> result = new LinkedList<>(); |
| for (T each : ServiceLoader.load(service)) { |
| result.add(each); |
| } |
| return result; |
| } |
| |
| /** |
| * Get singleton agent service loader. |
| * |
| * @param service service type |
| * @param <T> type of class |
| * @return agent service loader |
| */ |
| @SuppressWarnings("unchecked") |
| public static <T> AgentServiceLoader<T> getServiceLoader(final Class<T> service) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/ClusterModeContextManager.html#L81">81</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/NewClusterModeContextManager.html#L82">82</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.java</td> |
| <td>shardingsphere-standalone-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/standalone/StandaloneModeContextManager.html#L189">189</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>Map<String, ShardingSphereView> views = alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName, view -> view)); |
| DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService(); |
| databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, schemaName, tables); |
| databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, schemaName, views); |
| alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -> databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, schemaName, each)); |
| alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -> databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName, schemaName, each)); |
| } |
| |
| @Override |
| public void registerStorageUnits(final String databaseName, final Map<String, DataSourceProperties> toBeRegisterStorageUnitProps) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L266">266</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L266">266</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L209">209</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L315">315</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L491">491</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L625">625</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @Override |
| public final ASTNode visitRegularFunction(final 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 DataTypeNameContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L692">692</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.html#L113">113</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final ASTNode visitViewName(final ViewNameContext 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 ASTNode visitSelect(final SelectContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.java</td> |
| <td>shardingsphere-agent-tracing-opentelemetry</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetryJDBCExecutorCallbackAdvice.html#L55">55</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.java</td> |
| <td>shardingsphere-agent-tracing-opentelemetry</td> |
| <td><a href="./xref/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/OpenTelemetrySQLParserEngineAdvice.html#L49">49</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @Override |
| public void afterMethod(final TargetAdviceObject target, final Method 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 Method method, final Object[] args, final Throwable throwable, final String pluginType) { |
| Span span = (Span) target.getAttachment(); |
| span.setStatus(StatusCode.ERROR).recordException(throwable); |
| span.end(); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L238">238</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L238">238</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L192">192</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L287">287</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L692">692</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.html#L113">113</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.java</td> |
| <td>shardingsphere-opengauss-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/opengauss/codec/OpenGaussPacketCodecEngine.html#L123">123</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.java</td> |
| <td>shardingsphere-postgresql-protocol</td> |
| <td><a href="./xref/org/apache/shardingsphere/db/protocol/postgresql/codec/PostgreSQLPacketCodecEngine.html#L121">121</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/binder/segment/insert/values/InsertValueContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/segment/insert/values/InsertValueContext.html#L53">53</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/binder/segment/insert/values/OnDuplicateUpdateContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/segment/insert/values/OnDuplicateUpdateContext.html#L57">57</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertValuesTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertValuesTokenGenerator.html#L108">108</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingInsertValuesTokenGenerator.java</td> |
| <td>shardingsphere-sharding-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingInsertValuesTokenGenerator.html#L62">62</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L289">289</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L235">235</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1278">1278</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L124">124</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.html#L244">244</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L260">260</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L333">333</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>MySQLCreateTableStatement result = new MySQLCreateTableStatement(null != ctx.ifNotExists()); |
| 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); |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/binder/statement/ddl/CloseStatementContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/statement/ddl/CloseStatementContext.html#L58">58</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/binder/statement/ddl/FetchStatementContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/statement/ddl/FetchStatementContext.html#L58">58</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/binder/statement/ddl/MoveStatementContext.java</td> |
| <td>shardingsphere-infra-binder</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/binder/statement/ddl/MoveStatementContext.html#L58">58</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>return getSqlStatement().getCursorName(); |
| } |
| |
| @Override |
| public void setUpCursorDefinition(final CursorStatementContext cursorStatementContext) { |
| this.cursorStatementContext = cursorStatementContext; |
| TableExtractor tableExtractor = new TableExtractor(); |
| tableExtractor.extractTablesFromSelect(cursorStatementContext.getSqlStatement().getSelect()); |
| tablesContext = new TablesContext(tableExtractor.getRewriteTables(), getDatabaseType()); |
| } |
| |
| @Override |
| public Collection<WhereSegment> getWhereSegments() { |
| return null != cursorStatementContext ? cursorStatementContext.getWhereSegments() : Collections.emptyList(); |
| } |
| |
| @Override |
| public Collection<ColumnSegment> getColumnSegments() { |
| return null != cursorStatementContext ? cursorStatementContext.getColumnSegments() : Collections.emptyList(); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/authority/yaml/swapper/NewYamlAuthorityRuleConfigurationSwapper.java</td> |
| <td>shardingsphere-authority-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/authority/yaml/swapper/NewYamlAuthorityRuleConfigurationSwapper.html#L49">49</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/authority/yaml/swapper/YamlAuthorityRuleConfigurationSwapper.java</td> |
| <td>shardingsphere-authority-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/authority/yaml/swapper/YamlAuthorityRuleConfigurationSwapper.html#L40">40</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private YamlAuthorityRuleConfiguration swapToYamlConfiguration(final AuthorityRuleConfiguration data) { |
| YamlAuthorityRuleConfiguration result = new YamlAuthorityRuleConfiguration(); |
| result.setPrivilege(algorithmSwapper.swapToYamlConfiguration(data.getAuthorityProvider())); |
| result.setUsers(YamlUsersConfigurationConverter.convertToYamlUserConfiguration(data.getUsers())); |
| result.setDefaultAuthenticator(data.getDefaultAuthenticator()); |
| if (!data.getAuthenticators().isEmpty()) { |
| data.getAuthenticators().forEach((key, value) -> result.getAuthenticators().put(key, algorithmSwapper.swapToYamlConfiguration(value))); |
| } |
| return result; |
| } |
| |
| @Override |
| public AuthorityRuleConfiguration swapToObject(final Collection<YamlDataNode> dataNodes) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/traffic/distsql/parser/core/TrafficDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-traffic-distsql-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/traffic/distsql/parser/core/TrafficDistSQLStatementVisitor.html#L66">66</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-distsql-engine</td> |
| <td><a href="./xref/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.html#L340">340</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return null == ctx ? null : visit(ctx.algorithmDefinition()); |
| } |
| |
| @Override |
| public ASTNode visitAlgorithmDefinition(final AlgorithmDefinitionContext ctx) { |
| return new AlgorithmSegment(getIdentifierValue(ctx.algorithmTypeName()), buildProperties(ctx.propertiesDefinition())); |
| } |
| |
| private Properties buildProperties(final PropertiesDefinitionContext ctx) { |
| Properties result = new Properties(); |
| if (null == ctx) { |
| return result; |
| } |
| for (PropertyContext each : ctx.properties().property()) { |
| result.setProperty(IdentifierValue.getQuotedContent(each.key.getText()), IdentifierValue.getQuotedContent(each.value.getText())); |
| } |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L289">289</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L195">195</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L150">150</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1641">1641</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1177">1177</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| LiteralExpressionSegment column = (LiteralExpressionSegment) projection; |
| ExpressionProjectionSegment result = null == alias |
| ? new ExpressionProjectionSegment(column.getStartIndex(), column.getStopIndex(), String.valueOf(column.getLiterals()), column) |
| : new ExpressionProjectionSegment(column.getStartIndex(), ctx.alias().stop.getStopIndex(), String.valueOf(column.getLiterals()), column); |
| result.setAlias(alias); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitFromClause(final FromClauseContext ctx) { |
| return visit(ctx.tableReferences()); |
| } |
| |
| @Override |
| public ASTNode visitTableReferences(final TableReferencesContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L958">958</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L1106">1106</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussCommentStatement result = new OpenGaussCommentStatement(); |
| 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()))); |
| setTableSegment(result, nameSegmentIterator); |
| return result; |
| } |
| |
| @SuppressWarnings("unchecked") |
| private OpenGaussCommentStatement commentOnTable(final CommentContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.html#L120">120</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.html#L75">75</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new LocalDataMergedResult(rows); |
| } |
| |
| private String getDatabaseName(final ConnectionSession connectionSession, final T sqlStatement) { |
| Optional<DatabaseSegment> databaseSegment = sqlStatement instanceof FromDatabaseAvailable ? ((FromDatabaseAvailable) sqlStatement).getDatabase() : Optional.empty(); |
| return databaseSegment.isPresent() ? databaseSegment.get().getIdentifier().getValue() : connectionSession.getDatabaseName(); |
| } |
| |
| private void checkDatabaseName(final String databaseName) { |
| ShardingSpherePreconditions.checkNotNull(databaseName, NoDatabaseSelectedException::new); |
| ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(databaseName), () -> new UnknownDatabaseException(databaseName)); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/MariaDBOptimizerBuilder.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/MariaDBOptimizerBuilder.html#L31">31</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/MySQLOptimizerBuilder.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/MySQLOptimizerBuilder.html#L31">31</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class MariaDBOptimizerBuilder implements OptimizerSQLDialectBuilder { |
| |
| @Override |
| public Properties build() { |
| Properties result = new Properties(); |
| result.setProperty(CalciteConnectionProperty.LEX.camelName(), Lex.MYSQL.name()); |
| result.setProperty(CalciteConnectionProperty.CONFORMANCE.camelName(), SqlConformanceEnum.MYSQL_5.name()); |
| result.setProperty(CalciteConnectionProperty.FUN.camelName(), SqlLibrary.MYSQL.fun); |
| result.setProperty(CalciteConnectionProperty.CASE_SENSITIVE.camelName(), String.valueOf(Lex.MYSQL.caseSensitive)); |
| return result; |
| } |
| |
| @Override |
| public String getType() { |
| return "MariaDB";</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/OpenGaussOptimizerBuilder.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/OpenGaussOptimizerBuilder.html#L31">31</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/PostgreSQLOptimizerBuilder.java</td> |
| <td>shardingsphere-sql-federation-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/sqlfederation/optimizer/context/parser/dialect/impl/PostgreSQLOptimizerBuilder.html#L31">31</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class OpenGaussOptimizerBuilder implements OptimizerSQLDialectBuilder { |
| |
| @Override |
| public Properties 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(Lex.JAVA.caseSensitive)); |
| return result; |
| } |
| |
| @Override |
| public String getType() { |
| return "openGauss";</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.html#L703">703</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L329">329</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>ColumnProjectionSegment result = new ColumnProjectionSegment((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();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/SelectDatabaseExecutor.java</td> |
| <td>shardingsphere-proxy-backend-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/SelectDatabaseExecutor.html#L79">79</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/SelectTableExecutor.java</td> |
| <td>shardingsphere-proxy-backend-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/executor/SelectTableExecutor.html#L60">60</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @Override |
| protected Collection<String> getDatabaseNames(final ConnectionSession connectionSession) { |
| Collection<String> databaseNames = ProxyContext.getInstance().getAllDatabaseNames().stream().filter(each -> isAuthorized(each, connectionSession.getGrantee())).collect(Collectors.toList()); |
| return databaseNames.stream().filter(AbstractDatabaseMetaDataExecutor::hasDataSource).collect(Collectors.toList()); |
| } |
| |
| @Override |
| protected void preProcess(final String databaseName, final Map<String, Object> rows, final Map<String, String> alias) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterShadowRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/alter/impl/AlterShadowRuleStatementAssert.html#L51">51</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateShadowRuleStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/CreateShadowRuleStatementAssert.html#L54">54</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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 tableRuleSegment : actual) { |
| ExpectedShadowRule expectedTableRule = expected.get(count); |
| ShadowRuleAssert.assertIs(assertContext, tableRuleSegment, expectedTableRule); |
| count++; |
| } |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/database/type/dialect/OpenGaussDatabaseType.html#L63">63</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/database/type/dialect/PostgreSQLDatabaseType.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/database/type/dialect/PostgreSQLDatabaseType.html#L62">62</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return new OpenGaussDataSourceMetaData(url); |
| } |
| |
| @Override |
| public void handleRollbackOnly(final boolean rollbackOnly, final SQLStatement statement) throws SQLException { |
| ShardingSpherePreconditions.checkState(!rollbackOnly || statement instanceof CommitStatement || statement instanceof RollbackStatement, |
| () -> new SQLFeatureNotSupportedException("Current transaction is aborted, commands ignored until end of transaction block.")); |
| } |
| |
| @Override |
| public Map<String, Collection<String>> getSystemDatabaseSchemaMap() { |
| return SYSTEM_DATABASE_SCHEMA_MAP; |
| } |
| |
| @Override |
| public Collection<String> getSystemSchemas() { |
| return SYSTEM_SCHEMAS; |
| } |
| |
| @Override |
| public boolean isSchemaAvailable() { |
| return true; |
| } |
| |
| @Override |
| public String getDefaultSchema() { |
| return "public"; |
| } |
| |
| @Override |
| public String getType() { |
| return "openGauss";</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L805">805</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L918">918</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussCreateSchemaStatement result = new OpenGaussCreateSchemaStatement(); |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/DatabaseRequiredBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/DatabaseRequiredBackendHandler.html#L58">58</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.html#L123">123</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandler.html#L58">58</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.html#L78">78</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>private String getDatabaseName(final ConnectionSession connectionSession, final T sqlStatement) { |
| Optional<DatabaseSegment> databaseSegment = sqlStatement instanceof FromDatabaseAvailable ? ((FromDatabaseAvailable) sqlStatement).getDatabase() : Optional.empty(); |
| return databaseSegment.isPresent() ? databaseSegment.get().getIdentifier().getValue() : connectionSession.getDatabaseName(); |
| } |
| |
| private void checkDatabaseName(final String databaseName) { |
| ShardingSpherePreconditions.checkNotNull(databaseName, NoDatabaseSelectedException::new); |
| ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(databaseName), () -> new UnknownDatabaseException(databaseName)); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.html#L524">524</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.java</td> |
| <td>shardingsphere-jdbc-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSphereStatement.html#L608">608</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| @Override |
| public ResultSet getResultSet() throws SQLException { |
| if (null != currentResultSet) { |
| return currentResultSet; |
| } |
| if (null != trafficInstanceId) { |
| return executor.getTrafficExecutor().getResultSet(); |
| } |
| if (useFederation) { |
| return executor.getFederationExecutor().getResultSet(); |
| } |
| if (executionContext.getSqlStatementContext() instanceof SelectStatementContext || executionContext.getSqlStatementContext().getSqlStatement() instanceof DALStatement) { |
| List<ResultSet> resultSets = getResultSets(); |
| if (resultSets.isEmpty()) { |
| return currentResultSet; |
| } |
| MergedResult mergedResult = mergeQuery(getQueryResults(resultSets));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.html#L130">130</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.html#L68">68</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(databaseName), () -> new UnknownDatabaseException(databaseName)); |
| } |
| |
| @Override |
| public boolean next() throws SQLException { |
| return null != mergedResult && mergedResult.next(); |
| } |
| |
| @Override |
| public QueryResponseRow getRowData() throws SQLException { |
| List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size()); |
| for (int i = 0; i < queryHeaders.size(); i++) { |
| cells.add(new QueryResponseCell(queryHeaders.get(i).getColumnType(), mergedResult.getValue(i + 1, Object.class))); |
| } |
| return new QueryResponseRow(cells); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/condition/impl/EncryptBinaryCondition.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/condition/impl/EncryptBinaryCondition.html#L79">79</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/condition/impl/EncryptInCondition.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/condition/impl/EncryptInCondition.html#L71">71</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| } |
| |
| @Override |
| public List<Object> getValues(final List<Object> params) { |
| List<Object> result = new ArrayList<>(positionValueMap.values()); |
| for (Entry<Integer, Integer> entry : positionIndexMap.entrySet()) { |
| Object param = params.get(entry.getValue()); |
| if (entry.getKey() < result.size()) { |
| result.add(entry.getKey(), param); |
| } else { |
| result.add(param); |
| } |
| } |
| return result; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OpenGaussSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/OpenGaussSchemaMetaDataLoader.html#L111">111</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/PostgreSQLSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/PostgreSQLSchemaMetaDataLoader.html#L142">142</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>} |
| |
| 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 {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/QueryableRALBackendHandler.html#L130">130</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.html#L93">93</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.java</td> |
| <td>shardingsphere-proxy-backend-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/SQLRULBackendHandler.html#L68">68</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>ShardingSpherePreconditions.checkState(ProxyContext.getInstance().databaseExists(databaseName), () -> new UnknownDatabaseException(databaseName)); |
| } |
| |
| @Override |
| public boolean next() throws SQLException { |
| return null != mergedResult && mergedResult.next(); |
| } |
| |
| @Override |
| public QueryResponseRow getRowData() throws SQLException { |
| List<QueryResponseCell> cells = new ArrayList<>(queryHeaders.size()); |
| for (int i = 0; i < queryHeaders.size(); i++) { |
| cells.add(new QueryResponseCell(queryHeaders.get(i).getColumnType(), mergedResult.getValue(i + 1, Object.class))); |
| } |
| return new QueryResponseRow(cells); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/transaction/xa/jta/connection/dialect/MariaDBXAConnectionWrapper.java</td> |
| <td>shardingsphere-transaction-xa-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/transaction/xa/jta/connection/dialect/MariaDBXAConnectionWrapper.html#L33">33</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/transaction/xa/jta/connection/dialect/OpenGaussXAConnectionWrapper.java</td> |
| <td>shardingsphere-transaction-xa-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/transaction/xa/jta/connection/dialect/OpenGaussXAConnectionWrapper.html#L33">33</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/transaction/xa/jta/connection/dialect/OracleXAConnectionWrapper.java</td> |
| <td>shardingsphere-transaction-xa-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/transaction/xa/jta/connection/dialect/OracleXAConnectionWrapper.html#L33">33</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/transaction/xa/jta/connection/dialect/PostgreSQLXAConnectionWrapper.java</td> |
| <td>shardingsphere-transaction-xa-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/transaction/xa/jta/connection/dialect/PostgreSQLXAConnectionWrapper.html#L33">33</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public final class MariaDBXAConnectionWrapper 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.mariadb.jdbc.MariaDbConnection");</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L564">564</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L448">448</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L350">350</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L465">465</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.html#L100">100</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.html#L129">129</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public ASTNode visitCopyWithTableOrQuery(final CopyWithTableOrQueryContext ctx) { |
| PostgreSQLCopyStatement result = new PostgreSQLCopyStatement(); |
| if (null != ctx.qualifiedName()) { |
| result.setTableSegment((SimpleTableSegment) visit(ctx.qualifiedName())); |
| if (null != ctx.columnNames()) { |
| result.getColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.columnNames())).getValue()); |
| } |
| } |
| if (null != ctx.preparableStmt()) { |
| result.setPrepareStatementQuerySegment(extractPrepareStatementQuerySegmentFromPreparableStmt(ctx.preparableStmt())); |
| } |
| return result; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowEventsStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowEventsStatementAssert.html#L42">42</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowOpenTablesStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowOpenTablesStatementAssert.html#L42">42</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowTableStatusStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowTableStatusStatementAssert.html#L42">42</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowTablesStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowTablesStatementAssert.html#L42">42</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowTriggersStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dal/impl/ShowTriggersStatementAssert.html#L42">42</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>public static void assertIs(final SQLCaseAssertContext assertContext, final MySQLShowEventsStatement actual, final ShowEventsStatementTestCase expected) { |
| if (actual.getFromSchema().isPresent()) { |
| DatabaseAssert.assertIs(assertContext, actual.getFromSchema().get().getSchema(), expected.getFromSchema().getSchema()); |
| SQLSegmentAssert.assertIs(assertContext, actual.getFromSchema().get(), expected.getFromSchema()); |
| } |
| if (actual.getFilter().isPresent()) { |
| ShowFilterAssert.assertIs(assertContext, actual.getFilter().get(), expected.getFilter()); |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/H2SchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/H2SchemaMetaDataLoader.html#L74">74</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/metadata/database/schema/loader/metadata/dialect/SQLServerSchemaMetaDataLoader.html#L70">70</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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.singletonList(new SchemaMetaData(defaultSchemaName, tableMetaDataList)); |
| } |
| |
| private Map<String, Collection<ColumnMetaData>> loadColumnMetaDataMap(final Connection connection, final Collection<String> tables) throws SQLException {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.html#L70">70</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.html#L82">82</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>currentRuleConfig.getBroadcastTables().removeIf(each -> containsIgnoreCase(sqlStatement.getTables(), each)); |
| return isEmptyShardingTables(currentRuleConfig) && currentRuleConfig.getBroadcastTables().isEmpty() && isEmptyShardingStrategy(currentRuleConfig); |
| } |
| |
| private boolean isEmptyShardingTables(final ShardingRuleConfiguration currentRuleConfig) { |
| return currentRuleConfig.getTables().isEmpty() && currentRuleConfig.getAutoTables().isEmpty(); |
| } |
| |
| private boolean isEmptyShardingStrategy(final ShardingRuleConfiguration currentRuleConfig) { |
| return null == currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == currentRuleConfig.getDefaultTableShardingStrategy(); |
| } |
| |
| @Override |
| public Class<ShardingRuleConfiguration> getRuleConfigurationClass() { |
| return ShardingRuleConfiguration.class; |
| } |
| |
| @Override |
| public String getType() { |
| return DropBroadcastTableRuleStatement.class.getName();</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L236">236</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L153">153</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L111">111</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L196">196</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<ASTNode> { |
| |
| 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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDDLStatementVisitor.html#L244">244</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.html#L264">264</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L68">68</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>MySQLCreateTableStatement result = new MySQLCreateTableStatement(null != ctx.ifNotExists()); |
| 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); |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L959">959</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L926">926</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>(OpenGaussSelectStatement) visit(ctx.selectClauseN(1))); |
| result.setCombine(combineSegment); |
| return result; |
| } |
| return visit(ctx.selectWithParens()); |
| } |
| |
| 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; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L638">638</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L781">781</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>OpenGaussAlterViewStatement result = new OpenGaussAlterViewStatement(); |
| 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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.html#L689">689</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L315">315</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowColumnsMergedResult.html#L85">85</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/merge/dal/show/EncryptShowCreateTableMergedResult.html#L96">96</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return getOriginalValue(columnIndex, type); |
| } |
| |
| @Override |
| public final Object getCalendarValue(final int columnIndex, final Class<?> type, final Calendar calendar) throws SQLException { |
| throw new SQLFeatureNotSupportedException(""); |
| } |
| |
| @Override |
| public final InputStream getInputStream(final int columnIndex, final String type) throws SQLException { |
| throw new SQLFeatureNotSupportedException(""); |
| } |
| |
| @Override |
| public Reader getCharacterStream(final int columnIndex) throws SQLException { |
| throw new SQLFeatureNotSupportedException(""); |
| } |
| |
| protected abstract boolean nextValue() throws SQLException; |
| |
| protected abstract Object getOriginalValue(int columnIndex, Class<?> type) throws SQLException; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/merge/dql/EncryptMergedResult.html#L58">58</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/merge/dql/MaskMergedResult.html#L53">53</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return null == cipherValue ? null : encryptAlgorithm.get().decrypt(cipherValue, encryptContext.get()); |
| } |
| |
| @Override |
| public Object getCalendarValue(final int columnIndex, final Class<?> type, final Calendar calendar) throws SQLException { |
| return mergedResult.getCalendarValue(columnIndex, type, calendar); |
| } |
| |
| @Override |
| public InputStream getInputStream(final int columnIndex, final String type) throws SQLException { |
| return mergedResult.getInputStream(columnIndex, type); |
| } |
| |
| @Override |
| public Reader getCharacterStream(final int columnIndex) throws SQLException { |
| return mergedResult.getCharacterStream(columnIndex); |
| } |
| |
| @Override |
| public boolean wasNull() throws SQLException { |
| return mergedResult.wasNull(); |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyStatementUpdater.html#L69">69</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java</td> |
| <td>shardingsphere-sharding-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.html#L51">51</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>Optional<ShardingStrategyConfiguration> strategyConfig = getStrategyConfiguration(currentRuleConfig, sqlStatement.getDefaultType()); |
| ShardingSpherePreconditions.checkState(strategyConfig.isPresent(), |
| () -> new MissingRequiredRuleException(String.format("Default sharding %s strategy", sqlStatement.getDefaultType().toLowerCase()), databaseName)); |
| } |
| |
| private Optional<ShardingStrategyConfiguration> getStrategyConfiguration(final ShardingRuleConfiguration currentRuleConfig, final String type) { |
| ShardingStrategyConfiguration result = type.equalsIgnoreCase(ShardingStrategyLevelType.TABLE.name()) |
| ? currentRuleConfig.getDefaultTableShardingStrategy() |
| : currentRuleConfig.getDefaultDatabaseShardingStrategy(); |
| return Optional.ofNullable(result); |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/infra/database/metadata/dialect/MariaDBDataSourceMetaData.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/database/metadata/dialect/MariaDBDataSourceMetaData.html#L47">47</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/infra/database/metadata/dialect/MySQLDataSourceMetaData.java</td> |
| <td>shardingsphere-infra-common</td> |
| <td><a href="./xref/org/apache/shardingsphere/infra/database/metadata/dialect/MySQLDataSourceMetaData.html#L47">47</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public MariaDBDataSourceMetaData(final String url) { |
| JdbcUrl jdbcUrl = new StandardJdbcUrlParser().parse(url); |
| hostname = jdbcUrl.getHostname(); |
| port = -1 == jdbcUrl.getPort() ? DEFAULT_PORT : jdbcUrl.getPort(); |
| catalog = jdbcUrl.getDatabase(); |
| schema = null; |
| queryProperties = jdbcUrl.getQueryProperties(); |
| buildDefaultQueryProperties(); |
| } |
| |
| private void buildDefaultQueryProperties() { |
| defaultQueryProperties.setProperty("useServerPrepStmts", Boolean.TRUE.toString()); |
| defaultQueryProperties.setProperty("cachePrepStmts", Boolean.TRUE.toString()); |
| defaultQueryProperties.setProperty("prepStmtCacheSize", "200000");</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/ClusterContextManagerBuilder.html#L59">59</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mode/manager/cluster/NewClusterContextManagerBuilder.java</td> |
| <td>shardingsphere-cluster-mode-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mode/manager/cluster/NewClusterContextManagerBuilder.html#L62">62</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>registerOnline(persistService, registryCenter, param, result); |
| return result; |
| } |
| |
| private ClusterPersistRepository getClusterPersistRepository(final ClusterPersistRepositoryConfiguration config) { |
| Preconditions.checkNotNull(config, "Cluster persist repository configuration cannot be null."); |
| ClusterPersistRepository result = TypedSPILoader.getService(ClusterPersistRepository.class, config.getType(), config.getProps()); |
| result.init(config); |
| return result; |
| } |
| |
| private InstanceContext buildInstanceContext(final RegistryCenter registryCenter, final ContextManagerBuilderParameter param) { |
| return new InstanceContext(new ComputeNodeInstance(param.getInstanceMetaData()), new ClusterWorkerIdGenerator(registryCenter, param.getInstanceMetaData()), |
| param.getModeConfiguration(), new ClusterModeContextManager(), new GlobalLockContext(registryCenter.getGlobalLockPersistService()), registryCenter.getEventBusContext());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtils.java</td> |
| <td>shardingsphere-parser-sql-statement</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql/common/util/SQLUtils.html#L82">82</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sql/common/value/literal/impl/NumberLiteralValue.java</td> |
| <td>shardingsphere-parser-sql-statement</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql/common/value/literal/impl/NumberLiteralValue.html#L48">48</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/AlterLoginStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/AlterLoginStatementAssert.html#L45">45</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/CreateLoginStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/CreateLoginStatementAssert.html#L45">45</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/DropLoginStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dcl/impl/DropLoginStatementAssert.html#L45">45</a></td></tr> |
| <tr class="a"><td colspan='3'> |
| <div> |
| <pre>public static void assertIs(final SQLCaseAssertContext assertContext, final SQLServerAlterLoginStatement actual, final AlterLoginStatementTestCase 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()); |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/cdc/distsql/handler/query/ShowStreamingJobStatusExecutor.java</td> |
| <td>shardingsphere-data-pipeline-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/cdc/distsql/handler/query/ShowStreamingJobStatusExecutor.html#L43">43</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/migration/distsql/handler/query/ShowMigrationJobStatusExecutor.java</td> |
| <td>shardingsphere-data-pipeline-distsql-handler</td> |
| <td><a href="./xref/org/apache/shardingsphere/migration/distsql/handler/query/ShowMigrationJobStatusExecutor.html#L42">42</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>InventoryIncrementalJobAPI jobAPI = (InventoryIncrementalJobAPI) TypedSPILoader.getService(PipelineJobAPI.class, new CDCJobType().getTypeName()); |
| List<InventoryIncrementalJobItemInfo> jobItemInfos = jobAPI.getJobItemInfos(sqlStatement.getJobId()); |
| long currentTimeMillis = System.currentTimeMillis(); |
| return jobItemInfos.stream().map(each -> generateResultRow(each, currentTimeMillis)).collect(Collectors.toList()); |
| } |
| |
| private LocalDataQueryResultRow generateResultRow(final InventoryIncrementalJobItemInfo jobItemInfo, final long currentTimeMillis) { |
| InventoryIncrementalJobItemProgress jobItemProgress = jobItemInfo.getJobItemProgress(); |
| if (null == jobItemProgress) { |
| return new LocalDataQueryResultRow(jobItemInfo.getShardingItem(), "", "", "", "", "", "", jobItemInfo.getErrorMessage());</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1370">1370</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L1437">1437</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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.getParameterMarkerSegments().addAll(getParameterMarkerSegments()); |
| return result; |
| } |
| |
| @Override |
| public ASTNode visitSetAssignmentsClause(final SetAssignmentsClauseContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L249">249</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L265">265</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L249">249</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L298">298</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L723">723</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L724">724</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.html#L193">193</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L1047">1047</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>if (null != ctx.whereClause()) { |
| result.setWhere((WhereSegment) visit(ctx.whereClause())); |
| } |
| result.getParameterMarkerSegments().addAll(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 visitSelect(final SelectContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/merge/dql/EncryptAlgorithmMetaData.html#L68">68</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/mask/merge/dql/MaskAlgorithmMetaData.java</td> |
| <td>shardingsphere-mask-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/mask/merge/dql/MaskAlgorithmMetaData.html#L54">54</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public Optional<EncryptContext> findEncryptContext(final int columnIndex) { |
| Optional<ColumnProjection> columnProjection = findColumnProjection(columnIndex); |
| if (!columnProjection.isPresent()) { |
| return Optional.empty(); |
| } |
| TablesContext tablesContext = selectStatementContext.getTablesContext(); |
| String schemaName = tablesContext.getSchemaName().orElseGet(() -> DatabaseTypeEngine.getDefaultSchemaName(selectStatementContext.getDatabaseType(), database.getName())); |
| Map<String, String> expressionTableNames = tablesContext.findTableNamesByColumnProjection( |
| Collections.singletonList(columnProjection.get()), database.getSchema(schemaName));</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/shadow/route/engine/dml/ShadowDeleteStatementRoutingEngine.java</td> |
| <td>shardingsphere-shadow-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/shadow/route/engine/dml/ShadowDeleteStatementRoutingEngine.html#L52">52</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/shadow/route/engine/dml/ShadowUpdateStatementRoutingEngine.java</td> |
| <td>shardingsphere-shadow-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/shadow/route/engine/dml/ShadowUpdateStatementRoutingEngine.html#L58">58</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>ShadowExtractor.extractValues(each, parameters).map(values -> new ShadowColumnCondition(getSingleTableName(), shadowColumnName, values)).ifPresent(result::add); |
| } |
| return result; |
| } |
| |
| private Collection<ExpressionSegment> getWhereSegment() { |
| Collection<ExpressionSegment> result = new LinkedList<>(); |
| for (WhereSegment each : sqlStatementContext.getWhereSegments()) { |
| for (AndPredicate predicate : ExpressionExtractUtils.getAndPredicates(each.getExpr())) { |
| result.addAll(predicate.getPredicates()); |
| } |
| } |
| return result; |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptAssignmentTokenGenerator.html#L103">103</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertOnUpdateTokenGenerator.java</td> |
| <td>shardingsphere-encrypt-core</td> |
| <td><a href="./xref/org/apache/shardingsphere/encrypt/rewrite/token/generator/EncryptInsertOnUpdateTokenGenerator.html#L156">156</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>return result; |
| } |
| |
| private void addCipherColumn(final String tableName, final String columnName, final EncryptParameterAssignmentToken token) { |
| token.addColumnName(encryptRule.getCipherColumn(tableName, columnName)); |
| } |
| |
| private void addAssistedQueryColumn(final String tableName, final String columnName, final EncryptParameterAssignmentToken token) { |
| encryptRule.findAssistedQueryColumn(tableName, columnName).ifPresent(token::addColumnName); |
| } |
| |
| private void addLikeQueryColumn(final String tableName, final String columnName, final EncryptParameterAssignmentToken token) { |
| encryptRule.findLikeQueryColumn(tableName, columnName).ifPresent(token::addColumnName); |
| } |
| |
| private EncryptAssignmentToken generateLiteralSQLToken(final String schemaName, final String tableName, final AssignmentSegment assignmentSegment) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-mysql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/MySQLStatementVisitor.html#L834">834</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.html#L548">548</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.html#L441">441</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.html#L566">566</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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; |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.html#L326">326</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-oracle</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.html#L439">439</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>public ASTNode visitUpdateSpecification(final UpdateSpecificationContext ctx) { |
| if (null != ctx.dmlTableExprClause().dmlTableClause()) { |
| return visit(ctx.dmlTableExprClause().dmlTableClause()); |
| } |
| if (null != ctx.dmlTableExprClause().dmlSubqueryClause()) { |
| SubquerySegment subquerySegment = (SubquerySegment) visit(ctx.dmlTableExprClause().dmlSubqueryClause()); |
| return new SubqueryTableSegment(subquerySegment); |
| } |
| SubquerySegment subquerySegment = (SubquerySegment) visit(ctx.dmlTableExprClause().tableCollectionExpr()); |
| return new SubqueryTableSegment(subquerySegment); |
| } |
| |
| @Override |
| public ASTNode visitUpdateSetClause(final UpdateSetClauseContext ctx) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dml/impl/DeleteStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dml/impl/DeleteStatementAssert.html#L131">131</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dml/impl/UpdateStatementAssert.java</td> |
| <td>shardingsphere-it-parser</td> |
| <td><a href="./xref/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/dml/impl/UpdateStatementAssert.html#L94">94</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>Optional<LimitSegment> limitSegment = DeleteStatementHandler.getLimitSegment(actual); |
| 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()); |
| } |
| } |
| }</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/OpenGaussStatementVisitor.html#L706">706</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.html#L709">709</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>@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()) {</pre></div></td></tr></table> |
| <table border="0" class="bodyTable"> |
| <tr class="a"> |
| <th>File</th> |
| <th>Project</th> |
| <th>Line</th></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-opengauss</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.html#L295">295</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-postgresql</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.html#L368">368</a></td></tr> |
| <tr class="b"> |
| <td>org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sql92</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.html#L157">157</a></td></tr> |
| <tr class="a"> |
| <td>org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java</td> |
| <td>shardingsphere-parser-sql-sqlserver</td> |
| <td><a href="./xref/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.html#L228">228</a></td></tr> |
| <tr class="b"><td colspan='3'> |
| <div> |
| <pre>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) {</pre></div></td></tr></table></section> |
| </div> |
| </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| <div id="footer"> |
| <div class="xright"> |
| Copyright © 2023<a href="https://www.apache.org/">The Apache Software Foundation</a>. |
| . </div> |
| <div class="clear"> |
| <hr/> |
| </div> |
| </div> |
| </body> |
| </html> |