Skip to content

Commit

Permalink
Fix truncation of 64-bit integers on 32-bit hosts.
Browse files Browse the repository at this point in the history
Issue: PLDB-25
Submitted by: James Low
  • Loading branch information
landonf committed Dec 12, 2013
1 parent 9c4558f commit 517d00f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Classes/PLSqliteResultSet.m
Expand Up @@ -290,7 +290,7 @@ - (id) objectForColumnIndex: (int) columnIndex {
return [self stringForColumnIndex: columnIndex];

case SQLITE_INTEGER:
return [NSNumber numberWithLong: [self bigIntForColumnIndex: columnIndex]];
return [NSNumber numberWithLongLong: [self bigIntForColumnIndex: columnIndex]];

case SQLITE_FLOAT:
return [NSNumber numberWithDouble: [self doubleForColumnIndex: columnIndex]];
Expand Down
12 changes: 9 additions & 3 deletions Classes/PLSqliteResultSetTests.m
Expand Up @@ -307,6 +307,7 @@ - (void) testNullValueHandling {
- (void) testObjectForColumn {
id<PLResultSet> result;
NSNumber *testInteger;
NSNumber *testBigInteger;
NSString *testString;
NSNumber *testDouble;
NSData *testBlob;
Expand All @@ -317,10 +318,11 @@ - (void) testObjectForColumn {
testString = @"Test string";
testDouble = [NSNumber numberWithDouble: 42.42];
testBlob = [@"Test data" dataUsingEncoding: NSUTF8StringEncoding];
testBigInteger = [NSNumber numberWithLongLong: LLONG_MAX];

STAssertTrue([_db executeUpdateAndReturnError: &error statement: @"CREATE TABLE test (a integer, b varchar(20), c double, d blob, e varchar(20))"], @"Create table failed: %@", error);
STAssertTrue(([_db executeUpdate: @"INSERT INTO test (a, b, c, d, e) VALUES (?, ?, ?, ?, ?)",
testInteger, testString, testDouble, testBlob, nil]), @"Could not insert row");
STAssertTrue([_db executeUpdateAndReturnError: &error statement: @"CREATE TABLE test (a integer, b varchar(20), c double, d blob, e varchar(20), f integer)"], @"Create table failed: %@", error);
STAssertTrue(([_db executeUpdate: @"INSERT INTO test (a, b, c, d, e, f) VALUES (?, ?, ?, ?, ?, ?)",
testInteger, testString, testDouble, testBlob, nil, testBigInteger]), @"Could not insert row");

/* Query the data */
result = [_db executeQuery: @"SELECT * FROM test"];
Expand All @@ -345,6 +347,10 @@ - (void) testObjectForColumn {
STAssertTrue(nil == [result objectForColumn: @"e"], @"Did not return correct NSNull value");
STAssertTrue(nil == result[@"e"], @"Did not return correct nil value");
STAssertTrue(nil == result[4], @"Did not return correct nil value");

STAssertTrue([testBigInteger isEqual: [result objectForColumn: @"f"]], @"Did not return correct integer value");
STAssertTrue([testBigInteger isEqual: result[@"f"]], @"Did not return correct integer value");
STAssertTrue([testBigInteger isEqual: result[5]], @"Did not return correct integer value");

[result close];
}
Expand Down

0 comments on commit 517d00f

Please sign in to comment.