1=============================================
2CRUD TABLE CRITERIA ARGS SCENARIOS
3=============================================
4
5================================================================================
6PREAMBLE
7================================================================================
8install plugin mysqlx soname "mysqlx.so";
9call mtr.add_suppression("Plugin mysqlx reported: .Failed at SSL configuration: .SSL context is not usable without certificate and private key..");
10call mtr.add_suppression("Plugin mysqlx reported: .SSL_CTX_load_verify_locations failed.");
11================================================================================
12TEST START
13================================================================================
14RUN drop schema if exists xtest
15
160 rows affected
17RUN create schema xtest
18
191 rows affected
20RUN use xtest
21
220 rows affected
23RUN create table mytable (id int primary key, name varchar(40), price decimal(5,2), info json)
24
250 rows affected
26RUN insert into mytable values (1, 'banana', 1.20, '{"color": "yellow"}')
27
281 rows affected
29RUN insert into mytable values (2, 'apple', 0.25, '{"color":"red"}')
30
311 rows affected
32RUN insert into mytable values (3, 'tomato', 1.80, '{"color":"red"}')
33
341 rows affected
35RUN insert into mytable values (4, 'mango', 3.14, '{"color":"green"}')
36
371 rows affected
38RUN insert into mytable values (5, 'orange', 0.90, '{"color":"orange"}')
39
401 rows affected
41RUN insert into mytable values (6, 'berry', null, '{"color":"orange"}')
42
431 rows affected
44RUN SELECT * FROM xtest.mytable ORDER BY price
45id	name	price	info
466	berry	null	{"color": "orange"}
472	apple	0.25	{"color": "red"}
485	orange	0.90	{"color": "orange"}
491	banana	1.20	{"color": "yellow"}
503	tomato	1.80	{"color": "red"}
514	mango	3.14	{"color": "green"}
520 rows affected
53Find with == Operator and placeholder
54send Mysqlx.Crud.Find {
55  collection {
56    name: "mytable"
57    schema: "xtest"
58  }
59  data_model: TABLE
60  criteria {
61    type: OPERATOR
62    operator {
63      name: "=="
64      param {
65        type: IDENT
66        identifier {
67          name: "name"
68        }
69      }
70      param {
71        type: PLACEHOLDER
72        position: 0
73      }
74    }
75  }
76  args {
77    type: V_STRING
78    v_string {
79      value: "tomato"
80    }
81  }
82}
83
84id	name	price	info
853	tomato	1.80	{"color": "red"}
86command ok
87Find with != Operator. placeholder and projection
88send Mysqlx.Crud.Find {
89  collection {
90    name: "mytable"
91    schema: "xtest"
92  }
93  data_model: TABLE
94  projection {
95    source {
96      type: IDENT
97      identifier {
98        name: "name"
99      }
100    }
101  }
102  criteria {
103    type: OPERATOR
104    operator {
105      name: "=="
106      param {
107        type: IDENT
108        identifier {
109          name: "name"
110        }
111      }
112      param {
113        type: PLACEHOLDER
114        position: 0
115      }
116    }
117  }
118  args {
119    type: V_STRING
120    v_string {
121      value: "tomato"
122    }
123  }
124}
125
126name
127tomato
128command ok
129Find with != Operator and placeholder
130send Mysqlx.Crud.Find {
131  collection {
132    name: "mytable"
133    schema: "xtest"
134  }
135  data_model: TABLE
136  criteria {
137    type: OPERATOR
138    operator {
139      name: "!="
140      param {
141        type: IDENT
142        identifier {
143          name: "name"
144        }
145      }
146      param {
147        type: PLACEHOLDER
148        position: 0
149      }
150    }
151  }
152  args {
153    type: V_STRING
154    v_string {
155      value: "tomato"
156    }
157  }
158}
159
160id	name	price	info
1611	banana	1.20	{"color": "yellow"}
1622	apple	0.25	{"color": "red"}
1634	mango	3.14	{"color": "green"}
1645	orange	0.90	{"color": "orange"}
1656	berry	null	{"color": "orange"}
166command ok
167Find with > Operator and placeholder
168send Mysqlx.Crud.Find {
169  collection {
170    name: "mytable"
171    schema: "xtest"
172  }
173  data_model: TABLE
174  criteria {
175    type: OPERATOR
176    operator {
177      name: ">"
178      param {
179        type: IDENT
180        identifier {
181          name: "price"
182        }
183      }
184      param {
185        type: PLACEHOLDER
186        position: 0
187      }
188    }
189  }
190  args {
191    type: V_DOUBLE
192    v_double: 1.8
193  }
194}
195
196id	name	price	info
1974	mango	3.14	{"color": "green"}
198command ok
199Find with != Operator, placeholder and Order desc
200send Mysqlx.Crud.Find {
201  collection {
202    name: "mytable"
203    schema: "xtest"
204  }
205  data_model: TABLE
206  criteria {
207    type: OPERATOR
208    operator {
209      name: "!="
210      param {
211        type: IDENT
212        identifier {
213          name: "price"
214        }
215      }
216      param {
217        type: PLACEHOLDER
218        position: 0
219      }
220    }
221  }
222  order {
223    expr {
224      type: IDENT
225      identifier {
226        name: "name"
227      }
228    }
229    direction: DESC
230  }
231  args {
232    type: V_DOUBLE
233    v_double: 0
234  }
235}
236
237id	name	price	info
2383	tomato	1.80	{"color": "red"}
2395	orange	0.90	{"color": "orange"}
2404	mango	3.14	{"color": "green"}
2411	banana	1.20	{"color": "yellow"}
2422	apple	0.25	{"color": "red"}
243command ok
244Find with != Operator, placeholder and Order asc
245send Mysqlx.Crud.Find {
246  collection {
247    name: "mytable"
248    schema: "xtest"
249  }
250  data_model: TABLE
251  criteria {
252    type: OPERATOR
253    operator {
254      name: "!="
255      param {
256        type: IDENT
257        identifier {
258          name: "price"
259        }
260      }
261      param {
262        type: PLACEHOLDER
263        position: 0
264      }
265    }
266  }
267  order {
268    expr {
269      type: IDENT
270      identifier {
271        name: "name"
272      }
273    }
274    direction: ASC
275  }
276  args {
277    type: V_DOUBLE
278    v_double: 0
279  }
280}
281
282id	name	price	info
2832	apple	0.25	{"color": "red"}
2841	banana	1.20	{"color": "yellow"}
2854	mango	3.14	{"color": "green"}
2865	orange	0.90	{"color": "orange"}
2873	tomato	1.80	{"color": "red"}
288command ok
289Find with < Operator and placeholder
290send Mysqlx.Crud.Find {
291  collection {
292    name: "mytable"
293    schema: "xtest"
294  }
295  data_model: TABLE
296  criteria {
297    type: OPERATOR
298    operator {
299      name: "<"
300      param {
301        type: IDENT
302        identifier {
303          name: "price"
304        }
305      }
306      param {
307        type: PLACEHOLDER
308        position: 0
309      }
310    }
311  }
312  args {
313    type: V_DOUBLE
314    v_double: 0.25
315  }
316}
317
318id	name	price	info
319command ok
320Find with >= Operator and placeholder
321send Mysqlx.Crud.Find {
322  collection {
323    name: "mytable"
324    schema: "xtest"
325  }
326  data_model: TABLE
327  criteria {
328    type: OPERATOR
329    operator {
330      name: ">="
331      param {
332        type: IDENT
333        identifier {
334          name: "price"
335        }
336      }
337      param {
338        type: PLACEHOLDER
339        position: 0
340      }
341    }
342  }
343  args {
344    type: V_DOUBLE
345    v_double: 1.8
346  }
347}
348
349id	name	price	info
3503	tomato	1.80	{"color": "red"}
3514	mango	3.14	{"color": "green"}
352command ok
353Find with <= Operator and placeholder
354send Mysqlx.Crud.Find {
355  collection {
356    name: "mytable"
357    schema: "xtest"
358  }
359  data_model: TABLE
360  criteria {
361    type: OPERATOR
362    operator {
363      name: "<="
364      param {
365        type: IDENT
366        identifier {
367          name: "price"
368        }
369      }
370      param {
371        type: PLACEHOLDER
372        position: 0
373      }
374    }
375  }
376  args {
377    type: V_DOUBLE
378    v_double: 0.25
379  }
380}
381
382id	name	price	info
3832	apple	0.25	{"color": "red"}
384command ok
385Find with in Operator and placeholder
386send Mysqlx.Crud.Find {
387  collection {
388    name: "mytable"
389    schema: "xtest"
390  }
391  data_model: TABLE
392  criteria {
393    type: OPERATOR
394    operator {
395      name: "in"
396      param {
397        type: IDENT
398        identifier {
399          name: "price"
400        }
401      }
402      param {
403        type: PLACEHOLDER
404        position: 0
405      }
406    }
407  }
408  args {
409    type: V_DOUBLE
410    v_double: 1.8
411  }
412}
413
414id	name	price	info
4153	tomato	1.80	{"color": "red"}
416command ok
417Find with not in Operator and placeholder
418send Mysqlx.Crud.Find {
419  collection {
420    name: "mytable"
421    schema: "xtest"
422  }
423  data_model: TABLE
424  criteria {
425    type: OPERATOR
426    operator {
427      name: "not_in"
428      param {
429        type: IDENT
430        identifier {
431          name: "price"
432        }
433      }
434      param {
435        type: PLACEHOLDER
436        position: 0
437      }
438    }
439  }
440  args {
441    type: V_DOUBLE
442    v_double: 1.8
443  }
444}
445
446id	name	price	info
4471	banana	1.20	{"color": "yellow"}
4482	apple	0.25	{"color": "red"}
4494	mango	3.14	{"color": "green"}
4505	orange	0.90	{"color": "orange"}
451command ok
452Find with == Operator, V_NULL and placeholder
453send Mysqlx.Crud.Find {
454  collection {
455    name: "mytable"
456    schema: "xtest"
457  }
458  data_model: TABLE
459  criteria {
460    type: OPERATOR
461    operator {
462      name: "is"
463      param {
464        type: IDENT
465        identifier {
466          name: "price"
467        }
468      }
469      param {
470        type: PLACEHOLDER
471        position: 0
472      }
473    }
474  }
475  args {
476    type: V_NULL
477  }
478}
479
480id	name	price	info
4816	berry	null	{"color": "orange"}
482command ok
483Update with == operator and placeholder
484send Mysqlx.Crud.Update {
485  collection {
486    name: "mytable"
487    schema: "xtest"
488  }
489  data_model: TABLE
490  criteria {
491    type: OPERATOR
492    operator {
493      name: "=="
494      param {
495        type: IDENT
496        identifier {
497          name: "price"
498        }
499      }
500      param {
501        type: PLACEHOLDER
502        position: 0
503      }
504    }
505  }
506  operation {
507    source {
508      name: "price"
509    }
510    operation: SET
511    value {
512      type: LITERAL
513      literal {
514        type: V_DOUBLE
515        v_double: 18
516      }
517    }
518  }
519  args {
520    type: V_DOUBLE
521    v_double: 1.8
522  }
523}
524
525
5261 rows affected
527Rows matched: 1  Changed: 1  Warnings: 0
528RUN SELECT * FROM xtest.mytable ORDER BY price
529id	name	price	info
5306	berry	null	{"color": "orange"}
5312	apple	0.25	{"color": "red"}
5325	orange	0.90	{"color": "orange"}
5331	banana	1.20	{"color": "yellow"}
5344	mango	3.14	{"color": "green"}
5353	tomato	18.00	{"color": "red"}
5360 rows affected
537Update with > operator and placeholder
538send Mysqlx.Crud.Update {
539  collection {
540    name: "mytable"
541    schema: "xtest"
542  }
543  data_model: TABLE
544  criteria {
545    type: OPERATOR
546    operator {
547      name: ">"
548      param {
549        type: IDENT
550        identifier {
551          name: "price"
552        }
553      }
554      param {
555        type: PLACEHOLDER
556        position: 0
557      }
558    }
559  }
560  operation {
561    source {
562      name: "price"
563    }
564    operation: SET
565    value {
566      type: LITERAL
567      literal {
568        type: V_DOUBLE
569        v_double: 10
570      }
571    }
572  }
573  args {
574    type: V_DOUBLE
575    v_double: 1
576  }
577}
578
579
5803 rows affected
581Rows matched: 3  Changed: 3  Warnings: 0
582RUN SELECT * FROM xtest.mytable ORDER BY price
583id	name	price	info
5846	berry	null	{"color": "orange"}
5852	apple	0.25	{"color": "red"}
5865	orange	0.90	{"color": "orange"}
5871	banana	10.00	{"color": "yellow"}
5883	tomato	10.00	{"color": "red"}
5894	mango	10.00	{"color": "green"}
5900 rows affected
591Update with >= operator and placeholder
592send Mysqlx.Crud.Update {
593  collection {
594    name: "mytable"
595    schema: "xtest"
596  }
597  data_model: TABLE
598  criteria {
599    type: OPERATOR
600    operator {
601      name: ">="
602      param {
603        type: IDENT
604        identifier {
605          name: "price"
606        }
607      }
608      param {
609        type: PLACEHOLDER
610        position: 0
611      }
612    }
613  }
614  operation {
615    source {
616      name: "price"
617    }
618    operation: SET
619    value {
620      type: LITERAL
621      literal {
622        type: V_DOUBLE
623        v_double: 895.63
624      }
625    }
626  }
627  args {
628    type: V_DOUBLE
629    v_double: 1.8
630  }
631}
632
633
6343 rows affected
635Rows matched: 3  Changed: 3  Warnings: 0
636RUN SELECT * FROM xtest.mytable ORDER BY price
637id	name	price	info
6386	berry	null	{"color": "orange"}
6392	apple	0.25	{"color": "red"}
6405	orange	0.90	{"color": "orange"}
6411	banana	895.63	{"color": "yellow"}
6423	tomato	895.63	{"color": "red"}
6434	mango	895.63	{"color": "green"}
6440 rows affected
645Update with <= operator and placeholder
646send Mysqlx.Crud.Update {
647  collection {
648    name: "mytable"
649    schema: "xtest"
650  }
651  data_model: TABLE
652  criteria {
653    type: OPERATOR
654    operator {
655      name: "<="
656      param {
657        type: IDENT
658        identifier {
659          name: "price"
660        }
661      }
662      param {
663        type: PLACEHOLDER
664        position: 0
665      }
666    }
667  }
668  operation {
669    source {
670      name: "price"
671    }
672    operation: SET
673    value {
674      type: LITERAL
675      literal {
676        type: V_DOUBLE
677        v_double: 456.54
678      }
679    }
680  }
681  args {
682    type: V_DOUBLE
683    v_double: 0.9
684  }
685}
686
687
6882 rows affected
689Rows matched: 2  Changed: 2  Warnings: 0
690RUN SELECT * FROM xtest.mytable ORDER BY price
691id	name	price	info
6926	berry	null	{"color": "orange"}
6932	apple	456.54	{"color": "red"}
6945	orange	456.54	{"color": "orange"}
6951	banana	895.63	{"color": "yellow"}
6963	tomato	895.63	{"color": "red"}
6974	mango	895.63	{"color": "green"}
6980 rows affected
699Update with Float value and placeholder
700send Mysqlx.Crud.Update {
701  collection {
702    name: "mytable"
703    schema: "xtest"
704  }
705  data_model: TABLE
706  criteria {
707    type: OPERATOR
708    operator {
709      name: "=="
710      param {
711        type: IDENT
712        identifier {
713          name: "name"
714        }
715      }
716      param {
717        type: PLACEHOLDER
718        position: 0
719      }
720    }
721  }
722  operation {
723    source {
724      name: "price"
725    }
726    operation: SET
727    value {
728      type: LITERAL
729      literal {
730        type: V_FLOAT
731        v_float: 256.53
732      }
733    }
734  }
735  args {
736    type: V_STRING
737    v_string {
738      value: "berry"
739    }
740  }
741}
742
743
7441 rows affected
745Rows matched: 1  Changed: 1  Warnings: 0
746RUN SELECT * FROM xtest.mytable ORDER BY price
747id	name	price	info
7486	berry	256.53	{"color": "orange"}
7492	apple	456.54	{"color": "red"}
7505	orange	456.54	{"color": "orange"}
7511	banana	895.63	{"color": "yellow"}
7523	tomato	895.63	{"color": "red"}
7534	mango	895.63	{"color": "green"}
7540 rows affected
755Update with String value and placeholder
756send Mysqlx.Crud.Update {
757  collection {
758    name: "mytable"
759    schema: "xtest"
760  }
761  data_model: TABLE
762  criteria {
763    type: OPERATOR
764    operator {
765      name: "=="
766      param {
767        type: IDENT
768        identifier {
769          name: "price"
770        }
771      }
772      param {
773        type: PLACEHOLDER
774        position: 0
775      }
776    }
777  }
778  operation {
779    source {
780      name: "name"
781    }
782    operation: SET
783    value {
784      type: LITERAL
785      literal {
786        type: V_STRING
787        v_string {
788          value: "watermelon"
789        }
790      }
791    }
792  }
793  args {
794    type: V_DOUBLE
795    v_double: 256.53
796  }
797}
798
799
8001 rows affected
801Rows matched: 1  Changed: 1  Warnings: 0
802RUN SELECT * FROM xtest.mytable ORDER BY price
803id	name	price	info
8046	watermelon	256.53	{"color": "orange"}
8052	apple	456.54	{"color": "red"}
8065	orange	456.54	{"color": "orange"}
8071	banana	895.63	{"color": "yellow"}
8083	tomato	895.63	{"color": "red"}
8094	mango	895.63	{"color": "green"}
8100 rows affected
811Update with Null value and placeholder
812send Mysqlx.Crud.Update {
813  collection {
814    name: "mytable"
815    schema: "xtest"
816  }
817  data_model: TABLE
818  criteria {
819    type: OPERATOR
820    operator {
821      name: "=="
822      param {
823        type: IDENT
824        identifier {
825          name: "name"
826        }
827      }
828      param {
829        type: PLACEHOLDER
830        position: 0
831      }
832    }
833  }
834  operation {
835    source {
836      name: "price"
837    }
838    operation: SET
839    value {
840      type: LITERAL
841      literal {
842        type: V_NULL
843      }
844    }
845  }
846  args {
847    type: V_STRING
848    v_string {
849      value: "banana"
850    }
851  }
852}
853
854
8551 rows affected
856Rows matched: 1  Changed: 1  Warnings: 0
857RUN SELECT * FROM xtest.mytable ORDER BY price
858id	name	price	info
8591	banana	null	{"color": "yellow"}
8606	watermelon	256.53	{"color": "orange"}
8612	apple	456.54	{"color": "red"}
8625	orange	456.54	{"color": "orange"}
8633	tomato	895.63	{"color": "red"}
8644	mango	895.63	{"color": "green"}
8650 rows affected
866Update with ITEM_MERGE value and placeholder
867send Mysqlx.Crud.Update {
868  collection {
869    name: "mytable"
870    schema: "xtest"
871  }
872  data_model: TABLE
873  criteria {
874    type: OPERATOR
875    operator {
876      name: "=="
877      param {
878        type: IDENT
879        identifier {
880          name: "name"
881        }
882      }
883      param {
884        type: PLACEHOLDER
885        position: 0
886      }
887    }
888  }
889  operation {
890    source {
891      name: "info"
892    }
893    operation: ITEM_MERGE
894    value {
895      type: LITERAL
896      literal {
897        type: V_OCTETS
898        v_octets {
899          value: "{\"third\":3.0, \"fourth\": \"four\"}"
900        }
901      }
902    }
903  }
904  args {
905    type: V_STRING
906    v_string {
907      value: "banana"
908    }
909  }
910}
911
912
9131 rows affected
914Rows matched: 1  Changed: 1  Warnings: 1
915Warnings generated:
916WARNING | 1287 | 'JSON_MERGE' is deprecated and will be removed in a future release. Please use JSON_MERGE_PRESERVE/JSON_MERGE_PATCH instead
917RUN SELECT * FROM xtest.mytable ORDER BY price
918id	name	price	info
9191	banana	null	{"color": "yellow", "third": 3, "fourth": "four"}
9206	watermelon	256.53	{"color": "orange"}
9212	apple	456.54	{"color": "red"}
9225	orange	456.54	{"color": "orange"}
9233	tomato	895.63	{"color": "red"}
9244	mango	895.63	{"color": "green"}
9250 rows affected
926RUN insert into xtest.mytable values (7, 'Grapes',null, '{"third": ["two"]}')
927
9281 rows affected
929Update with ARRAY_INSERT value and placeholder
930send Mysqlx.Crud.Update {
931  collection {
932    name: "mytable"
933    schema: "xtest"
934  }
935  data_model: TABLE
936  criteria {
937    type: OPERATOR
938    operator {
939      name: "=="
940      param {
941        type: IDENT
942        identifier {
943          name: "name"
944        }
945      }
946      param {
947        type: PLACEHOLDER
948        position: 0
949      }
950    }
951  }
952  operation {
953    source {
954      document_path {
955        type: MEMBER
956        value: "third"
957      }
958      document_path {
959        type: ARRAY_INDEX
960        index: 0
961      }
962      name: "info"
963    }
964    operation: ARRAY_INSERT
965    value {
966      type: LITERAL
967      literal {
968        type: V_OCTETS
969        v_octets {
970          value: "two.1"
971        }
972      }
973    }
974  }
975  args {
976    type: V_STRING
977    v_string {
978      value: "Grapes"
979    }
980  }
981}
982
983
9841 rows affected
985Rows matched: 1  Changed: 1  Warnings: 0
986RUN SELECT * FROM xtest.mytable ORDER BY price
987id	name	price	info
9881	banana	null	{"color": "yellow", "third": 3, "fourth": "four"}
9897	Grapes	null	{"third": ["two.1", "two"]}
9906	watermelon	256.53	{"color": "orange"}
9912	apple	456.54	{"color": "red"}
9925	orange	456.54	{"color": "orange"}
9933	tomato	895.63	{"color": "red"}
9944	mango	895.63	{"color": "green"}
9950 rows affected
996Delete with == Operator and placeholder
997send Mysqlx.Crud.Delete {
998  collection {
999    name: "mytable"
1000    schema: "xtest"
1001  }
1002  data_model: TABLE
1003  criteria {
1004    type: OPERATOR
1005    operator {
1006      name: "=="
1007      param {
1008        type: IDENT
1009        identifier {
1010          name: "price"
1011        }
1012      }
1013      param {
1014        type: PLACEHOLDER
1015        position: 0
1016      }
1017    }
1018  }
1019  args {
1020    type: V_DOUBLE
1021    v_double: 256.53
1022  }
1023}
1024
1025
10261 rows affected
1027RUN SELECT * FROM xtest.mytable
1028id	name	price	info
10291	banana	null	{"color": "yellow", "third": 3, "fourth": "four"}
10302	apple	456.54	{"color": "red"}
10313	tomato	895.63	{"color": "red"}
10324	mango	895.63	{"color": "green"}
10335	orange	456.54	{"color": "orange"}
10347	Grapes	null	{"third": ["two.1", "two"]}
10350 rows affected
1036Delete with != Operator and placeholder
1037send Mysqlx.Crud.Delete {
1038  collection {
1039    name: "mytable"
1040    schema: "xtest"
1041  }
1042  data_model: TABLE
1043  criteria {
1044    type: OPERATOR
1045    operator {
1046      name: "!="
1047      param {
1048        type: IDENT
1049        identifier {
1050          name: "price"
1051        }
1052      }
1053      param {
1054        type: PLACEHOLDER
1055        position: 0
1056      }
1057    }
1058  }
1059  args {
1060    type: V_DOUBLE
1061    v_double: 256.53
1062  }
1063}
1064
1065
10664 rows affected
1067RUN SELECT * FROM xtest.mytable
1068id	name	price	info
10691	banana	null	{"color": "yellow", "third": 3, "fourth": "four"}
10707	Grapes	null	{"third": ["two.1", "two"]}
10710 rows affected
1072Find Wrong placeholder
1073send Mysqlx.Crud.Find {
1074  collection {
1075    name: "mytable"
1076    schema: "xtest"
1077  }
1078  data_model: TABLE
1079  criteria {
1080    type: OPERATOR
1081    operator {
1082      name: ">"
1083      param {
1084        type: IDENT
1085        identifier {
1086          name: "price"
1087        }
1088      }
1089      param {
1090        type: PLACEHOLDER
1091        position: 1
1092      }
1093    }
1094  }
1095  args {
1096    type: V_DOUBLE
1097    v_double: 0
1098  }
1099}
1100
1101Got expected error: Invalid value of placeholder (code 5154)
1102Find Missing placeholder
1103send Mysqlx.Crud.Find {
1104  collection {
1105    name: "mytable"
1106    schema: "xtest"
1107  }
1108  data_model: TABLE
1109  criteria {
1110    type: OPERATOR
1111    operator {
1112      name: ">"
1113      param {
1114        type: IDENT
1115        identifier {
1116          name: "price"
1117        }
1118      }
1119      param {
1120        type: PLACEHOLDER
1121        position: 0
1122      }
1123    }
1124  }
1125}
1126
1127Got expected error: Invalid value of placeholder (code 5154)
1128================================================================================
1129CLEAN UP
1130================================================================================
1131RUN drop schema if exists xtest
1132
11331 rows affected
1134Mysqlx.Ok {
1135  msg: "bye!"
1136}
1137ok
1138================================================================================
1139POSTAMBLE
1140================================================================================
1141uninstall plugin mysqlx;
1142