|
From: <asf...@us...> - 2015-09-02 16:24:33
|
Revision: 62183
http://sourceforge.net/p/firebird/code/62183
Author: asfernandes
Date: 2015-09-02 16:24:31 +0000 (Wed, 02 Sep 2015)
Log Message:
-----------
Improvement CORE-4923 - Add ability to track domains rename in DDL triggers.
Modified Paths:
--------------
firebird/trunk/doc/sql.extensions/README.ddl_triggers.txt
firebird/trunk/src/dsql/DdlNodes.epp
firebird/trunk/src/dsql/DdlNodes.h
firebird/trunk/src/dsql/Nodes.h
firebird/trunk/src/dsql/PackageNodes.epp
firebird/trunk/src/dsql/StmtNodes.cpp
firebird/trunk/src/jrd/Attachment.h
firebird/trunk/src/jrd/SysFunction.cpp
Modified: firebird/trunk/doc/sql.extensions/README.ddl_triggers.txt
===================================================================
--- firebird/trunk/doc/sql.extensions/README.ddl_triggers.txt 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/doc/sql.extensions/README.ddl_triggers.txt 2015-09-02 16:24:31 UTC (rev 62183)
@@ -89,6 +89,9 @@
triggers are fired, AFTER triggers will not be fired.
8) Packaged procedures and triggers do not fire individual {CREATE | ALTER | DROP} {PROCEDURE |
FUNCTION} triggers.
+ 9) ALTER DOMAIN <old name> TO <new name> sets OLD_OBJECT_NAME and NEW_OBJECT_NAME in both BEFORE
+ and AFTER triggers. Note that for this command, OBJECT_NAME will have the old object name
+ in BEFORE triggers and the new object name in AFTER TRIGGERS.
Notes:
1) COMMENT ON, GRANT, REVOKE and ALTER DATABASE do not fire DDL triggers.
@@ -117,6 +120,8 @@
- OBJECT_TYPE: object type (TABLE, VIEW, etc)
- DDL_EVENT: event name (<ddl event item>), where <ddl_event_item> is EVENT_TYPE || ' ' || OBJECT_TYPE
- OBJECT_NAME: metadata object name
+ - OLD_OBJECT_NAME: metadata object name before a rename
+ - NEW_OBJECT_NAME: metadata object name after a rename
- SQL_TEXT: sql statement text
@@ -207,6 +212,8 @@
object_type varchar(25) not null,
ddl_event varchar(25) not null,
object_name varchar(31) not null,
+ old_object_name varchar(31),
+ new_object_name varchar(31),
sql_text blob sub_type text not null,
ok char(1) not null
);
@@ -222,12 +229,14 @@
in autonomous transaction do
begin
insert into ddl_log (id, moment, user_name, event_type, object_type, ddl_event, object_name,
- sql_text, ok)
+ old_object_name, new_object_name, sql_text, ok)
values (next value for ddl_seq, current_timestamp, current_user,
rdb$get_context('DDL_TRIGGER', 'EVENT_TYPE'),
rdb$get_context('DDL_TRIGGER', 'OBJECT_TYPE'),
rdb$get_context('DDL_TRIGGER', 'DDL_EVENT'),
rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME'),
+ rdb$get_context('DDL_TRIGGER', 'OLD_OBJECT_NAME'),
+ rdb$get_context('DDL_TRIGGER', 'NEW_OBJECT_NAME'),
rdb$get_context('DDL_TRIGGER', 'SQL_TEXT'),
'N')
returning id into id;
@@ -277,13 +286,17 @@
n integer
);
+create domain dom1 as integer;
+alter domain dom1 type bigint;
+alter domain dom1 to dom2;
+
commit;
-select id, ddl_event, object_name, sql_text, ok from ddl_log order by id;
+select id, ddl_event, object_name, old_object_name, new_object_name, sql_text, ok from ddl_log order by id;
- ID DDL_EVENT OBJECT_NAME SQL_TEXT OK
-===================== ========================= =============================== ================= ======
- 2 CREATE TABLE T1 80:3 Y
+ ID DDL_EVENT OBJECT_NAME OLD_OBJECT_NAME NEW_OBJECT_NAME SQL_TEXT OK
+===================== ========================= =============================== =============================== =============================== ================= ======
+ 2 CREATE TABLE T1 <null> <null> 80:0 Y
==============================================================================
SQL_TEXT:
recreate table t1 (
@@ -291,7 +304,7 @@
n2 integer
)
==============================================================================
- 3 CREATE TABLE T1 80:2 N
+ 3 CREATE TABLE T1 <null> <null> 80:1 N
==============================================================================
SQL_TEXT:
create table t1 (
@@ -299,18 +312,33 @@
n2 integer
)
==============================================================================
- 4 DROP TABLE T1 80:6 Y
+ 4 DROP TABLE T1 <null> <null> 80:2 Y
==============================================================================
SQL_TEXT:
recreate table t1 (
n integer
)
==============================================================================
- 5 CREATE TABLE T1 80:9 Y
+ 5 CREATE TABLE T1 <null> <null> 80:3 Y
==============================================================================
SQL_TEXT:
recreate table t1 (
n integer
)
==============================================================================
+ 6 CREATE DOMAIN DOM1 <null> <null> 80:4 Y
+==============================================================================
+SQL_TEXT:
+create domain dom1 as integer
+==============================================================================
+ 7 ALTER DOMAIN DOM1 <null> <null> 80:5 Y
+==============================================================================
+SQL_TEXT:
+alter domain dom1 type bigint
+==============================================================================
+ 8 ALTER DOMAIN DOM1 DOM1 DOM2 80:6 Y
+==============================================================================
+SQL_TEXT:
+alter domain dom1 to dom2
+==============================================================================
Modified: firebird/trunk/src/dsql/DdlNodes.epp
===================================================================
--- firebird/trunk/src/dsql/DdlNodes.epp 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/dsql/DdlNodes.epp 2015-09-02 16:24:31 UTC (rev 62183)
@@ -903,7 +903,7 @@
}
void DdlNode::executeDdlTrigger(thread_db* tdbb, jrd_tra* transaction, DdlTriggerWhen when,
- int action, const MetaName& objectName, const string& sqlText)
+ int action, const MetaName& objectName, const MetaName& oldNewObjectName, const string& sqlText)
{
Attachment* const attachment = transaction->tra_attachment;
@@ -918,6 +918,12 @@
context.objectName = objectName;
context.sqlText = sqlText;
+ if (oldNewObjectName.hasData())
+ {
+ context.oldObjectName = when == DTW_BEFORE ? objectName : oldNewObjectName;
+ context.newObjectName = when == DTW_BEFORE ? oldNewObjectName : objectName;
+ }
+
Stack<DdlTriggerContext>::AutoPushPop autoContext(attachment->ddlTriggersContext, context);
AutoSavePoint savePoint(tdbb, transaction);
@@ -927,9 +933,10 @@
}
void DdlNode::executeDdlTrigger(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
- jrd_tra* transaction, DdlTriggerWhen when, int action, const MetaName& objectName)
+ jrd_tra* transaction, DdlTriggerWhen when, int action, const MetaName& objectName,
+ const MetaName& oldNewObjectName)
{
- executeDdlTrigger(tdbb, transaction, when, action, objectName,
+ executeDdlTrigger(tdbb, transaction, when, action, objectName, oldNewObjectName,
*dsqlScratch->getStatement()->getSqlText());
}
@@ -1100,7 +1107,7 @@
charSetFound = true;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_CHARACTER_SET, charSet);
+ DDL_TRIGGER_ALTER_CHARACTER_SET, charSet, NULL);
AutoCacheRequest requestHandle2(tdbb, drq_l_collation, DYN_REQUESTS);
@@ -1133,7 +1140,7 @@
}
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_ALTER_CHARACTER_SET, charSet);
+ DDL_TRIGGER_ALTER_CHARACTER_SET, charSet, NULL);
}
@@ -1628,7 +1635,7 @@
if (package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- (altered ? DDL_TRIGGER_ALTER_FUNCTION : DDL_TRIGGER_CREATE_FUNCTION), name);
+ (altered ? DDL_TRIGGER_ALTER_FUNCTION : DDL_TRIGGER_CREATE_FUNCTION), name, NULL);
}
savePoint.release(); // everything is ok
@@ -1650,7 +1657,7 @@
if (package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_FUNCTION, name);
+ DDL_TRIGGER_CREATE_FUNCTION, name, NULL);
DYN_UTIL_check_unique_name(tdbb, transaction, name, obj_udf);
}
@@ -1748,7 +1755,7 @@
if (!secondPass && runTriggers && package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_FUNCTION, name);
+ DDL_TRIGGER_ALTER_FUNCTION, name, NULL);
}
MODIFY FUN
@@ -2246,7 +2253,8 @@
{
found = true;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_FUNCTION, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_FUNCTION,
+ name, NULL);
if (!FUN.RDB$ENGINE_NAME.NULL || !FUN.RDB$FUNCTION_BLR.NULL)
status_exception::raise(Arg::Gds(isc_dyn_newfc_oldsyntax) << name);
@@ -2274,7 +2282,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_FUNCTION, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_FUNCTION,
+ name, NULL);
+ }
else
{
// msg 41: "Function %s not found"
@@ -2372,7 +2383,10 @@
}
if (package.isEmpty())
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DROP_FUNCTION, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DROP_FUNCTION,
+ name, NULL);
+ }
ERASE FUN;
@@ -2410,7 +2424,10 @@
}
if (found && package.isEmpty())
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_FUNCTION, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_FUNCTION,
+ name, NULL);
+ }
savePoint.release(); // everything is ok
@@ -2582,7 +2599,7 @@
if (package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- (altered ? DDL_TRIGGER_ALTER_PROCEDURE : DDL_TRIGGER_CREATE_PROCEDURE), name);
+ (altered ? DDL_TRIGGER_ALTER_PROCEDURE : DDL_TRIGGER_CREATE_PROCEDURE), name, NULL);
}
savePoint.release(); // everything is ok
@@ -2604,7 +2621,7 @@
if (package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_PROCEDURE, name);
+ DDL_TRIGGER_CREATE_PROCEDURE, name, NULL);
DYN_UTIL_check_unique_name(tdbb, transaction, name, obj_procedure);
}
@@ -2694,7 +2711,7 @@
if (!secondPass && runTriggers && package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_PROCEDURE, name);
+ DDL_TRIGGER_ALTER_PROCEDURE, name, NULL);
}
MODIFY P
@@ -3134,7 +3151,7 @@
if (package.isEmpty())
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_PROCEDURE, name);
+ DDL_TRIGGER_DROP_PROCEDURE, name, NULL);
}
ERASE PRC;
@@ -3173,7 +3190,10 @@
}
if (found && package.isEmpty())
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_PROCEDURE, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_PROCEDURE,
+ name, NULL);
+ }
savePoint.release(); // everything is ok
@@ -3435,9 +3455,13 @@
void CreateAlterTriggerNode::executeCreate(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
jrd_tra* transaction)
{
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_TRIGGER, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_TRIGGER,
+ name, NULL);
+
store(tdbb, dsqlScratch, transaction);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_TRIGGER, name);
+
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_TRIGGER,
+ name, NULL);
}
void CreateAlterTriggerNode::compile(thread_db* /*tdbb*/, DsqlCompilerScratch* dsqlScratch)
@@ -3604,7 +3628,8 @@
break;
}
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DROP_TRIGGER, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DROP_TRIGGER,
+ name, NULL);
relationName = X.RDB$RELATION_NAME;
ERASE X;
@@ -3670,7 +3695,10 @@
}
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_TRIGGER, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_TRIGGER,
+ name, NULL);
+ }
savePoint.release(); // everything is ok
}
@@ -3712,7 +3740,7 @@
AutoSavePoint savePoint(tdbb, transaction);
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_COLLATION, name);
+ DDL_TRIGGER_CREATE_COLLATION, name, NULL);
AutoCacheRequest request(tdbb, drq_s_colls, DYN_REQUESTS);
@@ -3861,7 +3889,7 @@
storePrivileges(tdbb, transaction, name, obj_collation, USAGE_PRIVILEGES);
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_CREATE_COLLATION, name);
+ DDL_TRIGGER_CREATE_COLLATION, name, NULL);
savePoint.release(); // everything is ok
@@ -3937,7 +3965,7 @@
CS.RDB$CHARACTER_SET_ID EQ COLL.RDB$CHARACTER_SET_ID
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_COLLATION, name);
+ DDL_TRIGGER_DROP_COLLATION, name, NULL);
if (COLL.RDB$SYSTEM_FLAG)
status_exception::raise(Arg::Gds(isc_dyn_cannot_del_syscoll));
@@ -4045,7 +4073,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_COLLATION, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_COLLATION,
+ name, NULL);
+ }
else
status_exception::raise(Arg::Gds(isc_dyn_collation_not_found) << Arg::Str(name));
@@ -4111,7 +4142,7 @@
AutoSavePoint savePoint(tdbb, transaction);
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_DOMAIN, nameType->name);
+ DDL_TRIGGER_CREATE_DOMAIN, nameType->name, NULL);
storeGlobalField(tdbb, transaction, nameType->name, type);
@@ -4183,7 +4214,7 @@
}
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_CREATE_DOMAIN, nameType->name);
+ DDL_TRIGGER_CREATE_DOMAIN, nameType->name, NULL);
savePoint.release(); // everything is ok
}
@@ -4655,7 +4686,7 @@
found = true;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_DOMAIN, name);
+ DDL_TRIGGER_ALTER_DOMAIN, name, renameTo);
if (FLD.RDB$SYSTEM_FLAG == fb_sysflag_system)
{
@@ -4905,7 +4936,9 @@
status_exception::raise(Arg::PrivateDyn(89));
}
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_DOMAIN, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_DOMAIN,
+ (renameTo.hasData() ? renameTo : name),
+ (renameTo.hasData() ? name : NULL));
savePoint.release(); // everything is ok
}
@@ -5007,7 +5040,7 @@
WITH X.RDB$FIELD_NAME EQ name.c_str()
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_DOMAIN, name);
+ DDL_TRIGGER_DROP_DOMAIN, name, NULL);
check(tdbb, transaction);
deleteDimensionRecords(tdbb, transaction, name);
@@ -5033,7 +5066,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_DOMAIN, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_DOMAIN,
+ name, NULL);
+ }
else
{
// msg 89: "Domain not found"
@@ -5162,7 +5198,7 @@
const string& userName = attachment->att_user->usr_user_name;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_EXCEPTION, name);
+ DDL_TRIGGER_CREATE_EXCEPTION, name, NULL);
DYN_UTIL_check_unique_name(tdbb, transaction, name, obj_exception);
@@ -5209,7 +5245,8 @@
storePrivileges(tdbb, transaction, name, obj_exception, USAGE_PRIVILEGES);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_EXCEPTION, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_EXCEPTION,
+ name, NULL);
}
bool CreateAlterExceptionNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
@@ -5223,7 +5260,7 @@
WITH X.RDB$EXCEPTION_NAME EQ name.c_str()
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_EXCEPTION, name);
+ DDL_TRIGGER_ALTER_EXCEPTION, name, NULL);
MODIFY X
strcpy(X.RDB$MESSAGE, message.c_str());
@@ -5234,7 +5271,10 @@
END_FOR
if (modified)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_EXCEPTION, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_EXCEPTION,
+ name, NULL);
+ }
return modified;
}
@@ -5273,7 +5313,7 @@
WITH X.RDB$EXCEPTION_NAME EQ name.c_str()
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_EXCEPTION, name);
+ DDL_TRIGGER_DROP_EXCEPTION, name, NULL);
ERASE X;
if (!X.RDB$SECURITY_CLASS.NULL)
@@ -5295,7 +5335,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_EXCEPTION, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_EXCEPTION,
+ name, NULL);
+ }
else if (!silent)
{
// msg 144: "Exception not found"
@@ -5389,7 +5432,8 @@
void CreateAlterSequenceNode::executeCreate(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
jrd_tra* transaction)
{
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_SEQUENCE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_SEQUENCE,
+ name, NULL);
const SINT64 val = value.specified ? value.value : 0;
SLONG initialStep = 1;
@@ -5401,7 +5445,8 @@
}
store(tdbb, transaction, name, fb_sysflag_user, val, initialStep);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_SEQUENCE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_SEQUENCE,
+ name, NULL);
}
bool CreateAlterSequenceNode::executeAlter(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch,
@@ -5425,7 +5470,8 @@
if (forbidden && !tdbb->getAttachment()->isRWGbak())
status_exception::raise(Arg::Gds(isc_dyn_cant_modify_sysobj) << "generator" << Arg::Str(name));
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_SEQUENCE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_SEQUENCE,
+ name, NULL);
fb_assert(restartSpecified && value.specified);
const SINT64 val = value.specified ? value.value : 0;
@@ -5445,7 +5491,8 @@
desc.makeText((USHORT) name.length(), ttype_metadata, (UCHAR*) name.c_str());
DFW_post_work(transaction, dfw_set_generator, &desc, id);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_SEQUENCE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_SEQUENCE,
+ name, NULL);
return true;
}
@@ -5458,7 +5505,8 @@
X IN RDB$GENERATORS
WITH X.RDB$GENERATOR_NAME EQ name.c_str()
{
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_SEQUENCE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_SEQUENCE,
+ name, NULL);
if (X.RDB$SYSTEM_FLAG == fb_sysflag_system)
{
@@ -5493,7 +5541,8 @@
desc.makeText((USHORT) name.length(), ttype_metadata, (UCHAR*) name.c_str());
DFW_post_work(transaction, dfw_set_generator, &desc, id);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_SEQUENCE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_SEQUENCE,
+ name, NULL);
found = true;
}
@@ -5607,7 +5656,7 @@
}
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_SEQUENCE, name);
+ DDL_TRIGGER_DROP_SEQUENCE, name, NULL);
ERASE GEN;
@@ -5630,7 +5679,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_SEQUENCE, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_SEQUENCE,
+ name, NULL);
+ }
else if (!silent)
status_exception::raise(Arg::Gds(isc_gennotdef) << Arg::Str(name));
@@ -7046,7 +7098,8 @@
// run all statements under savepoint control
AutoSavePoint savePoint(tdbb, transaction);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_TABLE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_TABLE,
+ name, NULL);
DYN_UTIL_check_unique_name(tdbb, transaction, name, obj_relation);
@@ -7117,7 +7170,8 @@
dsqlScratch->relation->rel_flags &= ~REL_creating;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_TABLE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_TABLE,
+ name, NULL);
savePoint.release(); // everything is ok
@@ -7200,7 +7254,8 @@
// run all statements under savepoint control
AutoSavePoint savePoint(tdbb, transaction);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_TABLE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_TABLE,
+ name, NULL);
ObjectsArray<Constraint> constraints;
@@ -7410,7 +7465,8 @@
defineConstraint(tdbb, dsqlScratch, transaction, *constraint);
}
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_TABLE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_TABLE,
+ name, NULL);
savePoint.release(); // everything is ok
@@ -7916,7 +7972,7 @@
R IN RDB$RELATIONS
WITH R.RDB$RELATION_NAME EQ name.c_str()
{
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name, NULL);
found = true;
}
END_FOR
@@ -8073,7 +8129,7 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlTriggerAction, name, NULL);
else
{
// msg 61: "Relation not found"
@@ -8144,7 +8200,7 @@
const int ddlTriggerAction = (modifyingView ? DDL_TRIGGER_ALTER_VIEW : DDL_TRIGGER_CREATE_VIEW);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name, NULL);
if (!modifyingView)
DYN_UTIL_check_unique_name(tdbb, transaction, name, obj_relation);
@@ -8670,7 +8726,7 @@
dsqlScratch->resetContextStack();
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlTriggerAction, name, NULL);
savePoint.release(); // everything is ok
@@ -9266,7 +9322,8 @@
// run all statements under savepoint control
AutoSavePoint savePoint(tdbb, transaction);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_INDEX, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_CREATE_INDEX,
+ name, NULL);
CreateIndexNode::Definition definition;
definition.type = isc_dyn_def_idx;
@@ -9299,7 +9356,8 @@
store(tdbb, transaction, name, definition);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_INDEX, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_INDEX,
+ name, NULL);
savePoint.release(); // everything is ok
}
@@ -9343,7 +9401,8 @@
{
found = true;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_INDEX, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_INDEX,
+ name, NULL);
MODIFY IDX
IDX.RDB$INDEX_INACTIVE.NULL = FALSE;
@@ -9353,7 +9412,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_INDEX, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_INDEX,
+ name, NULL);
+ }
else
{
// msg 48: "Index not found"
@@ -9401,7 +9463,8 @@
{
found = true;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_INDEX, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_ALTER_INDEX,
+ name, NULL);
MODIFY IDX
// For V4 index selectivity can be set only to -1.
@@ -9412,7 +9475,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_INDEX, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_ALTER_INDEX,
+ name, NULL);
+ }
else
{
// msg 48: "Index not found"
@@ -9477,7 +9543,7 @@
WITH IDX.RDB$INDEX_NAME EQ name.c_str()
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_INDEX, name);
+ DDL_TRIGGER_DROP_INDEX, name, NULL);
ERASE IDX;
@@ -9492,7 +9558,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_INDEX, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_INDEX,
+ name, NULL);
+ }
else
{
// msg 48: "Index not found"
@@ -9533,7 +9602,10 @@
// run all statements under savepoint control
AutoSavePoint savePoint(tdbb, transaction);
- ///executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DECLARE_FILTER, name);
+ /***
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DECLARE_FILTER,
+ name, NULL);
+ ***/
AutoCacheRequest request(tdbb, drq_s_filters, DYN_REQUESTS);
@@ -9576,7 +9648,10 @@
}
END_STORE
- ///executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DECLARE_FILTER, name);
+ /***
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DECLARE_FILTER,
+ name, NULL);
+ ***/
savePoint.release(); // everything is ok
}
@@ -9765,7 +9840,7 @@
AutoSavePoint savePoint(tdbb, transaction);
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_ROLE, name);
+ DDL_TRIGGER_CREATE_ROLE, name, NULL);
if (name == ownerName)
{
@@ -9804,7 +9879,7 @@
END_STORE
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_CREATE_ROLE, name);
+ DDL_TRIGGER_CREATE_ROLE, name, NULL);
savePoint.release(); // everything is ok
}
@@ -10136,7 +10211,8 @@
case MAP_MOD:
case MAP_RPL:
ddlTriggerAction = DDL_TRIGGER_ALTER_MAPPING;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction,
+ name, NULL);
MODIFY M
if (to)
@@ -10166,7 +10242,8 @@
case MAP_DROP:
ddlTriggerAction = DDL_TRIGGER_DROP_MAPPING;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction,
+ name, NULL);
ERASE M;
break;
@@ -10189,7 +10266,7 @@
break;
ddlTriggerAction = DDL_TRIGGER_CREATE_MAPPING;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlTriggerAction, name, NULL);
STORE(REQUEST_HANDLE request2 TRANSACTION_HANDLE transaction)
M IN RDB$AUTH_MAPPING
@@ -10233,7 +10310,7 @@
fb_assert(ddlTriggerAction > 0);
if (ddlTriggerAction > 0)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlTriggerAction, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlTriggerAction, name, NULL);
DFW_post_work(transaction, dfw_clear_mapping, NULL, 0);
savePoint.release(); // everything is ok
@@ -10273,17 +10350,14 @@
WITH ROL.RDB$ROLE_NAME EQ name.c_str()
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_ROLE, name);
+ DDL_TRIGGER_DROP_ROLE, name, NULL);
-
-
if (ROL.RDB$SYSTEM_FLAG != 0)
{
// msg 284: can not drop system SQL role @1
status_exception::raise(Arg::PrivateDyn(284) << name);
}
-
AutoCacheRequest request2(tdbb, drq_del_role_1, DYN_REQUESTS);
// The first OR clause finds all members of the role.
@@ -10314,7 +10388,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_ROLE, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_ROLE,
+ name, NULL);
+ }
else
{
// msg 155: "Role %s not found"
@@ -10481,12 +10558,14 @@
const int ddlAction = mode == USER_ADD ? DDL_TRIGGER_CREATE_USER : DDL_TRIGGER_ALTER_USER;
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlAction, userData->user.get());
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, ddlAction,
+ userData->user.get(), NULL);
const USHORT id = transaction->getUserManagement()->put(userData);
DFW_post_work(transaction, dfw_user_management, NULL, id);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlAction, userData->user.get());
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, ddlAction,
+ userData->user.get(), NULL);
savePoint.release(); // everything is ok
}
@@ -10530,13 +10609,13 @@
check(&statusWrapper);
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE, DDL_TRIGGER_DROP_USER,
- userData->user.get());
+ userData->user.get(), NULL);
const USHORT id = transaction->getUserManagement()->put(userData);
DFW_post_work(transaction, dfw_user_management, NULL, id);
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_USER,
- userData->user.get());
+ userData->user.get(), NULL);
savePoint.release(); // everything is ok
}
Modified: firebird/trunk/src/dsql/DdlNodes.h
===================================================================
--- firebird/trunk/src/dsql/DdlNodes.h 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/dsql/DdlNodes.h 2015-09-02 16:24:31 UTC (rev 62183)
@@ -641,7 +641,7 @@
if (alter)
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_TRIGGER, name);
+ DDL_TRIGGER_ALTER_TRIGGER, name, NULL);
}
}
@@ -650,7 +650,7 @@
if (alter)
{
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_ALTER_TRIGGER, name);
+ DDL_TRIGGER_ALTER_TRIGGER, name, NULL);
}
}
Modified: firebird/trunk/src/dsql/Nodes.h
===================================================================
--- firebird/trunk/src/dsql/Nodes.h 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/dsql/Nodes.h 2015-09-02 16:24:31 UTC (rev 62183)
@@ -226,7 +226,7 @@
static void executeDdlTrigger(thread_db* tdbb, jrd_tra* transaction,
DdlTriggerWhen when, int action, const Firebird::MetaName& objectName,
- const Firebird::string& sqlText);
+ const Firebird::MetaName& oldNewObjectName, const Firebird::string& sqlText);
protected:
typedef Firebird::Pair<Firebird::Left<Firebird::MetaName, bid> > MetaNameBidPair;
@@ -250,7 +250,8 @@
}
void executeDdlTrigger(thread_db* tdbb, DsqlCompilerScratch* dsqlScratch, jrd_tra* transaction,
- DdlTriggerWhen when, int action, const Firebird::MetaName& objectName);
+ DdlTriggerWhen when, int action, const Firebird::MetaName& objectName,
+ const Firebird::MetaName& oldNewObjectName);
void storeGlobalField(thread_db* tdbb, jrd_tra* transaction, Firebird::MetaName& name,
const TypeClause* field,
const Firebird::string& computedSource = "",
Modified: firebird/trunk/src/dsql/PackageNodes.epp
===================================================================
--- firebird/trunk/src/dsql/PackageNodes.epp 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/dsql/PackageNodes.epp 2015-09-02 16:24:31 UTC (rev 62183)
@@ -494,7 +494,7 @@
const string& userName = attachment->att_user->usr_user_name;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_PACKAGE, name);
+ DDL_TRIGGER_CREATE_PACKAGE, name, NULL);
AutoCacheRequest requestHandle(tdbb, drq_s_pkg, DYN_REQUESTS);
@@ -521,7 +521,8 @@
executeItems(tdbb, dsqlScratch, transaction);
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_PACKAGE, name);
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_CREATE_PACKAGE,
+ name, NULL);
}
@@ -539,7 +540,7 @@
modified = true;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_ALTER_PACKAGE, name);
+ DDL_TRIGGER_ALTER_PACKAGE, name, NULL);
SortedObjectsArray<Signature> existingFuncs(getPool());
SortedObjectsArray<Signature> existingProcs(getPool());
@@ -592,7 +593,7 @@
executeItems(tdbb, dsqlScratch, transaction);
executeDdlTrigger(tdbb, dsqlScratch, transaction,
- DTW_AFTER, DDL_TRIGGER_ALTER_PACKAGE, name);
+ DTW_AFTER, DDL_TRIGGER_ALTER_PACKAGE, name, NULL);
}
return modified;
@@ -659,7 +660,7 @@
found = true;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_PACKAGE, name);
+ DDL_TRIGGER_DROP_PACKAGE, name, NULL);
ERASE PKG;
@@ -715,7 +716,10 @@
END_FOR
if (found)
- executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_PACKAGE, name);
+ {
+ executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER, DDL_TRIGGER_DROP_PACKAGE,
+ name, NULL);
+ }
savePoint.release(); // everything is ok
}
@@ -852,7 +856,7 @@
}
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_CREATE_PACKAGE_BODY, name);
+ DDL_TRIGGER_CREATE_PACKAGE_BODY, name, NULL);
MODIFY PKG
PKG.RDB$VALID_BODY_FLAG.NULL = FALSE;
@@ -1039,7 +1043,7 @@
END_FOR
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_CREATE_PACKAGE_BODY, name);
+ DDL_TRIGGER_CREATE_PACKAGE_BODY, name, NULL);
savePoint.release(); // everything is ok
}
@@ -1084,7 +1088,7 @@
found = true;
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_BEFORE,
- DDL_TRIGGER_DROP_PACKAGE_BODY, name);
+ DDL_TRIGGER_DROP_PACKAGE_BODY, name, NULL);
MODIFY PKG
PKG.RDB$VALID_BODY_FLAG.NULL = TRUE;
@@ -1159,7 +1163,7 @@
END_FOR
executeDdlTrigger(tdbb, dsqlScratch, transaction, DTW_AFTER,
- DDL_TRIGGER_DROP_PACKAGE_BODY, name);
+ DDL_TRIGGER_DROP_PACKAGE_BODY, name, NULL);
savePoint.release(); // everything is ok
}
Modified: firebird/trunk/src/dsql/StmtNodes.cpp
===================================================================
--- firebird/trunk/src/dsql/StmtNodes.cpp 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/dsql/StmtNodes.cpp 2015-09-02 16:24:31 UTC (rev 62183)
@@ -7534,13 +7534,13 @@
jrd_tra* const transaction = request->req_transaction;
DdlNode::executeDdlTrigger(tdbb, transaction, DdlNode::DTW_BEFORE,
- DDL_TRIGGER_ALTER_SEQUENCE, generator.name, *request->getStatement()->sqlText);
+ DDL_TRIGGER_ALTER_SEQUENCE, generator.name, NULL, *request->getStatement()->sqlText);
dsc* const desc = EVL_expr(tdbb, request, value);
DPM_gen_id(tdbb, generator.id, true, MOV_get_int64(desc, 0));
DdlNode::executeDdlTrigger(tdbb, transaction, DdlNode::DTW_AFTER,
- DDL_TRIGGER_ALTER_SEQUENCE, generator.name, *request->getStatement()->sqlText);
+ DDL_TRIGGER_ALTER_SEQUENCE, generator.name, NULL, *request->getStatement()->sqlText);
request->req_operation = jrd_req::req_return;
}
Modified: firebird/trunk/src/jrd/Attachment.h
===================================================================
--- firebird/trunk/src/jrd/Attachment.h 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/jrd/Attachment.h 2015-09-02 16:24:31 UTC (rev 62183)
@@ -99,6 +99,8 @@
: eventType(*getDefaultMemoryPool()),
objectType(*getDefaultMemoryPool()),
objectName(*getDefaultMemoryPool()),
+ oldObjectName(*getDefaultMemoryPool()),
+ newObjectName(*getDefaultMemoryPool()),
sqlText(*getDefaultMemoryPool())
{
}
@@ -106,6 +108,8 @@
Firebird::string eventType;
Firebird::string objectType;
Firebird::MetaName objectName;
+ Firebird::MetaName oldObjectName;
+ Firebird::MetaName newObjectName;
Firebird::string sqlText;
};
Modified: firebird/trunk/src/jrd/SysFunction.cpp
===================================================================
--- firebird/trunk/src/jrd/SysFunction.cpp 2015-09-02 13:02:29 UTC (rev 62182)
+++ firebird/trunk/src/jrd/SysFunction.cpp 2015-09-02 16:24:31 UTC (rev 62183)
@@ -223,6 +223,8 @@
DDL_EVENT_NAME[] = "DDL_EVENT",
EVENT_TYPE_NAME[] = "EVENT_TYPE",
OBJECT_NAME[] = "OBJECT_NAME",
+ OLD_OBJECT_NAME[] = "OLD_OBJECT_NAME",
+ NEW_OBJECT_NAME[] = "NEW_OBJECT_NAME",
OBJECT_TYPE_NAME[] = "OBJECT_TYPE",
SQL_TEXT_NAME[] = "SQL_TEXT";
@@ -2246,6 +2248,22 @@
resultStr = context.objectName.c_str();
resultType = ttype_metadata;
}
+ else if (nameStr == OLD_OBJECT_NAME)
+ {
+ if (context.oldObjectName.isEmpty())
+ return NULL;
+
+ resultStr = context.oldObjectName.c_str();
+ resultType = ttype_metadata;
+ }
+ else if (nameStr == NEW_OBJECT_NAME)
+ {
+ if (context.newObjectName.isEmpty())
+ return NULL;
+
+ resultStr = context.newObjectName.c_str();
+ resultType = ttype_metadata;
+ }
else if (nameStr == SQL_TEXT_NAME)
{
if (context.sqlText.isEmpty())
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|