Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
node-sqlite3
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
俞永鹏
node-sqlite3
Commits
942b2f69
Commit
942b2f69
authored
Feb 10, 2011
by
Konstantin Käfer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
acquire proper error messages for .step()
parent
37cccc89
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
58 additions
and
6 deletions
+58
-6
sqlite.js
sqlite.js
+39
-0
statement.cc
src/statement.cc
+17
-5
statement.h
src/statement.h
+2
-1
No files found.
sqlite.js
View file @
942b2f69
...
@@ -225,3 +225,42 @@ Database.prototype.insertMany = function (table, columns, rows, callback) {
...
@@ -225,3 +225,42 @@ Database.prototype.insertMany = function (table, columns, rows, callback) {
});
});
}
}
exports
.
fromErrorCode
=
function
(
code
)
{
switch
(
code
)
{
case
0
:
return
"SQLITE_OK"
;
case
1
:
return
"SQLITE_ERROR"
;
case
2
:
return
"SQLITE_INTERNAL"
;
case
3
:
return
"SQLITE_PERM"
;
case
4
:
return
"SQLITE_ABORT"
;
case
5
:
return
"SQLITE_BUSY"
;
case
6
:
return
"SQLITE_LOCKED"
;
case
7
:
return
"SQLITE_NOMEM"
;
case
8
:
return
"SQLITE_READONLY"
;
case
9
:
return
"SQLITE_INTERRUPT"
;
case
10
:
return
"SQLITE_IOERR"
;
case
11
:
return
"SQLITE_CORRUPT"
;
case
12
:
return
"SQLITE_NOTFOUND"
;
case
13
:
return
"SQLITE_FULL"
;
case
14
:
return
"SQLITE_CANTOPEN"
;
case
15
:
return
"SQLITE_PROTOCOL"
;
case
16
:
return
"SQLITE_EMPTY"
;
case
17
:
return
"SQLITE_SCHEMA"
;
case
18
:
return
"SQLITE_TOOBIG"
;
case
19
:
return
"SQLITE_CONSTRAINT"
;
case
20
:
return
"SQLITE_MISMATCH"
;
case
21
:
return
"SQLITE_MISUSE"
;
case
22
:
return
"SQLITE_NOLFS"
;
case
23
:
return
"SQLITE_AUTH"
;
case
24
:
return
"SQLITE_FORMAT"
;
case
25
:
return
"SQLITE_RANGE"
;
case
26
:
return
"SQLITE_NOTADB"
;
}
};
exports
.
sanitizeError
=
function
(
err
,
data
)
{
err
.
message
=
exports
.
fromErrorCode
(
err
.
errno
)
+
', '
+
err
.
message
+
' in query "'
+
err
.
query
+
'" with values '
+
JSON
.
stringify
(
data
,
false
,
4
);
return
err
;
};
src/statement.cc
View file @
942b2f69
...
@@ -513,8 +513,11 @@ int Statement::EIO_AfterStep(eio_req *req) {
...
@@ -513,8 +513,11 @@ int Statement::EIO_AfterStep(eio_req *req) {
Local
<
Value
>
argv
[
2
];
Local
<
Value
>
argv
[
2
];
if
(
sto
->
error_
)
{
if
(
sto
->
error_
)
{
argv
[
0
]
=
Exception
::
Error
(
Local
<
Value
>
e
=
Exception
::
Error
(
sto
->
error_msg_
);
String
::
New
(
sqlite3_errmsg
(
db
)));
Local
<
Object
>
obj
=
e
->
ToObject
();
obj
->
Set
(
NODE_PSYMBOL
(
"errno"
),
Integer
::
New
(
sto
->
error_
));
obj
->
Set
(
NODE_PSYMBOL
(
"query"
),
String
::
NewSymbol
(
sqlite3_sql
(
sto
->
stmt_
)));
argv
[
0
]
=
e
;
}
}
else
{
else
{
argv
[
0
]
=
Local
<
Value
>::
New
(
Undefined
());
argv
[
0
]
=
Local
<
Value
>::
New
(
Undefined
());
...
@@ -622,6 +625,7 @@ int Statement::EIO_Step(eio_req *req) {
...
@@ -622,6 +625,7 @@ int Statement::EIO_Step(eio_req *req) {
sqlite3_stmt
*
stmt
=
sto
->
stmt_
;
sqlite3_stmt
*
stmt
=
sto
->
stmt_
;
assert
(
stmt
);
assert
(
stmt
);
int
rc
;
int
rc
;
const
char
*
msg
;
// check if we have already taken a step immediately after prepare
// check if we have already taken a step immediately after prepare
if
(
sto
->
first_rc_
!=
-
1
)
{
if
(
sto
->
first_rc_
!=
-
1
)
{
...
@@ -633,10 +637,16 @@ int Statement::EIO_Step(eio_req *req) {
...
@@ -633,10 +637,16 @@ int Statement::EIO_Step(eio_req *req) {
sto
->
first_rc_
=
-
1
;
sto
->
first_rc_
=
-
1
;
}
}
else
{
else
{
rc
=
req
->
result
=
sqlite3_step
(
stmt
);
sqlite3
*
db
=
sqlite3_db_handle
(
stmt
);
sqlite3_mutex
*
mtx
=
sqlite3_db_mutex
(
db
);
sqlite3_mutex_enter
(
mtx
);
rc
=
sqlite3_step
(
stmt
);
if
(
rc
!=
SQLITE_ROW
&&
rc
!=
SQLITE_DONE
)
msg
=
sqlite3_errmsg
(
db
);
sqlite3_mutex_leave
(
mtx
);
req
->
result
=
rc
;
}
}
sto
->
error_
=
false
;
sto
->
error_
=
SQLITE_OK
;
if
(
rc
==
SQLITE_ROW
)
{
if
(
rc
==
SQLITE_ROW
)
{
// If this pointer is NULL, look up and store the columns names.
// If this pointer is NULL, look up and store the columns names.
...
@@ -713,7 +723,9 @@ int Statement::EIO_Step(eio_req *req) {
...
@@ -713,7 +723,9 @@ int Statement::EIO_Step(eio_req *req) {
// nothing to do in this case
// nothing to do in this case
}
}
else
{
else
{
sto
->
error_
=
true
;
HandleScope
scope
;
sto
->
error_
=
rc
;
sto
->
error_msg_
=
scope
.
Close
(
String
::
NewSymbol
(
msg
));
sto
->
cells
=
NULL
;
sto
->
cells
=
NULL
;
}
}
...
...
src/statement.h
View file @
942b2f69
...
@@ -104,7 +104,8 @@ class Statement : public EventEmitter {
...
@@ -104,7 +104,8 @@ class Statement : public EventEmitter {
int
column_count_
;
int
column_count_
;
char
**
column_names_
;
char
**
column_names_
;
bool
error_
;
int
error_
;
Local
<
String
>
error_msg_
;
int
first_rc_
;
int
first_rc_
;
int
mode_
;
int
mode_
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment