You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(oracle): BoxLang reads a cf_sql_timestamp back as an unreadable oracle.sql.TIMESTAMP #3714
Found by the compat matrix once #3710 (#3708) let the BoxLang + Oracle leg run past fixture population. Before #3710 this leg ran zero specs, so this could not be seen.
Leg: boxlang + oracle, dispatch 36341832355, on #3710's head 8b2a9f814 (current with develop). Totals: 5815 specs, 5786 pass, 0 fail, 5 error, 24 skip.
Error:TimestampRoundTripSpec > "cf_sql_timestamp round-trip (#3302)" > "reads back as a CFML date or as epoch milliseconds":
Can't cast oracle.sql.TIMESTAMP to a string.
at vendor/wheels/tests/specs/database/TimestampRoundTripSpec.cfc:74
There are two defects:
On BoxLang, Oracle returns a cf_sql_timestamp column as an oracle.sql.TIMESTAMP object. $normalizeDbTimestamp() does not turn that into a CFML date, so shape is "neither". Every framework path that reads a stored timestamp back is affected.
The spec's failure message concatenates the raw readBack value into a string. With a Java object, building the diagnostic throws, and that hides the real assertion. A diagnostic must never crash on a raw object.
Fix: teach the normalizer to read oracle.sql.TIMESTAMP (through its exported JDBC conversion, as a java.sql.Timestamp), and make the spec message print a safe representation of non-simple values.
Blocks 4.1.1: the release gate is every test passing on every matrix leg.
Activity