This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 26d090fbeb6 Refactor constructor of CommentStatement to empty
buildAttributes (#38300)
26d090fbeb6 is described below
commit 26d090fbeb6287749553139d7018cefdf243aeab
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Mar 2 23:24:57 2026 +0800
Refactor constructor of CommentStatement to empty buildAttributes (#38300)
* Refactor constructor of CloseStatement to empty buildAttributes
* Refactor constructor of UnsetVariableStatement to empty buildAttributes
* Refactor constructor of CommentStatement to empty buildAttributes
---
.../statement/ddl/CommentStatementBinder.java | 7 +---
.../statement/ddl/CommentStatementBinderTest.java | 15 +++----
.../type/FirebirdDDLStatementVisitor.java | 8 ++--
.../type/OpenGaussDDLStatementVisitor.java | 44 ++++++++++++--------
.../statement/type/OracleDDLStatementVisitor.java | 11 +++--
.../type/PostgreSQLDDLStatementVisitor.java | 48 ++++++++++++----------
.../core/statement/type/ddl/CommentStatement.java | 22 ++++++----
7 files changed, 82 insertions(+), 73 deletions(-)
diff --git
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinder.java
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinder.java
index 12f6993d345..97489b9edee 100644
---
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinder.java
+++
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinder.java
@@ -46,11 +46,8 @@ public final class CommentStatementBinder implements
SQLStatementBinder<CommentS
}
private CommentStatement copy(final CommentStatement sqlStatement, final
SimpleTableSegment table, final ColumnSegment column) {
- CommentStatement result = new
CommentStatement(sqlStatement.getDatabaseType());
- result.setTable(table);
- result.setColumn(column);
- result.setComment(sqlStatement.getComment());
- result.setIndexType(sqlStatement.getIndexType().orElse(null));
+ CommentStatement result =
CommentStatement.builder().databaseType(sqlStatement.getDatabaseType())
+
.table(table).column(column).comment(sqlStatement.getComment()).indexType(sqlStatement.getIndexType().orElse(null)).build();
SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
return result;
}
diff --git
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
index 2842a756ecb..5ee2d661058 100644
---
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
+++
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/CommentStatementBinderTest.java
@@ -60,10 +60,6 @@ class CommentStatementBinderTest {
@Test
void assertBindWithTable() {
- CommentStatement sqlStatement = new CommentStatement(databaseType);
- SimpleTableSegment tableSegment = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order")));
- sqlStatement.setTable(tableSegment);
- sqlStatement.setComment(new IdentifierValue("test comment"));
when(metaData.containsDatabase("foo_db_1")).thenReturn(true);
when(metaData.getDatabase("foo_db_1")).thenReturn(database);
when(database.containsSchema("foo_db_1")).thenReturn(true);
@@ -73,6 +69,8 @@ class CommentStatementBinderTest {
when(table.getAllColumns()).thenReturn(Collections.emptyList());
HintValueContext hintValueContext = new HintValueContext();
hintValueContext.setSkipMetadataValidate(true);
+ CommentStatement sqlStatement =
CommentStatement.builder().databaseType(databaseType)
+ .table(new SimpleTableSegment(new TableNameSegment(0, 0, new
IdentifierValue("t_order")))).comment(new IdentifierValue("test
comment")).build();
SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(metaData, "foo_db_1", hintValueContext, sqlStatement);
CommentStatement actual = new
CommentStatementBinder().bind(sqlStatement, binderContext);
assertThat(actual.getTable().getTableName().getIdentifier().getValue(),
is("t_order"));
@@ -81,8 +79,7 @@ class CommentStatementBinderTest {
@Test
void assertBindWithoutTable() {
- CommentStatement sqlStatement = new CommentStatement(databaseType);
- sqlStatement.setComment(new IdentifierValue("test comment"));
+ CommentStatement sqlStatement =
CommentStatement.builder().databaseType(databaseType).comment(new
IdentifierValue("test comment")).build();
HintValueContext hintValueContext = new HintValueContext();
hintValueContext.setSkipMetadataValidate(true);
SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(metaData, "foo_db_1", hintValueContext, sqlStatement);
@@ -93,10 +90,6 @@ class CommentStatementBinderTest {
@Test
void assertBindWithColumn() {
- CommentStatement sqlStatement = new CommentStatement(databaseType);
- SimpleTableSegment tableSegment = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order")));
- sqlStatement.setTable(tableSegment);
- sqlStatement.setComment(new IdentifierValue("column comment"));
when(metaData.containsDatabase("foo_db_1")).thenReturn(true);
when(metaData.getDatabase("foo_db_1")).thenReturn(database);
when(database.containsSchema("foo_db_1")).thenReturn(true);
@@ -106,6 +99,8 @@ class CommentStatementBinderTest {
when(table.getAllColumns()).thenReturn(Collections.emptyList());
HintValueContext hintValueContext = new HintValueContext();
hintValueContext.setSkipMetadataValidate(true);
+ CommentStatement sqlStatement =
CommentStatement.builder().databaseType(databaseType)
+ .table(new SimpleTableSegment(new TableNameSegment(0, 0, new
IdentifierValue("t_order")))).comment(new IdentifierValue("column
comment")).build();
SQLStatementBinderContext binderContext = new
SQLStatementBinderContext(metaData, "foo_db_1", hintValueContext, sqlStatement);
CommentStatement actual = new
CommentStatementBinder().bind(sqlStatement, binderContext);
assertThat(actual.getTable().getTableName().getIdentifier().getValue(),
is("t_order"));
diff --git
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
index f371d979a2b..49743463be0 100644
---
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
@@ -309,13 +309,13 @@ public final class FirebirdDDLStatementVisitor extends
FirebirdStatementVisitor
@Override
public ASTNode visitComment(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
+ CommentStatement.CommentStatementBuilder result =
CommentStatement.builder().databaseType(getDatabaseType());
if (null != ctx.tableName()) {
- result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+ result.table((SimpleTableSegment) visit(ctx.tableName()));
}
if (null != ctx.columnName()) {
- result.setColumn((ColumnSegment) visit(ctx.columnName()));
+ result.column((ColumnSegment) visit(ctx.columnName()));
}
- return result;
+ return result.build();
}
}
diff --git
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
index 61859676c53..dba99c8c10e 100644
---
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
@@ -985,37 +985,45 @@ public final class OpenGaussDDLStatementVisitor extends
OpenGaussStatementVisito
if (null != ctx.commentClauses().COLUMN()) {
return commentOnColumn(ctx);
}
- return new CommentStatement(getDatabaseType());
+ return
CommentStatement.builder().databaseType(getDatabaseType()).build();
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnColumn(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator =
((CollectionValue<NameSegment>)
visit(ctx.commentClauses().anyName())).getValue().iterator();
+ CommentStatement.CommentStatementBuilder result =
CommentStatement.builder().databaseType(getDatabaseType())
+ .comment(new
IdentifierValue(ctx.commentClauses().commentText().getText()));
Optional<NameSegment> columnName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- columnName.ifPresent(optional -> result.setColumn(new
ColumnSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier())));
- result.setComment(new
IdentifierValue(ctx.commentClauses().commentText().getText()));
- setTableSegment(result, nameSegmentIterator);
- return result;
+ columnName.ifPresent(optional -> result.column(new
ColumnSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier())));
+ return result.table(createTableSegment(nameSegmentIterator)).build();
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnTable(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator =
((CollectionValue<NameSegment>)
visit(ctx.commentClauses().anyName())).getValue().iterator();
- result.setComment(new
IdentifierValue(ctx.commentClauses().commentText().getText()));
- setTableSegment(result, nameSegmentIterator);
- return result;
+ return
CommentStatement.builder().databaseType(getDatabaseType()).comment(new
IdentifierValue(ctx.commentClauses().commentText().getText()))
+ .table(createTableSegment(nameSegmentIterator)).build();
}
- private void setTableSegment(final CommentStatement statement, final
Iterator<NameSegment> nameSegmentIterator) {
- Optional<NameSegment> tableName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- tableName.ifPresent(optional -> statement.setTable(new
SimpleTableSegment(new TableNameSegment(optional.getStartIndex(),
optional.getStopIndex(), optional.getIdentifier()))));
- Optional<NameSegment> schemaName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- schemaName.ifPresent(optional -> statement.getTable().setOwner(new
OwnerSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier())));
- Optional<NameSegment> databaseName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- databaseName.ifPresent(optional -> statement.getTable().getOwner()
- .ifPresent(owner -> owner.setOwner(new
OwnerSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier()))));
+ private SimpleTableSegment createTableSegment(final Iterator<NameSegment>
nameSegmentIterator) {
+ if (!nameSegmentIterator.hasNext()) {
+ return null;
+ }
+ NameSegment tableName = nameSegmentIterator.next();
+ SimpleTableSegment result = new SimpleTableSegment(new
TableNameSegment(tableName.getStartIndex(), tableName.getStopIndex(),
tableName.getIdentifier()));
+ OwnerSegment owner = null;
+ if (nameSegmentIterator.hasNext()) {
+ NameSegment schemaName = nameSegmentIterator.next();
+ owner = new OwnerSegment(schemaName.getStartIndex(),
schemaName.getStopIndex(), schemaName.getIdentifier());
+ result.setOwner(owner);
+ }
+ if (nameSegmentIterator.hasNext()) {
+ NameSegment databaseName = nameSegmentIterator.next();
+ if (null != owner) {
+ owner.setOwner(new OwnerSegment(databaseName.getStartIndex(),
databaseName.getStopIndex(), databaseName.getIdentifier()));
+ }
+ }
+ return result;
}
@Override
diff --git
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index 8a1f27de672..8f10fa7de31 100644
---
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -995,18 +995,17 @@ public final class OracleDDLStatementVisitor extends
OracleStatementVisitor impl
@Override
public ASTNode visitComment(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
+ CommentStatement.CommentStatementBuilder result =
CommentStatement.builder().databaseType(getDatabaseType()).comment(new
IdentifierValue(ctx.STRING_().getText()));
if (null != ctx.tableName()) {
- result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+ result.table((SimpleTableSegment) visit(ctx.tableName()));
}
if (null != ctx.columnName()) {
- result.setColumn((ColumnSegment) visit(ctx.columnName()));
+ result.column((ColumnSegment) visit(ctx.columnName()));
}
if (null != ctx.indexTypeName()) {
- result.setIndexType((IndexTypeSegment) visit(ctx.indexTypeName()));
+ result.indexType((IndexTypeSegment) visit(ctx.indexTypeName()));
}
- result.setComment(new IdentifierValue(ctx.STRING_().getText()));
- return result;
+ return result.build();
}
@Override
diff --git
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
index 59e9207835a..14ab4df7391 100644
---
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
+++
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
@@ -1145,43 +1145,49 @@ public final class PostgreSQLDDLStatementVisitor
extends PostgreSQLStatementVisi
if (null != ctx.commentClauses().objectTypeNameOnAnyName()) {
return getTableFromComment(ctx);
}
- return new CommentStatement(getDatabaseType());
+ return
CommentStatement.builder().databaseType(getDatabaseType()).build();
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnColumn(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator =
((CollectionValue<NameSegment>)
visit(ctx.commentClauses().anyName())).getValue().iterator();
+ CommentStatement.CommentStatementBuilder result =
CommentStatement.builder().databaseType(getDatabaseType())
+ .comment(new
IdentifierValue(ctx.commentClauses().commentText().getText()));
Optional<NameSegment> columnName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- columnName.ifPresent(optional -> result.setColumn(new
ColumnSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier())));
- result.setComment(new
IdentifierValue(ctx.commentClauses().commentText().getText()));
- setTableSegment(result, nameSegmentIterator);
- return result;
+ columnName.ifPresent(optional -> result.column(new
ColumnSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier())));
+ return result.table(createTableSegment(nameSegmentIterator)).build();
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnTable(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator =
((CollectionValue<NameSegment>)
visit(ctx.commentClauses().anyName())).getValue().iterator();
- result.setComment(new
IdentifierValue(ctx.commentClauses().commentText().getText()));
- setTableSegment(result, nameSegmentIterator);
- return result;
+ return
CommentStatement.builder().databaseType(getDatabaseType()).comment(new
IdentifierValue(ctx.commentClauses().commentText().getText()))
+ .table(createTableSegment(nameSegmentIterator)).build();
}
- private void setTableSegment(final CommentStatement statement, final
Iterator<NameSegment> nameSegmentIterator) {
- Optional<NameSegment> tableName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- tableName.ifPresent(optional -> statement.setTable(new
SimpleTableSegment(new TableNameSegment(optional.getStartIndex(),
optional.getStopIndex(), optional.getIdentifier()))));
- Optional<NameSegment> schemaName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- schemaName.ifPresent(optional -> statement.getTable().setOwner(new
OwnerSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier())));
- Optional<NameSegment> databaseName = nameSegmentIterator.hasNext() ?
Optional.of(nameSegmentIterator.next()) : Optional.empty();
- databaseName.ifPresent(optional -> statement.getTable().getOwner()
- .ifPresent(owner -> owner.setOwner(new
OwnerSegment(optional.getStartIndex(), optional.getStopIndex(),
optional.getIdentifier()))));
+ private SimpleTableSegment createTableSegment(final Iterator<NameSegment>
nameSegmentIterator) {
+ if (!nameSegmentIterator.hasNext()) {
+ return null;
+ }
+ NameSegment tableName = nameSegmentIterator.next();
+ SimpleTableSegment result = new SimpleTableSegment(new
TableNameSegment(tableName.getStartIndex(), tableName.getStopIndex(),
tableName.getIdentifier()));
+ OwnerSegment owner = null;
+ if (nameSegmentIterator.hasNext()) {
+ NameSegment schemaName = nameSegmentIterator.next();
+ owner = new OwnerSegment(schemaName.getStartIndex(),
schemaName.getStopIndex(), schemaName.getIdentifier());
+ result.setOwner(owner);
+ }
+ if (nameSegmentIterator.hasNext()) {
+ NameSegment databaseName = nameSegmentIterator.next();
+ if (null != owner) {
+ owner.setOwner(new OwnerSegment(databaseName.getStartIndex(),
databaseName.getStopIndex(), databaseName.getIdentifier()));
+ }
+ }
+ return result;
}
private CommentStatement getTableFromComment(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(getDatabaseType());
- result.setTable((SimpleTableSegment)
visit(ctx.commentClauses().tableName()));
- return result;
+ return
CommentStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
visit(ctx.commentClauses().tableName())).build();
}
@Override
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/CommentStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/CommentStatement.java
index 3f8be4c987d..8153414ad50 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/CommentStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/CommentStatement.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl;
+import lombok.Builder;
import lombok.Getter;
-import lombok.Setter;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexTypeSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
@@ -34,21 +34,26 @@ import java.util.Optional;
* Comment statement.
*/
@Getter
-@Setter
public final class CommentStatement extends DDLStatement {
- private SimpleTableSegment table;
+ private final SimpleTableSegment table;
- private ColumnSegment column;
+ private final ColumnSegment column;
- private IdentifierValue comment;
+ private final IdentifierValue comment;
- private IndexTypeSegment indexType;
+ private final IndexTypeSegment indexType;
- private SQLStatementAttributes attributes;
+ private final SQLStatementAttributes attributes;
- public CommentStatement(final DatabaseType databaseType) {
+ @Builder
+ private CommentStatement(final DatabaseType databaseType, final
SimpleTableSegment table, final ColumnSegment column, final IdentifierValue
comment, final IndexTypeSegment indexType) {
super(databaseType);
+ this.table = table;
+ this.column = column;
+ this.comment = comment;
+ this.indexType = indexType;
+ attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(null == table ? Collections.emptyList() :
Collections.singletonList(table)));
}
/**
@@ -62,6 +67,5 @@ public final class CommentStatement extends DDLStatement {
@Override
public void buildAttributes() {
- attributes = new SQLStatementAttributes(new
TableSQLStatementAttribute(null == table ? Collections.emptyList() :
Collections.singletonList(table)));
}
}