@ -37,7 +37,7 @@ class QueryRunner {
arrays = [ ]
arrays = [ ]
for ( let binding of bindings ) {
for ( let binding of bindings ) {
// look for array/list operations in the SQL statement, which will need handled later
// look for array/list operations in the SQL statement, which will need handled later
const listRegex = new RegExp ( ` (in|IN|In|iN)( )+ ${ binding } ` )
const listRegex = new RegExp ( ` (in|IN|In|iN)( )+[(]? ${ binding } [)]? ` )
const listRegexMatch = sql . match ( listRegex )
const listRegexMatch = sql . match ( listRegex )
// check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
// check if the variable was used as part of a string concat e.g. 'Hello {{binding}}'
const charConstRegex = new RegExp ( ` '[^']* ${ binding } [^']*' ` )
const charConstRegex = new RegExp ( ` '[^']* ${ binding } [^']*' ` )
@ -63,12 +63,14 @@ class QueryRunner {
","
","
)
)
// build a string like ($1, $2, $3)
// build a string like ($1, $2, $3)
sql = sql . replace (
let replacement = ` ${ Array . apply ( null , Array ( value . length ) )
binding ,
. map ( ( ) => integration . getBindingIdentifier ( ) )
` ( ${ Array . apply ( null , Array ( value . length ) )
. join ( "," ) } `
. map ( ( ) => integration . getBindingIdentifier ( ) )
// check if parentheses are needed
. join ( "," ) } ) `
if ( ! listRegexMatch [ 0 ] . includes ( ` ( ${ binding } ) ` ) ) {
)
replacement = ` ( ${ replacement } ) `
}
sql = sql . replace ( binding , replacement )
} else {
} else {
sql = sql . replace ( binding , integration . getBindingIdentifier ( ) )
sql = sql . replace ( binding , integration . getBindingIdentifier ( ) )
}
}