|
MediaWiki master
|
Inherits Wikimedia\Rdbms\Platform\MySQLPlatform.

Public Member Functions | |||||||||||||||||||
| getFloatDeclarationSQL (array $column) | |||||||||||||||||||
Public Member Functions inherited from Wikimedia\Rdbms\Platform\MySQLPlatform | |||||||||||||||||||
| buildExcludedValue ( $column) | |||||||||||||||||||
| |||||||||||||||||||
| buildIntegerCast ( $field) | |||||||||||||||||||
| buildStringCast ( $field) | |||||||||||||||||||
| |||||||||||||||||||
| deleteJoinSqlText ( $delTable, $joinTable, $delVar, $joinVar, $conds) | |||||||||||||||||||
| |||||||||||||||||||
| ignoreIndexClause ( $index) | |||||||||||||||||||
| isTransactableQuery (Query $sql) | |||||||||||||||||||
Determine whether a SQL statement is sensitive to isolation level.A SQL statement is considered transactable if its result could vary depending on the transaction isolation level. Operational commands such as 'SET' and 'SHOW' are not considered to be transactable.Main purpose: Used by query() to decide whether to begin a transaction before the current query (in DBO_TRX mode, on by default).
| |||||||||||||||||||
| lockIsFreeSQLText ( $lockName) | |||||||||||||||||||
| |||||||||||||||||||
| lockSQLText ( $lockName, $timeout) | |||||||||||||||||||
| |||||||||||||||||||
| makeLockName ( $lockName) | |||||||||||||||||||
| unlockSQLText ( $lockName) | |||||||||||||||||||
| |||||||||||||||||||
| useIndexClause ( $index) | |||||||||||||||||||
Public Member Functions inherited from Wikimedia\Rdbms\Platform\SQLPlatform | |||||||||||||||||||
| __construct (DbQuoter $quoter, ?LoggerInterface $logger=null, ?DatabaseDomain $currentDomain=null, $errorLogger=null) | |||||||||||||||||||
| addIdentifierQuotes ( $s) | |||||||||||||||||||
Escape a SQL identifier (e.g.table, column, database) for use in a SQL queryDepending on the database this will either be backticks or "double quotes"
| |||||||||||||||||||
| 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.
| |||||||||||||||||||
| assertValidUpsertSetArray (array $set, array $uniqueKey, array $rows) | |||||||||||||||||||
| 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.
| |||||||||||||||||||
| buildGreatest ( $fields, $values) | |||||||||||||||||||
Build a GREATEST function statement comparing columns/values.Integer and float values in $values will not be quotedIf $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.
| |||||||||||||||||||
| buildGroupConcat ( $field, $delim) | |||||||||||||||||||
Build a GROUP_CONCAT expression.
| |||||||||||||||||||
| 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.
| |||||||||||||||||||
| buildLeast ( $fields, $values) | |||||||||||||||||||
Build a LEAST function statement comparing columns/values.Integer and float values in $values will not be quotedIf $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.
| |||||||||||||||||||
| 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 );
| |||||||||||||||||||
| buildSelectSubquery ( $tables, $vars, $conds='', $fname=__METHOD__, $options=[], $join_conds=[]) | |||||||||||||||||||
Equivalent to IDatabase::selectSQLText() except wraps the result in Subquery.
| |||||||||||||||||||
| buildSubstring ( $input, $startPosition, $length=null) | |||||||||||||||||||
| 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.
| |||||||||||||||||||
| decodeExpiry ( $expiry, $format=TS_MW) | |||||||||||||||||||
Decode an expiry time into a DBMS independent format.
| |||||||||||||||||||
| deleteSqlText ( $table, $conds) | |||||||||||||||||||
| dispatchingInsertSqlText ( $table, $rows, $options) | |||||||||||||||||||
| dropTableSqlText ( $table) | |||||||||||||||||||
| encodeExpiry ( $expiry) | |||||||||||||||||||
Encode an expiry time into the DBMS dependent format.
| |||||||||||||||||||
| escapeLikeInternal ( $s, $escapeChar='`') | |||||||||||||||||||
| extractSingleFieldFromList ( $var) | |||||||||||||||||||
| extractTableNameComponents (string $name) | |||||||||||||||||||
| Extract the dot-separated components of a table name, preserving identifier quotation. | |||||||||||||||||||
| 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.
| |||||||||||||||||||
| fieldNameWithAlias ( $name, $alias=false) | |||||||||||||||||||
| Get an aliased field name e.g. | |||||||||||||||||||
| getCurrentDomain () | |||||||||||||||||||
| getDatabaseAndTableIdentifier (string $table) | |||||||||||||||||||
| Get the database identifer and prefixed table name identifier for a table. | |||||||||||||||||||
| 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.
| |||||||||||||||||||
| getQueryVerb ( $sql) | |||||||||||||||||||
| getTableAliases () | |||||||||||||||||||
| 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.
| |||||||||||||||||||
| insertNonConflictingSqlText ( $table, array $rows) | |||||||||||||||||||
| insertSelectNativeSqlText ( $destTable, $srcTable, array $varMap, $conds, $fname, array $insertOptions, array $selectOptions, $selectJoinConds) | |||||||||||||||||||
| insertSqlText ( $table, array $rows) | |||||||||||||||||||
| isFlagInOptions ( $option, array $options) | |||||||||||||||||||
| isQuotedIdentifier ( $name) | |||||||||||||||||||
| Returns if the given identifier looks quoted or not according to the database convention for quoting identifiers. | |||||||||||||||||||
| 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.
| |||||||||||||||||||
| makeInsertLists (array $rows, $aliasPrefix='', array $typeByColumn=[]) | |||||||||||||||||||
| Make SQL lists of columns, row tuples, and column aliases for INSERT/VALUES expressions. | |||||||||||||||||||
| makeKeyCollisionCondition (array $rows, array $uniqueKey) | |||||||||||||||||||
| Build an SQL condition to find rows with matching key values to those in $rows. | |||||||||||||||||||
| 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: $sql = $db->makeList( [
'rev_page' => $id,
$db->makeList( [ 'rev_minor' => 1, 'rev_len < 500' ], $db::LIST_OR )
], $db::LIST_AND );
This would set $sql to "rev_page = '$id' AND (rev_minor = 1 OR rev_len < 500)"
| |||||||||||||||||||
| 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: $data = [
2 => [
'Foo' => true,
'Bar' => true,
],
3 => [
'Quux' => true,
],
];
// (page_namespace = 2 AND page_title IN ('Foo','Bar'))
// OR (page_namespace = 3 AND page_title = 'Quux')
| |||||||||||||||||||
| normalizeConditions ( $conds, $fname) | |||||||||||||||||||
| normalizeOptions ( $options) | |||||||||||||||||||
| normalizeUpsertParams ( $uniqueKeys, &$rows) | |||||||||||||||||||
| Validate and normalize parameters to upsert() or replace() | |||||||||||||||||||
| qualifiedTableComponents ( $name) | |||||||||||||||||||
| Get the table components needed for a query given the currently selected database/schema. | |||||||||||||||||||
| releaseSavepointSqlText ( $identifier) | |||||||||||||||||||
| replaceVars ( $ins) | |||||||||||||||||||
| Database-independent variable replacement. | |||||||||||||||||||
| rollbackSqlText () | |||||||||||||||||||
| rollbackToSavepointSqlText ( $identifier) | |||||||||||||||||||
| savepointSqlText ( $identifier) | |||||||||||||||||||
| 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().
| |||||||||||||||||||
| setCurrentDomain (DatabaseDomain $currentDomain) | |||||||||||||||||||
| setPrefix (string $prefix) | |||||||||||||||||||
| 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
| |||||||||||||||||||
| 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.REPLACE() in mysql)
| |||||||||||||||||||
| 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.
| |||||||||||||||||||
| 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. You should prefer calling other methods, or using SelectQueryBuilder.Theoretical example (which really does not require raw SQL): [ $user, $watchlist ] = $dbr->tableNamesN( 'user', 'watchlist' );
$sql = "SELECT wl_namespace,wl_title FROM $watchlist,$user
WHERE wl_user=user_id AND wl_user=$nameWithQuotes";
| |||||||||||||||||||
| 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.
| |||||||||||||||||||
| 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.
| |||||||||||||||||||
| 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.
| |||||||||||||||||||
| unionSupportsOrderAndLimit () | |||||||||||||||||||
Determine if the RDBMS supports ORDER BY and LIMIT for separate subqueries within UNION.
| |||||||||||||||||||
| updateSqlText ( $table, $set, $conds, $options) | |||||||||||||||||||
Public Member Functions inherited from Wikimedia\Rdbms\Platform\ISQLPlatform | |||||||||||||||||||
| buildSubString ( $input, $startPosition, $length=null) | |||||||||||||||||||
| Build a SUBSTRING function. | |||||||||||||||||||
Additional Inherited Members | ||||
Public Attributes inherited from Wikimedia\Rdbms\Platform\ISQLPlatform | ||||
| 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. | ||||
Protected Member Functions inherited from Wikimedia\Rdbms\Platform\MySQLPlatform | ||||
| getIdentifierQuoteChar () | ||||
Get the character used for identifier quoting.
| ||||
| normalizeJoinType (string $joinType) | ||||
Validate and normalize a join type.Subclasses may override this to add supported join types.
| ||||
Protected Member Functions inherited from Wikimedia\Rdbms\Platform\SQLPlatform | ||||
| assertBuildSubstringParams ( $startPosition, $length) | ||||
| Check type and bounds for parameters to self::buildSubstring() | ||||
| assertValidUpsertRowArray (array $rows, array $uniqueKey) | ||||
| buildSuperlative ( $sqlfunc, $fields, $values) | ||||
| Build a superlative function statement comparing columns/values. | ||||
| fieldNamesWithAlias ( $fields) | ||||
| Gets an array of aliased field names. | ||||
| getDefaultSchemaVars () | ||||
| Get schema variables to use if none have been set via setSchemaVars(). | ||||
| getSchemaVars () | ||||
| Get schema variables. | ||||
| makeGroupByWithHaving ( $options) | ||||
| Returns an optional GROUP BY with an optional HAVING. | ||||
| makeInsertNonConflictingVerbAndOptions () | ||||
| makeOrderBy ( $options) | ||||
| Returns an optional ORDER BY. | ||||
| makeSelectOptions (array $options) | ||||
| Returns an optional USE INDEX clause to go after the table, and a string to go at the end of the query. | ||||
| makeUpdateOptions ( $options) | ||||
| Make UPDATE options for the Database::update function. | ||||
| makeUpdateOptionsArray ( $options) | ||||
| Make UPDATE options array for Database::makeUpdateOptions. | ||||
| normalizeRowArray (array $rowOrRows) | ||||
| relationSchemaQualifier () | ||||
| tableNamesWithIndexClauseOrJOIN ( $tables, $use_index=[], $ignore_index=[], $join_conds=[]) | ||||
| Get the aliased table name clause for a FROM clause which might have a JOIN and/or USE INDEX or IGNORE INDEX clause. | ||||
| tableNameWithAlias ( $table, $alias=false) | ||||
| Get an aliased table name. | ||||
Protected Attributes inherited from Wikimedia\Rdbms\Platform\SQLPlatform | ||||
| DatabaseDomain | $currentDomain | |||
| callable | $errorLogger | |||
| Error logging callback. | ||||
| LoggerInterface | $logger | |||
| DbQuoter | $quoter | |||
| array null | $schemaVars | |||
| Current variables use for schema element placeholders. | ||||
| array[] | $tableAliases = [] | |||
| Current map of (table => (dbname, schema, prefix) map) | ||||
Definition at line 7 of file MWMySQLPlatform.php.
| Wikimedia\Rdbms\MWMySQLPlatform::getFloatDeclarationSQL | ( | array | $column | ) |
Definition at line 12 of file MWMySQLPlatform.php.