1-->macro Operation_value	%SOURCE%	%OPERATION%	%VALUE%
2-->varlet %PAYLOAD% %PAYLOAD%   operation {
3-->varlet %PAYLOAD% %PAYLOAD%     source {
4-->varlet %PAYLOAD% %PAYLOAD%       %SOURCE%
5-->varlet %PAYLOAD% %PAYLOAD%     }
6-->varlet %PAYLOAD% %PAYLOAD%     operation: %OPERATION%
7-->varlet %PAYLOAD% %PAYLOAD%     value {
8-->varlet %PAYLOAD% %PAYLOAD%       %VALUE%
9-->varlet %PAYLOAD% %PAYLOAD%     }
10-->varlet %PAYLOAD% %PAYLOAD%   }
11-->endmacro
12
13
14-->macro_varg Crud_set_Op_octets	%SRC%	%OP%	%LITERAL%
15callmacro Operation_value
16	%SRC%
17	%OP%
18	type: LITERAL literal { type: V_OCTETS v_octets {value: %LITERAL% } };
19-->callmacro Crud %VAR_ARGS%
20-->endmacro
21
22
23-->macro_varg Crud_set_Op_object	%SRC%	%OP%	%FIELDS%
24callmacro Operation_value
25	%SRC%
26	%OP%
27	type: OBJECT object { %FIELDS% };
28-->callmacro Crud %VAR_ARGS%
29-->endmacro
30
31
32-->macro_varg Crud_set_Where_field	%FIELD%	%VALUE%
33-->varlet %PAYLOAD% %PAYLOAD%   criteria {
34-->varlet %PAYLOAD% %PAYLOAD%     type: OPERATOR
35-->varlet %PAYLOAD% %PAYLOAD%     operator {
36-->varlet %PAYLOAD% %PAYLOAD%       name: "=="
37-->varlet %PAYLOAD% %PAYLOAD%       param {
38-->varlet %PAYLOAD% %PAYLOAD%         type: IDENT
39-->varlet %PAYLOAD% %PAYLOAD%         identifier {
40-->varlet %PAYLOAD% %PAYLOAD%           document_path {
41-->varlet %PAYLOAD% %PAYLOAD%             type: MEMBER value: %FIELD%
42-->varlet %PAYLOAD% %PAYLOAD%           }
43-->varlet %PAYLOAD% %PAYLOAD%         }
44-->varlet %PAYLOAD% %PAYLOAD%       }
45-->varlet %PAYLOAD% %PAYLOAD%       param {
46-->varlet %PAYLOAD% %PAYLOAD%         type: LITERAL
47-->varlet %PAYLOAD% %PAYLOAD%         literal {
48-->varlet %PAYLOAD% %PAYLOAD%           type: V_OCTETS
49-->varlet %PAYLOAD% %PAYLOAD%           v_octets { value: %VALUE% }
50-->varlet %PAYLOAD% %PAYLOAD%         }
51-->varlet %PAYLOAD% %PAYLOAD%       }
52-->varlet %PAYLOAD% %PAYLOAD%     }
53-->varlet %PAYLOAD% %PAYLOAD%   }
54
55-->callmacro Crud %VAR_ARGS%
56-->endmacro
57
58
59-->macro_varg Crud_update
60-->varlet %PAYLOAD%
61-->callmacro Crud %VAR_ARGS%
62Mysqlx.Crud.Update {
63  %PAYLOAD%
64}
65-->endmacro
66