expectation:"DELETE FROM \"mySchema\".\"myTable\" WHERE \"id\" IN (SELECT \"id\" FROM \"mySchema\".\"myTable\" WHERE \"name\" = 'foo'';DROP TABLE mySchema.myTable;' LIMIT 10)"
},{
arguments:['myTable',{name:'foo'},{limit:null}],
expectation:"DELETE FROM \"myTable\" WHERE \"name\" = 'foo'"
},
// Variants when quoteIdentifiers is false
{
arguments:['myTable',{name:'foo'}],
expectation:"DELETE FROM myTable WHERE id IN (SELECT id FROM myTable WHERE name = 'foo' LIMIT 1)",
context:{options:{quoteIdentifiers:false}}
},{
arguments:['myTable',1],
expectation:'DELETE FROM myTable WHERE id IN (SELECT id FROM myTable WHERE id = 1 LIMIT 1)',
context:{options:{quoteIdentifiers:false}}
},{
arguments:['myTable',1,{limit:10}],
expectation:'DELETE FROM myTable WHERE id IN (SELECT id FROM myTable WHERE id = 1 LIMIT 10)',
default:"DELETE FROM [public.test_users] WHERE `name` = 'foo'",
postgres:'DELETE FROM "public"."test_users" WHERE "name" = \'foo\'',
mssql:"DELETE FROM [public].[test_users] WHERE [name] = N'foo'; SELECT @@ROWCOUNT AS AFFECTEDROWS;"
}
);
});
});
suite('delete with limit',function(){
varoptions={
table:User.getTableName(),
where:{name:"foo';DROP TABLE mySchema.myTable;"},
limit:10
};
test(util.inspect(options,{depth:2}),function(){
returnexpectsql(
sql.deleteQuery(
options.table,
options.where,
options,
User
),{
postgres:'DELETE FROM "public"."test_users" WHERE "id" IN (SELECT "id" FROM "public"."test_users" WHERE "name" = \'foo\'\';DROP TABLE mySchema.myTable;\' LIMIT 10)',
sqlite:"DELETE FROM `public.test_users` WHERE `name` = 'foo'';DROP TABLE mySchema.myTable;'",
mssql:"DELETE TOP(10) FROM [public].[test_users] WHERE [name] = N'foo'';DROP TABLE mySchema.myTable;'; SELECT @@ROWCOUNT AS AFFECTEDROWS;",
default:"DELETE FROM [public.test_users] WHERE `name` = 'foo\\';DROP TABLE mySchema.myTable;' LIMIT 10"
}
);
});
});
suite('delete when the primary key has a different field name',function(){