Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Questdb
提交
fe40ded2
Q
Questdb
项目概览
jobily
/
Questdb
9 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
Questdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
fe40ded2
编写于
8月 29, 2023
作者:
M
marregui
提交者:
GitHub
8月 29, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(sql): allow quotes around dedup keys (#3691)
上级
ff0723e5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
3 deletion
+34
-3
core/src/main/java/io/questdb/griffin/SqlCompilerImpl.java
core/src/main/java/io/questdb/griffin/SqlCompilerImpl.java
+2
-2
core/src/main/java/io/questdb/griffin/SqlParser.java
core/src/main/java/io/questdb/griffin/SqlParser.java
+1
-1
core/src/test/java/io/questdb/test/griffin/CreateTableDedupTest.java
...st/java/io/questdb/test/griffin/CreateTableDedupTest.java
+31
-0
未找到文件。
core/src/main/java/io/questdb/griffin/SqlCompilerImpl.java
浏览文件 @
fe40ded2
...
@@ -914,9 +914,9 @@ public class SqlCompilerImpl implements SqlCompiler, Closeable {
...
@@ -914,9 +914,9 @@ public class SqlCompilerImpl implements SqlCompiler, Closeable {
int
columnListPos
=
lexer
.
lastTokenPosition
();
int
columnListPos
=
lexer
.
lastTokenPosition
();
while
(
tok
!=
null
&&
!
Chars
.
equals
(
tok
,
')'
))
{
while
(
tok
!=
null
&&
!
Chars
.
equals
(
tok
,
')'
))
{
final
CharSequence
columnName
=
tok
;
validateLiteral
(
lexer
.
lastTokenPosition
(),
tok
);
validateLiteral
(
lexer
.
lastTokenPosition
(),
tok
);
final
CharSequence
columnName
=
GenericLexer
.
unquote
(
tok
);
int
colIndex
=
tableMetadata
.
getColumnIndexQuiet
(
columnName
);
int
colIndex
=
tableMetadata
.
getColumnIndexQuiet
(
columnName
);
if
(
colIndex
<
0
)
{
if
(
colIndex
<
0
)
{
throw
SqlException
.
position
(
lexer
.
lastTokenPosition
()).
put
(
"deduplicate key column not found [column="
).
put
(
columnName
).
put
(
']'
);
throw
SqlException
.
position
(
lexer
.
lastTokenPosition
()).
put
(
"deduplicate key column not found [column="
).
put
(
columnName
).
put
(
']'
);
...
...
core/src/main/java/io/questdb/griffin/SqlParser.java
浏览文件 @
fe40ded2
...
@@ -639,8 +639,8 @@ public class SqlParser {
...
@@ -639,8 +639,8 @@ public class SqlParser {
int
columnListPos
=
lexer
.
lastTokenPosition
();
int
columnListPos
=
lexer
.
lastTokenPosition
();
while
(
tok
!=
null
&&
!
Chars
.
equals
(
tok
,
')'
))
{
while
(
tok
!=
null
&&
!
Chars
.
equals
(
tok
,
')'
))
{
final
CharSequence
columnName
=
tok
;
validateLiteral
(
lexer
.
lastTokenPosition
(),
tok
);
validateLiteral
(
lexer
.
lastTokenPosition
(),
tok
);
final
CharSequence
columnName
=
GenericLexer
.
unquote
(
tok
);
int
colIndex
=
model
.
getColumnIndex
(
columnName
);
int
colIndex
=
model
.
getColumnIndex
(
columnName
);
if
(
colIndex
<
0
)
{
if
(
colIndex
<
0
)
{
...
...
core/src/test/java/io/questdb/test/griffin/CreateTableDedupTest.java
浏览文件 @
fe40ded2
...
@@ -162,6 +162,37 @@ public class CreateTableDedupTest extends AbstractCairoTest {
...
@@ -162,6 +162,37 @@ public class CreateTableDedupTest extends AbstractCairoTest {
});
});
}
}
@Test
public
void
testCreateTableWithDoubleQuotes
()
throws
Exception
{
String
tableName
=
testName
.
getMethodName
()
+
" a 欢迎回来 to you"
;
assertMemoryLeak
(
ff
,
()
->
{
ddl
(
"CREATE TABLE '"
+
tableName
+
"' (\n"
+
" Status SYMBOL capacity 16 CACHE,\n"
+
" \"Reported time\" TIMESTAMP\n"
+
" ) timestamp (\"Reported time\") PARTITION BY DAY WAL DEDUP UPSERT KEYS(\"Reported time\");"
);
try
(
TableWriter
writer
=
getWriter
(
tableName
))
{
Assert
.
assertTrue
(
writer
.
getMetadata
().
isDedupKey
(
1
));
}
assertSql
(
"column\ttype\tindexed\tindexBlockCapacity\tsymbolCached\tsymbolCapacity\tdesignated\tupsertKey\n"
+
"Status\tSYMBOL\tfalse\t256\ttrue\t16\tfalse\tfalse\n"
+
"Reported time\tTIMESTAMP\tfalse\t0\tfalse\t0\ttrue\ttrue\n"
,
"SHOW COLUMNS FROM '"
+
tableName
+
'\''
);
ddl
(
"alter table '"
+
tableName
+
"' DEDUP DISABLE;"
);
ddl
(
"alter table '"
+
tableName
+
"' DEDUP ENABLE UPSERT KEYS(\"Reported time\");"
);
drainWalQueue
();
assertSql
(
"column\ttype\tindexed\tindexBlockCapacity\tsymbolCached\tsymbolCapacity\tdesignated\tupsertKey\n"
+
"Status\tSYMBOL\tfalse\t256\ttrue\t16\tfalse\tfalse\n"
+
"Reported time\tTIMESTAMP\tfalse\t0\tfalse\t0\ttrue\ttrue\n"
,
"SHOW COLUMNS FROM '"
+
tableName
+
'\''
);
});
}
@Test
@Test
public
void
testDedupEnabledTimestampOnly
()
throws
Exception
{
public
void
testDedupEnabledTimestampOnly
()
throws
Exception
{
String
tableName
=
testName
.
getMethodName
();
String
tableName
=
testName
.
getMethodName
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录