To be really sure I rewrote the example in C linked to the official sqlite 3.4.2.
Here it is my source code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlite3.h"

int main(void)
{
        sqlite3 *db = NULL;
        int     rc = SQLITE_OK;
        char    sql[256];
        char    **result;
    int         i, nrow, ncol;
        
        // open db
        rc = sqlite3_open("test.sqlite", &db);
        if (rc != SQLITE_OK) goto abort;
        
        // create table
rc = sqlite3_exec(db, "CREATE TABLE One (a varchar primary key, b1 integer, b2 integer, b3 integer, z varchar);", NULL, 0, NULL);
        if (rc != SQLITE_OK) goto abort;
        
        // create index
rc = sqlite3_exec(db, "CREATE UNIQUE INDEX idx_One ON One(b1, b2, b3);", NULL, 0, NULL);
        if (rc != SQLITE_OK) goto abort;
        
        // insert loop
        for (i=1; i<=100; i++)
        {
snprintf(sql, 256, "INSERT INTO One VALUES ('%d', %d, %d, %d, 'A');", i, i+1, i+2, i+3);
                rc = sqlite3_exec(db, sql, NULL, 0, NULL);
                if (rc != SQLITE_OK) goto abort;
        }
        
        // query test 1
rc = sqlite3_get_table(db, "SELECT a FROM One WHERE b1 = 99 AND b2 = 100 and b3 = 101;", &result, &nrow, &ncol, NULL);
        if (rc != SQLITE_OK) goto abort;
        
        for(i=0; i<ncol; ++i)
        {
                printf(result[i]);
                printf("\t\t");
        }
        printf("\n");
        
        for(i=0; i<ncol*nrow; ++i)
        {
                printf(result[ncol+i]);
                printf("\t\t");
                if (i % ncol == 0) printf("\n");
        }
        
        // free table
        sqlite3_free_table(result);
        
        // close db
        sqlite3_close(db);
        
        printf("simple test finished!\n");
        return 0;
        
abort:
        printf("%s\n", sqlite3_errmsg(db));
        if (db != NULL) sqlite3_close(db);
        return -1;
}

On Windows (not on Mac!) it returns 99 instead of the correct 98 value.
Anyone can confirm that on Windows?

Thanks a lot.
---
Marco Bambini
http://www.sqlabs.net
http://www.sqlabs.net/blog/
http://www.sqlabs.net/realsqlserver/



On Oct 30, 2007, at 5:15 PM, [EMAIL PROTECTED] wrote:

Marco Bambini <[EMAIL PROTECTED]> wrote:

I am experiencing a very strange issue in sqlite 3.4.2 (only with the
Win32 version, OSX and linux works fine).

I wonder if there was a bug in the 3.4.2 version that I should fix...
Please note that I cannot upgrade to the latest 3.5.x versions...


What makes you think the bug is in SQLite and not in your
language interface wrapper?  Do you still get the wrong
answer if you run the same queries from the CLI?

--
D. Richard Hipp <[EMAIL PROTECTED]>


---------------------------------------------------------------------- -------
To unsubscribe, send email to [EMAIL PROTECTED]
---------------------------------------------------------------------- -------



-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to