Forums | Admin

Discussion Forums: open-discussion

Start New Thread Start New Thread
Message: 59690
BY: Frank Kuepper (fkuepper)
DATE: 2008-08-23 08:36
SUBJECT: RE: NoMethodError ibm_db_adapter:912 'columns

 

Hi Praveen,

sorry for the delayed answer, but I've been on summer holidays :-)

The problem is not, that SQLColumns doesn't return nothing at all, but that it returns something odd. Here's a short bite from the clitrace in development environment, where everything works fine:

SQLColumns( hStmt=1:1, pszCatalogName=<NULL pointer>, sCatalogNameByteCount=-3, pszSchemaName="ENTW", sSchemaNameByteCount=-3, pszTableName="V0AS0416", sTableNameByteCount=-3, pszColumnName=<NULL pointer>, sColumnNameByteCount=-3 )
---> Time elapsed - +7,690000E-004 seconds
( StmtOut="CALL SYSIBM.SQLCOLUMNS(?,?,?,?,?)" )
( Row=1, iPar=1, fCType=SQL_C_CHAR, rgbValue=<NULL pointer>, pcbValue=-1, piIndicatorPtr=-1 )
( Row=1, iPar=2, fCType=SQL_C_CHAR, rgbValue="ENTW" - x'454E5457', pcbValue=4, piIndicatorPtr=4 )
( Row=1, iPar=3, fCType=SQL_C_CHAR, rgbValue="V0AS0416" - x'5630415330343136', pcbValue=8, piIndicatorPtr=8 )
( Row=1, iPar=4, fCType=SQL_C_CHAR, rgbValue=<NULL pointer>, pcbValue=-1, piIndicatorPtr=-1 )
( Row=1, iPar=5, fCType=SQL_C_CHAR, rgbValue="DATATYPE='ODBC';GRAPHIC=1;REPORTUDTS=0;LUWUDT=1;DB2LUW=1;" - x'44415441545950453D274F444243273B475241504849433D313B5245504F5254554454533D303B4C55575544543D313B4442324C55573D313B', pcbValue=57, piIndicatorPtr=57 )
( return=0 )
( Requested Cursor Attributes=0 )
( Reply Cursor Attributes=524298 )
( Actual Cursor Attributes=524298 )

SQLColumns( )
<--- SQL_SUCCESS Time elapsed - +1,656880E-001 seconds

SQLNumResultCols( hStmt=1:1, pcCol=&023d7b08 )
---> Time elapsed - +7,270000E-004 seconds

SQLNumResultCols( pcCol=18 )
<--- SQL_SUCCESS Time elapsed - +4,232000E-003 seconds

SQLDescribeCol( hStmt=1:1, sCol=1, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&04d70f7c, puiColDef=&04d70f80, psScale=&04d70f84, psNullable=&04d70f86 )
---> Time elapsed - +6,800000E-004 seconds

SQLDescribeCol( pszColName="TABLE_CAT", psColNameCharLen=9, psSQLType=SQL_VARCHAR, pcbColDef=128, psScale=0, psNullable=SQL_NULLABLE )
<--- SQL_SUCCESS Time elapsed - +1,247600E-002 seconds

SQLDescribeCol( hStmt=1:1, sCol=2, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&04d70f98, puiColDef=&04d70f9c, psScale=&04d70fa0, psNullable=&04d70fa2 )
---> Time elapsed - +7,020000E-004 seconds

SQLDescribeCol( pszColName="TABLE_SCHEM", psColNameCharLen=11, psSQLType=SQL_VARCHAR, pcbColDef=128, psScale=0, psNullable=SQL_NULLABLE )
<--- SQL_SUCCESS Time elapsed - +1,208600E-002 seconds

SQLDescribeCol( hStmt=1:1, sCol=3, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&04d70fb4, puiColDef=&04d70fb8, psScale=&04d70fbc, psNullable=&04d70fbe )
---> Time elapsed - +6,770000E-004 seconds

SQLDescribeCol( pszColName="TABLE_NAME", psColNameCharLen=10, psSQLType=SQL_VARCHAR, pcbColDef=128, psScale=0, psNullable=SQL_NO_NULLS )
<--- SQL_SUCCESS Time elapsed - +1,395200E-002 seconds

Whereas in production, SQLColumns yields

SQLColumns( hStmt=1:1, pszCatalogName=<NULL pointer>, sCatalogNameByteCount=-3, pszSchemaName="PROD", sSchemaNameByteCount=-3, pszTableName="V0AS0416", sTableNameByteCount=-3, pszColumnName=<NULL pointer>, sColumnNameByteCount=-3 )
---> Time elapsed - +5,900000E-004 seconds
( StmtOut="CALL SYSIBM.SQLCOLUMNS(?,?,?,?,?)" )
( Row=1, iPar=1, fCType=SQL_C_CHAR, rgbValue=<NULL pointer>, pcbValue=-1, piIndicatorPtr=-1 )
( Row=1, iPar=2, fCType=SQL_C_CHAR, rgbValue="PROD" - x'50524F44', pcbValue=4, piIndicatorPtr=4 )
( Row=1, iPar=3, fCType=SQL_C_CHAR, rgbValue="V0AS0416" - x'5630415330343136', pcbValue=8, piIndicatorPtr=8 )
( Row=1, iPar=4, fCType=SQL_C_CHAR, rgbValue=<NULL pointer>, pcbValue=-1, piIndicatorPtr=-1 )
( Row=1, iPar=5, fCType=SQL_C_CHAR, rgbValue="DATATYPE='ODBC';GRAPHIC=1;REPORTUDTS=0;LUWUDT=1;DB2LUW=1;" - x'44415441545950453D274F444243273B475241504849433D313B5245504F5254554454533D303B4C55575544543D313B4442324C55573D313B', pcbValue=57, piIndicatorPtr=57 )
( return=0 )
( Requested Cursor Attributes=0 )
( Reply Cursor Attributes=524298 )
( Actual Cursor Attributes=524298 )

SQLColumns( )
<--- SQL_SUCCESS Time elapsed - +5,434500E-002 seconds

SQLNumResultCols( hStmt=1:1, pcCol=&023d7b08 )
---> Time elapsed - +6,210000E-004 seconds

SQLNumResultCols( pcCol=18 )
<--- SQL_SUCCESS Time elapsed - +3,707000E-003 seconds

SQLDescribeCol( hStmt=1:1, sCol=1, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&0507ee0c, puiColDef=&0507ee10, psScale=&0507ee14, psNullable=&0507ee16 )
---> Time elapsed - +6,150000E-004 seconds

SQLDescribeCol( pszColName="1", psColNameCharLen=1, psSQLType=SQL_VARCHAR, pcbColDef=128, psScale=0, psNullable=SQL_NULLABLE )
<--- SQL_SUCCESS Time elapsed - +1,068700E-002 seconds

SQLDescribeCol( hStmt=1:1, sCol=2, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&0507ee28, puiColDef=&0507ee2c, psScale=&0507ee30, psNullable=&0507ee32 )
---> Time elapsed - +6,010000E-004 seconds

SQLDescribeCol( pszColName="2", psColNameCharLen=1, psSQLType=SQL_VARCHAR, pcbColDef=128, psScale=0, psNullable=SQL_NULLABLE )
<--- SQL_SUCCESS Time elapsed - +1,401500E-002 seconds

SQLDescribeCol( hStmt=1:1, sCol=3, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&0507ee44, puiColDef=&0507ee48, psScale=&0507ee4c, psNullable=&0507ee4e )
---> Time elapsed - +6,110000E-004 seconds

SQLDescribeCol( pszColName="3", psColNameCharLen=1, psSQLType=SQL_VARCHAR, pcbColDef=128, psScale=0, psNullable=SQL_NO_NULLS )
<--- SQL_SUCCESS Time elapsed - +1,102100E-002 seconds

SQLDescribeCol( hStmt=1:1, sCol=4, pszColName=&023d7900, sColNameMaxByteLen=512, psColNameCharLen=&023d7b0c, psSQLType=&0507ee60, puiColDef=&0507ee64, psScale=&0507ee68, psNullable=&0507ee6a )
---> Time elapsed - +6,310000E-004 seconds

Notice the odd pszColName-Values ("1", "2" and so on). So as I said before: If I patch ibm_db_adapter.rb exchanging the column-lookup to using name or number (for example col["column_name"] || col["4"] instead of col["column_name"]), access is successful.

It's only that nobody was able to explain to me yet, where the oddness with pszColName results from. So I'm not sure, if my applied hack is a valid and lasting solution.

Greetings,
Frank


Thread View

Thread Author Date
NoMethodError ibm_db_adapter:912 'columns'Frank Kuepper2008-07-14 08:43
      RE: NoMethodError ibm_db_adapter:912 'columnsPraveen Devarao2008-07-15 10:21
            RE: NoMethodError ibm_db_adapter:912 'columnsFrank Kuepper2008-08-23 08:36
                  RE: NoMethodError ibm_db_adapter:912 'columnsPraveen Devarao2008-08-25 16:47
                        RE: NoMethodError ibm_db_adapter:912 'columnsFrank Kuepper2008-08-26 19:13
                              RE: NoMethodError ibm_db_adapter:912 'columnsPraveen Devarao2008-08-27 11:49
                                    RE: NoMethodError ibm_db_adapter:912 'columnsPraveen Devarao2008-09-02 03:49

Post a followup to this message