From 9707f03e018a3cccac582ea08620049cfa065bf2 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Fri, 14 May 2021 15:31:16 -0600 Subject: [PATCH] fix(OracleGrammar): Only use batch insert syntax when needed --- models/Grammars/OracleGrammar.cfc | 4 +++- tests/specs/Query/OracleQueryBuilderSpec.cfc | 13 +++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/models/Grammars/OracleGrammar.cfc b/models/Grammars/OracleGrammar.cfc index ac597621..0bbd9c6e 100644 --- a/models/Grammars/OracleGrammar.cfc +++ b/models/Grammars/OracleGrammar.cfc @@ -111,6 +111,8 @@ component extends="qb.models.Grammars.BaseGrammar" singleton { throw( type = "UnsupportedOperation", message = "This grammar does not support a RETURNING clause" ); } + var multiple = arguments.values.len() > 1; + var columnsString = arguments.columns .map( function( column ) { return wrapColumn( column.formatted ); @@ -130,7 +132,7 @@ component extends="qb.models.Grammars.BaseGrammar" singleton { .toList( ", " ) & ")"; } ) .toList( " " ); - return trim( "INSERT ALL #placeholderString# SELECT 1 FROM dual" ); + return trim( "INSERT#multiple ? " ALL" : ""# #placeholderString##multiple ? " SELECT 1 FROM dual" : ""#" ); } /** diff --git a/tests/specs/Query/OracleQueryBuilderSpec.cfc b/tests/specs/Query/OracleQueryBuilderSpec.cfc index 3911f8c1..6ce82091 100644 --- a/tests/specs/Query/OracleQueryBuilderSpec.cfc +++ b/tests/specs/Query/OracleQueryBuilderSpec.cfc @@ -610,14 +610,11 @@ component extends="tests.resources.AbstractQueryBuilderSpec" { } function insertSingleColumn() { - return { sql: "INSERT ALL INTO ""USERS"" (""EMAIL"") VALUES (?) SELECT 1 FROM dual", bindings: [ "foo" ] }; + return { sql: "INSERT INTO ""USERS"" (""EMAIL"") VALUES (?)", bindings: [ "foo" ] }; } function insertMultipleColumns() { - return { - sql: "INSERT ALL INTO ""USERS"" (""EMAIL"", ""NAME"") VALUES (?, ?) SELECT 1 FROM dual", - bindings: [ "foo", "bar" ] - }; + return { sql: "INSERT INTO ""USERS"" (""EMAIL"", ""NAME"") VALUES (?, ?)", bindings: [ "foo", "bar" ] }; } function batchInsert() { @@ -629,14 +626,14 @@ component extends="tests.resources.AbstractQueryBuilderSpec" { function insertWithRaw() { return { - sql: "INSERT ALL INTO ""USERS"" (""CREATED_DATE"", ""EMAIL"") VALUES (now(), ?) SELECT 1 FROM dual", + sql: "INSERT INTO ""USERS"" (""CREATED_DATE"", ""EMAIL"") VALUES (now(), ?)", bindings: [ "john@example.com" ] }; } function insertWithNull() { return { - sql: "INSERT ALL INTO ""USERS"" (""EMAIL"", ""OPTIONAL_FIELD"") VALUES (?, ?) SELECT 1 FROM dual", + sql: "INSERT INTO ""USERS"" (""EMAIL"", ""OPTIONAL_FIELD"") VALUES (?, ?)", bindings: [ "john@example.com", "NULL" ] }; } @@ -672,7 +669,7 @@ component extends="tests.resources.AbstractQueryBuilderSpec" { } function updateOrInsertNotExists() { - return { sql: "INSERT ALL INTO ""USERS"" (""NAME"") VALUES (?) SELECT 1 FROM dual", bindings: [ "baz" ] }; + return { sql: "INSERT INTO ""USERS"" (""NAME"") VALUES (?)", bindings: [ "baz" ] }; } function updateOrInsertExists() {