[ 
https://issues.apache.org/jira/browse/DERBY-2287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12471591
 ] 

Saurabh Vyas commented on DERBY-2287:
-------------------------------------

I saw inconsistency for precision value in embedded & network mode also. 
Following are my findings : 

 - JAVACLASSNAME which is mapped as LONGVARCHAR type.

 - for embedded mode the precision values is consistent from ResultSetMetaData 
& values specified in metadata.properties file for LONGVARCHAR data type.

 - for network mode precision value is returned by gePrecision() method from 
ColumnMetaData.java, and this sets the precision value for Char , BOLB & CLOB 
types are taken from 'sqlLength_'  array & this array holds incorrect value. 
Thus the assert 'assertEquals("COLUMN_SIZE", rsmdt.getPrecision(col), 
rs.getInt("COLUMN_SIZE")); ' fails only in network mode. 

Well now I am not sure why both modes handle getPrecision() method in different 
way ?

NOTE : Approximate Numeric i.e. Real & Float returns precision in DIGITS in 
network mode & I had modified them also in my tests to return Binary Digits as 
precision & the assert passes (as expected).

> JDBC meta data for precision and size is inconsistent and does not match JDBC 
> specifications.
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2287
>                 URL: https://issues.apache.org/jira/browse/DERBY-2287
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.2.1, 10.1.3.1, 
> 10.2.1.6, 10.2.2.0
>            Reporter: Daniel John Debrunner
>            Priority: Minor
>
> JDBC 4.0 has clarified the definitions of precision in the java doc for 
> various methods that return precision or size. The concept of precision and 
> size seems to be the same, just having different method or column names in 
> various situations.
> Derby does not follow the JDBC 4 specifications consistently, for example -1 
> is sometimes used to indicate not applicable, where JBDC 4 says NULL or 0. 
> The precision of datetime columns is defined to be non-zero but in some 
> situations Derby returns 0.
> jdbcapi.DatabaseMetaDataTest can show some of these issues, the test of 
> getColumns() should compare the information in the COLUMN_SIZE column to the 
> ResultSetMetaData getPrecision() method for the same column. The comparisions 
> are not made currently because the number of mismatches is high. [this code 
> is not yet committed].
> Existing application impact as Derby applications may have been relying on 
> the old incorrect & inconsistent behaviour.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to