Rocket U2 | UniVerse & UniData

 View Only

 Database code: 20085 not in the CATALOG space Error

Karl Diethrick's profile image
Karl Diethrick posted 04-17-2023 17:07

[Rocket U2][U2ODBC][2300701]Error ID: 46  Severity: ERROR  Facility: DBCAPERR - UCI Error. Func: SQLFetch(XIO); State: S1000; U2 Database code: 20085; Msg: [U2][SQL Client][UNIVERSE]Program ".ITYPE.": pc = 6, "*PAID.AR.CALC012" is not in the CATALOG space. .".

Back in November, I was able to get connected to this U2 database from SQL Server, PowerBI, and other tools using OLEDB and ODBC as outlined in this previous thread:
Rocket U2 | UniVerse & UniData

Rocketsoftware remove preview
Rocket U2 | UniVerse & UniData
I'm using the latest U2 64-+Bit ODBC Driver Version 7.241.02.9004.The ODBC Connection tests successfully and works perfectly in applications that use ODBC, such
View this on Rocketsoftware >


After a several month hiatus, I am now trying to work with the U2 database again, and getting this error related to the "CATALOG space" when accessing certain tables that I successfully accessed back in November.

I am on the same PC, with the same driver versions and same configuration.  Nothing has changed on my end.  I can still query most tables via the linked SQL Server tables and/or via Microsoft PowerBI, Access, or other tools using ODBC.

However, there are certain tables that now throw this exception when I attempt to query them.

Oddly, if I use Microsoft Excel, and use the old "Microsoft Query" to get the data, all tables work.  However, when using a regular ODBC connection in Excel or any other app, there are certain tables that are throwing this exception.

Any ideas?

The first query below throws the error.  The second one runs and produces results as expected, and as shown in the output.




Error in PowerBI shown below on the INVOICE table, despite other tables working fine.







Neil Morris's profile image
ROCKETEER Neil Morris

Has anything changed on the UniVerse server side? I'm not real familiar with the ODBC side of things but the UniVerse part of the error message indicates a dictionary I-type is involved which is attempting to call a globally cataloged BASIC program. And the program "*PAID.AR.CALC012" is not currently in the catalog space.  Executing the MAP command at TCL on the UniVerse server will display the contents of the global catalog space.

Karl Diethrick's profile image
Karl Diethrick

Thanks @Neil Morris 

I am only familiar with the ODBC side and not any of the UniVerse tools.

If I were to contact the owner and administrator of this UniVerse system, how would he get the BASIC program into the global catalog space?  In other words, how can I query the tables involved without getting this error?


Neil Morris's profile image
ROCKETEER Neil Morris

Hi Karl,
I'm guessing that a BASIC program named PAID.AR.CALC012 exists in a program file on the server. For example, if it were in the BP program file and already compiled, adding it to the global catalog space could be done with a command like the following. This would be done the account where the program file resides.

>ICATALOG BP *PAID.AR.CALC012
"*PAID.AR.CALC012" cataloged.
>

Hope that helps.

Thanks,

Neil

Karl Diethrick's profile image
Karl Diethrick

Thanks again @Neil Morris 

That makes sense to me.  However, I contacted the administrators of the Universe U2 system where these tables live and they weren't sure what I was talking about.

What I don't understand is why this PAID.AR.CALC012 program causes the error with certain tables?  Is that because one of the columns in the INVOICE table relies upon that calculation?

Even if this were true, doesn't this indicate a bug in the latest U2 ODBC drivers?  If it works in Microsoft Query via Excel, why does the driver error out when using other applications?

Jonathan Smith's profile image
ROCKETEER Jonathan Smith

@Karl Diethrick 

In UniVerse files (what you refer to as tables) you can have fields (which you refer to as columns) that are virtual fields, that is, they do not physically exist in the file. They are a field derived from other information or as a result of a calculation. The message you see relates to one of these such fields and that it uses the program PAID.AR.CALC012 to perform to get it's result. The message informs you that the program is not cataloged (or missing) in such a way that it can be accessed in the account you are connecting to in order to run the query.

When you connect to the UniVerse server via ODBC you connect to an account, the error message you see when running the SQL query would also be seen from users within UniVerse in that account if they tried to use the native querey language and attempted to report on the fields (columns)  that rely on being able to access the PAID.AR.CALC012 program.

This is not a bug with the U2 ODBC driver, it is expected behaviour reporting that something, in this case a cataloged program defined with the field (column) definiton, cannot be accessed from that account.


Karl Diethrick's profile image
Karl Diethrick

Thanks, this is helpful @Jonathan Smith 

But the question that remains unanswered is: why can I see all fields in the INVOICES file when using Microsoft Query in Microsoft Excel, but when using any other tool with the SAME ODBC driver and SAME credentials, I get the error?

One might argue this is a Microsoft question, and I have opened a thread there as well.  https://learn.microsoft.com/en-us/answers/questions/1249314/odbc-connection-to-universe-u2-data-throws-excepti?page=1&orderby=Helpful#answers

However, it seems to me that the Rocket U2 Universe ODBC driver may not be doing something that it needs to be doing in certain situations.  Perhaps it is compatible with older tools, but is missing something that is needed for newer applications?