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
On BoxLang + Oracle, model finders return datetime/timestamp columns as raw oracle.sql.TIMESTAMP driver objects instead of CFML dates. This was found while fixing #3715 (PR #3718): bulkOperationsSpec read found.createdAt[1] from findAll() and Len() threw Cannot determine length of object of type oracle.sql.TIMESTAMP.
User impact
I checked this against a real oracle.sql.TIMESTAMP on BoxLang (bx-oracle driver), local container:
call
result
IsDate(ts)
false
DateFormat(ts, "yyyy-mm-dd")
throws Can't cast [2026-07-25 17:20:00.0] to a String.
DateCompare(ts, Now())
throws (same)
DateDiff("d", ts, Now())
throws (same)
"" & ts (any output or concatenation)
throws Can't cast oracle.sql.TIMESTAMP to a string.
Len(ts)
throws Cannot determine length of object of type oracle.sql.TIMESTAMP
So on BoxLang + Oracle, any app that formats, compares, outputs, or JSON-renders a timestamp column from a finder breaks. That covers createdAt/updatedAt in views and renderWith() APIs.
Existing workarounds (to remove with the fix)
vendor/wheels/tests/specs/model/propertiesSpec.cfc (~lines 111, 126 and the helper near 759) special-cases IsInstanceOf(x, "oracle.sql.TIMESTAMP") and calls timestampValue().
Normalize datetime-typed columns in finder results, so every engine hands app code a CFML date. $normalizeDbTimestamp() already exists for this. Apply it only to columns the model's property metadata marks as datetime/timestamp, and only when a value is not already a date, so the cost on engines that already return dates stays small. With the fix, remove the spec workarounds above so the specs assert the real contract.
Not fixed yet: the 4.1.1-or-follow-up decision is pending with the maintainer.
Activity
fix(model): return CFML dates for datetime columns on BoxLang + Oracle
test(model): read bulk-insert timestamps directly now that finders re…
fix(model): return CFML dates for datetime columns on BoxLang + Oracle
test(model): read bulk-insert timestamps directly now that finders re…