From: <asf...@us...> - 2014-03-26 16:56:01
|
Revision: 59321 http://sourceforge.net/p/firebird/code/59321 Author: asfernandes Date: 2014-03-26 16:55:57 +0000 (Wed, 26 Mar 2014) Log Message: ----------- Fixed CORE-4373 - Duplicate names in package are not checked. Modified Paths: -------------- firebird/trunk/lang_helpers/gds_codes.ftn firebird/trunk/lang_helpers/gds_codes.pas firebird/trunk/src/dsql/PackageNodes.epp firebird/trunk/src/include/gen/codetext.h firebird/trunk/src/include/gen/iberror.h firebird/trunk/src/include/gen/msgs.h firebird/trunk/src/include/gen/sql_code.h firebird/trunk/src/include/gen/sql_state.h firebird/trunk/src/msgs/facilities2.sql firebird/trunk/src/msgs/messages2.sql firebird/trunk/src/msgs/system_errors2.sql Modified: firebird/trunk/lang_helpers/gds_codes.ftn =================================================================== --- firebird/trunk/lang_helpers/gds_codes.ftn 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/lang_helpers/gds_codes.ftn 2014-03-26 16:55:57 UTC (rev 59321) @@ -1814,6 +1814,8 @@ PARAMETER (GDS__dyn_domain_used_function = 336068890) INTEGER*4 GDS__dyn_alter_user_no_clause PARAMETER (GDS__dyn_alter_user_no_clause = 336068891) + INTEGER*4 GDS__dyn_duplicate_package_item + PARAMETER (GDS__dyn_duplicate_package_item = 336068894) INTEGER*4 GDS__gbak_unknown_switch PARAMETER (GDS__gbak_unknown_switch = 336330753) INTEGER*4 GDS__gbak_page_size_missing Modified: firebird/trunk/lang_helpers/gds_codes.pas =================================================================== --- firebird/trunk/lang_helpers/gds_codes.pas 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/lang_helpers/gds_codes.pas 2014-03-26 16:55:57 UTC (rev 59321) @@ -914,6 +914,7 @@ gds_dyn_coll_used_function = 336068889; gds_dyn_domain_used_function = 336068890; gds_dyn_alter_user_no_clause = 336068891; + gds_dyn_duplicate_package_item = 336068894; gds_gbak_unknown_switch = 336330753; gds_gbak_page_size_missing = 336330754; gds_gbak_page_size_toobig = 336330755; Modified: firebird/trunk/src/dsql/PackageNodes.epp =================================================================== --- firebird/trunk/src/dsql/PackageNodes.epp 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/dsql/PackageNodes.epp 2014-03-26 16:55:57 UTC (rev 59321) @@ -415,7 +415,17 @@ case CreateAlterPackageNode::Item::FUNCTION: { CreateAlterFunctionNode* const fun = (*items)[i].function; + + if (functionNames.exist(fun->name)) + { + status_exception::raise( + Arg::Gds(isc_no_meta_update) << + Arg::Gds(isc_dyn_duplicate_package_item) << + Arg::Str("FUNCTION") << Arg::Str(fun->name)); + } + functionNames.add(fun->name); + fun->alter = true; fun->package = name; fun->dsqlPass(itemScratch); @@ -425,7 +435,17 @@ case CreateAlterPackageNode::Item::PROCEDURE: { CreateAlterProcedureNode* const proc = (*items)[i].procedure; + + if (procedureNames.exist(proc->name)) + { + status_exception::raise( + Arg::Gds(isc_no_meta_update) << + Arg::Gds(isc_dyn_duplicate_package_item) << + Arg::Str("PROCEDURE") << Arg::Str(proc->name)); + } + procedureNames.add(proc->name); + proc->alter = true; proc->package = name; proc->dsqlPass(itemScratch); @@ -745,6 +765,8 @@ // process declaredItems and items Array<CreateAlterPackageNode::Item>* arrays[] = {declaredItems, items}; + SortedArray<MetaName> functionNames[FB_NELEM(arrays)]; + SortedArray<MetaName> procedureNames[FB_NELEM(arrays)]; for (unsigned i = 0; i < FB_NELEM(arrays); ++i) { @@ -768,6 +790,17 @@ case CreateAlterPackageNode::Item::FUNCTION: { CreateAlterFunctionNode* const fun = (*arrays[i])[j].function; + + if (functionNames[i].exist(fun->name)) + { + status_exception::raise( + Arg::Gds(isc_no_meta_update) << + Arg::Gds(isc_dyn_duplicate_package_item) << + Arg::Str("FUNCTION") << Arg::Str(fun->name)); + } + + functionNames[i].add(fun->name); + fun->package = name; fun->create = true; if (arrays[i] == items) @@ -779,6 +812,17 @@ case CreateAlterPackageNode::Item::PROCEDURE: { CreateAlterProcedureNode* const proc = (*arrays[i])[j].procedure; + + if (procedureNames[i].exist(proc->name)) + { + status_exception::raise( + Arg::Gds(isc_no_meta_update) << + Arg::Gds(isc_dyn_duplicate_package_item) << + Arg::Str("PROCEDURE") << Arg::Str(proc->name)); + } + + procedureNames[i].add(proc->name); + proc->package = name; proc->create = true; if (arrays[i] == items) Modified: firebird/trunk/src/include/gen/codetext.h =================================================================== --- firebird/trunk/src/include/gen/codetext.h 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/include/gen/codetext.h 2014-03-26 16:55:57 UTC (rev 59321) @@ -903,6 +903,7 @@ {"dyn_coll_used_function", 336068889}, {"dyn_domain_used_function", 336068890}, {"dyn_alter_user_no_clause", 336068891}, + {"dyn_duplicate_package_item", 336068894}, {"gbak_unknown_switch", 336330753}, {"gbak_page_size_missing", 336330754}, {"gbak_page_size_toobig", 336330755}, Modified: firebird/trunk/src/include/gen/iberror.h =================================================================== --- firebird/trunk/src/include/gen/iberror.h 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/include/gen/iberror.h 2014-03-26 16:55:57 UTC (rev 59321) @@ -937,6 +937,7 @@ const ISC_STATUS isc_dyn_coll_used_function = 336068889L; const ISC_STATUS isc_dyn_domain_used_function = 336068890L; const ISC_STATUS isc_dyn_alter_user_no_clause = 336068891L; +const ISC_STATUS isc_dyn_duplicate_package_item = 336068894L; const ISC_STATUS isc_gbak_unknown_switch = 336330753L; const ISC_STATUS isc_gbak_page_size_missing = 336330754L; const ISC_STATUS isc_gbak_page_size_toobig = 336330755L; @@ -1253,7 +1254,7 @@ const ISC_STATUS isc_trace_switch_param_miss = 337182758L; const ISC_STATUS isc_trace_param_act_notcompat = 337182759L; const ISC_STATUS isc_trace_mandatory_switch_miss = 337182760L; -const ISC_STATUS isc_err_max = 1197; +const ISC_STATUS isc_err_max = 1198; #else /* c definitions */ @@ -2160,6 +2161,7 @@ #define isc_dyn_coll_used_function 336068889L #define isc_dyn_domain_used_function 336068890L #define isc_dyn_alter_user_no_clause 336068891L +#define isc_dyn_duplicate_package_item 336068894L #define isc_gbak_unknown_switch 336330753L #define isc_gbak_page_size_missing 336330754L #define isc_gbak_page_size_toobig 336330755L @@ -2476,7 +2478,7 @@ #define isc_trace_switch_param_miss 337182758L #define isc_trace_param_act_notcompat 337182759L #define isc_trace_mandatory_switch_miss 337182760L -#define isc_err_max 1197 +#define isc_err_max 1198 #endif Modified: firebird/trunk/src/include/gen/msgs.h =================================================================== --- firebird/trunk/src/include/gen/msgs.h 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/include/gen/msgs.h 2014-03-26 16:55:57 UTC (rev 59321) @@ -906,6 +906,7 @@ {336068889, "Collation @1 is used in function @2 (parameter name @3) and cannot be dropped"}, /* dyn_coll_used_function */ {336068890, "Domain @1 is used in function @2 (parameter name @3) and cannot be dropped"}, /* dyn_domain_used_function */ {336068891, "ALTER USER requires at least one clause to be specified"}, /* dyn_alter_user_no_clause */ + {336068894, "Duplicate @1 @2"}, /* dyn_duplicate_package_item */ {336330753, "found unknown switch"}, /* gbak_unknown_switch */ {336330754, "page size parameter missing"}, /* gbak_page_size_missing */ {336330755, "Page size specified (@1) greater than limit (16384 bytes)"}, /* gbak_page_size_toobig */ Modified: firebird/trunk/src/include/gen/sql_code.h =================================================================== --- firebird/trunk/src/include/gen/sql_code.h 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/include/gen/sql_code.h 2014-03-26 16:55:57 UTC (rev 59321) @@ -902,6 +902,7 @@ {336068889, -901}, /* 281 dyn_coll_used_function */ {336068890, -901}, /* 282 dyn_domain_used_function */ {336068891, -901}, /* 283 dyn_alter_user_no_clause */ + {336068894, -901}, /* 286 dyn_duplicate_package_item */ {336330753, -901}, /* 1 gbak_unknown_switch */ {336330754, -901}, /* 2 gbak_page_size_missing */ {336330755, -901}, /* 3 gbak_page_size_toobig */ Modified: firebird/trunk/src/include/gen/sql_state.h =================================================================== --- firebird/trunk/src/include/gen/sql_state.h 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/include/gen/sql_state.h 2014-03-26 16:55:57 UTC (rev 59321) @@ -902,6 +902,7 @@ {336068889, "HY000"}, // 281 dyn_coll_used_function {336068890, "HY000"}, // 282 dyn_domain_used_function {336068891, "42000"}, // 283 dyn_alter_user_no_clause + {336068894, "42000"}, // 286 dyn_duplicate_package_item {336330753, "00000"}, // 1 gbak_unknown_switch {336330754, "00000"}, // 2 gbak_page_size_missing {336330755, "00000"}, // 3 gbak_page_size_toobig Modified: firebird/trunk/src/msgs/facilities2.sql =================================================================== --- firebird/trunk/src/msgs/facilities2.sql 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/msgs/facilities2.sql 2014-03-26 16:55:57 UTC (rev 59321) @@ -6,7 +6,7 @@ ('2013-11-13 15:59:10', 'GFIX', 3, 122) ('1996-11-07 13:39:40', 'GPRE', 4, 1) ('2012-08-27 21:26:00', 'DSQL', 7, 33) -('2013-09-05 12:40:00', 'DYN', 8, 286) +('2014-03-26 12:27:00', 'DYN', 8, 287) ('1996-11-07 13:39:40', 'INSTALL', 10, 1) ('1996-11-07 13:38:41', 'TEST', 11, 4) ('2014-03-03 19:17:14', 'GBAK', 12, 353) Modified: firebird/trunk/src/msgs/messages2.sql =================================================================== --- firebird/trunk/src/msgs/messages2.sql 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/msgs/messages2.sql 2014-03-26 16:55:57 UTC (rev 59321) @@ -1907,6 +1907,7 @@ ('dyn_alter_user_no_clause', 'CreateAlterUserNode', 'DdlNodes.epp', NULL, 8, 283, NULL, 'ALTER USER requires at least one clause to be specified', NULL, NULL); (NULL, 'DYN_delete_role', 'dyn_del.epp', NULL, 8, 284, NULL, 'Cannot delete system SQL role @1', NULL, NULL); (NULL, 'DdlNodes.epp', 'AlterRelationNode::modifyField', NULL, 8, 285, NULL, 'Column @1 is not an identity column', NULL, NULL); +('dyn_duplicate_package_item', NULL, 'PackageNodes.epp', NULL, 8, 286, NULL, 'Duplicate @1 @2', NULL, NULL); COMMIT WORK; -- TEST (NULL, 'main', 'test.c', NULL, 11, 0, NULL, 'This is a modified text message', NULL, NULL); Modified: firebird/trunk/src/msgs/system_errors2.sql =================================================================== --- firebird/trunk/src/msgs/system_errors2.sql 2014-03-26 16:55:21 UTC (rev 59320) +++ firebird/trunk/src/msgs/system_errors2.sql 2014-03-26 16:55:57 UTC (rev 59321) @@ -891,6 +891,7 @@ (-901, 'HY', '000', 8, 281, 'dyn_coll_used_function', NULL, NULL) (-901, 'HY', '000', 8, 282, 'dyn_domain_used_function', NULL, NULL) (-901, '42', '000', 8, 283, 'dyn_alter_user_no_clause', NULL, NULL) +(-901, '42', '000', 8, 286, 'dyn_duplicate_package_item', NULL, NULL) -- GBAK (-901, '00', '000', 12, 1, 'gbak_unknown_switch', NULL, NULL) (-901, '00', '000', 12, 2, 'gbak_page_size_missing', NULL, NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |