From 4f59995242d894baa041a8171d420a18b43ceb8c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 18 Jul 2012 12:07:19 +0200 Subject: Convert NULLs to NaNs in SQLite for float and double This makes it consistent with SQLite behavior which converts NaNs to NULLs. --- sqlite/types/driver.cxx | 2 ++ sqlite/types/test.hxx | 16 ++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'sqlite') diff --git a/sqlite/types/driver.cxx b/sqlite/types/driver.cxx index 0c19e75..1214d18 100644 --- a/sqlite/types/driver.cxx +++ b/sqlite/types/driver.cxx @@ -5,6 +5,7 @@ // Test SQLite type conversion. // +#include // std::numeric_limits #include // std::auto_ptr #include #include @@ -33,6 +34,7 @@ main (int argc, char* argv[]) o.bool_ = true; o.integer_ = -123456; o.real_ = 1.123; + o.nan_ = numeric_limits::quiet_NaN (); string long_str (2040, 'l'); diff --git a/sqlite/types/test.hxx b/sqlite/types/test.hxx index 6d9fc1c..7ed1a8c 100644 --- a/sqlite/types/test.hxx +++ b/sqlite/types/test.hxx @@ -29,24 +29,27 @@ struct object #pragma db id unsigned long id_; - #pragma db type ("BOOL") + #pragma db type("BOOL") bool bool_; - #pragma db type ("INTEGER") + #pragma db type("INTEGER") int integer_; - #pragma db type ("REAL") + #pragma db type("REAL") double real_; - #pragma db type ("TEXT") + #pragma db type("REAL") null + double nan_; + + #pragma db type("TEXT") std::string text_; - #pragma db type ("BLOB") + #pragma db type("BLOB") std::vector blob_; // Test NULL value. // - #pragma db type ("TEXT") null + #pragma db type("TEXT") null string_ptr null_; bool @@ -57,6 +60,7 @@ struct object bool_ == y.bool_ && integer_ == y.integer_ && real_ == y.real_ && + nan_ != nan_ && text_ == y.text_ && blob_ == y.blob_ && ((null_.get () == 0 && y.null_.get () == 0) || *null_ == *y.null_); -- cgit v1.1