mirror of
https://code.mensbeam.com/MensBeam/Arsse.git
synced 2025-01-08 17:02:41 +00:00
Fix remaining test problems
This commit is contained in:
parent
c40f39e34e
commit
0f2da754c5
9 changed files with 25 additions and 5 deletions
|
@ -204,4 +204,8 @@ abstract class AbstractDriver implements Driver {
|
||||||
public function prepare(string $query, ...$paramType): Statement {
|
public function prepare(string $query, ...$paramType): Statement {
|
||||||
return $this->prepareArray($query, $paramType);
|
return $this->prepareArray($query, $paramType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function stringOutput(): bool {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,7 @@ interface Driver {
|
||||||
* The tokens the implementation must understand are:
|
* The tokens the implementation must understand are:
|
||||||
*
|
*
|
||||||
* - "greatest": the GREATEST function implemented by PostgreSQL and MySQL
|
* - "greatest": the GREATEST function implemented by PostgreSQL and MySQL
|
||||||
|
* - "least": the LEAST function implemented by PostgreSQL and MySQL
|
||||||
* - "nocase": the name of a general-purpose case-insensitive collation sequence
|
* - "nocase": the name of a general-purpose case-insensitive collation sequence
|
||||||
* - "like": the case-insensitive LIKE operator
|
* - "like": the case-insensitive LIKE operator
|
||||||
* - "integer": the integer type to use for explicit casts
|
* - "integer": the integer type to use for explicit casts
|
||||||
|
@ -91,4 +92,7 @@ interface Driver {
|
||||||
* This should be restricted to quick maintenance; in SQLite terms it might include ANALYZE, but not VACUUM
|
* This should be restricted to quick maintenance; in SQLite terms it might include ANALYZE, but not VACUUM
|
||||||
*/
|
*/
|
||||||
public function maintenance(): bool;
|
public function maintenance(): bool;
|
||||||
|
|
||||||
|
/** Reports whether the implementation will coerce integer and float values to text (string) */
|
||||||
|
public function stringOutput(): bool;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ use JKingWeb\Arsse\Db\Exception;
|
||||||
class Driver extends \JKingWeb\Arsse\Db\AbstractDriver {
|
class Driver extends \JKingWeb\Arsse\Db\AbstractDriver {
|
||||||
use ExceptionBuilder;
|
use ExceptionBuilder;
|
||||||
|
|
||||||
protected const SQL_MODE = "ANSI_QUOTES,HIGH_NOT_PRECEDENCE,NO_BACKSLASH_ESCAPES,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,STRICT_ALL_TABLES";
|
protected const SQL_MODE = "ANSI_QUOTES,HIGH_NOT_PRECEDENCE,NO_BACKSLASH_ESCAPES,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,STRICT_ALL_TABLES,NO_UNSIGNED_SUBTRACTION";
|
||||||
protected const TRANSACTIONAL_LOCKS = false;
|
protected const TRANSACTIONAL_LOCKS = false;
|
||||||
|
|
||||||
/** @var \mysqli */
|
/** @var \mysqli */
|
||||||
|
|
|
@ -29,7 +29,7 @@ class PDODriver extends Driver {
|
||||||
try {
|
try {
|
||||||
$this->db = new \PDO($dsn, $user, $password, [
|
$this->db = new \PDO($dsn, $user, $password, [
|
||||||
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
|
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
|
||||||
\PDO::ATTR_STRINGIFY_FETCHES => true,
|
\PDO::ATTR_STRINGIFY_FETCHES => false,
|
||||||
]);
|
]);
|
||||||
} catch (\PDOException $e) {
|
} catch (\PDOException $e) {
|
||||||
$msg = $e->getMessage();
|
$msg = $e->getMessage();
|
||||||
|
|
|
@ -232,4 +232,8 @@ class Driver extends \JKingWeb\Arsse\Db\AbstractDriver {
|
||||||
$this->exec("ANALYZE");
|
$this->exec("ANALYZE");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function stringOutput(): bool {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,4 +60,8 @@ class PDODriver extends Driver {
|
||||||
public function prepareArray(string $query, array $paramTypes): \JKingWeb\Arsse\Db\Statement {
|
public function prepareArray(string $query, array $paramTypes): \JKingWeb\Arsse\Db\Statement {
|
||||||
return new PDOStatement($this->db, $query, $paramTypes);
|
return new PDOStatement($this->db, $query, $paramTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function stringOutput(): bool {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,4 +81,8 @@ class PDODriver extends AbstractPDODriver {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function stringOutput(): bool {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -422,7 +422,7 @@ abstract class AbstractTest extends \PHPUnit\Framework\TestCase {
|
||||||
// serialize to CSV, null being represented by no value
|
// serialize to CSV, null being represented by no value
|
||||||
if ($v === null) {
|
if ($v === null) {
|
||||||
$row[] = "";
|
$row[] = "";
|
||||||
} elseif (static::$stringOutput || is_string($v)) {
|
} elseif ($drv->stringOutput() || is_string($v)) {
|
||||||
$row[] = '"'.str_replace('"', '""', (string) $v).'"';
|
$row[] = '"'.str_replace('"', '""', (string) $v).'"';
|
||||||
} else {
|
} else {
|
||||||
$row[] = (string) $v;
|
$row[] = (string) $v;
|
||||||
|
|
|
@ -16,7 +16,7 @@ trait MySQLPDO {
|
||||||
protected static $dbResultClass = \JKingWeb\Arsse\Db\PDOResult::class;
|
protected static $dbResultClass = \JKingWeb\Arsse\Db\PDOResult::class;
|
||||||
protected static $dbStatementClass = \JKingWeb\Arsse\Db\MySQL\PDOStatement::class;
|
protected static $dbStatementClass = \JKingWeb\Arsse\Db\MySQL\PDOStatement::class;
|
||||||
protected static $dbDriverClass = \JKingWeb\Arsse\Db\MySQL\PDODriver::class;
|
protected static $dbDriverClass = \JKingWeb\Arsse\Db\MySQL\PDODriver::class;
|
||||||
protected static $stringOutput = true;
|
protected static $stringOutput = false;
|
||||||
|
|
||||||
public static function dbInterface() {
|
public static function dbInterface() {
|
||||||
try {
|
try {
|
||||||
|
@ -33,7 +33,7 @@ trait MySQLPDO {
|
||||||
$dsn = "mysql:".implode(";", $dsn);
|
$dsn = "mysql:".implode(";", $dsn);
|
||||||
$d = new \PDO($dsn, Arsse::$conf->dbMySQLUser, Arsse::$conf->dbMySQLPass, [
|
$d = new \PDO($dsn, Arsse::$conf->dbMySQLUser, Arsse::$conf->dbMySQLPass, [
|
||||||
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
|
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
|
||||||
\PDO::ATTR_STRINGIFY_FETCHES => true,
|
\PDO::ATTR_STRINGIFY_FETCHES => false,
|
||||||
\PDO::MYSQL_ATTR_MULTI_STATEMENTS => false,
|
\PDO::MYSQL_ATTR_MULTI_STATEMENTS => false,
|
||||||
]);
|
]);
|
||||||
foreach (\JKingWeb\Arsse\Db\MySQL\PDODriver::makeSetupQueries() as $q) {
|
foreach (\JKingWeb\Arsse\Db\MySQL\PDODriver::makeSetupQueries() as $q) {
|
||||||
|
|
Loading…
Reference in a new issue