Afsalmc commented on issue #29841: URL: https://github.com/apache/shardingsphere/issues/29841#issuecomment-1958425446
@strongduanmu Forgot to mention that I am using java API to add default sharding strategy. ` shardingRuleConfig.setDefaultDatabaseShardingStrategy(new StandardShardingStrategyConfiguration("Accountid", "shardingLogic"));` shardingLogic is a custom sharding Logic ``` public final class ShardingLogic implements StandardShardingAlgorithm<Integer> { private Map<Integer,String> shardMap = new HashMap<>(); private shardMapLoader shardMapLoader; private AbstractConfiguration config; public ShardingLogic() throws ConfigurationException { config = Main.getConfig(); var shardConnection = config.getString("shardMapJdbcUrl"); var shardUser = config.getString("shardMapUserName"); var shardPass = config.getString("shardMapPass"); shardMapLoader = new shardMapLoader(shardConnection,shardUser,shardPass); shardMap = shardMapLoader.LoadtoJavaMap(); } @Override public String doSharding(final Collection<String> availableTargetNames, final PreciseShardingValue<Integer> shardingValue) { for (String each : availableTargetNames) { if(!shardMap.containsKey(shardingValue.getValue())) break; if(availableTargetNames.size() ==1){ return each; } var dbSource = shardMap.get(shardingValue.getValue()); if(!each.contains(">")){ for (var dataSources: each.split("\\|")) { if(dbSource.equals(dataSources)){ return each; } } } var shardingSchema = shardingValue.getLogicTableName().split("__",2)[0]; var targetSchemaSet = each.split(">")[0]; String[] targetSchemas = null != config.getString(targetSchemaSet+"Schema") ? config.getString(targetSchemaSet+"Schema").split(",") : new String[]{""}; var isMatchingSchema = (null !=shardingSchema) && Arrays.asList(targetSchemas).contains(shardingSchema); if(isMatchingSchema){ var targetSources = each.split(">")[1].split("\\|"); for(var targetSource:targetSources){ if(dbSource.equals(targetSource)) return each; } } } return null; } @Override public Collection<String> doSharding(final Collection<String> availableTargetNames, final RangeShardingValue<Integer> shardingValue) { return availableTargetNames; } } ``` -- 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: notifications-unsubscr...@shardingsphere.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org