Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature](txn insert) txn insert support insert into select #31666

Merged
merged 2 commits into from
Mar 10, 2024

Conversation

mymeiyi
Copy link
Contributor

@mymeiyi mymeiyi commented Mar 1, 2024

Proposed changes

Transaction insert support:

begin;
insert into t1 select ...;
insert into t2 select ...;
commit;

Limit:

  1. Now we only support insert into different tables.
  2. insert into select and insert into values can be used at one transaction.

Will support in later pr.

Further comments

If this is a relatively large or complex change, kick off the discussion at dev@doris.apache.org by explaining why you chose the solution you did and what alternatives you considered, etc...

@doris-robot
Copy link

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR

@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 1, 2024

run buildall

1 similar comment
@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 1, 2024

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 32116 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit f18dccc234177aa63e2d7bb40914cc967c6e51ab, data reload: false

------ Round 1 ----------------------------------
q1	5049	4513	4562	4513
q2	506	235	234	234
q3	1391	1045	1056	1045
q4	1325	1085	1080	1080
q5	2424	2040	2047	2040
q6	168	123	119	119
q7	1187	1081	1070	1070
q8	1404	1370	1101	1101
q9	4927	4821	4832	4821
q10	2149	1926	1960	1926
q11	433	350	320	320
q12	513	395	405	395
q13	3323	2972	2925	2925
q14	349	318	281	281
q15	370	343	341	341
q16	531	499	502	499
q17	766	346	338	338
q18	5793	5182	4970	4970
q19	1013	439	442	439
q20	607	451	428	428
q21	3280	2758	2826	2758
q22	539	496	473	473
Total cold run time: 38047 ms
Total hot run time: 32116 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4627	4699	4665	4665
q2	294	222	213	213
q3	2131	1803	1843	1803
q4	1522	1206	1219	1206
q5	3187	2901	2918	2901
q6	158	102	110	102
q7	1860	1844	1788	1788
q8	1808	1687	1702	1687
q9	5427	5240	5215	5215
q10	2630	2214	2221	2214
q11	513	440	443	440
q12	727	612	627	612
q13	3095	2644	2783	2644
q14	277	277	293	277
q15	350	347	320	320
q16	487	458	504	458
q17	1152	772	802	772
q18	5931	5388	5462	5388
q19	1144	695	654	654
q20	1568	1458	1486	1458
q21	4873	4354	4292	4292
q22	670	605	577	577
Total cold run time: 44431 ms
Total hot run time: 39686 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 187669 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit f18dccc234177aa63e2d7bb40914cc967c6e51ab, data reload: false

query1	705	406	399	399
query2	2899	2448	2547	2448
query3	6736	315	312	312
query4	28810	22877	23736	22877
query5	4811	812	829	812
query6	405	327	296	296
query7	4682	450	457	450
query8	309	255	244	244
query9	8617	3429	3388	3388
query10	569	353	342	342
query11	18570	18427	19096	18427
query12	285	219	279	219
query13	1723	647	702	647
query14	10827	7742	7428	7428
query15	253	227	232	227
query16	7862	400	399	399
query17	1318	694	673	673
query18	2081	396	407	396
query19	269	245	245	245
query20	136	161	131	131
query21	247	177	160	160
query22	5072	5001	4981	4981
query23	24127	23833	23652	23652
query24	6904	2045	2076	2045
query25	530	512	524	512
query26	796	238	258	238
query27	2261	511	498	498
query28	3362	2891	2907	2891
query29	964	748	776	748
query30	295	195	195	195
query31	913	781	796	781
query32	107	102	91	91
query33	548	386	380	380
query34	868	661	662	661
query35	950	865	869	865
query36	1267	1125	1162	1125
query37	136	114	108	108
query38	3082	3099	2939	2939
query39	1092	1055	1103	1055
query40	253	198	181	181
query41	98	86	83	83
query42	167	163	163	163
query43	590	620	597	597
query44	1292	1092	1069	1069
query45	209	217	221	217
query46	886	801	804	801
query47	1663	1608	1620	1608
query48	607	531	522	522
query49	733	491	511	491
query50	664	564	572	564
query51	11353	11237	11518	11237
query52	153	146	142	142
query53	338	338	339	338
query54	378	384	362	362
query55	143	144	136	136
query56	413	330	339	330
query57	1026	1010	1012	1010
query58	350	350	326	326
query59	3460	3404	3412	3404
query60	392	377	398	377
query61	168	166	168	166
query62	539	410	403	403
query63	334	319	328	319
query64	3190	1967	1828	1828
query65	2373	2334	2291	2291
query66	815	414	384	384
query67	15383	14758	15119	14758
query68	1241	750	735	735
query69	653	609	595	595
query70	1562	1542	1565	1542
query71	471	422	437	422
query72	2849	2424	2386	2386
query73	668	497	491	491
query74	6830	6674	6655	6655
query75	3045	2782	2827	2782
query76	974	677	675	675
query77	505	418	418	418
query78	6615	6308	6215	6215
query79	1118	774	750	750
query80	662	603	596	596
query81	482	260	256	256
query82	169	140	138	138
query83	250	235	225	225
query84	309	127	126	126
query85	894	550	528	528
query86	444	417	441	417
query87	3393	3192	3113	3113
query88	3783	3495	3480	3480
query89	460	439	421	421
query90	1051	242	256	242
query91	220	215	204	204
query92	92	87	84	84
query93	1040	714	713	713
query94	519	280	272	272
query95	602	534	533	533
query96	638	408	387	387
query97	2945	2837	3039	2837
query98	322	306	315	306
query99	839	733	746	733
Total cold run time: 249003 ms
Total hot run time: 187669 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.03 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit f18dccc234177aa63e2d7bb40914cc967c6e51ab, data reload: false

query1	0.05	0.04	0.04
query2	0.10	0.04	0.04
query3	0.27	0.06	0.07
query4	1.60	0.09	0.09
query5	0.55	0.52	0.51
query6	1.55	0.98	1.00
query7	0.03	0.03	0.02
query8	0.06	0.04	0.04
query9	0.71	0.64	0.64
query10	0.75	0.69	0.70
query11	0.21	0.16	0.15
query12	0.20	0.16	0.16
query13	0.52	0.50	0.46
query14	0.75	0.72	0.72
query15	0.89	0.89	0.91
query16	0.43	0.40	0.42
query17	1.16	1.15	1.36
query18	0.31	0.30	0.29
query19	2.20	2.12	2.07
query20	0.03	0.02	0.02
query21	15.38	1.01	0.98
query22	0.62	0.61	0.59
query23	13.64	0.63	0.67
query24	0.62	0.18	0.18
query25	0.04	0.05	0.05
query26	0.20	0.20	0.21
query27	0.05	0.04	0.05
query28	1.28	0.76	0.78
query29	12.66	5.22	4.49
query30	0.88	0.85	0.78
query31	0.89	0.42	0.42
query32	3.24	0.40	0.40
query33	2.46	2.34	2.34
query34	2.21	2.19	2.25
query35	2.21	2.18	2.18
query36	1.02	0.98	1.00
query37	0.08	0.06	0.06
query38	0.05	0.04	0.05
query39	0.03	0.03	0.03
query40	0.19	0.18	0.17
query41	0.09	0.03	0.03
query42	0.05	0.03	0.03
query43	0.04	0.04	0.04
Total cold run time: 70.3 s
Total hot run time: 27.03 s

@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 4, 2024

run buildall

@@ -531,7 +531,8 @@ public LogicalPlan visitInsertTable(InsertTableContext ctx) {
if (isOverwrite) {
command = new InsertOverwriteTableCommand(sink, labelName);
} else {
if (ConnectContext.get() != null && ConnectContext.get().isTxnModel()) {
if (ConnectContext.get() != null && ConnectContext.get().isTxnModel()
&& sink.child() instanceof LogicalInlineTable) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In legacy planner, we support insert into t select 1. So if we only support LogicalInlineTable here means we have diff with legacy planner

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The nereids does not support insert into t select 1? It fallback to legacy


if (physicalSink instanceof PhysicalOlapTableSink) {
if (GroupCommitInserter.groupCommit(ctx, sink, physicalSink)) {
return;
}
OlapTable olapTable = (OlapTable) targetTableIf;
String label = this.labelName.orElse(
ctx.isTxnModel() ? null : String.format("label_%x_%x", ctx.queryId().hi, ctx.queryId().lo));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could u add some comment to explain why lable should be null when we in txn model

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -162,6 +162,10 @@ private static InternalService.PDataRow getRowStringValue(List<NamedExpression>
private static void beginBatchInsertTransaction(ConnectContext ctx,
String dbName, String tblName, List<Column> columns) {
TransactionEntry txnEntry = ctx.getTxnEntry();
if (txnEntry.isTransactionBegan()) {
throw new AnalysisException(
"Transaction insert can not insert into values and insert into select at the same time");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why isTransactionBegan means use insert into values with insert into select at same time?

Copy link
Contributor Author

@mymeiyi mymeiyi Mar 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isTransactionBegan means the insert into select already began a txn.
This function will begin a txn for insert into values.
Currently we forbid it, maybe support it later.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a TODO coment here, we'll support mix usage of insert into values and insert into select in future.

boolean isGroupCommit = (parsedStmt != null
&& parsedStmt instanceof LogicalPlanAdapter
&& ((LogicalPlanAdapter) parsedStmt).getLogicalPlan() instanceof InsertIntoTableCommand)
&& !context.isTxnModel();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so all insert into without txn model is group commit?

Copy link
Contributor Author

@mymeiyi mymeiyi Mar 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logic should be

boolean isGroupCommit = (Config.wait_internal_group_commit_finish
                            || context.sessionVariable.isEnableInsertGroupCommit()) && parsedStmt != null
                            && parsedStmt instanceof LogicalPlanAdapter
                            && ((LogicalPlanAdapter) parsedStmt).getLogicalPlan() instanceof InsertIntoTableCommand;

but some nereids case can not pass.
I add !context.isTxnModel() here becase the regression cases expect txn insert does not force fallback

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so the variable name now should not be isGroupCommit? please use a better variable name, and add comments to explain it here

@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 5, 2024

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 37666 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 96f04b2d07401be29965406e5c4c959b7c908fda, data reload: false

------ Round 1 ----------------------------------
q1	17837	3994	4045	3994
q2	2019	157	152	152
q3	10541	924	926	924
q4	4664	934	929	929
q5	7623	2863	2963	2863
q6	182	126	125	125
q7	1270	819	794	794
q8	9474	2059	2040	2040
q9	7132	6444	6387	6387
q10	8208	2538	2566	2538
q11	421	231	218	218
q12	770	317	306	306
q13	17932	2916	2928	2916
q14	289	258	255	255
q15	493	450	451	450
q16	477	380	391	380
q17	927	853	857	853
q18	6701	5825	5874	5825
q19	1542	1502	1490	1490
q20	547	270	263	263
q21	7476	3636	3654	3636
q22	797	328	332	328
Total cold run time: 107322 ms
Total hot run time: 37666 ms

----- Round 2, with runtime_filter_mode=off -----
q1	3983	4026	3960	3960
q2	323	230	228	228
q3	2922	2914	2878	2878
q4	1815	1777	1796	1777
q5	5185	5204	5189	5189
q6	200	117	116	116
q7	2278	1802	1814	1802
q8	3190	3226	3273	3226
q9	8428	8475	8513	8475
q10	6132	3789	3745	3745
q11	536	434	433	433
q12	686	540	554	540
q13	14563	2781	2806	2781
q14	290	244	256	244
q15	480	446	440	440
q16	457	409	392	392
q17	1689	1662	1655	1655
q18	7791	7479	7382	7382
q19	2313	1604	1606	1604
q20	1944	1793	1703	1703
q21	4862	4816	4834	4816
q22	533	427	476	427
Total cold run time: 70600 ms
Total hot run time: 53813 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 178038 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 96f04b2d07401be29965406e5c4c959b7c908fda, data reload: false

query1	936	359	335	335
query2	7536	2095	2168	2095
query3	9275	221	219	219
query4	29675	21277	21013	21013
query5	4332	494	476	476
query6	309	185	182	182
query7	4630	312	298	298
query8	235	172	169	169
query9	8510	2188	2172	2172
query10	443	227	229	227
query11	14981	14508	14597	14508
query12	137	90	89	89
query13	1658	427	424	424
query14	10117	7175	6933	6933
query15	243	198	192	192
query16	7856	259	264	259
query17	1775	578	552	552
query18	2088	312	276	276
query19	224	170	164	164
query20	94	88	93	88
query21	203	131	126	126
query22	4608	4548	4402	4402
query23	31202	30647	30859	30647
query24	10969	3116	3044	3044
query25	689	404	411	404
query26	1847	159	164	159
query27	2948	371	361	361
query28	6613	1814	1806	1806
query29	1089	635	613	613
query30	309	149	148	148
query31	937	746	739	739
query32	101	61	58	58
query33	758	263	262	262
query34	1022	461	475	461
query35	963	823	812	812
query36	962	810	806	806
query37	175	69	66	66
query38	3251	3161	3102	3102
query39	1410	1377	1362	1362
query40	298	131	139	131
query41	60	55	57	55
query42	112	101	105	101
query43	442	404	392	392
query44	1060	697	718	697
query45	201	193	194	193
query46	1070	805	770	770
query47	1638	1571	1557	1557
query48	414	359	347	347
query49	1231	348	343	343
query50	786	377	372	372
query51	6713	6559	6636	6559
query52	115	98	90	90
query53	354	288	284	284
query54	332	258	243	243
query55	91	89	86	86
query56	254	249	229	229
query57	1080	999	993	993
query58	258	227	220	220
query59	2452	2281	2359	2281
query60	267	253	269	253
query61	146	116	116	116
query62	647	414	410	410
query63	305	280	292	280
query64	6099	3278	3427	3278
query65	3026	3006	3024	3006
query66	1241	347	373	347
query67	15201	14538	14343	14343
query68	11731	557	584	557
query69	711	394	380	380
query70	1444	1129	1162	1129
query71	581	275	276	275
query72	9621	2607	2514	2514
query73	1768	333	325	325
query74	7117	6862	6979	6862
query75	6793	2690	2682	2682
query76	7959	1134	1179	1134
query77	937	264	258	258
query78	10301	9616	9519	9519
query79	11007	518	509	509
query80	1094	390	412	390
query81	478	218	211	211
query82	250	90	90	90
query83	224	149	143	143
query84	285	77	79	77
query85	1112	341	328	328
query86	381	325	323	323
query87	3434	3214	3137	3137
query88	3468	2305	2277	2277
query89	535	353	377	353
query90	2218	175	182	175
query91	153	153	129	129
query92	66	49	48	48
query93	4713	544	512	512
query94	1393	189	189	189
query95	451	355	344	344
query96	603	261	265	261
query97	4003	3908	3920	3908
query98	232	221	222	221
query99	1062	753	771	753
Total cold run time: 317128 ms
Total hot run time: 178038 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 30.64 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 96f04b2d07401be29965406e5c4c959b7c908fda, data reload: false

query1	0.04	0.04	0.03
query2	0.07	0.02	0.02
query3	0.24	0.07	0.06
query4	1.64	0.10	0.10
query5	0.50	0.49	0.50
query6	1.25	0.67	0.67
query7	0.02	0.02	0.01
query8	0.05	0.03	0.03
query9	0.57	0.51	0.52
query10	0.55	0.56	0.57
query11	0.13	0.09	0.10
query12	0.13	0.11	0.11
query13	0.58	0.57	0.58
query14	0.75	0.74	0.77
query15	0.83	0.81	0.79
query16	0.36	0.37	0.41
query17	0.99	1.03	0.99
query18	0.27	0.27	0.26
query19	1.81	1.73	1.72
query20	0.02	0.01	0.01
query21	15.40	0.67	0.61
query22	2.77	3.43	2.36
query23	17.45	1.07	0.93
query24	2.57	0.27	0.46
query25	0.22	0.06	0.06
query26	0.17	0.13	0.14
query27	0.03	0.03	0.03
query28	11.91	0.85	0.82
query29	12.90	3.20	3.53
query30	0.66	0.59	0.58
query31	2.80	0.34	0.35
query32	3.34	0.45	0.43
query33	2.93	2.87	2.95
query34	15.50	4.31	4.30
query35	4.33	4.34	4.28
query36	1.07	1.02	1.01
query37	0.08	0.06	0.05
query38	0.04	0.03	0.03
query39	0.02	0.02	0.02
query40	0.17	0.14	0.13
query41	0.08	0.02	0.02
query42	0.03	0.02	0.02
query43	0.02	0.02	0.02
Total cold run time: 105.29 s
Total hot run time: 30.64 s

@doris-robot
Copy link

Load test result on machine: 'aliyun_ecs.c7a.8xlarge_32C64G'

Load test result on commit 96f04b2d07401be29965406e5c4c959b7c908fda with default session variables
Stream load json:         19 seconds loaded 2358488459 Bytes, about 118 MB/s
Stream load orc:          59 seconds loaded 1101869774 Bytes, about 17 MB/s
Stream load parquet:      31 seconds loaded 861443392 Bytes, about 26 MB/s
Insert into select:       18.1 seconds inserted 10000000 Rows, about 552K ops/s

Copy link
Contributor

@zhannngchen zhannngchen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Mar 6, 2024
Copy link
Contributor

github-actions bot commented Mar 6, 2024

PR approved by at least one committer and no changes requested.

Copy link
Contributor

github-actions bot commented Mar 6, 2024

PR approved by anyone and no changes requested.

@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 8, 2024

run buildall

@mymeiyi
Copy link
Contributor Author

mymeiyi commented Mar 8, 2024

run p0

Copy link
Contributor

@dataroaring dataroaring left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@dataroaring dataroaring merged commit 303d176 into apache:master Mar 10, 2024
24 of 27 checks passed
dataroaring pushed a commit that referenced this pull request Jun 5, 2024
## Proposed changes

### Purpose

The user doc:
https://doris.apache.org/zh-CN/docs/dev/data-operate/import/transaction-load-manual

We have supported insert into
select(#31666),
update(#33034) and
delete(#33100) in transaction load.

#32980 implements one txn write to
one partition more than one rowsets.

This pr implements to cloud mode of
#32980

### Implementation

#### sub_txn_id

see #32980

#### Meta service supports commit txn

This process is generally the same as commit_txn, the difference is that
he partitions version will plus 1 in multi sub txns.

One example:
Suppose the table, partition, tablet and version info is:
```
--------------------------------------------
| table | partition | tablet    | version |
--------------------------------------------
| t1    | t1_p1     | t1_p1.1   | 1       |
| t1    | t1_p1     | t1_p1.2   | 1       |
| t1    | t1_p2     | t1_p2.1   | 2       |
| t2    | t2_p3     | t2_p3.1   | 3       |
| t2    | t2_p4     | t2_p4.1   | 4       |
--------------------------------------------
```

Now we commit a txn with 3 sub txns and the tablets are:
 *  sub_txn1: t1_p1.1, t1_p1.2, t1_p2.1
 *  sub_txn2: t2_p3.1
 *  sub_txn3: t1_p1.1, t1_p1.2

When commit, the partitions version will be:
 *  sub_txn1: t1_p1(1 -> 2), t1_p2(2 -> 3)
 *  sub_txn2: t2_p3(3 -> 4)
 *  sub_txn3: t1_p1(2 -> 3)

After commit, the partitions version will be:
 *  t1: t1_p1(3), t1_p2(3)
 *  t2: t2_p3(4), t2_p4(4)

#### Meta service support generate sub_txn_id by `begin_sub_txn`
dataroaring pushed a commit that referenced this pull request Jun 7, 2024
## Proposed changes

### Purpose

The user doc:
https://doris.apache.org/zh-CN/docs/dev/data-operate/import/transaction-load-manual

We have supported insert into
select(#31666),
update(#33034) and
delete(#33100) in transaction load.

#32980 implements one txn write to
one partition more than one rowsets.

This pr implements to cloud mode of
#32980

### Implementation

#### sub_txn_id

see #32980

#### Meta service supports commit txn

This process is generally the same as commit_txn, the difference is that
he partitions version will plus 1 in multi sub txns.

One example:
Suppose the table, partition, tablet and version info is:
```
--------------------------------------------
| table | partition | tablet    | version |
--------------------------------------------
| t1    | t1_p1     | t1_p1.1   | 1       |
| t1    | t1_p1     | t1_p1.2   | 1       |
| t1    | t1_p2     | t1_p2.1   | 2       |
| t2    | t2_p3     | t2_p3.1   | 3       |
| t2    | t2_p4     | t2_p4.1   | 4       |
--------------------------------------------
```

Now we commit a txn with 3 sub txns and the tablets are:
 *  sub_txn1: t1_p1.1, t1_p1.2, t1_p2.1
 *  sub_txn2: t2_p3.1
 *  sub_txn3: t1_p1.1, t1_p1.2

When commit, the partitions version will be:
 *  sub_txn1: t1_p1(1 -> 2), t1_p2(2 -> 3)
 *  sub_txn2: t2_p3(3 -> 4)
 *  sub_txn3: t1_p1(2 -> 3)

After commit, the partitions version will be:
 *  t1: t1_p1(3), t1_p2(3)
 *  t2: t2_p3(4), t2_p4(4)

#### Meta service support generate sub_txn_id by `begin_sub_txn`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by one committer. dev/2.1.3-merged reviewed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants