~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/suite/funcs_1/r/is_routines.result

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
SHOW TABLES FROM information_schema LIKE 'ROUTINES';
 
2
Tables_in_information_schema (ROUTINES)
 
3
ROUTINES
 
4
#######################################################################
 
5
# Testcase 3.2.1.1: INFORMATION_SCHEMA tables can be queried via SELECT
 
6
#######################################################################
 
7
DROP VIEW      IF EXISTS test.v1;
 
8
DROP PROCEDURE IF EXISTS test.p1;
 
9
DROP FUNCTION  IF EXISTS test.f1;
 
10
CREATE VIEW test.v1 AS     SELECT * FROM information_schema.ROUTINES;
 
11
CREATE PROCEDURE test.p1() SELECT * FROM information_schema.ROUTINES;
 
12
CREATE FUNCTION test.f1() returns BIGINT
 
13
BEGIN
 
14
DECLARE counter BIGINT DEFAULT NULL;
 
15
SELECT COUNT(*) INTO counter FROM information_schema.ROUTINES;
 
16
RETURN counter;
 
17
END//
 
18
# Attention: The printing of the next result sets is disabled.
 
19
SELECT * FROM information_schema.ROUTINES;
 
20
SELECT * FROM test.v1;
 
21
CALL test.p1;
 
22
SELECT test.f1();
 
23
DROP VIEW test.v1;
 
24
DROP PROCEDURE test.p1;
 
25
DROP FUNCTION test.f1;
 
26
#########################################################################
 
27
# Testcase 3.2.8.1: INFORMATION_SCHEMA.ROUTINES layout
 
28
#########################################################################
 
29
DESCRIBE          information_schema.ROUTINES;
 
30
Field   Type    Null    Key     Default Extra
 
31
SPECIFIC_NAME   varchar(64)     NO                      
 
32
ROUTINE_CATALOG varchar(512)    YES             NULL    
 
33
ROUTINE_SCHEMA  varchar(64)     NO                      
 
34
ROUTINE_NAME    varchar(64)     NO                      
 
35
ROUTINE_TYPE    varchar(9)      NO                      
 
36
DATA_TYPE       varchar(256)    NO                      
 
37
CHARACTER_MAXIMUM_LENGTH        int(21) YES             NULL    
 
38
CHARACTER_OCTET_LENGTH  int(21) YES             NULL    
 
39
NUMERIC_PRECISION       int(21) YES             NULL    
 
40
NUMERIC_SCALE   int(21) YES             NULL    
 
41
CHARACTER_SET_NAME      varchar(64)     YES             NULL    
 
42
COLLATION_NAME  varchar(64)     YES             NULL    
 
43
DTD_IDENTIFIER  longtext        YES             NULL    
 
44
ROUTINE_BODY    varchar(8)      NO                      
 
45
ROUTINE_DEFINITION      longtext        YES             NULL    
 
46
EXTERNAL_NAME   varchar(64)     YES             NULL    
 
47
EXTERNAL_LANGUAGE       varchar(64)     YES             NULL    
 
48
PARAMETER_STYLE varchar(8)      NO                      
 
49
IS_DETERMINISTIC        varchar(3)      NO                      
 
50
SQL_DATA_ACCESS varchar(64)     NO                      
 
51
SQL_PATH        varchar(64)     YES             NULL    
 
52
SECURITY_TYPE   varchar(7)      NO                      
 
53
CREATED datetime        NO              0000-00-00 00:00:00     
 
54
LAST_ALTERED    datetime        NO              0000-00-00 00:00:00     
 
55
SQL_MODE        longtext        NO              NULL    
 
56
ROUTINE_COMMENT varchar(64)     NO                      
 
57
DEFINER varchar(77)     NO                      
 
58
CHARACTER_SET_CLIENT    varchar(32)     NO                      
 
59
COLLATION_CONNECTION    varchar(32)     NO                      
 
60
DATABASE_COLLATION      varchar(32)     NO                      
 
61
SHOW CREATE TABLE information_schema.ROUTINES;
 
62
Table   Create Table
 
63
ROUTINES        CREATE TEMPORARY TABLE `ROUTINES` (
 
64
  `SPECIFIC_NAME` varchar(64) NOT NULL DEFAULT '',
 
65
  `ROUTINE_CATALOG` varchar(512) DEFAULT NULL,
 
66
  `ROUTINE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
 
67
  `ROUTINE_NAME` varchar(64) NOT NULL DEFAULT '',
 
68
  `ROUTINE_TYPE` varchar(9) NOT NULL DEFAULT '',
 
69
  `DATA_TYPE` varchar(256) NOT NULL DEFAULT '',
 
70
  `CHARACTER_MAXIMUM_LENGTH` int(21) DEFAULT NULL,
 
71
  `CHARACTER_OCTET_LENGTH` int(21) DEFAULT NULL,
 
72
  `NUMERIC_PRECISION` int(21) DEFAULT NULL,
 
73
  `NUMERIC_SCALE` int(21) DEFAULT NULL,
 
74
  `CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
 
75
  `COLLATION_NAME` varchar(64) DEFAULT NULL,
 
76
  `DTD_IDENTIFIER` longtext,
 
77
  `ROUTINE_BODY` varchar(8) NOT NULL DEFAULT '',
 
78
  `ROUTINE_DEFINITION` longtext,
 
79
  `EXTERNAL_NAME` varchar(64) DEFAULT NULL,
 
80
  `EXTERNAL_LANGUAGE` varchar(64) DEFAULT NULL,
 
81
  `PARAMETER_STYLE` varchar(8) NOT NULL DEFAULT '',
 
82
  `IS_DETERMINISTIC` varchar(3) NOT NULL DEFAULT '',
 
83
  `SQL_DATA_ACCESS` varchar(64) NOT NULL DEFAULT '',
 
84
  `SQL_PATH` varchar(64) DEFAULT NULL,
 
85
  `SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
 
86
  `CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 
87
  `LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 
88
  `SQL_MODE` longtext NOT NULL,
 
89
  `ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
 
90
  `DEFINER` varchar(77) NOT NULL DEFAULT '',
 
91
  `CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
 
92
  `COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
 
93
  `DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
 
94
) ENGINE=MyISAM DEFAULT CHARSET=utf8
 
95
SHOW COLUMNS FROM information_schema.ROUTINES;
 
96
Field   Type    Null    Key     Default Extra
 
97
SPECIFIC_NAME   varchar(64)     NO                      
 
98
ROUTINE_CATALOG varchar(512)    YES             NULL    
 
99
ROUTINE_SCHEMA  varchar(64)     NO                      
 
100
ROUTINE_NAME    varchar(64)     NO                      
 
101
ROUTINE_TYPE    varchar(9)      NO                      
 
102
DATA_TYPE       varchar(256)    NO                      
 
103
CHARACTER_MAXIMUM_LENGTH        int(21) YES             NULL    
 
104
CHARACTER_OCTET_LENGTH  int(21) YES             NULL    
 
105
NUMERIC_PRECISION       int(21) YES             NULL    
 
106
NUMERIC_SCALE   int(21) YES             NULL    
 
107
CHARACTER_SET_NAME      varchar(64)     YES             NULL    
 
108
COLLATION_NAME  varchar(64)     YES             NULL    
 
109
DTD_IDENTIFIER  longtext        YES             NULL    
 
110
ROUTINE_BODY    varchar(8)      NO                      
 
111
ROUTINE_DEFINITION      longtext        YES             NULL    
 
112
EXTERNAL_NAME   varchar(64)     YES             NULL    
 
113
EXTERNAL_LANGUAGE       varchar(64)     YES             NULL    
 
114
PARAMETER_STYLE varchar(8)      NO                      
 
115
IS_DETERMINISTIC        varchar(3)      NO                      
 
116
SQL_DATA_ACCESS varchar(64)     NO                      
 
117
SQL_PATH        varchar(64)     YES             NULL    
 
118
SECURITY_TYPE   varchar(7)      NO                      
 
119
CREATED datetime        NO              0000-00-00 00:00:00     
 
120
LAST_ALTERED    datetime        NO              0000-00-00 00:00:00     
 
121
SQL_MODE        longtext        NO              NULL    
 
122
ROUTINE_COMMENT varchar(64)     NO                      
 
123
DEFINER varchar(77)     NO                      
 
124
CHARACTER_SET_CLIENT    varchar(32)     NO                      
 
125
COLLATION_CONNECTION    varchar(32)     NO                      
 
126
DATABASE_COLLATION      varchar(32)     NO                      
 
127
USE test;
 
128
DROP PROCEDURE IF EXISTS sp_for_routines;
 
129
DROP FUNCTION  IF EXISTS function_for_routines;
 
130
CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 
131
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 
132
SELECT specific_name,routine_catalog,routine_schema,routine_name,routine_type,
 
133
routine_body,external_name,external_language,parameter_style,sql_path
 
134
FROM information_schema.routines
 
135
WHERE routine_catalog   IS NOT NULL OR external_name   IS NOT NULL
 
136
OR external_language IS NOT NULL OR sql_path        IS NOT NULL
 
137
OR routine_body      <> 'SQL'    OR parameter_style <> 'SQL'
 
138
   OR specific_name     <> routine_name;
 
139
specific_name   routine_catalog routine_schema  routine_name    routine_type    routine_body    external_name   external_language       parameter_style sql_path
 
140
DROP PROCEDURE sp_for_routines;
 
141
DROP FUNCTION  function_for_routines;
 
142
################################################################################
 
143
# Testcase 3.2.8.2 + 3.2.8.3: INFORMATION_SCHEMA.ROUTINES accessible information
 
144
################################################################################
 
145
DROP DATABASE IF EXISTS db_datadict;
 
146
DROP DATABASE IF EXISTS db_datadict_2;
 
147
CREATE DATABASE db_datadict;
 
148
USE db_datadict;
 
149
CREATE TABLE res_6_408002_1(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
 
150
ENGINE = <other_engine_type>;
 
151
INSERT INTO res_6_408002_1(f1, f2, f3, f4)
 
152
VALUES('abc', 'xyz', '1989-11-09', 0815);
 
153
DROP PROCEDURE IF EXISTS sp_6_408002_1;
 
154
CREATE PROCEDURE sp_6_408002_1()
 
155
BEGIN
 
156
SELECT * FROM db_datadict.res_6_408002_1;
 
157
END//
 
158
CREATE DATABASE db_datadict_2;
 
159
USE db_datadict_2;
 
160
CREATE TABLE res_6_408002_2(f1 CHAR(3), f2 TEXT(25), f3 DATE, f4 INT)
 
161
ENGINE = <other_engine_type>;
 
162
INSERT INTO res_6_408002_2(f1, f2, f3, f4)
 
163
VALUES('abc', 'xyz', '1990-10-03', 4711);
 
164
DROP PROCEDURE IF EXISTS sp_6_408002_2;
 
165
CREATE PROCEDURE sp_6_408002_2()
 
166
BEGIN
 
167
SELECT * FROM db_datadict_2.res_6_408002_2;
 
168
END//
 
169
DROP   USER 'testuser1'@'localhost';
 
170
CREATE USER 'testuser1'@'localhost';
 
171
DROP   USER 'testuser2'@'localhost';
 
172
CREATE USER 'testuser2'@'localhost';
 
173
DROP   USER 'testuser3'@'localhost';
 
174
CREATE USER 'testuser3'@'localhost';
 
175
GRANT SELECT  ON db_datadict_2.* TO 'testuser1'@'localhost';
 
176
GRANT EXECUTE ON db_datadict_2.* TO 'testuser1'@'localhost';
 
177
GRANT EXECUTE ON db_datadict.*   TO 'testuser1'@'localhost';
 
178
GRANT SELECT  ON db_datadict.*   TO 'testuser2'@'localhost';
 
179
GRANT EXECUTE ON PROCEDURE db_datadict_2.sp_6_408002_2
 
180
TO 'testuser2'@'localhost';
 
181
GRANT EXECUTE ON db_datadict_2.* TO 'testuser2'@'localhost';
 
182
FLUSH PRIVILEGES;
 
183
# Establish connection testuser1 (user=testuser1)
 
184
SELECT * FROM information_schema.routines;
 
185
SPECIFIC_NAME   ROUTINE_CATALOG ROUTINE_SCHEMA  ROUTINE_NAME    ROUTINE_TYPE    DATA_TYPE       CHARACTER_MAXIMUM_LENGTH        CHARACTER_OCTET_LENGTH  NUMERIC_PRECISION       NUMERIC_SCALE   CHARACTER_SET_NAME      COLLATION_NAME  DTD_IDENTIFIER  ROUTINE_BODY    ROUTINE_DEFINITION      EXTERNAL_NAME   EXTERNAL_LANGUAGE       PARAMETER_STYLE IS_DETERMINISTIC        SQL_DATA_ACCESS SQL_PATH        SECURITY_TYPE   CREATED LAST_ALTERED    SQL_MODE        ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
 
186
sp_6_408002_1   NULL    db_datadict     sp_6_408002_1   PROCEDURE               NULL    NULL    NULL    NULL    NULL    NULL    NULL    SQL     NULL    NULL    NULL    SQL     NO      CONTAINS SQL    NULL    DEFINER <created>       <last_altered>                  root@localhost  latin1  latin1_swedish_ci       latin1_swedish_ci
 
187
sp_6_408002_2   NULL    db_datadict_2   sp_6_408002_2   PROCEDURE               NULL    NULL    NULL    NULL    NULL    NULL    NULL    SQL     NULL    NULL    NULL    SQL     NO      CONTAINS SQL    NULL    DEFINER <created>       <last_altered>                  root@localhost  latin1  latin1_swedish_ci       latin1_swedish_ci
 
188
# Establish connection testuser2 (user=testuser2)
 
189
SELECT * FROM information_schema.routines;
 
190
SPECIFIC_NAME   ROUTINE_CATALOG ROUTINE_SCHEMA  ROUTINE_NAME    ROUTINE_TYPE    DATA_TYPE       CHARACTER_MAXIMUM_LENGTH        CHARACTER_OCTET_LENGTH  NUMERIC_PRECISION       NUMERIC_SCALE   CHARACTER_SET_NAME      COLLATION_NAME  DTD_IDENTIFIER  ROUTINE_BODY    ROUTINE_DEFINITION      EXTERNAL_NAME   EXTERNAL_LANGUAGE       PARAMETER_STYLE IS_DETERMINISTIC        SQL_DATA_ACCESS SQL_PATH        SECURITY_TYPE   CREATED LAST_ALTERED    SQL_MODE        ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
 
191
sp_6_408002_2   NULL    db_datadict_2   sp_6_408002_2   PROCEDURE               NULL    NULL    NULL    NULL    NULL    NULL    NULL    SQL     NULL    NULL    NULL    SQL     NO      CONTAINS SQL    NULL    DEFINER <created>       <last_altered>                  root@localhost  latin1  latin1_swedish_ci       latin1_swedish_ci
 
192
# Establish connection testuser3 (user=testuser3)
 
193
SELECT * FROM information_schema.routines;
 
194
SPECIFIC_NAME   ROUTINE_CATALOG ROUTINE_SCHEMA  ROUTINE_NAME    ROUTINE_TYPE    DATA_TYPE       CHARACTER_MAXIMUM_LENGTH        CHARACTER_OCTET_LENGTH  NUMERIC_PRECISION       NUMERIC_SCALE   CHARACTER_SET_NAME      COLLATION_NAME  DTD_IDENTIFIER  ROUTINE_BODY    ROUTINE_DEFINITION      EXTERNAL_NAME   EXTERNAL_LANGUAGE       PARAMETER_STYLE IS_DETERMINISTIC        SQL_DATA_ACCESS SQL_PATH        SECURITY_TYPE   CREATED LAST_ALTERED    SQL_MODE        ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
 
195
# Switch to connection default and close connections testuser1,testuser2,testuser3
 
196
DROP USER 'testuser1'@'localhost';
 
197
DROP USER 'testuser2'@'localhost';
 
198
DROP USER 'testuser3'@'localhost';
 
199
USE test;
 
200
DROP DATABASE db_datadict;
 
201
DROP DATABASE db_datadict_2;
 
202
#########################################################################
 
203
# 3.2.1.13+3.2.1.14+3.2.1.15: INFORMATION_SCHEMA.ROUTINES modifications
 
204
#########################################################################
 
205
DROP DATABASE IF EXISTS db_datadict;
 
206
CREATE DATABASE db_datadict;
 
207
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
 
208
SPECIFIC_NAME   ROUTINE_CATALOG ROUTINE_SCHEMA  ROUTINE_NAME    ROUTINE_TYPE    DATA_TYPE       CHARACTER_MAXIMUM_LENGTH        CHARACTER_OCTET_LENGTH  NUMERIC_PRECISION       NUMERIC_SCALE   CHARACTER_SET_NAME      COLLATION_NAME  DTD_IDENTIFIER  ROUTINE_BODY    ROUTINE_DEFINITION      EXTERNAL_NAME   EXTERNAL_LANGUAGE       PARAMETER_STYLE IS_DETERMINISTIC        SQL_DATA_ACCESS SQL_PATH        SECURITY_TYPE   CREATED LAST_ALTERED    SQL_MODE        ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
 
209
USE db_datadict;
 
210
CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 
211
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 
212
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 
213
ORDER BY routine_name;
 
214
SPECIFIC_NAME   function_for_routines
 
215
ROUTINE_CATALOG NULL
 
216
ROUTINE_SCHEMA  db_datadict
 
217
ROUTINE_NAME    function_for_routines
 
218
ROUTINE_TYPE    FUNCTION
 
219
DATA_TYPE       int
 
220
CHARACTER_MAXIMUM_LENGTH        NULL
 
221
CHARACTER_OCTET_LENGTH  NULL
 
222
NUMERIC_PRECISION       10
 
223
NUMERIC_SCALE   0
 
224
CHARACTER_SET_NAME      NULL
 
225
COLLATION_NAME  NULL
 
226
DTD_IDENTIFIER  int(11)
 
227
ROUTINE_BODY    SQL
 
228
ROUTINE_DEFINITION      RETURN 0
 
229
EXTERNAL_NAME   NULL
 
230
EXTERNAL_LANGUAGE       NULL
 
231
PARAMETER_STYLE SQL
 
232
IS_DETERMINISTIC        NO
 
233
SQL_DATA_ACCESS CONTAINS SQL
 
234
SQL_PATH        NULL
 
235
SECURITY_TYPE   DEFINER
 
236
CREATED <created>
 
237
LAST_ALTERED    <last_altered>
 
238
SQL_MODE        
 
239
ROUTINE_COMMENT 
 
240
DEFINER root@localhost
 
241
CHARACTER_SET_CLIENT    latin1
 
242
COLLATION_CONNECTION    latin1_swedish_ci
 
243
DATABASE_COLLATION      latin1_swedish_ci
 
244
SPECIFIC_NAME   sp_for_routines
 
245
ROUTINE_CATALOG NULL
 
246
ROUTINE_SCHEMA  db_datadict
 
247
ROUTINE_NAME    sp_for_routines
 
248
ROUTINE_TYPE    PROCEDURE
 
249
DATA_TYPE       
 
250
CHARACTER_MAXIMUM_LENGTH        NULL
 
251
CHARACTER_OCTET_LENGTH  NULL
 
252
NUMERIC_PRECISION       NULL
 
253
NUMERIC_SCALE   NULL
 
254
CHARACTER_SET_NAME      NULL
 
255
COLLATION_NAME  NULL
 
256
DTD_IDENTIFIER  NULL
 
257
ROUTINE_BODY    SQL
 
258
ROUTINE_DEFINITION      SELECT 'db_datadict'
 
259
EXTERNAL_NAME   NULL
 
260
EXTERNAL_LANGUAGE       NULL
 
261
PARAMETER_STYLE SQL
 
262
IS_DETERMINISTIC        NO
 
263
SQL_DATA_ACCESS CONTAINS SQL
 
264
SQL_PATH        NULL
 
265
SECURITY_TYPE   DEFINER
 
266
CREATED <created>
 
267
LAST_ALTERED    <last_altered>
 
268
SQL_MODE        
 
269
ROUTINE_COMMENT 
 
270
DEFINER root@localhost
 
271
CHARACTER_SET_CLIENT    latin1
 
272
COLLATION_CONNECTION    latin1_swedish_ci
 
273
DATABASE_COLLATION      latin1_swedish_ci
 
274
ALTER PROCEDURE sp_for_routines SQL SECURITY INVOKER;
 
275
ALTER FUNCTION function_for_routines COMMENT 'updated comments';
 
276
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 
277
ORDER BY routine_name;
 
278
SPECIFIC_NAME   function_for_routines
 
279
ROUTINE_CATALOG NULL
 
280
ROUTINE_SCHEMA  db_datadict
 
281
ROUTINE_NAME    function_for_routines
 
282
ROUTINE_TYPE    FUNCTION
 
283
DATA_TYPE       int
 
284
CHARACTER_MAXIMUM_LENGTH        NULL
 
285
CHARACTER_OCTET_LENGTH  NULL
 
286
NUMERIC_PRECISION       10
 
287
NUMERIC_SCALE   0
 
288
CHARACTER_SET_NAME      NULL
 
289
COLLATION_NAME  NULL
 
290
DTD_IDENTIFIER  int(11)
 
291
ROUTINE_BODY    SQL
 
292
ROUTINE_DEFINITION      RETURN 0
 
293
EXTERNAL_NAME   NULL
 
294
EXTERNAL_LANGUAGE       NULL
 
295
PARAMETER_STYLE SQL
 
296
IS_DETERMINISTIC        NO
 
297
SQL_DATA_ACCESS CONTAINS SQL
 
298
SQL_PATH        NULL
 
299
SECURITY_TYPE   DEFINER
 
300
CREATED <created>
 
301
LAST_ALTERED    <last_altered>
 
302
SQL_MODE        
 
303
ROUTINE_COMMENT updated comments
 
304
DEFINER root@localhost
 
305
CHARACTER_SET_CLIENT    latin1
 
306
COLLATION_CONNECTION    latin1_swedish_ci
 
307
DATABASE_COLLATION      latin1_swedish_ci
 
308
SPECIFIC_NAME   sp_for_routines
 
309
ROUTINE_CATALOG NULL
 
310
ROUTINE_SCHEMA  db_datadict
 
311
ROUTINE_NAME    sp_for_routines
 
312
ROUTINE_TYPE    PROCEDURE
 
313
DATA_TYPE       
 
314
CHARACTER_MAXIMUM_LENGTH        NULL
 
315
CHARACTER_OCTET_LENGTH  NULL
 
316
NUMERIC_PRECISION       NULL
 
317
NUMERIC_SCALE   NULL
 
318
CHARACTER_SET_NAME      NULL
 
319
COLLATION_NAME  NULL
 
320
DTD_IDENTIFIER  NULL
 
321
ROUTINE_BODY    SQL
 
322
ROUTINE_DEFINITION      SELECT 'db_datadict'
 
323
EXTERNAL_NAME   NULL
 
324
EXTERNAL_LANGUAGE       NULL
 
325
PARAMETER_STYLE SQL
 
326
IS_DETERMINISTIC        NO
 
327
SQL_DATA_ACCESS CONTAINS SQL
 
328
SQL_PATH        NULL
 
329
SECURITY_TYPE   INVOKER
 
330
CREATED <created>
 
331
LAST_ALTERED    <last_altered>
 
332
SQL_MODE        
 
333
ROUTINE_COMMENT 
 
334
DEFINER root@localhost
 
335
CHARACTER_SET_CLIENT    latin1
 
336
COLLATION_CONNECTION    latin1_swedish_ci
 
337
DATABASE_COLLATION      latin1_swedish_ci
 
338
DROP PROCEDURE sp_for_routines;
 
339
DROP FUNCTION function_for_routines;
 
340
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
 
341
SPECIFIC_NAME   ROUTINE_CATALOG ROUTINE_SCHEMA  ROUTINE_NAME    ROUTINE_TYPE    DATA_TYPE       CHARACTER_MAXIMUM_LENGTH        CHARACTER_OCTET_LENGTH  NUMERIC_PRECISION       NUMERIC_SCALE   CHARACTER_SET_NAME      COLLATION_NAME  DTD_IDENTIFIER  ROUTINE_BODY    ROUTINE_DEFINITION      EXTERNAL_NAME   EXTERNAL_LANGUAGE       PARAMETER_STYLE IS_DETERMINISTIC        SQL_DATA_ACCESS SQL_PATH        SECURITY_TYPE   CREATED LAST_ALTERED    SQL_MODE        ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
 
342
CREATE PROCEDURE sp_for_routines()      SELECT 'db_datadict';
 
343
CREATE FUNCTION function_for_routines() RETURNS INT RETURN 0;
 
344
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict'
 
345
ORDER BY routine_name;
 
346
SPECIFIC_NAME   function_for_routines
 
347
ROUTINE_CATALOG NULL
 
348
ROUTINE_SCHEMA  db_datadict
 
349
ROUTINE_NAME    function_for_routines
 
350
ROUTINE_TYPE    FUNCTION
 
351
DATA_TYPE       int
 
352
CHARACTER_MAXIMUM_LENGTH        NULL
 
353
CHARACTER_OCTET_LENGTH  NULL
 
354
NUMERIC_PRECISION       10
 
355
NUMERIC_SCALE   0
 
356
CHARACTER_SET_NAME      NULL
 
357
COLLATION_NAME  NULL
 
358
DTD_IDENTIFIER  int(11)
 
359
ROUTINE_BODY    SQL
 
360
ROUTINE_DEFINITION      RETURN 0
 
361
EXTERNAL_NAME   NULL
 
362
EXTERNAL_LANGUAGE       NULL
 
363
PARAMETER_STYLE SQL
 
364
IS_DETERMINISTIC        NO
 
365
SQL_DATA_ACCESS CONTAINS SQL
 
366
SQL_PATH        NULL
 
367
SECURITY_TYPE   DEFINER
 
368
CREATED <created>
 
369
LAST_ALTERED    <last_altered>
 
370
SQL_MODE        
 
371
ROUTINE_COMMENT 
 
372
DEFINER root@localhost
 
373
CHARACTER_SET_CLIENT    latin1
 
374
COLLATION_CONNECTION    latin1_swedish_ci
 
375
DATABASE_COLLATION      latin1_swedish_ci
 
376
SPECIFIC_NAME   sp_for_routines
 
377
ROUTINE_CATALOG NULL
 
378
ROUTINE_SCHEMA  db_datadict
 
379
ROUTINE_NAME    sp_for_routines
 
380
ROUTINE_TYPE    PROCEDURE
 
381
DATA_TYPE       
 
382
CHARACTER_MAXIMUM_LENGTH        NULL
 
383
CHARACTER_OCTET_LENGTH  NULL
 
384
NUMERIC_PRECISION       NULL
 
385
NUMERIC_SCALE   NULL
 
386
CHARACTER_SET_NAME      NULL
 
387
COLLATION_NAME  NULL
 
388
DTD_IDENTIFIER  NULL
 
389
ROUTINE_BODY    SQL
 
390
ROUTINE_DEFINITION      SELECT 'db_datadict'
 
391
EXTERNAL_NAME   NULL
 
392
EXTERNAL_LANGUAGE       NULL
 
393
PARAMETER_STYLE SQL
 
394
IS_DETERMINISTIC        NO
 
395
SQL_DATA_ACCESS CONTAINS SQL
 
396
SQL_PATH        NULL
 
397
SECURITY_TYPE   DEFINER
 
398
CREATED <created>
 
399
LAST_ALTERED    <last_altered>
 
400
SQL_MODE        
 
401
ROUTINE_COMMENT 
 
402
DEFINER root@localhost
 
403
CHARACTER_SET_CLIENT    latin1
 
404
COLLATION_CONNECTION    latin1_swedish_ci
 
405
DATABASE_COLLATION      latin1_swedish_ci
 
406
use test;
 
407
DROP DATABASE db_datadict;
 
408
SELECT * FROM information_schema.routines WHERE routine_schema = 'db_datadict';
 
409
SPECIFIC_NAME   ROUTINE_CATALOG ROUTINE_SCHEMA  ROUTINE_NAME    ROUTINE_TYPE    DATA_TYPE       CHARACTER_MAXIMUM_LENGTH        CHARACTER_OCTET_LENGTH  NUMERIC_PRECISION       NUMERIC_SCALE   CHARACTER_SET_NAME      COLLATION_NAME  DTD_IDENTIFIER  ROUTINE_BODY    ROUTINE_DEFINITION      EXTERNAL_NAME   EXTERNAL_LANGUAGE       PARAMETER_STYLE IS_DETERMINISTIC        SQL_DATA_ACCESS SQL_PATH        SECURITY_TYPE   CREATED LAST_ALTERED    SQL_MODE        ROUTINE_COMMENT DEFINER CHARACTER_SET_CLIENT    COLLATION_CONNECTION    DATABASE_COLLATION
 
410
#########################################################################
 
411
# 3.2.8.4: INFORMATION_SCHEMA.ROUTINES routine body too big for
 
412
#          ROUTINE_DEFINITION column
 
413
#########################################################################
 
414
DROP DATABASE IF EXISTS db_datadict;
 
415
CREATE DATABASE db_datadict;
 
416
USE db_datadict;
 
417
CREATE TABLE db_datadict.res_6_408004_1
 
418
(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
 
419
ENGINE = <other_engine_type>;
 
420
INSERT INTO db_datadict.res_6_408004_1
 
421
VALUES ('abc', 98765 , 99999999 , 98765, 10);
 
422
CREATE TABLE db_datadict.res_6_408004_2
 
423
(f1 LONGTEXT , f2 MEDIUMINT , f3 LONGBLOB , f4 REAL , f5 YEAR)
 
424
ENGINE = <other_engine_type>;
 
425
INSERT INTO db_datadict.res_6_408004_2
 
426
VALUES ('abc', 98765 , 99999999 , 98765, 10);
 
427
# Checking the max. possible length of (currently) 4 GByte is not
 
428
# in this environment here.
 
429
CREATE PROCEDURE sp_6_408004 ()
 
430
BEGIN
 
431
DECLARE done INTEGER DEFAULt 0;
 
432
DECLARE variable_number_1 LONGTEXT;
 
433
DECLARE variable_number_2 MEDIUMINT;
 
434
DECLARE variable_number_3 LONGBLOB;
 
435
DECLARE variable_number_4 REAL;
 
436
DECLARE variable_number_5 YEAR;
 
437
DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
438
DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
439
DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
440
DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
441
DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
442
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 
443
BEGIN
 
444
OPEN cursor_number_1;
 
445
WHILE done <> 1 DO
 
446
FETCH cursor_number_1
 
447
INTO variable_number_1, variable_number_2, variable_number_3,
 
448
variable_number_4, variable_number_5;
 
449
IF done <> 0 THEN
 
450
INSERT INTO res_6_408004_2
 
451
VALUES (variable_number_1, variable_number_2, variable_number_3,
 
452
variable_number_4, variable_number_5);
 
453
END IF;
 
454
END WHILE;
 
455
BEGIN
 
456
BEGIN
 
457
SET done = 0;
 
458
OPEN cursor_number_2;
 
459
WHILE done <> 1 DO
 
460
FETCH cursor_number_2
 
461
INTO variable_number_1, variable_number_2, variable_number_3,
 
462
variable_number_4, variable_number_5;
 
463
IF done <> 0 THEN
 
464
INSERT INTO res_6_408004_2
 
465
VALUES(variable_number_1, variable_number_2, variable_number_3,
 
466
variable_number_4, variable_number_5);
 
467
END IF;
 
468
END WHILE;
 
469
END;
 
470
SET done = 0;
 
471
OPEN cursor_number_3;
 
472
WHILE done <> 1 DO
 
473
FETCH cursor_number_3
 
474
INTO variable_number_1, variable_number_2, variable_number_3,
 
475
variable_number_4, variable_number_5;
 
476
IF done <> 0 THEN
 
477
INSERT INTO res_6_408004_2
 
478
VALUES(variable_number_1, variable_number_2, variable_number_3,
 
479
variable_number_4, variable_number_5);
 
480
END IF;
 
481
END WHILE;
 
482
END;
 
483
END;
 
484
BEGIN
 
485
SET done = 0;
 
486
OPEN cursor_number_4;
 
487
WHILE done <> 1 DO
 
488
FETCH cursor_number_4
 
489
INTO variable_number_1, variable_number_2, variable_number_3,
 
490
variable_number_4, variable_number_5;
 
491
IF done <> 0 THEN
 
492
INSERT INTO res_6_408004_2
 
493
VALUES (variable_number_1, variable_number_2, variable_number_3,
 
494
variable_number_4, variable_number_5);
 
495
END IF;
 
496
END WHILE;
 
497
END;
 
498
BEGIN
 
499
SET @a='test row';
 
500
SELECT @a;
 
501
SELECT @a;
 
502
SELECT @a;
 
503
END;
 
504
BEGIN
 
505
SET done = 0;
 
506
OPEN cursor_number_5;
 
507
WHILE done <> 1 DO
 
508
FETCH cursor_number_5
 
509
INTO variable_number_1, variable_number_2, variable_number_3,
 
510
variable_number_4, variable_number_5;
 
511
IF done <> 0 THEN
 
512
INSERT INTO res_6_408004_2
 
513
VALUES (variable_number_1, variable_number_2, variable_number_3,
 
514
variable_number_4, variable_number_5);
 
515
END IF;
 
516
END WHILE;
 
517
END;
 
518
BEGIN
 
519
SET @a='test row';
 
520
SELECT @a;
 
521
SELECT @a;
 
522
SELECT @a;
 
523
END;
 
524
END//
 
525
CALL db_datadict.sp_6_408004 ();
 
526
@a
 
527
test row
 
528
@a
 
529
test row
 
530
@a
 
531
test row
 
532
@a
 
533
test row
 
534
@a
 
535
test row
 
536
@a
 
537
test row
 
538
SELECT * FROM db_datadict.res_6_408004_2;
 
539
f1      f2      f3      f4      f5
 
540
abc     98765   99999999        98765   2010
 
541
abc     98765   99999999        98765   2010
 
542
abc     98765   99999999        98765   2010
 
543
abc     98765   99999999        98765   2010
 
544
abc     98765   99999999        98765   2010
 
545
abc     98765   99999999        98765   2010
 
546
SELECT *, LENGTH(routine_definition) FROM information_schema.routines
 
547
WHERE routine_schema = 'db_datadict';
 
548
SPECIFIC_NAME   sp_6_408004
 
549
ROUTINE_CATALOG NULL
 
550
ROUTINE_SCHEMA  db_datadict
 
551
ROUTINE_NAME    sp_6_408004
 
552
ROUTINE_TYPE    PROCEDURE
 
553
DATA_TYPE       
 
554
CHARACTER_MAXIMUM_LENGTH        NULL
 
555
CHARACTER_OCTET_LENGTH  NULL
 
556
NUMERIC_PRECISION       NULL
 
557
NUMERIC_SCALE   NULL
 
558
CHARACTER_SET_NAME      NULL
 
559
COLLATION_NAME  NULL
 
560
DTD_IDENTIFIER  NULL
 
561
ROUTINE_BODY    SQL
 
562
ROUTINE_DEFINITION      BEGIN
 
563
DECLARE done INTEGER DEFAULt 0;
 
564
DECLARE variable_number_1 LONGTEXT;
 
565
DECLARE variable_number_2 MEDIUMINT;
 
566
DECLARE variable_number_3 LONGBLOB;
 
567
DECLARE variable_number_4 REAL;
 
568
DECLARE variable_number_5 YEAR;
 
569
DECLARE cursor_number_1 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
570
DECLARE cursor_number_2 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
571
DECLARE cursor_number_3 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
572
DECLARE cursor_number_4 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
573
DECLARE cursor_number_5 CURSOR FOR SELECT * FROM res_6_408004_1 LIMIT 0, 10;
 
574
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
 
575
BEGIN
 
576
OPEN cursor_number_1;
 
577
WHILE done <> 1 DO
 
578
FETCH cursor_number_1
 
579
INTO variable_number_1, variable_number_2, variable_number_3,
 
580
variable_number_4, variable_number_5;
 
581
IF done <> 0 THEN
 
582
INSERT INTO res_6_408004_2
 
583
VALUES (variable_number_1, variable_number_2, variable_number_3,
 
584
variable_number_4, variable_number_5);
 
585
END IF;
 
586
END WHILE;
 
587
BEGIN
 
588
BEGIN
 
589
SET done = 0;
 
590
OPEN cursor_number_2;
 
591
WHILE done <> 1 DO
 
592
FETCH cursor_number_2
 
593
INTO variable_number_1, variable_number_2, variable_number_3,
 
594
variable_number_4, variable_number_5;
 
595
IF done <> 0 THEN
 
596
INSERT INTO res_6_408004_2
 
597
VALUES(variable_number_1, variable_number_2, variable_number_3,
 
598
variable_number_4, variable_number_5);
 
599
END IF;
 
600
END WHILE;
 
601
END;
 
602
SET done = 0;
 
603
OPEN cursor_number_3;
 
604
WHILE done <> 1 DO
 
605
FETCH cursor_number_3
 
606
INTO variable_number_1, variable_number_2, variable_number_3,
 
607
variable_number_4, variable_number_5;
 
608
IF done <> 0 THEN
 
609
INSERT INTO res_6_408004_2
 
610
VALUES(variable_number_1, variable_number_2, variable_number_3,
 
611
variable_number_4, variable_number_5);
 
612
END IF;
 
613
END WHILE;
 
614
END;
 
615
END;
 
616
BEGIN
 
617
SET done = 0;
 
618
OPEN cursor_number_4;
 
619
WHILE done <> 1 DO
 
620
FETCH cursor_number_4
 
621
INTO variable_number_1, variable_number_2, variable_number_3,
 
622
variable_number_4, variable_number_5;
 
623
IF done <> 0 THEN
 
624
INSERT INTO res_6_408004_2
 
625
VALUES (variable_number_1, variable_number_2, variable_number_3,
 
626
variable_number_4, variable_number_5);
 
627
END IF;
 
628
END WHILE;
 
629
END;
 
630
BEGIN
 
631
SET @a='test row';
 
632
SELECT @a;
 
633
SELECT @a;
 
634
SELECT @a;
 
635
END;
 
636
BEGIN
 
637
SET done = 0;
 
638
OPEN cursor_number_5;
 
639
WHILE done <> 1 DO
 
640
FETCH cursor_number_5
 
641
INTO variable_number_1, variable_number_2, variable_number_3,
 
642
variable_number_4, variable_number_5;
 
643
IF done <> 0 THEN
 
644
INSERT INTO res_6_408004_2
 
645
VALUES (variable_number_1, variable_number_2, variable_number_3,
 
646
variable_number_4, variable_number_5);
 
647
END IF;
 
648
END WHILE;
 
649
END;
 
650
BEGIN
 
651
SET @a='test row';
 
652
SELECT @a;
 
653
SELECT @a;
 
654
SELECT @a;
 
655
END;
 
656
END
 
657
EXTERNAL_NAME   NULL
 
658
EXTERNAL_LANGUAGE       NULL
 
659
PARAMETER_STYLE SQL
 
660
IS_DETERMINISTIC        NO
 
661
SQL_DATA_ACCESS CONTAINS SQL
 
662
SQL_PATH        NULL
 
663
SECURITY_TYPE   DEFINER
 
664
CREATED <created>
 
665
LAST_ALTERED    <last_altered>
 
666
SQL_MODE        
 
667
ROUTINE_COMMENT 
 
668
DEFINER root@localhost
 
669
CHARACTER_SET_CLIENT    latin1
 
670
COLLATION_CONNECTION    latin1_swedish_ci
 
671
DATABASE_COLLATION      latin1_swedish_ci
 
672
LENGTH(routine_definition)      2549
 
673
DROP DATABASE db_datadict;
 
674
########################################################################
 
675
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
 
676
#           DDL on INFORMATION_SCHEMA table are not supported
 
677
########################################################################
 
678
DROP DATABASE IF EXISTS db_datadict;
 
679
CREATE DATABASE db_datadict;
 
680
USE db_datadict;
 
681
CREATE PROCEDURE sp_for_routines() SELECT 'db_datadict';
 
682
USE test;
 
683
INSERT INTO information_schema.routines (routine_name, routine_type )
 
684
VALUES ('p2', 'procedure');
 
685
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
686
UPDATE information_schema.routines SET routine_name = 'p2'
 
687
WHERE routine_body = 'sql';
 
688
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
689
DELETE FROM information_schema.routines ;
 
690
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
691
TRUNCATE information_schema.routines ;
 
692
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
693
CREATE INDEX i7 ON information_schema.routines (routine_name);
 
694
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
695
ALTER TABLE information_schema.routines  ADD f1 INT;
 
696
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
697
ALTER TABLE information_schema.routines  DISCARD TABLESPACE;
 
698
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
699
DROP TABLE information_schema.routines ;
 
700
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
701
ALTER TABLE information_schema.routines RENAME db_datadict.routines;
 
702
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
703
ALTER TABLE information_schema.routines RENAME information_schema.xroutines;
 
704
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
 
705
DROP DATABASE db_datadict;