1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.executor.sql.prepare.raw;
19
20 import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
21 import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
22 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
23 import org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
24 import org.apache.shardingsphere.infra.executor.sql.execute.engine.raw.RawSQLExecutionUnit;
25 import org.apache.shardingsphere.infra.executor.sql.prepare.AbstractExecutionPrepareEngine;
26 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
27
28 import java.util.Collection;
29 import java.util.List;
30 import java.util.stream.Collectors;
31
32
33
34
35 @HighFrequencyInvocation
36 public final class RawExecutionPrepareEngine extends AbstractExecutionPrepareEngine<RawSQLExecutionUnit> {
37
38 public RawExecutionPrepareEngine(final int maxConnectionsSizePerQuery, final Collection<ShardingSphereRule> rules) {
39 super(maxConnectionsSizePerQuery, rules);
40 }
41
42 @Override
43 protected List<ExecutionGroup<RawSQLExecutionUnit>> group(final String databaseName, final String dataSourceName, final int connectionOffset, final List<List<ExecutionUnit>> executionUnitGroups,
44 final ConnectionMode connectionMode) {
45 return executionUnitGroups.stream().map(each -> createExecutionGroup(each, connectionMode)).collect(Collectors.toList());
46 }
47
48 private ExecutionGroup<RawSQLExecutionUnit> createExecutionGroup(final List<ExecutionUnit> executionUnitGroup, final ConnectionMode connectionMode) {
49 return new ExecutionGroup<>(executionUnitGroup.stream().map(each -> new RawSQLExecutionUnit(each, connectionMode)).collect(Collectors.toList()));
50 }
51 }