Any thoughts or updates on this ?



From: Sagar Gandhi

Sent: Saturday 28 May 3:03 am

Subject: RE: Discussion on METAMODEL-156 JdbcDataContext.getDefaultSchemaName 
return SchemaName error

To: [email protected]





Brief example : 

MySQL URL format is 
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] 
[?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]


example 1 :jdbc:mysql://DBNAME_test:3306/DBNAME?user=DBNAME_test

example 2 : jdbc:mysql://DBNAME:3306/DBNAME_test?user=DBNAME

In first case , we expect the default database name as DBNAME but in second 
case we expect as DBNAME_test. Now coming to metamodel , If we check contains 
then default db name really depends on index of schemaNames array. If we check 
largest db name , as suggested in comment section of bug then also it will 
create a problem (first case). 

So If we can handle the such known cases for major databases then it will be 
far more helpful.For rest of the databases and custom drivers , our current 
behaviour will remain as it is with bug fix as fail-safe mechanism.

@KasperThis might need refactoring the method as you mentioned in comment. 




> From: [email protected]

> To: [email protected]

> Subject: Discussion on METAMODEL-156 JdbcDataContext.getDefaultSchemaName 
> return SchemaName error

> Date: Sat, 28 May 2016 02:05:38 +0530

> 

> Hi all,

> I  started working on starter Bug Metamodel 156 titled 
> "JdbcDataContext.getDefaultSchemaName return SchemaName error".

> Currently it finds database from URL using contains method, but if host name 
> or directory (in case of HSQLDB) or any custom driver specific property name 
> and schema name (non-default) are same then we can get wrong result. So I 
> think we need to handle database specific URLs as much as possible and keep 
> current behaviour as fail-safe mechanism.

> Example : for MySQL  , database URL format is 
> jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] 
> [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...](Referred 
> from 
> https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html)

> So we can do following steps1. find last index of /2. find first index of ?3. 
> If ? index is -1 then substring (last index of /) + 1 to end of url4. If ? 
> index is not -1 then substring (last index of /)+1 to (first index of ?)5. If 
> substring length is greater than 0 after trim then its databasename.

> 

> Above is just pseducode , we can come with better strategy.  Same way we can 
> do it for MSSQL, DB2, Hive, HSQLDB. For Microsoft SQL Server , we can handle 
> both JTDS and Microsoft Driver URL formats.   If our new strategy fails to 
> get database name due to different driver issues then current behaviour with 
> bug fix can remain as fail-safe mechanism.

> 

> Please do share your thoughts on this.

> 

> Thanks ,Mr.Sagar Gandhi,Senior Software Engineer,eQ Technologic Inc.Pune- 
> India(+91)9028440503                                       

                                       


Reply via email to