[
https://issues.apache.org/jira/browse/SCB-864?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16602504#comment-16602504
]
ASF GitHub Bot commented on SCB-864:
------------------------------------
WillemJiang closed pull request #286: [SCB-864] support multiple parameters for
each sql
URL: https://github.com/apache/incubator-servicecomb-saga/pull/286
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/docs/api/api.md b/docs/api/api.md
index ef89c222..581ab23c 100755
--- a/docs/api/api.md
+++ b/docs/api/api.md
@@ -213,13 +213,13 @@ There are a `maven` example
"transaction": {
"sql": "",
"params": [
-
+ []
]
},
"compensation": {
"sql": "",
"params": [
-
+ []
]
}
}
diff --git
a/saga-core/src/main/java/org/apache/servicecomb/saga/core/SQLOperation.java
b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SQLOperation.java
index 6444e2b7..0cfbf221 100644
--- a/saga-core/src/main/java/org/apache/servicecomb/saga/core/SQLOperation.java
+++ b/saga-core/src/main/java/org/apache/servicecomb/saga/core/SQLOperation.java
@@ -23,18 +23,18 @@
public class SQLOperation implements Operation {
private final String sql;
- private final List<String> params;
+ private final List<List<String>> params;
- public SQLOperation(String sql, List<String> params) {
+ public SQLOperation(String sql, List<List<String>> params) {
this.sql = sql;
- this.params = params == null ? Collections.<String>emptyList() : params;
+ this.params = params == null ? Collections.<List<String>>emptyList() :
params;
}
public String sql() {
return sql;
}
- public List<String> params() {
+ public List<List<String>> params() {
return params;
}
diff --git
a/saga-core/src/main/java/org/apache/servicecomb/saga/transports/SQLTransport.java
b/saga-core/src/main/java/org/apache/servicecomb/saga/transports/SQLTransport.java
index 6e534dd4..9438f652 100644
---
a/saga-core/src/main/java/org/apache/servicecomb/saga/transports/SQLTransport.java
+++
b/saga-core/src/main/java/org/apache/servicecomb/saga/transports/SQLTransport.java
@@ -24,6 +24,6 @@
public interface SQLTransport extends Transport {
- SagaResponse with(String datasource, String sql, List<String> params);
+ SagaResponse with(String datasource, String sql, List<List<String>> params);
}
diff --git
a/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLCompensation.java
b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLCompensation.java
index 6a61bf32..27e54fb4 100644
---
a/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLCompensation.java
+++
b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLCompensation.java
@@ -28,14 +28,14 @@
private final int retries;
- public JacksonSQLCompensation(String sql, List<String> params) {
+ public JacksonSQLCompensation(String sql, List<List<String>> params) {
this(sql, params, DEFAULT_RETRIES);
}
@JsonCreator
public JacksonSQLCompensation(
@JsonProperty("sql") String sql,
- @JsonProperty("params") List<String> params,
+ @JsonProperty("params") List<List<String>> params,
@JsonProperty("retries") int retries) {
super(sql, params);
this.retries = retries <= 0? DEFAULT_RETRIES : retries;
diff --git
a/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLOperation.java
b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLOperation.java
index 500bdfd5..c0ac765e 100644
---
a/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLOperation.java
+++
b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLOperation.java
@@ -32,7 +32,7 @@
@JsonIgnore
private SQLTransport transport;
- public JacksonSQLOperation(String sql, List<String> params) {
+ public JacksonSQLOperation(String sql, List<List<String>> params) {
super(sql, params);
}
diff --git
a/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLTransaction.java
b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLTransaction.java
index e85c0366..a11a731c 100644
---
a/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLTransaction.java
+++
b/saga-format/src/main/java/org/apache/servicecomb/saga/format/JacksonSQLTransaction.java
@@ -29,7 +29,7 @@
@JsonCreator
public JacksonSQLTransaction(
@JsonProperty("sql") String sql,
- @JsonProperty("params") List<String> params) {
+ @JsonProperty("params") List<List<String>> params) {
super(sql, params);
}
}
diff --git
a/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatForSQLTest.java
b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatForSQLTest.java
index ef40d17e..44c22c79 100644
---
a/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatForSQLTest.java
+++
b/saga-format/src/test/java/org/apache/servicecomb/saga/format/JacksonFromJsonFormatForSQLTest.java
@@ -51,11 +51,11 @@
+ " \"parents\":[],\n"
+ " \"transaction\":{\n"
+ " \"sql\":\"INSERT INTO TABLE ds_0.tb_0 (id, value)
values (?, ?)\",\n"
- + " \"params\":[\"1\", \"xxx\"]\n"
+ + " \"params\":[[\"1\", \"xxx\"]]\n"
+ " },\n"
+ " \"compensation\":{\n"
+ " \"sql\":\"DELETE FROM ds_0.tb_0 WHERE id=?\",\n"
- + " \"params\":[\"1\"]\n"
+ + " \"params\":[[\"1\"]]\n"
+ " }\n"
+ " },\n"
+ " {\n"
@@ -65,11 +65,11 @@
+ " \"parents\":[],\n"
+ " \"transaction\":{\n"
+ " \"sql\":\"INSERT INTO TABLE ds_0.tb_1 (id, value)
values (?, ?)\",\n"
- + " \"params\":[\"2\", \"xxx\"]\n"
+ + " \"params\":[[\"2\", \"xxx\"]]\n"
+ " },\n"
+ " \"compensation\":{\n"
+ " \"sql\":\"DELETE FROM ds_0.tb_1 WHERE id=?\",\n"
- + " \"params\":[\"2\"]\n"
+ + " \"params\":[[\"2\"]]\n"
+ " }\n"
+ " },\n"
+ " {\n"
@@ -79,11 +79,11 @@
+ "
\"parents\":[\"first-sql-sharding-1\",\"first-sql-sharding-2\"],\n"
+ " \"transaction\":{\n"
+ " \"sql\":\"INSERT INTO TABLE ds_1.tb_2 (id, value)
values (?, ?)\",\n"
- + " \"params\":[\"3\", \"xxx\"]\n"
+ + " \"params\":[[\"3\", \"xxx\"]]\n"
+ " },\n"
+ " \"compensation\":{\n"
+ " \"sql\":\"DELETE FROM ds_1.tb_2 WHERE id=?\",\n"
- + " \"params\":[\"3\"]\n"
+ + " \"params\":[[\"3\"]]\n"
+ " }\n"
+ " },\n"
+ " {\n"
@@ -93,11 +93,11 @@
+ "
\"parents\":[\"first-sql-sharding-1\",\"first-sql-sharding-2\"],\n"
+ " \"transaction\":{\n"
+ " \"sql\":\"INSERT INTO TABLE ds_1.tb_3 (id, value)
values (?, ?)\",\n"
- + " \"params\":[\"4\", \"xxx\"]\n"
+ + " \"params\":[[\"4\", \"xxx\"]]\n"
+ " },\n"
+ " \"compensation\":{\n"
+ " \"sql\":\"DELETE FROM ds_1.tb_3 WHERE id=?\",\n"
- + " \"params\":[\"4\"]\n"
+ + " \"params\":[[\"4\"]]\n"
+ " }\n"
+ " }\n"
+ " ]\n"
@@ -107,13 +107,15 @@
private final SQLTransport sqlTransport = new SQLTransport() {
@Override
- public SagaResponse with(String datasource, String sql, List<String>
params) {
+ public SagaResponse with(String datasource, String sql, List<List<String>>
params) {
if (null == sql || sql.trim().length() == 0) {
return responseDefault;
}
- for (String param : params) {
- sql = sql.replaceFirst("\\?", param);
+ for (List<String> each : params) {
+ for (String param : each) {
+ sql = sql.replaceFirst("\\?", param);
+ }
}
return new SuccessfulSagaResponse(datasource + " execute sql : " + sql);
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Support to call SQL component in saga-core
> ------------------------------------------
>
> Key: SCB-864
> URL: https://issues.apache.org/jira/browse/SCB-864
> Project: Apache ServiceComb
> Issue Type: New Feature
> Components: Saga
> Reporter: Willem Jiang
> Priority: Major
>
> Sharding-Sphere is planning to use Sage command executor as it's distributed
> transaction coordinator. We need to introduce new SQL command for
> Sharding-Sphere to use.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)