Skip to content

Commit 687d21f

Browse files
committed
get 'extract(epoch)' working Informix
yay!
1 parent 02a45cb commit 687d21f

File tree

3 files changed

+2
-10
lines changed

3 files changed

+2
-10
lines changed

hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/InformixDialect.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,7 @@ public String extractPattern(TemporalUnit unit) {
435435
case HOUR -> "to_number(to_char(?2,'%H'))";
436436
case DAY_OF_WEEK -> "(weekday(?2)+1)";
437437
case DAY_OF_MONTH -> "day(?2)";
438+
case EPOCH -> "(to_number(cast(cast(sum(?2-datetime(1970-1-1) year to day) as interval day(9) to day) as varchar(12)))*86400+to_number(cast(cast(sum(cast(?2 as datetime hour to second)-datetime(00:00:00) hour to second) as interval second(6) to second) as varchar(9))))";
438439
case NATIVE -> "((to_number(cast(cast(sum(?2) as interval day(9) to day) as varchar(12)))*86400+mod(to_number(cast(cast(sum(?2) as interval second(6) to second) as varchar(9))),86400)+to_number(cast(cast(sum(?2) as interval fraction to fraction) as varchar(6))))*1e3)";
439440
default -> "?1(?2)";
440441
};

hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/FunctionTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2141,11 +2141,10 @@ public void testExtractFunctionDayOfWeekOf(SessionFactoryScope scope) {
21412141
}
21422142

21432143
@Test
2144-
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsExtractEpoch.class)
21452144
public void testExtractFunctionEpoch(SessionFactoryScope scope) {
21462145
scope.inTransaction(
21472146
session -> {
2148-
session.createQuery("select extract(epoch from local datetime)", Long.class).getSingleResult();
2147+
assertThat( session.createQuery("select extract(epoch from local datetime)", Long.class).getSingleResult(), is( Instant.now().getEpochSecond() ) );
21492148
session.createQuery("select extract(epoch from offset datetime)", Long.class).getSingleResult();
21502149
assertThat( session.createQuery("select extract(epoch from datetime 1974-03-23 12:35)", Long.class).getSingleResult(), is(133274100L) );
21512150
}
@@ -2692,7 +2691,6 @@ public void testHexFunction(SessionFactoryScope scope) {
26922691

26932692
@Test
26942693
@JiraKey("HHH-18837")
2695-
@RequiresDialectFeature(feature = DialectFeatureChecks.SupportsExtractEpoch.class)
26962694
public void testEpochFunction(SessionFactoryScope scope) {
26972695

26982696
LocalDate someLocalDate = LocalDate.of( 2013, 7, 5 );

hibernate-testing/src/main/java/org/hibernate/testing/orm/junit/DialectFeatureChecks.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -557,13 +557,6 @@ public boolean apply(Dialect dialect) {
557557
}
558558
}
559559

560-
public static class SupportsExtractEpoch implements DialectFeatureCheck {
561-
public boolean apply(Dialect dialect) {
562-
// I could not find any reasonable way to implement this on Informix
563-
return !( dialect instanceof InformixDialect );
564-
}
565-
}
566-
567560
public static class SupportsExtractDayOfWeekYearMonth implements DialectFeatureCheck {
568561
public boolean apply(Dialect dialect) {
569562
return !( dialect instanceof InformixDialect );

0 commit comments

Comments
 (0)