Database name returned as "." for free .dbf tables |
Chris McGuinness |
2018-08-21 11:56:06 |
Hello,
Is there a way to alias or re-name the database name that the HXTT JDBC drivers give to FoxPro free tables in a directory?
We are trying to use your JDBC drivers with JasperSoft reporting tools. When we try to create a JasperSoft "domain" (really just a data dictionary) on a JasperSoft report server, the JasperSoft tool errors as it cannot deal with "." as the database name.
Other JasperSoft tools deal with the "." database name without issue, such as the JasperSoft Studio dev tools.
I have read and re-read the HXTT documentation and was unable to find a method for aliasing the free-table database name.
We really like the capabilities that the HXTT drivers have provided. Solving the database name issue would make a huge difference for us.
Regards,
Chris McGuinness
CTO Black Mountain Software
chrism@blackmountainsoftware.com
|
Re:Database name returned as |
HXTT Support |
2018-08-21 18:50:30 |
For instance, d:/test/abc/atable.dbf
If you use jdbc:dbf:/d:/test/abc
Then the catalog will be ".".
If you use jdbc:dbf:/d:/test
Then you can use "select * from abc.atable"".
|
Re:Database name returned as |
HXTT Support |
2018-08-21 18:52:31 |
Of course, we can think other solution,
For instance, _current_ as a default name to replace "."?
What's your suggestion?
|
Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-08-22 09:45:22 |
Thank you for the reply. I tried the tactic of setting the target directory one layer above in the directory hierarchy. This works well when you have control over the specific formation of the sql statements.
The problem arises with tools that are doing discovery of catalogs, databases, schemas, and tables in an automated fashion to help you form queries for meta-data driven dictionaries and things like views.
In these circumstances, we have no opportunity to specify queries related to the discovery of data organization and structure within a particular data source.
Renaming the "." with something like "_current_" is a possible solution. I have contacted a tech representative at Jaspersoft and asked if "_current_" would be a workable solution.
I will reply here as soon as I receive an answer from Jaspersoft.
Regards, Chris
|
Re:Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-08-22 13:40:34 |
The tech folks at Jaspersoft replied to me that a catalog named "_current_" would likely work without issue.
Could this be implemented in the driver as a configuration setting?
We are currently using the client/server driver model.
Regards, Chris
|
Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-08-28 21:49:18 |
2018-08-29 provides _CURRENT_ as a pseudo catalog(or schema name) which returns the current catalog (or schema).
|
Re:Re:Re:Re:Re:Re:Database name returned as |
Chris |
2018-09-10 08:40:29 |
Thank you very much for your efforts. Your responsiveness is wonderful.
We will test this change as soon as possible.
Regards,
Chris McGuinness
CTO Black Mountain Software
chrism@blackmountainsoftware.com
|
Database name returned as |
Chris McGuinness |
2018-09-17 16:15:51 |
I have tested the new drivers that name free dbf tables in a directory as being in catalog "_CURRENT_".
I tested with three different tools:
DBSchema
Servoy
Jaspersoft
All three tools had the same behaviour: When a data source using the HXTT DBF drivers was aimed at a directory containing free dbf tables, the catalog was indeed named "_CURRENT_". The problem is that in no case, where the tables or fields available within the catalog.
Changing back to the previous HXTT DBF JDBC drivers re-established access to the tables and fields, but named the catalog ".".
Some technical folks at Jaspersoft volunteered to take a look at the HXTT DBF JDBC drivers with the goal of providing you with more specific information as to why the catalog is not enumerating the tables and fields.
I have given them the URL to this board. They may be posting questions and information to this thread.
Regards, Chris McGuinness
CTO Black Mountain Software
chrism@blackmountainsoftware.com
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-17 22:41:47 |
Because HXTT DBF drivers are using file as table, so that directory "." become a database. BTW, Visual Foxpro (.dbc) is database too.
|
Database name returned as |
Chris McGuinness |
2018-09-18 10:14:04 |
I am aware of the reasons why the database was named as ".". I understand the logic behind the decision as the current directory is referenced as "." under many different operating system file structures.
If you read this thread from the beginning, you will see that the database naming of "." was causing the JDBF drivers to be incompatible with Jaspersoft reporting tools.
Your organization graciously agreed to rename the database in an effort to solve the problem. The work to rename the database to "CURRENT_" was done, and for this, I thank you.
The problem is that after this change was made, the JDBC drivers are no longer providing a list of tables under the "_CURRENT_" database. This is causing us to not be able to use the drivers with Jaspersoft or Servoy.
Thank you for your efforts.
Regards, Chris McGuinness
CTO Black Mountain Software
chrism@blackmountainsoftware.com
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-18 17:55:24 |
> the JDBC drivers are no longer providing a list of tables under the "_CURRENT_" database.
It's strange, and please try to redownload the latest package.
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-09-19 09:39:43 |
I will re-download the latest package and test. Thank you.
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-09-24 14:02:14 |
I have tested the 9/11/2018 drivers with: DBSchema, Jaspersoft Studio, Servoy, and JDBC Navigator.
All tests were using local .dbf tables.
Links to screenshots: https://photos.app.goo.gl/gL2eGDYKjQaQzZPh8
Tool, Results
DBSchema, Produces a list of schemas, all labeled ".". Data access works.
Jaspersoft, Produces a "_CURRENT_" catalog/schema but does not list the tables. SQL commands against the data connection do produce data. This is preventing us from using the drivers within Jaspersoft. The ability to do this is very important to us. If necessary, we would consider compensating you for work to make this compatible.
Servoy, Produces a list of tables and data. No catalog or schema displayed. Data access works. Catalogs and schemas not pertinent with Servoy.
JDBC Navigator, Produces a catalog or schema named "null". Tables are enumerated and data access for read works.
Going to try the drivers from 9/21/2018.
Regards, Chris
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-25 00:46:55 |
>JDBC Navigator, Produces a catalog or schema named "null". Tables are enumerated and data access for read works.
Tested JDBC Navigator, and use _CURRENT_ to replace null catalog name.
>DBSchema, Produces a list of schemas, all labeled ".". Data access works.
No issue for "." as schema name. So we haven't tested.
>Jaspersoft, Produces a "_CURRENT_" catalog/schema but does not list the tables.
Need 8 hours to download Jaspersoft:( It should have filtered all tables with null catalog name. Please download the latest package, which is released today. Your issue should disappear since _CURRENT_ is used to replace null catalog name.
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-26 02:12:37 |
Tested on Jaspersoft, and find Jaspersoft is using wrogly the catalog name as schema name too. I'm downloading Jaspersoft source code to decide how to fix it.
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-26 07:08:28 |
I think in com.jaspersoft.studio.data.sql.ui.metadata.MetaDataUtil.java
readSchemas function
>String tableSchema = isSchema ? rs.getString("TABLE_SCHEM") : tableCatalog;
It should be
String tableSchema = isSchema ? rs.getString("TABLE_SCHEM") : null;
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-26 07:22:31 |
In the same function:
> String tableCatalog = !isCatalog || isSchema ? null : rs.getString("TABLE_CAT");
It should be
String tableCatalog = isSchema ? rs.getString("TABLE_CATALOG"): rs.getString("TABLE_CAT");
But that code line does't result too much issues.
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-26 08:05:29 |
Please download the latest package, which has used a speical hotfix for Jaspersoft.
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-09-27 10:03:02 |
Wonderful. I will pass along your information to Jaspersoft. We have been working with a couple of their technical people and they may find your suggestion helpful.
I will try the latest version. As always, thank you very much for your efforts.
Regards, Chris
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-09-27 12:18:52 |
I have tried the drivers from 2018-09-26. There is progress, but I can only get a listing of tables when accessing the data directory locally.
When accessing the directory containing dbf files directly via:
jdbc:dbf:/c:/dev_data/chilton/so
The catalog is named "_CURRENT_" and the tables list correctly when using Jaspersoft Studio. There are no error messages and I can query table data.
When accessing the directory containing dbf files remotely via:
jdbc:dbf://sample.domain.com:3099/c:\dev_data/chilton/so
"sample.domain.com" has been substituted for the real domain.
The catalog is named "_CURRENT_" and the tables do not list.
I have verified that I am using the latest version of the drivers for the remote server. The remote server is actually running on the same computer where the local JDBC access testing is done.
When I do the "Read Fields" function of the "Dataset and Query Dialog" window, or I try to preview the data, using the remote URL the error message is:
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:578)
at com.jaspersoft.studio.data.reader.DatasetReader.fillReport(DatasetReader.java:264)
at com.jaspersoft.studio.data.reader.DatasetReader.start(DatasetReader.java:332)
at com.jaspersoft.studio.property.dataset.preview.DataPreviewTable$5.run(DataPreviewTable.java:318)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: java.sql.SQLException: java.io.InvalidClassException: com.hxtt.sql.common.c; local class incompatible: stream classdesc serialVersionUID = -6317838001819381397, local class serialVersionUID = -6676004762807846717 while reading serialized object
at com.hxtt.b.al.a(Unknown Source)
at com.hxtt.b.aw.a(Unknown Source)
at com.hxtt.b.aw.a(Unknown Source)
at com.hxtt.b.aw.for(Unknown Source)
at com.hxtt.msg.b.a.a(Unknown Source)
at com.hxtt.sql.remote.r.a(Unknown Source)
at com.hxtt.sql.remote.v.a(Unknown Source)
at com.hxtt.sql.remote.l.executeQuery(Unknown Source)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:310)
... 8 more
Regards, Chris
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-28 02:55:48 |
>When accessing the directory containing dbf files remotely via:
Tested and supported. Please download the latest package now.
|
Database name returned as |
Chris McGuinness |
2018-09-28 09:27:21 |
Hello and thank you for the updated drivers.
Now the drivers are listing tables and fields under the "_CURRENT_" catalog in both local and remote access modes.
In local mode, data access works.
In remote mode, I get the following error when querying data:
net.sf.jasperreports.engine.JRException: Error executing SQL statement for: data.
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:347)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1257)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:726)
at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:456)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:578)
at com.jaspersoft.studio.data.reader.DatasetReader.fillReport(DatasetReader.java:264)
at com.jaspersoft.studio.data.reader.DatasetReader.start(DatasetReader.java:332)
at com.jaspersoft.studio.property.dataset.preview.DataPreviewTable$5.run(DataPreviewTable.java:318)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: java.sql.SQLException: java.io.InvalidClassException: com.hxtt.sql.common.o; local class incompatible: stream classdesc serialVersionUID = 7883397096241367604, local class serialVersionUID = 3360810058353975935 while reading serialized object
at com.hxtt.b.ar.a(Unknown Source)
at com.hxtt.b.a5.a(Unknown Source)
at com.hxtt.b.a5.a(Unknown Source)
at com.hxtt.b.a5.for(Unknown Source)
at com.hxtt.msg.b.a.a(Unknown Source)
at com.hxtt.sql.remote.r.a(Unknown Source)
at com.hxtt.sql.remote.v.a(Unknown Source)
at com.hxtt.sql.remote.l.executeQuery(Unknown Source)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:310)
... 8 more
Regards, Chris
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-09-29 01:48:13 |
>com.hxtt.sql.common.o; local class incompatible: stream classdesc serialVersionUID = 7883397096241367604, local class serialVersionUID = 3360810058353975935 while reading serialized object
Reupload.
|
Database name returned as |
Chris McGuinness |
2018-10-01 10:00:35 |
2018-09-29 drivers returned the following error:
net.sf.jasperreports.engine.JRException: Error executing SQL statement for: data.
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:347)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1257)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:726)
at net.sf.jasperreports.engine.fill.BaseReportFiller.setParameters(BaseReportFiller.java:456)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:578)
at com.jaspersoft.studio.data.reader.DatasetReader.fillReport(DatasetReader.java:264)
at com.jaspersoft.studio.data.reader.DatasetReader.start(DatasetReader.java:332)
at com.jaspersoft.studio.property.dataset.preview.DataPreviewTable$5.run(DataPreviewTable.java:318)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: java.sql.SQLException: java.io.InvalidClassException: com.hxtt.sql.common.c; local class incompatible: stream classdesc serialVersionUID = -6317838001819381397, local class serialVersionUID = -8091031286703399322 while reading serialized object
at com.hxtt.global.aq.a(Unknown Source)
at com.hxtt.global.a4.a(Unknown Source)
at com.hxtt.global.a4.a(Unknown Source)
at com.hxtt.global.a4.for(Unknown Source)
at com.hxtt.msg.remote.Agent.a(Unknown Source)
at com.hxtt.sql.remote.r.a(Unknown Source)
at com.hxtt.sql.remote.v.a(Unknown Source)
at com.hxtt.sql.remote.l.executeQuery(Unknown Source)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:310)
... 8 more
Regards, Chris
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-10-01 16:55:51 |
It's strange. I run DBF_JDBC42.jar to start a server, then use JasperSoft Studio(Driver Class: DBF_Remote_JDBC42.jar, or DBF_JDBC42.jar) to query. No issue.
Whether ther DBF_JDBC42.jar on your server side is still old file?
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
Chris McGuinness |
2018-10-01 22:46:14 |
You are correct. This was my fault as I did not update the server-side correctly. I will test again tomorrow.
Regards, Chris
|
Database name returned as |
Chris McGuinness |
2018-10-04 11:04:43 |
I configured the hxtt server-side service to use the new drivers (20180929) correctly.
Jaspersoft studio shows a correct list of databases and schemas. Tables, fields, and data are accessible.
When trying to create a domain (data dictionary) in Jaspersoft server, the database/schema selection window appears with one choice "null".
https://photos.app.goo.gl/6rkyoE6T5i74Fwca7
From this point, I can go no further. It was my hope, and Jaspersoft's diagnosis that the catalog name of '.' was causing the problem. You have changed the catalog name to _CURRENT_ and now, the catalog is coming through as 'null' for Jaspersoft server.
I have asked Jaspersoft to look into what the server product is doing differently from the Jaspersoft Studio product to see if we can give you better information as to what is wrong.
Jaspersoft also recommended that you take a look at their JDBC compatibility document: https://community.jaspersoft.com/documentation/v710/tibco-jasperreports-server-supported-platform-datasheet
As always, I really appreciate your attention and efforts towards solving this issue for us.
Just for comparison purposes, I switched back to the 20180713 drivers and tested again in an effort to provide better information.
When trying to create a domain (data dictionary) in Jaspersoft server, the database/schema selection window appears with one choice ".".
https://photos.app.goo.gl/hNpVXWD5Et9SvtFv7
Tables are visible, but fields will not display.
https://photos.app.goo.gl/maxUhKG8eBXQ75WK8
Selecting "Joins" from the domain creation window results in an error.
https://photos.app.goo.gl/CYZpx8JgzqzSu4tx9
I will let you know as soon as I have additional information.
Regards, Chris
|
Re:Re:Re:Re:Re:Re:Re:Re:Database name returned as |
HXTT Support |
2018-10-07 08:30:44 |
Tried Jasper Server, but failed to create a domain becase it seems there's no Create menu in community version.
Anyway, there's a dbo schema now. Please download it.
|
Database name returned as |
Chris McGuinness |
2018-10-12 15:24:56 |
Thank you so much for your efforts. The drivers are testing well with all functions attempted so far with Servoy and Jaspersoft.
Testing continues, but so far, so good.
Thanks again.
Regards, Chris
|