@@ -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
107108MaybeLocal<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
113115MaybeLocal<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
120127inline 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) {
15301537MaybeLocal<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
15851552MaybeLocal<Name> StatementSync::ColumnNameToName (const int column) {
0 commit comments