I didn't mention that I applied the diffs from SQLite-WinCE to version
3.0.5 with the same results.
Jakub
Jakub Adamek wrote:
Hello,
the version 3 is most probably broken. I traced down the crash problem
in Windows CE, see
http://sourceforge.net/mailarchive/forum.php?thread_id=5438459&forum_id=35230
It happens in balance_nonroot but in the declare variable section! If I
change the variables in balance_nonroot to "static", the test goes OK.
But such an error must come from a wrong memory write before this
function. I am not able to find this. I attach my test program, it only
creates a table and starts inserting rows.
As the simiral problem appears on other OSes, see
http://www.mail-archive.com/[EMAIL PROTECTED]/msg03112.html,
I wonder if some of the great developers could solve it?
Best regards
Jakub
Darren Duncan wrote:
At 2:20 PM -0400 8/29/04, D. Richard Hipp wrote:
SQLite version 3.0.5 (beta) is now available on the website.
Richard, thank you very much for that release.
I have downloaded and compiled it under both Mac OS X 10.2.8 (GCC 3.1,
3.3), and Mac OS X 10.3.5 (GCC3.3), with each development environment
having the default set of libraries and headers. It compiles without
errors (but with warnings about long integer types) on all
configurations, and ./sqlite3 starts up and quits normally.
Under both Mac OS X 10.2.8 configurations, 'make test' continues to
fail due to my TCL library being out of date, as I had reported
previously.
Under the Mac OS X 10.3.5 configurations, 'make test' succeeds, with a
result of '0 errors out of 22364 tests'. 10.3.5 does have a new
enough TCL bundled.
So at least with the newer setup, I can confirm that everything works.
Matt, I will eagerly test a newer DBD::SQLite as soon as you release it.
-- Darren Duncan
------------------------------------------------------------------------
if (! db.execute (
"CREATE TABLE test ("
" i INTEGER NOT NULL,"
" v VARCHAR (50),"
" PRIMARY KEY (i));")) ERROR_RETURN_FALSE;
vector<CVariantValue> values;
values.push_back (12);
values.push_back ("ahoj brouku");
values.push_back (13);
values.push_back ("nazdar brouku");
if (! db.execute (
"INSERT INTO test VALUES (12, 'ahoj brouku')")) ERROR_RETURN_FALSE;
if (db.execute (
"INSERT INTO test VALUES (12, 'nazdar brouku')")) ERROR_RETURN_FALSE;
if (! db.execute (
"INSERT INTO test VALUES (13, 'nazdar brouku')")) ERROR_RETURN_FALSE;
if (db.isExecutePrecompiledSupported()) {
vector<CVariantValue> params;
params.push_back (14);
params.push_back ("cau brundibare");
if (! db.executePrecompiled (
"INSERT INTO test VALUES (?, ?)", params)) ERROR_RETURN_FALSE;
if (db.executePrecompiled (
"INSERT INTO test VALUES (?, ?)", params)) ERROR_RETURN_FALSE;
values.push_back (14);
values.push_back ("cau brundibare");
}
COneWayRecordset rs (db);
if (! rs.openTable ("test")) ERROR_RETURN_FALSE;
if (! rs.add()) ERROR_RETURN_FALSE;
rs ["i"] = 15;
rs ["v"] = "Hello world";
if (! rs.update()) ERROR_RETURN_FALSE;
values.push_back (15);
values.push_back ("Hello world");
if (! rs.open ("SELECT i, v FROM test")) ERROR_RETURN_FALSE;
int irecord = 0;
bool ok;
while (rs.next()) {
int i = rs ["i"].forceInt (&ok);
string s = rs ["v"].asString();
if (i != values [irecord*2].forceInt (&ok)) ERROR_RETURN_FALSE;
if (s != values [irecord*2+1].asString()) ERROR_RETURN_FALSE;
irecord ++;
}
// fill some rows with string and binary data
if (! db.begin()) ERROR_RETURN_FALSE;
if (! rs.openTable ("test")) ERROR_RETURN_FALSE;
vector<uint8_t> vec;
string s;
for (int row=1; row < 1000; row ++) {
vec.push_back ((uint8_t) (row & 0xFF));
s += long2string (row);
CVariantValueBinary binary (& *vec.begin(), vec.size());
if (! rs.add()) ERROR_RETURN_FALSE;
rs ["i"] = row * row;
rs ["v"] = s;
if (! rs.update()) ERROR_RETURN_FALSE;
if (! rs.add()) ERROR_RETURN_FALSE;
rs ["i"] = row * row + 1;
rs ["v"] = binary;
if (! rs.update()) ERROR_RETURN_FALSE;
}
if (! db.close()) ERROR_RETURN_FALSE;
return true;