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]

Reply via email to