DB2 - Problem description
Problem IC94656 | Status: Closed |
FED: DB2LOOK GENERATE INCORRECT FUNCTION MAPPING DDL | |
product: | |
DB2 FOR LUW / DB2FORLUW / A50 - DB2 | |
Problem description: | |
db2look generates incorrect function mapping DDL causes users need to refine their db2look output before running it to recreate their federated objects. -- -------------------------------- -- DDL Statements for FUNCTION MAPPING -- -------------------------------- CREATE FUNCTION MAPPING "FM_TO_CHAR" FOR "SYSIBM".TO_CHAR(SYSIBM.TIMESTMP,SYSIBM.VARCHAR) SERVER "SERV1" OPTIONS (REMOTE_NAME 'TO_CHAR' ); In above DDL, TIMESTMP should be TIMESTAMP, VARCHAR should be VARCHAR(). Reproduce: create wrapper net8; create server serv1 type oracle version '11.1' wrapper net8 options(node '****'); create user mapping for <USER NAME> server serv1 options(remote_authid '<USER ID>',remote_password '<PASSWORD>'); CREATE FUNCTION MAPPING FM_TO_CHAR FOR SYSIBM.TO_CHAR(SYSIBM.TIMESTAMP,SYSIBM.VARCHAR()) SERVER serv1 OPTIONS (REMOTE_NAME'TO_CHAR') ; db2look -d <db name> -e -fedonly -o db2look.sql -- -------------------------------- -- DDL Statements for FUNCTION MAPPING -- -------------------------------- CREATE FUNCTION MAPPING "FM_TO_CHAR" FOR "SYSIBM".TO_CHAR(SYSIBM.TIMESTMP,SYSIBM.VARCHAR) SERVER "SERV1" OPTIONS (REMOTE_NAME 'TO_CHAR' ); => db2 "SELECT substr(funcschema,1,14),substr(funcname,1,40) from SYSIBM.SYSFUNCMAPPINGS" 1 2 -------------- ---------------------------------------- SYSIBM TO_CHAR(SYSIBM.TIMESTMP,SYSIBM.VARCHAR) 1 record(s) selected. => db2 "CREATE FUNCTION MAPPING "FM_TO_CHAR" FOR "SYSIBM".TO_CHAR(SYSIBM.TIMESTMP,SYSIBM.VARCHAR) SERVER "SERV1" OPTIONS (REMOTE_NAME'TO_CHAR') " DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0104N An unexpected token "VARCHAR" was found following "IBM.TIMESTMP, SYSIBM.". Expected tokens may include: "LONG". LINE NUMBER=1. SQLSTATE=42601 => db2 "CREATE FUNCTION MAPPING "FM_TO_CHAR" FOR "SYSIBM".TO_CHAR(SYSIBM.TIMESTMP,SYSIBM.VARCHAR()) SERVER "SERV1" OPTIONS (REMOTE_NAME'TO_CHAR') " DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0204N "SYSIBM.TIMESTMP" is an undefined name. LINE NUMBER=2. SQLSTATE=42704 => db2 "CREATE FUNCTION MAPPING "FM_TO_CHAR" FOR "SYSIBM".TO_CHAR(SYSIBM.TIMESTAMP,SYSIBM.VARCHAR()) SERVER "SERV1" OPTIONS (REMOTE_NAME'TO_CHAR') " DB20000I The SQL command completed successfully. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * All users * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Please upgrade to DB2 version 10.5 fixpack 3 or later * **************************************************************** | |
Local Fix: | |
Replace TIMESTMP with TIMESTAMP, VARCHAR with VARCHAR() in db2look function mapping output | |
available fix packs: | |
DB2 Cancun Release 10.5.0.4 (also known as Fix Pack 4) for Linux, UNIX, and Windows | |
Solution | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 05.08.2013 28.11.2014 28.11.2014 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.5.0.4 |