@Override public void fill(final TableSegment sqlSegment, final SQLStatement sqlStatement, final String sql, final ShardingRule shardingRule, final ShardingTableMetaData shardingTableMetaData) { boolean fill = false; String tableName = sqlSegment.getName(); if (shardingRule.contains(tableName) || shardingRule.isBroadcastTable(tableName) || shardingRule.findBindingTableRule(tableName).isPresent() || shardingRule.getShardingDataSourceNames().getDataSourceNames().contains(shardingRule.getShardingDataSourceNames().getDefaultDataSourceName())) { fill = true; } else { if (!(sqlStatement instanceof SelectStatement) && sqlStatement.getTables().isEmpty()) { fill = true; } } if (fill) { sqlStatement.getTables().add(new Table(sqlSegment.getName(), sqlSegment.getAlias())); sqlStatement.getSQLTokens().add(sqlSegment.getToken()); } } }