protected Schema::ensureIdentifiersLength($identifier)
Make sure to limit identifiers according to PostgreSQL compiled in length.
PostgreSQL allows in standard configuration no longer identifiers than 63 chars for table/relation names, indexes, primary keys, and constraints. So we map all identifiers that are too long to drupal_base64hash_tag, where tag is one of:
- idx for indexes
- key for constraints
- pkey for primary keys
Parameters
$identifiers: The arguments to build the identifier string
Return value
The index/constraint/pkey identifier
File
- core/lib/Drupal/Core/Database/Driver/pgsql/Schema.php, line 57
Class
- Schema
- PostgreSQL implementation of \Drupal\Core\Database\Schema.
Namespace
Drupal\Core\Database\Driver\pgsql
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | protected function ensureIdentifiersLength( $identifier ) { $args = func_get_args(); $info = $this ->getPrefixInfo( $identifier ); $args [0] = $info [ 'table' ]; $identifierName = implode( '__' , $args ); // Retrieve the max identifier length which is usually 63 characters // but can be altered before PostgreSQL is compiled so we need to check. $this ->maxIdentifierLength = $this ->connection->query( "SHOW max_identifier_length" )->fetchField(); if ( strlen ( $identifierName ) > $this ->maxIdentifierLength) { $saveIdentifier = '"drupal_' . $this ->hashBase64( $identifierName ) . '_' . $args [2] . '"' ; } else { $saveIdentifier = $identifierName ; } return $saveIdentifier ; } |
Please login to continue.