Hi,

I'm having some literal type issues when trying to use Calcite with my
database.  I have quite a few of them, and I thought perhaps it was my
database not dealing with the SQL standard correctly, but the latest one I
hit seems, well, inconsistent within Calcite.

When I run the literal 123.45 through Calcite, it is producing a decimal
type for me, which is fine.  However, if I pass in the literal 1e32 through
Calcite, it gives me a double.

I noticed a comment somewhere which states Calcite cannot handle integers
over the bigint max.  The comment was from 2006, so it doesn't look like it
will be addressed anytime soon?

Has anyone dealt with this? If so, how did you handle it?

I'm not sure this can be handled well.  I did try to change the parser to
create my own NumericLiteral.  However, when I used a negative integer out
of range, it used a static SqlLiteral create function embedded in the
Calcite jar file and had similar issues.

I do have a hack around this in my code that gets around this
post-validation time, so I won't be addressing this in Calcite in the near
future, but has anyone thought about this in general?

I should also mention (since I alluded to it at the beginning of my
message) that my database treats char literals as a "varchar(maxint)" type
(Calcite treats it as char) and tinyints like "2" as a tinyint (calcite
treats this as int).

Thanks,

Steve

Reply via email to