Skip to content

Commit 3d6d7ff

Browse files
committed
resolve feedback
1 parent 8583747 commit 3d6d7ff

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/node_sqlite.cc

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ using v8::Value;
6666

6767
inline MaybeLocal<String> Utf8StringMaybeOneByte(Isolate* isolate,
6868
std::string_view input) {
69-
int len = static_cast<int>(input.size());
69+
const int len = static_cast<int>(input.size());
7070
if (simdutf::validate_ascii(input.data(), input.size())) {
7171
return String::NewFromOneByte(
7272
isolate,
@@ -120,7 +120,7 @@ inline MaybeLocal<String> Utf8StringMaybeOneByte(Isolate* isolate,
120120
case SQLITE_TEXT: { \
121121
const char* v = \
122122
reinterpret_cast<const char*>(sqlite3_##from##_text(__VA_ARGS__)); \
123-
int v_len = sqlite3_##from##_bytes(__VA_ARGS__); \
123+
const int v_len = sqlite3_##from##_bytes(__VA_ARGS__); \
124124
(result) = \
125125
Utf8StringMaybeOneByte((isolate), std::string_view(v, v_len)) \
126126
.As<Value>(); \
@@ -2433,6 +2433,10 @@ StatementSync::~StatementSync() {
24332433
void StatementSync::Finalize() {
24342434
sqlite3_finalize(statement_);
24352435
statement_ = nullptr;
2436+
InvalidateColumnNameCache();
2437+
}
2438+
2439+
void StatementSync::InvalidateColumnNameCache() {
24362440
cached_column_names_.clear();
24372441
}
24382442

@@ -2622,17 +2626,16 @@ MaybeLocal<Name> StatementSync::ColumnNameToName(const int column) {
26222626
.As<Name>();
26232627
}
26242628

2625-
// Returns cached internalized column name strings for this statement,
2626-
// invalidating the cache when SQLite re-prepares the statement (e.g. after
2627-
// schema changes like ALTER TABLE) detected via SQLITE_STMTSTATUS_REPREPARE.
2629+
// Populates `keys` with cached column names, rebuilding the cache if the
2630+
// statement was re-prepared.
26282631
bool StatementSync::GetCachedColumnNames(LocalVector<Name>* keys) {
26292632
Isolate* isolate = env()->isolate();
26302633

2631-
int reprepare_count =
2632-
sqlite3_stmt_status(statement_, SQLITE_STMTSTATUS_REPREPARE, 0);
2634+
const int reprepare_count =
2635+
sqlite3_stmt_status(statement_, SQLITE_STMTSTATUS_REPREPARE, false);
26332636
if (reprepare_count != cached_column_names_reprepare_count_) {
26342637
cached_column_names_.clear();
2635-
int num_cols = sqlite3_column_count(statement_);
2638+
const int num_cols = sqlite3_column_count(statement_);
26362639
if (num_cols == 0) {
26372640
cached_column_names_reprepare_count_ = reprepare_count;
26382641
return true;
@@ -2641,7 +2644,7 @@ bool StatementSync::GetCachedColumnNames(LocalVector<Name>* keys) {
26412644
for (int i = 0; i < num_cols; ++i) {
26422645
Local<Name> key;
26432646
if (!ColumnNameToName(i).ToLocal(&key)) {
2644-
cached_column_names_.clear();
2647+
InvalidateColumnNameCache();
26452648
return false;
26462649
}
26472650
cached_column_names_.emplace_back(Global<Name>(isolate, key));

src/node_sqlite.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ class StatementSync : public BaseObject {
298298
inline int ResetStatement();
299299
std::vector<v8::Global<v8::Name>> cached_column_names_;
300300
int cached_column_names_reprepare_count_ = -1;
301+
void InvalidateColumnNameCache();
301302
bool BindParams(const v8::FunctionCallbackInfo<v8::Value>& args);
302303
bool BindValue(const v8::Local<v8::Value>& value, const int index);
303304

0 commit comments

Comments
 (0)