diff --git a/dialects/postgresql/src/main/kotlin/app/cash/sqldelight/dialects/postgresql/PostgreSqlTypeResolver.kt b/dialects/postgresql/src/main/kotlin/app/cash/sqldelight/dialects/postgresql/PostgreSqlTypeResolver.kt index e2817d95f81..0b6ba03a7c7 100644 --- a/dialects/postgresql/src/main/kotlin/app/cash/sqldelight/dialects/postgresql/PostgreSqlTypeResolver.kt +++ b/dialects/postgresql/src/main/kotlin/app/cash/sqldelight/dialects/postgresql/PostgreSqlTypeResolver.kt @@ -163,6 +163,7 @@ class PostgreSqlTypeResolver(private val parentResolver: TypeResolver) : TypeRes -> IntermediateType(TEXT) "json_array_length", "jsonb_array_length" -> IntermediateType(INTEGER) "jsonb_path_exists", "jsonb_path_match", "jsonb_path_exists_tz", "jsonb_path_match_tz" -> IntermediateType(BOOLEAN) + "generate_series" -> encapsulatingType(exprList, INTEGER, BIG_INT, REAL, TIMESTAMP_TIMEZONE, TIMESTAMP) else -> null } diff --git a/sqldelight-gradle-plugin/src/test/integration-postgresql/src/main/sqldelight/app/cash/sqldelight/postgresql/integration/Functions.sq b/sqldelight-gradle-plugin/src/test/integration-postgresql/src/main/sqldelight/app/cash/sqldelight/postgresql/integration/Functions.sq index cc898f138a1..7674724a692 100644 --- a/sqldelight-gradle-plugin/src/test/integration-postgresql/src/main/sqldelight/app/cash/sqldelight/postgresql/integration/Functions.sq +++ b/sqldelight-gradle-plugin/src/test/integration-postgresql/src/main/sqldelight/app/cash/sqldelight/postgresql/integration/Functions.sq @@ -16,3 +16,10 @@ stddev(foo), regr_count(foo, bar) FROM myTable GROUP BY foo, bar; + +selectGenerateSeries: +SELECT generate_series( + CAST(:start AS TIMESTAMPTZ), + CAST(:finish AS TIMESTAMPTZ), + CAST('1 hour' AS INTERVAL) +); diff --git a/sqldelight-gradle-plugin/src/test/integration-postgresql/src/test/kotlin/app/cash/sqldelight/postgresql/integration/PostgreSqlTest.kt b/sqldelight-gradle-plugin/src/test/integration-postgresql/src/test/kotlin/app/cash/sqldelight/postgresql/integration/PostgreSqlTest.kt index 65c280cfcf9..9265f283716 100644 --- a/sqldelight-gradle-plugin/src/test/integration-postgresql/src/test/kotlin/app/cash/sqldelight/postgresql/integration/PostgreSqlTest.kt +++ b/sqldelight-gradle-plugin/src/test/integration-postgresql/src/test/kotlin/app/cash/sqldelight/postgresql/integration/PostgreSqlTest.kt @@ -449,4 +449,14 @@ class PostgreSqlTest { assertThat(mul).isEqualTo(4.5) } } + + @Test + fun testGenerateSeries() { + val start = OffsetDateTime.of(2023, 9, 1, 0, 0, 0, 0, ZoneOffset.ofHours(0)) + val finish = OffsetDateTime.of(2023, 9, 1, 5, 0, 0, 0, ZoneOffset.ofHours(0)) + val series = database.functionsQueries.selectGenerateSeries(start, finish).executeAsList() + assertThat(series.size).isEqualTo(6) + assertThat(series.first()).isEqualTo(start) + assertThat(series.last()).isEqualTo(finish) + } }