private List<Object> getRoutedParameters(final SQLUnit sqlUnit) { List<Object> result = new LinkedList<>(); for (List<Object> each : sqlUnit.getParameterSets()) { result.addAll(each); } return result; } }
private List<Object> getRoutedParameters(final SQLUnit sqlUnit) { List<Object> result = new LinkedList<>(); for (List<Object> each : sqlUnit.getParameterSets()) { result.addAll(each); } return result; } }
@Override public List<Object> apply(final StatementExecuteUnit input) { return input.getRouteUnit().getSqlUnit().getParameterSets().get(0); } }));
private void reviseBatchRouteUnit(final BatchRouteUnit oldBatchRouteUnit, final BatchRouteUnit newBatchRouteUnit) { oldBatchRouteUnit.getRouteUnit().getSqlUnit().getParameterSets().add(newBatchRouteUnit.getRouteUnit().getSqlUnit().getParameterSets().get(0)); oldBatchRouteUnit.mapAddBatchCount(batchCount); }
/** * Get parameter sets. * * @param statement statement * @return parameter sets */ public List<List<Object>> getParameterSet(final Statement statement) { Optional<StatementExecuteUnit> target; List<List<Object>> result = new LinkedList<>(); for (ShardingExecuteGroup<StatementExecuteUnit> each : getExecuteGroups()) { target = Iterators.tryFind(each.getInputs().iterator(), new Predicate<StatementExecuteUnit>() { @Override public boolean apply(final StatementExecuteUnit input) { return input.getStatement().equals(statement); } }); if (target.isPresent()) { result.addAll(target.get().getRouteUnit().getSqlUnit().getParameterSets()); break; } } return result; }
/** * Print SQL log for sharding rule. * * @param logicSQL logic SQL * @param sqlStatement SQL statement * @param routeUnits route units */ public static void logSQL(final String logicSQL, final SQLStatement sqlStatement, final Collection<RouteUnit> routeUnits) { log("Rule Type: sharding"); log("Logic SQL: {}", logicSQL); log("SQLStatement: {}", sqlStatement); for (RouteUnit each : routeUnits) { if (each.getSqlUnit().getParameterSets().get(0).isEmpty()) { log("Actual SQL: {} ::: {}", each.getDataSourceName(), each.getSqlUnit().getSql()); } else { log("Actual SQL: {} ::: {} ::: {}", each.getDataSourceName(), each.getSqlUnit().getSql(), each.getSqlUnit().getParameterSets()); } } }
@Override public void start(final RouteUnit routeUnit, final DataSourceMetaData dataSourceMetaData, final boolean isTrunkThread, final Map<String, Object> shardingExecuteDataMap) { if (!isTrunkThread) { activeSpan = ((ActiveSpan.Continuation) shardingExecuteDataMap.get(OpenTracingRootInvokeHook.ACTIVE_SPAN_CONTINUATION)).activate(); } span = ShardingTracer.get().buildSpan(OPERATION_NAME) .withTag(Tags.COMPONENT.getKey(), ShardingTags.COMPONENT_NAME) .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT) .withTag(Tags.PEER_HOSTNAME.getKey(), dataSourceMetaData.getHostName()) .withTag(Tags.PEER_PORT.getKey(), dataSourceMetaData.getPort()) .withTag(Tags.DB_TYPE.getKey(), "sql") .withTag(Tags.DB_INSTANCE.getKey(), routeUnit.getDataSourceName()) .withTag(Tags.DB_STATEMENT.getKey(), routeUnit.getSqlUnit().getSql()) .withTag(ShardingTags.DB_BIND_VARIABLES.getKey(), toString(routeUnit.getSqlUnit().getParameterSets())).startManual(); }