%PDF- %PDF-
Direktori : /www/varak.net/losik.varak.net/vendor/nette/database/src/Database/Drivers/ |
Current File : //www/varak.net/losik.varak.net/vendor/nette/database/src/Database/Drivers/OdbcDriver.php |
<?php /** * This file is part of the Nette Framework (https://nette.org) * Copyright (c) 2004 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); namespace Nette\Database\Drivers; use Nette; /** * Supplemental ODBC database driver. */ class OdbcDriver implements Nette\Database\Driver { use Nette\SmartObject; public function initialize(Nette\Database\Connection $connection, array $options): void { } public function convertException(\PDOException $e): Nette\Database\DriverException { return Nette\Database\DriverException::from($e); } /********************* SQL ****************d*g**/ public function delimite(string $name): string { return '[' . str_replace(['[', ']'], ['[[', ']]'], $name) . ']'; } public function formatDateTime(\DateTimeInterface $value): string { return $value->format('#m/d/Y H:i:s#'); } public function formatDateInterval(\DateInterval $value): string { throw new Nette\NotSupportedException; } public function formatLike(string $value, int $pos): string { $value = strtr($value, ["'" => "''", '%' => '[%]', '_' => '[_]', '[' => '[[]']); return ($pos <= 0 ? "'%" : "'") . $value . ($pos >= 0 ? "%'" : "'"); } public function applyLimit(string &$sql, ?int $limit, ?int $offset): void { if ($offset) { throw new Nette\NotSupportedException('Offset is not supported by this database.'); } elseif ($limit < 0) { throw new Nette\InvalidArgumentException('Negative offset or limit.'); } elseif ($limit !== null) { $sql = preg_replace('#^\s*(SELECT(\s+DISTINCT|\s+ALL)?|UPDATE|DELETE)#i', '$0 TOP ' . $limit, $sql, 1, $count); if (!$count) { throw new Nette\InvalidArgumentException('SQL query must begin with SELECT, UPDATE or DELETE command.'); } } } /********************* reflection ****************d*g**/ public function getTables(): array { throw new Nette\NotImplementedException; } public function getColumns(string $table): array { throw new Nette\NotImplementedException; } public function getIndexes(string $table): array { throw new Nette\NotImplementedException; } public function getForeignKeys(string $table): array { throw new Nette\NotImplementedException; } public function getColumnTypes(\PDOStatement $statement): array { return []; } public function isSupported(string $item): bool { return $item === self::SUPPORT_SUBSELECT; } }