Page 1 of 1

Assetion failure in Ora.pas, line 8506

Posted: Fri 04 May 2007 12:47
by ac
ODAC version: 5.80.0.41

If I use a query using = comparisons in the WHERE clause for INNER JOINs, the query shown at the end of this message raises an Assertion failure (see call stack below).

If I use the same query using INNER JOIN syntax it works.

I can execute the query without problems with SQL*Plus

Assertion failure occurs in the following line in Ora.pas (line 8506):

Code: Select all

Assert(Result  assertion fails

I found out that the problem lies in the const MaxTables: since my query has more than 50 tables, the assertion fails. If I increas MaxTables to e.g. 200 then it works fine. 

My question is: is it save to increase MaxTables or is there a reason why it is set to 50? (I can't see any problems if I increase the array).

BTW: wouldn't it be better to replace the Assert() with a new SetLength() which increases the array dynamically?

call stack:

Ora.GetTablesInfo:8506
Ora.TOraDataSet.PSGetTableName:6738
OraSmart.TCustomSmartQuery.PSGetTableName:2166
DBAccess.TCustomDADataSet.SetActive:3060
Ora.TOraDataSet.SetActive:6834
DB.TDataSet.Open:9197

query (was autom. generated):

[code]  SELECT Count(*)
    FROM Ext_Data_H_V,
         Ext_Desc_H_V,
         Ext_Data_B_V,
         Ext_Desc_B_V,
         Ext_Desc_F_V,
         XCD_VAI1 Xcd_vai1,
         XCD_VAI1MGG2 Xcd_vai1mgg2,
         XCD_MGG2MGA3 Xcd_mgg2mga3,
         XCD_MGG2XCZ3 Xcd_mgg2xcz3,
         XCD_MGG2XAB3 Xcd_mgg2xab3,
         XCD_MGG2XCP3 Xcd_mgg2xcp3,
         XCD_MGG2COU3 Xcd_mgg2cou3,
         XCD_MGG2TXN3 Xcd_mgg2txn3,
         XCD_MGG2TQU3 Xcd_mgg2tqu3,
         XCD_MGG2XAA3 Xcd_mgg2xaa3,
         XCD_MGG2XVB3 Xcd_mgg2xvb3,
         XCD_MGG2ZAA3 Xcd_mgg2zaa3,
         XCD_MGG2XCC3 Xcd_mgg2xcc3,
         XCD Xcd,
         FAD_VAI1 Fad_vai1,
         FAD_VAI1FAS2 Fad_vai1fas2,
         FAD_VAI1FMG2 Fad_vai1fmg2,
         FAD_VAI1FMA2 Fad_vai1fma2,
         FAD_VAI1GEI2 Fad_vai1gei2,
         IAD_GEI1 Iad_gei1,
         IAD_GEI1IAC2 Iad_gei1iac2,
         IAD_GEI1GEL2 Iad_gei1gel2,
         IAD_GEI1IBB2 Iad_gei1ibb2,
         XCD_MGG2GEI3 Xcd_mgg2gei3,
         XCD_GEI3GEK4 Xcd_gei3gek4,
         XCD_GEI3XVE4 Xcd_gei3xve4,
         FHD_VAI1 Fhd_vai1,
         FHD_VAI1FHB2 Fhd_vai1fhb2,
         XRD_VAI1MGG2 Xrd_vai1mgg2,
         XRD_MGG2XAB3 Xrd_mgg2xab3,
         ZAD_GEI1MGG2 Zad_gei1mgg2,
         ZAD_MGG2TXM3 Zad_mgg2txm3,
         ZAD_MGG2ZAB3 Zad_mgg2zab3,
         ZKD_ZKA3ZKK4 Zkd_zka3zkk4,
         ZKD_ZKA3ZKT4 Zkd_zka3zkt4,
         ZKD_MGG2ZAA3 Zkd_mgg2zaa3,
         ZKD_VAI1MGG2 Zkd_vai1mgg2,
         ZKD_MGG2ZKA3 Zkd_mgg2zka3,
         ZAD_MGG2ZAE3 Zad_mgg2zae3,
         INSTR_NAMES Instr_names,
         INSTR_NAMES Instr_names_1,
         XRD_VAI1 Xrd_vai1,
         XRD_MGG2XCO3 Xrd_mgg2xco3,
         XCD_MGG2TOY3 Xcd_mgg2toy3,
         XUD_XUI1 Xud_xui1,
         XUD_XUI1VAI2 Xud_xui1vai2,
         XUD_VAI2VAK3 Xud_vai2vak3,
         XUD_XUI1XCU2 Xud_xui1xcu2,
         ZAD_MGG2TXN3 Zad_mgg2txn3,
         ZAD_MGG2TXY3 Zad_mgg2txy3,
         ZAD_ZAB3ZAO4 Zad_zab3zao4,
         XUD_VAI2XCV3 Xud_vai2xcv3,
         XND_XNI3XZS4 Xnd_xni3xzs4,
         XND_XZS4XZT5 Xnd_xzs4xzt5,
         XND_MGG2XNI3 Xnd_mgg2xni3,
         XND_XNI3XNA4 Xnd_xni3xna4
   WHERE (Xcd_vai1.Vai1 = Xcd_vai1mgg2.Vai1
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2mga3.Mgg2
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2xcz3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2xab3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2xcp3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2cou3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2txn3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2tqu3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2xaa3.MGG2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2xvb3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2zaa3.Mgg2 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2xcc3.Mgg2 
     AND Xcd.DOCKEY = Xcd_vai1.DocKey
     AND Xcd_vai1.K981_7842 = Fad_vai1.K981_7842
     AND Fad_vai1.Vai1 = Fad_vai1fas2.Vai1 
     AND Fad_vai1.Vai1 = Fad_vai1fmg2.Vai1
     AND Fad_vai1.Vai1 = Fad_vai1fma2.Vai1 
     AND Fad_vai1.Vai1 = Fad_vai1gei2.Vai1
     AND Fad_vai1gei2.K985_3801 = Iad_gei1.K985_3801
     AND Iad_gei1.GEI1 = Iad_gei1iac2.GEI1
     AND Iad_gei1iac2.DocKey = Iad_gei1gel2.DocKey
     AND Iad_gei1iac2.K982_9981 = Iad_gei1gel2.K982_9981
     AND Iad_gei1.GEI1 = Iad_gei1ibb2.GEI1 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2gei3.Mgg2 
     AND Xcd_mgg2gei3.Gei3 = Xcd_gei3gek4.Gei3 
     AND Xcd_mgg2gei3.Gei3 = Xcd_gei3xve4.Gei3 
     AND Xcd_mgg2xab3.K981_7842 = Fhd_vai1.K981_7842 
     AND Fhd_vai1.Vai1 = Fhd_vai1fhb2.Vai1 
     AND Xrd_vai1mgg2.Mgg2 = Xrd_mgg2xab3.Mgg2 
     AND Fad_vai1.K981_7842 = Ext_Data_H_V.EXTDATA_KEY
     AND Fad_vai1.K981_7842 = Ext_Desc_H_V.EXTDESC_KEY
     AND Fad_vai1.K981_7842 = Ext_Data_B_V.EXTDATA_KEY 
     AND Fad_vai1.K981_7842 = Ext_Desc_B_V.EXTDESC_KEY 
     AND Fad_vai1.K981_7842 = Ext_Desc_F_V.EXTDESC_KEY 
     AND Zad_gei1mgg2.Mgg2 = Zad_mgg2txm3.Mgg2 
     AND Zkd_mgg2zka3.ZKA3 = Zkd_zka3zkk4.ZKA3 
     AND Zkd_mgg2zka3.ZKA3 = Zkd_zka3zkt4.ZKA3 
     AND Zkd_vai1mgg2.Mgg2 = Zkd_mgg2zka3.Mgg2 
     AND Xcd_mgg2zaa3.F7820_1 = Zkd_mgg2zaa3.F7820_1 
     AND Xcd_mgg2zaa3.F7820_1 = Zad_mgg2zab3.F7820 
     AND Zad_mgg2zab3.Mgg2 = Zad_gei1mgg2.Mgg2 
     AND Zad_gei1mgg2.Mgg2 = Zad_mgg2zae3.Mgg2 
     AND Fad_vai1.K981_7842 = Instr_names."INSTRUMENT SYMBOL"
     AND Xcd_mgg2xab3.K981_7842 = Instr_names_1."INSTRUMENT SYMBOL" 
     AND Zkd_mgg2zaa3.Mgg2 = Zkd_vai1mgg2.Mgg2 
     AND Xrd_vai1mgg2.Mgg2 = Xrd_mgg2xco3.Mgg2 
     AND Xcd_mgg2xab3.K981_7842 = Xrd_vai1.K981_7842 
     AND Xrd_vai1.Vai1 = Xrd_vai1mgg2.Vai1 
     AND Xcd_vai1mgg2.Mgg2 = Xcd_mgg2toy3.Mgg2 
     AND Xrd_mgg2xco3.F7820 = Xud_xui1.F7820 
     AND Xud_xui1.XUI1 = Xud_xui1vai2.XUI1 
     AND Xud_xui1vai2.VAI2 = Xud_vai2vak3.VAI2 
     AND Xud_xui1.XUI1 = Xud_xui1xcu2.XUI1 
     AND Zad_gei1mgg2.Mgg2 = Zad_mgg2txn3.MGG2 
     AND Zad_gei1mgg2.Mgg2 = Zad_mgg2txy3.MGG2 
     AND Zad_mgg2zab3.Zab3 = Zad_zab3zao4.ZAB3 
     AND Xud_xui1vai2.VAI2 = Xud_vai2xcv3.VAI2 
     AND Xcd_vai1mgg2.F7820 = Xnd_xni3xzs4.F7820 
     AND Xnd_xni3xzs4.XZS4 = Xnd_xzs4xzt5.XZS4 
     AND Xnd_xni3xzs4.XNI3 = Xnd_mgg2xni3.XNI3 
     AND Xnd_mgg2xni3.XNI3 = Xnd_xni3xna4.XNI3  )
     AND (((Xcd_vai1mgg2.F7891  = 238)
     AND (Fad_vai1fmg2.F7844  = 'TKT')))

Posted: Fri 04 May 2007 13:42
by Plash
You can safely increase value of the MaxTables constant. We'll remove limitation on the tables count in the SQL property of TSmartQuery in the next build of ODAC 5.

Posted: Fri 04 May 2007 16:36
by ac
Thanks for your fast reply!

Posted: Sun 06 May 2007 16:04
by Horace
Plash,

Does that mean that you will continue to develop ODAC 5 despite that ODAC 6 has been released ?

Is ODAC 6 defective in some way ?

Posted: Mon 07 May 2007 07:46
by Plash
No, we will not continue to develop ODAC 5. But we will release a new build of ODAC 5 if some critical bug is discovered.