KDbDriverBehavior

Search for usage in LXR

KDbDriverBehavior Class Reference

#include <KDbDriverBehavior.h>

Public Member Functions

 KDbDriverBehavior (KDbDriver *driver)
 

Public Attributes

bool _1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY
 
QString ALWAYS_AVAILABLE_DATABASE_NAME
 
QString AUTO_INCREMENT_FIELD_OPTION
 
QString AUTO_INCREMENT_PK_FIELD_OPTION
 
bool AUTO_INCREMENT_REQUIRES_PK
 
QString AUTO_INCREMENT_TYPE
 
QString BOOLEAN_FALSE_LITERAL
 
QString BOOLEAN_TRUE_LITERAL
 
char CLOSING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER
 
bool CONNECTION_REQUIRED_TO_CHECK_DB_EXISTENCE
 
bool CONNECTION_REQUIRED_TO_CREATE_DB
 
bool CONNECTION_REQUIRED_TO_DROP_DB
 
int features
 
KDbEscapedString GET_TABLE_NAMES_SQL
 
bool IS_DB_OPEN_AFTER_CREATE
 
QString LIKE_OPERATOR
 
char OPENING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER
 
KDbUtils::PropertySet properties
 
QString RANDOM_FUNCTION
 
QString ROW_ID_FIELD_NAME
 
bool ROW_ID_FIELD_RETURNS_LAST_AUTOINCREMENTED_VALUE
 
bool SELECT_1_SUBQUERY_SUPPORTED
 
bool SPECIAL_AUTO_INCREMENT_DEF
 
int TEXT_TYPE_MAX_LENGTH
 
QVector< QStringtypeNames
 
QString UNSIGNED_TYPE_KEYWORD
 
bool USE_TEMPORARY_DATABASE_FOR_CONNECTION_IF_NEEDED
 
bool USING_DATABASE_REQUIRED_TO_CONNECT
 

Detailed Description

Detailed definition of driver's default behavior.

This class is mostly interesting for KDb driver developers. Defaults can be changed by KDbDriver subclass in constructors.

Definition at line 32 of file KDbDriverBehavior.h.

Member Data Documentation

◆ _1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY

bool KDbDriverBehavior::_1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY

True if before we know whether the fetched result of executed query is empty or not, we need to fetch first record. Particularly, it's true for SQLite. The flag is used in KDbCursor::open(). By default this flag is false.

Definition at line 188 of file KDbDriverBehavior.h.

◆ ALWAYS_AVAILABLE_DATABASE_NAME

QString KDbDriverBehavior::ALWAYS_AVAILABLE_DATABASE_NAME

Name of any (e.g. first found) database for this connection that typically always exists. This can be not set if we want to do some magic checking what database name is availabe by reimplementing KDbConnection::anyAvailableDatabaseName(). Example: for PostgreSQL this is "template1".

See also
KDbConnection::SetAvailableDatabaseName()

Definition at line 118 of file KDbDriverBehavior.h.

◆ AUTO_INCREMENT_FIELD_OPTION

QString KDbDriverBehavior::AUTO_INCREMENT_FIELD_OPTION

"AUTO_INCREMENT" by default, used as add-in word to field definition May be also used as full definition if SPECIAL_AUTO_INCREMENT_DEF is true.

Definition at line 63 of file KDbDriverBehavior.h.

◆ AUTO_INCREMENT_PK_FIELD_OPTION

QString KDbDriverBehavior::AUTO_INCREMENT_PK_FIELD_OPTION

"AUTO_INCREMENT PRIMARY KEY" by default, used as add-in word to field definition May be also used as full definition if SPECIAL_AUTO_INCREMENT_DEF is true.

Definition at line 67 of file KDbDriverBehavior.h.

◆ AUTO_INCREMENT_REQUIRES_PK

bool KDbDriverBehavior::AUTO_INCREMENT_REQUIRES_PK

True if autoincrement requires field to be declared as primary key. This is true for SQLite. False by default.

Definition at line 81 of file KDbDriverBehavior.h.

◆ AUTO_INCREMENT_TYPE

QString KDbDriverBehavior::AUTO_INCREMENT_TYPE

"" by default, used as type string for autoinc.

field definition pgsql defines it as "SERIAL", sqlite defines it as "INTEGER"

Definition at line 71 of file KDbDriverBehavior.h.

◆ BOOLEAN_FALSE_LITERAL

QString KDbDriverBehavior::BOOLEAN_FALSE_LITERAL

Literal for boolean false. "0" by default which is typically expected by backends even while the standard says "TRUE": https://troels.arvin.dk/db/rdbms/#data_types-boolean

Definition at line 204 of file KDbDriverBehavior.h.

◆ BOOLEAN_TRUE_LITERAL

QString KDbDriverBehavior::BOOLEAN_TRUE_LITERAL

Literal for boolean true. "1" by default which is typically expected by backends even while the standard says "TRUE": https://troels.arvin.dk/db/rdbms/#data_types-boolean

Definition at line 198 of file KDbDriverBehavior.h.

◆ CLOSING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER

char KDbDriverBehavior::CLOSING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER

Opening quotation mark used for escaping identifier (see KDbDriver::escapeIdentifier()). Default value is '"'. Change it for your driver.

Definition at line 128 of file KDbDriverBehavior.h.

◆ CONNECTION_REQUIRED_TO_CHECK_DB_EXISTENCE

bool KDbDriverBehavior::CONNECTION_REQUIRED_TO_CHECK_DB_EXISTENCE

True if connection should be established (KDbConnection::connect()) in order to check database existence (KDbConnection::databaseExists()). This is true for most engines, but not for SQLite (and probably most file-based databases) where existence of database is checked at filesystem level. By default this flag is true.

Definition at line 147 of file KDbDriverBehavior.h.

◆ CONNECTION_REQUIRED_TO_CREATE_DB

bool KDbDriverBehavior::CONNECTION_REQUIRED_TO_CREATE_DB

True if connection should be established (KDbConnection::connect()) in order to create new database (KDbConnection::createDatabase()). This is true for most engines, but not for SQLite (and probably most file-based databases) where opening physical connection for nonexisting file creates new file. By default this flag is true.

Definition at line 156 of file KDbDriverBehavior.h.

◆ CONNECTION_REQUIRED_TO_DROP_DB

bool KDbDriverBehavior::CONNECTION_REQUIRED_TO_DROP_DB

True if connection should be established (KDbConnection::connect()) in order to drop database (KDbConnection::dropDatabase()). This is true for most engines, but not for SQLite (and probably most file-based databases) where dropping database is performed at filesystem level. By default this flag is true.

Definition at line 164 of file KDbDriverBehavior.h.

◆ features

int KDbDriverBehavior::features

Features (like transactions, etc.) supported by this driver (sum of selected Features enum items). This member should be filled in driver implementation's constructor (by default m_features==NoFeatures).

Definition at line 43 of file KDbDriverBehavior.h.

◆ GET_TABLE_NAMES_SQL

KDbEscapedString KDbDriverBehavior::GET_TABLE_NAMES_SQL

SQL statement used to obtain list of physical table names.

Used by default implementation of KDbConnection::drv_getTableNames(). Empty by default. If empty, default implementation of KDbConnection::drv_getTableNames() fails.

Since
3.2

Definition at line 229 of file KDbDriverBehavior.h.

◆ IS_DB_OPEN_AFTER_CREATE

bool KDbDriverBehavior::IS_DB_OPEN_AFTER_CREATE

Set to true in a subclass if after successful drv_createDatabase() the database is in opened state (as after useDatabase()). false for most engines.

Definition at line 183 of file KDbDriverBehavior.h.

◆ LIKE_OPERATOR

QString KDbDriverBehavior::LIKE_OPERATOR

"LIKE" by default, used to construct native expressions "x LIKE y" and "x NOT LIKE y". LIKE is case-insensitive for MySQL, SQLite, and often on Sybase/MSSQL while for PostgreSQL it's case-sensitive. So for PostgreSQL LIKE_OPERATOR == "ILIKE".

Definition at line 216 of file KDbDriverBehavior.h.

◆ OPENING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER

char KDbDriverBehavior::OPENING_QUOTATION_MARK_BEGIN_FOR_IDENTIFIER

Opening quotation mark used for escaping identifier (see KDbDriver::escapeIdentifier()). Default value is '"'. Change it for your driver.

Definition at line 123 of file KDbDriverBehavior.h.

◆ properties

KDbUtils::PropertySet KDbDriverBehavior::properties

Driver properties (indexed by name), useful for presenting properties to the user. Contains i18n-ed captions. In driver implementations available properties can be initialized, for example:

beh->properties.insert("maximum_performance", 1000, SomeClass::tr("Maximum performance"));

You do not need to set captions of properties predefined by the KDbDriver superclass, they will be reused. Predefined properties are set in KDbDriver.

Definition at line 56 of file KDbDriverBehavior.h.

◆ RANDOM_FUNCTION

QString KDbDriverBehavior::RANDOM_FUNCTION

"RANDOM()" function name, used in Driver::randomFunctionToString() to construct native expressions.

Definition at line 220 of file KDbDriverBehavior.h.

◆ ROW_ID_FIELD_NAME

QString KDbDriverBehavior::ROW_ID_FIELD_NAME

Name of a field (or built-in function) with autoincremented unique value, typically returned by KDbSqlResult::lastInsertRecordId().

Examples:

  • PostgreSQL and SQLite engines use 'OID' field
  • MySQL uses LAST_INSERT_ID() built-in function

Definition at line 90 of file KDbDriverBehavior.h.

◆ ROW_ID_FIELD_RETURNS_LAST_AUTOINCREMENTED_VALUE

bool KDbDriverBehavior::ROW_ID_FIELD_RETURNS_LAST_AUTOINCREMENTED_VALUE

True if the value (fetched from field or function, defined by ROW_ID_FIELD_NAME member) is EXACTLY the value of autoincremented field, not an implicit (internal) row number. Default value is false.

Examples:

  • PostgreSQL and SQLite engines have this flag set to false ('OID' field has it's own implicit value)
  • MySQL engine has this flag set to true (LAST_INSERT_ID() returns real value of last autoincremented field).

Notes: If it's false, we have a convenient way for identifying row even when there's no primary key defined. So, as '_ROWID' column in MySQL is really just a synonym for the primary key, this engine needs to have primary keys always defined if we want to use interactive editing features like row updating and deleting.

Definition at line 108 of file KDbDriverBehavior.h.

◆ SELECT_1_SUBQUERY_SUPPORTED

bool KDbDriverBehavior::SELECT_1_SUBQUERY_SUPPORTED

True if "SELECT 1 from (subquery)" is supported. False by default. Used in KDbConnection::resultExists() for optimization. It's set to true for SQLite driver.

Definition at line 192 of file KDbDriverBehavior.h.

◆ SPECIAL_AUTO_INCREMENT_DEF

bool KDbDriverBehavior::SPECIAL_AUTO_INCREMENT_DEF

True if autoincrement field has special definition e.g. like "INTEGER PRIMARY KEY" for SQLite. Special definition string should be stored in AUTO_INCREMENT_FIELD_OPTION. False by default.

Definition at line 77 of file KDbDriverBehavior.h.

◆ TEXT_TYPE_MAX_LENGTH

int KDbDriverBehavior::TEXT_TYPE_MAX_LENGTH

Specifies maximum length for Text type. If 0, there is are limits and length argument is not needed, e.g. VARCHAR works for the driver this is the case for SQLite and PostgreSQL. If greater than 0, this value should be used to express maximum value, e.g. VARCHAR(...). This is the case for MySQL. The default is 0.

Definition at line 211 of file KDbDriverBehavior.h.

◆ typeNames

QVector<QString> KDbDriverBehavior::typeNames

real type names for this engine

Definition at line 46 of file KDbDriverBehavior.h.

◆ UNSIGNED_TYPE_KEYWORD

QString KDbDriverBehavior::UNSIGNED_TYPE_KEYWORD

"UNSIGNED" by default

Definition at line 59 of file KDbDriverBehavior.h.

◆ USE_TEMPORARY_DATABASE_FOR_CONNECTION_IF_NEEDED

bool KDbDriverBehavior::USE_TEMPORARY_DATABASE_FOR_CONNECTION_IF_NEEDED

Because some engines need to have opened any database before executing administrative sql statements like "create database" or "drop database", using appropriate, existing temporary database for this connection. This is the case for PostgreSQL. For file-based db drivers this flag is ignored. By default this flag is false.

Note: This method has nothing to do with creating or using temporary databases in such meaning that these database are not persistent.

See also
KDbConnection::useTemporaryDatabaseIfNeeded()

Definition at line 178 of file KDbDriverBehavior.h.

◆ USING_DATABASE_REQUIRED_TO_CONNECT

bool KDbDriverBehavior::USING_DATABASE_REQUIRED_TO_CONNECT

True if using database is required to perform real connection. This is true for may engines, e.g. for PostgreSQL, where connection strings should contain a database name. If the flag is false, then developer has to call KDbConnection::useDatabase() after creating the KDbConnection object. This flag can be also used for file-based db drivers, e.g. SQLite sets it to true. MySQL sets it to false. By default this flag is true.

Definition at line 139 of file KDbDriverBehavior.h.


The documentation for this class was generated from the following file:
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sun Sep 25 2022 04:05:37 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.