tmpCfg = $cfg;
}
/**
* recovering globals and session
*/
public function tearDown()
{
global $cfg;
$cfg = $this->tmpCfg;
}
function testFormatSQLNotArray()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'html';
$sql = "SELECT * FROM tTable;";
$this->assertEquals(
"
\n$sql\n
",
PMA_CommonFunctions::getInstance()->formatSql($sql)
);
}
function testFormatSQLfmTypeHtml_1()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'html';
$cfg['MySQLManualType'] = 'none';
$sql = array (
'raw' => 'SELECT 1;',
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'digit_integer',
'data' => '1',
'pos' => 8,
),
2 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 3,
);
$unparsed = "SELECT 1;";
$expected = 'SELECT 1 ;
';
$this->assertEquals(
$expected,
PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
}
function testFormatSQLfmTypeHtml_2()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'html';
$cfg['MySQLManualType'] = 'none';
$unparsed = "SELECT * from `tTable`;";
$sql = array (
'raw' => $unparsed,
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'punct',
'data' => '*',
'pos' => 0,
),
2 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'from',
'pos' => 13,
'forbidden' => true,
),
3 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable`',
'pos' => 0,
),
4 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 5,
);
$expected = 'SELECT *
FROM `tTable` ;
';
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
}
function testFormatSQLfmTypeHtml_3()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'html';
$cfg['MySQLManualType'] = 'none';
$unparsed = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;';
$sql = array (
'raw' => $unparsed,
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'punct',
'data' => '*',
'pos' => 0,
),
2 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'FROM',
'pos' => 13,
'forbidden' => true,
),
3 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable_A`',
'pos' => 0,
),
4 =>
array (
'type' => 'alpha_identifier',
'data' => 'A',
'pos' => 26,
'forbidden' => false,
),
5 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'INNER',
'pos' => 32,
'forbidden' => true,
),
6 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'JOIN',
'pos' => 37,
'forbidden' => true,
),
7 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable_B`',
'pos' => 0,
),
8 =>
array (
'type' => 'alpha_identifier',
'data' => 'B',
'pos' => 50,
'forbidden' => false,
),
9 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'ON',
'pos' => 53,
'forbidden' => true,
),
10 =>
array (
'type' => 'alpha_identifier',
'data' => 'B',
'pos' => 55,
'forbidden' => false,
),
11 =>
array (
'type' => 'punct_qualifier',
'data' => '.',
'pos' => 0,
),
12 =>
array (
'type' => 'alpha_identifier',
'data' => 'ID',
'pos' => 58,
'forbidden' => false,
),
13 =>
array (
'type' => 'punct',
'data' => '=',
'pos' => 0,
),
14 =>
array (
'type' => 'alpha_identifier',
'data' => 'A',
'pos' => 62,
'forbidden' => false,
),
15 =>
array (
'type' => 'punct_qualifier',
'data' => '.',
'pos' => 0,
),
16 =>
array (
'type' => 'alpha_identifier',
'data' => 'ID',
'pos' => 65,
'forbidden' => false,
),
17 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 18,
);
$expected = 'SELECT *
FROM `tTable_A` A
INNER JOIN `tTable_B` B ON B.ID = A.ID;
';
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
}
function testFormatSQLfmTypeText_1()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'text';
$cfg['MySQLManualType'] = 'none';
$sql = array (
'raw' => 'SELECT 1;',
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'digit_integer',
'data' => '1',
'pos' => 8,
),
2 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 3,
);
$unparsed = "SELECT 1;";
$expected = 'SELECT 1 ;
';
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
}
function testFormatSQLfmTypeText_2()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'text';
$cfg['MySQLManualType'] = 'none';
$unparsed = "SELECT * from `tTable`;";
$sql = array (
'raw' => $unparsed,
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'punct',
'data' => '*',
'pos' => 0,
),
2 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'from',
'pos' => 13,
'forbidden' => true,
),
3 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable`',
'pos' => 0,
),
4 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 5,
);
$expected = 'SELECT *
FROM `tTable` ;
';
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
}
function testFormatSQLfmTypeText_3()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'text';
$cfg['MySQLManualType'] = 'none';
$unparsed = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;';
$sql = array (
'raw' => $unparsed,
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'punct',
'data' => '*',
'pos' => 0,
),
2 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'FROM',
'pos' => 13,
'forbidden' => true,
),
3 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable_A`',
'pos' => 0,
),
4 =>
array (
'type' => 'alpha_identifier',
'data' => 'A',
'pos' => 26,
'forbidden' => false,
),
5 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'INNER',
'pos' => 32,
'forbidden' => true,
),
6 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'JOIN',
'pos' => 37,
'forbidden' => true,
),
7 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable_B`',
'pos' => 0,
),
8 =>
array (
'type' => 'alpha_identifier',
'data' => 'B',
'pos' => 50,
'forbidden' => false,
),
9 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'ON',
'pos' => 53,
'forbidden' => true,
),
10 =>
array (
'type' => 'alpha_identifier',
'data' => 'B',
'pos' => 55,
'forbidden' => false,
),
11 =>
array (
'type' => 'punct_qualifier',
'data' => '.',
'pos' => 0,
),
12 =>
array (
'type' => 'alpha_identifier',
'data' => 'ID',
'pos' => 58,
'forbidden' => false,
),
13 =>
array (
'type' => 'punct',
'data' => '=',
'pos' => 0,
),
14 =>
array (
'type' => 'alpha_identifier',
'data' => 'A',
'pos' => 62,
'forbidden' => false,
),
15 =>
array (
'type' => 'punct_qualifier',
'data' => '.',
'pos' => 0,
),
16 =>
array (
'type' => 'alpha_identifier',
'data' => 'ID',
'pos' => 65,
'forbidden' => false,
),
17 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 18,
);
$expected = 'SELECT *
FROM `tTable_A` A
INNER JOIN `tTable_B` B ON B.ID = A.ID;
';
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
}
function testFormatSQLfmTypeNone_1()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'none';
$cfg['MySQLManualType'] = 'none';
$sql = array (
'raw' => 'SELECT 1;',
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'digit_integer',
'data' => '1',
'pos' => 8,
),
2 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 3,
);
$unparsed = "SELECT 1;";
$expected = "\nSELECT 1;\n
";
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
$expected = "SELECT 1;";
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql)
);
}
function testFormatSQLfmTypeNone_2()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'none';
$cfg['MySQLManualType'] = 'none';
$unparsed = "SELECT * from `tTable`;";
$sql = array (
'raw' => $unparsed,
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'punct',
'data' => '*',
'pos' => 0,
),
2 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'from',
'pos' => 13,
'forbidden' => true,
),
3 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable`',
'pos' => 0,
),
4 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 5,
);
$expected = "\nSELECT * from `tTable`;\n
";
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
$expected = "SELECT * from `tTable`;";
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql)
);
}
function testFormatSQLfmTypeNone_3()
{
global $cfg;
$cfg['SQP']['fmtType'] = 'none';
$cfg['MySQLManualType'] = 'none';
$unparsed = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;';
$sql = array (
'raw' => $unparsed,
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'punct',
'data' => '*',
'pos' => 0,
),
2 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'FROM',
'pos' => 13,
'forbidden' => true,
),
3 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable_A`',
'pos' => 0,
),
4 =>
array (
'type' => 'alpha_identifier',
'data' => 'A',
'pos' => 26,
'forbidden' => false,
),
5 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'INNER',
'pos' => 32,
'forbidden' => true,
),
6 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'JOIN',
'pos' => 37,
'forbidden' => true,
),
7 =>
array (
'type' => 'quote_backtick',
'data' => '`tTable_B`',
'pos' => 0,
),
8 =>
array (
'type' => 'alpha_identifier',
'data' => 'B',
'pos' => 50,
'forbidden' => false,
),
9 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'ON',
'pos' => 53,
'forbidden' => true,
),
10 =>
array (
'type' => 'alpha_identifier',
'data' => 'B',
'pos' => 55,
'forbidden' => false,
),
11 =>
array (
'type' => 'punct_qualifier',
'data' => '.',
'pos' => 0,
),
12 =>
array (
'type' => 'alpha_identifier',
'data' => 'ID',
'pos' => 58,
'forbidden' => false,
),
13 =>
array (
'type' => 'punct',
'data' => '=',
'pos' => 0,
),
14 =>
array (
'type' => 'alpha_identifier',
'data' => 'A',
'pos' => 62,
'forbidden' => false,
),
15 =>
array (
'type' => 'punct_qualifier',
'data' => '.',
'pos' => 0,
),
16 =>
array (
'type' => 'alpha_identifier',
'data' => 'ID',
'pos' => 65,
'forbidden' => false,
),
17 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 18,
);
$expected = "\nSELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;\n
";
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql, $unparsed)
);
$expected = 'SELECT * FROM `tTable_A` A INNER JOIN `tTable_B` B ON B.ID = A.ID;';
$this->assertEquals(
$expected, PMA_CommonFunctions::getInstance()->formatSql($sql)
);
}
function testFormatSQLWithoutType()
{
global $cfg;
$cfg['SQP']['fmtType'] = '';
$cfg['MySQLManualType'] = 'none';
$sql = array (
'raw' => 'SELECT 1;',
0 =>
array (
'type' => 'alpha_reservedWord',
'data' => 'SELECT',
'pos' => 6,
'forbidden' => true,
),
1 =>
array (
'type' => 'digit_integer',
'data' => '1',
'pos' => 8,
),
2 =>
array (
'type' => 'punct_queryend',
'data' => ';',
'pos' => 0,
),
'len' => 3,
);
$this->assertEmpty(PMA_CommonFunctions::getInstance()->formatSql($sql));
}
function testFormatSQLError()
{
global $SQP_errorString;
$SQP_errorString = true;
$sql = array("raw" => "& \" < >");
$this->assertEquals(
"& " < >",
PMA_CommonFunctions::getInstance()->formatSql($sql)
);
$SQP_errorString = false;
}
}