exist icon indicating copy to clipboard operation
exist copied to clipboard

[BUG] xs:dateTimeStamp should promote to xs:dateTime (base type)

Open pherk opened this issue 1 year ago • 5 comments

Describe the bug I'm upgrading an app from existdb 4.11 to 6.2 Comparing database values with fn:current-dateTime() produces an error: XPTY0004.

Expected behavior I'm not an expert in XSD1.1, but type promotion should be expectable in my eyes. I don't have Saxon or BaseX.

To Reproduce eval in eXide:

xquery version "3.1";

declare function local:less($a as xs:string, $b as xs:dateTime) as xs:boolean
{
  if ($a="")
  then true()
  else xs:dateTime($a) <= $b
};
local:less("2024-01-01T00:00:00Z", fn:current-dateTime())

or eval

local:less("2024-01-01T00:00:00Z", xs:dateTimeStamp("2024-02-01T00:00:00.000Z"))

Context (please always complete the following information)

  • Build: [eXist-6.2.0 master]
  • Java: [1.8.0_352]
  • OS: [Ubuntu 24.0.1]

Additional context

  • How is eXist-db installed? [e.g. JAR installer, DMG, … ]
  • Any custom changes in e.g. conf.xml?

pherk avatar Oct 07 '24 08:10 pherk

Hi @pherk! Thank you for opening this issue. While the coercion from xs:dateTimestamp to xs:dateTime is done for the function parameter, the comparison fails.

xs:dateTime("2024-01-01T00:00:00") <= current-dateTime()

line-o avatar Oct 07 '24 09:10 line-o

I also tested this agains latest develop-6.x.x and develop branches. The issue is there as well.

line-o avatar Oct 07 '24 09:10 line-o

The error description is:

It is a type error if, during the static analysis phase, an expression is found to have a static type that is not appropriate for the context in which the expression occurs, or during the dynamic evaluation phase, the dynamic type of a value does not match a required type as specified by the matching rules in 2.5.4 SequenceType Matching. Type error: cannot compare xs:dateTime to xs:dateTimeStamp

line-o avatar Oct 07 '24 10:10 line-o

I think I recall fixing this in 7.0.0-SNAPSHOT already

adamretter avatar Oct 07 '24 19:10 adamretter

The fix must be in an unmerged PR as latest develop is affected.

line-o avatar Oct 08 '24 17:10 line-o