diff --git a/server/src-lib/Hasura/GraphQL/Resolve/Mutation.hs b/server/src-lib/Hasura/GraphQL/Resolve/Mutation.hs index 80c8d4853316b..03b5d5b0301db 100644 --- a/server/src-lib/Hasura/GraphQL/Resolve/Mutation.hs +++ b/server/src-lib/Hasura/GraphQL/Resolve/Mutation.hs @@ -65,7 +65,8 @@ convertRowObj -> m [(PGCol, S.SQLExp)] convertRowObj val = flip withObject val $ \_ obj -> forM (Map.toList obj) $ \(k, v) -> do - prepExp <- asPGColVal v >>= prepare + prepExpM <- asPGColValM v >>= mapM prepare + let prepExp = fromMaybe (S.SEUnsafe "NULL") prepExpM return (PGCol $ G.unName k, prepExp) mkConflictClause diff --git a/server/test/Spec.hs b/server/test/Spec.hs index ab8f81c9ca5e8..1ec239ad10e8e 100644 --- a/server/test/Spec.hs +++ b/server/test/Spec.hs @@ -51,6 +51,7 @@ gqlSpecFiles = , "insert_mutation/article_on_conflict_error_03.yaml" , "insert_mutation/person.yaml" , "insert_mutation/person_array.yaml" + , "insert_mutation/order.yaml" , "nested_select_query_article.yaml" , "select_query_article_limit_offset.yaml" , "select_query_article_limit_offset_error_01.yaml" diff --git a/server/test/testcases/create_tables.yaml b/server/test/testcases/create_tables.yaml index 3c85842a5df5e..e27168c85016d 100644 --- a/server/test/testcases/create_tables.yaml +++ b/server/test/testcases/create_tables.yaml @@ -50,3 +50,11 @@ query: city TEXT NOT NULL, resident_id INTEGER REFERENCES resident(id) ) + - type: run_sql + args: + sql: | + CREATE TABLE orders ( + id SERIAL PRIMARY KEY, + placed TIMESTAMPTZ NOT NULL, + shipped TIMESTAMPTZ + ) diff --git a/server/test/testcases/insert_mutation/order.yaml b/server/test/testcases/insert_mutation/order.yaml new file mode 100644 index 0000000000000..64ec76093501b --- /dev/null +++ b/server/test/testcases/insert_mutation/order.yaml @@ -0,0 +1,20 @@ +description: Insert into order table with a null value +url: /v1alpha1/graphql +status: 200 +query: + query: | + mutation insert_orders{ + insert_orders( + objects: [ + { + placed: "2017-08-19 14:22:11.802755+02", + shipped: null + } + ] + ) { + returning { + id + } + affected_rows + } + } diff --git a/server/test/testcases/track_tables.yaml b/server/test/testcases/track_tables.yaml index 69687347697c1..20099336deecf 100644 --- a/server/test/testcases/track_tables.yaml +++ b/server/test/testcases/track_tables.yaml @@ -24,4 +24,8 @@ query: args: schema: public name: address + - type: track_table + args: + schema: public + name: orders