Skip to content

Commit c6fcab7

Browse files
wt0530githubgxll
authored andcommitted
[fix][dingo-calcite] Fix Index name ignores case when valiator
1 parent dddb35c commit c6fcab7

File tree

8 files changed

+18
-14
lines changed

8 files changed

+18
-14
lines changed

dingo-calcite/src/main/java/io/dingodb/calcite/DingoDdlExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2335,9 +2335,9 @@ private static List<IndexDefinition> getIndexDefinitions(
23352335
.filter(col -> col.getKind() == SqlKind.CREATE_INDEX)
23362336
.map(col -> fromSqlIndexDeclaration((SqlIndexDeclaration) col, tableDefinition))
23372337
.collect(Collectors.toCollection(ArrayList::new)));
2338-
long count = tableDefList.stream().map(TableDefinition::getName).distinct().count();
2338+
long count = tableDefList.stream().map(c -> c.getName().toUpperCase()).distinct().count();
23392339
if (tableDefList.size() > count) {
2340-
throw new IllegalArgumentException("Duplicate index name");
2340+
throw DINGO_RESOURCE.duplicateColumn().ex();
23412341
}
23422342
return tableDefList;
23432343
}

dingo-calcite/src/main/java/io/dingodb/calcite/DingoSqlToRelConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ private Blackboard createInsertBlackboard(
247247
rexBuilder.makeFieldAccess(sourceRef, j++));
248248
}
249249
}
250-
return createBlackboard(null, nameToNameMap, false);
250+
return createBlackboard(validator().getEmptyScope(), nameToNameMap, false);
251251
}
252252

253253
private SqlValidator validator() {

dingo-calcite/src/main/java/io/dingodb/calcite/grammar/ddl/SqlGrant.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,11 @@ public void unparse(SqlWriter writer, int leftPrec, int rightPrec) {
9999
writer.keyword("USAGE");
100100
}
101101
writer.keyword("ON");
102-
writer.keyword(schema);
102+
writer.literal(schema);
103103
writer.keyword(".");
104-
writer.keyword(table);
104+
writer.literal(table);
105105
writer.keyword("TO");
106-
writer.keyword(user);
106+
writer.literal(user);
107107
writer.keyword("@");
108108
writer.keyword(host);
109109
if (withGrantOption) {

dingo-calcite/src/main/java/io/dingodb/calcite/rel/DingoGetDocumentPreFilter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.apache.calcite.rel.type.RelDataTypeFieldImpl;
3636
import org.apache.calcite.rex.RexNode;
3737
import org.apache.calcite.sql.type.SqlTypeName;
38+
import org.apache.calcite.util.IndexColumnName;
3839
import org.checkerframework.checker.nullness.qual.NonNull;
3940
import org.checkerframework.checker.nullness.qual.Nullable;
4041

@@ -117,7 +118,7 @@ public RelDataType getTableType() {
117118
RelDataTypeFactory.Builder builder = getCluster().getTypeFactory().builder();
118119
builder.addAll(relDataType.getFieldList());
119120
builder.add(new RelDataTypeFieldImpl(
120-
indexTable.getName() + "$rank_bm25",
121+
indexTable.getName() + IndexColumnName.TEXT_INDEX_COLUMN,
121122
relDataType.getFieldCount(),
122123
getCluster().getTypeFactory().createSqlType(SqlTypeName.get("FLOAT"))));
123124
return builder.build();

dingo-calcite/src/main/java/io/dingodb/calcite/rel/LogicalDingoDocument.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.apache.calcite.rex.RexNode;
4444
import org.apache.calcite.sql.SqlCharStringLiteral;
4545
import org.apache.calcite.sql.type.SqlTypeName;
46+
import org.apache.calcite.util.IndexColumnName;
4647
import org.checkerframework.checker.nullness.qual.NonNull;
4748
import org.checkerframework.checker.nullness.qual.Nullable;
4849

@@ -186,7 +187,7 @@ public RelDataType getTableType() {
186187
RelDataTypeFactory.Builder builder = getCluster().getTypeFactory().builder();
187188
builder.addAll(relDataType.getFieldList());
188189
builder.add(new RelDataTypeFieldImpl(
189-
indexTable.getName() + "$rank_bm25",
190+
indexTable.getName() + IndexColumnName.TEXT_INDEX_COLUMN,
190191
relDataType.getFieldCount(),
191192
getCluster().getTypeFactory().createSqlType(SqlTypeName.get("FLOAT"))));
192193
return builder.build();
@@ -199,7 +200,7 @@ public TupleType tupleType() {
199200
cols.addAll(dingoTable.getTable().columns);
200201
cols.add(Column
201202
.builder()
202-
.name(indexTable.getName().concat("$rank_bm25"))
203+
.name(indexTable.getName().concat(IndexColumnName.VECTOR_INDEX_COLUMN))
203204
.sqlTypeName("FLOAT")
204205
.type(new FloatType(false))
205206
.precision(-1)

dingo-calcite/src/main/java/org/apache/calcite/sql/validate/TableFunctionNamespace.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.calcite.sql2rel.SqlDocumentOperator;
3737
import org.apache.calcite.sql2rel.SqlFunctionScanOperator;
3838
import org.apache.calcite.sql2rel.SqlVectorOperator;
39+
import org.apache.calcite.util.IndexColumnName;
3940
import org.checkerframework.checker.nullness.qual.Nullable;
4041

4142
import java.util.ArrayList;
@@ -102,7 +103,7 @@ protected RelDataType validateImpl(RelDataType targetRowType) {
102103
}
103104
cols.add(Column
104105
.builder()
105-
.name(index.getName().concat("$distance"))
106+
.name(index.getName().concat(IndexColumnName.VECTOR_INDEX_COLUMN))
106107
.sqlTypeName("FLOAT")
107108
.type(new FloatType(false))
108109
.precision(-1)
@@ -128,7 +129,7 @@ protected RelDataType validateImpl(RelDataType targetRowType) {
128129
this.index = getDocumentIndexTable(table, columnIdentifier.getSimple().toUpperCase());
129130
cols.add(Column
130131
.builder()
131-
.name(index.getName().concat("$rank_bm25"))
132+
.name(index.getName().concat(IndexColumnName.TEXT_INDEX_COLUMN))
132133
.sqlTypeName("FLOAT")
133134
.type(new FloatType(false))
134135
.precision(-1)

dingo-calcite/src/main/java/org/apache/calcite/sql/validate/TableHybridFunctionNamespace.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.calcite.sql.SqlNode;
3737
import org.apache.calcite.sql.SqlNumericLiteral;
3838
import org.apache.calcite.sql2rel.SqlHybridSearchOperator;
39+
import org.apache.calcite.util.IndexColumnName;
3940
import org.checkerframework.checker.nullness.qual.Nullable;
4041

4142
import java.math.BigDecimal;
@@ -168,11 +169,11 @@ protected RelDataType validateImpl(RelDataType targetRowType) {
168169
// throw new RuntimeException("Multiple hybridSearch in SQL is not supported");
169170
//}
170171
String documentId = documentIndex.getColumns().get(0).getName();
171-
String documentRankBm25 = documentIndex.getName() + "$rank_bm25";
172+
String documentRankBm25 = documentIndex.getName() + IndexColumnName.TEXT_INDEX_COLUMN;
172173
String documentSelect = this.function.operand(0).toString();
173174
String vectorSelect = this.function.operand(1).toString();
174175
String vectorId = vectorIndex.getColumns().get(0).getName();
175-
String vectorDistance = vectorIndex.getName() + "$distance";
176+
String vectorDistance = vectorIndex.getName() + IndexColumnName.VECTOR_INDEX_COLUMN;
176177
String sql = HybridSearchSqlUtils.hybridSearchSqlReplace(
177178
vectorWeight,
178179
documentWeight,

dingo-executor/src/main/java/io/dingodb/server/executor/service/UserService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public void createUser(UserDefinition userDefinition) {
162162

163163
@Override
164164
public void dropUser(UserDefinition userDefinition) {
165-
String condition = "user ='" + userDefinition.getUser() + "' and host ='" + userDefinition.getHost() + "'";
165+
String condition = "User ='" + userDefinition.getUser() + "' and Host ='" + userDefinition.getHost() + "'";
166166
String delUserSql = "delete from mysql.user where " + condition;
167167
String delDbSql = "delete from mysql.db where " + condition;
168168
String delTablesPrivSql = "delete from mysql.tables_priv where " + condition;

0 commit comments

Comments
 (0)