22#include "sqliteconnection.h"
23#include <kexidb/utils.h>
25#include <kstaticdeleter.h>
31enum SQLiteTypeAffinity {
32 NoAffinity = 0, IntAffinity = 1, TextAffinity = 2, BLOBAffinity = 3
36static KStaticDeleter< TQMap<int,int> > KexiDB_SQLite_affinityForType_deleter;
37TQMap<int,int> *KexiDB_SQLite_affinityForType = 0;
41static SQLiteTypeAffinity affinityForType(
Field::Type type)
43 if (!KexiDB_SQLite_affinityForType) {
44 KexiDB_SQLite_affinityForType_deleter.setObject( KexiDB_SQLite_affinityForType,
new TQMap<int,int>() );
45 KexiDB_SQLite_affinityForType->insert(
Field::Byte, IntAffinity);
47 KexiDB_SQLite_affinityForType->insert(
Field::Integer, IntAffinity);
49 KexiDB_SQLite_affinityForType->insert(
Field::Boolean, IntAffinity);
50 KexiDB_SQLite_affinityForType->insert(Field::Date, TextAffinity);
51 KexiDB_SQLite_affinityForType->insert(Field::DateTime, TextAffinity);
52 KexiDB_SQLite_affinityForType->insert(Field::Time, TextAffinity);
53 KexiDB_SQLite_affinityForType->insert(
Field::Float, IntAffinity);
54 KexiDB_SQLite_affinityForType->insert(
Field::Double, IntAffinity);
55 KexiDB_SQLite_affinityForType->insert(
Field::Text, TextAffinity);
57 KexiDB_SQLite_affinityForType->insert(
Field::BLOB, BLOBAffinity);
59 return static_cast<SQLiteTypeAffinity
>((*KexiDB_SQLite_affinityForType)[(int)type]);
63 const TQString& propertyName,
const TQVariant& value)
68 if (propertyName==
"type") {
107 const SQLiteTypeAffinity oldAffinity = affinityForType(oldType);
108 const SQLiteTypeAffinity newAffinity = affinityForType(type);
109 if (oldAffinity!=newAffinity) {
friend class KexiDB::TableSchema
for removeMe()
virtual tristate drv_changeFieldProperty(TableSchema &table, Field &field, const TQString &propertyName, const TQVariant &value)
tristate changeFieldType(TableSchema &table, Field &field, Field::Type type)
for drv_changeFieldProperty()
3-state logical type with three values: true, false and cancelled and convenient operators.
High-level database connectivity library with database backend drivers.
KEXI_DB_EXPORT Field::Type intToFieldType(int type)