Skip to content

Commit bb33e58

Browse files
committed
sqlite: revert set methods
1 parent b3439a5 commit bb33e58

File tree

4 files changed

+155
-87
lines changed

4 files changed

+155
-87
lines changed

src/node_sqlite.cc

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2687,6 +2687,73 @@ void StatementSync::ExpandedSQLGetter(const FunctionCallbackInfo<Value>& args) {
26872687
args.GetReturnValue().Set(result);
26882688
}
26892689

2690+
void StatementSync::SetAllowBareNamedParameters(
2691+
const FunctionCallbackInfo<Value>& args) {
2692+
StatementSync* stmt;
2693+
ASSIGN_OR_RETURN_UNWRAP(&stmt, args.This());
2694+
Environment* env = Environment::GetCurrent(args);
2695+
THROW_AND_RETURN_ON_BAD_STATE(
2696+
env, stmt->IsFinalized(), "statement has been finalized");
2697+
2698+
if (!args[0]->IsBoolean()) {
2699+
THROW_ERR_INVALID_ARG_TYPE(
2700+
env->isolate(),
2701+
"The \"allowBareNamedParameters\" argument must be a boolean.");
2702+
return;
2703+
}
2704+
2705+
stmt->allow_bare_named_params_ = args[0]->IsTrue();
2706+
}
2707+
2708+
void StatementSync::SetAllowUnknownNamedParameters(
2709+
const FunctionCallbackInfo<Value>& args) {
2710+
StatementSync* stmt;
2711+
ASSIGN_OR_RETURN_UNWRAP(&stmt, args.This());
2712+
Environment* env = Environment::GetCurrent(args);
2713+
THROW_AND_RETURN_ON_BAD_STATE(
2714+
env, stmt->IsFinalized(), "statement has been finalized");
2715+
2716+
if (!args[0]->IsBoolean()) {
2717+
THROW_ERR_INVALID_ARG_TYPE(env->isolate(),
2718+
"The \"enabled\" argument must be a boolean.");
2719+
return;
2720+
}
2721+
2722+
stmt->allow_unknown_named_params_ = args[0]->IsTrue();
2723+
}
2724+
2725+
void StatementSync::SetReadBigInts(const FunctionCallbackInfo<Value>& args) {
2726+
StatementSync* stmt;
2727+
ASSIGN_OR_RETURN_UNWRAP(&stmt, args.This());
2728+
Environment* env = Environment::GetCurrent(args);
2729+
THROW_AND_RETURN_ON_BAD_STATE(
2730+
env, stmt->IsFinalized(), "statement has been finalized");
2731+
2732+
if (!args[0]->IsBoolean()) {
2733+
THROW_ERR_INVALID_ARG_TYPE(
2734+
env->isolate(), "The \"readBigInts\" argument must be a boolean.");
2735+
return;
2736+
}
2737+
2738+
stmt->use_big_ints_ = args[0]->IsTrue();
2739+
}
2740+
2741+
void StatementSync::SetReturnArrays(const FunctionCallbackInfo<Value>& args) {
2742+
StatementSync* stmt;
2743+
ASSIGN_OR_RETURN_UNWRAP(&stmt, args.This());
2744+
Environment* env = Environment::GetCurrent(args);
2745+
THROW_AND_RETURN_ON_BAD_STATE(
2746+
env, stmt->IsFinalized(), "statement has been finalized");
2747+
2748+
if (!args[0]->IsBoolean()) {
2749+
THROW_ERR_INVALID_ARG_TYPE(
2750+
env->isolate(), "The \"returnArrays\" argument must be a boolean.");
2751+
return;
2752+
}
2753+
2754+
stmt->return_arrays_ = args[0]->IsTrue();
2755+
}
2756+
26902757
void IllegalConstructor(const FunctionCallbackInfo<Value>& args) {
26912758
THROW_ERR_ILLEGAL_CONSTRUCTOR(Environment::GetCurrent(args));
26922759
}

src/node_sqlite.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,12 @@ class StatementSync : public BaseObject {
220220
static void SourceSQLGetter(const v8::FunctionCallbackInfo<v8::Value>& args);
221221
static void ExpandedSQLGetter(
222222
const v8::FunctionCallbackInfo<v8::Value>& args);
223+
static void SetAllowBareNamedParameters(
224+
const v8::FunctionCallbackInfo<v8::Value>& args);
225+
static void SetAllowUnknownNamedParameters(
226+
const v8::FunctionCallbackInfo<v8::Value>& args);
227+
static void SetReadBigInts(const v8::FunctionCallbackInfo<v8::Value>& args);
228+
static void SetReturnArrays(const v8::FunctionCallbackInfo<v8::Value>& args);
223229
v8::MaybeLocal<v8::Value> ColumnToValue(const int column);
224230
v8::MaybeLocal<v8::Name> ColumnNameToName(const int column);
225231
void Finalize();

test/parallel/test-sqlite-named-parameters.js

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -79,33 +79,22 @@ suite('named parameters', () => {
7979
});
8080
});
8181

82-
suite('allowUnknownNamedParameters', () => {
83-
test('unknown named parameters can be allowed', (t) => {
82+
suite('StatementSync.prototype.setAllowUnknownNamedParameters()', () => {
83+
test('unknown named parameter support can be toggled', (t) => {
8484
const db = new DatabaseSync(':memory:');
8585
t.after(() => { db.close(); });
8686
const setup = db.exec(
8787
'CREATE TABLE data(key INTEGER, val INTEGER) STRICT;'
8888
);
8989
t.assert.strictEqual(setup, undefined);
90-
const stmt = db.prepare('INSERT INTO data (key, val) VALUES ($k, $v)', {
91-
allowUnknownNamedParameters: true,
92-
});
90+
const stmt = db.prepare('INSERT INTO data (key, val) VALUES ($k, $v)');
91+
t.assert.strictEqual(stmt.setAllowUnknownNamedParameters(true), undefined);
9392
const params = { $a: 1, $b: 2, $k: 42, $y: 25, $v: 84, $z: 99 };
9493
t.assert.deepStrictEqual(
9594
stmt.run(params),
9695
{ changes: 1, lastInsertRowid: 1 },
9796
);
98-
});
99-
100-
test('unknown named parameters are rejected by default', (t) => {
101-
const db = new DatabaseSync(':memory:');
102-
t.after(() => { db.close(); });
103-
const setup = db.exec(
104-
'CREATE TABLE data(key INTEGER, val INTEGER) STRICT;'
105-
);
106-
t.assert.strictEqual(setup, undefined);
107-
const stmt = db.prepare('INSERT INTO data (key, val) VALUES ($k, $v)');
108-
const params = { $a: 1, $b: 2, $k: 42, $y: 25, $v: 84, $z: 99 };
97+
t.assert.strictEqual(stmt.setAllowUnknownNamedParameters(false), undefined);
10998
t.assert.throws(() => {
11099
stmt.run(params);
111100
}, {
@@ -121,13 +110,12 @@ suite('allowUnknownNamedParameters', () => {
121110
'CREATE TABLE data(key INTEGER PRIMARY KEY, val INTEGER) STRICT;'
122111
);
123112
t.assert.strictEqual(setup, undefined);
113+
const stmt = db.prepare('INSERT INTO data (key, val) VALUES ($k, $v)');
124114
t.assert.throws(() => {
125-
db.prepare('INSERT INTO data (key, val) VALUES ($k, $v)', {
126-
allowUnknownNamedParameters: 'true',
127-
});
115+
stmt.setAllowUnknownNamedParameters();
128116
}, {
129117
code: 'ERR_INVALID_ARG_TYPE',
130-
message: /The "options\.allowUnknownNamedParameters" argument must be a boolean/,
118+
message: /The "enabled" argument must be a boolean/,
131119
});
132120
});
133121
});

0 commit comments

Comments
 (0)