[fix](datetime) fix compare of DatetimeLiteral (#24343)

fix compare of DatetimeLiteral
This commit is contained in:
zclllyybb
2023-09-14 16:51:50 +08:00
committed by GitHub
parent 8e7f7c9566
commit b6d7116dea
4 changed files with 22 additions and 13 deletions

View File

@ -583,7 +583,7 @@ public class DateLiteral extends LiteralExpr {
return -1;
}
// date time will not overflow when doing addition and subtraction
return Long.signum(getLongValue() - expr.getLongValue());
return getStringValue().compareTo(expr.getStringValue());
}
@Override

View File

@ -127,10 +127,10 @@ public class LiteralExprCompareTest {
Assert.assertTrue(maxDatetime1.equals(date9) && maxDatetime1.compareLiteral(date9) == 0);
Assert.assertTrue(minDatetime1.equals(date11) && minDatetime1.compareLiteral(date11) == 0);
Assert.assertTrue(!maxDate1.equals(date1) && 1 == maxDate1.compareLiteral(date1));
Assert.assertTrue(!minDate1.equals(date1) && -1 == minDate1.compareLiteral(date1));
Assert.assertTrue(!maxDatetime1.equals(datetime1) && 1 == maxDatetime1.compareLiteral(datetime1));
Assert.assertTrue(!minDatetime1.equals(datetime1) && -1 == minDatetime1.compareLiteral(datetime1));
Assert.assertTrue(!maxDate1.equals(date1) && maxDate1.compareLiteral(date1) > 0);
Assert.assertTrue(!minDate1.equals(date1) && minDate1.compareLiteral(date1) < 0);
Assert.assertTrue(!maxDatetime1.equals(datetime1) && maxDatetime1.compareLiteral(datetime1) > 0);
Assert.assertTrue(!minDatetime1.equals(datetime1) && minDatetime1.compareLiteral(datetime1) < 0);
}
@Test
@ -181,10 +181,10 @@ public class LiteralExprCompareTest {
Assert.assertTrue(maxDatetime1.equals(date9) && maxDatetime1.compareLiteral(date9) == 0);
Assert.assertTrue(minDatetime1.equals(date11) && minDatetime1.compareLiteral(date11) == 0);
Assert.assertTrue(!maxDate1.equals(date1) && 1 == maxDate1.compareLiteral(date1));
Assert.assertTrue(!minDate1.equals(date1) && -1 == minDate1.compareLiteral(date1));
Assert.assertTrue(!maxDatetime1.equals(datetime1) && 1 == maxDatetime1.compareLiteral(datetime1));
Assert.assertTrue(!minDatetime1.equals(datetime1) && -1 == minDatetime1.compareLiteral(datetime1));
Assert.assertTrue(!maxDate1.equals(date1) && maxDate1.compareLiteral(date1) > 0);
Assert.assertTrue(!minDate1.equals(date1) && minDate1.compareLiteral(date1) < 0);
Assert.assertTrue(!maxDatetime1.equals(datetime1) && maxDatetime1.compareLiteral(datetime1) > 0);
Assert.assertTrue(!minDatetime1.equals(datetime1) && minDatetime1.compareLiteral(datetime1) < 0);
}
@Test
@ -235,10 +235,10 @@ public class LiteralExprCompareTest {
Assert.assertTrue(maxDatetime1.equals(date9) && maxDatetime1.compareLiteral(date9) == 0);
Assert.assertTrue(minDatetime1.equals(date11) && minDatetime1.compareLiteral(date11) == 0);
Assert.assertTrue(!maxDate1.equals(date1) && 1 == maxDate1.compareLiteral(date1));
Assert.assertTrue(!minDate1.equals(date1) && -1 == minDate1.compareLiteral(date1));
Assert.assertTrue(!maxDatetime1.equals(datetime1) && 1 == maxDatetime1.compareLiteral(datetime1));
Assert.assertTrue(!minDatetime1.equals(datetime1) && -1 == minDatetime1.compareLiteral(datetime1));
Assert.assertTrue(!maxDate1.equals(date1) && maxDate1.compareLiteral(date1) > 0);
Assert.assertTrue(!minDate1.equals(date1) && minDate1.compareLiteral(date1) < 0);
Assert.assertTrue(!maxDatetime1.equals(datetime1) && maxDatetime1.compareLiteral(datetime1) > 0);
Assert.assertTrue(!minDatetime1.equals(datetime1) && minDatetime1.compareLiteral(datetime1) < 0);
}
@Test