Hello there sqlite-users, I have a quick question regarding selection and deletion of large unsigned integers.
I create my table as following: [1] CREATE TABLE t1 (instnum BIG UNSIGNED INTEGER PRIMARY KEY, ...) I then insert some row: [2] INSERT INTO t1 (instnum, ...) VALUES (CAST (?1 AS BIG UNSIGNED INTEGER), ...) This is just a test for 64bit unsigned, so I have the following rows: 1 2 18446744073709551615 (0xFFFFFFFFFFFFFFFF) 9223372036854775808 (0x8000000000000000) 0 3 1234 23456 654321 When I try to DELETE using: [3] DELETE FROM t1 WHERE instnum <= CAST (?1 AS BIG UNSIGNED INTEGER); I don't always get what I would expect, to me it looks like large numbers (64bit with the MSB set to 1) are treated as negative. For example if ?1 in query [3] is set to 654321, all rows are being deleted (while 18446744073709551615 and 9223372036854775808 should not be deleted) If ?1 is set to 18446744073709551615, the rows 18446744073709551615 and 9223372036854775808 are deleted, but the other ones are not. (while all of them should be gone) (I was previously using [2] and [3] without explicit cast, but the result is the same). How can I solve this issue? Thank you, Marco _______________________________________________ sqlite-users mailing list [email protected] http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

