Skip to content

Commit 5d2c232

Browse files
committed
Add custom set returning function test.
1 parent cf0923f commit 5d2c232

File tree

7 files changed

+76
-6
lines changed

7 files changed

+76
-6
lines changed

postgres/statement.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ import (
55
)
66

77
// RawStatement creates new sql statements from raw query and optional map of named arguments
8-
func RawStatement(rawQuery string, namedArguments ...RawArgs) Statement {
8+
func RawStatement(rawQuery string, namedArguments ...RawArgs) jet.SerializerStatement {
99
return jet.RawStatement(Dialect, rawQuery, namedArguments...)
1010
}

sqlite/statement.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ import (
55
)
66

77
// RawStatement creates new sql statements from raw query and optional map of named arguments
8-
func RawStatement(rawQuery string, namedArguments ...RawArgs) Statement {
8+
func RawStatement(rawQuery string, namedArguments ...RawArgs) jet.SerializerStatement {
99
return jet.RawStatement(Dialect, rawQuery, namedArguments...)
1010
}

tests/mysql/raw_statement_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,10 @@ func TestRawStatementSelectWithArguments(t *testing.T) {
8484
}
8585

8686
func TestRawStatementRows(t *testing.T) {
87-
stmt := RawStatement(`
87+
88+
var stmt Statement
89+
90+
stmt = RawStatement(`
8891
SELECT actor.actor_id AS "actor.actor_id",
8992
actor.first_name AS "actor.first_name",
9093
actor.last_name AS "actor.last_name",

tests/postgres/raw_statements_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,9 @@ RETURNING link.id AS "link.id",
141141
}
142142

143143
func TestRawStatementRows(t *testing.T) {
144-
stmt := RawStatement(`
144+
var stmt Statement
145+
146+
stmt = RawStatement(`
145147
SELECT actor.actor_id AS "actor.actor_id",
146148
actor.first_name AS "actor.first_name",
147149
actor.last_name AS "actor.last_name",

tests/postgres/select_test.go

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3867,6 +3867,68 @@ ORDER BY film.film_id;
38673867
`)
38683868
}
38693869

3870+
func TestCustomSetReturningFunction(t *testing.T) {
3871+
skipForCockroachDB(t) // no set Set-Returning Functions
3872+
3873+
inventoryID := IntegerColumn("inventoryID")
3874+
filmsInStock := CTE("film_in_stock", inventoryID)
3875+
3876+
stmt := WITH(
3877+
filmsInStock.AS(
3878+
RawStatement("SELECT * FROM dvds.film_in_stock(#filmID, #storeID)",
3879+
RawArgs{
3880+
"#filmID": 1,
3881+
"#storeID": 2,
3882+
}),
3883+
),
3884+
)(
3885+
SELECT(
3886+
Inventory.AllColumns,
3887+
).FROM(Inventory.
3888+
INNER_JOIN(filmsInStock, Inventory.InventoryID.EQ(inventoryID)),
3889+
),
3890+
)
3891+
3892+
testutils.AssertStatementSql(t, stmt, `
3893+
WITH film_in_stock ("inventoryID") AS (SELECT * FROM dvds.film_in_stock($1, $2)
3894+
)
3895+
SELECT inventory.inventory_id AS "inventory.inventory_id",
3896+
inventory.film_id AS "inventory.film_id",
3897+
inventory.store_id AS "inventory.store_id",
3898+
inventory.last_update AS "inventory.last_update"
3899+
FROM dvds.inventory
3900+
INNER JOIN film_in_stock ON (inventory.inventory_id = film_in_stock."inventoryID");
3901+
`)
3902+
3903+
var dest []model.Inventory
3904+
3905+
err := stmt.Query(db, &dest)
3906+
3907+
require.NoError(t, err)
3908+
testutils.AssertJSON(t, dest, `
3909+
[
3910+
{
3911+
"InventoryID": 5,
3912+
"FilmID": 1,
3913+
"StoreID": 2,
3914+
"LastUpdate": "2006-02-15T10:09:17Z"
3915+
},
3916+
{
3917+
"InventoryID": 7,
3918+
"FilmID": 1,
3919+
"StoreID": 2,
3920+
"LastUpdate": "2006-02-15T10:09:17Z"
3921+
},
3922+
{
3923+
"InventoryID": 8,
3924+
"FilmID": 1,
3925+
"StoreID": 2,
3926+
"LastUpdate": "2006-02-15T10:09:17Z"
3927+
}
3928+
]
3929+
`)
3930+
}
3931+
38703932
var customer0 = model.Customer{
38713933
CustomerID: 1,
38723934
StoreID: 1,

tests/sqlite/raw_statement_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@ func TestRawStatementSelectWithArguments(t *testing.T) {
8282
}
8383

8484
func TestRawStatementRows(t *testing.T) {
85-
stmt := RawStatement(`
85+
86+
var stmt Statement
87+
88+
stmt = RawStatement(`
8689
SELECT actor.actor_id AS "actor.actor_id",
8790
actor.first_name AS "actor.first_name",
8891
actor.last_name AS "actor.last_name",

tests/testdata

0 commit comments

Comments
 (0)