summaryrefslogtreecommitdiff
path: root/odb/relational/sqlite/common.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/relational/sqlite/common.cxx')
-rw-r--r--odb/relational/sqlite/common.cxx246
1 files changed, 17 insertions, 229 deletions
diff --git a/odb/relational/sqlite/common.cxx b/odb/relational/sqlite/common.cxx
index 31f0aad..c8169a7 100644
--- a/odb/relational/sqlite/common.cxx
+++ b/odb/relational/sqlite/common.cxx
@@ -85,99 +85,24 @@ namespace relational
{
switch (mi.st->type)
{
- // Integral types.
- //
- case sql_type::TINYINT:
- case sql_type::SMALLINT:
- case sql_type::MEDIUMINT:
- case sql_type::INT:
- case sql_type::BIGINT:
+ case sql_type::INTEGER:
{
traverse_integer (mi);
break;
}
-
- // Float types.
- //
- case sql_type::FLOAT:
- case sql_type::DOUBLE:
- {
- traverse_float (mi);
- break;
- }
- case sql_type::DECIMAL:
- {
- traverse_decimal (mi);
- break;
- }
-
- // Data-time types.
- //
- case sql_type::DATE:
- case sql_type::TIME:
- case sql_type::DATETIME:
- case sql_type::TIMESTAMP:
- case sql_type::YEAR:
+ case sql_type::REAL:
{
- traverse_date_time (mi);
+ traverse_real (mi);
break;
}
-
- // String and binary types.
- //
- case sql_type::CHAR:
- case sql_type::VARCHAR:
- case sql_type::TINYTEXT:
case sql_type::TEXT:
- case sql_type::MEDIUMTEXT:
- case sql_type::LONGTEXT:
- {
- // For string types the limit is in characters rather
- // than in bytes. The fixed-length pre-allocated buffer
- // optimization can only be used for 1-byte encodings.
- // To support this we will need the character encoding
- // in sql_type.
- //
- traverse_long_string (mi);
- break;
- }
- case sql_type::BINARY:
- case sql_type::TINYBLOB:
{
- // BINARY's range is always 255 or less from MySQL 5.0.3.
- // TINYBLOB can only store up to 255 bytes.
- //
- traverse_short_string (mi);
+ traverse_text (mi);
break;
}
- case sql_type::VARBINARY:
case sql_type::BLOB:
- case sql_type::MEDIUMBLOB:
- case sql_type::LONGBLOB:
- {
- if (mi.st->range && mi.st->range_value <= 255)
- traverse_short_string (mi);
- else
- traverse_long_string (mi);
-
- break;
- }
-
- // Other types.
- //
- case sql_type::BIT:
- {
- traverse_bit (mi);
- break;
- }
- case sql_type::ENUM:
{
- traverse_enum (mi);
- break;
- }
- case sql_type::SET:
- {
- traverse_set (mi);
+ traverse_blob (mi);
break;
}
case sql_type::invalid:
@@ -192,24 +117,6 @@ namespace relational
// member_image_type
//
- namespace
- {
- const char* integer_types[] =
- {
- "char",
- "short",
- "int",
- "int",
- "long long"
- };
-
- const char* float_types[] =
- {
- "float",
- "double"
- };
- }
-
member_image_type::
member_image_type (semantics::type* type,
string const& fq_type,
@@ -233,35 +140,15 @@ namespace relational
}
void member_image_type::
- traverse_integer (member_info& mi)
- {
- if (mi.st->unsign)
- type_ = "unsigned ";
- else if (mi.st->type == sql_type::TINYINT)
- type_ = "signed ";
-
- type_ += integer_types[mi.st->type - sql_type::TINYINT];
- }
-
- void member_image_type::
- traverse_float (member_info& mi)
- {
- type_ = float_types[mi.st->type - sql_type::FLOAT];
- }
-
- void member_image_type::
- traverse_decimal (member_info&)
+ traverse_integer (member_info&)
{
- type_ = "details::buffer";
+ type_ = "long long";
}
void member_image_type::
- traverse_date_time (member_info& mi)
+ traverse_real (member_info&)
{
- if (mi.st->type == sql_type::YEAR)
- type_ = "short";
- else
- type_ = "MYSQL_TIME";
+ type_ = "double";
}
void member_image_type::
@@ -270,80 +157,10 @@ namespace relational
type_ = "details::buffer";
}
- void member_image_type::
- traverse_bit (member_info&)
- {
- type_ = "unsigned char*";
- }
-
- void member_image_type::
- traverse_enum (member_info&)
- {
- // Represented as string.
- //
- type_ = "details::buffer";
- }
-
- void member_image_type::
- traverse_set (member_info&)
- {
- // Represented as string.
- //
- type_ = "details::buffer";
- }
-
//
// member_database_type
//
- namespace
- {
- const char* integer_database_id[] =
- {
- "id_tiny",
- "id_utiny",
- "id_short",
- "id_ushort",
- "id_long", // INT24
- "id_ulong", // INT24 UNSIGNED
- "id_long",
- "id_ulong",
- "id_longlong",
- "id_ulonglong"
- };
-
- const char* float_database_id[] =
- {
- "id_float",
- "id_double"
- };
-
- const char* date_time_database_id[] =
- {
- "id_date",
- "id_time",
- "id_datetime",
- "id_timestamp",
- "id_year"
- };
-
- const char* char_bin_database_id[] =
- {
- "id_string", // CHAR
- "id_blob", // BINARY,
- "id_string", // VARCHAR
- "id_blob", // VARBINARY
- "id_string", // TINYTEXT
- "id_blob", // TINYBLOB
- "id_string", // TEXT
- "id_blob", // BLOB
- "id_string", // MEDIUMTEXT
- "id_blob", // MEDIUMBLOB
- "id_string", // LONGTEXT
- "id_blob" // LONGBLOB
- };
- }
-
member_database_type_id::
member_database_type_id (semantics::type* type,
string const& fq_type,
@@ -367,56 +184,27 @@ namespace relational
}
void member_database_type_id::
- traverse_integer (member_info& mi)
- {
- size_t i (
- (mi.st->type - sql_type::TINYINT) * 2 + (mi.st->unsign ? 1 : 0));
- type_id_ = string ("mysql::") + integer_database_id[i];
- }
-
- void member_database_type_id::
- traverse_float (member_info& mi)
- {
- type_id_ = string ("mysql::") +
- float_database_id[mi.st->type - sql_type::FLOAT];
- }
-
- void member_database_type_id::
- traverse_decimal (member_info&)
- {
- type_id_ = "mysql::id_decimal";
- }
-
- void member_database_type_id::
- traverse_date_time (member_info& mi)
- {
- type_id_ = string ("mysql::") +
- date_time_database_id[mi.st->type - sql_type::DATE];
- }
-
- void member_database_type_id::
- traverse_string (member_info& mi)
+ traverse_integer (member_info&)
{
- type_id_ = string ("mysql::") +
- char_bin_database_id[mi.st->type - sql_type::CHAR];
+ type_id_ = "sqlite::id_integer";
}
void member_database_type_id::
- traverse_bit (member_info&)
+ traverse_real (member_info&)
{
- type_id_ = "mysql::id_bit";
+ type_id_ = "sqlite::id_real";
}
void member_database_type_id::
- traverse_enum (member_info&)
+ traverse_text (member_info&)
{
- type_id_ = "mysql::id_enum";
+ type_id_ = "sqlite::id_text";
}
void member_database_type_id::
- traverse_set (member_info&)
+ traverse_blob (member_info&)
{
- type_id_ = "mysql::id_set";
+ type_id_ = "sqlite::id_blob";
}
//