39 return '`' . str_replace( [
"\0",
'`' ], [
'',
'``' ], $s ) .
'`';
47 return strlen( $name ) > 1 && $name[0] ===
'`' && $name[-1] ===
'`';
51 return "CAST( $field AS BINARY )";
59 return 'CAST( ' . $field .
' AS SIGNED )';
63 switch ( strtoupper( $joinType ) ) {
66 return 'STRAIGHT_JOIN';
69 return parent::normalizeJoinType( $joinType );
78 return "FORCE INDEX (" . $this->
indexName( $index ) .
")";
86 return "IGNORE INDEX (" . $this->
indexName( $index ) .
")";
94 $delTable = $this->
tableName( $delTable );
95 $joinTable = $this->
tableName( $joinTable );
96 $sql =
"DELETE $delTable FROM $delTable, $joinTable WHERE $delVar=$joinVar ";
98 if ( $conds !=
'*' ) {
106 return parent::isTransactableQuery( $sql ) &&
108 !preg_match(
'/^SELECT\s+(GET|RELEASE|IS_FREE)_LOCK\(/', $sql->
getSQL() );
119 return "VALUES($column)";
123 $encName = $this->quoter->addQuotes( $this->
makeLockName( $lockName ) );
128 return "SELECT IF(GET_LOCK($encName,$timeout),UNIX_TIMESTAMP(SYSDATE(6)),NULL) AS acquired";
132 $encName = $this->quoter->addQuotes( $this->
makeLockName( $lockName ) );
133 return "SELECT IS_FREE_LOCK($encName) AS unlocked";
137 $encName = $this->quoter->addQuotes( $this->
makeLockName( $lockName ) );
138 return "SELECT RELEASE_LOCK($encName) AS released";
144 return ( strlen( $lockName ) > 64 ) ? sha1( $lockName ) : $lockName;