@@ -58,13 +58,23 @@ describe('ClickHouseDriver', () => {
5858 [ ]
5959 ) ;
6060
61- await driver . query ( 'INSERT INTO test.types_test VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)' , [
61+ function mkPlaceholdersTuple ( len : number ) : string {
62+ const parts = new Array ( len ) . fill ( '' ) . map ( ( _ , idx ) => driver . param ( idx ) ) ;
63+ return `(${ parts . join ( ',' ) } )` ;
64+ }
65+
66+ async function insert ( table : string , values : Array < unknown > ) : Promise < void > {
67+ const placeholders = mkPlaceholdersTuple ( values . length ) ;
68+ await driver . query ( `INSERT INTO ${ table } VALUES ${ placeholders } ` , values ) ;
69+ }
70+
71+ await insert ( 'test.types_test' , [
6272 '2020-01-01' , '2020-01-01 00:00:00' , '2020-01-01 00:00:00.000' , '2020-01-01 00:00:00.000000' , '2020-01-01 00:00:00.000000000' , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1.01 , 1.01 , 1.01 , 'hello' , 'world'
6373 ] ) ;
64- await driver . query ( 'INSERT INTO test.types_test VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ', [
74+ await insert ( ' test.types_test', [
6575 '2020-01-02' , '2020-01-02 00:00:00' , '2020-01-02 00:00:00.123' , '2020-01-02 00:00:00.123456' , '2020-01-02 00:00:00.123456789' , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2.02 , 2.02 , 2.02 , 'hello' , 'world'
6676 ] ) ;
67- await driver . query ( 'INSERT INTO test.types_test VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ', [
77+ await insert ( ' test.types_test', [
6878 '2020-01-03' , '2020-01-03 00:00:00' , '2020-01-03 00:00:00.234' , '2020-01-03 00:00:00.234567' , '2020-01-03 00:00:00.234567890' , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3.03 , 3.03 , 3.03 , 'hello' , 'world'
6979 ] ) ;
7080 } ) ;
@@ -205,8 +215,8 @@ describe('ClickHouseDriver', () => {
205215 try {
206216 await driver . createSchemaIfNotExists ( name ) ;
207217 await driver . query ( `CREATE TABLE ${ name } .test (x Int32, s String) ENGINE Log` , [ ] ) ;
208- await driver . query ( `INSERT INTO ${ name } .test VALUES (?, ? ), (?, ? ), (?, ? )` , [ 1 , 'str1' , 2 , 'str2' , 3 , 'str3' ] ) ;
209- const values = await driver . query ( `SELECT * FROM ${ name } .test WHERE x = ? ` , [ 2 ] ) ;
218+ await driver . query ( `INSERT INTO ${ name } .test VALUES ({p0:Int32}, {p1:String} ), ({p2:Int32}, {p3:String} ), ({p4:Int32}, {p5:String} )` , [ 1 , 'str1' , 2 , 'str2' , 3 , 'str3' ] ) ;
219+ const values = await driver . query ( `SELECT * FROM ${ name } .test WHERE x = {p0:Int32} ` , [ 2 ] ) ;
210220 expect ( values ) . toEqual ( [ { x : '2' , s : 'str2' } ] ) ;
211221 } finally {
212222 await driver . query ( `DROP DATABASE ${ name } ` , [ ] ) ;
@@ -220,10 +230,10 @@ describe('ClickHouseDriver', () => {
220230 try {
221231 await driver . createSchemaIfNotExists ( name ) ;
222232 await driver . query ( `CREATE TABLE ${ name } .a (x Int32, s String) ENGINE Log` , [ ] ) ;
223- await driver . query ( `INSERT INTO ${ name } .a VALUES (?, ? ), (?, ? ), (?, ? )` , [ 1 , 'str1' , 2 , 'str2' , 3 , 'str3' ] ) ;
233+ await driver . query ( `INSERT INTO ${ name } .a VALUES ({p0:Int32}, {p1:String} ), ({p2:Int32}, {p3:String} ), ({p4:Int32}, {p5:String} )` , [ 1 , 'str1' , 2 , 'str2' , 3 , 'str3' ] ) ;
224234
225235 await driver . query ( `CREATE TABLE ${ name } .b (x Int32, s String) ENGINE Log` , [ ] ) ;
226- await driver . query ( `INSERT INTO ${ name } .b VALUES (?, ? ), (?, ? ), (?, ? )` , [ 2 , 'str2' , 3 , 'str3' , 4 , 'str4' ] ) ;
236+ await driver . query ( `INSERT INTO ${ name } .b VALUES ({p0:Int32}, {p1:String} ), ({p2:Int32}, {p3:String} ), ({p4:Int32}, {p5:String} )` , [ 2 , 'str2' , 3 , 'str3' , 4 , 'str4' ] ) ;
227237
228238 const values = await driver . query ( `SELECT * FROM ${ name } .a LEFT OUTER JOIN ${ name } .b ON a.x = b.x` , [ ] ) ;
229239 expect ( values ) . toEqual ( [
@@ -245,7 +255,7 @@ describe('ClickHouseDriver', () => {
245255
246256 it ( 'datetime with specific timezone' , async ( ) => {
247257 await doWithDriver ( async ( driver ) => {
248- const rows = await driver . query ( 'SELECT toDateTime(? , \'Asia/Istanbul\') as dt' , [
258+ const rows = await driver . query ( 'SELECT toDateTime({p0:String} , \'Asia/Istanbul\') as dt' , [
249259 '2020-01-01 00:00:00'
250260 ] ) ;
251261 expect ( rows ) . toEqual ( [ {
0 commit comments