Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support alter index sql bind and add test case #34160

Merged
merged 46 commits into from
Dec 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
03ae5ed
Support GroupConcat sql for aggregating multiple shards(#33797)
Nov 26, 2024
c0552d1
Check Style fix(#33797)
Nov 26, 2024
c256c10
Check Style fix(#33797)
Nov 26, 2024
812f813
spotless fix (#33797)
Nov 26, 2024
05ccc96
unit test fix (#33797)
Nov 26, 2024
05eaecb
spotless fix (#33797)
YaoFly Nov 26, 2024
07209e2
group_concat distinct compatible (#33797)
Nov 27, 2024
879b107
group_concat distinct compatible (#33797)
Nov 27, 2024
8feb644
unit test fix for distinct group_concat (#33797)
Nov 27, 2024
2201278
Merge branch 'apache:master' into master
YaoFly Nov 27, 2024
96d9bef
Merge branch 'apache:master' into master
YaoFly Nov 27, 2024
3efdfb6
Merge branch 'apache:master' into master
YaoFly Nov 28, 2024
f0b2f9c
e2e test for group_concat (#33797)
Dec 2, 2024
4b028ec
e2e test for group_concat (#33797)
Dec 2, 2024
9fb37fa
Merge remote-tracking branch 'origin/master'
Dec 2, 2024
91278c4
code format (#33797)
Dec 2, 2024
1f9a97f
e2e test (#33797)
Dec 2, 2024
c2411b8
e2e test (#33797)
Dec 2, 2024
ded3745
e2e test (#33797)
Dec 2, 2024
c080d71
remove useless code(#33797)
Dec 2, 2024
c96dd07
code optimization (#33797)
Dec 4, 2024
576cc33
sql parse unit test (#33797)
Dec 4, 2024
bd11a26
RELEASE-NOTES.md updated(#33797)
Dec 4, 2024
a6fe2b2
Merge branch 'master' into master
YaoFly Dec 4, 2024
370e53d
Merge branch 'apache:master' into master
YaoFly Dec 5, 2024
e9ee8e4
Code Optimization (#33797)
Dec 5, 2024
f01105d
Merge branch 'apache:master' into master
YaoFly Dec 10, 2024
fdcdf04
Support GroupConcat sql for aggregating multiple shards in opengauss …
Dec 10, 2024
cf7acbe
doris parse unit test fix (#33797)
Dec 10, 2024
022e56e
spotless fix (#33797)
Dec 10, 2024
315183a
Update RELEASE-NOTES.md
strongduanmu Dec 10, 2024
bdc9023
Merge branch 'apache:master' into master
YaoFly Dec 12, 2024
b60b453
Add DBCOMPATIBILITY 'B' parameter to opengauss database (#33992)
Dec 15, 2024
e7d0326
Merge remote-tracking branch 'origin/master'
Dec 15, 2024
702a318
Merge branch 'apache:master' into master
YaoFly Dec 15, 2024
ec7ea74
Add DBCOMPATIBILITY 'B' parameter to opengauss database for dbtbl_wit…
Dec 16, 2024
0a26e50
Merge remote-tracking branch 'origin/master'
Dec 16, 2024
31f9f11
add openGauss test case for group_concat. (#33992)
Dec 16, 2024
878d16b
Merge branch 'apache:master' into master
YaoFly Dec 24, 2024
b3e9a68
Support alter index sql bind and add test case. (#34029)
Dec 26, 2024
b9760da
Merge branch 'apache:master' into master
YaoFly Dec 26, 2024
d052945
Merge remote-tracking branch 'origin/master' into 34029
Dec 26, 2024
8a2a8ca
code fix
Dec 26, 2024
af93e65
spotless
Dec 26, 2024
ba512f3
Merge branch 'master' into 34029
YaoFly Dec 26, 2024
baf472a
code fix
Dec 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.shardingsphere.infra.binder.engine.statement.ddl;

import com.cedarsoftware.util.CaseInsensitiveMap;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import lombok.SneakyThrows;
import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.context.TableSegmentBinderContext;
import org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;

/**
* Alter index statement binder.
*/
public class AlterIndexStatementBinder implements SQLStatementBinder<AlterIndexStatement> {

@Override
public AlterIndexStatement bind(final AlterIndexStatement sqlStatement, final SQLStatementBinderContext binderContext) {
if (!sqlStatement.getSimpleTable().isPresent()) {
return sqlStatement;
}
AlterIndexStatement result = copy(sqlStatement);
Multimap<CaseInsensitiveMap.CaseInsensitiveString, TableSegmentBinderContext> tableBinderContexts = LinkedHashMultimap.create();
result.setSimpleTable(SimpleTableSegmentBinder.bind(sqlStatement.getSimpleTable().get(), binderContext, tableBinderContexts));
return result;
}

@SneakyThrows(ReflectiveOperationException.class)
private static AlterIndexStatement copy(final AlterIndexStatement sqlStatement) {
AlterIndexStatement result = sqlStatement.getClass().getDeclaredConstructor().newInstance();
sqlStatement.getIndex().ifPresent(result::setIndex);
sqlStatement.getSimpleTable().ifPresent(result::setSimpleTable);
YaoFly marked this conversation as resolved.
Show resolved Hide resolved
result.addParameterMarkerSegments(sqlStatement.getParameterMarkerSegments());
result.getCommentSegments().addAll(sqlStatement.getCommentSegments());
result.getVariableNames().addAll(sqlStatement.getVariableNames());
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
import org.apache.shardingsphere.infra.binder.engine.statement.ddl.AlterIndexStatementBinder;
import org.apache.shardingsphere.infra.binder.engine.statement.ddl.AlterTableStatementBinder;
import org.apache.shardingsphere.infra.binder.engine.statement.ddl.CreateIndexStatementBinder;
import org.apache.shardingsphere.infra.binder.engine.statement.ddl.CreateTableStatementBinder;
Expand All @@ -28,6 +29,7 @@
import org.apache.shardingsphere.infra.binder.engine.statement.ddl.TruncateStatementBinder;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterIndexStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.AlterTableStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateIndexStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateTableStatement;
Expand Down Expand Up @@ -75,6 +77,9 @@ public DDLStatement bind(final DDLStatement statement) {
if (statement instanceof CreateIndexStatement) {
return new CreateIndexStatementBinder().bind((CreateIndexStatement) statement, binderContext);
}
if (statement instanceof AlterIndexStatement) {
return new AlterIndexStatementBinder().bind((AlterIndexStatement) statement, binderContext);
}
if (statement instanceof TruncateStatement) {
return new TruncateStatementBinder().bind((TruncateStatement) statement, binderContext);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@ public Optional<SimpleTableSegment> getSimpleTable() {
return Optional.empty();
}

/**
* Set simple table segment.
*
* @param simpleTableSegment simple table segment
*/
public void setSimpleTable(final SimpleTableSegment simpleTableSegment) {
}

/**
* Get rename index segment.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.shardingsphere.test.it.sql.binder.dialect.sqlserver;

import org.apache.shardingsphere.test.it.sql.binder.SQLBinderIT;
import org.apache.shardingsphere.test.it.sql.binder.SQLBinderITSettings;

@SQLBinderITSettings("SQLServer")
class SQLServerBinderIT extends SQLBinderIT {
}
30 changes: 30 additions & 0 deletions test/it/binder/src/test/resources/cases/ddl/alter-index.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<sql-parser-test-cases>
<alter-index sql-case-id="alter_index_with_schema">
<index name="idx_user_id" start-index="12" stop-index="22"/>
<table name="t_order" start-index="27" stop-index="37">
<owner name="dbo" start-index="27" stop-index="29"/>
<table-bound>
<original-database name="foo_db_1"/>
<original-schema name="dbo"/>
</table-bound>
</table>
</alter-index>
</sql-parser-test-cases>
21 changes: 21 additions & 0 deletions test/it/binder/src/test/resources/sqls/ddl/alter-index.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
~ this work for additional information regarding copyright ownership.
~ The ASF licenses this file to You under the Apache License, Version 2.0
~ (the "License"); you may not use this file except in compliance with
~ the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->

<sql-cases>
<sql-case id="alter_index_with_schema" value="ALTER INDEX idx_user_id ON dbo.t_order REBUILD" db-types="SQLServer" />
</sql-cases>
Loading