DB2 - Problem description
| Problem IC62112 | Status: Closed |
ADMIN_COPY_SCHEMA() MAY FAIL TO COPY SOME FUNCTIONS THAT DEPEND ON PROCEDURES | |
| product: | |
DB2 FOR LUW / DB2FORLUW / 970 - DB2 | |
| Problem description: | |
ADMIN_COPY_SCHEMA() may fail to copy some functions that depend
on procedures:
Customer's repro script before calling ADMIN_COPY_SCHEMA():
set current schema example@
set current path example@
CREATE TABLE TRADE_ENTITY_PROPERTY ("TRADE_ENTITY_ID" BIGINT
NOTNULL, "NAME" VARCHAR(100) NOT NULL,
"VALUE" VARCHAR(200) NOT NULL )
@
CREATE PROCEDURE GET_PROP (IN ID BIGINT, IN PNAME VARCHAR(100)
,OUT out_val VARCHAR(100))LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
BEGINDECLARE c1 CURSOR FOR select tep.value from
trade_entity_property tep where tep.TRADE_ENTITY_ID=ID and
tep.name=PNAME;DECLARE EXIT HANDLER FOR NOT FOUND SET out_val =
NULL;OPEN c1;
set out_val = null;
FETCH c1 INTO out_val;
CLOSE c1;
RETURN;
END
@
CREATE FUNCTION PROP (ID BIGINT, PNAME VARCHAR(100)) RETURNS
VARCHAR(100)
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTIONBEGIN ATOMICDECLARE out_val VARCHAR(100);CALL
GET_PROP(ID, PNAME, out_val);
RETURN out_val;
END
@
CREATE FUNCTION PROPATTR (ID BIGINT, PNAME VARCHAR(100))
RETURNSVARCHAR(100)
LANGUAGE SQL
READS SQL DATANO EXTERNAL ACTIONBEGIN ATOMICDECLARE out_val
VARCHAR(100);
CALL GET_PROP(ID, PNAME, out_val);
IF out_val IS NOT NULL THEN
set out_val = PNAME || '="' || out_val || '" ';ELSE set
out_val = '';END IF;RETURN out_val;
END
@
========
Both of the functions PROP and PROPATTR depend on the procedure
GET_PROP. When customer run ADMIN_COPY_SCHEMA(), the
functions PROP and PROPATTR are not copied to the new schema,
but they should be.
Command:
$ db2 "call SYSPROC.ADMIN_COPY_SCHEMA('EXAMPLE', 'CLONE',
'DDL','MSDB2', NULL, NULL, 'MSDB2', 'CLONE_SCHEMA_ERRORS')"
Value of output parameters
--------------------------
Parameter Name : ERRORTABSCHEMA
Parameter Value : MSDB2
Parameter Name : ERRORTABNAME
Parameter Value : CLONE_SCHEMA_ERRORS
Return Status = 0
The
table has the following error message logged in it:
[IBM][CLI Driver][DB2/LINUX] SQL0440N No authorized routine
named "GET_PROP" of type "PROCEDURE" having compatible
argumentswas foun
d. LINE NUMBER=3. SQLSTATE=42884
The TRADE_ENTITY_PROPERTY table was copied
successfully (but not the functions)
:
Table/View Schema Type
Creation time
------------------------------- --------------- -----
--------------------------
TRADE_ENTITY_PROPERTY CLONE T
2009-06-10-08.43.39.934874
TRADE_ENTITY_PROPERTY EXAMPLE T
2009-06-10-08.41.24.979527
CLONE_SCHEMA_ERRORS MSDB2 T
2009-06-10-08.43.36.378247 | |
| Problem Summary: | |
****************************************************************
* USERS AFFECTED: *
* ALL *
****************************************************************
* PROBLEM DESCRIPTION: *
* ADMIN_COPY_SCHEMA() may fail to copy some functions that *
* depend *
* on procedures: *
* *
* *
* *
* Customer's repro script before calling ADMIN_COPY_SCHEMA(): *
* *
* *
* *
* set current schema example@ *
* *
* set current path example@ *
* *
* *
* *
* CREATE TABLE TRADE_ENTITY_PROPERTY ("TRADE_ENTITY_ID" BIGINT *
* *
* NOTNULL, "NAME" VARCHAR(100) NOT NULL, *
* *
* "VALUE" VARCHAR(200) NOT NULL ) *
* *
* @ *
* *
* *
* *
* CREATE PROCEDURE GET_PROP (IN ID BIGINT, IN PNAME *
* VARCHAR(100) *
* ,OUT out_val VARCHAR(100))LANGUAGE SQL *
* *
* READS SQL DATA *
* *
* NO EXTERNAL ACTION *
* *
* BEGINDECLARE c1 CURSOR FOR select tep.value from *
* *
* trade_entity_property tep where tep.TRADE_ENTITY_ID=ID and *
* *
* tep.name=PNAME;DECLARE EXIT HANDLER FOR NOT FOUND SET *
* out_val = *
* NULL;OPEN c1; *
* *
* set out_val = null; *
* *
* FETCH c1 INTO out_val; *
* *
* CLOSE c1; *
* *
* RETURN; *
* *
* END *
* *
* @ *
* *
* *
* *
* CREATE FUNCTION PROP (ID BIGINT, PNAME VARCHAR(100)) RETURNS *
* *
* VARCHAR(100) *
* *
* LANGUAGE SQL *
* *
* READS SQL DATA *
* *
* NO EXTERNAL ACTIONBEGIN ATOMICDECLARE out_val *
* VARCHAR(100);CALL *
* GET_PROP(ID, PNAME, out_val); *
* *
* RETURN out_val; *
* *
* END *
* *
* @ *
* *
* *
* *
* CREATE FUNCTION PROPATTR (ID BIGINT, PNAME VARCHAR(100)) *
* *
* RETURNSVARCHAR(100) *
* *
* LANGUAGE SQL *
* *
* READS SQL DATANO EXTERNAL ACTIONBEGIN ATOMICDECLARE *
* out_val *
* VARCHAR(100); *
* *
* CALL GET_PROP(ID, PNAME, out_val); *
* *
* IF out_val IS NOT NULL THEN *
* *
* set out_val = PNAME || '="' || out_val || '" ';ELSE *
* set *
* out_val = '';END IF;RETURN out_val; *
* *
* END *
* *
* @ *
* *
* *
* *
* ======== *
* *
* *
* *
* Both of the functions PROP and PROPATTR depend on the *
* procedure *
* GET_PROP. When customer run ADMIN_COPY_SCHEMA(), the *
* *
* functions PROP and PROPATTR are not copied to the new *
* schema, *
* but they should be. *
* *
* *
* *
* Command: *
* *
* $ db2 "call SYSPROC.ADMIN_COPY_SCHEMA('EXAMPLE', 'CLONE', *
* *
* 'DDL','MSDB2', NULL, NULL, 'MSDB2', 'CLONE_SCHEMA_ERRORS')" *
* *
* *
* *
* Value of output parameters *
* *
* -------------------------- *
* *
* Parameter Name : ERRORTABSCHEMA *
* *
* Parameter Value : MSDB2 *
* *
* *
* *
* Parameter Name : ERRORTABNAME *
* *
* Parameter Value : CLONE_SCHEMA_ERRORS *
* *
* *
* *
* Return Status = 0 *
* *
* The *
* *
* table has the following error message logged in it: *
* *
* [IBM][CLI Driver][DB2/LINUX] SQL0440N No authorized routine *
* *
* named "GET_PROP" of type "PROCEDURE" having compatible *
* *
* argumentswas foun *
* *
* d. LINE NUMBER=3. SQLSTATE=42884 *
* *
* *
* *
* The TRADE_ENTITY_PROPERTY table was copied *
* *
* successfully (but not the functions) *
* *
* : *
* *
* Table/View Schema Type *
* *
* Creation time *
* *
* ------------------------------- --------------- ----- *
* *
* -------------------------- *
* *
* TRADE_ENTITY_PROPERTY CLONE T *
* *
* 2009-06-10-08.43.39.934874 *
* *
* TRADE_ENTITY_PROPERTY EXAMPLE T *
* *
* 2009-06-10-08.41.24.979527 *
* *
* CLONE_SCHEMA_ERRORS MSDB2 T *
* *
* 2009-06-10-08.43.36.378247 *
****************************************************************
* RECOMMENDATION: *
* Upgrade to DB2 Version 9.7 Fix Pack 1 *
**************************************************************** | |
| Local Fix: | |
use db2look to generate the DDL for the source schema, and manually change the schema to target schema and apply using CLP. | |
| available fix packs: | |
DB2 Version 9.7 Fix Pack 1 for Linux, UNIX, and Windows | |
| Solution | |
Problem was first fixed in Version 9.7 Fix Pack 1 | |
| Workaround | |
see Local Fix | |
| Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 20.07.2009 19.02.2010 19.02.2010 |
| Problem solved at the following versions (IBM BugInfos) | |
9.7.FP1 | |
| Problem solved according to the fixlist(s) of the following version(s) | |
| 9.7.0.1 |
|