You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by GitBox <gi...@apache.org> on 2019/07/01 07:32:20 UTC

[GitHub] [incubator-shardingsphere] Saisimon opened a new issue #2632: ANTLR parse error when logic sql contains 'boolean', 'timestamp' in PostgreSQL database

Saisimon opened a new issue #2632: ANTLR parse error when logic sql contains 'boolean', 'timestamp' in PostgreSQL database
URL: https://github.com/apache/incubator-shardingsphere/issues/2632
 
 
   ## Bug Report
   
   **For English only**, other languages will not accept.
   
   Before report a bug, make sure you have:
   
   - Searched open and closed [GitHub issues](https://github.com/apache/incubator-shardingsphere-example/issues).
   - Read documentation: [ShardingSphere Doc](https://shardingsphere.apache.org/document/current/en/overview).
   
   Please pay attention on issues you submitted, because we maybe need more details. 
   If no response **more than 7 days** and we cannot reproduce it on current information, we will **close it**.
   
   Please answer these questions before submitting your issue. Thanks!
   
   ### Which version of ShardingSphere did you use?
   4.0.0-RC2-SNAPSHOT
   ### Which project did you use? Sharding-JDBC or Sharding-Proxy?
   Sharding-JDBC
   ### Expected behavior
   work well
   ### Actual behavior
   line 1:48 mismatched input 'boolean' expecting {...}
   [ColumnDefinitionExtractor#extract](https://github.com/apache/incubator-shardingsphere/blob/dev/sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/extractor/impl/ddl/column/ColumnDefinitionExtractor.java#L44) throws NullPointerException
   ### Reason analyze (If you can)
   
   ### Steps to reproduce the behavior, such as: SQL to execute, sharding rule configuration, when exception occur etc.
   * Make sure 'demo' table does not exist in PostgreSQL
   ```xml
   <properties>
   		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   		<maven.compiler.source>1.8</maven.compiler.source>
   		<maven.compiler.target>1.8</maven.compiler.target>
   		<java.version>1.8</java.version>
   		<!-- <sharding-sphere.version>4.0.0-RC1</sharding-sphere.version> -->
   		<sharding-sphere.version>4.0.0-RC2-SNAPSHOT</sharding-sphere.version>
   	</properties>
   	
   	<parent>
   		<groupId>org.springframework.boot</groupId>
   		<artifactId>spring-boot-starter-parent</artifactId>
   		<version>2.0.1.RELEASE</version>
   		<relativePath />
   	</parent>
   
   	<dependencies>
   		<dependency>
   			<groupId>org.springframework.boot</groupId>
   			<artifactId>spring-boot-starter-web</artifactId>
   		</dependency>
   		<dependency>
   			<groupId>org.springframework.boot</groupId>
   			<artifactId>spring-boot-starter-data-jpa</artifactId>
   		</dependency>
   		<dependency>
   			<groupId>org.postgresql</groupId>
   			<artifactId>postgresql</artifactId>
   		</dependency>
   		<dependency>
   			<groupId>org.apache.shardingsphere</groupId>
   			<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
   			<version>${sharding-sphere.version}</version>
   		</dependency>
   		<dependency>
   			<groupId>org.projectlombok</groupId>
   			<artifactId>lombok</artifactId>
   			<scope>provided</scope>
   		</dependency>
   	</dependencies>
   ```
   application.yml
   ```yml
   spring:
     jpa:
       show-sql: true
       generate-ddl: true
     shardingsphere:
       datasource:
         names: d0,d1
         d0:
           type: com.zaxxer.hikari.HikariDataSource
           driver-class-name: org.postgresql.Driver
           jdbc-url: jdbc:postgresql://dbserver:5432/d0
           username: root
           password:
         d1:
           type: com.zaxxer.hikari.HikariDataSource
           driver-class-name: org.postgresql.Driver
           jdbc-url: jdbc:postgresql://dbserver:5432/d1
           username: root
           password:
       props:
         sql:
           show: true
       sharding:
         default-data-source-name: d0
         tables:
           demo:
             actual-data-nodes: d$->{0..1}.demo
             database-strategy:
               inline:
                 sharding-column: id
                 algorithm-expression: d$->{id % 2}
             key-generator:
               column: id
               type: SNOWFLAKE
   ```
   Demo.java
   ```java
   @Entity
   @Table(name="demo")
   @Setter
   @Getter
   @ToString
   public class Demo {
   
   	@Id
   	@GeneratedValue(strategy=GenerationType.IDENTITY)
   	private Long id;
   	
   	@Column
   	private boolean test;
   
           @Column
   	private Date testDate;
   	
   }
   ```
   DemoApplication.java
   ```java
   @SpringBootApplication
   public class DemoApplication {
   	
   	public static void main(String[] args) {
   		SpringApplication.run(DemoApplication.class, args);
   	}
   	
   }
   ```
   Log
   ```
   ...
   Hibernate: create table demo (id  bigserial not null, test boolean, test_date timestamp, primary key (id))
   line 1:48 mismatched input 'boolean' expecting {'U', 'u', INSERT, UPDATE, DELETE, ALTER, DROP, TRUNCATE, REVOKE, ADD, SET, INDEX, KEY, FUNCTION, TRIGGER, PROCEDURE, IF, BEGIN, COMMIT, ROLLBACK, SAVEPOINT, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, CURRENT, ENABLE, DISABLE, ADMIN, ESCAPE, EXCLUDE, PARTITION, UNKNOWN, ALWAYS, CASCADE, GENERATED, ISOLATION, LEVEL, OPTION, PRIVILEGES, READ, ROLE, ROWS, START, TRANSACTION, ACTION, CACHE, CHARACTERISTICS, CLUSTER, COMMENTS, CONSTRAINTS, CYCLE, DATA, DATABASE, DEFAULTS, DEFERRED, DEPENDS, DOMAIN, EXCLUDING, EXECUTE, EXTENDED, EXTENSION, EXTERNAL, EXTRACT, FILTER, FIRST, FOLLOWING, FORCE, GLOBAL, IDENTITY, IMMEDIATE, INCLUDING, INCREMENT, INDEXES, INHERIT, INHERITS, INCLUDE, LANGUAGE, LARGE, LAST, LOCAL, LOGGED, MAIN, MATCH, MAXVALUE, MINVALUE, NOTHING, NULLS, OBJECT, OIDS, OVER, OWNED, OWNER, PARTIAL, PLAIN, PRECEDING, RANGE, RENAME, REPLICA, RESET, RESTART, RESTRICT, ROUTINE, RULE, SCHEMA, SECURITY, SEQUENCE, SESSION, SHOW, SIMPLE, STATISTICS, STORAGE, TABLESPACE, TEMP, TEMPORARY, TYPE, UNBOUNDED, UNLOGGED, USAGE, VALID, VALIDATE, WITHIN, WITHOUT, ZONE, OF, GROUPS, RECURSIVE, IDENTIFIER_}
   line 1:67 mismatched input 'timestamp' expecting {'U', 'u', INSERT, UPDATE, DELETE, ALTER, DROP, TRUNCATE, REVOKE, ADD, SET, INDEX, KEY, FUNCTION, TRIGGER, PROCEDURE, IF, BEGIN, COMMIT, ROLLBACK, SAVEPOINT, YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, CURRENT, ENABLE, DISABLE, ADMIN, ESCAPE, EXCLUDE, PARTITION, UNKNOWN, ALWAYS, CASCADE, GENERATED, ISOLATION, LEVEL, OPTION, PRIVILEGES, READ, ROLE, ROWS, START, TRANSACTION, ACTION, CACHE, CHARACTERISTICS, CLUSTER, COMMENTS, CONSTRAINTS, CYCLE, DATA, DATABASE, DEFAULTS, DEFERRED, DEPENDS, DOMAIN, EXCLUDING, EXECUTE, EXTENDED, EXTENSION, EXTERNAL, EXTRACT, FILTER, FIRST, FOLLOWING, FORCE, GLOBAL, IDENTITY, IMMEDIATE, INCLUDING, INCREMENT, INDEXES, INHERIT, INHERITS, INCLUDE, LANGUAGE, LARGE, LAST, LOCAL, LOGGED, MAIN, MATCH, MAXVALUE, MINVALUE, NOTHING, NULLS, OBJECT, OIDS, OVER, OWNED, OWNER, PARTIAL, PLAIN, PRECEDING, RANGE, RENAME, REPLICA, RESET, RESTART, RESTRICT, ROUTINE, RULE, SCHEMA, SECURITY, SEQUENCE, SESSION, SHOW, SIMPLE, STATISTICS, STORAGE, TABLESPACE, TEMP, TEMPORARY, TYPE, UNBOUNDED, UNLOGGED, USAGE, VALID, VALIDATE, WITHIN, WITHOUT, ZONE, OF, GROUPS, RECURSIVE, IDENTIFIER_}
   2019-07-01 15:26:43.157  WARN 57960 --- [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.NullPointerException
   2019-07-01 15:26:43.157  INFO 57960 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
   2019-07-01 15:26:43.159  INFO 57960 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
   2019-07-01 15:26:43.159  INFO 57960 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Shutdown initiated...
   2019-07-01 15:26:43.160  INFO 57960 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Shutdown completed.
   2019-07-01 15:26:43.167  INFO 57960 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
   2019-07-01 15:26:43.179  INFO 57960 --- [           main] ConditionEvaluationReportLoggingListener : 
   
   Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
   2019-07-01 15:26:43.181 ERROR 57960 --- [           main] o.s.boot.SpringApplication               : Application run failed
   
   org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.NullPointerException
   	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1702) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:859) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
   	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
   	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:395) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
   	at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
   	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
   	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.1.RELEASE.jar:2.0.1.RELEASE]
   	at net.saisimon.demo.DemoApplication.main(DemoApplication.java:16) [classes/:na]
   Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is java.lang.NullPointerException
   	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:402) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1761) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1698) ~[spring-beans-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	... 16 common frames omitted
   Caused by: java.lang.NullPointerException: null
   	at org.apache.shardingsphere.core.parse.extractor.impl.ddl.column.ColumnDefinitionExtractor.extract(ColumnDefinitionExtractor.java:44) ~[classes/:na]
   	at org.apache.shardingsphere.core.parse.extractor.impl.ddl.column.ColumnDefinitionsExtractor.extract(ColumnDefinitionsExtractor.java:44) ~[classes/:na]
   	at org.apache.shardingsphere.core.parse.extractor.SQLSegmentsExtractorEngine.extract(SQLSegmentsExtractorEngine.java:55) ~[classes/:na]
   	at org.apache.shardingsphere.core.parse.SQLParseEngine.parse(SQLParseEngine.java:69) ~[classes/:na]
   	at org.apache.shardingsphere.core.parse.entry.SQLParseEntry.parse(SQLParseEntry.java:48) ~[classes/:na]
   	at org.apache.shardingsphere.core.route.router.sharding.ParsingSQLRouter.parse(ParsingSQLRouter.java:76) ~[classes/:na]
   	at org.apache.shardingsphere.core.route.StatementRoutingEngine.route(StatementRoutingEngine.java:55) ~[classes/:na]
   	at org.apache.shardingsphere.core.SimpleQueryShardingEngine.route(SimpleQueryShardingEngine.java:60) ~[classes/:na]
   	at org.apache.shardingsphere.core.BaseShardingEngine.executeRoute(BaseShardingEngine.java:88) ~[classes/:na]
   	at org.apache.shardingsphere.core.BaseShardingEngine.shard(BaseShardingEngine.java:72) ~[classes/:na]
   	at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingStatement.shard(ShardingStatement.java:255) ~[classes/:na]
   	at org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingStatement.execute(ShardingStatement.java:191) ~[classes/:na]
   	at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:312) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:460) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892) ~[hibernate-core-5.2.16.Final.jar:5.2.16.Final]
   	at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390) ~[spring-orm-5.0.5.RELEASE.jar:5.0.5.RELEASE]
   	... 20 common frames omitted
   ```
   ### Example codes for reproduce this issue (such as a github link).
   

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services