Skip to content

Table with transaction column name not parsed  #1477

Description

@subkanthi

Describe the bug

Table with transaction column name not parsed

 create table test_execute_batch(a Int32, transaction String)engine=Memory

Expected behaviour

It should be parsed and the table should be created.

Code example

            Assert.assertFalse(stmt.execute("drop table if exists test_execute_batch; "
                    + "create table test_execute_batch(a Int32, transaction String)engine=Memory"), "Should not have result set");

Error log

2023-10-23 10:44:09:447 -0400 [main] WARN ClickHouseSqlParser - Parse error at line 1, column 83. Encountered: transaction. If you believe the SQL is valid, please feel free to open an issue on Github with this warning and the following SQL attached.
drop table if exists test_execute_batch; create table test_execute_batch(a Int32, transaction String)engine=Memory

java.sql.SQLException: Code: 62. DB::Exception: Syntax error (Multi-statements are not allowed): failed at position 40 (end of query): ; create table test_execute_batch(a Int32, transaction String)engine=Memory. . (SYNTAX_ERROR) (version 23.2.4.12 (official build))
, server ClickHouseNode [uri=http://localhost:49238/test_statement]@1568086

Configuration

Environment

  • Client version:
  • Language version:
  • OS:

ClickHouse server

  • ClickHouse Server version:
  • ClickHouse Server non-default settings, if any:
  • CREATE TABLE statements for tables involved:
  • Sample data for all these tables, use clickhouse-obfuscator if necessary

Activity

  1. mzitnik commented on Oct 25, 2023

    @mzitnik
    Contributor

    @subkanthi Can you provide a simple snippet that reproduces the issue?

  2. subkanthi commented on Oct 25, 2023

    @subkanthi
    ContributorAuthor

    Hi @mzitnik , here is the modified Integration test

        @Test(groups = "integration")
        public void testExecuteBatch() throws SQLException {
            Properties props = new Properties();
            try (Connection conn = newConnection(props); Statement stmt = conn.createStatement()) {
                Assert.assertEquals(stmt.executeBatch(), new int[0]);
                Assert.assertEquals(stmt.executeLargeBatch(), new long[0]);
                stmt.addBatch("select 1");
                stmt.clearBatch();
                Assert.assertEquals(stmt.executeBatch(), new int[0]);
                Assert.assertEquals(stmt.executeLargeBatch(), new long[0]);
                stmt.addBatch("select 1");
                // mixed usage
                Assert.assertThrows(SQLException.class, () -> stmt.execute("select 2"));
                Assert.assertThrows(SQLException.class, () -> stmt.executeQuery("select 2"));
                Assert.assertThrows(SQLException.class,
                        () -> stmt.executeLargeUpdate("drop table if exists non_existing_table"));
                Assert.assertThrows(SQLException.class,
                        () -> stmt.executeUpdate("drop table if exists non_existing_table"));
                // query in batch
                Assert.assertThrows(BatchUpdateException.class, () -> stmt.executeBatch());
                stmt.addBatch("select 1");
                Assert.assertThrows(BatchUpdateException.class, () -> stmt.executeLargeBatch());
    
                Assert.assertFalse(stmt.execute("drop table if exists test_execute_batch; "
                        + "create table test_execute_batch(a Int32, transaction String)engine=Memory"), "Should not have result set");
                stmt.addBatch("insert into test_execute_batch values(1,'1')");
                stmt.addBatch("insert into test_execute_batch values(2,'2')");
                stmt.addBatch("insert into test_execute_batch values(3,'3')");
                Assert.assertEquals(stmt.executeBatch(), new int[] { 1, 1, 1 });
    

    Note: with backticks it works transaction

  3. mva-coinify commented on Nov 1, 2024

    @mva-coinify

    Any chance this can be fixed? Seems like the issue is replicable and has been a year ago.

  4. chernser commented on Nov 4, 2024

    @chernser
    Contributor

    Good day, @mva-coinify!
    Will look into it.
    Would it help if column is wrapped with "?

  5. added this to the Priority Backlog milestone on Nov 4, 2024
  6. chernser commented on Jan 9, 2025

    @chernser
    Contributor

    need to retest with new jdbc driver

  7. removed this from the Priority Backlog milestone on Jan 10, 2025
  8. github-actions commented on Jan 11, 2026

    @github-actions

    This issue has been automatically marked as stale because it has not had activity in the last year. It will be closed in 30 days if no further activity occurs. Please feel free to leave a comment if you believe the issue is still relevant. Thank you for your contributions!

  9. chernser commented on Jan 30, 2026

    @chernser
    Contributor

    parser problem. know issue.

  10. added this to the 0.12.0 milestone on Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugjdbc-v1JDBC driverjdbc-v2jdbc-v2 issuesusabilitywhat affects usability of the client

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions