Class SqliteSchemaDialect
Schema management/reflection features for Sqlite
Property Summary
-
$_driver protected
Cake\Database\Driver
The driver instance being used.
-
$_hasSequences protected
bool
Whether there is any table in this connection to SQLite containing sequences.
Method Summary
-
__construct() public
Constructor
-
_applyTypeSpecificColumnConversion() protected
Tries to use a matching database type to convert a SQL column definition to an abstract type definition.
-
_convertColumn() protected
Convert a column definition to the abstract types.
-
_convertConstraintColumns() protected
Convert foreign key constraints references to a valid stringified list
-
_convertOnClause() protected
Convert string on clauses to the abstract ones.
-
_defaultValue() protected
Manipulate the default value.
-
_foreignOnClause() protected
Generate an ON clause for a foreign key.
-
_getTypeSpecificColumnSql() protected
Tries to use a matching database type to generate the SQL fragment for a single column in a table.
-
addConstraintSql() public
Generate the SQL queries needed to add foreign key constraints to the table
-
columnSql() public
Generate the SQL fragment for a single column in a table.
-
constraintSql() public
Generate the SQL fragments for defining table constraints.
-
convertColumnDescription() public
Convert field description results into abstract schema fields.
-
convertForeignKeyDescription() public
Convert a foreign key description into constraints on the Table object.
-
convertIndexDescription() public
Convert an index description results into abstract schema indexes or constraints.
-
convertOptionsDescription() public
Convert options data into table options.
-
createTableSql() public
Generate the SQL to create a table.
-
describeColumnSql() public
Generate the SQL to describe a table.
-
describeForeignKeySql() public
Generate the SQL to describe the foreign keys in a table.
-
describeIndexSql() public
Generate the SQL to describe the indexes in a table.
-
describeOptionsSql() public
Generate the SQL to describe table options
-
dropConstraintSql() public
Generate the SQL queries needed to drop foreign key constraints from the table
-
dropTableSql() public
Generate the SQL to drop a table.
-
hasSequences() public
Returns whether there is any table in this connection to SQLite containing sequences
-
indexSql() public
Generate the SQL fragment for a single index in a table.
-
listTablesSql() public
Generate the SQL to list the tables and views.
-
listTablesWithoutViewsSql() public
Generate the SQL to list the tables, excluding all views.
-
normalizePossiblyQuotedIdentifier() protected
Removes possible escape characters and surrounding quotes from identifiers.
-
possiblyQuotedIdentifierRegex() protected
Generates a regular expression to match identifiers that may or may not be quoted with any of the supported quotes.
-
truncateTableSql() public
Generate the SQL to truncate a table.
Method Detail
__construct() ¶ public
__construct(Cake\Database\Driver $driver)
Constructor
This constructor will connect the driver so that methods like columnSql() and others will fail when the driver has not been connected.
Parameters
-
Cake\Database\Driver
$driver The driver to use.
_applyTypeSpecificColumnConversion() ¶ protected
_applyTypeSpecificColumnConversion(string $columnType, array $definition): array|null
Tries to use a matching database type to convert a SQL column definition to an abstract type definition.
Parameters
-
string
$columnType The column type.
-
array
$definition The column definition.
Returns
array|null
_convertColumn() ¶ protected
_convertColumn(string $column): array<string, mixed>
Convert a column definition to the abstract types.
The returned type will be a type that Cake\Database\TypeFactory can handle.
Parameters
-
string
$column The column type + length
Returns
array<string, mixed>
Throws
Cake\Database\Exception\DatabaseException
when unable to parse column type
_convertConstraintColumns() ¶ protected
_convertConstraintColumns(list<string>|string $references): string
Convert foreign key constraints references to a valid stringified list
Parameters
-
list<string>|string
$references The referenced columns of a foreign key constraint statement
Returns
string
_convertOnClause() ¶ protected
_convertOnClause(string $clause): string
Convert string on clauses to the abstract ones.
Parameters
-
string
$clause The on clause to convert.
Returns
string
_defaultValue() ¶ protected
_defaultValue(string|int|null $default): string|int|null
Manipulate the default value.
Sqlite includes quotes and bared NULLs in default values. We need to remove those.
Parameters
-
string|int|null
$default The default value.
Returns
string|int|null
_foreignOnClause() ¶ protected
_foreignOnClause(string $on): string
Generate an ON clause for a foreign key.
Parameters
-
string
$on The on clause
Returns
string
_getTypeSpecificColumnSql() ¶ protected
_getTypeSpecificColumnSql(string $columnType, Cake\Database\Schema\TableSchemaInterface $schema, string $column): string|null
Tries to use a matching database type to generate the SQL fragment for a single column in a table.
Parameters
-
string
$columnType The column type.
-
Cake\Database\Schema\TableSchemaInterface
$schema The table schema instance the column is in.
-
string
$column The name of the column.
Returns
string|null
addConstraintSql() ¶ public
addConstraintSql(Cake\Database\Schema\TableSchema $schema): array
Generate the SQL queries needed to add foreign key constraints to the table
SQLite can not properly handle adding a constraint to an existing table. This method is no-op
Parameters
-
Cake\Database\Schema\TableSchema
$schema The table instance the foreign key constraints are.
Returns
array
columnSql() ¶ public
columnSql(Cake\Database\Schema\TableSchema $schema, string $name): string
Generate the SQL fragment for a single column in a table.
Parameters
-
Cake\Database\Schema\TableSchema
$schema The table instance the column is in.
-
string
$name The name of the column.
Returns
string
Throws
Cake\Database\Exception\DatabaseException
when the column type is unknown
constraintSql() ¶ public
constraintSql(Cake\Database\Schema\TableSchema $schema, string $name): string
Generate the SQL fragments for defining table constraints.
Note integer primary keys will return ''. This is intentional as Sqlite requires that integer primary keys be defined in the column definition.
Parameters
-
Cake\Database\Schema\TableSchema
$schema The table instance the column is in.
-
string
$name The name of the column.
Returns
string
convertColumnDescription() ¶ public
convertColumnDescription(Cake\Database\Schema\TableSchema $schema, array $row): void
Convert field description results into abstract schema fields.
Parameters
-
Cake\Database\Schema\TableSchema
$schema -
array
$row
Returns
void
convertForeignKeyDescription() ¶ public
convertForeignKeyDescription(Cake\Database\Schema\TableSchema $schema, array $row): void
Convert a foreign key description into constraints on the Table object.
Parameters
-
Cake\Database\Schema\TableSchema
$schema -
array
$row
Returns
void
convertIndexDescription() ¶ public
convertIndexDescription(Cake\Database\Schema\TableSchema $schema, array $row): void
Convert an index description results into abstract schema indexes or constraints.
Since SQLite does not have a way to get metadata about all indexes at once, additional queries are done here. Sqlite constraint names are not stable, and the names for constraints will not match those used to create the table. This is a limitation in Sqlite's metadata features.
Parameters
-
Cake\Database\Schema\TableSchema
$schema The table object to append an index or constraint to.
-
array
$row The row data from
describeIndexSql
.
Returns
void
convertOptionsDescription() ¶ public
convertOptionsDescription(Cake\Database\Schema\TableSchema $schema, array $row): void
Convert options data into table options.
Parameters
-
Cake\Database\Schema\TableSchema
$schema Table instance.
-
array
$row The row of data.
Returns
void
createTableSql() ¶ public
createTableSql(Cake\Database\Schema\TableSchema $schema, list<string> $columns, list<string> $constraints, list<string> $indexes): list<string>
Generate the SQL to create a table.
Parameters
-
Cake\Database\Schema\TableSchema
$schema -
list<string>
$columns -
list<string>
$constraints -
list<string>
$indexes
Returns
list<string>
describeColumnSql() ¶ public
describeColumnSql(string $tableName, array<string, mixed> $config): array
Generate the SQL to describe a table.
Parameters
-
string
$tableName -
array<string, mixed>
$config
Returns
array
describeForeignKeySql() ¶ public
describeForeignKeySql(string $tableName, array<string, mixed> $config): array
Generate the SQL to describe the foreign keys in a table.
Parameters
-
string
$tableName -
array<string, mixed>
$config
Returns
array
describeIndexSql() ¶ public
describeIndexSql(string $tableName, array<string, mixed> $config): array
Generate the SQL to describe the indexes in a table.
Parameters
-
string
$tableName -
array<string, mixed>
$config
Returns
array
describeOptionsSql() ¶ public
describeOptionsSql(string $tableName, array<string, mixed> $config): array
Generate the SQL to describe table options
Parameters
-
string
$tableName Table name.
-
array<string, mixed>
$config The connection configuration.
Returns
array
dropConstraintSql() ¶ public
dropConstraintSql(Cake\Database\Schema\TableSchema $schema): array
Generate the SQL queries needed to drop foreign key constraints from the table
SQLite can not properly handle dropping a constraint to an existing table. This method is no-op
Parameters
-
Cake\Database\Schema\TableSchema
$schema The table instance the foreign key constraints are.
Returns
array
dropTableSql() ¶ public
dropTableSql(Cake\Database\Schema\TableSchema $schema): array
Generate the SQL to drop a table.
Parameters
-
Cake\Database\Schema\TableSchema
$schema Schema instance
Returns
array
hasSequences() ¶ public
hasSequences(): bool
Returns whether there is any table in this connection to SQLite containing sequences
Returns
bool
indexSql() ¶ public
indexSql(Cake\Database\Schema\TableSchema $schema, string $name): string
Generate the SQL fragment for a single index in a table.
Parameters
-
Cake\Database\Schema\TableSchema
$schema -
string
$name
Returns
string
listTablesSql() ¶ public
listTablesSql(array<string, mixed> $config): array
Generate the SQL to list the tables and views.
Parameters
-
array<string, mixed>
$config The connection configuration to use for getting tables from.
Returns
array
listTablesWithoutViewsSql() ¶ public
listTablesWithoutViewsSql(array<string, mixed> $config): array<mixed>
Generate the SQL to list the tables, excluding all views.
Parameters
-
array<string, mixed>
$config The connection configuration to use for getting tables from.
Returns
array<mixed>
normalizePossiblyQuotedIdentifier() ¶ protected
normalizePossiblyQuotedIdentifier(string $value): string
Removes possible escape characters and surrounding quotes from identifiers.
Parameters
-
string
$value The identifier to normalize.
Returns
string
possiblyQuotedIdentifierRegex() ¶ protected
possiblyQuotedIdentifierRegex(string $identifier): string
Generates a regular expression to match identifiers that may or may not be quoted with any of the supported quotes.
Parameters
-
string
$identifier The identifier to match.
Returns
string
truncateTableSql() ¶ public
truncateTableSql(Cake\Database\Schema\TableSchema $schema): array
Generate the SQL to truncate a table.
Parameters
-
Cake\Database\Schema\TableSchema
$schema
Returns
array