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

   ### Which version of ShardingSphere did you use?
   5.2.0
   ### Which project did you use? ShardingSphere-JDBC or ShardingSphere-Proxy?
   ShardingSphere-Proxy
   ### Expected behavior
   insert short data less than 0 successfully  **with   useServerPrepStmts=true 
and  cachePrepStmts=true**
   ### Actual behavior
   Data truncation: Out of range value for column
   ### Steps to reproduce the behavior, such as: SQL to execute, sharding rule 
configuration, when exception occur etc.
   it is same   as  #15984   #10314 ,  has been fixed,but when i  add 
useServerPrepStmts=true and  cachePrepStmts=true  to jdbc url,it reappeared.
   i have to set the useServerPrepStmts=true , otherwise it will cause another 
problem   #21518  , blob data cannot be saved correctly
   
   ### Example codes for reproduce this issue (such as a github link).
   https://github.com/jitawangzi/ShardingSphereProxyBlobTest.git
   all the code and  configuration 、sql  、 etc   are  in  the  project.
   
   run class  ```Main```  directly
   ```  
   DataRecord record = new DataRecord();
   byte[] oriArray = new byte[] { 1, 0, 99, 111, 109, 46, 108, 115, 46, 114, 
112, 99, 46, 115, 101, 114, 118, 101, 114, 46, 82,
                112, 99, 82, 101, 113, 117, 101, 115, -12, 49, 48, 46, 48, 46, 
52, 46, 49, -75, 75, 74, 65, 104, 115, 100, 97, 107, 100,
                104, 97, 115, 107, -28, 115, 101, 116, 68, 97, 116, -31, 1, 1, 
91, 76, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 79,
                98, 106, 101, 99, 116, -69, 6, 9, -64, -39, -86, 20, 3, 115, 
100, 104, 98, 115, 97, 104, 100, 98, 115, -31, 1, 2, 99,
                111, 109, 46, 108, 115, 46, 114, 112, 99, 46, 115, 101, 114, 
118, 101, 114, 46, 82, 112, 99, 82, 101, 115, 112, 111,
                110, 115, -27, 0, 0, 0, 3, 115, 107, 104, 100, 98, 115, 107, 
100, 117, 104, 97, 108, 100, 115, 106, 102, 100, 107, 106,
                97, 102, 110, 97, 100, 102, -22, 10, 66, 61, -8, -5, 108, 25, 
0, 0, 3, 2, 0, 3, 0, 0 };
   record.setBlobData(oriArray);
   record.setIntData(1);
   // If  set this, will cause an exception : Data truncation: Out of range 
value
   record.setShortData((short) -3);
   
   record.setUuid(UUID.randomUUID().toString());
   mapper.insert(record);
   
   DataRecord recordSelect = mapper.selectByPrimaryKey(record.getUuid());
   System.out.println();
   System.out.println("binary data equals result : " + 
Arrays.equals(record.getBlobData(), recordSelect.getBlobData()));
   System.out.println();
   System.out.println("int data equals result : " + 
record.getIntData().equals(recordSelect.getIntData()));
   ```
   **record.setShortData((short) -3);** , 
   the db url in jdbc.properties 
   
```dburl=jdbc:mysql://39.106.203.93:3307/test_sharding?autoReconnect=true&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8&serverTimezone=UTC&useServerPrepStmts=true&cachePrepStmts=true```
   
   after  remove useServerPrepStmts=true&cachePrepStmts=true ,  the short data 
insert  correctly,but  cause another problem: 
   **binary data equals result : false**
   
   "config-sharding.yaml"
   
   ``` 
   schemaName: test_sharding
   
   dataSources:
     ds_0:
       url: jdbc:mysql://127.0.0.1:51234/test?serverTimezone=UTC&useSSL=false
       username: sharding
       password: sharding
       connectionTimeoutMilliseconds: 30000
       idleTimeoutMilliseconds: 60000
       maxLifetimeMilliseconds: 1800000
       maxPoolSize: 50
       minPoolSize: 1
   ```
   
   "server.yaml"
   
   ``` 
   
   rules:
     - !AUTHORITY
        users:
         - sharding@:sharding
        provider:
         type: ALL_PRIVILEGES_PERMITTED
     - !TRANSACTION
        defaultType: LOCAL
     - !SQL_PARSER
        sqlCommentParseEnabled: true
        sqlStatementCache:
         initialCapacity: 2000
         maximumSize: 65535
        parseTreeCache:
         initialCapacity: 128
         maximumSize: 1024
   
   props:
     max-connections-size-per-query: 3
     kernel-executor-size: 16
     proxy-frontend-flush-threshold: 128
     proxy-opentracing-enabled: false
     proxy-hint-enabled: false
     sql-show: true
     check-table-metadata-enabled: false
     show-process-list-enabled: false
     proxy-backend-query-fetch-size: -1
     check-duplicate-table-enabled: false
     proxy-frontend-executor-size: 0
     proxy-backend-executor-suitable: OLAP
     proxy-frontend-max-connections: 0 
     proxy-mysql-default-version: 8.0.26
   
     ```
   
   table sql : 
   ```
   CREATE TABLE `data_record` (
     `uuid` varchar(40) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL 
DEFAULT '',
     `blob_data` blob,
     `int_data` int DEFAULT NULL,
     `short_data` smallint DEFAULT NULL,
     `byte_data` tinyint DEFAULT NULL,
     `boolean_data` tinyint(1) DEFAULT NULL,
     `string_data` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
     PRIMARY KEY (`uuid`)
   ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci;
   ```
   
   
   
   
   
   
   


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