gesanri opened a new issue, #36056:
URL: https://github.com/apache/shardingsphere/issues/36056

   Shardingsphere Version: 5.5.1
   springboot version:3.3.0
   
   I'm using mysql before, and I configure the sharding like this:
   
   mode:
     type: Standalone
     repository:
       type: JDBC
   
   dataSources:
     brs:
       dataSourceClassName: com.zaxxer.hikari.HikariDataSource
       driverClassName: com.mysql.cj.jdbc.Driver
       jdbcUrl: jdbc:mysql://localhost:3306/abc
       username: root
       password: 12345678
   
   it works
   
   while when I change to postgres, as you know, postgres have database and 
schema, the table is under the schema, not database
   
   I change the config like this:
   mode:
     type: Standalone
     repository:
       type: JDBC
   
   dataSources:
     brs:
       dataSourceClassName: com.zaxxer.hikari.HikariDataSource
       driverClassName: org.postgresql.Driver
       jdbcUrl: jdbc:postgresql://localhost:5432/abc?currentSchema=def
       username: postgres
       password: 12345678
   
   The table are all under the schema named def, while when I start up the 
application, I get error:
   Caused by: 
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException:
 Table or view 'XXX' does not exist.
        at 
org.apache.shardingsphere.infra.binder.engine.segment.from.type.SimpleTableSegmentBinder.lambda$checkTableExists$3(SimpleTableSegmentBinder.java:130)
        at 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions.checkState(ShardingSpherePreconditions.java:44)
        at 
org.apache.shardingsphere.infra.binder.engine.segment.from.type.SimpleTableSegmentBinder.checkTableExists(SimpleTableSegmentBinder.java:127)
        at 
org.apache.shardingsphere.infra.binder.engine.segment.from.type.SimpleTableSegmentBinder.bind(SimpleTableSegmentBinder.java:84)
        at 
org.apache.shardingsphere.infra.binder.engine.segment.from.TableSegmentBinder.bind(TableSegmentBinder.java:57)
        at 
org.apache.shardingsphere.infra.binder.engine.statement.dml.SelectStatementBinder.lambda$bind$0(SelectStatementBinder.java:54)
   
   I'm sure the table exists, and when I debug this error, I find it in 
SimpleTableSegmentBinder.class
   
   private static void checkTableExists(SQLStatementBinderContext 
binderContext, String databaseName, String schemaName, String tableName) {
           if (!"dual".equalsIgnoreCase(tableName)) {
               if (!SystemSchemaManager.isSystemTable(schemaName, tableName)) {
                   if 
(!binderContext.getExternalTableBinderContexts().containsKey(tableName)) {
                       
ShardingSpherePreconditions.checkState(binderContext.getMetaData().containsDatabase(databaseName)
 && 
binderContext.getMetaData().getDatabase(databaseName).containsSchema(schemaName)
 && 
binderContext.getMetaData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName),
 () -> new TableNotFoundException(tableName));
                   }
               }
           }
       }
   
   I find the schemaName is public, which is the default schema of postgres, so 
it seems the config:
   
   jdbc:postgresql://localhost:5432/abc?currentSchema=def
   
   currentSchema does not work, why?Does shardingsphere only supports default 
schema?


-- 
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