~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to conf/signal_resignal.yy

merge from internal tree

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 ;