|
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.
|