danhuawang opened a new issue, #10316:
URL: https://github.com/apache/gravitino/issues/10316
### Version
main branch
### Describe what's wrong
Create a clickhouse table, including a string column and default value
'active'
Gravitino will pop DB::Exception: Syntax error
### Error message and/or stacktrace
```
{
"code": 1002,
"type": "RuntimeException",
"message": "Failed to operate object [products] operation [CREATE] under
[sales], reason [Syntax error: failed at position 173 (active) (line 5, col
30): active'' COMMENT 'Status' \n)\n ENGINE = MergeTree\n ORDER BY `id`\n
COMMENT 'ClickHouse table with column defaults (From Gravitino, DO NOT EDIT:
gravitino.v1.uid152314... Expected one of: OR, AND, IS NOT DISTINCT FROM, IS
NULL, IS NOT NULL, BETWEEN, NOT BETWEEN, LIKE, ILIKE, NOT LIKE, NOT ILIKE,
REGEXP, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, MOD, DIV, NOT, NULL, COMMENT,
CODEC, STATISTICS, TTL, PRIMARY KEY, SETTINGS, token, Comma,
ClosingRoundBracket. (SYNTAX_ERROR) (version 25.7.8.71 (official build))\n]",
"stack": [
"org.apache.gravitino.exceptions.GravitinoRuntimeException: Code:
62. DB::Exception: Syntax error: failed at position 173 (active) (line 5, col
30): active'' COMMENT 'Status' ",
")",
" ENGINE = MergeTree",
" ORDER BY `id`",
" COMMENT 'ClickHouse table with column defaults (From Gravitino, DO
NOT EDIT: gravitino.v1.uid152314... Expected one of: OR, AND, IS NOT DISTINCT
FROM, IS NULL, IS NOT NULL, BETWEEN, NOT BETWEEN, LIKE, ILIKE, NOT LIKE, NOT
ILIKE, REGEXP, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, MOD, DIV, NOT, NULL,
COMMENT, CODEC, STATISTICS, TTL, PRIMARY KEY, SETTINGS, token, Comma,
ClosingRoundBracket. (SYNTAX_ERROR) (version 25.7.8.71 (official build))",
"",
"\tat
org.apache.gravitino.catalog.clickhouse.converter.ClickHouseExceptionConverter.toGravitinoException(ClickHouseExceptionConverter.java:50)",
"\tat
org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations.create(JdbcTableOperations.java:160)",
"\tat
org.apache.gravitino.catalog.jdbc.JdbcCatalogOperations.createTable(JdbcCatalogOperations.java:484)",
"\tat
org.apache.gravitino.catalog.TableOperationDispatcher.lambda$internalCreateTable$25(TableOperationDispatcher.java:599)",
"\tat
org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.lambda$doWithTableOps$1(CatalogManager.java:153)",
"\tat
org.apache.gravitino.utils.IsolatedClassLoader.withClassLoader(IsolatedClassLoader.java:86)",
"\tat
org.apache.gravitino.catalog.CatalogManager$CatalogWrapper.doWithTableOps(CatalogManager.java:148)",
"\tat
org.apache.gravitino.catalog.TableOperationDispatcher.lambda$internalCreateTable$26(TableOperationDispatcher.java:597)",
"\tat
org.apache.gravitino.catalog.OperationDispatcher.doWithCatalog(OperationDispatcher.java:117)",
"\tat
org.apache.gravitino.catalog.TableOperationDispatcher.internalCreateTable(TableOperationDispatcher.java:594)",
"\tat
org.apache.gravitino.catalog.TableOperationDispatcher.lambda$createTable$5(TableOperationDispatcher.java:177)",
"\tat
org.apache.gravitino.lock.TreeLockUtils.doWithTreeLock(TreeLockUtils.java:49)",
"\tat
org.apache.gravitino.catalog.TableOperationDispatcher.createTable(TableOperationDispatcher.java:173)",
"\tat
org.apache.gravitino.hook.TableHookDispatcher.createTable(TableHookDispatcher.java:78)",
"\tat
org.apache.gravitino.catalog.TableNormalizeDispatcher.createTable(TableNormalizeDispatcher.java:78)",
"\tat
org.apache.gravitino.listener.TableEventDispatcher.createTable(TableEventDispatcher.java:136)",
"\tat
org.apache.gravitino.server.web.rest.TableOperations.lambda$createTable$1(TableOperations.java:151)",
"\tat
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)",
"\tat java.base/javax.security.auth.Subject.doAs(Subject.java:439)",
"\tat
org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44)",
"\tat org.apache.gravitino.server.web.Utils.doAs(Utils.java:202)",
"\tat
org.apache.gravitino.server.web.rest.TableOperations.createTable(TableOperations.java:137)",
"\tat
org.apache.gravitino.server.web.rest.TableOperations_$$_jvst7c2_1._d3createTable(TableOperations_$$_jvst7c2_1.java)",
"\tat
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
"\tat
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)",
"\tat
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)",
"\tat
org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1268)",
"\tat
org.jvnet.hk2.internal.MethodInterceptorHandler$MethodInvocationImpl.proceed(MethodInterceptorHandler.java:164)",
"\tat
org.apache.gravitino.server.web.filter.GravitinoInterceptionService$MetadataAuthorizationMethodInterceptor.invoke(GravitinoInterceptionService.java:208)",
"\tat
org.jvnet.hk2.internal.MethodInterceptorHandler.invoke(MethodInterceptorHandler.java:97)",
"\tat
org.apache.gravitino.server.web.rest.TableOperations_$$_jvst7c2_1.createTable(TableOperations_$$_jvst7c2_1.java)",
"\tat
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
"\tat
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)",
"\tat
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)",
"\tat
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)",
"\tat
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)",
"\tat
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)",
"\tat
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)",
"\tat
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)",
"\tat
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)",
"\tat
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)",
"\tat
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)",
"\tat
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)",
"\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)",
"\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)",
"\tat org.glassfish.jersey.internal.Errors.process(Errors.java:292)",
"\tat org.glassfish.jersey.internal.Errors.process(Errors.java:274)",
"\tat org.glassfish.jersey.internal.Errors.process(Errors.java:244)",
"\tat
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)",
"\tat
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)",
"\tat
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)",
"\tat
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)",
"\tat
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)",
"\tat
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)",
"\tat
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)",
"\tat
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)",
"\tat
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)",
"\tat
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)",
"\tat
org.apache.gravitino.server.authentication.AuthenticationFilter.lambda$doFilter$0(AuthenticationFilter.java:89)",
"\tat
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)",
"\tat java.base/javax.security.auth.Subject.doAs(Subject.java:439)",
"\tat
org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44)",
"\tat
org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:86)",
"\tat
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
"\tat
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
"\tat
org.apache.gravitino.server.web.VersioningFilter.doFilter(VersioningFilter.java:111)",
"\tat
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
"\tat
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
"\tat
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
"\tat
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)",
"\tat
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)",
"\tat
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)",
"\tat
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)",
"\tat
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)",
"\tat
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)",
"\tat
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
"\tat
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)",
"\tat
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
"\tat org.eclipse.jetty.server.Server.handle(Server.java:516)",
"\tat
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)",
"\tat
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)",
"\tat
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)",
"\tat
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)",
"\tat
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)",
"\tat
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)",
"\tat
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)",
"\tat
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)",
"\tat
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)",
"\tat java.base/java.lang.Thread.run(Thread.java:840)",
"Caused by: java.sql.SQLException: Code: 62. DB::Exception: Syntax
error: failed at position 173 (active) (line 5, col 30): active'' COMMENT
'Status' ",
")",
" ENGINE = MergeTree",
" ORDER BY `id`",
" COMMENT 'ClickHouse table with column defaults (From Gravitino, DO
NOT EDIT: gravitino.v1.uid152314... Expected one of: OR, AND, IS NOT DISTINCT
FROM, IS NULL, IS NOT NULL, BETWEEN, NOT BETWEEN, LIKE, ILIKE, NOT LIKE, NOT
ILIKE, REGEXP, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, MOD, DIV, NOT, NULL,
COMMENT, CODEC, STATISTICS, TTL, PRIMARY KEY, SETTINGS, token, Comma,
ClosingRoundBracket. (SYNTAX_ERROR) (version 25.7.8.71 (official build))",
"",
"\tat
com.clickhouse.jdbc.SqlExceptionUtils.handle(SqlExceptionUtils.java:85)",
"\tat
com.clickhouse.jdbc.SqlExceptionUtils.create(SqlExceptionUtils.java:31)",
"\tat
com.clickhouse.jdbc.SqlExceptionUtils.handle(SqlExceptionUtils.java:90)",
"\tat
com.clickhouse.jdbc.internal.ClickHouseStatementImpl.sendRequest(ClickHouseStatementImpl.java:375)",
"\tat
com.clickhouse.jdbc.internal.ClickHouseStatementImpl.getLastResponse(ClickHouseStatementImpl.java:142)",
"\tat
com.clickhouse.jdbc.internal.ClickHouseStatementImpl.executeLargeUpdate(ClickHouseStatementImpl.java:554)",
"\tat
com.clickhouse.jdbc.internal.ClickHouseStatementImpl.executeUpdate(ClickHouseStatementImpl.java:563)",
"\tat
org.apache.commons.dbcp2.DelegatingStatement.executeUpdate(DelegatingStatement.java:330)",
"\tat
org.apache.commons.dbcp2.DelegatingStatement.executeUpdate(DelegatingStatement.java:330)",
"\tat
org.apache.gravitino.catalog.jdbc.utils.JdbcConnectorUtils.executeUpdate(JdbcConnectorUtils.java:42)",
"\tat
org.apache.gravitino.catalog.jdbc.operation.JdbcTableOperations.create(JdbcTableOperations.java:157)",
"\t... 95 more",
"Caused by: java.io.IOException: Code: 62. DB::Exception: Syntax
error: failed at position 173 (active) (line 5, col 30): active'' COMMENT
'Status' ",
")",
" ENGINE = MergeTree",
" ORDER BY `id`",
" COMMENT 'ClickHouse table with column defaults (From Gravitino, DO
NOT EDIT: gravitino.v1.uid152314... Expected one of: OR, AND, IS NOT DISTINCT
FROM, IS NULL, IS NOT NULL, BETWEEN, NOT BETWEEN, LIKE, ILIKE, NOT LIKE, NOT
ILIKE, REGEXP, IN, NOT IN, GLOBAL IN, GLOBAL NOT IN, MOD, DIV, NOT, NULL,
COMMENT, CODEC, STATISTICS, TTL, PRIMARY KEY, SETTINGS, token, Comma,
ClosingRoundBracket. (SYNTAX_ERROR) (version 25.7.8.71 (official build))",
"",
"\tat
com.clickhouse.client.http.ApacheHttpConnectionImpl.checkResponse(ApacheHttpConnectionImpl.java:241)",
"\tat
com.clickhouse.client.http.ApacheHttpConnectionImpl.post(ApacheHttpConnectionImpl.java:304)",
"\tat
com.clickhouse.client.http.ClickHouseHttpClient.send(ClickHouseHttpClient.java:195)",
"\tat
com.clickhouse.client.AbstractClient.execute(AbstractClient.java:280)",
"\tat
com.clickhouse.client.ClickHouseClientBuilder$Agent.sendOnce(ClickHouseClientBuilder.java:282)",
"\tat
com.clickhouse.client.ClickHouseClientBuilder$Agent.send(ClickHouseClientBuilder.java:294)",
"\tat
com.clickhouse.client.ClickHouseClientBuilder$Agent.execute(ClickHouseClientBuilder.java:349)",
"\tat
com.clickhouse.client.ClickHouseClient.executeAndWait(ClickHouseClient.java:881)",
"\tat
com.clickhouse.client.ClickHouseRequest.executeAndWait(ClickHouseRequest.java:2154)",
"\tat
com.clickhouse.jdbc.internal.ClickHouseStatementImpl.sendRequest(ClickHouseStatementImpl.java:366)",
"\t... 102 more"
]
}
```
### How to reproduce
1. Create a clickhouse catalog
2. Create a clickhouse schema
3. Create a clickhouse table as following:
POST
http://127.0.0.1:18090/api/metalakes/clickhouse_test/catalogs/ck_catalog1/schemas/sales/tables
URL:
http://127.0.0.1:18090/api/metalakes/clickhouse_test/catalogs/ck_catalog1/schemas/sales/tables
Status code: 500
Content Type: application/json
Request Headers
Accept=application/vnd.gravitino.v1+json
Authorization=Basic YW5vbnltb3VzOnRlc3Q=
Content-Type=application/json
Content Body
{
"name": "products",
"comment": "ClickHouse table with column defaults",
"columns": [
{
"name": "id",
"type": "integer",
"comment": "ID",
"nullable": false
},
{
"name": "name",
"type": "string",
"comment": "Name",
"nullable": false
},
{
"name": "price",
"type": "decimal(10,2)",
"comment": "Price",
"nullable": false,
"defaultValue": {
"type": "literal",
"dataType": "decimal(10,2)",
"value": "0.00"
}
},
{
"name": "status",
"type": "string",
"comment": "Status",
"nullable": false,
"defaultValue": {
"type": "literal",
"dataType": "string",
"value": "'active'"
}
}
],
"properties": {
"engine": "MergeTree"
},
"sortOrders": [
{
"sortTerm": {
"type": "field",
"fieldName": [
"id"
]
},
"direction": "asc",
"nullOrdering": "nulls_first"
}
]
}
### Additional context
_No response_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]