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

   ## Bug Report
   
   ### Which version of ShardingSphere did you use?
   
   shardingsphere-proxy 5.5.2
   postgres 17.2 as backend
   
   ### Expected behavior
   
   I will provide the following steps to reproduce this bug.
   
   global.yaml:
   ```yaml
   mode:
     type: Cluster
     repository:
       type: ZooKeeper
       props: 
         namespace: governance_ds
         server-lists: host.docker.internal:2181
         retryIntervalMilliseconds: 500
         timeToLiveSeconds: 60
   
   authority:
    users:
      - user: postgres@%
        password: 123abc
        admin: true
      - user: sharding
        password: sharding
    privilege:
      type: ALL_PERMITTED
   
   logging:
    loggers:
    - loggerName: ShardingSphere-SQL
      additivity: true
      level: DEBUG
      props:
        enable: true
   
   sqlFederation:
    sqlFederationEnabled: true
    allQueryUseSQLFederation: false
    executionPlanCache:
      initialCapacity: 2000
      maximumSize: 65535
   
   props:
     system-log-level: DEBUG
     sql-show: true
     check-table-metadata-enabled: true
     proxy-frontend-database-protocol-type: PostgreSQL
   ```
   database-sharding.yaml
   ```yaml
   databaseName: postgres
   #
   dataSources:
     ds_0:
      url: jdbc:postgresql://host.docker.internal:5443/postgres
      username: postgres
      password: postgres
     ds_1:
      url: jdbc:postgresql://host.docker.internal:5444/postgres
      username: postgres
      password: postgres
     ds_2:
      url: jdbc:postgresql://host.docker.internal:5445/postgres
      username: postgres
      password: postgres
     ds_3:
      url: jdbc:postgresql://host.docker.internal:5446/postgres
      username: postgres
      password: postgres
     ds_4:
      url: jdbc:postgresql://host.docker.internal:5447/postgres
      username: postgres
      password: postgres
   ```
   
   docker-compose.yml
   ```yml
   version: '3.8'
   services:
     zookeeper:
       image: zookeeper:3.8.4
       container_name: zookeeper
       restart: always
       ports:
         - "2181:2181"
       environment:
         ZOO_MY_ID: 1
     shardingsphere-proxy:
       image: apache/shardingsphere-proxy:5.5.2
       container_name: shardingsphere-proxy
       environment:
         - PORT=5432
       ports:
         - "5440:5432" 
       volumes:
         - ./conf:/opt/shardingsphere-proxy/conf
         - ./logs:/opt/shardingsphere-proxy/logs
         - ./ext-lib:/opt/shardingsphere-proxy/ext-lib
       depends_on:
         - zookeeper
         - pg1
         - pg2
         - pg3
         - pg4
         - pg5
   
     pg1:
       image: postgres:17
       container_name: pg1
       environment:
         POSTGRES_USER: postgres
         POSTGRES_HOST_AUTH_METHOD: "trust"
       ports:
         - "5443:5432"
       volumes:
         - pg1_data:/var/lib/postgresql/data
   
     pg2:
       image: postgres:17
       container_name: pg2
       environment:
         POSTGRES_USER: postgres
         POSTGRES_HOST_AUTH_METHOD: "trust"
       ports:
         - "5444:5432"
       volumes:
         - pg2_data:/var/lib/postgresql/data
   
     pg3:
       image: postgres:17
       container_name: pg3
       environment:
         POSTGRES_USER: postgres
         POSTGRES_HOST_AUTH_METHOD: "trust"
       ports:
         - "5445:5432"
       volumes:
         - pg3_data:/var/lib/postgresql/data
   
     pg4:
       image: postgres:17
       container_name: pg4
       environment:
         POSTGRES_USER: postgres
         POSTGRES_HOST_AUTH_METHOD: "trust"
       ports:
         - "5446:5432"
       volumes:
         - pg4_data:/var/lib/postgresql/data
   
     pg5:
       image: postgres:17
       container_name: pg5
       environment:
         POSTGRES_USER: postgres
         POSTGRES_HOST_AUTH_METHOD: "trust"
       ports:
         - "5447:5432"
       volumes:
         - pg5_data:/var/lib/postgresql/data
   
   volumes:
     pg1_data:
     pg2_data:
     pg3_data:
     pg4_data:
     pg5_data:
   ```
   after starting the cluster, create a new database named `testdb` on all 
postgres-deatabases and sharding-sphere proxy, then try:
   ```sql
   REGISTER STORAGE UNIT ds_0 
(HOST="host.docker.internal",PORT=5443,DB="testdb",USER="postgres",PASSWORD="123abc");
   
   REGISTER STORAGE UNIT ds_2 
(HOST="host.docker.internal",PORT=5445,DB="testdb",USER="postgres",PASSWORD="123abc");
   
   REGISTER STORAGE UNIT ds_4 
(HOST="host.docker.internal",PORT=5447,DB="testdb",USER="postgres",PASSWORD="123abc");
   
   REGISTER STORAGE UNIT ds_3 
(HOST="host.docker.internal",PORT=5446,DB="testdb",USER="postgres",PASSWORD="123abc");
   
   CREATE SHARDING TABLE RULE IF NOT EXISTS t0 (STORAGE_UNITS(ds_0, ds_2, ds_3, 
ds_4), SHARDING_COLUMN=c3, TYPE(NAME="mod",PROPERTIES("sharding-count"="5")), 
KEY_GENERATE_STRATEGY(COLUMN=pkey,TYPE(NAME="UUID")), AUDIT_STRATEGY 
(TYPE(NAME="DML_SHARDING_CONDITIONS"),ALLOW_HINT_DISABLE=true));
   
   DROP TABLE IF EXISTS t0;
   
   create table t0 ( 
   vkey int4 ,
   pkey int4 ,
   c0 text ,
   c1 text ,
   c2 numeric ,
   c3 numeric ,
   c4 int4 ,
   c5 timestamp ,
   c6 numeric ,
   c7 numeric ,
   c8 int4 
   );
   
   ERROR:  Rule and storage meta data mismatched, reason is: Can not get 
uniformed table structure for logic table 't0', it has different meta data of 
actual tables are as follows: 
   
   CREATE SHARDING TABLE RULE IF NOT EXISTS t1 (STORAGE_UNITS(ds_0, ds_4), 
SHARDING_COLUMN=pkey, TYPE(NAME="mod",PROPERTIES("sharding-count"="7")), 
KEY_GENERATE_STRATEGY(COLUMN=pkey,TYPE(NAME="SNOWFLAKE")), AUDIT_STRATEGY 
(TYPE(NAME="DML_SHARDING_CONDITIONS"),ALLOW_HINT_DISABLE=true));
   
   DROP TABLE IF EXISTS t1;
   
   create table t1 ( 
   vkey int4 ,
   pkey int4 ,
   c7 text ,
   c8 timestamp ,
   c9 text ,
   c10 timestamp ,
   c11 int4 
   );
   ```
   Both `t0` and `t1` should execute successfully.
   
   ### Actual behavior
   
   `t0` got error: Rule and storage meta data mismatched, reason is: Can not 
get uniformed table structure for logic table 't0', it has different meta data 
of actual tables are as follows.
   
   Besides, if we swap the creation order of t0 and t1, then t1 will fail, 
while t0 will be created successfully.
   
   ### Reason analyze (If you can)
   
   This bug is related to dist variable `check-table-metadata-enabled` with 
postgres, when it is set to `false`, the table could be created successfully, 
but in this case, the table is acutally sharded and could see the physical 
tables in those backend postgres, I guess the bug happens in the checking stage 
of creating a sharding table.
   


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