Skip to content

Commit a2e75fb

Browse files
committed
done
1 parent 5aefc71 commit a2e75fb

File tree

1 file changed

+18
-51
lines changed

1 file changed

+18
-51
lines changed

src/node_sqlite.cc

Lines changed: 18 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ using v8::Value;
6767
} \
6868
} while (0)
6969

70-
#define SQLITE_VALUE_TO_JS(from, isolate, use_big_int_args, ...) \
70+
#define SQLITE_VALUE_TO_JS( \
71+
from, unreachable_message, isolate, use_big_int_args, ...) \
7172
switch (sqlite3_##from##_type(__VA_ARGS__)) { \
7273
case SQLITE_INTEGER: { \
7374
sqlite3_int64 val = sqlite3_##from##_int64(__VA_ARGS__); \
@@ -101,20 +102,26 @@ using v8::Value;
101102
return Uint8Array::New(ab, 0, size); \
102103
} \
103104
default: \
104-
UNREACHABLE("Bad SQLite value"); \
105+
UNREACHABLE(unreachable_message); \
105106
}
106107

107108
MaybeLocal<Value> SQLiteValueToJS(Isolate* isolate,
108-
sqlite3_value* sqlite_value,
109-
bool use_big_int_args) {
110-
SQLITE_VALUE_TO_JS(value, isolate, use_big_int_args, sqlite_value);
109+
bool use_big_int_args,
110+
sqlite3_value* sqlite_value) {
111+
SQLITE_VALUE_TO_JS(
112+
value, "Bad SQLite value", isolate, use_big_int_args, sqlite_value);
111113
}
112114

113115
MaybeLocal<Value> SQLiteValueToJS(Isolate* isolate,
116+
bool use_big_int_args,
114117
sqlite3_stmt* stmt,
115-
int column,
116-
bool use_big_int_args) {
117-
SQLITE_VALUE_TO_JS(column, isolate, use_big_int_args, stmt, column);
118+
int column) {
119+
SQLITE_VALUE_TO_JS(column,
120+
"Bad SQLite column type",
121+
isolate,
122+
use_big_int_args,
123+
stmt,
124+
column);
118125
}
119126

120127
inline MaybeLocal<Object> CreateSQLiteError(Isolate* isolate,
@@ -407,7 +414,7 @@ void UserDefinedFunction::xFunc(sqlite3_context* ctx,
407414
for (int i = 0; i < argc; ++i) {
408415
sqlite3_value* value = argv[i];
409416
MaybeLocal<Value> js_val =
410-
SQLiteValueToJS(isolate, value, self->use_bigint_args_);
417+
SQLiteValueToJS(isolate, self->use_bigint_args_, value);
411418

412419
if (js_val.IsEmpty()) {
413420
// Ignore the SQLite error because a JavaScript exception is pending.
@@ -1530,56 +1537,16 @@ bool StatementSync::BindValue(const Local<Value>& value, const int index) {
15301537
MaybeLocal<Value> StatementSync::ColumnToValue(const int column) {
15311538
Isolate* isolate = env()->isolate();
15321539
MaybeLocal<Value> js_val =
1533-
SQLiteValueToJS(isolate, statement_, column, use_big_ints_);
1540+
SQLiteValueToJS(isolate, use_big_ints_, statement_, column);
15341541

15351542
if (js_val.IsEmpty()) {
1536-
THROW_ERR_OUT_OF_RANGE(env()->isolate(),
1543+
THROW_ERR_OUT_OF_RANGE(isolate,
15371544
"The value of column %d is too large to be "
15381545
"represented as a JavaScript number: %" PRId64,
15391546
column,
15401547
sqlite3_column_int64(statement_, column));
15411548
return MaybeLocal<Value>();
15421549
}
1543-
1544-
/* switch (sqlite3_column_type(statement_, column)) { */
1545-
/* case SQLITE_INTEGER: { */
1546-
/* sqlite3_int64 value = sqlite3_column_int64(statement_, column); */
1547-
/* if (use_big_ints_) { */
1548-
/* return BigInt::New(env()->isolate(), value); */
1549-
/* } else if (std::abs(value) <= kMaxSafeJsInteger) { */
1550-
/* return Number::New(env()->isolate(), value); */
1551-
/* } else { */
1552-
/* THROW_ERR_OUT_OF_RANGE(env()->isolate(), */
1553-
/* "The value of column %d is too large to be " */
1554-
/* "represented as a JavaScript number: %" PRId64, */
1555-
/* column, */
1556-
/* value); */
1557-
/* return MaybeLocal<Value>(); */
1558-
/* } */
1559-
/* } */
1560-
/* case SQLITE_FLOAT: */
1561-
/* return Number::New(env()->isolate(), */
1562-
/* sqlite3_column_double(statement_, column)); */
1563-
/* case SQLITE_TEXT: { */
1564-
/* const char* value = reinterpret_cast<const char*>( */
1565-
/* sqlite3_column_text(statement_, column)); */
1566-
/* return String::NewFromUtf8(env()->isolate(), value).As<Value>(); */
1567-
/* } */
1568-
/* case SQLITE_NULL: */
1569-
/* return Null(env()->isolate()); */
1570-
/* case SQLITE_BLOB: { */
1571-
/* size_t size = */
1572-
/* static_cast<size_t>(sqlite3_column_bytes(statement_, column)); */
1573-
/* auto data = reinterpret_cast<const uint8_t*>( */
1574-
/* sqlite3_column_blob(statement_, column)); */
1575-
/* auto store = ArrayBuffer::NewBackingStore(env()->isolate(), size); */
1576-
/* memcpy(store->Data(), data, size); */
1577-
/* auto ab = ArrayBuffer::New(env()->isolate(), std::move(store)); */
1578-
/* return Uint8Array::New(ab, 0, size); */
1579-
/* } */
1580-
/* default: */
1581-
/* UNREACHABLE("Bad SQLite column type"); */
1582-
/* } */
15831550
}
15841551

15851552
MaybeLocal<Name> StatementSync::ColumnNameToName(const int column) {

0 commit comments

Comments
 (0)