We are currently creating custom ODBC driver and having a hard time figuring out how exactly Adobe recognizes the provider/dbtype?
We need our custom driver to be recognized as hive.
I found this .js application.getDBMSType('nms:extAccount:'+'hadoop') but couldn't find how getDBMSType actually reads the db type, anybody has any better insights here?
Here are some sample outputs from the function getDBMSType:
When using ClouderaODBC hive driver --> output = 'hive'
When using Teradata driver --> output = 'teradata'
My initial guess is that it would read something from the driver itself but cannot figure out what exactly?
Appreciate your effort on this.
We have solved this. The parameter comes from the driver library and it is DSI_CONN_DBMS_NAME. This parameter defines the vendor for ODBC connection in Adobe.
It's the lowercased value of the extAccount's @provider field.
I got that from fiddling with the extAccount and checking response values, though that wouldn't apply to provider ODBC.
In which, looking at ODBC spec the function's likely sourcing info from the SQLGetInfo() command, specifically arg SQL_SERVER_NAME.
The output you're seeing could be from a hardcoded map in the nlserver binary that replaces driver responses with internal values to homogenize with the other provider types.
Java libs aren't used for db connection handling.
Thanks for the reply. In this case when it is ODBC setup the @provider='ODBC' so that doesn't seem to be the case.
It does strongly look like it reads something from the driver in use but cannot find what.
Was hoping that somebody knows what getDBMSType does as this seems to be actually Java library somewhere but cannot find it.