MediaWiki master
|
Interface for query language. More...
Inherited by Wikimedia\Rdbms\IReadableDatabase, and Wikimedia\Rdbms\Platform\SQLPlatform.
Public Member Functions | |
addIdentifierQuotes ( $s) | |
Escape a SQL identifier (e.g. | |
anyChar () | |
Returns a token for buildLike() that denotes a '_' to be used in a LIKE query. | |
anyString () | |
Returns a token for buildLike() that denotes a '' to be used in a LIKE query. | |
bitAnd ( $fieldLeft, $fieldRight) | |
bitNot ( $field) | |
bitOr ( $fieldLeft, $fieldRight) | |
buildComparison (string $op, array $conds) | |
Build a condition comparing multiple values, for use with indexes that cover multiple fields, common when e.g. | |
buildConcat ( $stringList) | |
Build a concatenation list to feed into a SQL query. | |
buildExcludedValue ( $column) | |
Build a reference to a column value from the conflicting proposed upsert() row. | |
buildGreatest ( $fields, $values) | |
Build a GREATEST function statement comparing columns/values. | |
buildGroupConcatField ( $delim, $tables, $field, $conds='', $join_conds=[]) | |
Build a GROUP_CONCAT or equivalent statement for a query. | |
buildIntegerCast ( $field) | |
buildLeast ( $fields, $values) | |
Build a LEAST function statement comparing columns/values. | |
buildLike ( $param,... $params) | |
LIKE statement wrapper. | |
buildSelectSubquery ( $tables, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[]) | |
Equivalent to IDatabase::selectSQLText() except wraps the result in Subquery. | |
buildStringCast ( $field) | |
buildSubString ( $input, $startPosition, $length=null) | |
Build a SUBSTRING function. | |
conditional ( $cond, $caseTrueExpression, $caseFalseExpression) | |
Returns an SQL expression for a simple conditional. | |
decodeExpiry ( $expiry, $format=TS_MW) | |
Decode an expiry time into a DBMS independent format. | |
encodeExpiry ( $expiry) | |
Encode an expiry time into the DBMS dependent format. | |
factorConds ( $condsArray) | |
Given an array of condition arrays representing an OR list of AND lists, for example: | |
getInfinity () | |
Find out when 'infinity' is. | |
getTableAliases () | |
Return current table aliases. | |
implicitOrderby () | |
Returns true if this database does an implicit order by when the column has an index For example: SELECT page_title FROM page LIMIT 1. | |
limitResult ( $sql, $limit, $offset=false) | |
Construct a LIMIT query with optional offset. | |
makeList (array $a, $mode=self::LIST_COMMA) | |
Makes an encoded list of strings from an array. | |
makeWhereFrom2d ( $data, $baseKey, $subKey) | |
Build a "OR" condition with pairs from a two-dimensional array. | |
selectSQLText ( $tables, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[]) | |
Take the same arguments as IDatabase::select() and return the SQL it would use. | |
setIndexAliases (array $aliases) | |
Convert certain index names to alternative names before querying the DB. | |
setSchemaVars ( $vars) | |
Set schema variables to be used when streaming commands from SQL files or stdin. | |
setTableAliases (array $aliases) | |
Make certain table names use their own database, schema, and table prefix when passed into SQL queries pre-escaped and without a qualified database name. | |
strreplace ( $orig, $old, $new) | |
Returns a SQL expression for simple string replacement (e.g. | |
tableName (string $name, $format='quoted') | |
Format a table name ready for use in constructing an SQL query. | |
tableNames (... $tables) | |
Fetch a number of table names into an associative array. | |
tableNamesN (... $tables) | |
Fetch a number of table names into a zero-indexed numerical array. | |
timestamp ( $ts=0) | |
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp to the format used for inserting into timestamp fields in this DBMS. | |
timestampOrNull ( $ts=null) | |
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp to the format used for inserting into timestamp fields in this DBMS. | |
unionQueries ( $sqls, $all, $options=[]) | |
Construct a UNION query. | |
unionSupportsOrderAndLimit () | |
Determine if the RDBMS supports ORDER BY and LIMIT for separate subqueries within UNION. | |
Public Attributes | |
const | ALL_ROWS = '*' |
Unconditional update/delete of whole table. | |
const | CALLER_SUBQUERY = 'subquery' |
Special value for ->caller() / $fname parameter used when providing a caller is not expected, because we're formatting a subquery that won't be executed directly. | |
const | CALLER_UNKNOWN = 'unknown' |
Special value for ->caller() / $fname parameter used when a caller is not provided. | |
const | LIST_AND = 1 |
Combine list with AND clauses. | |
const | LIST_COMMA = 0 |
Combine list with comma delimiters. | |
const | LIST_NAMES = 3 |
Treat as field name and do not apply value escaping. | |
const | LIST_OR = 4 |
Combine list with OR clauses. | |
const | LIST_SET = 2 |
Convert map into a SET clause. | |
const | QUERY_CHANGE_LOCKS = 512 |
Query is a command for advisory locks. | |
const | QUERY_CHANGE_NONE = 32 |
Query is a read-only Data Query Language query. | |
const | QUERY_CHANGE_ROWS = 128 |
Query is a Data Manipulation Language command (INSERT, DELETE, LOCK, ...) | |
const | QUERY_CHANGE_SCHEMA = 256 |
Query is a Data Definition Language command. | |
const | QUERY_CHANGE_TRX = 64 |
Query is a Transaction Control Language command (BEGIN, USE, SET, ...) | |
const | QUERY_IGNORE_DBO_TRX = 8 |
Ignore the current presence of any DBO_TRX flag. | |
const | QUERY_NO_RETRY = 16 |
Do not try to retry the query if the connection was lost. | |
const | QUERY_NORMAL = 0 |
Idiom for "no special flags". | |
const | QUERY_PSEUDO_PERMANENT = 2 |
Track a TEMPORARY table CREATE as if it was for a permanent table (for testing) | |
const | QUERY_REPLICA_ROLE = 4 |
Enforce that a query does not make effective writes. | |
const | QUERY_SILENCE_ERRORS = 1 |
Ignore query errors and return false when they happen. | |
Interface for query language.
Note: This is for simple SQL operations, use query builder classes for building full queries.
Methods of this interface should be only used by rdbms library.
Definition at line 38 of file ISQLPlatform.php.
Wikimedia\Rdbms\Platform\ISQLPlatform::addIdentifierQuotes | ( | $s | ) |
Escape a SQL identifier (e.g.
table, column, database) for use in a SQL query
Depending on the database this will either be backticks
or "double quotes"
string | $s |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\Deferred\SiteStatsUpdate\doUpdate().
Wikimedia\Rdbms\Platform\ISQLPlatform::anyChar | ( | ) |
Returns a token for buildLike()
that denotes a '_' to be used in a LIKE query.
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::anyString | ( | ) |
Returns a token for buildLike()
that denotes a '' to be used in a LIKE query.
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\User\TempUser\Pattern\buildLike(), and DeleteLocalPasswords\processUsers().
Wikimedia\Rdbms\Platform\ISQLPlatform::bitAnd | ( | $fieldLeft, | |
$fieldRight ) |
string | int | $fieldLeft | |
string | int | $fieldRight |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::bitNot | ( | $field | ) |
string | int | $field |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::bitOr | ( | $fieldLeft, | |
$fieldRight ) |
string | int | $fieldLeft | |
string | int | $fieldRight |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildComparison | ( | string | $op, |
array | $conds ) |
Build a condition comparing multiple values, for use with indexes that cover multiple fields, common when e.g.
paging through results or doing batch operations.
For example, you might be displaying a list of people ordered alphabetically by their last and first name, split across multiple pages. The first page of the results ended at Jane Doe. When building the query for the next page, you would use:
$queryBuilder->where( $db->buildComparison( '>', [ 'last' => 'Doe', 'first' => 'Jane' ] ) );
This will return people whose last name follows Doe, or whose last name is Doe and first name follows Jane.
Note that the order of keys in the associative array $conds is significant, and must match the order of fields used by the index.
When comparing a single value, prefer using the expression builder:
$db->expr( 'key', '<=', $val ) // equivalent to: $db->buildComparison( '<=', [ 'key' => $val ] ) 'key <= ' . $db->addQuotes( $val )
string | $op | Comparison operator, one of '>', '>=', '<', '<=' |
non-empty-array<string,mixed> | $conds Map of field names to their values to use in the comparison |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildConcat | ( | $stringList | ) |
Build a concatenation list to feed into a SQL query.
string[] | $stringList | Raw SQL expression list; caller is responsible for escaping |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\PostgresPlatform, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by DeleteLocalPasswords\processUsers().
Wikimedia\Rdbms\Platform\ISQLPlatform::buildExcludedValue | ( | $column | ) |
Build a reference to a column value from the conflicting proposed upsert() row.
The reference comes in the form of an alias, function, or parenthesized SQL expression. It can be used in upsert() SET expressions to handle the merging of column values between each conflicting pair of existing and proposed rows. Such proposed rows are said to have been "excluded" from insertion in favor of updating the existing row.
This is useful for multi-row upserts() since the proposed values cannot just be included as literals in the SET expressions.
string | $column | Column name |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\MySQLPlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildGreatest | ( | $fields, | |
$values ) |
Build a GREATEST function statement comparing columns/values.
Integer and float values in $values will not be quoted
If $fields is an array, then each value with a string key is treated as an expression (which must be manually quoted); such string keys do not appear in the SQL and are only descriptive aliases.
string | string[] | $fields | Name(s) of column(s) with values to compare |
string | int | float | string[] | int[] | float[] | $values | Values to compare |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\Deferred\SiteStatsUpdate\doUpdate().
Wikimedia\Rdbms\Platform\ISQLPlatform::buildGroupConcatField | ( | $delim, | |
$tables, | |||
$field, | |||
$conds = '', | |||
$join_conds = [] ) |
Build a GROUP_CONCAT or equivalent statement for a query.
This is useful for combining a field for several rows into a single string. NULL values will not appear in the output, duplicated values will appear, and the resulting delimiter-separated values have no defined sort order. Code using the results may need to use the PHP unique() or sort() methods.
string | $delim | Glue to bind the results together |
string | array | $tables | Table reference(s), using the unqualified name of tables or of the form "information_schema.<identifier>". { |
string | $field | Field name |
string|IExpression|array<string,?scalar|non-empty-array<int,?scalar>|RawSQLValue>|array<int,string|IExpression> | $conds Conditions | |
string | array | $join_conds | Join conditions |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\PostgresPlatform, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildIntegerCast | ( | $field | ) |
string | $field | Field or column to cast |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\MySQLPlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildLeast | ( | $fields, | |
$values ) |
Build a LEAST function statement comparing columns/values.
Integer and float values in $values will not be quoted
If $fields is an array, then each value with a string key is treated as an expression (which must be manually quoted); such string keys do not appear in the SQL and are only descriptive aliases.
string | string[] | $fields | Name(s) of column(s) with values to compare |
string | int | float | string[] | int[] | float[] | $values | Values to compare |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildLike | ( | $param, | |
$params ) |
LIKE statement wrapper.
This takes a variable-length argument list with parts of pattern to match containing either string literals that will be escaped or tokens returned by anyChar()
or anyString()
. Alternatively, the function could be provided with an array of the aforementioned parameters.
Example: $dbr->buildLike( 'My_page_title/', $dbr->anyString() ) returns a LIKE clause that searches for subpages of 'My page title'. Alternatively: $pattern = [ 'My_page_title/', $dbr->anyString() ]; $query .= $dbr->buildLike( $pattern );
array[] | string | LikeMatch | $param | |
string|LikeMatch | ...$params |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\User\TempUser\Pattern\buildLike().
Wikimedia\Rdbms\Platform\ISQLPlatform::buildSelectSubquery | ( | $tables, | |
$vars, | |||
$conds = '', | |||
$fname = __METHOD__, | |||
$options = [], | |||
$join_conds = [] ) |
Equivalent to IDatabase::selectSQLText() except wraps the result in Subquery.
string | array | $tables | Table reference(s), using the unqualified name of tables or of the form "information_schema.<identifier>". { |
string | array | $vars | Field names |
string | array | $conds | Conditions |
string | $fname | Caller function name |
string | array | $options | Query options |
string | array | $join_conds | Join conditions |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildStringCast | ( | $field | ) |
string | $field | Field or column to cast |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\MySQLPlatform, Wikimedia\Rdbms\Platform\PostgresPlatform, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::buildSubString | ( | $input, | |
$startPosition, | |||
$length = null ) |
Build a SUBSTRING function.
Behavior for non-ASCII values is undefined.
string | $input | Field name |
int | $startPosition | Positive integer |
int | null | $length | Non-negative integer length or null for no limit |
\InvalidArgumentException
Referenced by DeleteLocalPasswords\processUsers().
Wikimedia\Rdbms\Platform\ISQLPlatform::conditional | ( | $cond, | |
$caseTrueExpression, | |||
$caseFalseExpression ) |
Returns an SQL expression for a simple conditional.
This doesn't need to be overridden unless CASE isn't supported in the RDBMS.
string|IExpression|array<string,?scalar|non-empty-array<int,?scalar>>|array<int,string|IExpression> | $cond SQL condition expression (yields a boolean) | |
string | $caseTrueExpression | SQL expression to return when the condition is true |
string | $caseFalseExpression | SQL expression to return when the condition is false |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::decodeExpiry | ( | $expiry, | |
$format = TS_MW ) |
Decode an expiry time into a DBMS independent format.
string | $expiry | DB timestamp field value for expiry |
int | $format | TS_* constant, defaults to TS_MW |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\Block\DatabaseBlockStore\newFromRow().
Wikimedia\Rdbms\Platform\ISQLPlatform::encodeExpiry | ( | $expiry | ) |
Encode an expiry time into the DBMS dependent format.
string | $expiry | Timestamp for expiry, or the 'infinity' string |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::factorConds | ( | $condsArray | ) |
Given an array of condition arrays representing an OR list of AND lists, for example:
(A=1 AND B=2) OR (A=1 AND B=3)
produce an SQL expression in which the conditions are factored:
(A=1 AND (B=2 OR B=3))
We also use IN() to simplify further:
(A=1 AND (B IN (2,3))
More compactly, in boolean algebra notation, a sum of products, e.g. AB + AC is factored to produce A(B+C). Factoring proceeds recursively to reduce expressions with any number of variables, for example AEP + AEQ + AFP + AFQ = A(E(P+Q) + F(P+Q))
The algorithm is simple and will not necessarily find the shortest possible expression. For the best results, fields should be given in a consistent order, and the fields with values likely to be shared should be leftmost in the associative arrays.
array | $condsArray | An array of associative arrays. The associative array keys represent field names, and the values represent the field values to compare against. |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\Deferred\LinksUpdate\LinksTable\doWrites().
Wikimedia\Rdbms\Platform\ISQLPlatform::getInfinity | ( | ) |
Find out when 'infinity' is.
Most DBMSes support this. This is a special keyword for timestamps in PostgreSQL, and works with CHAR(14) as well because "i" sorts after all numbers.
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::getTableAliases | ( | ) |
Return current table aliases.
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::implicitOrderby | ( | ) |
Returns true if this database does an implicit order by when the column has an index For example: SELECT page_title FROM page LIMIT 1.
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\PostgresPlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::limitResult | ( | $sql, | |
$limit, | |||
$offset = false ) |
Construct a LIMIT query with optional offset.
The SQL should be adjusted so that only the first $limit rows are returned. If $offset is provided as well, then the first $offset rows should be discarded, and the next $limit rows should be returned. If the result of the query is not ordered, then the rows to be returned are theoretically arbitrary.
$sql is expected to be a SELECT, if that makes a difference.
string | $sql | SQL query we will append the limit too |
int | $limit | The SQL limit |
int | false | $offset | The SQL offset (default false) |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\PostgresPlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::makeList | ( | array | $a, |
$mode = self::LIST_COMMA ) |
Makes an encoded list of strings from an array.
These can be used to make conjunctions or disjunctions on SQL condition strings derived from an array ({
Example usage:
This would set $sql to "rev_page = '$id' AND (rev_minor = 1 OR rev_len < 500)"
array | $a | Containing the data |
int | $mode | IDatabase class constant:
|
DBError | If an error occurs, { |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by Wikimedia\Rdbms\Replication\MysqlReplicationReporter\fetchSecondsSinceHeartbeat(), and MediaWiki\User\ActorMigrationBase\getWhere().
Wikimedia\Rdbms\Platform\ISQLPlatform::makeWhereFrom2d | ( | $data, | |
$baseKey, | |||
$subKey ) |
Build a "OR" condition with pairs from a two-dimensional array.
The associative array should have integer keys relating to the $baseKey field. The nested array should have string keys for the $subKey field. The inner values are ignored, and are typically boolean true.
Example usage:
array | $data | Nested array, must be non-empty |
string | $baseKey | Field name to match the base-level keys to (eg 'pl_namespace') |
string | $subKey | Field name to match the sub-level keys to (eg 'pl_title') |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::selectSQLText | ( | $tables, | |
$vars, | |||
$conds = '', | |||
$fname = __METHOD__, | |||
$options = [], | |||
$join_conds = [] ) |
Take the same arguments as IDatabase::select() and return the SQL it would use.
This can be useful for making UNION queries, where the SQL text of each query is needed. In general, however, callers outside of Database classes should just use select().
string | array | $tables | Table reference(s), using the unqualified name of tables or of the form "information_schema.<identifier>". |
string | array | $vars | Field names |
string|IExpression|array<string,?scalar|non-empty-array<int,?scalar>|RawSQLValue>|array<int,string|IExpression> | $conds Conditions | |
string | $fname | Caller function name |
string | array | $options | Query options |
string | array | $join_conds | Join conditions |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DatabaseMySQL, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\PostgresPlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::setIndexAliases | ( | array | $aliases | ) |
Convert certain index names to alternative names before querying the DB.
Note that this applies to indexes regardless of the table they belong to.
This can be employed when an index was renamed X => Y in code, but the new Y-named indexes were not yet built on all DBs. After all the Y-named ones are added by the DBA, the aliases can be removed, and then the old X-named indexes dropped.
string[] | $aliases |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::setSchemaVars | ( | $vars | ) |
Set schema variables to be used when streaming commands from SQL files or stdin.
Variables appear as SQL comments and are substituted by their corresponding values
array | null | $vars | Map of (variable => value) or null to use the defaults |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::setTableAliases | ( | array | $aliases | ) |
Make certain table names use their own database, schema, and table prefix when passed into SQL queries pre-escaped and without a qualified database name.
For example, "user" can be converted to "myschema.mydbname.user" for convenience. Appearances like user
, somedb.user, somedb.someschema.user will used literally.
Calling this twice will completely clear any old table aliases. Also, note that callers are responsible for making sure the schemas and databases actually exist.
array[] | $aliases | Map of (unqualified name of table => (dbname, schema, prefix) map) |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DatabaseSqlite, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::strreplace | ( | $orig, | |
$old, | |||
$new ) |
Returns a SQL expression for simple string replacement (e.g.
REPLACE() in mysql)
string | $orig | Column to modify |
string | $old | Column to seek |
string | $new | Column to replace with |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::tableName | ( | string | $name, |
$format = 'quoted' ) |
Format a table name ready for use in constructing an SQL query.
This does two important things: it quotes the table names to clean them up, and it adds a table prefix if only given a table name with no quotes.
All functions of this object which require a table name call this function themselves. Pass the canonical name to such functions. This is only needed when calling query()
directly.
The provided name should not qualify the database nor the schema, unless the name is of the form "information_schema.<identifier>". Unlike information_schema tables, regular tables can receive writes and are subject to configuration regarding table aliases, virtual domains, and LBFactory sharding. Callers needing to access remote databases should use appropriate connection factory methods.
string | $name | The unqualified name of a table (no quotes, db, schema, nor table prefix), or a table name of the form "information_schema.<unquoted identifier>". |
string | $format | One of: quoted - Automatically pass the table name through addIdentifierQuotes() so that it can be used in a query. raw - Do not add identifier quotes to the table name. |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by SqlBagOStuff\createTables().
Wikimedia\Rdbms\Platform\ISQLPlatform::tableNames | ( | $tables | ) |
Fetch a number of table names into an associative array.
Much like tableName()
, this is only needed when calling query()
directly. Prefer calling other methods, or using SelectQueryBuilder
.
Theoretical example (which really does not require raw SQL):
string | ...$tables |
tableName
or use tableNamesN
instead of calling this function. Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::tableNamesN | ( | $tables | ) |
Fetch a number of table names into a zero-indexed numerical array.
Much like tableName()
, this is only needed when calling query()
directly. It is slightly more convenient than tableNames()
, but you should still prefer calling other methods, or using SelectQueryBuilder
.
Theoretical example (which really does not require raw SQL):
string | ...$tables |
tableName
. Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::timestamp | ( | $ts = 0 | ) |
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp
to the format used for inserting into timestamp fields in this DBMS.
The result is unquoted, and needs to be passed through addQuotes() before it can be included in raw SQL.
string | int | $ts |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\PostgresPlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\User\User\addToDatabase(), LocalFile\getHistory(), JobQueueDB\insertFields(), MediaWiki\Title\Title\invalidateCache(), PurgeJobUtils\invalidatePages(), MediaWiki\User\User\makeUpdateConditions(), MediaWiki\Block\DatabaseBlockStore\purgeExpiredBlocks(), MediaWiki\Title\Title\purgeExpiredRestrictions(), MediaWiki\SpecialPage\QueryPage\recache(), MediaWiki\User\User\saveSettings(), and MediaWiki\Revision\RevisionStore\userWasLastToEdit().
Wikimedia\Rdbms\Platform\ISQLPlatform::timestampOrNull | ( | $ts = null | ) |
Convert a timestamp in one of the formats accepted by ConvertibleTimestamp to the format used for inserting into timestamp fields in this DBMS.
If NULL is input, it is passed through, allowing NULL values to be inserted into timestamp fields.
The result is unquoted, and needs to be passed through addQuotes() before it can be included in raw SQL.
string | int | null | $ts |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, and Wikimedia\Rdbms\Platform\SQLPlatform.
Referenced by MediaWiki\User\User\addToDatabase(), and MediaWiki\User\User\saveSettings().
Wikimedia\Rdbms\Platform\ISQLPlatform::unionQueries | ( | $sqls, | |
$all, | |||
$options = [] ) |
Construct a UNION query.
This is used for providing overload point for other DB abstractions not compatible with the MySQL syntax.
array | $sqls | SQL statements to combine |
bool | $all | Either IDatabase::UNION_ALL or IDatabase::UNION_DISTINCT |
array | $options | Query options |
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
Wikimedia\Rdbms\Platform\ISQLPlatform::unionSupportsOrderAndLimit | ( | ) |
Determine if the RDBMS supports ORDER BY and LIMIT for separate subqueries within UNION.
Implemented in Wikimedia\Rdbms\Database, Wikimedia\Rdbms\DBConnRef, Wikimedia\Rdbms\Platform\SqlitePlatform, and Wikimedia\Rdbms\Platform\SQLPlatform.
const Wikimedia\Rdbms\Platform\ISQLPlatform::ALL_ROWS = '*' |
Unconditional update/delete of whole table.
Definition at line 52 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::CALLER_SUBQUERY = 'subquery' |
Special value for ->caller() / $fname parameter used when providing a caller is not expected, because we're formatting a subquery that won't be executed directly.
Definition at line 82 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::CALLER_UNKNOWN = 'unknown' |
Special value for ->caller() / $fname parameter used when a caller is not provided.
Definition at line 88 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::LIST_AND = 1 |
Combine list with AND clauses.
Definition at line 43 of file ISQLPlatform.php.
Referenced by Wikimedia\Rdbms\SelectQueryBuilder\where(), and Wikimedia\Rdbms\UpdateQueryBuilder\where().
const Wikimedia\Rdbms\Platform\ISQLPlatform::LIST_COMMA = 0 |
Combine list with comma delimiters.
Definition at line 41 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::LIST_NAMES = 3 |
Treat as field name and do not apply value escaping.
Definition at line 47 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::LIST_OR = 4 |
Combine list with OR clauses.
Definition at line 49 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::LIST_SET = 2 |
Convert map into a SET clause.
Definition at line 45 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_CHANGE_LOCKS = 512 |
Query is a command for advisory locks.
Definition at line 75 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_CHANGE_NONE = 32 |
Query is a read-only Data Query Language query.
Definition at line 67 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_CHANGE_ROWS = 128 |
Query is a Data Manipulation Language command (INSERT, DELETE, LOCK, ...)
Definition at line 71 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_CHANGE_SCHEMA = 256 |
Query is a Data Definition Language command.
Definition at line 73 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_CHANGE_TRX = 64 |
Query is a Transaction Control Language command (BEGIN, USE, SET, ...)
Definition at line 69 of file ISQLPlatform.php.
Referenced by Wikimedia\Rdbms\DatabaseMySQL\open().
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_IGNORE_DBO_TRX = 8 |
Ignore the current presence of any DBO_TRX flag.
Definition at line 63 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_NO_RETRY = 16 |
Do not try to retry the query if the connection was lost.
Definition at line 65 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_NORMAL = 0 |
Idiom for "no special flags".
Definition at line 55 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_PSEUDO_PERMANENT = 2 |
Track a TEMPORARY table CREATE as if it was for a permanent table (for testing)
Definition at line 59 of file ISQLPlatform.php.
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_REPLICA_ROLE = 4 |
Enforce that a query does not make effective writes.
Definition at line 61 of file ISQLPlatform.php.
Referenced by Wikimedia\Rdbms\DBConnRef\query().
const Wikimedia\Rdbms\Platform\ISQLPlatform::QUERY_SILENCE_ERRORS = 1 |
Ignore query errors and return false when they happen.
Definition at line 57 of file ISQLPlatform.php.
Referenced by Wikimedia\Rdbms\DatabaseSqlite\getFulltextSearchModule().