Skip to content

Commit d42ea21

Browse files
committed
WL#16737 Library Improvements
* ALTER LIBRARY. * LIBRARY Comment. * SHOW LIBRARY STATUS. * ALTER ROUTINE USING list. * Bug#37375233 Warning on missing imports. * Bug#37501823 ALTER LIBRARY in prepared statements. Change-Id: I14e1b456bfc361d8219198955b28a585d647c8de
1 parent 240dd0d commit d42ea21

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+3069
-373
lines changed

client/mysqldump.cc

Lines changed: 51 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2731,6 +2731,39 @@ static void print_blob_as_hex(FILE *output_file, const char *str, ulong len) {
27312731
check_io(output_file);
27322732
}
27332733

2734+
/*
2735+
has_missing_import
2736+
-- Checks if all the libraries imported by a routine are present.
2737+
2738+
A function/procedure that has one or more of the libraries it imports,
2739+
deleted, it cannot be re-created.
2740+
Having such routines in the dump makes it invalid.
2741+
2742+
RETURN
2743+
false All the libraries imported by the routine exists.
2744+
true The routine has missing imports.
2745+
*/
2746+
static bool has_missing_import(const char *schema, const char *name) {
2747+
MYSQL_RES *routine_list_res;
2748+
std::string query{
2749+
std::string{
2750+
"SELECT rl.LIBRARY_SCHEMA, rl.LIBRARY_NAME, rl.ROUTINE_SCHEMA, "
2751+
"rl.ROUTINE_NAME, rl.ROUTINE_TYPE "
2752+
"FROM INFORMATION_SCHEMA.ROUTINE_LIBRARIES rl "
2753+
"LEFT JOIN INFORMATION_SCHEMA.LIBRARIES lib ON "
2754+
"rl.LIBRARY_CATALOG = lib.LIBRARY_CATALOG AND "
2755+
"rl.LIBRARY_SCHEMA = lib.LIBRARY_SCHEMA AND "
2756+
"rl.LIBRARY_NAME = lib.LIBRARY_NAME "
2757+
"WHERE lib.LIBRARY_NAME IS NULL AND rl.ROUTINE_SCHEMA = '"} +
2758+
schema + "' AND rl.ROUTINE_NAME = '" + name + '\''};
2759+
if (mysql_query_with_error_report(mysql, &routine_list_res, query.c_str()))
2760+
return true;
2761+
if (mysql_num_rows(routine_list_res))
2762+
return true; // There are imported libraries that do NOT exist.
2763+
mysql_free_result(routine_list_res);
2764+
return false; // All the libraries that this routine imports, are present.
2765+
}
2766+
27342767
/*
27352768
dump_routines_for_db
27362769
-- retrieves list of routines for a given db, and prints out
@@ -2748,13 +2781,11 @@ static uint dump_routines_for_db(char *db) {
27482781
char query_buff[QUERY_LENGTH];
27492782
const char *routine_type[] = {"FUNCTION", "PROCEDURE"};
27502783
char db_name_buff[NAME_LEN * 2 + 3], name_buff[NAME_LEN * 2 + 3];
2751-
char escaped_name[NAME_LEN * 2 + 3];
2752-
char lib_schema_buff[NAME_LEN * 2 + 3], lib_name_buff[NAME_LEN * 2 + 3];
27532784
char *routine_name;
27542785
int i;
27552786
FILE *sql_file = md_result_file;
2756-
MYSQL_RES *routine_res, *routine_list_res, *import_res, *imported_library_res;
2757-
MYSQL_ROW row, routine_list_row, import_list_row;
2787+
MYSQL_RES *routine_res, *routine_list_res;
2788+
MYSQL_ROW row, routine_list_row;
27582789

27592790
char db_cl_name[MY_CS_NAME_SIZE];
27602791
int db_cl_altered = false;
@@ -2870,65 +2901,25 @@ static uint dump_routines_for_db(char *db) {
28702901

28712902
if (mysql_num_rows(routine_list_res)) {
28722903
while ((routine_list_row = mysql_fetch_row(routine_list_res))) {
2873-
routine_name = quote_name(routine_list_row[1], name_buff, false);
2874-
2875-
/**
2876-
* TODO: this is a temporary fix until Bug#37375233 is properly
2877-
* resolved. For each SP, check if libraries in "USING" clause actually
2878-
* exist. If not, exit with error because such dump would not be
2879-
* restorable. However, with proper fix, simply treat warnings from SHOW
2880-
* CREATE SP as errors here.
2881-
*/
2882-
mysql_real_escape_string_quote(mysql, escaped_name, routine_list_row[1],
2883-
(ulong)strlen(routine_list_row[1]),
2884-
'\'');
2885-
2886-
// 1st step: get all imports for the SP
2887-
snprintf(query_buff, sizeof(query_buff),
2888-
"SELECT LIBRARY_SCHEMA, LIBRARY_NAME FROM "
2889-
"INFORMATION_SCHEMA.ROUTINE_LIBRARIES WHERE "
2890-
"ROUTINE_SCHEMA = '%s' AND ROUTINE_NAME = '%s' AND "
2891-
"ROUTINE_TYPE = '%s'",
2892-
db_name_buff, escaped_name, routine_type[i]);
2893-
if (mysql_query_with_error_report(mysql, &import_res, query_buff))
2904+
mysql_real_escape_string_quote(
2905+
mysql, name_buff, routine_list_row[1],
2906+
static_cast<ulong>(strlen(routine_list_row[1])), '\'');
2907+
2908+
if (has_missing_import(db_name_buff, name_buff)) {
2909+
// Any of the imported libraries does NOT exist.
2910+
print_comment(
2911+
sql_file, true,
2912+
"\n-- One or more of the libraries used by %s.%s routine, do "
2913+
"not exist. \n",
2914+
db_name_buff, name_buff);
2915+
maybe_die(
2916+
EX_MYSQLERR,
2917+
"Routine %s.%s is missing one or more of its imported libraries.",
2918+
db_name_buff, name_buff);
28942919
return 1;
2895-
2896-
// 2nd step: iterate these imports and query I_S.LIBRARIES to check if
2897-
// they exist and if the current user has access to them
2898-
if (mysql_num_rows(import_res)) {
2899-
while ((import_list_row = mysql_fetch_row(import_res))) {
2900-
mysql_real_escape_string_quote(
2901-
mysql, lib_schema_buff, import_list_row[0],
2902-
(ulong)strlen(import_list_row[0]), '\'');
2903-
mysql_real_escape_string_quote(
2904-
mysql, lib_name_buff, import_list_row[1],
2905-
(ulong)strlen(import_list_row[1]), '\'');
2906-
2907-
snprintf(query_buff, sizeof(query_buff),
2908-
"SELECT * FROM "
2909-
"INFORMATION_SCHEMA.LIBRARIES WHERE "
2910-
"LIBRARY_SCHEMA = '%s' AND LIBRARY_NAME = '%s'",
2911-
lib_schema_buff, lib_name_buff);
2912-
2913-
if (mysql_query_with_error_report(mysql, &imported_library_res,
2914-
query_buff))
2915-
return 1;
2916-
2917-
if (mysql_num_rows(imported_library_res) == 0) {
2918-
// imported library does NOT exist
2919-
print_comment(
2920-
sql_file, true,
2921-
"\n-- Library used by %s does not exist: '%s'.'%s'\n",
2922-
escaped_name, lib_schema_buff, lib_name_buff);
2923-
maybe_die(EX_MYSQLERR, "Missing library: %s.%s", lib_schema_buff,
2924-
lib_name_buff);
2925-
}
2926-
mysql_free_result(imported_library_res);
2927-
}
29282920
}
2929-
mysql_free_result(import_res);
2930-
// End of temp code until Bug#37375233 is done.
29312921

2922+
routine_name = quote_name(routine_list_row[1], name_buff, false);
29322923
DBUG_PRINT("info",
29332924
("retrieving CREATE %s for %s", routine_type[i], name_buff));
29342925
snprintf(query_buff, sizeof(query_buff), "SHOW CREATE %s %s",

include/my_sqlcommand.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ enum enum_sql_command {
207207
SQLCOM_CREATE_LIBRARY,
208208
SQLCOM_DROP_LIBRARY,
209209
SQLCOM_SHOW_CREATE_LIBRARY,
210+
SQLCOM_ALTER_LIBRARY,
211+
SQLCOM_SHOW_STATUS_LIBRARY,
210212
/* This should be the last !!! */
211213
SQLCOM_END
212214
};

include/mysql/plugin_audit.h.pp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,8 @@
344344
SQLCOM_CREATE_LIBRARY,
345345
SQLCOM_DROP_LIBRARY,
346346
SQLCOM_SHOW_CREATE_LIBRARY,
347+
SQLCOM_ALTER_LIBRARY,
348+
SQLCOM_SHOW_STATUS_LIBRARY,
347349
SQLCOM_END
348350
};
349351
#include "plugin_audit_message_types.h"

mysql-test/common/rpl/rpl_sp.test

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,17 +488,42 @@ DROP FUNCTION IF EXISTS f1;
488488

489489
/*!90200 CREATE FUNCTION test_function(n INTEGER) RETURNS INTEGER LANGUAGE JAVASCRIPT USING (test_library) AS $$ return test_library.f(n) $$ */;
490490

491+
/*!90200 CREATE FUNCTION function_with_comment(n INTEGER) RETURNS INTEGER LANGUAGE JAVASCRIPT USING (test_library) AS $$ return test_library.f(n) $$ */;
492+
493+
/*!90300 CREATE LIBRARY library_with_comment COMMENT "library comment" LANGUAGE JAVASCRIPT AS $$ export function f(n) { return n } $$ */;
494+
495+
/*!90300 ALTER LIBRARY library_with_comment COMMENT 'library comment - updated' */;
496+
497+
/*!90300 ALTER FUNCTION function_with_comment COMMENT "Updated function comment" USING (library_with_comment AS test_library) */;
498+
499+
/*!90200 CREATE LIBRARY deleted_library LANGUAGE JAVASCRIPT AS $$ export function f(n) { return n } $$ */;
500+
501+
/*!90200 CREATE FUNCTION orphaned_function(n INTEGER) RETURNS INTEGER LANGUAGE JAVASCRIPT USING (deleted_library) AS $$ return deleted_library.f(n) $$ */;
502+
503+
/*!90200 CREATE FUNCTION orphaned_function_modified(n INTEGER) RETURNS INTEGER LANGUAGE JAVASCRIPT USING (library_with_comment) AS $$ return library_with_comment.f(n) $$ */;
504+
505+
/*!90200 DROP LIBRARY deleted_library */;
506+
507+
--error ER_SP_DOES_NOT_EXIST
508+
/*!90300 ALTER FUNCTION orphaned_function_modified USING (deleted_library AS library_with_comment) */;
509+
491510
--echo
492511
--echo ---> Checking on master...
493512

494513
SHOW CREATE PROCEDURE p1;
495514
SHOW CREATE FUNCTION f1;
496515
SHOW CREATE LIBRARY test_library;
497516
SHOW CREATE FUNCTION test_function;
517+
SHOW CREATE LIBRARY library_with_comment;
518+
SHOW CREATE FUNCTION function_with_comment;
519+
SHOW CREATE FUNCTION orphaned_function;
520+
SHOW CREATE FUNCTION orphaned_function_modified;
498521
SELECT * FROM INFORMATION_SCHEMA.ROUTINE_LIBRARIES
499522
ORDER BY ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, LIBRARY_CATALOG, LIBRARY_SCHEMA, LIBRARY_NAME, LIBRARY_VERSION;
500523
--replace_column 6 <created> 7 <modified>
501-
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES;
524+
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES ORDER BY LIBRARY_NAME;
525+
--replace_column 5 <modified> 6 <created>
526+
SHOW LIBRARY STATUS like "library_%";
502527

503528
--echo
504529
--echo ---> Synchronizing slave with master...
@@ -514,10 +539,16 @@ SHOW CREATE PROCEDURE p1;
514539
SHOW CREATE FUNCTION f1;
515540
SHOW CREATE LIBRARY test_library;
516541
SHOW CREATE FUNCTION test_function;
542+
SHOW CREATE LIBRARY library_with_comment;
543+
SHOW CREATE FUNCTION function_with_comment;
544+
SHOW CREATE FUNCTION orphaned_function;
545+
SHOW CREATE FUNCTION orphaned_function_modified;
517546
SELECT * FROM INFORMATION_SCHEMA.ROUTINE_LIBRARIES
518547
ORDER BY ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, LIBRARY_CATALOG, LIBRARY_SCHEMA, LIBRARY_NAME, LIBRARY_VERSION;
519548
--replace_column 6 <created> 7 <modified>
520-
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES;
549+
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES ORDER BY LIBRARY_NAME;
550+
--replace_column 5 <modified> 6 <created>
551+
SHOW LIBRARY STATUS like "library_%";
521552

522553
# Cleanup.
523554

@@ -532,6 +563,10 @@ DROP PROCEDURE p1;
532563
DROP FUNCTION f1;
533564
DROP FUNCTION test_function;
534565
DROP LIBRARY test_library;
566+
DROP FUNCTION function_with_comment;
567+
DROP LIBRARY library_with_comment;
568+
DROP FUNCTION orphaned_function;
569+
DROP FUNCTION orphaned_function_modified;
535570
SELECT * FROM INFORMATION_SCHEMA.ROUTINE_LIBRARIES
536571
ORDER BY ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, LIBRARY_CATALOG, LIBRARY_SCHEMA, LIBRARY_NAME, LIBRARY_VERSION;
537572
--echo # Ensure that drop statement with 'IF EXISTS' is written to binlog, even though the library does not actually exist

mysql-test/r/implicit_commit.result

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,14 @@ CALL db1.test_if_commit();
272272
IMPLICIT COMMIT
273273
NO
274274
#
275+
# SQLCOM_SHOW_STATUS_LIBRARY
276+
#
277+
INSERT INTO db1.trans (a) VALUES (1);
278+
show library status where (1) in (select * from t1);
279+
CALL db1.test_if_commit();
280+
IMPLICIT COMMIT
281+
NO
282+
#
275283
# SQLCOM_SHOW_STATUS_PROC
276284
#
277285
INSERT INTO db1.trans (a) VALUES (1);

mysql-test/r/information_schema_libraries.result

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
USE INFORMATION_SCHEMA;
2020
SHOW CREATE VIEW INFORMATION_SCHEMA.LIBRARIES;
2121
View Create View character_set_client collation_connection
22-
LIBRARIES CREATE ALGORITHM=UNDEFINED DEFINER=`mysql.infoschema`@`localhost` SQL SECURITY DEFINER VIEW `LIBRARIES` AS select `cat`.`name` AS `LIBRARY_CATALOG`,`sch`.`name` AS `LIBRARY_SCHEMA`,`rtn`.`name` AS `LIBRARY_NAME`,if(can_access_routine(`sch`.`name`,`rtn`.`name`,`rtn`.`type`,`rtn`.`definer`,true),`rtn`.`definition_utf8`,NULL) AS `LIBRARY_DEFINITION`,`rtn`.`external_language` AS `LANGUAGE`,`rtn`.`created` AS `CREATED`,`rtn`.`last_altered` AS `LAST_ALTERED`,`rtn`.`sql_mode` AS `SQL_MODE`,`rtn`.`definer` AS `CREATOR` from ((`mysql`.`routines` `rtn` join `mysql`.`schemata` `sch` on((`rtn`.`schema_id` = `sch`.`id`))) join `mysql`.`catalogs` `cat` on((`cat`.`id` = `sch`.`catalog_id`))) where ((0 <> can_access_routine(`sch`.`name`,`rtn`.`name`,`rtn`.`type`,`rtn`.`definer`,false)) and (`rtn`.`type` = 'LIBRARY')) utf8mb3 utf8mb3_general_ci
22+
LIBRARIES CREATE ALGORITHM=UNDEFINED DEFINER=`mysql.infoschema`@`localhost` SQL SECURITY DEFINER VIEW `LIBRARIES` AS select `cat`.`name` AS `LIBRARY_CATALOG`,`sch`.`name` AS `LIBRARY_SCHEMA`,`rtn`.`name` AS `LIBRARY_NAME`,if(can_access_routine(`sch`.`name`,`rtn`.`name`,`rtn`.`type`,`rtn`.`definer`,true),`rtn`.`definition_utf8`,NULL) AS `LIBRARY_DEFINITION`,`rtn`.`external_language` AS `LANGUAGE`,`rtn`.`created` AS `CREATED`,`rtn`.`last_altered` AS `LAST_ALTERED`,`rtn`.`sql_mode` AS `SQL_MODE`,`rtn`.`comment` AS `LIBRARY_COMMENT`,`rtn`.`definer` AS `CREATOR` from ((`mysql`.`routines` `rtn` join `mysql`.`schemata` `sch` on((`rtn`.`schema_id` = `sch`.`id`))) join `mysql`.`catalogs` `cat` on((`cat`.`id` = `sch`.`catalog_id`))) where ((0 <> can_access_routine(`sch`.`name`,`rtn`.`name`,`rtn`.`type`,`rtn`.`definer`,false)) and (`rtn`.`type` = 'LIBRARY')) utf8mb3 utf8mb3_general_ci
2323
SELECT * FROM information_schema.columns
2424
WHERE table_schema = 'information_schema'
2525
AND table_name = 'LIBRARIES'
@@ -33,7 +33,8 @@ def information_schema LIBRARIES LANGUAGE 5 SQL NO varchar 64 192 NULL NULL NULL
3333
def information_schema LIBRARIES CREATED 6 NULL NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp select NULL
3434
def information_schema LIBRARIES LAST_ALTERED 7 NULL NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp select NULL
3535
def information_schema LIBRARIES SQL_MODE 8 NULL NO set 520 1560 NULL NULL NULL utf8mb3 utf8mb3_bin set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','NOT_USED_9','NOT_USED_10','NOT_USED_11','NOT_USED_12','NOT_USED_13','NOT_USED_14','NOT_USED_15','NOT_USED_16','NOT_USED_17','NOT_USED_18','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','ALLOW_INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NOT_USED_29','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','TIME_TRUNCATE_FRACTIONAL') select NULL
36-
def information_schema LIBRARIES CREATOR 9 NULL NO varchar 288 864 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(288) select NULL
36+
def information_schema LIBRARIES LIBRARY_COMMENT 9 NULL NO text 65535 65535 NULL NULL NULL utf8mb3 utf8mb3_bin text select NULL
37+
def information_schema LIBRARIES CREATOR 10 NULL NO varchar 288 864 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(288) select NULL
3738
DESCRIBE INFORMATION_SCHEMA.LIBRARIES;
3839
Field Type Null Key Default Extra
3940
LIBRARY_CATALOG varchar(64) NO NULL
@@ -44,6 +45,7 @@ LANGUAGE varchar(64) NO SQL
4445
CREATED timestamp NO NULL
4546
LAST_ALTERED timestamp NO NULL
4647
SQL_MODE set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','NOT_USED_9','NOT_USED_10','NOT_USED_11','NOT_USED_12','NOT_USED_13','NOT_USED_14','NOT_USED_15','NOT_USED_16','NOT_USED_17','NOT_USED_18','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','ALLOW_INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NOT_USED_29','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','TIME_TRUNCATE_FRACTIONAL') NO NULL
48+
LIBRARY_COMMENT text NO NULL
4749
CREATOR varchar(288) NO NULL
4850
###############################################################################
4951
# Testcase libraries.2: Successful library CREATE will populate
@@ -66,9 +68,9 @@ END;
6668
# must show only the library, not the procedure nor the function.
6769
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES
6870
WHERE LIBRARY_SCHEMA = 'i_s_libraries_test';
69-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
71+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
7072
def i_s_libraries_test test_2
71-
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
73+
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
7274
# must show only the procedures and routines, not the library.
7375
SELECT ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES
7476
WHERE ROUTINE_SCHEMA = 'i_s_libraries_test' ORDER BY ROUTINE_TYPE, ROUTINE_NAME;
@@ -88,9 +90,9 @@ END;
8890
# must show only the library
8991
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES
9092
WHERE LIBRARY_SCHEMA = 'i_s_libraries_test';
91-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
93+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
9294
def i_s_libraries_test test_2
93-
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
95+
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
9496
# must show only the procedures and routines.
9597
SELECT ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES
9698
WHERE ROUTINE_SCHEMA = 'i_s_libraries_test' ORDER BY ROUTINE_TYPE, ROUTINE_NAME;
@@ -102,9 +104,9 @@ DROP FUNCTION test_2;
102104
DROP PROCEDURE test_2;
103105
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES
104106
WHERE LIBRARY_SCHEMA = 'i_s_libraries_test';
105-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
107+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
106108
def i_s_libraries_test test_2
107-
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
109+
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
108110
# must be empty.
109111
SELECT ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES
110112
WHERE ROUTINE_SCHEMA = 'i_s_libraries_test' ORDER BY ROUTINE_TYPE, ROUTINE_NAME;
@@ -130,7 +132,7 @@ return n
130132
$$' at line 1
131133
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES
132134
WHERE LIBRARY_SCHEMA = 'i_s_libraries_test';
133-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
135+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
134136
###############################################################################
135137
# Testcase libraries.4: DROP LIBRARY - Verify DROP of a library
136138
# removes I_S.LIBRARIES data for that
@@ -146,16 +148,16 @@ Warnings:
146148
Warning 6001 Language component: Not available.
147149
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES
148150
WHERE LIBRARY_SCHEMA = 'i_s_libraries_test';
149-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
151+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
150152
def i_s_libraries_test test_library_4
151-
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
153+
export function f(n) { return n } JAVASCRIPT <created> <modified> ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost
152154
DROP LIBRARY test_library_4;
153155
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES
154156
WHERE LIBRARY_SCHEMA = 'i_s_libraries_test';
155-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
157+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
156158
# final clean up
157159
DROP DATABASE i_s_libraries_test;
158160
USE test;
159161
SELECT * FROM INFORMATION_SCHEMA.LIBRARIES;
160-
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE CREATOR
162+
LIBRARY_CATALOG LIBRARY_SCHEMA LIBRARY_NAME LIBRARY_DEFINITION LANGUAGE CREATED LAST_ALTERED SQL_MODE LIBRARY_COMMENT CREATOR
161163
# End of INFORMATION_SCHEMA.LIBRARIES tests

0 commit comments

Comments
 (0)