AllowAggregateParameters
QueryPassthrough が有効になっているときに、パラメータで生の集計を使用できるようにします。
データ型
bool
デフォルト値
false
解説
このオプションは、QueryPassthrough 経由でダイレクトクエリを使用する場合の文字列パラメータの処理方法に影響します。例えば、このクエリを考えてみましょう:
INSERT INTO proj.data.tbl(x) VALUES (@x)
デフォルトでは、このオプションは無効になっており、文字列パラメータは引用符で囲まれSQL 文字列にエスケープされます。つまり、任意の値を文字列パラメータとして安全に使用できますが、パラメータを生の集計値として使用できないことも意味します。
/*
* If @x is set to: test value ' contains quote
*
* Result is a valid query
*/
INSERT INTO proj.data.tbl(x) VALUES ('test value \' contains quote')
/*
* If @x is set to: ['valid', ('aggregate', 'value')]
*
* Result contains string instead of aggregate:
*/
INSERT INTO proj.data.tbl(x) VALUES ('[\'valid\', (\'aggregate\', \'value\')]')
このオプションを有効にすると、文字列パラメータはクエリに直接挿入されます。つまり、生の集計をパラメータとして使用できますが、すべての単純な文字列をエスケープする必要があることも意味します。
/*
* If @x is set to: test value ' contains quote
*
* Result is an invalid query
*/
INSERT INTO proj.data.tbl(x) VALUES (test value ' contains quote)
/*
* If @x is set to: ['valid', ('aggregate', 'value')]
*
* Result is an aggregate
*/
INSERT INTO proj.data.tbl(x) VALUES (['valid', ('aggregate', 'value')])