- Code: Select all
----------------------
external/libpoco/Data/SQLite/src/Utility.cpp
----------------------
55 Utility::Utility()
56 {
57 Poco::FastMutex::ScopedLock l(_mutex);
58
59 if (_types.empty())
60 {
61 _types.insert(TypeMap::value_type("", MetaColumn::FDT_STRING));
62 _types.insert(TypeMap::value_type("BOOL", MetaColumn::FDT_BOOL));
63 _types.insert(TypeMap::value_type("BOOLEAN", MetaColumn::FDT_BOOL));
64 _types.insert(TypeMap::value_type("BIT", MetaColumn::FDT_BOOL));
65 _types.insert(TypeMap::value_type("UINT8", MetaColumn::FDT_UINT8));
66 _types.insert(TypeMap::value_type("UTINY", MetaColumn::FDT_UINT8));
67 _types.insert(TypeMap::value_type("UINTEGER8", MetaColumn::FDT_UINT8));
68 _types.insert(TypeMap::value_type("INT8", MetaColumn::FDT_INT8));
69 _types.insert(TypeMap::value_type("TINY", MetaColumn::FDT_INT8));
70 _types.insert(TypeMap::value_type("INTEGER8", MetaColumn::FDT_INT8));
71 _types.insert(TypeMap::value_type("UINT16", MetaColumn::FDT_UINT16));
72 _types.insert(TypeMap::value_type("USHORT", MetaColumn::FDT_UINT16));
73 _types.insert(TypeMap::value_type("UINTEGER16", MetaColumn::FDT_UINT16));
74 _types.insert(TypeMap::value_type("INT16", MetaColumn::FDT_INT16));
75 _types.insert(TypeMap::value_type("SHORT", MetaColumn::FDT_INT16));
76 _types.insert(TypeMap::value_type("INTEGER16", MetaColumn::FDT_INT16));
77 _types.insert(TypeMap::value_type("UINT", MetaColumn::FDT_UINT32));
78 _types.insert(TypeMap::value_type("UINT32", MetaColumn::FDT_UINT32));
79 _types.insert(TypeMap::value_type("UINTEGER32", MetaColumn::FDT_UINT32));
80 _types.insert(TypeMap::value_type("INT", MetaColumn::FDT_INT32));
81 _types.insert(TypeMap::value_type("INT32", MetaColumn::FDT_INT32));
82 _types.insert(TypeMap::value_type("INTEGER", MetaColumn::FDT_INT32));
83 _types.insert(TypeMap::value_type("INTEGER32", MetaColumn::FDT_INT32));
84 _types.insert(TypeMap::value_type("UINT64", MetaColumn::FDT_UINT64));
85 _types.insert(TypeMap::value_type("ULONG", MetaColumn::FDT_INT64));
86 _types.insert(TypeMap::value_type("UINTEGER64", MetaColumn::FDT_UINT64));
87 _types.insert(TypeMap::value_type("INT64", MetaColumn::FDT_INT64));
88 _types.insert(TypeMap::value_type("LONG", MetaColumn::FDT_INT64));
89 _types.insert(TypeMap::value_type("INTEGER64", MetaColumn::FDT_INT64));
90 _types.insert(TypeMap::value_type("COUNTER", MetaColumn::FDT_UINT64));
91 _types.insert(TypeMap::value_type("AUTOINCREMENT", MetaColumn::FDT_UINT64));
92 _types.insert(TypeMap::value_type("REAL", MetaColumn::FDT_DOUBLE));
93 _types.insert(TypeMap::value_type("FLOA", MetaColumn::FDT_DOUBLE));
94 _types.insert(TypeMap::value_type("FLOAT", MetaColumn::FDT_DOUBLE));
95 _types.insert(TypeMap::value_type("DOUB", MetaColumn::FDT_DOUBLE));
96 _types.insert(TypeMap::value_type("DOUBLE", MetaColumn::FDT_DOUBLE));
97 _types.insert(TypeMap::value_type("CHAR", MetaColumn::FDT_STRING));
98 _types.insert(TypeMap::value_type("CLOB", MetaColumn::FDT_STRING));
99 _types.insert(TypeMap::value_type("TEXT", MetaColumn::FDT_STRING));
100 _types.insert(TypeMap::value_type("VARCHAR", MetaColumn::FDT_STRING));
101 _types.insert(TypeMap::value_type("BLOB", MetaColumn::FDT_BLOB));
102 }
103 }
104
105
It doesn't seem to be used in the Extractor.cpp to detect the datatype.
- Code: Select all
----------------------
external/libpoco/Data/SQLite/src/Extractor.cpp
----------------------
62 bool Extractor::extract(std::size_t pos, Poco::Int32& val)
63 {
64 if (isNull(pos))
65 return false;
66 val = sqlite3_column_int(_pStmt, (int) pos);
67 return true;
68 }
which is called from the type handlers with no reference to the above table ( that I can see ).
The problem I am having is that I am trying to achieve a compatible schema between a MySQL db and a SQLite db. SQLite uses dynamic typing but is happy to accept any column type that has the string INT in it as nominally INTEGER. MySQL is strictly typed and if I want 64bits I need to set the column type as
BIGINT
Because this has INT in it SQLite is happy. However as BIGINT does not appear in the above table I get a cryptic Poco::NotFoundException thrown exception.
Should I add all the MySQL datatypes to the above table? Or should I do something else?
Brad





