public function testConstructor() { $sql = "SELECT id FROM ips WHERE ip='192.168.0.1' AND type=1 LIMIT 1"; $expectedType = QueryRewrite::SELECT; $expectedSelect = "SELECT id FROM ips WHERE ip='192.168.0.1' AND type=1 LIMIT 1"; $expectedExplain = "EXPLAIN {$expectedSelect}"; $expectedExtendedExplain = "EXPLAIN EXTENDED {$expectedSelect}"; $QRW = new QueryRewrite($sql); $this->assertEquals($expectedType, $QRW->getType()); $this->assertEquals($expectedSelect, $QRW->toSelect()); $this->assertEquals($expectedExplain, $QRW->asExplain()); $this->assertEquals($expectedExtendedExplain, $QRW->asExtendedExplain()); unset($QRW); }
$where .= ' AND ' . Database::escapeField($field) . ' = ' . Database::find('review')->escape_string($value); } } $query = Database::find('review')->query_col('SELECT review.sample FROM ' . Database::escapeField($reviewhost['history_table']) . ' AS review WHERE review.checksum = ? ' . $where . ' ORDER BY review.ts_max DESC LIMIT 1', $_REQUEST['checksum']); } else { $query = Database::find('review')->query_col('SELECT review.sample FROM ' . Database::escapeField($reviewhost['review_table']) . ' AS review WHERE review.checksum = ?', $_REQUEST['checksum']); } $Query = new QueryRewrite(); $Query->setQuery($query); $sample = $Query->asExtendedExplain(); $return['QueryRewrite'] = (array) $Query; $return['oQuery'] = $query; $return['eQuery'] = $sample; $return['_REQUEST'] = $_REQUEST; if (is_null($sample)) { $return['Warnings'][] = array('Code' => '0', 'Level' => 'Error', 'Message' => "I can't explain this type of query yet"); } else { list($label, $database) = explode('`.`', $_REQUEST['explainDb']); $label = str_replace('`', '', $label); $database = str_replace('`', '', $database); $host = $explainhosts[$label]; Database::connect(null, $host['user'], $host['password'], null, null, 'pdo', array('dsn' => $host['dsn']), $label); Database::find($label)->query('USE ' . Database::escapeField($database)); Database::find($label)->disable_fatal_errors(); $query = @Database::find($label)->query($sample);