Tue Sep 7 18:11:16 PDT 2004
- Previous message: [Slony1-commit] By darcyb: Some compilers are braindead about including utils/elog (read
- Next message: [Slony1-commit] By cbbrowne: Add the case of trying to add a table to a subscribed set.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Log Message: ----------- Added option "EXECUTE ONLY ON = <nodeid>" to the DDL script execution. Jan Modified Files: -------------- slony1-engine/doc/howto: slonik_commands.html (r1.5 -> r1.6) slony1-engine/src/backend: slony1_funcs.sql (r1.23 -> r1.24) slony1-engine/src/slon: remote_worker.c (r1.59 -> r1.60) slony1-engine/src/slonik: parser.c (r1.17 -> r1.18) parser.y (r1.16 -> r1.17) scan.c (r1.18 -> r1.19) scan.l (r1.18 -> r1.19) slonik.c (r1.29 -> r1.30) slonik.h (r1.17 -> r1.18) -------------- next part -------------- Index: slonik_commands.html =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/doc/howto/slonik_commands.html,v retrieving revision 1.5 retrieving revision 1.6 diff -Ldoc/howto/slonik_commands.html -Ldoc/howto/slonik_commands.html -u -w -r1.5 -r1.6 --- doc/howto/slonik_commands.html +++ doc/howto/slonik_commands.html @@ -1473,6 +1473,17 @@ The default value is 1. </p></td> </tr> +<tr> + <td align="left" valign="top" nowrap><b>EXECUTE ONLY ON = <ival></b></td> + <td align="left" valign="top"><p> + <b>(Optional)</b> + The ID of the only node to actually execute the script. + This option causes the script to be propagated by all nodes + but executed only by one. + The default is to execute the script on all nodes that are + subscribed to the set. + </p></td> +</tr> </table> <h3>Example:</h3> <p> Index: slony1_funcs.sql =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/backend/slony1_funcs.sql,v retrieving revision 1.23 retrieving revision 1.24 diff -Lsrc/backend/slony1_funcs.sql -Lsrc/backend/slony1_funcs.sql -u -w -r1.23 -r1.24 --- src/backend/slony1_funcs.sql +++ src/backend/slony1_funcs.sql @@ -2603,16 +2603,17 @@ replicated table trig_tabid IS disabled.'; -- ---------------------------------------------------------------------- --- FUNCTION ddlScript (set_id, script) +-- FUNCTION ddlScript (set_id, script, only_on_node) -- -- Generate the DDL_SCRIPT event -- ---------------------------------------------------------------------- -create or replace function @NAMESPACE at .ddlScript (int4, text) +create or replace function @NAMESPACE at .ddlScript (int4, text, int4) returns bigint as ' declare p_set_id alias for $1; p_script alias for $2; + p_only_on_node alias for $3; v_set_origin int4; begin -- ---- @@ -2639,29 +2640,30 @@ -- Create a SYNC event, run the script and generate the DDL_SCRIPT event -- ---- perform @NAMESPACE at .createEvent(''_ at CLUSTERNAME@'', ''SYNC'', NULL); - perform @NAMESPACE at .ddlScript_int(p_set_id, p_script); + perform @NAMESPACE at .ddlScript_int(p_set_id, p_script, p_only_on_node); return @NAMESPACE at .createEvent(''_ at CLUSTERNAME@'', ''DDL_SCRIPT'', - p_set_id, p_script); + p_set_id, p_script, p_only_on_node); end; ' language plpgsql; -comment on function @NAMESPACE at .ddlScript(int4, text) is -'ddlScript(set_id, script) +comment on function @NAMESPACE at .ddlScript(int4, text, int4) is +'ddlScript(set_id, script, only_on_node) Generates a SYNC event, runs the script on the origin, and then generates a DDL_SCRIPT event to request it to be run on replicated slaves.'; -- ---------------------------------------------------------------------- --- FUNCTION ddlScript_int (set_id, script) +-- FUNCTION ddlScript_int (set_id, script, only_on_node) -- -- Process the DDL_SCRIPT event -- ---------------------------------------------------------------------- -create or replace function @NAMESPACE at .ddlScript_int (int4, text) +create or replace function @NAMESPACE at .ddlScript_int (int4, text, int4) returns int4 as ' declare p_set_id alias for $1; p_script alias for $2; + p_only_on_node alias for $3; v_set_origin int4; v_no_id int4; v_row record; @@ -2692,6 +2694,14 @@ end if; -- ---- + -- If execution on only one node is requested, check that + -- we are that node. + -- ---- + if p_only_on_node > 0 and p_only_on_node <> v_no_id then + return 0; + end if; + + -- ---- -- Restore all original triggers and rules -- ---- for v_row in select * from @NAMESPACE at .sl_table @@ -2717,8 +2727,8 @@ return p_set_id; end; ' language plpgsql; -comment on function @NAMESPACE at .ddlScript_int(int4, text) is -'ddlScript_int(set_id, script) +comment on function @NAMESPACE at .ddlScript_int(int4, text, int4) is +'ddlScript_int(set_id, script, only_on_node) Processes the DDL_SCRIPT event. On slave nodes, this restores original triggers/rules, runs the script, and then puts tables back Index: remote_worker.c =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/remote_worker.c,v retrieving revision 1.59 retrieving revision 1.60 diff -Lsrc/slon/remote_worker.c -Lsrc/slon/remote_worker.c -u -w -r1.59 -r1.60 --- src/slon/remote_worker.c +++ src/slon/remote_worker.c @@ -913,11 +913,12 @@ { int ddl_setid = (int) strtol(event->ev_data1, NULL, 10); char *ddl_script = event->ev_data2; + int ddl_only_on_node = (int) strtol(event->ev_data3, NULL, 10); slon_appendquery(&query1, - "select %s.ddlScript_int(%d, '%q'); ", + "select %s.ddlScript_int(%d, '%q', %d); ", rtcfg_namespace, - ddl_setid, ddl_script); + ddl_setid, ddl_script, ddl_only_on_node); } else { Index: scan.l =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/scan.l,v retrieving revision 1.18 retrieving revision 1.19 diff -Lsrc/slonik/scan.l -Lsrc/slonik/scan.l -u -w -r1.18 -r1.19 --- src/slonik/scan.l +++ src/slonik/scan.l @@ -76,6 +76,7 @@ off { return K_OFF; } old { return K_OLD; } on { return K_ON; } +only { return K_ONLY; } origin { return K_ORIGIN; } path { return K_PATH; } provider { return K_PROVIDER; } Index: slonik.h =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/slonik.h,v retrieving revision 1.17 retrieving revision 1.18 diff -Lsrc/slonik/slonik.h -Lsrc/slonik/slonik.h -u -w -r1.17 -r1.18 --- src/slonik/slonik.h +++ src/slonik/slonik.h @@ -317,6 +317,7 @@ int ddl_setid; char *ddl_fname; int ev_origin; + int only_on_node; int ddl_fd; }; Index: scan.c =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/scan.c,v retrieving revision 1.18 retrieving revision 1.19 diff -Lsrc/slonik/scan.c -Lsrc/slonik/scan.c -u -w -r1.18 -r1.19 --- src/slonik/scan.c +++ src/slonik/scan.c @@ -291,59 +291,60 @@ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 76 -#define YY_END_OF_BUFFER 77 -static yyconst short int yy_acclist[420] = +#define YY_NUM_RULES 77 +#define YY_END_OF_BUFFER 78 +static yyconst short int yy_acclist[423] = { 0, - 77, 75, 76, 67, 75, 76, 67, 76, 74, 75, - 76, 68, 75, 76, 65, 75, 76, 66, 75, 76, - 66, 75, 76, 66, 75, 76, 66, 75, 76, 66, - 75, 76, 66, 75, 76, 66, 75, 76, 66, 75, - 76, 66, 75, 76, 66, 75, 76, 66, 75, 76, - 66, 75, 76, 66, 75, 76, 66, 75, 76, 66, - 75, 76, 66, 75, 76, 66, 75, 76, 66, 75, - 76, 66, 75, 76, 66, 75, 76, 66, 75, 76, - 73, 76, 72, 76, 70, 76, 67, 74, 65, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 26, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 35, 66, 66, 66, 39, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 73, 71, 69, - 1, 66, 66, 3, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 21, 66, 66, 66, 66, 28, 66, 66, 66, 66, - 66, 66, 34, 66, 66, 37, 66, 38, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 50, 66, - 66, 66, 66, 66, 66, 66, 66, 58, 66, 66, - - 66, 66, 66, 66, 63, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 12, 66, 13, 66, 66, 66, - 66, 17, 66, 66, 66, 66, 66, 23, 66, 66, - 27, 66, 66, 30, 66, 66, 32, 66, 33, 66, - 36, 66, 66, 41, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 57, - 66, 66, 66, 66, 66, 64, 66, 2, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 14, 66, 15, - 66, 66, 66, 19, 66, 66, 66, 24, 66, 66, - 66, 31, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 51, 66, 66, 66, 54, 66, 66, 66, - 66, 66, 66, 66, 4, 66, 5, 66, 66, 66, - 66, 66, 66, 11, 66, 66, 66, 66, 66, 66, - 29, 66, 40, 66, 66, 66, 66, 66, 46, 66, - 66, 48, 66, 49, 66, 66, 66, 66, 66, 66, - 60, 66, 66, 62, 66, 6, 66, 7, 66, 66, - 66, 66, 16, 66, 66, 66, 22, 66, 66, 66, - 66, 66, 45, 66, 66, 66, 53, 66, 55, 66, - 56, 66, 66, 66, 66, 9, 66, 66, 18, 66, - 20, 66, 66, 42, 66, 66, 44, 66, 47, 66, - - 66, 66, 66, 8, 66, 10, 66, 25, 66, 43, - 66, 52, 66, 59, 66, 66, 66, 61, 66 + 78, 76, 77, 68, 76, 77, 68, 77, 75, 76, + 77, 69, 76, 77, 66, 76, 77, 67, 76, 77, + 67, 76, 77, 67, 76, 77, 67, 76, 77, 67, + 76, 77, 67, 76, 77, 67, 76, 77, 67, 76, + 77, 67, 76, 77, 67, 76, 77, 67, 76, 77, + 67, 76, 77, 67, 76, 77, 67, 76, 77, 67, + 76, 77, 67, 76, 77, 67, 76, 77, 67, 76, + 77, 67, 76, 77, 67, 76, 77, 67, 76, 77, + 74, 77, 73, 77, 71, 77, 68, 75, 66, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + + 67, 67, 67, 67, 67, 26, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 35, 67, 67, 67, 39, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 74, 72, 70, + 1, 67, 67, 3, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 21, 67, 67, 67, 67, 28, 67, 67, 67, 67, + 67, 67, 34, 67, 67, 37, 67, 38, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 51, + 67, 67, 67, 67, 67, 67, 67, 67, 59, 67, + + 67, 67, 67, 67, 67, 64, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 12, 67, 13, 67, 67, + 67, 67, 17, 67, 67, 67, 67, 67, 23, 67, + 67, 27, 67, 67, 30, 67, 67, 32, 67, 33, + 67, 36, 67, 40, 67, 67, 42, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 58, 67, 67, 67, 67, 67, 65, 67, + 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 14, 67, 15, 67, 67, 67, 19, 67, 67, 67, + 24, 67, 67, 67, 31, 67, 67, 67, 67, 67, + + 67, 67, 67, 67, 67, 52, 67, 67, 67, 55, + 67, 67, 67, 67, 67, 67, 67, 4, 67, 5, + 67, 67, 67, 67, 67, 67, 11, 67, 67, 67, + 67, 67, 67, 29, 67, 41, 67, 67, 67, 67, + 67, 47, 67, 67, 49, 67, 50, 67, 67, 67, + 67, 67, 67, 61, 67, 67, 63, 67, 6, 67, + 7, 67, 67, 67, 67, 16, 67, 67, 67, 22, + 67, 67, 67, 67, 67, 46, 67, 67, 67, 54, + 67, 56, 67, 57, 67, 67, 67, 67, 9, 67, + 67, 18, 67, 20, 67, 67, 43, 67, 67, 45, + + 67, 48, 67, 67, 67, 67, 8, 67, 10, 67, + 25, 67, 44, 67, 53, 67, 60, 67, 67, 67, + 62, 67 } ; -static yyconst short int yy_accept[307] = +static yyconst short int yy_accept[309] = { 0, 1, 1, 1, 1, 1, 2, 4, 7, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, @@ -358,27 +359,27 @@ 157, 158, 159, 160, 161, 163, 164, 165, 166, 168, 169, 170, 171, 172, 173, 175, 176, 178, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, - 193, 194, 195, 196, 197, 198, 200, 201, 202, 203, - 204, 205, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 217, 219, 220, 221, 222, 224, 225, 226, 227, - 228, 230, 231, 233, 234, 236, 237, 239, 241, 243, - 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 262, 263, 264, 265, - 266, 268, 270, 271, 272, 273, 274, 275, 276, 277, - - 278, 280, 282, 283, 284, 286, 287, 288, 290, 291, - 292, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 305, 306, 307, 309, 310, 311, 312, 313, 314, - 315, 317, 319, 320, 321, 322, 323, 324, 326, 327, - 328, 329, 330, 331, 333, 335, 336, 337, 338, 339, - 341, 342, 344, 346, 347, 348, 349, 350, 351, 353, - 354, 356, 358, 360, 361, 362, 363, 365, 366, 367, - 369, 370, 371, 372, 373, 375, 376, 377, 379, 381, - 383, 384, 385, 386, 388, 389, 391, 393, 394, 396, - 397, 399, 401, 402, 403, 404, 406, 408, 410, 412, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, + 193, 194, 195, 196, 197, 198, 199, 201, 202, 203, + 204, 205, 206, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 218, 220, 221, 222, 223, 225, 226, 227, + 228, 229, 231, 232, 234, 235, 237, 238, 240, 242, + 244, 246, 247, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 265, 266, + 267, 268, 269, 271, 273, 274, 275, 276, 277, 278, + + 279, 280, 281, 283, 285, 286, 287, 289, 290, 291, + 293, 294, 295, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 308, 309, 310, 312, 313, 314, 315, + 316, 317, 318, 320, 322, 323, 324, 325, 326, 327, + 329, 330, 331, 332, 333, 334, 336, 338, 339, 340, + 341, 342, 344, 345, 347, 349, 350, 351, 352, 353, + 354, 356, 357, 359, 361, 363, 364, 365, 366, 368, + 369, 370, 372, 373, 374, 375, 376, 378, 379, 380, + 382, 384, 386, 387, 388, 389, 391, 392, 394, 396, + 397, 399, 400, 402, 404, 405, 406, 407, 409, 411, - 414, 416, 417, 418, 420, 420 + 413, 415, 417, 419, 420, 421, 423, 423 } ; static yyconst int yy_ec[256] = @@ -421,83 +422,85 @@ 4, 4, 4, 4 } ; -static yyconst short int yy_base[311] = +static yyconst short int yy_base[313] = { 0, - 0, 0, 28, 29, 330, 331, 37, 40, 0, 331, - 321, 0, 31, 317, 26, 300, 33, 37, 35, 311, - 35, 47, 54, 47, 46, 295, 309, 62, 61, 56, - 312, 307, 0, 314, 0, 80, 0, 312, 0, 71, - 298, 305, 57, 67, 302, 292, 297, 287, 298, 36, - 75, 291, 284, 74, 0, 291, 275, 280, 294, 279, - 274, 282, 271, 288, 285, 286, 0, 280, 269, 273, - 285, 73, 268, 73, 270, 91, 281, 270, 79, 86, - 277, 271, 261, 0, 331, 331, 0, 269, 0, 267, - 271, 257, 262, 92, 272, 257, 257, 256, 256, 265, - - 248, 255, 247, 259, 241, 251, 258, 241, 0, 240, - 248, 250, 251, 250, 0, 249, 0, 0, 246, 244, - 230, 239, 244, 229, 238, 226, 87, 0, 228, 226, - 240, 231, 236, 233, 234, 0, 225, 223, 216, 234, - 215, 0, 220, 212, 218, 211, 224, 219, 92, 208, - 0, 0, 209, 206, 204, 0, 209, 217, 208, 219, - 195, 199, 0, 212, 0, 211, 0, 0, 0, 206, - 0, 205, 204, 203, 210, 195, 204, 207, 202, 201, - 202, 199, 198, 188, 194, 0, 182, 196, 196, 178, - 0, 0, 181, 176, 189, 180, 175, 178, 185, 184, - - 0, 0, 169, 166, 0, 185, 168, 0, 175, 170, - 0, 169, 177, 174, 158, 161, 158, 163, 164, 157, - 0, 156, 154, 0, 151, 165, 150, 158, 149, 161, - 0, 0, 148, 145, 151, 156, 142, 0, 155, 154, - 146, 153, 142, 0, 0, 150, 145, 148, 133, 0, - 148, 0, 0, 141, 131, 129, 130, 145, 0, 142, - 0, 0, 0, 139, 129, 125, 0, 124, 135, 0, - 126, 121, 132, 119, 0, 130, 132, 0, 0, 0, - 122, 115, 127, 0, 106, 0, 0, 111, 0, 121, - 0, 0, 112, 105, 98, 0, 0, 0, 0, 0, + 0, 0, 28, 29, 332, 333, 37, 40, 0, 333, + 323, 0, 31, 319, 26, 302, 33, 37, 35, 313, + 35, 47, 54, 47, 46, 297, 311, 62, 61, 56, + 314, 309, 0, 316, 0, 80, 0, 314, 0, 71, + 300, 307, 57, 67, 304, 294, 299, 289, 300, 36, + 75, 293, 286, 74, 0, 293, 277, 282, 296, 281, + 276, 284, 273, 290, 287, 288, 280, 281, 270, 274, + 286, 73, 269, 73, 271, 91, 282, 271, 79, 86, + 278, 272, 262, 0, 333, 333, 0, 270, 0, 268, + 272, 258, 263, 92, 273, 258, 258, 257, 257, 266, + + 249, 256, 248, 260, 242, 252, 259, 242, 0, 241, + 249, 251, 252, 251, 0, 250, 0, 0, 230, 246, + 244, 230, 239, 244, 229, 238, 226, 87, 0, 228, + 226, 240, 231, 236, 233, 234, 0, 225, 223, 216, + 234, 215, 0, 220, 212, 218, 211, 224, 219, 92, + 208, 0, 0, 209, 206, 204, 0, 209, 217, 208, + 219, 195, 199, 0, 212, 0, 211, 0, 0, 0, + 0, 206, 0, 205, 204, 203, 210, 195, 204, 207, + 202, 201, 202, 199, 198, 188, 194, 0, 182, 196, + 196, 178, 0, 0, 181, 176, 189, 180, 175, 178, + + 185, 184, 0, 0, 169, 166, 0, 185, 168, 0, + 175, 170, 0, 169, 177, 174, 158, 161, 158, 163, + 164, 157, 0, 156, 154, 0, 151, 165, 150, 158, + 149, 161, 0, 0, 148, 145, 151, 156, 142, 0, + 155, 154, 146, 153, 142, 0, 0, 150, 145, 148, + 133, 0, 148, 0, 0, 141, 131, 129, 130, 145, + 0, 142, 0, 0, 0, 139, 129, 125, 0, 124, + 135, 0, 126, 121, 132, 119, 0, 130, 132, 0, + 0, 0, 122, 115, 127, 0, 106, 0, 0, 111, + 0, 121, 0, 0, 112, 105, 98, 0, 0, 0, - 0, 104, 97, 0, 331, 119, 124, 106, 129, 133 + 0, 0, 0, 104, 97, 0, 333, 119, 124, 106, + 129, 133 } ; -static yyconst short int yy_def[311] = +static yyconst short int yy_def[313] = { 0, - 305, 1, 306, 306, 305, 305, 305, 305, 307, 305, - 305, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 309, 305, 310, 305, 307, 305, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 309, 305, 305, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 307, 1, 308, 308, 307, 307, 307, 307, 309, 307, + 307, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 311, 307, 312, 307, 309, 307, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 311, 307, 307, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 308, 308, 308, 308, 0, 305, 305, 305, 305, 305 + 310, 310, 310, 310, 310, 310, 0, 307, 307, 307, + 307, 307 } ; -static yyconst short int yy_nxt[366] = +static yyconst short int yy_nxt[368] = { 0, 6, 7, 8, 7, 9, 6, 10, 11, 6, 12, 13, 14, 15, 16, 17, 18, 12, 12, 19, 20, @@ -507,41 +510,41 @@ 100, 41, 45, 58, 101, 52, 69, 56, 59, 48, 53, 60, 65, 49, 62, 50, 54, 66, 63, 67, 61, 77, 70, 68, 73, 91, 74, 64, 80, 78, - 81, 36, 36, 36, 87, 123, 92, 79, 93, 94, - 75, 76, 88, 102, 106, 103, 107, 134, 126, 127, + 81, 36, 36, 36, 87, 124, 92, 79, 93, 94, + 75, 76, 88, 102, 106, 103, 107, 135, 127, 128, - 124, 128, 130, 131, 137, 178, 138, 148, 135, 39, - 198, 304, 136, 139, 149, 303, 302, 179, 199, 33, - 33, 33, 33, 33, 37, 301, 300, 37, 37, 84, - 84, 84, 84, 86, 299, 86, 86, 86, 298, 297, - 296, 295, 294, 293, 292, 291, 290, 289, 288, 287, - 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, - 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, - 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, - 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, - 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, - - 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, - 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, - 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, - 206, 205, 204, 203, 202, 201, 200, 197, 196, 195, - 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, - 184, 183, 182, 181, 180, 177, 176, 175, 174, 173, - 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, - 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, - 152, 151, 150, 147, 146, 145, 144, 143, 142, 141, - 140, 133, 132, 129, 125, 122, 121, 120, 119, 118, - - 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, - 105, 104, 99, 98, 97, 96, 95, 90, 89, 38, - 85, 83, 82, 72, 71, 57, 46, 42, 38, 305, - 5, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305 + 125, 129, 131, 132, 138, 180, 139, 149, 136, 39, + 200, 306, 137, 140, 150, 305, 304, 181, 201, 33, + 33, 33, 33, 33, 37, 303, 302, 37, 37, 84, + 84, 84, 84, 86, 301, 86, 86, 86, 300, 299, + 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, + 288, 287, 286, 285, 284, 283, 282, 281, 280, 279, + 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, + 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, + 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, + 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, + + 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, + 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, + 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, + 208, 207, 206, 205, 204, 203, 202, 199, 198, 197, + 196, 195, 194, 193, 192, 191, 190, 189, 188, 187, + 186, 185, 184, 183, 182, 179, 178, 177, 176, 175, + 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, + 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, + 154, 153, 152, 151, 148, 147, 146, 145, 144, 143, + 142, 141, 134, 133, 130, 126, 123, 122, 121, 120, + + 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, + 109, 108, 105, 104, 99, 98, 97, 96, 95, 90, + 89, 38, 85, 83, 82, 72, 71, 57, 46, 42, + 38, 307, 5, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307 } ; -static yyconst short int yy_chk[366] = +static yyconst short int yy_chk[368] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -554,35 +557,35 @@ 30, 36, 36, 36, 40, 72, 43, 29, 44, 44, 28, 28, 40, 51, 54, 51, 54, 79, 74, 74, - 72, 74, 76, 76, 80, 127, 80, 94, 79, 308, - 149, 303, 79, 80, 94, 302, 295, 127, 149, 306, - 306, 306, 306, 306, 307, 294, 293, 307, 307, 309, - 309, 309, 309, 310, 290, 310, 310, 310, 288, 285, - 283, 282, 281, 277, 276, 274, 273, 272, 271, 269, - 268, 266, 265, 264, 260, 258, 257, 256, 255, 254, - 251, 249, 248, 247, 246, 243, 242, 241, 240, 239, - 237, 236, 235, 234, 233, 230, 229, 228, 227, 226, - 225, 223, 222, 220, 219, 218, 217, 216, 215, 214, - 213, 212, 210, 209, 207, 206, 204, 203, 200, 199, - - 198, 197, 196, 195, 194, 193, 190, 189, 188, 187, - 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, - 175, 174, 173, 172, 170, 166, 164, 162, 161, 160, - 159, 158, 157, 155, 154, 153, 150, 148, 147, 146, - 145, 144, 143, 141, 140, 139, 138, 137, 135, 134, - 133, 132, 131, 130, 129, 126, 125, 124, 123, 122, - 121, 120, 119, 116, 114, 113, 112, 111, 110, 108, - 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, - 97, 96, 95, 93, 92, 91, 90, 88, 83, 82, - 81, 78, 77, 75, 73, 71, 70, 69, 68, 66, - - 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, - 53, 52, 49, 48, 47, 46, 45, 42, 41, 38, - 34, 32, 31, 27, 26, 20, 16, 14, 11, 5, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305 + 72, 74, 76, 76, 80, 128, 80, 94, 79, 310, + 150, 305, 79, 80, 94, 304, 297, 128, 150, 308, + 308, 308, 308, 308, 309, 296, 295, 309, 309, 311, + 311, 311, 311, 312, 292, 312, 312, 312, 290, 287, + 285, 284, 283, 279, 278, 276, 275, 274, 273, 271, + 270, 268, 267, 266, 262, 260, 259, 258, 257, 256, + 253, 251, 250, 249, 248, 245, 244, 243, 242, 241, + 239, 238, 237, 236, 235, 232, 231, 230, 229, 228, + 227, 225, 224, 222, 221, 220, 219, 218, 217, 216, + 215, 214, 212, 211, 209, 208, 206, 205, 202, 201, + + 200, 199, 198, 197, 196, 195, 192, 191, 190, 189, + 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, + 177, 176, 175, 174, 172, 167, 165, 163, 162, 161, + 160, 159, 158, 156, 155, 154, 151, 149, 148, 147, + 146, 145, 144, 142, 141, 140, 139, 138, 136, 135, + 134, 133, 132, 131, 130, 127, 126, 125, 124, 123, + 122, 121, 120, 119, 116, 114, 113, 112, 111, 110, + 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, + 98, 97, 96, 95, 93, 92, 91, 90, 88, 83, + 82, 81, 78, 77, 75, 73, 71, 70, 69, 68, + + 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, + 57, 56, 53, 52, 49, 48, 47, 46, 45, 42, + 41, 38, 34, 32, 31, 27, 26, 20, 16, 14, + 11, 5, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307 } ; static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; @@ -620,7 +623,7 @@ quoted_ident (\"[^\"]*\")+ identifier ({ident_start}{ident_cont}*|{quoted_ident}) */ -#line 624 "scan.c" +#line 627 "scan.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -778,7 +781,7 @@ BEGIN(INITIAL); -#line 782 "scan.c" +#line 785 "scan.c" if ( yy_init ) { @@ -826,14 +829,14 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 308 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; *yy_state_ptr++ = yy_current_state; ++yy_cp; } - while ( yy_base[yy_current_state] != 331 ); + while ( yy_base[yy_current_state] != 333 ); yy_find_action: yy_current_state = *--yy_state_ptr; @@ -1067,156 +1070,156 @@ case 40: YY_RULE_SETUP #line 79 "scan.l" -{ return K_ORIGIN; } +{ return K_ONLY; } YY_BREAK case 41: YY_RULE_SETUP #line 80 "scan.l" -{ return K_PATH; } +{ return K_ORIGIN; } YY_BREAK case 42: YY_RULE_SETUP #line 81 "scan.l" -{ return K_PROVIDER; } +{ return K_PATH; } YY_BREAK case 43: YY_RULE_SETUP #line 82 "scan.l" -{ return K_QUALIFIED; } +{ return K_PROVIDER; } YY_BREAK case 44: YY_RULE_SETUP #line 83 "scan.l" -{ return K_RECEIVER; } +{ return K_QUALIFIED; } YY_BREAK case 45: YY_RULE_SETUP #line 84 "scan.l" -{ return K_RESTART; } +{ return K_RECEIVER; } YY_BREAK case 46: YY_RULE_SETUP #line 85 "scan.l" -{ return K_SCRIPT; } +{ return K_RESTART; } YY_BREAK case 47: YY_RULE_SETUP #line 86 "scan.l" -{ return K_SEQUENCE; } +{ return K_SCRIPT; } YY_BREAK case 48: YY_RULE_SETUP #line 87 "scan.l" -{ return K_SERIAL; } +{ return K_SEQUENCE; } YY_BREAK case 49: YY_RULE_SETUP #line 88 "scan.l" -{ return K_SERVER; } +{ return K_SERIAL; } YY_BREAK case 50: YY_RULE_SETUP #line 89 "scan.l" -{ return K_SET; } +{ return K_SERVER; } YY_BREAK case 51: YY_RULE_SETUP #line 90 "scan.l" -{ return K_STORE; } +{ return K_SET; } YY_BREAK case 52: YY_RULE_SETUP #line 91 "scan.l" -{ return K_SUBSCRIBE; } +{ return K_STORE; } YY_BREAK case 53: YY_RULE_SETUP #line 92 "scan.l" -{ return K_SUCCESS; } +{ return K_SUBSCRIBE; } YY_BREAK case 54: YY_RULE_SETUP #line 93 "scan.l" -{ return K_TABLE; } +{ return K_SUCCESS; } YY_BREAK case 55: YY_RULE_SETUP #line 94 "scan.l" -{ return K_TIMEOUT; } +{ return K_TABLE; } YY_BREAK case 56: YY_RULE_SETUP #line 95 "scan.l" -{ return K_TRIGGER; } +{ return K_TIMEOUT; } YY_BREAK case 57: YY_RULE_SETUP #line 96 "scan.l" -{ return K_TRUE; } +{ return K_TRIGGER; } YY_BREAK case 58: YY_RULE_SETUP #line 97 "scan.l" -{ return K_TRY; } +{ return K_TRUE; } YY_BREAK case 59: YY_RULE_SETUP #line 98 "scan.l" -{ return K_UNINSTALL; } +{ return K_TRY; } YY_BREAK case 60: YY_RULE_SETUP #line 99 "scan.l" -{ return K_UNLOCK; } +{ return K_UNINSTALL; } YY_BREAK case 61: YY_RULE_SETUP #line 100 "scan.l" -{ return K_UNSUBSCRIBE; } +{ return K_UNLOCK; } YY_BREAK case 62: YY_RULE_SETUP #line 101 "scan.l" -{ return K_UPDATE; } +{ return K_UNSUBSCRIBE; } YY_BREAK case 63: YY_RULE_SETUP #line 102 "scan.l" -{ return K_YES; } +{ return K_UPDATE; } YY_BREAK case 64: YY_RULE_SETUP #line 103 "scan.l" -{ return K_WAIT; } +{ return K_YES; } YY_BREAK case 65: YY_RULE_SETUP -#line 105 "scan.l" -{ return T_NUMBER; } +#line 104 "scan.l" +{ return K_WAIT; } YY_BREAK case 66: YY_RULE_SETUP #line 106 "scan.l" -{ return T_IDENT; } +{ return T_NUMBER; } YY_BREAK case 67: YY_RULE_SETUP -#line 108 "scan.l" -; +#line 107 "scan.l" +{ return T_IDENT; } YY_BREAK case 68: YY_RULE_SETUP -#line 110 "scan.l" +#line 109 "scan.l" +; + YY_BREAK +case 69: +YY_RULE_SETUP +#line 111 "scan.l" { start_charpos = yytext; BEGIN(IN_STRING); } YY_BREAK -case 69: -YY_RULE_SETUP -#line 114 "scan.l" -{ } - YY_BREAK case 70: YY_RULE_SETUP #line 115 "scan.l" @@ -1230,6 +1233,11 @@ case 72: YY_RULE_SETUP #line 117 "scan.l" +{ } + YY_BREAK +case 73: +YY_RULE_SETUP +#line 118 "scan.l" { yyleng += (yytext - start_charpos) - 2; yytext = start_charpos + 1; @@ -1237,27 +1245,27 @@ return T_LITERAL; } YY_BREAK -case 73: +case 74: YY_RULE_SETUP -#line 123 "scan.l" +#line 124 "scan.l" {} YY_BREAK -case 74: +case 75: YY_RULE_SETUP -#line 125 "scan.l" +#line 126 "scan.l" ; YY_BREAK -case 75: +case 76: YY_RULE_SETUP -#line 127 "scan.l" +#line 128 "scan.l" { return yytext[0]; } YY_BREAK -case 76: +case 77: YY_RULE_SETUP -#line 129 "scan.l" +#line 130 "scan.l" ECHO; YY_BREAK -#line 1261 "scan.c" +#line 1269 "scan.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(IN_STRING): yyterminate(); @@ -1547,7 +1555,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 308 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1577,11 +1585,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 306 ) + if ( yy_current_state >= 308 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 305); + yy_is_jam = (yy_current_state == 307); if ( ! yy_is_jam ) *yy_state_ptr++ = yy_current_state; @@ -2142,7 +2150,7 @@ return 0; } #endif -#line 129 "scan.l" +#line 130 "scan.l" void Index: parser.y =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/parser.y,v retrieving revision 1.16 retrieving revision 1.17 diff -Lsrc/slonik/parser.y -Lsrc/slonik/parser.y -u -w -r1.16 -r1.17 --- src/slonik/parser.y +++ src/slonik/parser.y @@ -27,6 +27,7 @@ O_CONNINFO, O_CONNRETRY, O_EVENT_NODE, + O_EXECUTE_ONLY_ON, O_FILENAME, O_FORWARD, O_FQNAME, @@ -200,6 +201,7 @@ %token K_OFF %token K_OLD %token K_ON +%token K_ONLY %token K_ORIGIN %token K_PATH %token K_PROVIDER @@ -1191,6 +1193,7 @@ STMT_OPTION_INT( O_SET_ID, -1 ), STMT_OPTION_STR( O_FILENAME, NULL ), STMT_OPTION_INT( O_EVENT_NODE, 1 ), + STMT_OPTION_INT( O_EXECUTE_ONLY_ON, -1 ), STMT_OPTION_END }; @@ -1206,6 +1209,7 @@ new->ddl_setid = opt[0].ival; new->ddl_fname = opt[1].str; new->ev_origin = opt[2].ival; + new->only_on_node = opt[3].ival; new->ddl_fd = -1; } else @@ -1449,6 +1453,11 @@ $3->opt_code = O_TIMEOUT; $$ = $3; } + | K_EXECUTE K_ONLY K_ON '=' option_item_id + { + $5->opt_code = O_EXECUTE_ONLY_ON; + $$ = $5; + } ; option_item_id : id @@ -1570,6 +1579,7 @@ case O_CONNINFO: return "conninfo"; case O_CONNRETRY: return "connretry"; case O_EVENT_NODE: return "event node"; + case O_EXECUTE_ONLY_ON: return "execute only on"; case O_FILENAME: return "filename"; case O_FORWARD: return "forward"; case O_FQNAME: return "full qualified name"; Index: slonik.c =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/slonik.c,v retrieving revision 1.29 retrieving revision 1.30 diff -Lsrc/slonik/slonik.c -Lsrc/slonik/slonik.c -u -w -r1.29 -r1.30 --- src/slonik/slonik.c +++ src/slonik/slonik.c @@ -3351,9 +3351,9 @@ dstring_init(&query); slon_mkquery(&query, - "select \"_%s\".ddlScript(%d, '%q'); ", + "select \"_%s\".ddlScript(%d, '%q', %d); ", stmt->hdr.script->clustername, - stmt->ddl_setid, dstring_data(&script)); + stmt->ddl_setid, dstring_data(&script), stmt->only_on_node); dstring_free(&script); if (db_exec_evcommand((SlonikStmt *)stmt, adminfo1, &query) < 0) { Index: parser.c =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slonik/parser.c,v retrieving revision 1.17 retrieving revision 1.18 diff -Lsrc/slonik/parser.c -Lsrc/slonik/parser.c -u -w -r1.17 -r1.18 --- src/slonik/parser.c +++ src/slonik/parser.c @@ -92,34 +92,35 @@ K_OFF = 294, K_OLD = 295, K_ON = 296, - K_ORIGIN = 297, - K_PATH = 298, - K_PROVIDER = 299, - K_QUALIFIED = 300, - K_RECEIVER = 301, - K_RESTART = 302, - K_SCRIPT = 303, - K_SEQUENCE = 304, - K_SERIAL = 305, - K_SERVER = 306, - K_SET = 307, - K_STORE = 308, - K_SUBSCRIBE = 309, - K_SUCCESS = 310, - K_TABLE = 311, - K_TIMEOUT = 312, - K_TRIGGER = 313, - K_TRUE = 314, - K_TRY = 315, - K_UNINSTALL = 316, - K_UNLOCK = 317, - K_UNSUBSCRIBE = 318, - K_UPDATE = 319, - K_YES = 320, - K_WAIT = 321, - T_IDENT = 322, - T_LITERAL = 323, - T_NUMBER = 324 + K_ONLY = 297, + K_ORIGIN = 298, + K_PATH = 299, + K_PROVIDER = 300, + K_QUALIFIED = 301, + K_RECEIVER = 302, + K_RESTART = 303, + K_SCRIPT = 304, + K_SEQUENCE = 305, + K_SERIAL = 306, + K_SERVER = 307, + K_SET = 308, + K_STORE = 309, + K_SUBSCRIBE = 310, + K_SUCCESS = 311, + K_TABLE = 312, + K_TIMEOUT = 313, + K_TRIGGER = 314, + K_TRUE = 315, + K_TRY = 316, + K_UNINSTALL = 317, + K_UNLOCK = 318, + K_UNSUBSCRIBE = 319, + K_UPDATE = 320, + K_YES = 321, + K_WAIT = 322, + T_IDENT = 323, + T_LITERAL = 324, + T_NUMBER = 325 }; #endif #define K_ADD 258 @@ -161,34 +162,35 @@ #define K_OFF 294 #define K_OLD 295 #define K_ON 296 -#define K_ORIGIN 297 -#define K_PATH 298 -#define K_PROVIDER 299 -#define K_QUALIFIED 300 -#define K_RECEIVER 301 -#define K_RESTART 302 -#define K_SCRIPT 303 -#define K_SEQUENCE 304 -#define K_SERIAL 305 -#define K_SERVER 306 -#define K_SET 307 -#define K_STORE 308 -#define K_SUBSCRIBE 309 -#define K_SUCCESS 310 -#define K_TABLE 311 -#define K_TIMEOUT 312 -#define K_TRIGGER 313 -#define K_TRUE 314 -#define K_TRY 315 -#define K_UNINSTALL 316 -#define K_UNLOCK 317 -#define K_UNSUBSCRIBE 318 -#define K_UPDATE 319 -#define K_YES 320 -#define K_WAIT 321 -#define T_IDENT 322 -#define T_LITERAL 323 -#define T_NUMBER 324 +#define K_ONLY 297 +#define K_ORIGIN 298 +#define K_PATH 299 +#define K_PROVIDER 300 +#define K_QUALIFIED 301 +#define K_RECEIVER 302 +#define K_RESTART 303 +#define K_SCRIPT 304 +#define K_SEQUENCE 305 +#define K_SERIAL 306 +#define K_SERVER 307 +#define K_SET 308 +#define K_STORE 309 +#define K_SUBSCRIBE 310 +#define K_SUCCESS 311 +#define K_TABLE 312 +#define K_TIMEOUT 313 +#define K_TRIGGER 314 +#define K_TRUE 315 +#define K_TRY 316 +#define K_UNINSTALL 317 +#define K_UNLOCK 318 +#define K_UNSUBSCRIBE 319 +#define K_UPDATE 320 +#define K_YES 321 +#define K_WAIT 322 +#define T_IDENT 323 +#define T_LITERAL 324 +#define T_NUMBER 325 @@ -224,6 +226,7 @@ O_CONNINFO, O_CONNRETRY, O_EVENT_NODE, + O_EXECUTE_ONLY_ON, O_FILENAME, O_FORWARD, O_FQNAME, @@ -306,7 +309,7 @@ #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 101 "parser.y" +#line 102 "parser.y" typedef union YYSTYPE { int32 ival; char *str; @@ -315,7 +318,7 @@ SlonikStmt *statement; } YYSTYPE; /* Line 191 of yacc.c. */ -#line 318 "y.tab.c" +#line 321 "y.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -327,7 +330,7 @@ /* Line 214 of yacc.c. */ -#line 330 "y.tab.c" +#line 333 "y.tab.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE @@ -426,20 +429,20 @@ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 290 +#define YYLAST 297 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 78 +#define YYNTOKENS 79 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 55 /* YYNRULES -- Number of rules. */ -#define YYNRULES 126 +#define YYNRULES 127 /* YYNRULES -- Number of states. */ -#define YYNSTATES 274 +#define YYNSTATES 279 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 324 +#define YYMAXUTOK 325 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -451,15 +454,15 @@ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 75, 76, 2, 2, 77, 74, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 71, - 2, 70, 2, 2, 2, 2, 2, 2, 2, 2, + 76, 77, 2, 2, 78, 75, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 72, + 2, 71, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 72, 2, 73, 2, 2, 2, 2, + 2, 2, 2, 73, 2, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -479,7 +482,7 @@ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69 + 65, 66, 67, 68, 69, 70 }; #if YYDEBUG @@ -498,78 +501,79 @@ 297, 303, 305, 310, 312, 316, 320, 325, 330, 334, 338, 342, 347, 352, 356, 360, 364, 368, 372, 377, 382, 387, 392, 397, 403, 407, 411, 415, 419, 423, - 427, 431, 436, 440, 442, 444, 446, 448, 450, 452, - 454, 456, 458, 460, 462, 464, 466 + 427, 431, 436, 440, 446, 448, 450, 452, 454, 456, + 458, 460, 462, 464, 466, 468, 470, 472 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short yyrhs[] = { - 79, 0, -1, 80, 81, 83, -1, 132, 8, 35, - 70, 130, 71, -1, 82, -1, 82, 81, -1, 132, - 38, 129, 4, 12, 70, 131, 71, -1, 84, -1, - 84, 83, -1, 85, -1, 89, -1, 132, 60, 72, - 88, 73, 86, -1, 132, 60, 72, 88, 73, 87, - 86, -1, 132, 60, 72, 88, 73, 86, 87, -1, - 132, 60, 72, 88, 73, 87, -1, 132, 60, 72, - 88, 73, -1, 41, 17, 72, 83, 73, -1, 41, - 55, 72, 83, 73, -1, 89, -1, 89, 88, -1, - 91, -1, 92, -1, 93, -1, 96, -1, 97, -1, - 98, -1, 99, -1, 100, -1, 101, -1, 102, -1, - 103, -1, 104, -1, 105, -1, 106, -1, 107, -1, - 108, -1, 109, -1, 110, -1, 111, -1, 112, -1, - 113, -1, 114, -1, 115, -1, 116, -1, 117, -1, - 118, -1, 119, -1, 120, -1, -1, 95, 71, 90, - -1, 132, 16, 131, 71, -1, 132, 20, 94, 71, - -1, 132, 47, 38, 129, 71, -1, 69, -1, 74, - 94, -1, 132, 1, -1, 132, 29, 8, 121, -1, - 132, 53, 38, 121, -1, 132, 15, 38, 121, -1, - 132, 21, 121, -1, 132, 61, 38, 121, -1, 132, - 53, 43, 121, -1, 132, 15, 43, 121, -1, 132, - 53, 31, 121, -1, 132, 15, 31, 121, -1, 132, - 14, 52, 121, -1, 132, 15, 52, 121, -1, 132, - 33, 52, 121, -1, 132, 56, 3, 30, 121, -1, - 132, 52, 3, 56, 121, -1, 132, 52, 3, 49, - 121, -1, 132, 53, 58, 121, -1, 132, 15, 58, - 121, -1, 132, 54, 52, 121, -1, 132, 63, 52, - 121, -1, 132, 32, 52, 121, -1, 132, 62, 52, - 121, -1, 132, 34, 52, 121, -1, 132, 19, 48, - 121, -1, 132, 64, 27, 121, -1, 132, 66, 24, - 18, 121, -1, 71, -1, 75, 122, 76, 71, -1, - 123, -1, 123, 77, 122, -1, 28, 70, 124, -1, - 6, 38, 70, 124, -1, 18, 38, 70, 124, -1, - 51, 70, 124, -1, 7, 70, 124, -1, 42, 70, - 124, -1, 40, 42, 70, 124, -1, 36, 42, 70, - 124, -1, 46, 70, 124, -1, 44, 70, 124, -1, - 13, 70, 124, -1, 10, 70, 125, -1, 12, 70, - 125, -1, 52, 28, 70, 124, -1, 3, 28, 70, - 124, -1, 38, 28, 70, 124, -1, 56, 28, 70, - 124, -1, 58, 35, 70, 125, -1, 26, 45, 35, - 70, 125, -1, 30, 70, 125, -1, 30, 70, 50, - -1, 25, 70, 126, -1, 23, 70, 125, -1, 42, - 70, 5, -1, 11, 70, 124, -1, 11, 70, 5, - -1, 66, 41, 70, 124, -1, 57, 70, 124, -1, - 129, -1, 131, -1, 127, -1, 128, -1, 65, -1, - 41, -1, 59, -1, 37, -1, 39, -1, 22, -1, - 69, -1, 67, -1, 68, -1, -1 + 80, 0, -1, 81, 82, 84, -1, 133, 8, 35, + 71, 131, 72, -1, 83, -1, 83, 82, -1, 133, + 38, 130, 4, 12, 71, 132, 72, -1, 85, -1, + 85, 84, -1, 86, -1, 90, -1, 133, 61, 73, + 89, 74, 87, -1, 133, 61, 73, 89, 74, 88, + 87, -1, 133, 61, 73, 89, 74, 87, 88, -1, + 133, 61, 73, 89, 74, 88, -1, 133, 61, 73, + 89, 74, -1, 41, 17, 73, 84, 74, -1, 41, + 56, 73, 84, 74, -1, 90, -1, 90, 89, -1, + 92, -1, 93, -1, 94, -1, 97, -1, 98, -1, + 99, -1, 100, -1, 101, -1, 102, -1, 103, -1, + 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, + 109, -1, 110, -1, 111, -1, 112, -1, 113, -1, + 114, -1, 115, -1, 116, -1, 117, -1, 118, -1, + 119, -1, 120, -1, 121, -1, -1, 96, 72, 91, + -1, 133, 16, 132, 72, -1, 133, 20, 95, 72, + -1, 133, 48, 38, 130, 72, -1, 70, -1, 75, + 95, -1, 133, 1, -1, 133, 29, 8, 122, -1, + 133, 54, 38, 122, -1, 133, 15, 38, 122, -1, + 133, 21, 122, -1, 133, 62, 38, 122, -1, 133, + 54, 44, 122, -1, 133, 15, 44, 122, -1, 133, + 54, 31, 122, -1, 133, 15, 31, 122, -1, 133, + 14, 53, 122, -1, 133, 15, 53, 122, -1, 133, + 33, 53, 122, -1, 133, 57, 3, 30, 122, -1, + 133, 53, 3, 57, 122, -1, 133, 53, 3, 50, + 122, -1, 133, 54, 59, 122, -1, 133, 15, 59, + 122, -1, 133, 55, 53, 122, -1, 133, 64, 53, + 122, -1, 133, 32, 53, 122, -1, 133, 63, 53, + 122, -1, 133, 34, 53, 122, -1, 133, 19, 49, + 122, -1, 133, 65, 27, 122, -1, 133, 67, 24, + 18, 122, -1, 72, -1, 76, 123, 77, 72, -1, + 124, -1, 124, 78, 123, -1, 28, 71, 125, -1, + 6, 38, 71, 125, -1, 18, 38, 71, 125, -1, + 52, 71, 125, -1, 7, 71, 125, -1, 43, 71, + 125, -1, 40, 43, 71, 125, -1, 36, 43, 71, + 125, -1, 47, 71, 125, -1, 45, 71, 125, -1, + 13, 71, 125, -1, 10, 71, 126, -1, 12, 71, + 126, -1, 53, 28, 71, 125, -1, 3, 28, 71, + 125, -1, 38, 28, 71, 125, -1, 57, 28, 71, + 125, -1, 59, 35, 71, 126, -1, 26, 46, 35, + 71, 126, -1, 30, 71, 126, -1, 30, 71, 51, + -1, 25, 71, 127, -1, 23, 71, 126, -1, 43, + 71, 5, -1, 11, 71, 125, -1, 11, 71, 5, + -1, 67, 41, 71, 125, -1, 58, 71, 125, -1, + 19, 42, 41, 71, 125, -1, 130, -1, 132, -1, + 128, -1, 129, -1, 66, -1, 41, -1, 60, -1, + 37, -1, 39, -1, 22, -1, 70, -1, 68, -1, + 69, -1, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { - 0, 242, 242, 257, 263, 265, 269, 287, 289, 293, - 295, 299, 316, 334, 352, 369, 386, 389, 393, 395, - 399, 401, 403, 405, 407, 409, 411, 413, 415, 417, - 419, 421, 423, 425, 427, 429, 431, 433, 435, 437, - 439, 441, 443, 445, 447, 449, 451, 453, 455, 455, - 459, 476, 493, 510, 512, 516, 531, 559, 589, 617, - 645, 671, 703, 733, 763, 793, 823, 851, 881, 909, - 947, 981, 1011, 1041, 1073, 1101, 1129, 1157, 1187, 1218, - 1244, 1276, 1278, 1282, 1284, 1288, 1293, 1298, 1303, 1308, - 1313, 1318, 1323, 1328, 1333, 1338, 1343, 1348, 1353, 1358, - 1363, 1368, 1373, 1378, 1383, 1388, 1401, 1406, 1411, 1424, - 1429, 1442, 1447, 1454, 1468, 1482, 1494, 1508, 1509, 1510, - 1513, 1514, 1515, 1518, 1524, 1536, 1549 + 0, 244, 244, 259, 265, 267, 271, 289, 291, 295, + 297, 301, 318, 336, 354, 371, 388, 391, 395, 397, + 401, 403, 405, 407, 409, 411, 413, 415, 417, 419, + 421, 423, 425, 427, 429, 431, 433, 435, 437, 439, + 441, 443, 445, 447, 449, 451, 453, 455, 457, 457, + 461, 478, 495, 512, 514, 518, 533, 561, 591, 619, + 647, 673, 705, 735, 765, 795, 825, 853, 883, 911, + 949, 983, 1013, 1043, 1075, 1103, 1131, 1159, 1189, 1222, + 1248, 1280, 1282, 1286, 1288, 1292, 1297, 1302, 1307, 1312, + 1317, 1322, 1327, 1332, 1337, 1342, 1347, 1352, 1357, 1362, + 1367, 1372, 1377, 1382, 1387, 1392, 1405, 1410, 1415, 1428, + 1433, 1446, 1451, 1456, 1463, 1477, 1491, 1503, 1517, 1518, + 1519, 1522, 1523, 1524, 1527, 1533, 1545, 1558 }; #endif @@ -584,24 +588,24 @@ "K_EVENT", "K_EXECUTE", "K_EXIT", "K_FAILOVER", "K_FALSE", "K_FILENAME", "K_FOR", "K_FORWARD", "K_FULL", "K_FUNCTIONS", "K_ID", "K_INIT", "K_KEY", "K_LISTEN", "K_LOCK", "K_MERGE", "K_MOVE", "K_NAME", "K_NEW", - "K_NO", "K_NODE", "K_OFF", "K_OLD", "K_ON", "K_ORIGIN", "K_PATH", - "K_PROVIDER", "K_QUALIFIED", "K_RECEIVER", "K_RESTART", "K_SCRIPT", - "K_SEQUENCE", "K_SERIAL", "K_SERVER", "K_SET", "K_STORE", "K_SUBSCRIBE", - "K_SUCCESS", "K_TABLE", "K_TIMEOUT", "K_TRIGGER", "K_TRUE", "K_TRY", - "K_UNINSTALL", "K_UNLOCK", "K_UNSUBSCRIBE", "K_UPDATE", "K_YES", - "K_WAIT", "T_IDENT", "T_LITERAL", "T_NUMBER", "'='", "';'", "'{'", - "'}'", "'-'", "'('", "')'", "','", "$accept", "script", - "hdr_clustername", "hdr_admconninfos", "hdr_admconninfo", "stmts", - "stmt", "stmt_try", "try_on_error", "try_on_success", "try_stmts", - "try_stmt", "@1", "stmt_echo", "stmt_exit", "stmt_restart_node", - "exit_code", "stmt_error", "stmt_init_cluster", "stmt_store_node", - "stmt_drop_node", "stmt_failed_node", "stmt_uninstall_node", - "stmt_store_path", "stmt_drop_path", "stmt_store_listen", - "stmt_drop_listen", "stmt_create_set", "stmt_drop_set", - "stmt_merge_set", "stmt_table_add_key", "stmt_set_add_table", - "stmt_set_add_sequence", "stmt_store_trigger", "stmt_drop_trigger", - "stmt_subscribe_set", "stmt_unsubscribe_set", "stmt_lock_set", - "stmt_unlock_set", "stmt_move_set", "stmt_ddl_script", + "K_NO", "K_NODE", "K_OFF", "K_OLD", "K_ON", "K_ONLY", "K_ORIGIN", + "K_PATH", "K_PROVIDER", "K_QUALIFIED", "K_RECEIVER", "K_RESTART", + "K_SCRIPT", "K_SEQUENCE", "K_SERIAL", "K_SERVER", "K_SET", "K_STORE", + "K_SUBSCRIBE", "K_SUCCESS", "K_TABLE", "K_TIMEOUT", "K_TRIGGER", + "K_TRUE", "K_TRY", "K_UNINSTALL", "K_UNLOCK", "K_UNSUBSCRIBE", + "K_UPDATE", "K_YES", "K_WAIT", "T_IDENT", "T_LITERAL", "T_NUMBER", + "'='", "';'", "'{'", "'}'", "'-'", "'('", "')'", "','", "$accept", + "script", "hdr_clustername", "hdr_admconninfos", "hdr_admconninfo", + "stmts", "stmt", "stmt_try", "try_on_error", "try_on_success", + "try_stmts", "try_stmt", "@1", "stmt_echo", "stmt_exit", + "stmt_restart_node", "exit_code", "stmt_error", "stmt_init_cluster", + "stmt_store_node", "stmt_drop_node", "stmt_failed_node", + "stmt_uninstall_node", "stmt_store_path", "stmt_drop_path", + "stmt_store_listen", "stmt_drop_listen", "stmt_create_set", + "stmt_drop_set", "stmt_merge_set", "stmt_table_add_key", + "stmt_set_add_table", "stmt_set_add_sequence", "stmt_store_trigger", + "stmt_drop_trigger", "stmt_subscribe_set", "stmt_unsubscribe_set", + "stmt_lock_set", "stmt_unlock_set", "stmt_move_set", "stmt_ddl_script", "stmt_update_functions", "stmt_wait_event", "option_list", "option_list_items", "option_list_item", "option_item_id", "option_item_literal", "option_item_yn", "option_item_yn_yes", @@ -621,26 +625,26 @@ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 61, 59, 123, 125, 45, 40, 41, 44 + 325, 61, 59, 123, 125, 45, 40, 41, 44 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 78, 79, 80, 81, 81, 82, 83, 83, 84, - 84, 85, 85, 85, 85, 85, 86, 87, 88, 88, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, - 89, 89, 89, 89, 89, 89, 89, 89, 90, 89, - 91, 92, 93, 94, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 121, 122, 122, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 124, 125, 126, 126, 127, 127, 127, - 128, 128, 128, 129, 130, 131, 132 + 0, 79, 80, 81, 82, 82, 83, 84, 84, 85, + 85, 86, 86, 86, 86, 86, 87, 88, 89, 89, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 91, 90, + 92, 93, 94, 95, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 122, 123, 123, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 125, 126, 127, 127, 128, 128, + 128, 129, 129, 129, 130, 131, 132, 133 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -657,8 +661,8 @@ 5, 1, 4, 1, 3, 3, 4, 4, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 3, 3, 3, 3, 3, 3, - 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0 + 3, 4, 3, 5, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -666,198 +670,198 @@ means the default is an error. */ static const unsigned char yydefact[] = { - 126, 0, 126, 0, 1, 126, 4, 0, 0, 2, - 126, 9, 10, 20, 21, 22, 0, 23, 24, 25, + 127, 0, 127, 0, 1, 127, 4, 0, 0, 2, + 127, 9, 10, 20, 21, 22, 0, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 0, 5, 0, 0, 8, 48, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 123, 0, 0, 49, 0, 0, 0, 0, 0, 0, - 125, 0, 0, 53, 0, 0, 81, 0, 59, 0, + 124, 0, 0, 49, 0, 0, 0, 0, 0, 0, + 126, 0, 0, 53, 0, 0, 81, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 0, 0, 0, 0, 0, 0, 124, 0, + 0, 127, 0, 0, 0, 0, 0, 0, 125, 0, 65, 64, 58, 62, 66, 72, 50, 78, 54, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 83, 56, 75, 67, - 77, 0, 0, 0, 63, 57, 61, 71, 73, 0, - 0, 126, 0, 60, 76, 74, 79, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 83, 56, 75, + 67, 77, 0, 0, 0, 63, 57, 61, 71, 73, + 0, 0, 127, 0, 60, 76, 74, 79, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 52, 70, 69, - 68, 15, 19, 80, 0, 0, 0, 89, 113, 96, - 114, 110, 109, 97, 95, 0, 107, 122, 120, 121, - 118, 119, 117, 106, 115, 116, 0, 85, 105, 104, - 0, 0, 0, 108, 90, 94, 93, 88, 0, 0, - 112, 0, 0, 82, 84, 0, 11, 14, 0, 99, - 86, 87, 0, 92, 100, 91, 98, 101, 102, 111, - 0, 0, 0, 13, 0, 12, 6, 103, 126, 126, - 0, 0, 16, 17 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, + 70, 69, 68, 15, 19, 80, 0, 0, 0, 89, + 114, 96, 115, 110, 109, 97, 95, 0, 0, 107, + 123, 121, 122, 119, 120, 118, 106, 116, 117, 0, + 85, 105, 104, 0, 0, 0, 108, 90, 94, 93, + 88, 0, 0, 112, 0, 0, 82, 84, 0, 11, + 14, 0, 99, 86, 87, 0, 0, 92, 100, 91, + 98, 101, 102, 111, 0, 0, 0, 13, 0, 12, + 6, 113, 103, 127, 127, 0, 0, 16, 17 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { - -1, 1, 2, 5, 6, 9, 10, 11, 246, 247, - 160, 12, 73, 13, 14, 15, 85, 16, 17, 18, + -1, 1, 2, 5, 6, 9, 10, 11, 249, 250, + 161, 12, 73, 13, 14, 15, 85, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 88, 145, 146, 207, 209, 223, 224, - 225, 208, 109, 210, 42 + 39, 40, 41, 88, 146, 147, 209, 211, 226, 227, + 228, 210, 109, 212, 42 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -162 +#define YYPACT_NINF -135 static const short yypact[] = { - -162, 22, -162, 26, -162, -162, -3, 3, 8, -162, - 4, -162, -162, -162, -162, -162, -21, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, 105, -162, -18, -11, -162, -162, -162, 13, - 18, 5, 27, -6, -27, 66, 32, 33, 37, 40, - 89, 52, 42, 96, 28, 65, 55, 57, 84, 88, - -162, 109, 47, -162, -27, -27, -27, -27, -27, -27, - -162, 44, -27, -162, -6, 45, -162, 224, -162, -27, - -27, -27, -27, -18, -29, -27, -27, -27, -27, -27, - 87, -162, -27, -27, -27, -27, 100, 110, -162, 56, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - 95, 90, 59, 60, 61, 62, 63, 97, 70, 71, - 91, 72, 73, 102, 117, 104, 77, 78, 79, 80, - 123, 125, 86, 119, 122, 94, 99, -162, -162, -162, - -162, 93, -27, -27, -162, -162, -162, -162, -162, -27, - 108, 111, 159, -162, -162, -162, -162, -27, 107, -162, - 112, 113, -18, 5, 0, 5, -18, 115, 5, 23, - 137, -18, -22, 116, 120, 124, 10, -18, -18, -18, - 126, 127, -18, 128, 129, 118, 224, -162, -162, -162, - -162, 146, -162, -162, 5, -18, -18, -162, -162, -162, - -162, -162, -162, -162, -162, -18, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, 130, -162, -162, -162, - -18, -18, -18, -162, -162, -162, -162, -162, -18, -18, - -162, 5, -18, -162, -162, 2, 154, 160, 131, -162, - -162, -162, 5, -162, -162, -162, -162, -162, -162, -162, - 132, 133, 148, -162, 190, -162, -162, -162, -162, -162, - 135, 136, -162, -162 + -135, 8, -135, 12, -135, -135, -15, 7, 18, -135, + 4, -135, -135, -135, -135, -135, -30, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, 112, -135, -1, 5, -135, -135, -135, 19, + 37, -8, 22, -24, -13, 69, 26, 29, 31, 48, + 84, -9, 39, 90, 21, 59, 45, 51, 78, 82, + -135, 105, 42, -135, -13, -13, -13, -13, -13, -13, + -135, 43, -13, -135, -24, 44, -135, 230, -135, -13, + -13, -13, -13, -1, -29, -13, -13, -13, -13, -13, + 87, -135, -13, -13, -13, -13, 96, 106, -135, 47, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + 92, 85, 54, 58, 63, 64, 65, 99, 80, 67, + 68, 94, 71, 72, 104, 102, 107, 77, 81, 83, + 88, 121, 123, 91, 118, 114, 79, 86, -135, -135, + -135, -135, 89, -13, -13, -135, -135, -135, -135, -135, + -13, 97, 98, 167, -135, -135, -135, -135, -13, 109, + -135, 113, 119, -1, -8, 0, -8, -1, 120, 117, + -8, 25, 135, -1, -33, 122, 124, 126, 10, -1, + -1, -1, 127, 131, -1, 132, 133, 134, 230, -135, + -135, -135, -135, 137, -135, -135, -8, -1, -1, -135, + -135, -135, -135, -135, -135, -135, -135, -1, 136, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, 138, + -135, -135, -135, -1, -1, -1, -135, -135, -135, -135, + -135, -1, -1, -135, -8, -1, -135, -135, 2, 144, + 148, 139, -135, -135, -135, -1, -8, -135, -135, -135, + -135, -135, -135, -135, 140, 141, 149, -135, 175, -135, + -135, -135, -135, -135, -135, 142, 143, -135, -135 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - -162, -162, -162, 204, -162, -10, -162, -162, -33, -30, - 58, -95, -162, -162, -162, -162, 134, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -66, 21, -162, -134, -161, -162, -162, - -162, -26, -162, -49, 1 + -135, -135, -135, 188, -135, -10, -135, -135, -42, -39, + 50, -95, -135, -135, -135, -135, 151, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -65, 20, -135, -134, -132, -135, -135, + -135, -28, -135, -49, 1 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -127 +#define YYTABLE_NINF -128 static const short yytable[] = { - 46, 3, 81, 7, -7, 211, 161, 7, 110, 111, - 112, 113, 114, 115, 213, 233, 117, 216, 71, 260, - 152, 229, 4, 147, 148, 149, 150, 153, 228, 154, - 155, 156, 157, 158, 8, -126, 163, 164, 165, 166, - 212, 44, 214, 45, 86, 217, 80, 227, 87, 75, - 47, 70, 234, 235, 236, 237, 76, 261, 240, 72, - 218, 77, 219, 83, 220, 74, 161, 151, 84, 70, - 78, 249, 250, 80, 89, 82, 79, -7, 93, 70, - 258, 251, 221, 95, 90, 91, 198, 199, 222, 92, - 96, 267, 94, 200, 99, 97, 253, 254, 255, 100, - 101, 203, 162, 102, 256, 257, 48, 103, 259, 104, - 98, 105, 106, 107, 108, 116, 119, 159, 167, 49, - 50, 51, 168, 170, 52, 53, 54, 169, 171, 172, - 173, 174, 175, 176, 55, 177, 180, 56, 57, 58, - 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 59, 191, 193, 248, 192, 60, 61, 62, - 48, 63, 162, 194, 197, 64, 65, 66, 67, 68, - 195, 69, 226, 49, 50, 51, 196, 204, 52, 53, - 54, 201, 205, 206, -18, 215, 230, 245, 55, 243, - 231, 56, 57, 58, 232, 262, 238, 239, 241, 242, - 252, 264, 266, 261, 268, 269, 59, 260, 272, 273, - 43, 60, 61, 62, 265, 63, 263, 244, 118, 202, - 65, 66, 67, 68, 0, 69, 0, 120, 0, 0, - 121, 122, 0, 0, 123, 124, 125, 126, 0, 0, - 0, 0, 127, 0, 0, 0, 0, 128, 0, 129, - 130, 0, 131, 0, 132, 0, 0, 0, 270, 271, - 133, 0, 134, 0, 135, 0, 136, 0, 137, 0, - 138, 0, 0, 0, 0, 139, 140, 0, 0, 0, - 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, - 144 + 46, 3, 81, 7, -7, 213, 162, 7, 4, 110, + 111, 112, 113, 114, 115, 236, 71, 117, 231, 264, + 8, 153, 95, -127, 148, 149, 150, 151, 154, 96, + 155, 156, 157, 158, 159, 97, 80, 164, 165, 166, + 167, 214, 47, 216, 215, 44, 83, 220, 219, 230, + 98, 84, 232, 45, 237, 238, 239, 240, 265, 86, + 243, 80, 221, 87, 222, 152, 223, 162, 75, 70, + 70, 82, 74, 252, 253, 76, 72, 89, -7, 90, + 70, 77, 91, 254, 92, 224, 93, 94, 200, 201, + 78, 225, 99, 100, 101, 202, 79, 102, 103, 257, + 258, 259, 163, 205, 104, 105, 106, 260, 261, 107, + 108, 263, 262, 48, 168, 116, 119, 160, 169, 170, + 171, 271, 179, 172, 272, 173, 49, 50, 51, 174, + 186, 52, 53, 54, 175, 176, 177, 178, 180, 181, + 182, 55, 183, 184, 56, 57, 58, 185, 188, 192, + 187, 193, 189, 195, 190, 196, 197, 251, 218, 191, + 59, 199, 194, 163, 198, 60, 61, 62, 48, 63, + 229, 203, -18, 64, 65, 66, 67, 68, 248, 69, + 206, 49, 50, 51, 207, 266, 52, 53, 54, 268, + 208, 217, 264, 233, 43, 234, 55, 235, 241, 56, + 57, 58, 242, 244, 245, 265, 246, 255, 269, 256, + 267, 270, 204, 273, 274, 59, 277, 278, 247, 0, + 60, 61, 62, 0, 63, 0, 0, 0, 0, 65, + 66, 67, 68, 120, 69, 118, 121, 122, 0, 0, + 123, 124, 125, 126, 0, 0, 0, 0, 127, 128, + 0, 0, 0, 129, 0, 130, 131, 0, 132, 0, + 133, 0, 0, 275, 276, 0, 134, 0, 135, 0, + 136, 0, 0, 137, 0, 138, 0, 139, 0, 0, + 0, 0, 140, 141, 0, 0, 0, 142, 143, 144, + 0, 0, 0, 0, 0, 0, 0, 145 }; static const short yycheck[] = { - 10, 0, 51, 2, 0, 5, 101, 6, 74, 75, - 76, 77, 78, 79, 175, 5, 82, 178, 44, 17, - 49, 182, 0, 89, 90, 91, 92, 56, 50, 95, - 96, 97, 98, 99, 8, 38, 102, 103, 104, 105, - 174, 38, 176, 35, 71, 22, 68, 181, 75, 31, - 71, 69, 186, 187, 188, 189, 38, 55, 192, 70, - 37, 43, 39, 69, 41, 52, 161, 93, 74, 69, - 52, 205, 206, 68, 8, 48, 58, 73, 38, 69, - 241, 215, 59, 31, 52, 52, 152, 153, 65, 52, - 38, 252, 3, 159, 52, 43, 230, 231, 232, 3, - 72, 167, 101, 38, 238, 239, 1, 52, 242, 52, - 58, 27, 24, 4, 67, 71, 71, 30, 18, 14, - 15, 16, 12, 28, 19, 20, 21, 71, 38, 70, - 70, 70, 70, 70, 29, 38, 45, 32, 33, 34, - 70, 70, 70, 70, 42, 28, 42, 70, 70, 70, - 70, 28, 47, 28, 35, 204, 70, 52, 53, 54, - 1, 56, 161, 41, 71, 60, 61, 62, 63, 64, - 76, 66, 35, 14, 15, 16, 77, 70, 19, 20, - 21, 73, 70, 70, 73, 70, 70, 41, 29, 71, - 70, 32, 33, 34, 70, 41, 70, 70, 70, 70, - 70, 41, 71, 55, 72, 72, 47, 17, 73, 73, - 6, 52, 53, 54, 247, 56, 246, 196, 84, 161, - 61, 62, 63, 64, -1, 66, -1, 3, -1, -1, - 6, 7, -1, -1, 10, 11, 12, 13, -1, -1, - -1, -1, 18, -1, -1, -1, -1, 23, -1, 25, - 26, -1, 28, -1, 30, -1, -1, -1, 268, 269, - 36, -1, 38, -1, 40, -1, 42, -1, 44, -1, - 46, -1, -1, -1, -1, 51, 52, -1, -1, -1, - 56, 57, 58, -1, -1, -1, -1, -1, -1, -1, - 66 + 10, 0, 51, 2, 0, 5, 101, 6, 0, 74, + 75, 76, 77, 78, 79, 5, 44, 82, 51, 17, + 8, 50, 31, 38, 89, 90, 91, 92, 57, 38, + 95, 96, 97, 98, 99, 44, 69, 102, 103, 104, + 105, 175, 72, 177, 176, 38, 70, 22, 180, 183, + 59, 75, 184, 35, 188, 189, 190, 191, 56, 72, + 194, 69, 37, 76, 39, 93, 41, 162, 31, 70, + 70, 49, 53, 207, 208, 38, 71, 8, 74, 53, + 70, 44, 53, 217, 53, 60, 38, 3, 153, 154, + 53, 66, 53, 3, 73, 160, 59, 38, 53, 233, + 234, 235, 101, 168, 53, 27, 24, 241, 242, 4, + 68, 245, 244, 1, 18, 72, 72, 30, 12, 72, + 28, 255, 42, 38, 256, 71, 14, 15, 16, 71, + 28, 19, 20, 21, 71, 71, 71, 38, 71, 71, + 46, 29, 71, 71, 32, 33, 34, 43, 71, 28, + 43, 28, 71, 35, 71, 41, 77, 206, 41, 71, + 48, 72, 71, 162, 78, 53, 54, 55, 1, 57, + 35, 74, 74, 61, 62, 63, 64, 65, 41, 67, + 71, 14, 15, 16, 71, 41, 19, 20, 21, 41, + 71, 71, 17, 71, 6, 71, 29, 71, 71, 32, + 33, 34, 71, 71, 71, 56, 72, 71, 250, 71, + 249, 72, 162, 73, 73, 48, 74, 74, 198, -1, + 53, 54, 55, -1, 57, -1, -1, -1, -1, 62, + 63, 64, 65, 3, 67, 84, 6, 7, -1, -1, + 10, 11, 12, 13, -1, -1, -1, -1, 18, 19, + -1, -1, -1, 23, -1, 25, 26, -1, 28, -1, + 30, -1, -1, 273, 274, -1, 36, -1, 38, -1, + 40, -1, -1, 43, -1, 45, -1, 47, -1, -1, + -1, -1, 52, 53, -1, -1, -1, 57, 58, 59, + -1, -1, -1, -1, -1, -1, -1, 67 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 79, 80, 132, 0, 81, 82, 132, 8, 83, - 84, 85, 89, 91, 92, 93, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 132, 81, 38, 35, 83, 71, 1, 14, - 15, 16, 19, 20, 21, 29, 32, 33, 34, 47, - 52, 53, 54, 56, 60, 61, 62, 63, 64, 66, - 69, 129, 70, 90, 52, 31, 38, 43, 52, 58, - 68, 131, 48, 69, 74, 94, 71, 75, 121, 8, - 52, 52, 52, 38, 3, 31, 38, 43, 58, 52, - 3, 72, 38, 52, 52, 27, 24, 4, 67, 130, - 121, 121, 121, 121, 121, 121, 71, 121, 94, 71, - 3, 6, 7, 10, 11, 12, 13, 18, 23, 25, - 26, 28, 30, 36, 38, 40, 42, 44, 46, 51, - 52, 56, 57, 58, 66, 122, 123, 121, 121, 121, - 121, 129, 49, 56, 121, 121, 121, 121, 121, 30, - 88, 89, 132, 121, 121, 121, 121, 18, 12, 71, - 28, 38, 70, 70, 70, 70, 70, 38, 70, 70, - 45, 70, 70, 42, 28, 42, 70, 70, 70, 70, - 28, 28, 70, 35, 41, 76, 77, 71, 121, 121, - 121, 73, 88, 121, 70, 70, 70, 124, 129, 125, - 131, 5, 124, 125, 124, 70, 125, 22, 37, 39, - 41, 59, 65, 126, 127, 128, 35, 124, 50, 125, - 70, 70, 70, 5, 124, 124, 124, 124, 70, 70, - 124, 70, 70, 71, 122, 41, 86, 87, 131, 124, - 124, 124, 70, 124, 124, 124, 124, 124, 125, 124, - 17, 55, 41, 87, 41, 86, 71, 125, 72, 72, - 83, 83, 73, 73 + 0, 80, 81, 133, 0, 82, 83, 133, 8, 84, + 85, 86, 90, 92, 93, 94, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 133, 82, 38, 35, 84, 72, 1, 14, + 15, 16, 19, 20, 21, 29, 32, 33, 34, 48, + 53, 54, 55, 57, 61, 62, 63, 64, 65, 67, + 70, 130, 71, 91, 53, 31, 38, 44, 53, 59, + 69, 132, 49, 70, 75, 95, 72, 76, 122, 8, + 53, 53, 53, 38, 3, 31, 38, 44, 59, 53, + 3, 73, 38, 53, 53, 27, 24, 4, 68, 131, + 122, 122, 122, 122, 122, 122, 72, 122, 95, 72, + 3, 6, 7, 10, 11, 12, 13, 18, 19, 23, + 25, 26, 28, 30, 36, 38, 40, 43, 45, 47, + 52, 53, 57, 58, 59, 67, 123, 124, 122, 122, + 122, 122, 130, 50, 57, 122, 122, 122, 122, 122, + 30, 89, 90, 133, 122, 122, 122, 122, 18, 12, + 72, 28, 38, 71, 71, 71, 71, 71, 38, 42, + 71, 71, 46, 71, 71, 43, 28, 43, 71, 71, + 71, 71, 28, 28, 71, 35, 41, 77, 78, 72, + 122, 122, 122, 74, 89, 122, 71, 71, 71, 125, + 130, 126, 132, 5, 125, 126, 125, 71, 41, 126, + 22, 37, 39, 41, 60, 66, 127, 128, 129, 35, + 125, 51, 126, 71, 71, 71, 5, 125, 125, 125, + 125, 71, 71, 125, 71, 71, 72, 123, 41, 87, + 88, 132, 125, 125, 125, 71, 71, 125, 125, 125, + 125, 125, 126, 125, 17, 56, 41, 88, 41, 87, + 72, 125, 126, 73, 73, 84, 84, 74, 74 }; #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) @@ -1467,7 +1471,7 @@ switch (yyn) { case 2: -#line 245 "parser.y" +#line 247 "parser.y" { parser_script = (SlonikScript *) malloc(sizeof(SlonikScript)); @@ -1481,24 +1485,24 @@ break; case 3: -#line 258 "parser.y" +#line 260 "parser.y" { yyval.str = yyvsp[-1].str; } break; case 4: -#line 264 "parser.y" +#line 266 "parser.y" { yyval.adm_info = yyvsp[0].adm_info; } break; case 5: -#line 266 "parser.y" +#line 268 "parser.y" { yyvsp[-1].adm_info->next = yyvsp[0].adm_info; yyval.adm_info = yyvsp[-1].adm_info; } break; case 6: -#line 270 "parser.y" +#line 272 "parser.y" { SlonikAdmInfo *new; @@ -1517,27 +1521,27 @@ break; case 7: -#line 288 "parser.y" +#line 290 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 8: -#line 290 "parser.y" +#line 292 "parser.y" { yyvsp[-1].statement->next = yyvsp[0].statement; yyval.statement = yyvsp[-1].statement; } break; case 9: -#line 294 "parser.y" +#line 296 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 10: -#line 296 "parser.y" +#line 298 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 11: -#line 301 "parser.y" +#line 303 "parser.y" { SlonikStmt_try *new; @@ -1556,7 +1560,7 @@ break; case 12: -#line 318 "parser.y" +#line 320 "parser.y" { SlonikStmt_try *new; @@ -1576,7 +1580,7 @@ break; case 13: -#line 336 "parser.y" +#line 338 "parser.y" { SlonikStmt_try *new; @@ -1596,7 +1600,7 @@ break; case 14: -#line 354 "parser.y" +#line 356 "parser.y" { SlonikStmt_try *new; @@ -1615,7 +1619,7 @@ break; case 15: -#line 370 "parser.y" +#line 372 "parser.y" { SlonikStmt_try *new; @@ -1633,177 +1637,177 @@ break; case 16: -#line 387 "parser.y" +#line 389 "parser.y" { yyval.statement = yyvsp[-1].statement; } break; case 17: -#line 390 "parser.y" +#line 392 "parser.y" { yyval.statement = yyvsp[-1].statement; } break; case 18: -#line 394 "parser.y" +#line 396 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 19: -#line 396 "parser.y" +#line 398 "parser.y" { yyvsp[-1].statement->next = yyvsp[0].statement; yyval.statement = yyvsp[-1].statement; } break; case 20: -#line 400 "parser.y" +#line 402 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 21: -#line 402 "parser.y" +#line 404 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 22: -#line 404 "parser.y" +#line 406 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 23: -#line 406 "parser.y" +#line 408 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 24: -#line 408 "parser.y" +#line 410 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 25: -#line 410 "parser.y" +#line 412 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 26: -#line 412 "parser.y" +#line 414 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 27: -#line 414 "parser.y" +#line 416 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 28: -#line 416 "parser.y" +#line 418 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 29: -#line 418 "parser.y" +#line 420 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 30: -#line 420 "parser.y" +#line 422 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 31: -#line 422 "parser.y" +#line 424 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 32: -#line 424 "parser.y" +#line 426 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 33: -#line 426 "parser.y" +#line 428 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 34: -#line 428 "parser.y" +#line 430 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 35: -#line 430 "parser.y" +#line 432 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 36: -#line 432 "parser.y" +#line 434 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 37: -#line 434 "parser.y" +#line 436 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 38: -#line 436 "parser.y" +#line 438 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 39: -#line 438 "parser.y" +#line 440 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 40: -#line 440 "parser.y" +#line 442 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 41: -#line 442 "parser.y" +#line 444 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 42: -#line 444 "parser.y" +#line 446 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 43: -#line 446 "parser.y" +#line 448 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 44: -#line 448 "parser.y" +#line 450 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 45: -#line 450 "parser.y" +#line 452 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 46: -#line 452 "parser.y" +#line 454 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 47: -#line 454 "parser.y" +#line 456 "parser.y" { yyval.statement = yyvsp[0].statement; } break; case 48: -#line 455 "parser.y" +#line 457 "parser.y" { yyerrok; } break; case 49: -#line 456 "parser.y" +#line 458 "parser.y" { yyval.statement = yyvsp[-2].statement; } break; case 50: -#line 460 "parser.y" +#line 462 "parser.y" { SlonikStmt_echo *new; @@ -1821,7 +1825,7 @@ break; case 51: -#line 477 "parser.y" +#line 479 "parser.y" { SlonikStmt_exit *new; @@ -1839,7 +1843,7 @@ break; case 52: -#line 494 "parser.y" +#line 496 "parser.y" { SlonikStmt_restart_node *new; @@ -1857,17 +1861,17 @@ break; case 53: -#line 511 "parser.y" +#line 513 "parser.y" { yyval.ival = strtol(yytext, NULL, 10); } break; case 54: -#line 513 "parser.y" +#line 515 "parser.y" { yyval.ival = -yyvsp[0].ival; } break; case 55: -#line 517 "parser.y" +#line 519 "parser.y" { SlonikStmt *new; @@ -1883,7 +1887,7 @@ break; case 56: -#line 532 "parser.y" +#line 534 "parser.y" { SlonikStmt_init_cluster *new; statement_option opt[] = { @@ -1912,7 +1916,7 @@ break; case 57: -#line 560 "parser.y" +#line 562 "parser.y" { SlonikStmt_store_node *new; statement_option opt[] = { @@ -1943,7 +1947,7 @@ break; case 58: -#line 590 "parser.y" +#line 592 "parser.y" { SlonikStmt_drop_node *new; statement_option opt[] = { @@ -1972,7 +1976,7 @@ break; case 59: -#line 618 "parser.y" +#line 620 "parser.y" { SlonikStmt_failed_node *new; statement_option opt[] = { @@ -2001,7 +2005,7 @@ break; case 60: -#line 646 "parser.y" +#line 648 "parser.y" { SlonikStmt_uninstall_node *new; statement_option opt[] = { @@ -2028,7 +2032,7 @@ break; case 61: -#line 672 "parser.y" +#line 674 "parser.y" { SlonikStmt_store_path *new; statement_option opt[] = { @@ -2061,7 +2065,7 @@ break; case 62: -#line 704 "parser.y" +#line 706 "parser.y" { SlonikStmt_drop_path *new; statement_option opt[] = { @@ -2092,7 +2096,7 @@ break; case 63: -#line 734 "parser.y" +#line 736 "parser.y" { SlonikStmt_store_listen *new; statement_option opt[] = { @@ -2123,7 +2127,7 @@ break; case 64: -#line 764 "parser.y" +#line 766 "parser.y" { SlonikStmt_drop_listen *new; statement_option opt[] = { @@ -2154,7 +2158,7 @@ break; case 65: -#line 794 "parser.y" +#line 796 "parser.y" { SlonikStmt_create_set *new; statement_option opt[] = { @@ -2185,7 +2189,7 @@ break; case 66: -#line 824 "parser.y" +#line 826 "parser.y" { SlonikStmt_drop_set *new; statement_option opt[] = { @@ -2214,7 +2218,7 @@ break; case 67: -#line 852 "parser.y" +#line 854 "parser.y" { SlonikStmt_merge_set *new; statement_option opt[] = { @@ -2245,7 +2249,7 @@ break; case 68: -#line 882 "parser.y" +#line 884 "parser.y" { SlonikStmt_table_add_key *new; statement_option opt[] = { @@ -2274,7 +2278,7 @@ break; case 69: -#line 910 "parser.y" +#line 912 "parser.y" { SlonikStmt_set_add_table *new; statement_option opt[] = { @@ -2313,7 +2317,7 @@ break; case 70: -#line 948 "parser.y" +#line 950 "parser.y" { SlonikStmt_set_add_sequence *new; statement_option opt[] = { @@ -2348,7 +2352,7 @@ break; case 71: -#line 982 "parser.y" +#line 984 "parser.y" { SlonikStmt_store_trigger *new; statement_option opt[] = { @@ -2379,7 +2383,7 @@ break; case 72: -#line 1012 "parser.y" +#line 1014 "parser.y" { SlonikStmt_drop_trigger *new; statement_option opt[] = { @@ -2410,7 +2414,7 @@ break; case 73: -#line 1042 "parser.y" +#line 1044 "parser.y" { SlonikStmt_subscribe_set *new; statement_option opt[] = { @@ -2443,7 +2447,7 @@ break; case 74: -#line 1074 "parser.y" +#line 1076 "parser.y" { SlonikStmt_unsubscribe_set *new; statement_option opt[] = { @@ -2472,7 +2476,7 @@ break; case 75: -#line 1102 "parser.y" +#line 1104 "parser.y" { SlonikStmt_lock_set *new; statement_option opt[] = { @@ -2501,7 +2505,7 @@ break; case 76: -#line 1130 "parser.y" +#line 1132 "parser.y" { SlonikStmt_unlock_set *new; statement_option opt[] = { @@ -2530,7 +2534,7 @@ break; case 77: -#line 1158 "parser.y" +#line 1160 "parser.y" { SlonikStmt_move_set *new; statement_option opt[] = { @@ -2561,13 +2565,14 @@ break; case 78: -#line 1188 "parser.y" +#line 1190 "parser.y" { SlonikStmt_ddl_script *new; statement_option opt[] = { STMT_OPTION_INT( O_SET_ID, -1 ), STMT_OPTION_STR( O_FILENAME, NULL ), STMT_OPTION_INT( O_EVENT_NODE, 1 ), + STMT_OPTION_INT( O_EXECUTE_ONLY_ON, -1 ), STMT_OPTION_END }; @@ -2583,6 +2588,7 @@ new->ddl_setid = opt[0].ival; new->ddl_fname = opt[1].str; new->ev_origin = opt[2].ival; + new->only_on_node = opt[3].ival; new->ddl_fd = -1; } else @@ -2593,7 +2599,7 @@ break; case 79: -#line 1219 "parser.y" +#line 1223 "parser.y" { SlonikStmt_update_functions *new; statement_option opt[] = { @@ -2620,7 +2626,7 @@ break; case 80: -#line 1245 "parser.y" +#line 1249 "parser.y" { SlonikStmt_wait_event *new; statement_option opt[] = { @@ -2653,27 +2659,27 @@ break; case 81: -#line 1277 "parser.y" +#line 1281 "parser.y" { yyval.opt_list = NULL; } break; case 82: -#line 1279 "parser.y" +#line 1283 "parser.y" { yyval.opt_list = yyvsp[-2].opt_list; } break; case 83: -#line 1283 "parser.y" +#line 1287 "parser.y" { yyval.opt_list = yyvsp[0].opt_list; } break; case 84: -#line 1285 "parser.y" +#line 1289 "parser.y" { yyvsp[-2].opt_list->next = yyvsp[0].opt_list; yyval.opt_list = yyvsp[-2].opt_list; } break; case 85: -#line 1289 "parser.y" +#line 1293 "parser.y" { yyvsp[0].opt_list->opt_code = O_ID; yyval.opt_list = yyvsp[0].opt_list; @@ -2681,7 +2687,7 @@ break; case 86: -#line 1294 "parser.y" +#line 1298 "parser.y" { yyvsp[0].opt_list->opt_code = O_BACKUP_NODE; yyval.opt_list = yyvsp[0].opt_list; @@ -2689,7 +2695,7 @@ break; case 87: -#line 1299 "parser.y" +#line 1303 "parser.y" { yyvsp[0].opt_list->opt_code = O_EVENT_NODE; yyval.opt_list = yyvsp[0].opt_list; @@ -2697,7 +2703,7 @@ break; case 88: -#line 1304 "parser.y" +#line 1308 "parser.y" { yyvsp[0].opt_list->opt_code = O_SERVER; yyval.opt_list = yyvsp[0].opt_list; @@ -2705,7 +2711,7 @@ break; case 89: -#line 1309 "parser.y" +#line 1313 "parser.y" { yyvsp[0].opt_list->opt_code = O_CLIENT; yyval.opt_list = yyvsp[0].opt_list; @@ -2713,7 +2719,7 @@ break; case 90: -#line 1314 "parser.y" +#line 1318 "parser.y" { yyvsp[0].opt_list->opt_code = O_ORIGIN; yyval.opt_list = yyvsp[0].opt_list; @@ -2721,7 +2727,7 @@ break; case 91: -#line 1319 "parser.y" +#line 1323 "parser.y" { yyvsp[0].opt_list->opt_code = O_OLD_ORIGIN; yyval.opt_list = yyvsp[0].opt_list; @@ -2729,7 +2735,7 @@ break; case 92: -#line 1324 "parser.y" +#line 1328 "parser.y" { yyvsp[0].opt_list->opt_code = O_NEW_ORIGIN; yyval.opt_list = yyvsp[0].opt_list; @@ -2737,7 +2743,7 @@ break; case 93: -#line 1329 "parser.y" +#line 1333 "parser.y" { yyvsp[0].opt_list->opt_code = O_RECEIVER; yyval.opt_list = yyvsp[0].opt_list; @@ -2745,7 +2751,7 @@ break; case 94: -#line 1334 "parser.y" +#line 1338 "parser.y" { yyvsp[0].opt_list->opt_code = O_PROVIDER; yyval.opt_list = yyvsp[0].opt_list; @@ -2753,7 +2759,7 @@ break; case 95: -#line 1339 "parser.y" +#line 1343 "parser.y" { yyvsp[0].opt_list->opt_code = O_CONNRETRY; yyval.opt_list = yyvsp[0].opt_list; @@ -2761,7 +2767,7 @@ break; case 96: -#line 1344 "parser.y" +#line 1348 "parser.y" { yyvsp[0].opt_list->opt_code = O_COMMENT; yyval.opt_list = yyvsp[0].opt_list; @@ -2769,7 +2775,7 @@ break; case 97: -#line 1349 "parser.y" +#line 1353 "parser.y" { yyvsp[0].opt_list->opt_code = O_CONNINFO; yyval.opt_list = yyvsp[0].opt_list; @@ -2777,7 +2783,7 @@ break; case 98: -#line 1354 "parser.y" +#line 1358 "parser.y" { yyvsp[0].opt_list->opt_code = O_SET_ID; yyval.opt_list = yyvsp[0].opt_list; @@ -2785,7 +2791,7 @@ break; case 99: -#line 1359 "parser.y" +#line 1363 "parser.y" { yyvsp[0].opt_list->opt_code = O_ADD_ID; yyval.opt_list = yyvsp[0].opt_list; @@ -2793,7 +2799,7 @@ break; case 100: -#line 1364 "parser.y" +#line 1368 "parser.y" { yyvsp[0].opt_list->opt_code = O_NODE_ID; yyval.opt_list = yyvsp[0].opt_list; @@ -2801,7 +2807,7 @@ break; case 101: -#line 1369 "parser.y" +#line 1373 "parser.y" { yyvsp[0].opt_list->opt_code = O_TAB_ID; yyval.opt_list = yyvsp[0].opt_list; @@ -2809,7 +2815,7 @@ break; case 102: -#line 1374 "parser.y" +#line 1378 "parser.y" { yyvsp[0].opt_list->opt_code = O_TRIG_NAME; yyval.opt_list = yyvsp[0].opt_list; @@ -2817,7 +2823,7 @@ break; case 103: -#line 1379 "parser.y" +#line 1383 "parser.y" { yyvsp[0].opt_list->opt_code = O_FQNAME; yyval.opt_list = yyvsp[0].opt_list; @@ -2825,7 +2831,7 @@ break; case 104: -#line 1384 "parser.y" +#line 1388 "parser.y" { yyvsp[0].opt_list->opt_code = O_USE_KEY; yyval.opt_list = yyvsp[0].opt_list; @@ -2833,7 +2839,7 @@ break; case 105: -#line 1389 "parser.y" +#line 1393 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2849,7 +2855,7 @@ break; case 106: -#line 1402 "parser.y" +#line 1406 "parser.y" { yyvsp[0].opt_list->opt_code = O_FORWARD; yyval.opt_list = yyvsp[0].opt_list; @@ -2857,7 +2863,7 @@ break; case 107: -#line 1407 "parser.y" +#line 1411 "parser.y" { yyvsp[0].opt_list->opt_code = O_FILENAME; yyval.opt_list = yyvsp[0].opt_list; @@ -2865,7 +2871,7 @@ break; case 108: -#line 1412 "parser.y" +#line 1416 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2881,7 +2887,7 @@ break; case 109: -#line 1425 "parser.y" +#line 1429 "parser.y" { yyvsp[0].opt_list->opt_code = O_WAIT_CONFIRMED; yyval.opt_list = yyvsp[0].opt_list; @@ -2889,7 +2895,7 @@ break; case 110: -#line 1430 "parser.y" +#line 1434 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2905,7 +2911,7 @@ break; case 111: -#line 1443 "parser.y" +#line 1447 "parser.y" { yyvsp[0].opt_list->opt_code = O_WAIT_ON; yyval.opt_list = yyvsp[0].opt_list; @@ -2913,7 +2919,7 @@ break; case 112: -#line 1448 "parser.y" +#line 1452 "parser.y" { yyvsp[0].opt_list->opt_code = O_TIMEOUT; yyval.opt_list = yyvsp[0].opt_list; @@ -2921,7 +2927,15 @@ break; case 113: -#line 1455 "parser.y" +#line 1457 "parser.y" + { + yyvsp[0].opt_list->opt_code = O_EXECUTE_ONLY_ON; + yyval.opt_list = yyvsp[0].opt_list; + } + break; + + case 114: +#line 1464 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2935,8 +2949,8 @@ } break; - case 114: -#line 1469 "parser.y" + case 115: +#line 1478 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2950,8 +2964,8 @@ } break; - case 115: -#line 1483 "parser.y" + case 116: +#line 1492 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2965,8 +2979,8 @@ } break; - case 116: -#line 1495 "parser.y" + case 117: +#line 1504 "parser.y" { option_list *new; new = (option_list *)malloc(sizeof(option_list)); @@ -2980,15 +2994,15 @@ } break; - case 123: -#line 1519 "parser.y" + case 124: +#line 1528 "parser.y" { yyval.ival = strtol(yytext, NULL, 10); } break; - case 124: -#line 1525 "parser.y" + case 125: +#line 1534 "parser.y" { char *ret; @@ -3000,8 +3014,8 @@ } break; - case 125: -#line 1537 "parser.y" + case 126: +#line 1546 "parser.y" { char *ret; @@ -3013,8 +3027,8 @@ } break; - case 126: -#line 1549 "parser.y" + case 127: +#line 1558 "parser.y" { yyval.ival = yylineno; } break; @@ -3022,7 +3036,7 @@ } /* Line 991 of yacc.c. */ -#line 3025 "y.tab.c" +#line 3039 "y.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -3231,7 +3245,7 @@ } -#line 1552 "parser.y" +#line 1561 "parser.y" @@ -3253,6 +3267,7 @@ case O_CONNINFO: return "conninfo"; case O_CONNRETRY: return "connretry"; case O_EVENT_NODE: return "event node"; + case O_EXECUTE_ONLY_ON: return "execute only on"; case O_FILENAME: return "filename"; case O_FORWARD: return "forward"; case O_FQNAME: return "full qualified name"; @@ -3342,4 +3357,3 @@ -
- Previous message: [Slony1-commit] By darcyb: Some compilers are braindead about including utils/elog (read
- Next message: [Slony1-commit] By cbbrowne: Add the case of trying to add a table to a subscribed set.
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list