MediaWiki
REL1_39
GeneralizedSql.php
Go to the documentation of this file.
1
<?php
20
namespace
Wikimedia\Rdbms
;
21
29
class
GeneralizedSql
{
31
private
$rawSql;
33
private
$prefix;
34
36
private
$genericSql;
37
42
public
function
__construct
( $rawSql, $prefix ) {
43
$this->rawSql = $rawSql;
44
$this->prefix = $prefix;
45
}
46
55
private
static
function
generalizeSQL( $sql ) {
56
# This does the same as the regexp below would do, but in such a way
57
# as to avoid crashing php on some large strings.
58
# $sql = preg_replace( "/'([^\\\\']|\\\\.)*'|\"([^\\\\\"]|\\\\.)*\"/", "'X'", $sql );
59
60
$sql = str_replace(
"\\\\"
,
''
, $sql );
61
$sql = str_replace(
"\\'"
,
''
, $sql );
62
$sql = str_replace(
"\\\""
,
''
, $sql );
63
$sql = preg_replace(
"/'.*'/s"
,
"'X'"
, $sql );
64
$sql = preg_replace(
'/".*"/s'
,
"'X'"
, $sql );
65
66
# All newlines, tabs, etc replaced by single space
67
$sql = preg_replace(
'/\s+/'
,
' '
, $sql );
68
69
# All numbers => N,
70
# except the ones surrounded by characters, e.g. l10n
71
$sql = preg_replace(
'/-?\d+(,-?\d+)+/s'
,
'N,...,N'
, $sql );
72
$sql = preg_replace(
'/(?<![a-zA-Z])-?\d+(?![a-zA-Z])/s'
,
'N'
, $sql );
73
74
return
$sql;
75
}
76
80
public
function
stringify
() {
81
if
( $this->genericSql !==
null
) {
82
return
$this->genericSql;
83
}
84
85
$this->genericSql = $this->prefix .
86
substr( self::generalizeSQL( $this->rawSql ), 0, 255 );
87
88
return
$this->genericSql;
89
}
90
91
public
function
getRawSql
() {
92
return
$this->rawSql;
93
}
94
}
Wikimedia\Rdbms\GeneralizedSql
Lazy-loaded wrapper for simplification and scrubbing of SQL queries for profiling.
Definition
GeneralizedSql.php:29
Wikimedia\Rdbms\GeneralizedSql\stringify
stringify()
Definition
GeneralizedSql.php:80
Wikimedia\Rdbms\GeneralizedSql\__construct
__construct( $rawSql, $prefix)
Definition
GeneralizedSql.php:42
Wikimedia\Rdbms\GeneralizedSql\getRawSql
getRawSql()
Definition
GeneralizedSql.php:91
Wikimedia\Rdbms
Definition
ChronologyProtector.php:20
includes
libs
rdbms
database
utils
GeneralizedSql.php
Generated on Mon Dec 16 2024 06:35:34 for MediaWiki by
1.10.0