Skip to content

shardingsphere-proxy: 5.1.1 support interpolateParams=false, but shardingsphere-proxy: 5.5.2 do not support. #37993

@penghuazhou

Description

@penghuazhou

Feature Request

shardingsphere-proxy: 5.1.1 support interpolateParams=false, but shardingsphere-proxy: 5.5.2 do not support.

Describe the feature you would like.

shardingsphere-proxy: 5.5.2

if use "sharding:sharding@tcp(127.0.0.1:23307)/sharding_db?charset=utf8mb4&parseTime=True&loc=Local&interpolateParams=false", it will throw error below, if "interpolateParams=true", it will success.

zego@192 claude-flow-demo % go run sharding.go

2026/02/09 16:42:31 /Users/zego/workspace/claude-flow-demo/sharding.go:29 Error 20024 (44000): Sharding value '[B@78a67186' must implements Comparable.
[12.818ms] [rows:-] SELECT deleted_at FROM tbl_group WHERE app_id = 0 AND group_id = '0' AND deleted_at > 0 LIMIT 1
2026/02/09 16:42:31 Query failed: Error 20024 (44000): Sharding value '[B@78a67186' must implements Comparable.

go client

package main

import (
	"fmt"
	"log"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

func main() {
	// Database connection
	dsn := "sharding:sharding@tcp(192.168.12.213:23307)/sharding_db?charset=utf8mb4&parseTime=True&loc=Local&interpolateParams=false"

	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info),
	})
	if err != nil {
		log.Fatalf("Failed to connect: %v", err)
	}

	// Simple query
	var result []struct {
		DeletedAt int64 `gorm:"column:deleted_at"`
	}

	rawSQL := "SELECT deleted_at FROM tbl_group WHERE app_id = ? AND group_id = ? AND deleted_at > 0 LIMIT 1"
	err = db.Raw(rawSQL, int64(0), "0").Scan(&result).Error

	if err != nil {
		log.Fatalf("Query failed: %v", err)
	}

	fmt.Printf("✅ Query succeeded, results: %+v\n", result)
}

database-sharding.yaml

databaseName: sharding_db

dataSources:
  ds_0:
    url: jdbc:mysql://127.0.0.1:3306/sharding?serverTimezone=UTC&useSSL=false&charset=utf8mb4&parseTime=True&allowPublicKeyRetrieval=true
    username: sharding
    password: sharding
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 500
    minPoolSize: 10
    customPoolProps:
      leakDetectionThreshold: 30000
      registerMbeans: true

rules:
- !SHARDING
  tables:
    tbl_group:
      actualDataNodes: ds_0.tbl_group_${0}_${0}
      tableStrategy:
        complex:
          shardingColumns: app_id,group_id
          shardingAlgorithmName: tbl_group_strategy
  defaultDatabaseStrategy:
    none:
  defaultTableStrategy:
    none:
  defaultKeyGenerateStrategy:
    keyGeneratorName: snowflake
    column: id

  shardingAlgorithms:
    tbl_group_strategy:
      type: COMPLEX_INLINE
      props:
        algorithm-expression: tbl_group_${app_id}_${Math.abs(group_id.hashCode()) % 2}

  keyGenerators:
    snowflake:
      type: SNOWFLAKE
      props:
        worker-id: 561

create table

CREATE TABLE `tbl_group` (
  `app_id` bigint NOT NULL COMMENT '应用ID',
  `group_id` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '群组ID',
  `deleted_at` bigint NOT NULL DEFAULT '0' COMMENT '删除时间(毫秒时间戳,0表示未删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions