Allow you to write x'DEADBEEF' as {0xDE, 0xAD, 0xBE, 0xEF}.
For now I'm being quite restrictive here:
- byte literals must be written in hexadecimal not in decimal
- they must be exactly two digits in length
(I would like to allow decimal format but I think that would start to
collide with other rules with braces in the grammar.)
And fix up the parsing and formatting in VarbinaryTypeDescriptor which
was inconsistent with how the JDBC drivers handle the conversion to
signed bytes.
For the datetime stuff we need integer literals with leading zeros, and
surely there is not a single breathing person who has ever written an
octal literal in HQL.
- make it work for DriverManagerConnectionProviderImpl
- improve logging and some confusing exceptions
- make it respect explicit database setting properties
- add TimestampWithTimeZoneDescriptor and use it in OffsetDateTimeJD
and ZonedDateTimeJD
- add ZoneOffsetJavaDescriptor for ZoneOffset attributes
- clean up string rendering for temporal types using ISO formats;
note that they do not need to implement objectToSQLString()
since they cannot be discriminators
Note that at this time very few databases have meaningful support
for the ANSI-standard TIMESTAMP WITH TIME ZONE type. This limits
the usefulness of TimestampWithTimeZoneDescriptor for now.
Also add in some missing but needed type mappings for temporal types
And make the various function implementations work in more common ways.
- remove some unnecessary flexibility
- simplify some function descriptors to do their work during render()
- fix generics of QueryLiteral
- fix DerbyConcatEmulation
First, disable tests that fail because of loss of indirected parameter binding.
On the other branch, the index of a HQL parameter wasn't passed directly through
as the index of the JDBC parameter. On this branch it seems to be. This causes a
problem for fancy HQL functions like overlay() and pad() which sometimes
duplicate/reorder HQL arguments in the generated SQL.
Also reenable tests that now pass.
Also fixed a rather badly-written test that failed for me.
- called Thread.sleep(), wasting a whole second
- failed on non-slow machines