Skip to content

Commit

Permalink
Merge b7b4c07 into bf2d576
Browse files Browse the repository at this point in the history
  • Loading branch information
strongduanmu committed Sep 23, 2020
2 parents bf2d576 + b7b4c07 commit fc602a8
Show file tree
Hide file tree
Showing 51 changed files with 827 additions and 1,058 deletions.
Expand Up @@ -32,7 +32,7 @@
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.UpdateStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.InsertStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;

import java.util.Collection;
import java.util.Collections;
Expand All @@ -51,7 +51,7 @@ protected boolean isNeedRewriteForEncrypt(final SQLStatementContext sqlStatement
return true;
}
if (sqlStatementContext instanceof InsertStatementContext) {
return InsertStatementHelper.getSetAssignmentSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
return InsertStatementHandler.getSetAssignmentSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
}
return false;
}
Expand All @@ -70,7 +70,7 @@ public void rewrite(final ParameterBuilder parameterBuilder, final SQLStatementC

private SetAssignmentSegment getSetAssignmentSegment(final SQLStatement sqlStatement) {
if (sqlStatement instanceof InsertStatement) {
Optional<SetAssignmentSegment> result = InsertStatementHelper.getSetAssignmentSegment((InsertStatement) sqlStatement);
Optional<SetAssignmentSegment> result = InsertStatementHandler.getSetAssignmentSegment((InsertStatement) sqlStatement);
Preconditions.checkState(result.isPresent());
return result.get();
}
Expand Down
Expand Up @@ -27,7 +27,7 @@
import org.apache.shardingsphere.sql.parser.binder.segment.insert.values.OnDuplicateUpdateContext;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.InsertStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;

import java.util.Collection;
import java.util.LinkedList;
Expand All @@ -43,7 +43,7 @@ public final class EncryptInsertOnDuplicateKeyUpdateValueParameterRewriter exten
@Override
protected boolean isNeedRewriteForEncrypt(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext
&& InsertStatementHelper.getOnDuplicateKeyColumnsSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
&& InsertStatementHandler.getOnDuplicateKeyColumnsSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
}

@Override
Expand Down
Expand Up @@ -28,7 +28,7 @@
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.InsertStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;

import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -44,7 +44,7 @@ public final class EncryptInsertValueParameterRewriter extends EncryptParameterR

@Override
protected boolean isNeedRewriteForEncrypt(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext && !InsertStatementHelper.getSetAssignmentSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
return sqlStatementContext instanceof InsertStatementContext && !InsertStatementHandler.getSetAssignmentSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
}

@Override
Expand Down
Expand Up @@ -20,12 +20,11 @@
import com.google.common.base.Preconditions;
import org.apache.shardingsphere.encrypt.rewrite.token.generator.BaseEncryptSQLTokenGenerator;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.InsertColumnsToken;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.CollectionSQLTokenGenerator;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.InsertColumnsToken;

import java.util.Collection;
import java.util.LinkedList;
Expand All @@ -40,7 +39,7 @@ public final class AssistQueryAndPlainInsertColumnsTokenGenerator extends BaseEn
@Override
protected boolean isGenerateSQLTokenForEncrypt(final SQLStatementContext sqlStatementContext) {
if (sqlStatementContext instanceof InsertStatementContext) {
return (((InsertStatementContext) sqlStatementContext).getSqlStatement()).getInsertColumns().isPresent() && !((InsertStatement) sqlStatementContext.getSqlStatement()).useDefaultColumns();
return (((InsertStatementContext) sqlStatementContext).getSqlStatement()).getInsertColumns().isPresent() && !(((InsertStatementContext) sqlStatementContext)).useDefaultColumns();
}
return false;
}
Expand Down
Expand Up @@ -34,7 +34,7 @@
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.UpdateStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.InsertStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;

import java.util.Collection;
import java.util.Collections;
Expand All @@ -50,7 +50,7 @@ public final class EncryptAssignmentTokenGenerator extends BaseEncryptSQLTokenGe
protected boolean isGenerateSQLTokenForEncrypt(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof UpdateStatementContext
|| (sqlStatementContext instanceof InsertStatementContext
&& InsertStatementHelper.getSetAssignmentSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent());
&& InsertStatementHandler.getSetAssignmentSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent());
}

@Override
Expand All @@ -67,7 +67,7 @@ public Collection<EncryptAssignmentToken> generateSQLTokens(final SQLStatementCo

private SetAssignmentSegment getSetAssignmentSegment(final SQLStatement sqlStatement) {
if (sqlStatement instanceof InsertStatement) {
Optional<SetAssignmentSegment> result = InsertStatementHelper.getSetAssignmentSegment((InsertStatement) sqlStatement);
Optional<SetAssignmentSegment> result = InsertStatementHandler.getSetAssignmentSegment((InsertStatement) sqlStatement);
Preconditions.checkState(result.isPresent());
return result.get();
}
Expand Down
Expand Up @@ -21,13 +21,13 @@
import lombok.Setter;
import org.apache.shardingsphere.encrypt.rewrite.token.generator.BaseEncryptSQLTokenGenerator;
import org.apache.shardingsphere.encrypt.rule.EncryptTable;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.InsertColumnsSegment;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.PreviousSQLTokensAware;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.UseDefaultInsertColumnsToken;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.InsertColumnsSegment;

import java.util.Iterator;
import java.util.LinkedList;
Expand All @@ -44,7 +44,7 @@ public final class EncryptForUseDefaultInsertColumnsTokenGenerator extends BaseE

@Override
protected boolean isGenerateSQLTokenForEncrypt(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext && (((InsertStatementContext) sqlStatementContext).getSqlStatement()).useDefaultColumns();
return sqlStatementContext instanceof InsertStatementContext && ((InsertStatementContext) sqlStatementContext).useDefaultColumns();
}

@Override
Expand Down
Expand Up @@ -30,7 +30,7 @@
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.LiteralExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.simple.ParameterMarkerExpressionSegment;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.InsertStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;

import java.util.Collection;
import java.util.Collections;
Expand All @@ -45,16 +45,16 @@ public final class EncryptInsertOnUpdateTokenGenerator extends BaseEncryptSQLTok
@Override
protected boolean isGenerateSQLTokenForEncrypt(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext
&& InsertStatementHelper.getOnDuplicateKeyColumnsSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
&& InsertStatementHandler.getOnDuplicateKeyColumnsSegment(((InsertStatementContext) sqlStatementContext).getSqlStatement()).isPresent();
}

@Override
public Collection<EncryptAssignmentToken> generateSQLTokens(final InsertStatementContext insertStatementContext) {
Collection<EncryptAssignmentToken> result = new LinkedList<>();
InsertStatement insertStatement = insertStatementContext.getSqlStatement();
String tableName = insertStatement.getTable().getTableName().getIdentifier().getValue();
Preconditions.checkState(InsertStatementHelper.getOnDuplicateKeyColumnsSegment(insertStatement).isPresent());
OnDuplicateKeyColumnsSegment onDuplicateKeyColumnsSegment = InsertStatementHelper.getOnDuplicateKeyColumnsSegment(insertStatement).get();
Preconditions.checkState(InsertStatementHandler.getOnDuplicateKeyColumnsSegment(insertStatement).isPresent());
OnDuplicateKeyColumnsSegment onDuplicateKeyColumnsSegment = InsertStatementHandler.getOnDuplicateKeyColumnsSegment(insertStatement).get();
Collection<AssignmentSegment> onDuplicateKeyColumnsSegments = onDuplicateKeyColumnsSegment.getColumns();
if (onDuplicateKeyColumnsSegments.isEmpty()) {
return result;
Expand Down
Expand Up @@ -22,7 +22,7 @@
import org.apache.shardingsphere.replication.primaryreplica.rule.MasterSlaveDataSourceRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.SelectStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.SelectStatementHandler;

import java.util.ArrayList;

Expand Down Expand Up @@ -54,6 +54,6 @@ private boolean isMasterRoute(final SQLStatement sqlStatement) {
}

private boolean containsLockSegment(final SQLStatement sqlStatement) {
return sqlStatement instanceof SelectStatement && SelectStatementHelper.getLockSegment((SelectStatement) sqlStatement).isPresent();
return sqlStatement instanceof SelectStatement && SelectStatementHandler.getLockSegment((SelectStatement) sqlStatement).isPresent();
}
}
Expand Up @@ -17,12 +17,12 @@

package org.apache.shardingsphere.shadow.rewrite.parameter.impl;

import org.apache.shardingsphere.shadow.rewrite.parameter.ShadowParameterRewriter;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.infra.rewrite.parameter.builder.ParameterBuilder;
import org.apache.shardingsphere.infra.rewrite.parameter.builder.impl.GroupedParameterBuilder;
import org.apache.shardingsphere.infra.rewrite.parameter.builder.impl.StandardParameterBuilder;
import org.apache.shardingsphere.shadow.rewrite.parameter.ShadowParameterRewriter;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -34,7 +34,7 @@ public final class ShadowInsertValueParameterRewriter extends ShadowParameterRew

@Override
protected boolean isNeedRewriteForShadow(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext && (((InsertStatementContext) sqlStatementContext).getSqlStatement()).getColumnNames().contains(getShadowRule().getColumn());
return sqlStatementContext instanceof InsertStatementContext && ((InsertStatementContext) sqlStatementContext).getColumnNames().contains(getShadowRule().getColumn());
}

@Override
Expand Down
Expand Up @@ -18,17 +18,17 @@
package org.apache.shardingsphere.shadow.rewrite.token.generator.impl;

import lombok.Setter;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.aware.PreviousSQLTokensAware;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.SQLToken;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.InsertValue;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.InsertValuesToken;
import org.apache.shardingsphere.shadow.rewrite.token.generator.BaseShadowSQLTokenGenerator;
import org.apache.shardingsphere.shadow.rewrite.token.pojo.ShadowInsertValuesToken;
import org.apache.shardingsphere.sql.parser.binder.segment.insert.values.InsertValueContext;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.assignment.InsertValuesSegment;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.InsertValue;
import org.apache.shardingsphere.infra.rewrite.sql.token.pojo.generic.InsertValuesToken;

import java.util.Collection;
import java.util.Iterator;
Expand All @@ -45,7 +45,7 @@ public final class ShadowInsertValuesTokenGenerator extends BaseShadowSQLTokenGe

@Override
protected boolean isGenerateSQLTokenForShadow(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext && (((InsertStatementContext) sqlStatementContext).getSqlStatement()).getColumnNames().contains(getShadowRule().getColumn());
return sqlStatementContext instanceof InsertStatementContext && ((InsertStatementContext) sqlStatementContext).getColumnNames().contains(getShadowRule().getColumn());
}

@Override
Expand Down
Expand Up @@ -17,10 +17,9 @@

package org.apache.shardingsphere.sharding.rewrite.token.generator.impl.keygen;

import org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;
import org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
import org.apache.shardingsphere.infra.rewrite.sql.token.generator.OptionalSQLTokenGenerator;

/**
* Base generated key token generator.
Expand All @@ -30,8 +29,8 @@ public abstract class BaseGeneratedKeyTokenGenerator implements OptionalSQLToken
@Override
public final boolean isGenerateSQLToken(final SQLStatementContext sqlStatementContext) {
return sqlStatementContext instanceof InsertStatementContext && ((InsertStatementContext) sqlStatementContext).getGeneratedKeyContext().isPresent()
&& ((InsertStatementContext) sqlStatementContext).getGeneratedKeyContext().get().isGenerated() && isGenerateSQLToken(((InsertStatementContext) sqlStatementContext).getSqlStatement());
&& ((InsertStatementContext) sqlStatementContext).getGeneratedKeyContext().get().isGenerated() && isGenerateSQLToken((InsertStatementContext) sqlStatementContext);
}

protected abstract boolean isGenerateSQLToken(InsertStatement insertStatement);
protected abstract boolean isGenerateSQLToken(InsertStatementContext insertStatementContext);
}
Expand Up @@ -26,7 +26,7 @@
import org.apache.shardingsphere.sql.parser.binder.segment.insert.keygen.GeneratedKeyContext;
import org.apache.shardingsphere.sql.parser.binder.statement.dml.InsertStatementContext;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.InsertStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.helper.dml.InsertStatementHelper;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.InsertStatementHandler;

import java.util.List;
import java.util.Optional;
Expand All @@ -40,17 +40,17 @@ public final class GeneratedKeyAssignmentTokenGenerator extends BaseGeneratedKey
private List<Object> parameters;

@Override
protected boolean isGenerateSQLToken(final InsertStatement insertStatement) {
return InsertStatementHelper.getSetAssignmentSegment(insertStatement).isPresent();
protected boolean isGenerateSQLToken(final InsertStatementContext insertStatementContext) {
return InsertStatementHandler.getSetAssignmentSegment(insertStatementContext.getSqlStatement()).isPresent();
}

@Override
public GeneratedKeyAssignmentToken generateSQLToken(final InsertStatementContext insertStatementContext) {
Optional<GeneratedKeyContext> generatedKey = insertStatementContext.getGeneratedKeyContext();
Preconditions.checkState(generatedKey.isPresent());
InsertStatement insertStatement = insertStatementContext.getSqlStatement();
Preconditions.checkState(InsertStatementHelper.getSetAssignmentSegment(insertStatement).isPresent());
int startIndex = InsertStatementHelper.getSetAssignmentSegment(insertStatement).get().getStopIndex() + 1;
Preconditions.checkState(InsertStatementHandler.getSetAssignmentSegment(insertStatement).isPresent());
int startIndex = InsertStatementHandler.getSetAssignmentSegment(insertStatement).get().getStopIndex() + 1;
return parameters.isEmpty() ? new LiteralGeneratedKeyAssignmentToken(startIndex, generatedKey.get().getColumnName(), generatedKey.get().getGeneratedValues().iterator().next())
: new ParameterMarkerGeneratedKeyAssignmentToken(startIndex, generatedKey.get().getColumnName());
}
Expand Down

0 comments on commit fc602a8

Please sign in to comment.