| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent a39ad67 commit 0e8af33
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3182,10 +3182,11 @@ Maybe<void> ExtractRowValues(Environment* env, | |||
| 3182 | 3182 | } | |
| 3183 | 3183 | ||
| 3184 | 3184 | MaybeLocal<Value> StatementExecutionHelper::All(Environment* env, | |
| 3185 | - DatabaseSync* db, | ||
| 3186 | - sqlite3_stmt* stmt, | ||
| 3187 | - bool return_arrays, | ||
| 3188 | - bool use_big_ints) { | ||
| 3185 | + StatementSync* statement) { | ||
| 3186 | + DatabaseSync* db = statement->db_.get(); | ||
| 3187 | + sqlite3_stmt* stmt = statement->statement_.get(); | ||
| 3188 | + const bool return_arrays = statement->return_arrays_; | ||
| 3189 | + const bool use_big_ints = statement->use_big_ints_; | ||
| 3189 | 3190 | Isolate* isolate = env->isolate(); | |
| 3190 | 3191 | EscapableHandleScope scope(isolate); | |
| 3191 | 3192 | int r; | |
@@ -3211,13 +3212,10 @@ MaybeLocal<Value> StatementExecutionHelper::All(Environment* env, | |||
| 3211 | 3212 | rows.emplace_back(row_array); | |
| 3212 | 3213 | } else { | |
| 3213 | 3214 | if (row_keys.size() == 0) { | |
| 3214 | - row_keys.reserve(num_cols); | ||
| 3215 | - for (int i = 0; i < num_cols; ++i) { | ||
| 3216 | - Local<Name> key; | ||
| 3217 | - if (!ColumnNameToName(env, stmt, i).ToLocal(&key)) { | ||
| 3218 | - return MaybeLocal<Value>(); | ||
| 3219 | - } | ||
| 3220 | - row_keys.emplace_back(key); | ||
| 3215 | + // Reuses the statement's internalized column names instead of | ||
| 3216 | + // re-interning them on every call. | ||
| 3217 | + if (!statement->GetCachedColumnNames(&row_keys)) { | ||
| 3218 | + return MaybeLocal<Value>(); | ||
| 3221 | 3219 | } | |
| 3222 | 3220 | } | |
| 3223 | 3221 | DCHECK_EQ(row_keys.size(), row_values.size()); | |
@@ -3232,9 +3230,10 @@ MaybeLocal<Value> StatementExecutionHelper::All(Environment* env, | |||
| 3232 | 3230 | } | |
| 3233 | 3231 | ||
| 3234 | 3232 | MaybeLocal<Object> StatementExecutionHelper::Run(Environment* env, | |
| 3235 | - DatabaseSync* db, | ||
| 3236 | - sqlite3_stmt* stmt, | ||
| 3237 | - bool use_big_ints) { | ||
| 3233 | + StatementSync* statement) { | ||
| 3234 | + DatabaseSync* db = statement->db_.get(); | ||
| 3235 | + sqlite3_stmt* stmt = statement->statement_.get(); | ||
| 3236 | + const bool use_big_ints = statement->use_big_ints_; | ||
| 3238 | 3237 | Isolate* isolate = env->isolate(); | |
| 3239 | 3238 | EscapableHandleScope scope(isolate); | |
| 3240 | 3239 | // Declared before the reset below so that it outlives it: sqlite3_reset() | |
@@ -3319,10 +3318,11 @@ BaseObjectPtr<StatementSyncIterator> StatementExecutionHelper::Iterate( | |||
| 3319 | 3318 | } | |
| 3320 | 3319 | ||
| 3321 | 3320 | MaybeLocal<Value> StatementExecutionHelper::Get(Environment* env, | |
| 3322 | - DatabaseSync* db, | ||
| 3323 | - sqlite3_stmt* stmt, | ||
| 3324 | - bool return_arrays, | ||
| 3325 | - bool use_big_ints) { | ||
| 3321 | + StatementSync* statement) { | ||
| 3322 | + DatabaseSync* db = statement->db_.get(); | ||
| 3323 | + sqlite3_stmt* stmt = statement->statement_.get(); | ||
| 3324 | + const bool return_arrays = statement->return_arrays_; | ||
| 3325 | + const bool use_big_ints = statement->use_big_ints_; | ||
| 3326 | 3326 | Isolate* isolate = env->isolate(); | |
| 3327 | 3327 | EscapableHandleScope scope(isolate); | |
| 3328 | 3328 | // Declared before the reset below so that it outlives it: sqlite3_reset() | |
@@ -3360,13 +3360,10 @@ MaybeLocal<Value> StatementExecutionHelper::Get(Environment* env, | |||
| 3360 | 3360 | result = Array::New(isolate, row_values.data(), row_values.size()); | |
| 3361 | 3361 | } else { | |
| 3362 | 3362 | LocalVector<Name> keys(isolate); | |
| 3363 | - keys.reserve(num_cols); | ||
| 3364 | - for (int i = 0; i < num_cols; ++i) { | ||
| 3365 | - Local<Name> key; | ||
| 3366 | - if (!ColumnNameToName(env, stmt, i).ToLocal(&key)) { | ||
| 3367 | - return MaybeLocal<Value>(); | ||
| 3368 | - } | ||
| 3369 | - keys.emplace_back(key); | ||
| 3363 | + // Reuses the statement's internalized column names instead of | ||
| 3364 | + // re-interning them on every call. | ||
| 3365 | + if (!statement->GetCachedColumnNames(&keys)) { | ||
| 3366 | + return MaybeLocal<Value>(); | ||
| 3370 | 3367 | } | |
| 3371 | 3368 | ||
| 3372 | 3369 | DCHECK_EQ(keys.size(), row_values.size()); | |
@@ -3399,12 +3396,7 @@ void StatementSync::All(const FunctionCallbackInfo<Value>& args) { | |||
| 3399 | 3396 | if (needs_reset) sqlite3_reset(stmt->statement_.get()); | |
| 3400 | 3397 | }); | |
| 3401 | 3398 | Local<Value> result; | |
| 3402 | - if (StatementExecutionHelper::All(env, | ||
| 3403 | - stmt->db_.get(), | ||
| 3404 | - stmt->statement_.get(), | ||
| 3405 | - stmt->return_arrays_, | ||
| 3406 | - stmt->use_big_ints_) | ||
| 3407 | - .ToLocal(&result)) { | ||
| 3399 | + if (StatementExecutionHelper::All(env, stmt).ToLocal(&result)) { | ||
| 3408 | 3400 | RESET_AND_CHECK( | |
| 3409 | 3401 | isolate, stmt->db_.get(), stmt->statement_.get(), needs_reset, void()); | |
| 3410 | 3402 | args.GetReturnValue().Set(result); | |
@@ -3452,12 +3444,7 @@ void StatementSync::Get(const FunctionCallbackInfo<Value>& args) { | |||
| 3452 | 3444 | } | |
| 3453 | 3445 | ||
| 3454 | 3446 | Local<Value> result; | |
| 3455 | - if (StatementExecutionHelper::Get(env, | ||
| 3456 | - stmt->db_.get(), | ||
| 3457 | - stmt->statement_.get(), | ||
| 3458 | - stmt->return_arrays_, | ||
| 3459 | - stmt->use_big_ints_) | ||
| 3460 | - .ToLocal(&result)) { | ||
| 3447 | + if (StatementExecutionHelper::Get(env, stmt).ToLocal(&result)) { | ||
| 3461 | 3448 | args.GetReturnValue().Set(result); | |
| 3462 | 3449 | } | |
| 3463 | 3450 | } | |
@@ -3478,9 +3465,7 @@ void StatementSync::Run(const FunctionCallbackInfo<Value>& args) { | |||
| 3478 | 3465 | } | |
| 3479 | 3466 | ||
| 3480 | 3467 | Local<Object> result; | |
| 3481 | - if (StatementExecutionHelper::Run( | ||
| 3482 | - env, stmt->db_.get(), stmt->statement_.get(), stmt->use_big_ints_) | ||
| 3483 | - .ToLocal(&result)) { | ||
| 3468 | + if (StatementExecutionHelper::Run(env, stmt).ToLocal(&result)) { | ||
| 3484 | 3469 | args.GetReturnValue().Set(result); | |
| 3485 | 3470 | } | |
| 3486 | 3471 | } | |
@@ -3821,9 +3806,7 @@ void SQLTagStore::Run(const FunctionCallbackInfo<Value>& args) { | |||
| 3821 | 3806 | } | |
| 3822 | 3807 | ||
| 3823 | 3808 | Local<Object> result; | |
| 3824 | - if (StatementExecutionHelper::Run( | ||
| 3825 | - env, stmt->db_.get(), stmt->statement_.get(), stmt->use_big_ints_) | ||
| 3826 | - .ToLocal(&result)) { | ||
| 3809 | + if (StatementExecutionHelper::Run(env, stmt.get()).ToLocal(&result)) { | ||
| 3827 | 3810 | args.GetReturnValue().Set(result); | |
| 3828 | 3811 | } | |
| 3829 | 3812 | } | |
@@ -3881,12 +3864,7 @@ void SQLTagStore::Get(const FunctionCallbackInfo<Value>& args) { | |||
| 3881 | 3864 | } | |
| 3882 | 3865 | ||
| 3883 | 3866 | Local<Value> result; | |
| 3884 | - if (StatementExecutionHelper::Get(env, | ||
| 3885 | - stmt->db_.get(), | ||
| 3886 | - stmt->statement_.get(), | ||
| 3887 | - stmt->return_arrays_, | ||
| 3888 | - stmt->use_big_ints_) | ||
| 3889 | - .ToLocal(&result)) { | ||
| 3867 | + if (StatementExecutionHelper::Get(env, stmt.get()).ToLocal(&result)) { | ||
| 3890 | 3868 | args.GetReturnValue().Set(result); | |
| 3891 | 3869 | } | |
| 3892 | 3870 | } | |
@@ -3918,12 +3896,7 @@ void SQLTagStore::All(const FunctionCallbackInfo<Value>& args) { | |||
| 3918 | 3896 | if (needs_reset) sqlite3_reset(stmt->statement_.get()); | |
| 3919 | 3897 | }); | |
| 3920 | 3898 | Local<Value> result; | |
| 3921 | - if (StatementExecutionHelper::All(env, | ||
| 3922 | - stmt->db_.get(), | ||
| 3923 | - stmt->statement_.get(), | ||
| 3924 | - stmt->return_arrays_, | ||
| 3925 | - stmt->use_big_ints_) | ||
| 3926 | - .ToLocal(&result)) { | ||
| 3899 | + if (StatementExecutionHelper::All(env, stmt.get()).ToLocal(&result)) { | ||
| 3927 | 3900 | RESET_AND_CHECK( | |
| 3928 | 3901 | isolate, stmt->db_.get(), stmt->statement_.get(), needs_reset, void()); | |
| 3929 | 3902 | args.GetReturnValue().Set(result); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -178,14 +178,9 @@ using StatementPtr = DeleteFnPtr<sqlite3_stmt, FinalizeStatement>; | |||
| 178 | 178 | class StatementExecutionHelper { | |
| 179 | 179 | public: | |
| 180 | 180 | static v8::MaybeLocal<v8::Value> All(Environment* env, | |
| 181 | - DatabaseSync* db, | ||
| 182 | - sqlite3_stmt* stmt, | ||
| 183 | - bool return_arrays, | ||
| 184 | - bool use_big_ints); | ||
| 181 | + StatementSync* statement); | ||
| 185 | 182 | static v8::MaybeLocal<v8::Object> Run(Environment* env, | |
| 186 | - DatabaseSync* db, | ||
| 187 | - sqlite3_stmt* stmt, | ||
| 188 | - bool use_big_ints); | ||
| 183 | + StatementSync* statement); | ||
| 189 | 184 | static BaseObjectPtr<StatementSyncIterator> Iterate( | |
| 190 | 185 | Environment* env, BaseObjectPtr<StatementSync> stmt); | |
| 191 | 186 | static v8::MaybeLocal<v8::Value> ColumnToValue(Environment* env, | |
@@ -196,10 +191,7 @@ class StatementExecutionHelper { | |||
| 196 | 191 | sqlite3_stmt* stmt, | |
| 197 | 192 | const int column); | |
| 198 | 193 | static v8::MaybeLocal<v8::Value> Get(Environment* env, | |
| 199 | - DatabaseSync* db, | ||
| 200 | - sqlite3_stmt* stmt, | ||
| 201 | - bool return_arrays, | ||
| 202 | - bool use_big_ints); | ||
| 194 | + StatementSync* statement); | ||
| 203 | 195 | }; | |
| 204 | 196 | ||
| 205 | 197 | class DatabaseSync; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments