sqlite: restore changes from #55373 · nodejs/node@1913a4a
@@ -1510,18 +1510,22 @@ void StatementSync::All(const FunctionCallbackInfo<Value>& args) {
15101510auto reset = OnScopeLeave([&]() { sqlite3_reset(stmt->statement_); });
15111511int num_cols = sqlite3_column_count(stmt->statement_);
15121512 LocalVector<Value> rows(isolate);
1513+ LocalVector<Name> row_keys(isolate);
15131514while ((r = sqlite3_step(stmt->statement_)) == SQLITE_ROW) {
1514- LocalVector<Name> row_keys(isolate);
1515- row_keys.reserve(num_cols);
1515+if (row_keys.size() == 0) {
1516+ row_keys.reserve(num_cols);
1517+for (int i = 0; i < num_cols; ++i) {
1518+ Local<Name> key;
1519+if (!stmt->ColumnNameToName(i).ToLocal(&key)) return;
1520+ row_keys.emplace_back(key);
1521+ }
1522+ }
1523+15161524 LocalVector<Value> row_values(isolate);
15171525 row_values.reserve(num_cols);
1518-15191526for (int i = 0; i < num_cols; ++i) {
1520- Local<Name> key;
1521-if (!stmt->ColumnNameToName(i).ToLocal(&key)) return;
15221527 Local<Value> val;
15231528if (!stmt->ColumnToValue(i).ToLocal(&val)) return;
1524- row_keys.emplace_back(key);
15251529 row_values.emplace_back(val);
15261530 }
15271531