blob: a28be07f9e40aa8e85ed1029040f135d92c855e1 [file] [log] [blame]
<!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 &#x2013; 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&lt;ASTNode&gt; {
private final Collection&lt;ParameterMarkerSegment&gt; parameterMarkerSegments = new LinkedList&lt;&gt;();
@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&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;String&gt; 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&lt;String&gt; findBinaryOperator(final AExprContext ctx) {
if (null != ctx.IS()) {
return Optional.of(ctx.IS().getText());
}
if (null != ctx.ISNULL()) {
return Optional.of(&quot;IS&quot;);
}
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 &lt; 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 (&quot;IS&quot;.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, &quot;IS&quot;,
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&lt;ExpressionSegment&gt;) visit(ctx.exprList())).getValue());
return result;
}
@SuppressWarnings(&quot;unchecked&quot;)
@Override
public ASTNode visitExprList(final ExprListContext ctx) {
CollectionValue&lt;ExpressionSegment&gt; result = new CollectionValue&lt;&gt;();
if (null != ctx.exprList()) {
result.combine((CollectionValue&lt;ExpressionSegment&gt;) 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&lt;ExpressionSegment&gt; 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&lt;String&gt; dataTypeNames = new LinkedList&lt;&gt;();
for (int i = 0; i &lt; ctx.getChildCount(); i++) {
dataTypeNames.add(ctx.getChild(i).getText());
}
return new KeywordValue(String.join(&quot; &quot;, dataTypeNames));
}
@Override
public final ASTNode visitSortClause(final SortClauseContext ctx) {
Collection&lt;OrderByItemSegment&gt; items = new LinkedList&lt;&gt;();
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&lt;TerminalNode&gt; 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&lt;OrderByItemSegment&gt; items = new LinkedList&lt;&gt;();
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&lt;ExpressionSegment&gt; whenExprs = new LinkedList&lt;&gt;();
Collection&lt;ExpressionSegment&gt; thenExprs = new LinkedList&lt;&gt;();
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&lt;ExpressionSegment&gt; 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&lt;ExpressionSegment&gt; expressionSegments = getExpressionSegments(getTargetRuleContextFromParseTree(ctx, AExprContext.class));
result.getParameters().addAll(expressionSegments);
return result;
}
private &lt;T extends ParseTree&gt; Collection&lt;T&gt; getTargetRuleContextFromParseTree(final ParseTree parseTree, final Class&lt;? extends T&gt; clazz) {
Collection&lt;T&gt; result = new LinkedList&lt;&gt;();
for (int index = 0; index &lt; 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&lt;ExpressionSegment&gt; getExpressionSegments(final Collection&lt;AExprContext&gt; aExprContexts) {
Collection&lt;ExpressionSegment&gt; result = new LinkedList&lt;&gt;();
for (AExprContext each : aExprContexts) {
result.add((ExpressionSegment) visit(each));
}
return result;
}
@Override
public ASTNode visitAexprConst(final AexprConstContext ctx) {
LiteralValue&lt;?&gt; 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() &amp;&amp; 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(&quot;unchecked&quot;)
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 = &quot;&quot;;
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(),
ctx.NOT().getSymbol().getStopIndex()))).concat(&quot; &quot;);
}
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 = &quot;IS&quot;;
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() ? &quot;NOT LIKE&quot; : &quot;LIKE&quot;;
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&lt;ColumnSegment&gt; generateUsingColumn(final NameListContext ctx) {
List&lt;ColumnSegment&gt; result = new ArrayList&lt;&gt;();
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() &amp;&amp; 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&lt;AddColumnDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();
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 -&gt; null != each.columnConstraintOption() &amp;&amp; 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(&quot;unchecked&quot;)
@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&lt;ColumnSegment&gt;) 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(&quot;unchecked&quot;)
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
boolean containsCascade = null != ctx.dropTableOpt() &amp;&amp; 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&lt;String&gt; schemaNames) {
DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
schemaNames.forEach(each -&gt; databaseMetaDataService.dropSchema(databaseName, each));
}
@Override
public void alterSchemaMetaData(final AlterSchemaMetaDataPOJO alterSchemaMetaDataPOJO) {
String databaseName = alterSchemaMetaDataPOJO.getDatabaseName();
String schemaName = alterSchemaMetaDataPOJO.getSchemaName();
Map&lt;String, ShardingSphereTable&gt; tables = alterSchemaMetaDataPOJO.getAlteredTables().stream().collect(Collectors.toMap(ShardingSphereTable::getName, table -&gt; table));
Map&lt;String, ShardingSphereView&gt; views = alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName, view -&gt; view));
DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, schemaName, tables);
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, schemaName, views);
alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -&gt; databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, schemaName, each));
alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -&gt; databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName, schemaName, each));
}
@Override
public void registerStorageUnits(final String databaseName, final Map&lt;String, DataSourceProperties&gt; toBeRegisterStorageUnitProps) {
contextManager.getMetaDataContexts().getPersistService().getDataSourceService().append(databaseName, toBeRegisterStorageUnitProps);
}
@Override
public void alterStorageUnits(final String databaseName, final Map&lt;String, DataSourceProperties&gt; toBeUpdatedStorageUnitProps) {
contextManager.getMetaDataContexts().getPersistService().getDataSourceService().append(databaseName, toBeUpdatedStorageUnitProps);
}
@Override
public void unregisterStorageUnits(final String databaseName, final Collection&lt;String&gt; toBeDroppedStorageUnitNames) {
contextManager.getMetaDataContexts().getPersistService().getDataSourceService().persist(databaseName,
getToBeReversedDataSourcePropsMap(contextManager.getMetaDataContexts().getPersistService().getDataSourceService().load(databaseName), toBeDroppedStorageUnitNames));
}
private Map&lt;String, DataSourceProperties&gt; getToBeReversedDataSourcePropsMap(final Map&lt;String, DataSourceProperties&gt; dataSourcePropsMap, final Collection&lt;String&gt; toBeDroppedResourceNames) {
return dataSourcePropsMap.entrySet().stream().filter(entry -&gt; !toBeDroppedResourceNames.contains(entry.getKey())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
}
@Override
public void alterRuleConfiguration(final String databaseName, final Collection&lt;RuleConfiguration&gt; ruleConfigs) {
contextManager.getMetaDataContexts().getPersistService().getDatabaseRulePersistService().persist(databaseName, ruleConfigs);
}
@Override
public void alterGlobalRuleConfiguration(final Collection&lt;RuleConfiguration&gt; 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(&quot;previous&quot;);
}
@Override
public boolean isBeforeFirst() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;isBeforeFirst&quot;);
}
@Override
public boolean isAfterLast() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;isAfterLast&quot;);
}
@Override
public boolean isFirst() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;isFirst&quot;);
}
@Override
public boolean isLast() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;isLast&quot;);
}
@Override
public void beforeFirst() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;beforeFirst&quot;);
}
@Override
public void afterLast() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;afterLast&quot;);
}
@Override
public boolean first() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;first&quot;);
}
@Override
public boolean last() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;last&quot;);
}
@Override
public boolean absolute(final int row) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;absolute&quot;);
}
@Override
public boolean relative(final int rows) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;relative&quot;);
}
@Override
public int getRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getRow&quot;);
}
@Override
public final void insertRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;insertRow&quot;);
}
@Override
public final void updateRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;updateRow&quot;);
}
@Override
public final void deleteRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;deleteRow&quot;);
}
@Override
public final void refreshRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;refreshRow&quot;);
}
@Override
public final void cancelRowUpdates() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;cancelRowUpdates&quot;);
}
@Override
public final void moveToInsertRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;moveToInsertRow&quot;);
}
@Override
public final void moveToCurrentRow() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;moveToCurrentRow&quot;);
}
@Override
public final boolean rowInserted() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;rowInserted&quot;);
}
@Override
public final boolean rowUpdated() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;rowUpdated&quot;);
}
@Override
public final boolean rowDeleted() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;rowDeleted&quot;);
}
@Override
public final String getCursorName() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getCursorName&quot;);
}
@Override
public final int getHoldability() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getHoldability&quot;);
}
@Override
public final NClob getNClob(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getNClob&quot;);
}
@Override
public final NClob getNClob(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getNClob&quot;);
}
@Override
public final Reader getNCharacterStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getNCharacterStream&quot;);
}
@Override
public final Reader getNCharacterStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getNCharacterStream&quot;);
}
@Override
public final Ref getRef(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getRef&quot;);
}
@Override
public final Ref getRef(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getRef&quot;);
}
@Override
public final RowId getRowId(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getRowId&quot;);
}
@Override
public final RowId getRowId(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getRowId&quot;);
}
@Override
public &lt;T&gt; T getObject(final int columnIndex, final Class&lt;T&gt; type) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getObject with type&quot;);
}
@Override
public &lt;T&gt; T getObject(final String columnLabel, final Class&lt;T&gt; type) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getObject with type&quot;);
}
@Override
public final Object getObject(final String columnLabel, final Map&lt;String, Class&lt;?&gt;&gt; map) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getObject with map&quot;);
}
@Override
public final Object getObject(final int columnIndex, final Map&lt;String, Class&lt;?&gt;&gt; map) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getObject with map&quot;);
}
}</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&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
if (null != ctx.insertColumnList()) {
result.getValue().addAll(((CollectionValue&lt;ColumnSegment&gt;) 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&lt;InsertValuesSegment&gt; createInsertValuesSegments(final ValuesClauseContext ctx) {
Collection&lt;InsertValuesSegment&gt; result = new LinkedList&lt;&gt;();
if (null != ctx.valuesClause()) {
Collection&lt;InsertValuesSegment&gt; expressions = createInsertValuesSegments(ctx.valuesClause());
result.addAll(expressions);
}
Collection&lt;ExpressionSegment&gt; expressions = createInsertValuesSegments(ctx.exprList());
InsertValuesSegment insertValuesSegment = new InsertValuesSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), (List&lt;ExpressionSegment&gt;) expressions);
result.add(insertValuesSegment);
return result;
}
private Collection&lt;ExpressionSegment&gt; createInsertValuesSegments(final ExprListContext ctx) {
Collection&lt;ExpressionSegment&gt; result = new LinkedList&lt;&gt;();
if (null != ctx.exprList()) {
Collection&lt;ExpressionSegment&gt; tmpResult = createInsertValuesSegments(ctx.exprList());
result.addAll(tmpResult);
}
ExpressionSegment expr = (ExpressionSegment) visit(ctx.aExpr());
result.add(expr);
return result;
}
private Collection&lt;AssignmentSegment&gt; generateAssignmentSegments(final SetClauseListContext ctx) {
Collection&lt;AssignmentSegment&gt; result = new LinkedList&lt;&gt;();
if (null != ctx.setClauseList()) {
Collection&lt;AssignmentSegment&gt; 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&lt;ColumnSegment&gt; columnSegments = new LinkedList&lt;&gt;();
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&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;String, DatabaseConfiguration&gt; databaseConfigs, final MetaDataPersistService persistService) {
Map&lt;String, DataSource&gt; effectiveDataSources = persistService.getEffectiveDataSources(databaseName, databaseConfigs);
Collection&lt;RuleConfiguration&gt; databaseRuleConfigs = persistService.getDatabaseRulePersistService().load(databaseName);
return new DataSourceProvidedDatabaseConfiguration(effectiveDataSources, databaseRuleConfigs);
}
private static void checkDataSourceStates(final Map&lt;String, DatabaseConfiguration&gt; databaseConfigs, final Map&lt;String, StorageNodeDataSource&gt; storageNodes, final boolean force) {
Map&lt;String, DataSourceState&gt; storageDataSourceStates = getStorageDataSourceStates(storageNodes);
databaseConfigs.forEach((key, value) -&gt; {
if (!value.getDataSources().isEmpty()) {
DataSourceStateManager.getInstance().initStates(key, value.getDataSources(), storageDataSourceStates, force);
}
});
}
private static Map&lt;String, DataSourceState&gt; getStorageDataSourceStates(final Map&lt;String, StorageNodeDataSource&gt; storageDataSourceStates) {
Map&lt;String, DataSourceState&gt; result = new HashMap&lt;&gt;(storageDataSourceStates.size(), 1F);
storageDataSourceStates.forEach((key, value) -&gt; {
List&lt;String&gt; values = Splitter.on(&quot;.&quot;).splitToList(key);
Preconditions.checkArgument(3 == values.size(), &quot;Illegal data source of storage node.&quot;);
String databaseName = values.get(0);
String dataSourceName = values.get(2);
result.put(databaseName + &quot;.&quot; + 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&lt;String, ? extends DatabaseConfiguration&gt; 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 -&gt; each.getSchemas()
.forEach((schemaName, schema) -&gt; metaDataContexts.getPersistService().getDatabaseMetaDataService().persist(each.getName(), schemaName, schema)));
metaDataContexts.getShardingSphereData().getDatabaseData().forEach((databaseName, databaseData) -&gt; databaseData.getSchemaData().forEach((schemaName, schemaData) -&gt; 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(&quot;FunctionCallContext must have aggregationFunction, regularFunction or specialFunction.&quot;);
}
@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&lt;ExpressionSegment&gt; getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection&lt;ExpressionSegment&gt; result = new LinkedList&lt;&gt;();
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 &lt; 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&lt;RuleConfiguration&gt; 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&lt;String, DataSource&gt; dataSources, final Collection&lt;ShardingSphereRule&gt; rules) {
Map&lt;String, DataSourceProperties&gt; dataSourcePropertiesMap = getDataSourcePropertiesMap(databaseConfigs.getDataSources());
if (dataSourcePropertiesMap.isEmpty() &amp;&amp; databaseConfigs.getRuleConfigurations().isEmpty()) {
databaseMetaDataService.addDatabase(databaseName);
} else {
dataSourceService.persist(databaseName, getDataSourcePropertiesMap(databaseConfigs.getDataSources()));
databaseRulePersistService.persist(databaseName, databaseConfigs.getRuleConfigurations());
}
}
private Map&lt;String, DataSourceProperties&gt; getDataSourcePropertiesMap(final Map&lt;String, DataSource&gt; dataSourceMap) {
Map&lt;String, DataSourceProperties&gt; result = new LinkedHashMap&lt;&gt;(dataSourceMap.size(), 1F);
for (Entry&lt;String, DataSource&gt; 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&lt;String, DataSource&gt; getEffectiveDataSources(final String databaseName, final Map&lt;String, ? extends DatabaseConfiguration&gt; databaseConfigs) {
Map&lt;String, DataSourceProperties&gt; persistedDataPropsMap = dataSourceService.load(databaseName);
return databaseConfigs.containsKey(databaseName)
? mergeEffectiveDataSources(persistedDataPropsMap, databaseConfigs.get(databaseName).getDataSources())
: DataSourcePoolCreator.create(persistedDataPropsMap);
}
private Map&lt;String, DataSource&gt; mergeEffectiveDataSources(final Map&lt;String, DataSourceProperties&gt; persistedDataSourcePropsMap, final Map&lt;String, DataSource&gt; localConfiguredDataSources) {
Map&lt;String, DataSource&gt; result = new LinkedHashMap&lt;&gt;(persistedDataSourcePropsMap.size(), 1F);
for (Entry&lt;String, DataSourceProperties&gt; 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 = &quot;&quot;;
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(),
ctx.NOT().getSymbol().getStopIndex()))).concat(&quot; &quot;);
}
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 = &quot;IS&quot;;
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, &quot;openGauss&quot;), comQueryPacket.getSQL(), connectionSession);
}
@Override
public Collection&lt;DatabasePacket&gt; 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&lt;PostgreSQLColumnDescription&gt; createColumnDescriptions(final QueryResponseHeader queryResponseHeader) {
Collection&lt;PostgreSQLColumnDescription&gt; result = new LinkedList&lt;&gt;();
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&lt;DatabasePacket&gt; 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(&quot;&quot;), updateResponseHeader.getUpdateCount()));
}
private Collection&lt;DatabasePacket&gt; createParameterStatusResponse(final SetStatement sqlStatement) {
Collection&lt;DatabasePacket&gt; result = new ArrayList&lt;&gt;(2);
result.add(new PostgreSQLCommandCompletePacket(&quot;SET&quot;, 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&lt;AssignmentSegment&gt; assignments = new LinkedList&lt;&gt;();
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&lt;ExpressionSegment&gt; segments = new LinkedList&lt;&gt;();
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&lt;ColumnSegment&gt; columnSegments = new LinkedList&lt;&gt;();
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&lt;AlterDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();
if (null != ctx.alterTableActions()) {
result.getValue().addAll(ctx.alterTableActions().alterTableAction().stream().flatMap(each -&gt; getAlterDefinitionSegments(each).stream()).collect(Collectors.toList()));
}
if (null != ctx.renameTableSpecification()) {
result.getValue().add((RenameTableDefinitionSegment) visit(ctx.renameTableSpecification()));
}
return result;
}
@SuppressWarnings(&quot;unchecked&quot;)
private Collection&lt;AlterDefinitionSegment&gt; getAlterDefinitionSegments(final AlterTableActionContext ctx) {
Collection&lt;AlterDefinitionSegment&gt; result = new LinkedList&lt;&gt;();
if (null != ctx.addColumnSpecification()) {
result.addAll(((CollectionValue&lt;AddColumnDefinitionSegment&gt;) visit(ctx.addColumnSpecification())).getValue());
}
if (null != ctx.addConstraintSpecification() &amp;&amp; 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&lt;RawQueryResultColumnMetaData&gt; columns = new ArrayList&lt;&gt;();
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Db&quot;, &quot;Db&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 255, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Name&quot;, &quot;Name&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 255, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Type&quot;, &quot;Type&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 64, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Definer&quot;, &quot;Definer&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 64, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Modified&quot;, &quot;Modified&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 64, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Created&quot;, &quot;Created&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 64, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Security_type&quot;, &quot;Security_type&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 64, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Comment&quot;, &quot;Comment&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 120, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;character_set_client&quot;, &quot;character_set_client&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 20, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;collation_connection&quot;, &quot;collation_connection&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 20, 0));
columns.add(new RawQueryResultColumnMetaData(&quot;&quot;, &quot;Database_Collation&quot;, &quot;Database_Collation&quot;, Types.VARCHAR, &quot;VARCHAR&quot;, 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&lt;ASTNode&gt; {
private final Collection&lt;ParameterMarkerSegment&gt; parameterMarkerSegments = new LinkedList&lt;&gt;();
@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(&quot;Literals must have string, number, dateTime, hex, bit, boolean or null.&quot;);
}
@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 &lt;T&gt; type of field value
* @return field value
* @throws IllegalStateException illegal state exception
*/
public static &lt;T&gt; T getFieldValue(final Object target, final String fieldName) {
Optional&lt;Field&gt; field = findField(fieldName, target.getClass());
if (field.isPresent()) {
return getFieldValue(target, field.get());
}
throw new IllegalStateException(String.format(&quot;Can not find field name `%s` in class %s.&quot;, fieldName, target.getClass()));
}
@SuppressWarnings(&quot;unchecked&quot;)
@SneakyThrows(IllegalAccessException.class)
private static &lt;T&gt; 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&lt;Field&gt; findField(final String fieldName, final Class&lt;?&gt; targetClass) {
Class&lt;?&gt; 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 &lt;T&gt; type of invoke result
* @return invoke result
*/
@SuppressWarnings(&quot;unchecked&quot;)
@SneakyThrows(ReflectiveOperationException.class)
public static &lt;T&gt; 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&lt;ExpressionSegment&gt; getExpressions(final AggregationFunctionContext ctx) {
if (null == ctx.expr()) {
return Collections.emptyList();
}
Collection&lt;ExpressionSegment&gt; result = new LinkedList&lt;&gt;();
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 &lt; 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 = &quot;&quot;;
if (null != ctx.NOT()) {
rightText = rightText.concat(ctx.start.getInputStream().getText(new Interval(ctx.NOT().getSymbol().getStartIndex(),
ctx.NOT().getSymbol().getStopIndex()))).concat(&quot; &quot;);
}
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 = &quot;IS&quot;;
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&lt;ExpressionSegment&gt; expressionSegments = ctx.expr().stream().map(each -&gt; (ExpressionSegment) visit(each)).collect(Collectors.toList());
result.getParameters().addAll(expressionSegments);
return result;
}
@Override
public final ASTNode visitDataTypeName(final DataTypeNameContext ctx) {
Collection&lt;String&gt; dataTypeNames = new LinkedList&lt;&gt;();
for (int i = 0; i &lt; ctx.getChildCount(); i++) {
dataTypeNames.add(ctx.getChild(i).getText());
}
return new KeywordValue(String.join(&quot; &quot;, dataTypeNames));
}
// TODO :FIXME, sql case id: insert_with_str_to_date
private void calculateParameterCount(final Collection&lt;ExprContext&gt; exprContexts) {
for (ExprContext each : exprContexts) {
visit(each);
}
}
@Override
public final ASTNode visitOrderByClause(final OrderByClauseContext ctx) {
Collection&lt;OrderByItemSegment&gt; items = new LinkedList&lt;&gt;();
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() &amp;&amp; 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,
() -&gt; new ProtocolViolationException(&quot;password&quot;, 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&lt;String&gt; logicDataSourceNames, final String schemaName,
final String tableName, final ConfigurationProperties props) throws SQLException {
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(new LinkedList&lt;&gt;(database.getRuleMetaData().getRules()));
if (!containsInImmutableDataNodeContainedRule(tableName, database)) {
ruleMetaData.findRules(MutableDataNodeRule.class).forEach(each -&gt; each.put(logicDataSourceNames.iterator().next(), schemaName, tableName));
}
GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getProtocolType(),
database.getResourceMetaData().getStorageTypes(), database.getResourceMetaData().getDataSources(), ruleMetaData.getRules(), props, schemaName);
Map&lt;String, ShardingSphereSchema&gt; schemaMap = GenericSchemaBuilder.build(Collections.singletonList(tableName), material);
return Optional.ofNullable(schemaMap.get(schemaName)).map(optional -&gt; optional.getTable(tableName))
.orElseGet(() -&gt; 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 -&gt; !(each instanceof MutableDataNodeRule)).anyMatch(each -&gt; 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(&quot;unchecked&quot;)
public ASTNode visitAnyName(final AnyNameContext ctx) {
CollectionValue&lt;NameSegment&gt; result = new CollectionValue&lt;&gt;();
if (null != ctx.attrs()) {
result.combine((CollectionValue&lt;NameSegment&gt;) 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(&quot;unchecked&quot;)
public ASTNode visitAttrs(final AttrsContext ctx) {
CollectionValue&lt;NameSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;NameSegment&gt;) 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&lt;String&gt; inUsedEncryptors = currentRuleConfig.getTables().stream().flatMap(each -&gt; each.getColumns().stream()).map(optional -&gt; optional.getCipher().getEncryptorName())
.collect(Collectors.toSet());
inUsedEncryptors.addAll(currentRuleConfig.getTables().stream().flatMap(each -&gt; each.getColumns().stream())
.map(optional -&gt; optional.getAssistedQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse(&quot;&quot;))
.collect(Collectors.toSet()));
inUsedEncryptors.addAll(currentRuleConfig.getTables().stream().flatMap(each -&gt; each.getColumns().stream())
.map(optional -&gt; optional.getLikeQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse(&quot;&quot;))
.collect(Collectors.toSet()));
Collection&lt;String&gt; unusedEncryptors = currentRuleConfig.getEncryptors().keySet().stream().filter(each -&gt; !inUsedEncryptors.contains(each)).collect(Collectors.toSet());
unusedEncryptors.forEach(each -&gt; currentRuleConfig.getEncryptors().remove(each));
}
@Override
public Class&lt;EncryptRuleConfiguration&gt; 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&lt;String&gt; result = new HashSet&lt;&gt;();
try (PreparedStatement preparedStatement = connection.prepareStatement(getPrimaryKeyMetaDataSQL(schemaNames)); ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String schemaName = resultSet.getString(&quot;table_schema&quot;);
String tableName = resultSet.getString(&quot;table_name&quot;);
String columnName = resultSet.getString(&quot;column_name&quot;);
result.add(schemaName + &quot;,&quot; + tableName + &quot;,&quot; + columnName);
}
}
return result;
}
private String getPrimaryKeyMetaDataSQL(final Collection&lt;String&gt; schemaNames) {
return String.format(PRIMARY_KEY_META_DATA_SQL, schemaNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;)));
}
private ColumnMetaData loadColumnMetaData(final Map&lt;String, Integer&gt; dataTypeMap, final Collection&lt;String&gt; primaryKeys, final ResultSet resultSet) throws SQLException {
String schemaName = resultSet.getString(&quot;table_schema&quot;);
String tableName = resultSet.getString(&quot;table_name&quot;);
String columnName = resultSet.getString(&quot;column_name&quot;);
String dataType = resultSet.getString(&quot;udt_name&quot;);
boolean isPrimaryKey = primaryKeys.contains(schemaName + &quot;,&quot; + tableName + &quot;,&quot; + columnName);
String columnDefault = resultSet.getString(&quot;column_default&quot;);
boolean generated = null != columnDefault &amp;&amp; columnDefault.startsWith(&quot;nextval(&quot;);
// 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&lt;TableMetaData&gt; createTableMetaDataList(final Multimap&lt;String, IndexMetaData&gt; tableIndexMetaDataMap, final Multimap&lt;String, ColumnMetaData&gt; 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&lt;SimpleTableSegment&gt;) visit(ctx.qualifiedNameList())).getValue()));
return result;
}
private Collection&lt;IndexSegment&gt; createIndexSegments(final Collection&lt;SimpleTableSegment&gt; tableSegments) {
Collection&lt;IndexSegment&gt; result = new LinkedList&lt;&gt;();
for (SimpleTableSegment each : tableSegments) {
result.add(createIndexSegment(each));
}
return result;
}
@Override
public ASTNode visitIndexNames(final IndexNamesContext ctx) {
CollectionValue&lt;IndexSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;SimpleTableSegment&gt; tableSegments = new LinkedList&lt;&gt;();
for (int i = 0; i &lt; ctx.tableNameClause().size(); i++) {
tableSegments.add((SimpleTableSegment) visit(ctx.tableNameClause(i)));
}
CollectionValue&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;String, Multimap&lt;String, IndexMetaData&gt;&gt; loadIndexMetaDataMap(final Connection connection, final Collection&lt;String&gt; schemaNames) throws SQLException {
Map&lt;String, Multimap&lt;String, IndexMetaData&gt;&gt; result = new LinkedHashMap&lt;&gt;();
try (PreparedStatement preparedStatement = connection.prepareStatement(getIndexMetaDataSQL(schemaNames)); ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String schemaName = resultSet.getString(&quot;schemaname&quot;);
String tableName = resultSet.getString(&quot;tablename&quot;);
String indexName = resultSet.getString(&quot;indexname&quot;);
Multimap&lt;String, IndexMetaData&gt; indexMetaDataMap = result.computeIfAbsent(schemaName, key -&gt; LinkedHashMultimap.create());
indexMetaDataMap.put(tableName, new IndexMetaData(indexName));
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection&lt;String&gt; schemaNames) {
return String.format(BASIC_INDEX_META_DATA_SQL, schemaNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;)));
}
private Map&lt;String, Multimap&lt;String, ColumnMetaData&gt;&gt; loadColumnMetaDataMap(final Connection connection, final Collection&lt;String&gt; tables,
final Collection&lt;String&gt; schemaNames) throws SQLException {
Map&lt;String, Multimap&lt;String, ColumnMetaData&gt;&gt; result = new LinkedHashMap&lt;&gt;();</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&lt;AlterDefinitionSegment&gt;) 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&lt;ExpressionSegment&gt; expressionSegments = ctx.expr().stream().map(each -&gt; (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&lt;TerminalNode&gt; 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(&quot;Literals must have string, number, dateTime, hex, bit, boolean or null.&quot;);
}
@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() &amp;&amp; !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&lt;CreateDefinitionSegment&gt; createDefinitions = (CollectionValue&lt;CreateDefinitionSegment&gt;) 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&lt;CreateDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();
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(&quot;unchecked&quot;)
@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&lt;TableRuleSegment&gt; 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&lt;AutoTableRuleSegment&gt; actual, final List&lt;ExpectedAutoTableRule&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual sharding auto table rule should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual sharding auto table rule should exist.&quot;));
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&lt;TableRuleSegment&gt; actual, final List&lt;ExpectedTableRule&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual sharding table rule should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual sharding table rule should exist.&quot;));
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&lt;Object, String&gt; {
private static final String FROM_X = &quot;from-x&quot;;
private static final String TO_Y = &quot;to-y&quot;;
private static final String REPLACE_CHAR = &quot;replace-char&quot;;
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 &lt;= toY, () -&gt; new MaskAlgorithmInitializationException(getType(), &quot;fromX must be less than or equal to toY&quot;));
}
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&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;NameSegment&gt; nameSegmentIterator) {
Optional&lt;NameSegment&gt; tableName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
tableName.ifPresent(optional -&gt; statement.setTable(new SimpleTableSegment(new TableNameSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier()))));
Optional&lt;NameSegment&gt; schemaName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
schemaName.ifPresent(optional -&gt; statement.getTable().setOwner(new OwnerSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
Optional&lt;NameSegment&gt; databaseName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
databaseName.ifPresent(optional -&gt; statement.getTable().getOwner()
.ifPresent(owner -&gt; 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&lt;Object, String&gt; {
private static final String FIRST_N = &quot;first-n&quot;;
private static final String LAST_M = &quot;last-m&quot;;
private static final String REPLACE_CHAR = &quot;replace-char&quot;;
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(&quot;getAsciiStream&quot;);
}
@Override
public final InputStream getAsciiStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getAsciiStream&quot;);
}
@Override
public final InputStream getUnicodeStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getUnicodeStream&quot;);
}
@Override
public final InputStream getUnicodeStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getUnicodeStream&quot;);
}
@Override
public final InputStream getBinaryStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getBinaryStream&quot;);
}
@Override
public final InputStream getBinaryStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getBinaryStream&quot;);
}
@Override
public final SQLWarning getWarnings() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getWarnings&quot;);
}
@Override
public final void clearWarnings() throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;clearWarnings&quot;);
}
@Override
public final Reader getCharacterStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getCharacterStream&quot;);
}
@Override
public final Reader getCharacterStream(final String columnLabel) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;getCharacterStream&quot;);
}
@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(&quot;`%s`'s default sharding strategy segment assertion error: &quot;, actual.getClass().getSimpleName())),
actual.getDefaultType(), is(expected.getStrategy().getDefaultType()));
assertThat(assertContext.getText(String.format(&quot;`%s`'s default sharding strategy segment assertion error: &quot;, actual.getClass().getSimpleName())),
actual.getShardingColumn(), is(expected.getStrategy().getShardingColumn()));
assertThat(assertContext.getText(String.format(&quot;`%s`'s default sharding strategy segment assertion error: &quot;, actual.getClass().getSimpleName())),
actual.getStrategyType(), is(expected.getStrategy().getStrategyType()));
if (!&quot;none&quot;.equalsIgnoreCase(actual.getStrategyType())) {
assertThat(assertContext.getText(String.format(&quot;`%s`'s default sharding strategy segment assertion error: &quot;, 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)
&amp;&amp; PostgreSQLCommandPacketType.SYNC_COMMAND != commandPacketType &amp;&amp; PostgreSQLCommandPacketType.FLUSH_COMMAND != commandPacketType;
}
private void handlePendingMessages(final ChannelHandlerContext context, final ByteBuf in, final List&lt;Object&gt; 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&lt;DataNodeContainedRule&gt; dataNodeContainedRule = getDataNodeContainedRuleForShardingRule(ruleMetaData.findRules(DataNodeContainedRule.class));
Collection&lt;ColumnContainedRule&gt; columnContainedRules = ruleMetaData.findRules(ColumnContainedRule.class);
for (String each : sqlStatementContext.getTablesContext().getTableNames()) {
if ((!dataNodeContainedRule.isPresent() || !dataNodeContainedRule.get().getAllTables().contains(each)) &amp;&amp; !containsInColumnContainedRule(each, columnContainedRules)) {
continue;
}
return false;
}
return true;
}
private Optional&lt;DataNodeContainedRule&gt; getDataNodeContainedRuleForShardingRule(final Collection&lt;DataNodeContainedRule&gt; dataNodeContainedRules) {
for (DataNodeContainedRule each : dataNodeContainedRules) {
if (!(each instanceof MutableDataNodeRule)) {
return Optional.of(each);
}
}
return Optional.empty();
}
private boolean containsInColumnContainedRule(final String tableName, final Collection&lt;ColumnContainedRule&gt; 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&lt;AssignmentSegment&gt; assignments = new LinkedList&lt;&gt;();
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&lt;ExpressionSegment&gt; segments = new LinkedList&lt;&gt;();
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 &lt; 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&lt;ASTNode&gt; {
private final Collection&lt;ParameterMarkerSegment&gt; parameterMarkerSegments = new LinkedList&lt;&gt;();
@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&lt;InsertValuesSegment&gt; createInsertValuesSegments(final Collection&lt;AssignmentValuesContext&gt; 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&lt;CreateDefinitionSegment&gt; createDefinitions = (CollectionValue&lt;CreateDefinitionSegment&gt;) 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&lt;CreateDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();
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 &amp; 1), &quot;Illegal hex data `%s`&quot;, hexString);
if (0 == dataLength) {
return new byte[0];
}
byte[] result = new byte[dataLength &gt;&gt;&gt; 1];
for (int i = 0; i &lt; dataLength; i += 2) {
result[i &gt;&gt;&gt; 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 &amp;&amp; -1 != secondHexChar, &quot;Illegal hex byte `%s` in index `%d`&quot;, hexString, index);
return (byte) ((firstHexChar &lt;&lt; 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() ? &quot;NOT LIKE&quot; : &quot;LIKE&quot;;
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&lt;AlterDefinitionSegment&gt;) 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(&quot;unchecked&quot;)
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue&lt;AlterDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;Object&gt; out) {
int readerIndex = in.readerIndex();
if (in.readableBytes() == SSL_REQUEST_PAYLOAD_LENGTH &amp;&amp; SSL_REQUEST_PAYLOAD_LENGTH == in.getInt(readerIndex) &amp;&amp; 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(&quot;Can not find field name `%s` in class %s.&quot;, fieldName, target.getClass()));
}
@SuppressWarnings(&quot;unchecked&quot;)
@SneakyThrows(IllegalAccessException.class)
private static &lt;T&gt; 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&lt;Field&gt; findField(final String fieldName, final Class&lt;?&gt; targetClass) {
Class&lt;?&gt; 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 &lt;T&gt; type of invoke result
* @return invoke result
*/
@SuppressWarnings(&quot;unchecked&quot;)
@SneakyThrows(ReflectiveOperationException.class)
public static &lt;T&gt; 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 &lt;&lt; 16) + 5679;
private static final int MESSAGE_TYPE_LENGTH = 1;
private static final int PAYLOAD_LENGTH = 4;
private boolean startupPhase = true;
private final List&lt;ByteBuf&gt; pendingMessages = new LinkedList&lt;&gt;();
@Override
public boolean isValidHeader(final int readableBytes) {
return readableBytes &gt;= (startupPhase ? 0 : MESSAGE_TYPE_LENGTH) + PAYLOAD_LENGTH;
}
@Override
public void decode(final ChannelHandlerContext context, final ByteBuf in, final List&lt;Object&gt; out) {
while (isValidHeader(in.readableBytes())) {
if (startupPhase) {
handleStartupPhase(in, out);
return;
}
int payloadLength = in.getInt(in.readerIndex() + 1);
if (in.readableBytes() &lt; 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&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;T extends SQLStatement&gt; 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&lt;DatabaseSegment&gt; 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), () -&gt; 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&lt;IdentifierValue&gt;) visit(ctx.nameList())).getValue());
result.setContainsCascade(null != ctx.dropBehavior() &amp;&amp; null != ctx.dropBehavior().CASCADE());
return result;
}
@SuppressWarnings(&quot;unchecked&quot;)
@Override
public ASTNode visitNameList(final NameListContext ctx) {
CollectionValue&lt;IdentifierValue&gt; result = new CollectionValue&lt;&gt;();
if (null != ctx.nameList()) {
result.combine((CollectionValue&lt;IdentifierValue&gt;) 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&lt;ColumnContainedRule&gt; columnContainedRules = ruleMetaData.findRules(ColumnContainedRule.class);
for (String each : sqlStatementContext.getTablesContext().getTableNames()) {
if ((!dataNodeContainedRule.isPresent() || !dataNodeContainedRule.get().getAllTables().contains(each)) &amp;&amp; !containsInColumnContainedRule(each, columnContainedRules)) {
continue;
}
return false;
}
return true;
}
private Optional&lt;DataNodeContainedRule&gt; getDataNodeContainedRuleForShardingRule(final Collection&lt;DataNodeContainedRule&gt; dataNodeContainedRules) {
for (DataNodeContainedRule each : dataNodeContainedRules) {
if (!(each instanceof MutableDataNodeRule)) {
return Optional.of(each);
}
}
return Optional.empty();
}
private boolean containsInColumnContainedRule(final String tableName, final Collection&lt;ColumnContainedRule&gt; 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(&quot;Literals must have string, number, dateTime, hex, bit, boolean or null.&quot;);
}
@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(&quot;unchecked&quot;)
@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&lt;Object, String&gt; {
private static final String SPECIAL_CHARS = &quot;special-chars&quot;;
private static final String REPLACE_CHAR = &quot;replace-char&quot;;
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&lt;ProjectionSegment&gt; projections = new LinkedList&lt;&gt;();
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 -&gt; (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() ? &quot;&quot; : 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&lt;TerminalNode&gt; 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&lt;SimpleTableSegment&gt;) visit(ctx.vacuumRelationList())).getValue());
}
return result;
}
@Override
public ASTNode visitVacuumRelationList(final VacuumRelationListContext ctx) {
CollectionValue&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
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() ? &quot;ALL&quot; : 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&lt;String&gt; getUsedKeyGenerators(final ShardingRuleConfiguration shardingRuleConfig) {
Collection&lt;String&gt; result = new LinkedHashSet&lt;&gt;();
shardingRuleConfig.getTables().stream().filter(each -&gt; null != each.getKeyGenerateStrategy()).forEach(each -&gt; result.add(each.getKeyGenerateStrategy().getKeyGeneratorName()));
shardingRuleConfig.getAutoTables().stream().filter(each -&gt; null != each.getKeyGenerateStrategy()).forEach(each -&gt; result.add(each.getKeyGenerateStrategy().getKeyGeneratorName()));
KeyGenerateStrategyConfiguration keyGenerateStrategy = shardingRuleConfig.getDefaultKeyGenerateStrategy();
if (null != keyGenerateStrategy &amp;&amp; !Strings.isNullOrEmpty(keyGenerateStrategy.getKeyGeneratorName())) {
result.add(keyGenerateStrategy.getKeyGeneratorName());
}
return result;
}
@Override
public Collection&lt;String&gt; 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&lt;String&gt; getInstanceIdAndSet(final QueryContext queryContext) {
Optional&lt;String&gt; result = connection.getDatabaseConnectionManager().getConnectionContext().getTrafficInstanceId();
if (!result.isPresent()) {
result = getInstanceId(queryContext);
}
if (connection.isHoldTransaction() &amp;&amp; result.isPresent()) {
connection.getDatabaseConnectionManager().getConnectionContext().setTrafficInstanceId(result.get());
}
return result;
}
private Optional&lt;String&gt; getInstanceId(final QueryContext queryContext) {
InstanceContext instanceContext = connection.getContextManager().getInstanceContext();
return null != trafficRule &amp;&amp; !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&lt;String&gt; getUsedAuditors(final ShardingRuleConfiguration shardingRuleConfig) {
Collection&lt;String&gt; result = new LinkedHashSet&lt;&gt;();
shardingRuleConfig.getTables().stream().filter(each -&gt; null != each.getAuditStrategy()).forEach(each -&gt; result.addAll(each.getAuditStrategy().getAuditorNames()));
shardingRuleConfig.getAutoTables().stream().filter(each -&gt; null != each.getAuditStrategy()).forEach(each -&gt; result.addAll(each.getAuditStrategy().getAuditorNames()));
ShardingAuditStrategyConfiguration auditStrategy = shardingRuleConfig.getDefaultAuditStrategy();
if (null != auditStrategy &amp;&amp; !auditStrategy.getAuditorNames().isEmpty()) {
result.addAll(auditStrategy.getAuditorNames());
}
return result;
}
@Override
public Collection&lt;String&gt; 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&lt;TerminalNode&gt; 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&lt;ReadwriteSplittingRuleSegment&gt; actual,
final List&lt;ExceptedReadwriteSplittingRule&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual readwrite-splitting rule should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual readwrite-splitting rule should exist.&quot;));
assertThat(assertContext.getText(String.format(&quot;Actual readwrite-splitting rule size should be %s , but it was %s&quot;, 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&lt;TableReferenceRuleSegment&gt; actual,
final List&lt;ExpectedShardingTableReferenceRule&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual sharding table reference rule should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual sharding table reference rule should exist.&quot;));
assertThat(assertContext.getText(String.format(&quot;Actual sharding table reference rule size should be %s , but it was %s&quot;, 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&lt;String, StorageNodeDataSource&gt; storageNodes) throws SQLException {
boolean isDatabaseMetaDataExisted = !persistService.getDatabaseMetaDataService().loadAllDatabaseNames().isEmpty();
Map&lt;String, DatabaseConfiguration&gt; effectiveDatabaseConfigs = isDatabaseMetaDataExisted
? createEffectiveDatabaseConfigurations(getDatabaseNames(instanceContext, param.getDatabaseConfigs(), persistService), param.getDatabaseConfigs(), persistService)
: param.getDatabaseConfigs();
checkDataSourceStates(effectiveDatabaseConfigs, storageNodes, param.isForce());
Collection&lt;RuleConfiguration&gt; globalRuleConfigs = isDatabaseMetaDataExisted ? persistService.getGlobalRuleService().load() : param.getGlobalRuleConfigs();
ConfigurationProperties props = isDatabaseMetaDataExisted ? new ConfigurationProperties(persistService.getPropsService().load()) : new ConfigurationProperties(param.getProps());
Map&lt;String, ShardingSphereDatabase&gt; 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 = &quot;index&quot;)
private final List&lt;ExpectedIndex&gt; indexes = new LinkedList&lt;&gt;();
@XmlElement(name = &quot;table&quot;)
private final List&lt;ExpectedSimpleTable&gt; tables = new LinkedList&lt;&gt;();
@XmlElement(name = &quot;column&quot;)
private final List&lt;ExpectedColumn&gt; columns = new LinkedList&lt;&gt;();
@XmlElement(name = &quot;function&quot;)
private final List&lt;ExpectedFunction&gt; functions = new LinkedList&lt;&gt;();
@XmlElement(name = &quot;package&quot;)
private final List&lt;ExpectedPackage&gt; packages = new LinkedList&lt;&gt;();
@XmlElement(name = &quot;type&quot;)
private final List&lt;ExpectedType&gt; types = new LinkedList&lt;&gt;();
@XmlElement(name = &quot;index-type&quot;)
private final List&lt;ExpectedIndexType&gt; indexTypes = new LinkedList&lt;&gt;();
}</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(&quot;Actual statement should exist.&quot;));
assertDataSources(assertContext, actual.getStorageUnits(), expected.getDataSources());
}
}
private static void assertDataSources(final SQLCaseAssertContext assertContext, final Collection&lt;DataSourceSegment&gt; actual, final List&lt;ExpectedDataSource&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual storage unit should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual storage unit should exist.&quot;));
assertThat(assertContext.getText(String.format(&quot;Actual storage unit size should be %s , but it was %s&quot;, 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&lt;AlterDefinitionSegment&gt;) 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 = &quot;SELECT * FROM pg_roles WHERE rolname = ?&quot;;
@Override
public void checkPrivilege(final Collection&lt;? extends DataSource&gt; 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(), () -&gt; new PrepareJobWithoutUserException(username));
String isSuperRole = resultSet.getString(&quot;rolsuper&quot;);
String isReplicationRole = resultSet.getString(&quot;rolreplication&quot;);</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 &amp;&amp; null != ctx.onObjectClause() &amp;&amp; null != ctx.onObjectClause().privilegeLevel() &amp;&amp; null != ctx.onObjectClause().privilegeLevel().tableNames();
}
@SuppressWarnings(&quot;unchecked&quot;)
private Collection&lt;SimpleTableSegment&gt; getTableSegments(final PrivilegeClauseContext ctx) {
return ((CollectionValue&lt;SimpleTableSegment&gt;) 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&lt;AlgorithmSegment&gt; encryptors = new LinkedHashSet&lt;&gt;();
sqlStatement.getRules().forEach(each -&gt; each.getColumns().forEach(column -&gt; {
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 -&gt; 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(&quot;INDEX_NAME&quot;);
String tableName = resultSet.getString(&quot;TABLE_NAME&quot;);
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList&lt;&gt;());
}
result.get(tableName).add(new IndexMetaData(indexName));
}
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection&lt;String&gt; tableNames) {
return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;)));
}
@Override
public String getType() {
return &quot;MySQL&quot;;</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(&quot; ON DUPLICATE KEY UPDATE &quot;);
for (int i = 0; i &lt; dataRecord.getColumnCount(); i++) {
Column column = dataRecord.getColumn(i);
if (column.isUniqueKey()) {
continue;
}
result.append(quote(column.getName())).append(&quot;=EXCLUDED.&quot;).append(quote(column.getName())).append(',');
}
result.setLength(result.length() - 1);
return result.toString();
}
@Override
public Optional&lt;String&gt; buildEstimatedCountSQL(final String schemaName, final String tableName) {
String qualifiedTableName = getQualifiedTableName(schemaName, tableName);
return Optional.of(String.format(&quot;SELECT reltuples::integer FROM pg_class WHERE oid='%s'::regclass::oid;&quot;, qualifiedTableName));
}
@Override
public String getType() {
return &quot;openGauss&quot;;</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&lt;ColumnSegment&gt; columns = (CollectionValue&lt;ColumnSegment&gt;) 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(&quot; (&quot;);
for (int i = 0; i &lt; 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(&quot;, &quot;);
}
result.delete(result.length() - 2, result.length()).append(')');
return result.toString();
}
@Override
public boolean equals(final Object obj) {
return obj instanceof EncryptPredicateFunctionRightValueToken &amp;&amp; ((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&lt;CursorNameSegment&gt; 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&lt;WhereSegment&gt; getWhereSegments() {
return null != cursorStatementContext ? cursorStatementContext.getWhereSegments() : Collections.emptyList();
}
@Override
public Collection&lt;ColumnSegment&gt; 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&lt;String, ShardingSphereDatabase&gt; createDatabases(final MetaDataBasedPersistService persistService, final Map&lt;String, DatabaseConfiguration&gt; databaseConfigMap,
final DatabaseType protocolType, final ConfigurationProperties props, final InstanceContext instanceContext) {
Map&lt;String, ShardingSphereDatabase&gt; result = new ConcurrentHashMap&lt;&gt;(databaseConfigMap.size(), 1F);
for (Entry&lt;String, DatabaseConfiguration&gt; 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&lt;EncryptRuleSegment&gt; actual, final List&lt;ExpectedEncryptRule&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual encrypt rule should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual encrypt rule should exist.&quot;));
assertThat(assertContext.getText(String.format(&quot;Actual encrypt rule size should be %s , but it was %s&quot;, expected.size(), actual.size())), actual.size(), is(expected.size()));
int count = 0;
for (EncryptRuleSegment encryptRuleSegment : actual) {
ExpectedEncryptRule expectedEncryptRule = expected.get(count);
assertThat(assertContext.getText(&quot;encrypt rule table name assertion error: &quot;), 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&lt;ProjectionSegment&gt; projections = new LinkedList&lt;&gt;();
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&lt;String&gt; getTableName(final String rulePath) {
Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + &quot;/&quot; + 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&lt;String&gt; getAlgorithmName(final String rulePath) {
Pattern pattern = Pattern.compile(RULES_NODE_PREFIX + ROOT_NODE + &quot;/&quot; + 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&lt;String&gt; getUsedShardingAlgorithms(final ShardingRuleConfiguration shardingRuleConfig) {
Collection&lt;String&gt; result = new LinkedHashSet&lt;&gt;();
shardingRuleConfig.getTables().forEach(each -&gt; {
if (null != each.getDatabaseShardingStrategy()) {
result.add(each.getDatabaseShardingStrategy().getShardingAlgorithmName());
}
if (null != each.getTableShardingStrategy()) {
result.add(each.getTableShardingStrategy().getShardingAlgorithmName());
}
});
shardingRuleConfig.getAutoTables().stream().filter(each -&gt; null != each.getShardingStrategy()).forEach(each -&gt; result.add(each.getShardingStrategy().getShardingAlgorithmName()));
ShardingStrategyConfiguration tableShardingStrategy = shardingRuleConfig.getDefaultTableShardingStrategy();
if (null != tableShardingStrategy &amp;&amp; !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(&quot;default_%s_%s&quot;, 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&lt;ClusterPersistRepositoryConfiguration&gt; {
@Override
public YamlPersistRepositoryConfiguration swapToYamlConfiguration(final ClusterPersistRepositoryConfiguration data) {
YamlPersistRepositoryConfiguration result = new YamlPersistRepositoryConfiguration();
result.setType(data.getType());
result.setProps(data.getProps());
result.getProps().setProperty(&quot;namespace&quot;, data.getNamespace());
result.getProps().setProperty(&quot;server-lists&quot;, data.getServerLists());
return result;
}
@Override
public ClusterPersistRepositoryConfiguration swapToObject(final YamlPersistRepositoryConfiguration yamlConfig) {
return new ClusterPersistRepositoryConfiguration(
yamlConfig.getType(), yamlConfig.getProps().getProperty(&quot;namespace&quot;), yamlConfig.getProps().getProperty(&quot;server-lists&quot;), yamlConfig.getProps());
}
@Override
public String getType() {
return &quot;Cluster&quot;;</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&lt;AssignmentSegment&gt; 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(&quot;unchecked&quot;)
@Override
public ASTNode visitAlterDefinitionClause(final AlterDefinitionClauseContext ctx) {
CollectionValue&lt;AlterDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();
if (null != ctx.addColumnSpecification()) {
result.getValue().addAll(((CollectionValue&lt;AddColumnDefinitionSegment&gt;) 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&lt;String&gt; sampleActualTableNames =
sampleTableRule.getActualTableNames(each).stream().map(actualTableName -&gt; actualTableName.replace(sampleTableRule.getTableDataNode().getPrefix(), &quot;&quot;)).collect(Collectors.toSet());
Collection&lt;String&gt; actualTableNames =
tableRule.getActualTableNames(each).stream().map(optional -&gt; optional.replace(tableRule.getTableDataNode().getPrefix(), &quot;&quot;)).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(&quot;prepStmtCacheSize&quot;, &quot;200000&quot;);
defaultQueryProperties.setProperty(&quot;prepStmtCacheSqlLimit&quot;, &quot;2048&quot;);
defaultQueryProperties.setProperty(&quot;useLocalSessionState&quot;, Boolean.TRUE.toString());
defaultQueryProperties.setProperty(&quot;rewriteBatchedStatements&quot;, Boolean.TRUE.toString());
defaultQueryProperties.setProperty(&quot;cacheResultSetMetadata&quot;, Boolean.FALSE.toString());
defaultQueryProperties.setProperty(&quot;cacheServerConfiguration&quot;, Boolean.TRUE.toString());
defaultQueryProperties.setProperty(&quot;elideSetAutoCommits&quot;, Boolean.TRUE.toString());
defaultQueryProperties.setProperty(&quot;maintainTimeStats&quot;, Boolean.FALSE.toString());
defaultQueryProperties.setProperty(&quot;netTimeoutForStreamingResults&quot;, &quot;0&quot;);
defaultQueryProperties.setProperty(&quot;tinyInt1isBit&quot;, Boolean.FALSE.toString());
defaultQueryProperties.setProperty(&quot;useSSL&quot;, Boolean.FALSE.toString());
defaultQueryProperties.setProperty(&quot;serverTimezone&quot;, &quot;UTC&quot;);</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&lt;String&gt; inUsedAlgorithms = currentRuleConfig.getTables().stream().flatMap(each -&gt; each.getColumns().stream()).map(MaskColumnRuleConfiguration::getMaskAlgorithm)
.collect(Collectors.toSet());
Collection&lt;String&gt; unusedAlgorithms = currentRuleConfig.getMaskAlgorithms().keySet().stream().filter(each -&gt; !inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
unusedAlgorithms.forEach(each -&gt; currentRuleConfig.getMaskAlgorithms().remove(each));
}
@Override
public Class&lt;MaskRuleConfiguration&gt; 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(&quot;INDEX_NAME&quot;);
String tableName = resultSet.getString(&quot;TABLE_NAME&quot;);
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList&lt;&gt;());
}
result.get(tableName).add(new IndexMetaData(indexName));
}
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection&lt;String&gt; tableNames) {
return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;)));
}</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&lt;AlterDefinitionSegment&gt;) 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(&quot;INDEX_NAME&quot;);
String tableName = resultSet.getString(&quot;TABLE_NAME&quot;);
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList&lt;&gt;());
}
result.get(tableName).add(new IndexMetaData(indexName));
}
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection&lt;String&gt; tableNames) {
return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;)));
}</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&lt;&gt;(database.getRuleMetaData().getRules()));
if (!containsInImmutableDataNodeContainedRule(viewName, database)) {
ruleMetaData.findRules(MutableDataNodeRule.class).forEach(each -&gt; each.put(logicDataSourceNames.iterator().next(), schemaName, viewName));
}
GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getProtocolType(),
database.getResourceMetaData().getStorageTypes(), database.getResourceMetaData().getDataSources(), ruleMetaData.getRules(), props, schemaName);
Map&lt;String, ShardingSphereSchema&gt; schemaMap = GenericSchemaBuilder.build(Collections.singletonList(viewName), material);
Optional&lt;ShardingSphereTable&gt; actualViewMetaData = Optional.ofNullable(schemaMap.get(schemaName)).map(optional -&gt; 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&lt;Object&gt; executeScalarEnumerable(final DatabaseType databaseType, final QueryContext queryContext,
final ShardingSphereDatabase database, final ExecutionContext context) {
try {
ExecutionGroupContext&lt;JDBCExecutionUnit&gt; executionGroupContext =
prepareEngine.prepare(context.getRouteContext(), context.getExecutionUnits(), new ExecutionGroupReportContext(database.getName()));
setParameters(executionGroupContext.getInputGroups());
processEngine.executeSQL(executionGroupContext, context.getQueryContext());
List&lt;QueryResult&gt; queryResults = execute(executionGroupContext, databaseType);
MergeEngine mergeEngine = new MergeEngine(database, executorContext.getProps(), new ConnectionContext());
MergedResult mergedResult = mergeEngine.merge(queryResults, queryContext.getSqlStatementContext());
Collection&lt;Statement&gt; 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&lt;ResultSet&gt; getResultSets() throws SQLException {
List&lt;ResultSet&gt; result = new ArrayList&lt;&gt;(statements.size());
for (Statement each : statements) {
if (null != each.getResultSet()) {
result.add(each.getResultSet());
}
}
return result;
}
private List&lt;QueryResult&gt; getQueryResults(final List&lt;ResultSet&gt; resultSets) throws SQLException {
List&lt;QueryResult&gt; result = new ArrayList&lt;&gt;(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&lt;CreateDefinitionSegment&gt; createDefinitions = (CollectionValue&lt;CreateDefinitionSegment&gt;) 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&lt;CreateDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();</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&lt;CreateDefinitionSegment&gt; createDefinitions = (CollectionValue&lt;CreateDefinitionSegment&gt;) 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&lt;CreateDefinitionSegment&gt; result = new CollectionValue&lt;&gt;();</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&lt;TerminalNode&gt; 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&lt;String&gt; keys, final String path) {
keys.add(path);
List&lt;String&gt; childrenKeys = repository.getChildrenKeys(path);
if (childrenKeys.isEmpty()) {
return;
}
for (String each : childrenKeys) {
getAllNodes(keys, String.join(&quot;/&quot;, &quot;&quot;, path, each));
}
}
private Collection&lt;YamlDataNode&gt; getDataNodes(final Collection&lt;String&gt; keys) {
Collection&lt;YamlDataNode&gt; result = new LinkedHashSet&lt;&gt;();
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&lt;&gt;(database.getRuleMetaData().getRules()));
if (!containsInImmutableDataNodeContainedRule(tableName, database)) {
ruleMetaData.findRules(MutableDataNodeRule.class).forEach(each -&gt; each.put(logicDataSourceNames.iterator().next(), schemaName, tableName));
}
GenericSchemaBuilderMaterial material = new GenericSchemaBuilderMaterial(database.getProtocolType(),
database.getResourceMetaData().getStorageTypes(), database.getResourceMetaData().getDataSources(), ruleMetaData.getRules(), props, schemaName);
Map&lt;String, ShardingSphereSchema&gt; 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(&quot;MagicConstant&quot;)
@Override
public int getResultSetType() {
return statementOption.getResultSetType();
}
@SuppressWarnings(&quot;MagicConstant&quot;)
@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 -&gt; each.isNeedAccumulate(executionContext.getSqlStatementContext().getTablesContext().getTableNames()));
}
@Override
public Collection&lt;PreparedStatement&gt; 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(&quot;;&quot;).trimResults().splitToList(createTargetTableSQL).stream().filter(cs -&gt; !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 &lt; 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++ &lt; pagination.getActualRowCount().get() &amp;&amp; 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, &quot;PUBLIC&quot;);
try (ResultSet resultSet = preparedStatement.executeQuery()) {
while (resultSet.next()) {
String indexName = resultSet.getString(&quot;INDEX_NAME&quot;);
String tableName = resultSet.getString(&quot;TABLE_NAME&quot;);
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList&lt;&gt;());
}
result.get(tableName).add(new IndexMetaData(indexName));
}
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection&lt;String&gt; tableNames) {
return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each).toUpperCase()).collect(Collectors.joining(&quot;,&quot;)));</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&lt;YamlDataNode&gt; swapToDataNodes(final CompatibleEncryptRuleConfiguration data) {
Collection&lt;YamlDataNode&gt; result = new LinkedHashSet&lt;&gt;();
for (EncryptTableRuleConfiguration each : data.getTables()) {
result.add(new YamlDataNode(EncryptNodeConverter.getTableNamePath(each.getName()), YamlEngine.marshal(tableSwapper.swapToYamlConfiguration(each))));
}
for (Entry&lt;String, AlgorithmConfiguration&gt; 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&lt;YamlDataNode&gt; 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(&quot;INDEX_NAME&quot;);
String tableName = resultSet.getString(&quot;TABLE_NAME&quot;);
if (!result.containsKey(tableName)) {
result.put(tableName, new LinkedList&lt;&gt;());
}
result.get(tableName).add(new IndexMetaData(indexName));
}
}
}
return result;
}
private String getIndexMetaDataSQL(final Collection&lt;String&gt; tableNames) {
return String.format(INDEX_META_DATA_SQL, tableNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each).toUpperCase()).collect(Collectors.joining(&quot;,&quot;)));</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&lt;QualifiedTable&gt; getQualifiedTables(final ShardingSphereDatabase database, final DatabaseType databaseType, final Collection&lt;SimpleTableSegment&gt; tableSegments) {
Collection&lt;QualifiedTable&gt; result = new LinkedList&lt;&gt;();
String schemaName = DatabaseTypeEngine.getDefaultSchemaName(databaseType, database.getName());
for (SimpleTableSegment each : tableSegments) {
String actualSchemaName = each.getOwner().map(optional -&gt; optional.getIdentifier().getValue()).orElse(schemaName);
result.add(new QualifiedTable(actualSchemaName, each.getTableName().getIdentifier().getValue()));
}
return result;
}
private boolean containsView(final ShardingSphereDatabase database, final Collection&lt;QualifiedTable&gt; 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(&quot;Successfully exported to&#xff1a;'%s'&quot;, 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&lt;CommandExecutor&gt; getExecutorsOfAggregatedBatchedStatements(final PostgreSQLAggregatedCommandPacket aggregatedCommandPacket,
final ConnectionSession connectionSession, final PortalContext portalContext) throws SQLException {
List&lt;PostgreSQLCommandPacket&gt; packets = aggregatedCommandPacket.getPackets();
int batchPacketBeginIndex = aggregatedCommandPacket.getBatchPacketBeginIndex();
int batchPacketEndIndex = aggregatedCommandPacket.getBatchPacketEndIndex();
List&lt;CommandExecutor&gt; result = new ArrayList&lt;&gt;(batchPacketBeginIndex + packets.size() - batchPacketEndIndex);
for (int i = 0; i &lt; 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(&quot;Literals must have string, number, dateTime, hex, bit, boolean or null.&quot;);
}
@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 + &quot;\\.*&quot;, 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 + &quot;/&quot; + TABLES_NODE + &quot;\\.*&quot;, 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 + &quot;/&quot; + ALGORITHMS_NODE + &quot;\\.*&quot;, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(rulePath);
return matcher.find();
}
/**
* Get table name.
*
* @param rulePath rule path
* @return table name
*/
public static Optional&lt;String&gt; 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(&quot;Connect failed, reconnect times={}&quot;, times, ex);
if (isRunning()) {
Thread.sleep(5000);
}
if (times &gt;= 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&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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(&quot;database&quot;, &quot;type&quot;), Collections.emptyMap());
@Override
public Optional&lt;GaugeMetricFamilyMetricsCollector&gt; export(final String pluginType) {
Optional&lt;ShardingSphereDriver&gt; shardingSphereDriverOptional = getShardingSphereDriver();
if (!shardingSphereDriverOptional.isPresent()) {
return Optional.empty();
}
GaugeMetricFamilyMetricsCollector result = MetricsCollectorRegistry.get(config, pluginType);
result.cleanMetrics();
DriverDataSourceCache dataSourceCache = AgentReflectionUtils.getFieldValue(shardingSphereDriverOptional.get(), &quot;dataSourceCache&quot;);
Map&lt;String, DataSource&gt; dataSourceMap = AgentReflectionUtils.getFieldValue(dataSourceCache, &quot;dataSourceMap&quot;);
for (Map.Entry&lt;String, DataSource&gt; 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&lt;String&gt; getDataSourceNames(final Collection&lt;ShardingTableRuleConfiguration&gt; tableRuleConfigs,
final Collection&lt;ShardingAutoTableRuleConfiguration&gt; autoTableRuleConfigs, final Collection&lt;String&gt; dataSourceNames) {
if (tableRuleConfigs.isEmpty() &amp;&amp; autoTableRuleConfigs.isEmpty()) {
return dataSourceNames;
}
if (tableRuleConfigs.stream().map(ShardingTableRuleConfiguration::getActualDataNodes).anyMatch(each -&gt; null == each || each.isEmpty())) {
return dataSourceNames;
}
Collection&lt;String&gt; result = new LinkedHashSet&lt;&gt;();
tableRuleConfigs.forEach(each -&gt; result.addAll(getDataSourceNames(each)));
autoTableRuleConfigs.forEach(each -&gt; 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(&quot;Actual components size assertion error: &quot;), actual.getComponents().size(), is(expected.getComponents().size()));
assertComponents(assertContext, actual.getComponents(), expected.getComponents());
}
private static void assertComponents(final SQLCaseAssertContext assertContext, final List&lt;String&gt; actual, final List&lt;ExpectedComponent&gt; expected) {
int count = 0;
for (String each : actual) {
assertThat(assertContext.getText(&quot;Actual component value does not match: &quot;), 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&lt;ReadwriteSplittingRuleConfiguration&gt; getTypeClass() {
return ReadwriteSplittingRuleConfiguration.class;
}
@Override
public String getRuleTagName() {
return &quot;READWRITE_SPLITTING&quot;;
}
@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&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;T&gt; service) {
validate(service);
this.services = load(service);
}
private void validate(final Class&lt;T&gt; service) {
Preconditions.checkNotNull(service, &quot;SPI class is null.&quot;);
Preconditions.checkArgument(service.isInterface(), &quot;SPI class `%s` is not interface.&quot;, service);
}
private Collection&lt;T&gt; load(final Class&lt;T&gt; service) {
Collection&lt;T&gt; result = new LinkedList&lt;&gt;();
for (T each : ServiceLoader.load(service)) {
result.add(each);
}
return result;
}
/**
* Get singleton agent service loader.
*
* @param service service type
* @param &lt;T&gt; type of class
* @return agent service loader
*/
@SuppressWarnings(&quot;unchecked&quot;)
public static &lt;T&gt; AgentServiceLoader&lt;T&gt; getServiceLoader(final Class&lt;T&gt; 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&lt;String, ShardingSphereView&gt; views = alterSchemaMetaDataPOJO.getAlteredViews().stream().collect(Collectors.toMap(ShardingSphereView::getName, view -&gt; view));
DatabaseMetaDataBasedPersistService databaseMetaDataService = contextManager.getMetaDataContexts().getPersistService().getDatabaseMetaDataService();
databaseMetaDataService.getTableMetaDataPersistService().persist(databaseName, schemaName, tables);
databaseMetaDataService.getViewMetaDataPersistService().persist(databaseName, schemaName, views);
alterSchemaMetaDataPOJO.getDroppedTables().forEach(each -&gt; databaseMetaDataService.getTableMetaDataPersistService().delete(databaseName, schemaName, each));
alterSchemaMetaDataPOJO.getDroppedViews().forEach(each -&gt; databaseMetaDataService.getViewMetaDataPersistService().delete(databaseName, schemaName, each));
}
@Override
public void registerStorageUnits(final String databaseName, final Map&lt;String, DataSourceProperties&gt; 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&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
for (TableNameContext each : ctx.tableName()) {
result.getValue().add((SimpleTableSegment) visit(each));
}
return result;
}
@Override
public final ASTNode visitColumnNames(final ColumnNamesContext ctx) {
CollectionValue&lt;ColumnSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;ExpressionSegment&gt; expressionSegments = ctx.expr().stream().map(each -&gt; (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&lt;ExpressionSegment&gt; getValueExpressions(final Collection&lt;ExpressionSegment&gt; assignments) {
List&lt;ExpressionSegment&gt; result = new ArrayList&lt;&gt;(assignments.size());
result.addAll(assignments);
return result;
}
private List&lt;Object&gt; getParameters(final List&lt;Object&gt; params, final int paramsOffset) {
if (params.isEmpty() || 0 == parameterCount) {
return Collections.emptyList();
}
List&lt;Object&gt; result = new ArrayList&lt;&gt;(parameterCount);
result.addAll(params.subList(paramsOffset, paramsOffset + parameterCount));
return result;
}
/**
* Get literal value.
*
* @param index index
* @return literal value
*/
public Optional&lt;Object&gt; 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&lt;InsertValuesSegment&gt; segments) {
int result = segments.iterator().next().getStartIndex();
for (InsertValuesSegment each : segments) {
result = Math.min(result, each.getStartIndex());
}
return result;
}
private int getStopIndex(final Collection&lt;InsertValuesSegment&gt; 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&lt;InsertValuesSegment&gt; createInsertValuesSegments(final Collection&lt;AssignmentValuesContext&gt; assignmentValuesContexts) {
Collection&lt;InsertValuesSegment&gt; result = new LinkedList&lt;&gt;();
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&lt;CreateDefinitionSegment&gt; createDefinitions = (CollectionValue&lt;CreateDefinitionSegment&gt;) 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&lt;WhereSegment&gt; getWhereSegments() {
return null != cursorStatementContext ? cursorStatementContext.getWhereSegments() : Collections.emptyList();
}
@Override
public Collection&lt;ColumnSegment&gt; 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) -&gt; result.getAuthenticators().put(key, algorithmSwapper.swapToYamlConfiguration(value)));
}
return result;
}
@Override
public AuthorityRuleConfiguration swapToObject(final Collection&lt;YamlDataNode&gt; 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&lt;NameSegment&gt; nameSegmentIterator = ((CollectionValue&lt;NameSegment&gt;) visit(ctx.commentClauses().anyName())).getValue().iterator();
Optional&lt;NameSegment&gt; columnName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
columnName.ifPresent(optional -&gt; result.setColumn(new ColumnSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
setTableSegment(result, nameSegmentIterator);
return result;
}
@SuppressWarnings(&quot;unchecked&quot;)
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&lt;DatabaseSegment&gt; 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), () -&gt; 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 &quot;MariaDB&quot;;</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 &quot;openGauss&quot;;</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&lt;String&gt; getDatabaseNames(final ConnectionSession connectionSession) {
Collection&lt;String&gt; databaseNames = ProxyContext.getInstance().getAllDatabaseNames().stream().filter(each -&gt; 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&lt;String, Object&gt; rows, final Map&lt;String, String&gt; 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&lt;ShadowRuleSegment&gt; actual, final List&lt;ExpectedShadowRule&gt; expected) {
if (null == expected) {
assertNull(actual, assertContext.getText(&quot;Actual shadow rule should not exist.&quot;));
} else {
assertNotNull(actual, assertContext.getText(&quot;Actual shadow rule should exist.&quot;));
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,
() -&gt; new SQLFeatureNotSupportedException(&quot;Current transaction is aborted, commands ignored until end of transaction block.&quot;));
}
@Override
public Map&lt;String, Collection&lt;String&gt;&gt; getSystemDatabaseSchemaMap() {
return SYSTEM_DATABASE_SCHEMA_MAP;
}
@Override
public Collection&lt;String&gt; getSystemSchemas() {
return SYSTEM_SCHEMAS;
}
@Override
public boolean isSchemaAvailable() {
return true;
}
@Override
public String getDefaultSchema() {
return &quot;public&quot;;
}
@Override
public String getType() {
return &quot;openGauss&quot;;</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() &amp;&amp; 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&lt;DatabaseSegment&gt; 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), () -&gt; 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&lt;ResultSet&gt; 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), () -&gt; new UnknownDatabaseException(databaseName));
}
@Override
public boolean next() throws SQLException {
return null != mergedResult &amp;&amp; mergedResult.next();
}
@Override
public QueryResponseRow getRowData() throws SQLException {
List&lt;QueryResponseCell&gt; cells = new ArrayList&lt;&gt;(queryHeaders.size());
for (int i = 0; i &lt; 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&lt;Object&gt; getValues(final List&lt;Object&gt; params) {
List&lt;Object&gt; result = new ArrayList&lt;&gt;(positionValueMap.values());
for (Entry&lt;Integer, Integer&gt; entry : positionIndexMap.entrySet()) {
Object param = params.get(entry.getValue());
if (entry.getKey() &lt; 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&lt;String&gt; schemaNames, final Collection&lt;String&gt; tables) {
String schemaNameParam = schemaNames.stream().map(each -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;));
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 -&gt; String.format(&quot;'%s'&quot;, each)).collect(Collectors.joining(&quot;,&quot;)));
}
private Collection&lt;String&gt; loadPrimaryKeys(final Connection connection, final Collection&lt;String&gt; 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), () -&gt; new UnknownDatabaseException(databaseName));
}
@Override
public boolean next() throws SQLException {
return null != mergedResult &amp;&amp; mergedResult.next();
}
@Override
public QueryResponseRow getRowData() throws SQLException {
List&lt;QueryResponseCell&gt; cells = new ArrayList&lt;&gt;(queryHeaders.size());
for (int i = 0; i &lt; 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&lt;Connection&gt; jdbcConnectionClass;
private Constructor&lt;?&gt; 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(&quot;unchecked&quot;)
@SneakyThrows(ReflectiveOperationException.class)
private Class&lt;Connection&gt; getJDBCConnectionClass() {
return (Class&lt;Connection&gt;) Class.forName(&quot;org.mariadb.jdbc.MariaDbConnection&quot;);</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&lt;ColumnSegment&gt;) 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&lt;String, Collection&lt;IndexMetaData&gt;&gt; indexMetaDataMap = columnMetaDataMap.isEmpty() ? Collections.emptyMap() : loadIndexMetaData(connection, columnMetaDataMap.keySet());
for (Entry&lt;String, Collection&lt;ColumnMetaData&gt;&gt; entry : columnMetaDataMap.entrySet()) {
Collection&lt;IndexMetaData&gt; 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&lt;String, Collection&lt;ColumnMetaData&gt;&gt; loadColumnMetaDataMap(final Connection connection, final Collection&lt;String&gt; 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 -&gt; containsIgnoreCase(sqlStatement.getTables(), each));
return isEmptyShardingTables(currentRuleConfig) &amp;&amp; currentRuleConfig.getBroadcastTables().isEmpty() &amp;&amp; isEmptyShardingStrategy(currentRuleConfig);
}
private boolean isEmptyShardingTables(final ShardingRuleConfiguration currentRuleConfig) {
return currentRuleConfig.getTables().isEmpty() &amp;&amp; currentRuleConfig.getAutoTables().isEmpty();
}
private boolean isEmptyShardingStrategy(final ShardingRuleConfiguration currentRuleConfig) {
return null == currentRuleConfig.getDefaultDatabaseShardingStrategy() &amp;&amp; null == currentRuleConfig.getDefaultTableShardingStrategy();
}
@Override
public Class&lt;ShardingRuleConfiguration&gt; 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&lt;ASTNode&gt; {
private final Collection&lt;ParameterMarkerSegment&gt; parameterMarkerSegments = new LinkedList&lt;&gt;();
@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&lt;CreateDefinitionSegment&gt; createDefinitions = (CollectionValue&lt;CreateDefinitionSegment&gt;) 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&lt;?&gt; type, final Calendar calendar) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;&quot;);
}
@Override
public final InputStream getInputStream(final int columnIndex, final String type) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;&quot;);
}
@Override
public Reader getCharacterStream(final int columnIndex) throws SQLException {
throw new SQLFeatureNotSupportedException(&quot;&quot;);
}
protected abstract boolean nextValue() throws SQLException;
protected abstract Object getOriginalValue(int columnIndex, Class&lt;?&gt; 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&lt;?&gt; 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&lt;ShardingStrategyConfiguration&gt; strategyConfig = getStrategyConfiguration(currentRuleConfig, sqlStatement.getDefaultType());
ShardingSpherePreconditions.checkState(strategyConfig.isPresent(),
() -&gt; new MissingRequiredRuleException(String.format(&quot;Default sharding %s strategy&quot;, sqlStatement.getDefaultType().toLowerCase()), databaseName));
}
private Optional&lt;ShardingStrategyConfiguration&gt; 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(&quot;useServerPrepStmts&quot;, Boolean.TRUE.toString());
defaultQueryProperties.setProperty(&quot;cachePrepStmts&quot;, Boolean.TRUE.toString());
defaultQueryProperties.setProperty(&quot;prepStmtCacheSize&quot;, &quot;200000&quot;);</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, &quot;Cluster persist repository configuration cannot be null.&quot;);
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))) &gt;= 0 &amp;&amp; result.compareTo(new BigInteger(String.valueOf(Integer.MAX_VALUE))) &lt;= 0) {
return result.intValue();
}
if (result.compareTo(new BigInteger(String.valueOf(Long.MIN_VALUE))) &gt;= 0 &amp;&amp; result.compareTo(new BigInteger(String.valueOf(Long.MAX_VALUE))) &lt;= 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(&quot;Actual login should not exist.&quot;));
} else {
assertNotNull(actual.getLoginSegment(), assertContext.getText(&quot;Actual login should exist.&quot;));
assertThat(assertContext.getText(&quot;Login name assertion error: &quot;), 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&lt;InventoryIncrementalJobItemInfo&gt; jobItemInfos = jobAPI.getJobItemInfos(sqlStatement.getJobId());
long currentTimeMillis = System.currentTimeMillis();
return jobItemInfos.stream().map(each -&gt; 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(), &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, 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&lt;EncryptContext&gt; findEncryptContext(final int columnIndex) {
Optional&lt;ColumnProjection&gt; columnProjection = findColumnProjection(columnIndex);
if (!columnProjection.isPresent()) {
return Optional.empty();
}
TablesContext tablesContext = selectStatementContext.getTablesContext();
String schemaName = tablesContext.getSchemaName().orElseGet(() -&gt; DatabaseTypeEngine.getDefaultSchemaName(selectStatementContext.getDatabaseType(), database.getName()));
Map&lt;String, String&gt; 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 -&gt; new ShadowColumnCondition(getSingleTableName(), shadowColumnName, values)).ifPresent(result::add);
}
return result;
}
private Collection&lt;ExpressionSegment&gt; getWhereSegment() {
Collection&lt;ExpressionSegment&gt; result = new LinkedList&lt;&gt;();
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&lt;LimitSegment&gt; limitSegment = DeleteStatementHandler.getLimitSegment(actual);
if (null == expected.getLimitClause()) {
assertFalse(limitSegment.isPresent(), assertContext.getText(&quot;Actual limit segment should not exist.&quot;));
} else {
assertTrue(limitSegment.isPresent(), assertContext.getText(&quot;Actual limit segment should exist.&quot;));
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&lt;SimpleTableSegment&gt; result = new CollectionValue&lt;&gt;();
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&lt;AlterDefinitionSegment&gt;) 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 &#169; 2023<a href="https://www.apache.org/">The Apache Software Foundation</a>.
. </div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>