RFR: 8058230: Improve java.sql toString formatting

Mandy Chung mandy.chung at oracle.com
Fri Sep 12 20:03:28 UTC 2014


On 9/12/14 12:21 PM, Phil Race wrote:
> Hi,
>
> http://hg.openjdk.java.net/jdk9/dev/jdk/rev/267950e85a3b
> The above changeset for this fix apparently broke the images build.
>
>
> ERROR: Failed module access verification
> CheckModules.gmk:38: recipe for target 'checkdeps' failed
> make[3]: Leaving directory '/opt/jprt/T/P1/173827.xxx/s/make'
> Main.gmk:301: recipe for target 'verify-modules' failed
> fcntl(): Bad file descriptor
> inaccessible reference: java.sql.Date (java.sql) -> 
> sun.misc.JavaLangAccess (java.base)
> inaccessible reference: java.sql.Date (java.sql) -> 
> sun.misc.SharedSecrets (java.base)
> inaccessible reference: java.sql.Time (java.sql) -> 
> sun.misc.JavaLangAccess (java.base)
> inaccessible reference: java.sql.Time (java.sql) -> 
> sun.misc.SharedSecrets (java.base)
> inaccessible reference: java.sql.Timestamp (java.sql) -> 
> sun.misc.JavaLangAccess (java.base)
> inaccessible reference: java.sql.Timestamp (java.sql) -> 
> sun.misc.SharedSecrets (java.base)

This changeset adds a new dependence from java.sql.* to sun.misc
that fails the build.  The module boundaries are enforced at build
time [1] to catch regressions before the module system is further
long.

The fix to this build failure is to add a qualified export
sun.misc to java.sql.

I'm looking into why the CI system doesn't catch this build failure
(seems like some make targets are not invoking the checkdeps target)

Mandy
[1] https://bugs.openjdk.java.net/browse/JDK-8051619

>
> -phil.
>
>
> On 9/11/2014 8:32 AM, Lance Andersen wrote:
>> Hi Claes,
>>
>> I think this is OK,  however, would like to see if others feel if  
>> formatDecimalInt should be located elsewhere so that we just make 
>> this change once.
>>
>> Best,
>> Lance
>> On Sep 11, 2014, at 10:44 AM, Claes Redestad 
>> <claes.redestad at oracle.com> wrote:
>>
>>> Hi,
>>>
>>> requesting reviews for this patch which optimizes 
>>> java.sql.Date/Time/Timestamp::toString
>>> by avoiding some unnecessary object allocations. java.sql.Date had 
>>> similar optimizations
>>> applied which this patch improves upon.
>>>
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8058230
>>> webrev: http://cr.openjdk.java.net/~redestad/8058230/webrev.00/
>>>
>>> Testing: jtreg jdk/test/java/sql with and without 8057826 tests
>>>
>>> Before/after performance running a minimal JMH micro[1]:
>>>
>>> Benchmark                         Mode  Samples      Score Score 
>>> error   Units
>>> t.DateBench.dateToString         thrpt       20 30225.628 623.887  
>>> ops/ms
>>> t.DateBench.dateToString         thrpt       20 38350.173 1349.432  
>>> ops/ms  # 1.3x
>>>
>>> t.DateBench.timeToString         thrpt       20 11793.338 232.121  
>>> ops/ms
>>> t.DateBench.timeToString         thrpt       20 47048.344 1969.939  
>>> ops/ms  # 4.0x
>>>
>>> t.DateBench.timestampToString    thrpt       20 2529.601 45.990  ops/ms
>>> t.DateBench.timestampToString    thrpt       20 14143.612 407.351  
>>> ops/ms  # 5.6x
>>>
>>> /Claes
>>>
>>> [1]
>>>
>>> package test;
>>>
>>> import org.openjdk.jmh.annotations.*;
>>>
>>> @State(Scope.Thread)
>>> public class DateBench {
>>>
>>>     public java.sql.Time time = java.sql.Time.valueOf("15:15:25");
>>>
>>>     @Benchmark
>>>     public String timeToString() {
>>>         return time.toString();
>>>     }
>>>
>>>     public java.sql.Date date = java.sql.Date.valueOf("2013-01-01");
>>>
>>>     @Benchmark
>>>     public String dateToString() {
>>>         return date.toString();
>>>     }
>>>
>>>     public Timestamp timestamp = Timestamp.valueOf("1999-12-13 
>>> 15:15:25.645634");
>>>
>>>     @Benchmark
>>>     public String timestampToString() {
>>>         return timestamp.toString();
>>>     }
>>>
>>> }
>>
>>
>> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
>> Oracle Java Engineering
>> 1 Network Drive
>> Burlington, MA 01803
>> Lance.Andersen at oracle.com
>>
>>
>>
>




More information about the core-libs-dev mailing list