Commit 635242d0 by Eric Fredricksen Committed by Eric Fredricksen

Eliminate intermediate data structure.

parent 3b2d92ba
...@@ -50,6 +50,19 @@ Example ...@@ -50,6 +50,19 @@ Example
}); });
db.close(); db.close();
Install
-------
Install node. http://nodejs.org/
`$` **`hg clone https://node-sqlite.googlecode.com/hg/ node-sqlite`**
`$` **`cd node_sqlite`**
`$` **`node-waf configure`**
Build Build
----- -----
......
...@@ -17,7 +17,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -17,7 +17,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <v8.h> #include <v8.h>
#include <node.h> #include <node.h>
#include <node_events.h> #include <node_events.h>
#include <deque>
using namespace v8; using namespace v8;
using namespace node; using namespace node;
...@@ -91,7 +90,7 @@ protected: ...@@ -91,7 +90,7 @@ protected:
int changes = 0; int changes = 0;
int param = 0; int param = 0;
std::deque< Handle<Array> > resulting; Local<Array> result(Array::New(0));
for(;;) { for(;;) {
...@@ -123,7 +122,7 @@ protected: ...@@ -123,7 +122,7 @@ protected:
} }
} }
std::deque< Handle<Object> > rows; Local<Array> rosult(Array::New(0));
for (int r = 0; ; ++r) { for (int r = 0; ; ++r) {
int rc = sqlite3_step(statement); int rc = sqlite3_step(statement);
...@@ -149,7 +148,7 @@ protected: ...@@ -149,7 +148,7 @@ protected:
row->Set(String::NewSymbol(sqlite3_column_name(statement, c)), row->Set(String::NewSymbol(sqlite3_column_name(statement, c)),
value); value);
} }
rows.push_back(row); rosult->Set(Integer::New(rosult->Length()), row);
} else if (rc == SQLITE_DONE) { } else if (rc == SQLITE_DONE) {
break; break;
} else { } else {
...@@ -160,24 +159,15 @@ protected: ...@@ -160,24 +159,15 @@ protected:
changes += sqlite3_changes(*db); changes += sqlite3_changes(*db);
Local<Array> rosult(Array::New(rows.size()));
std::deque< Handle<Object> >::const_iterator ri(rows.begin());
for (int r = 0; r < rows.size(); ++r, ++ri)
rosult->Set(Integer::New(r), *ri);
rosult->Set(String::New("rowsAffected"), Integer::New(sqlite3_changes(*db))); rosult->Set(String::New("rowsAffected"), Integer::New(sqlite3_changes(*db)));
rosult->Set(String::New("insertId"), rosult->Set(String::New("insertId"),
Integer::New(sqlite3_last_insert_rowid(*db))); Integer::New(sqlite3_last_insert_rowid(*db)));
resulting.push_back(rosult); result->Set(Integer::New(result->Length()), rosult);
} }
Local<Array> result(Array::New(0));
result->Set(String::New("rowsAffected"), Integer::New(changes)); result->Set(String::New("rowsAffected"), Integer::New(changes));
result->Set(String::New("insertId"), result->Set(String::New("insertId"),
Integer::New(sqlite3_last_insert_rowid(*db))); Integer::New(sqlite3_last_insert_rowid(*db)));
std::deque< Handle<Array> >::iterator ri(resulting.begin());
for (int r = 0; r < resulting.size(); ++r, ++ri) {
result->Set(Integer::New(r), *ri);
}
return result; return result;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment