~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to conf/signal_resignal.yy

 allow working with tables and databases of varying structure

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
query:
2
 
        set_variable | update |
3
 
        create_procedure | create_procedure | create_function | create_function |
4
 
        drop_procedure | drop_function |
5
 
        call_procedure | call_procedure ;
6
 
 
7
 
create_procedure:
8
 
        CREATE PROCEDURE procedure_name ( arg1 variable_type , arg2 variable_type , arg3 variable_type ) BEGIN procedure ; END ;
9
 
 
10
 
create_function:
11
 
        CREATE FUNCTION function_name ( arg1 variable_type, arg2 variable_type , arg3 variable_type) RETURNS variable_type BEGIN procedure ; RETURN value ; END ;
12
 
 
13
 
drop_function:
14
 
        DROP FUNCTION function_name ;
15
 
 
16
 
procedure:
17
 
        declare_variable ; declare_condition ; declare_handler ; procedure_statement ; procedure_statement ; procedure_statement ; procedure_statement ; procedure_statement ;
18
 
 
19
 
declaration:
20
 
        declare_handler |
21
 
        declare_condition |
22
 
        declare_variable ;
23
 
 
24
 
drop_procedure:
25
 
        DROP PROCEDURE procedure_name ;
26
 
 
27
 
call_procedure:
28
 
        CALL procedure_name ( value , value , value ) ;
29
 
 
30
 
procedure_name:
31
 
        p1 | p2 | p3 ;
32
 
 
33
 
function_name:
34
 
        f1 | f2 | f3 ;
35
 
 
36
 
procedure_statement:
37
 
        set_variable |
38
 
        signal_resignal |
39
 
        if |
40
 
        call_procedure |
41
 
        update ;
42
 
 
43
 
update:
44
 
        UPDATE _table SET _field = value ;
45
 
 
46
 
if:
47
 
        IF variable_name = value THEN signal_resignal ; ELSEIF variable_name = value THEN signal_resignal ; ELSE signal_resignal ; END IF ;
48
 
 
49
 
declare_variable:
50
 
        DECLARE variable_name variable_type default_value;
51
 
 
52
 
set_variable:
53
 
        SET at_variable_name = value ;
54
 
 
55
 
value:
56
 
        _english |
57
 
        _digit |
58
 
        at_variable_name |
59
 
        function_name ( _english , _digit , at_variable_name ) ;
60
 
 
61
 
variable_name:
62
 
        var1 ;
63
 
#| var2 | var3 ;
64
 
 
65
 
at_variable_name:
66
 
        @var1 ;
67
 
#| @var2 | @var3 ;
68
 
 
69
 
variable_type:
70
 
        INTEGER | VARCHAR(32) ;
71
 
 
72
 
default_value:
73
 
        | DEFAULT _english | DEFAULT _digit ;
74
 
 
75
 
declare_condition:
76
 
        DECLARE condition_name CONDITION FOR SQLSTATE value_keyword sqlstate_value ;
77
 
 
78
 
condition_name:
79
 
        cond1 ;
80
 
#| cond2 | cond3 ;
81
 
 
82
 
signal_resignal:
83
 
        signal_resignal_keyword signal_condition_value SET signal_list ;
84
 
 
85
 
signal_resignal_keyword:
86
 
        SIGNAL | RESIGNAL ;
87
 
 
88
 
signal_list:
89
 
        signal_item |
90
 
        signal_item , signal_item ;
91
 
 
92
 
signal_condition_value:
93
 
        SQLSTATE value_keyword sqlstate_value |
94
 
        condition_name ;
95
 
 
96
 
value_keyword:
97
 
        ;
98
 
#
99
 
#       | VALUE ;
100
 
 
101
 
signal_item:
102
 
        signal_information ;
103
 
 
104
 
signal_information:
105
 
        condition_information_item = simple_value_specification ;
106
 
 
107
 
declare_handler:
108
 
        DECLARE handler_type HANDLER FOR handler_condition_list procedure_statement ;
109
 
 
110
 
handler_type:
111
 
        CONTINUE | EXIT ;
112
 
#| ;UNDO ;
113
 
 
114
 
handler_condition_list:
115
 
        condition_value |
116
 
        condition_value , condition_value ;
117
 
 
118
 
condition_value:
119
 
        SQLSTATE value_keyword sqlstate_value
120
 
        | condition_name
121
 
        | SQLWARNING
122
 
        | NOT FOUND
123
 
        | SQLEXCEPTION
124
 
#       | mysql_error_code      # not supported by signal/resignal
125
 
;
126
 
 
127
 
condition_information_item:
128
 
        CLASS_ORIGIN
129
 
        | SUBCLASS_ORIGIN
130
 
        | CONSTRAINT_CATALOG
131
 
        | CONSTRAINT_SCHEMA
132
 
        | CONSTRAINT_NAME
133
 
        | CATALOG_NAME
134
 
        | SCHEMA_NAME
135
 
        | TABLE_NAME
136
 
        | COLUMN_NAME
137
 
        | CURSOR_NAME
138
 
        | MESSAGE_TEXT
139
 
        | MYSQL_ERRNO
140
 
;
141
 
 
142
 
simple_value_specification:
143
 
        _english |
144
 
        _digit |
145
 
        variable_name |
146
 
        at_variable_name ;
147
 
        
148
 
#resignal:
149
 
#;
150
 
 
151
 
mysql_error_code:
152
 
        0 | 
153
 
        1022 | # ER_DUP_KEY
154
 
        1062 | # ER_DUP_ENTRY
155
 
        1106 | # ER_UNKNOWN_PROCEDURE
156
 
        1319 # ER_SP_COND_MISMATCH 
157
 
;
158
 
 
159
 
sqlstate_value:
160
 
'42000' | # generic
161
 
'HY000' | # generic
162
 
'23000' # duplicate value
163
 
;
164
 
 
165
 
_table:
166
 
        B | C ;