Skip to content

Commit

Permalink
Merge pull request #130 from basz/quote-tablenames
Browse files Browse the repository at this point in the history
Quote tablenames
  • Loading branch information
prolic committed Feb 6, 2018
2 parents 734ea5e + f6f03ba commit 005f670
Show file tree
Hide file tree
Showing 30 changed files with 1,456 additions and 137 deletions.
15 changes: 12 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,15 +106,24 @@ and a running Postgres server listening on port `5432`. Both should contain an e

### MariaDb

`$ docker-compose -f docker-compose-tests.yml run --rm composer run-script test-mariadb --timeout 0`
```bash
docker-compose -f docker-compose-tests.yml run composer run-script test-mariadb --timeout 0; \
docker stop proophpdoeventstore_mariadb_1 && docker rm proophpdoeventstore_mariadb_1
```

### MySql

`$ docker-compose -f docker-compose-tests.yml run --rm composer run-script test-mysql --timeout 0`
```bash
docker-compose -f docker-compose-tests.yml run composer run-script test-mysql --timeout 0; \
docker stop proophpdoeventstore_mysql_1 && docker rm proophpdoeventstore_mysql_1
```

### Postgres

`$ docker-compose -f docker-compose-tests.yml run --rm composer run-script test-postgres --timeout 0`
```bash
docker-compose -f docker-compose-tests.yml run composer run-script test-postgres --timeout 0; \
docker stop proophpdoeventstore_postgres_1 && docker rm proophpdoeventstore_postgres_1
```

## Support

Expand Down
28 changes: 14 additions & 14 deletions src/MariaDbEventStore.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public function __construct(
public function fetchStreamMetadata(StreamName $streamName): array
{
$sql = <<<EOT
SELECT metadata FROM $this->eventStreamsTable
SELECT metadata FROM `$this->eventStreamsTable`
WHERE real_stream_name = :streamName;
EOT;

Expand Down Expand Up @@ -123,7 +123,7 @@ public function updateStreamMetadata(StreamName $streamName, array $newMetadata)
$eventStreamsTable = $this->eventStreamsTable;

$sql = <<<EOT
UPDATE $eventStreamsTable
UPDATE `$eventStreamsTable`
SET metadata = :metadata
WHERE real_stream_name = :streamName;
EOT;
Expand All @@ -150,7 +150,7 @@ public function updateStreamMetadata(StreamName $streamName, array $newMetadata)
public function hasStream(StreamName $streamName): bool
{
$sql = <<<EOT
SELECT COUNT(1) FROM $this->eventStreamsTable
SELECT COUNT(1) FROM `$this->eventStreamsTable`
WHERE real_stream_name = :streamName;
EOT;

Expand Down Expand Up @@ -179,7 +179,7 @@ public function create(Stream $stream): void
$tableName = $this->persistenceStrategy->generateTableName($streamName);
$this->createSchemaFor($tableName);
} catch (RuntimeException $exception) {
$this->connection->exec("DROP TABLE IF EXISTS $tableName;");
$this->connection->exec("DROP TABLE IF EXISTS `$tableName`;");
$this->removeStreamFromStreamsTable($streamName);

throw $exception;
Expand Down Expand Up @@ -223,7 +223,7 @@ public function appendTo(StreamName $streamName, Iterator $streamEvents): void
$rowPlaces = '(' . implode(', ', array_fill(0, count($columnNames), '?')) . ')';
$allPlaces = implode(', ', array_fill(0, $countEntries, $rowPlaces));

$sql = 'INSERT INTO ' . $tableName . ' (' . implode(', ', $columnNames) . ') VALUES ' . $allPlaces;
$sql = 'INSERT INTO `' . $tableName . '` (' . implode(', ', $columnNames) . ') VALUES ' . $allPlaces;

if (! $this->disableTransactionHandling && ! $this->connection->inTransaction()) {
$this->connection->beginTransaction();
Expand Down Expand Up @@ -298,7 +298,7 @@ public function load(
}

$query = <<<EOT
SELECT * FROM $tableName $queryHint
SELECT * FROM `$tableName` $queryHint
$whereCondition
ORDER BY `no` ASC
LIMIT :limit;
Expand Down Expand Up @@ -372,7 +372,7 @@ public function loadReverse(
}

$query = <<<EOT
SELECT * FROM $tableName $queryHint
SELECT * FROM `$tableName` $queryHint
$whereCondition
ORDER BY `no` DESC
LIMIT :limit;
Expand Down Expand Up @@ -431,7 +431,7 @@ public function delete(StreamName $streamName): void
$encodedStreamName = $this->persistenceStrategy->generateTableName($streamName);

$deleteEventStreamSql = <<<EOT
DROP TABLE IF EXISTS $encodedStreamName;
DROP TABLE IF EXISTS `$encodedStreamName`;
EOT;

$statement = $this->connection->prepare($deleteEventStreamSql);
Expand Down Expand Up @@ -470,7 +470,7 @@ public function fetchStreamNames(
}

$query = <<<SQL
SELECT `real_stream_name` FROM $this->eventStreamsTable
SELECT `real_stream_name` FROM `$this->eventStreamsTable`
$whereCondition
ORDER BY `real_stream_name` ASC
LIMIT $offset, $limit
Expand Down Expand Up @@ -521,7 +521,7 @@ public function fetchStreamNamesRegex(
$whereCondition = 'WHERE ' . implode(' AND ', $where);

$query = <<<SQL
SELECT `real_stream_name` FROM $this->eventStreamsTable
SELECT `real_stream_name` FROM `$this->eventStreamsTable`
$whereCondition
ORDER BY `real_stream_name` ASC
LIMIT $offset, $limit
Expand Down Expand Up @@ -567,7 +567,7 @@ public function fetchCategoryNames(?string $filter, int $limit = 20, int $offset
}

$query = <<<SQL
SELECT `category` FROM $this->eventStreamsTable
SELECT `category` FROM `$this->eventStreamsTable`
$whereCondition
GROUP BY `category`
ORDER BY `category` ASC
Expand Down Expand Up @@ -613,7 +613,7 @@ public function fetchCategoryNamesRegex(string $filter, int $limit = 20, int $of
$whereCondition = 'WHERE `category` REGEXP :filter AND `category` IS NOT NULL';

$query = <<<SQL
SELECT `category` FROM $this->eventStreamsTable
SELECT `category` FROM `$this->eventStreamsTable`
$whereCondition
GROUP BY `category`
ORDER BY `category` ASC
Expand Down Expand Up @@ -737,7 +737,7 @@ private function addStreamToStreamsTable(Stream $stream): void
$metadata = json_encode($stream->metadata());

$sql = <<<EOT
INSERT INTO $this->eventStreamsTable (real_stream_name, stream_name, metadata, category)
INSERT INTO `$this->eventStreamsTable` (real_stream_name, stream_name, metadata, category)
VALUES (:realStreamName, :streamName, :metadata, :category);
EOT;

Expand Down Expand Up @@ -770,7 +770,7 @@ private function addStreamToStreamsTable(Stream $stream): void
private function removeStreamFromStreamsTable(StreamName $streamName): void
{
$deleteEventStreamTableEntrySql = <<<EOT
DELETE FROM $this->eventStreamsTable WHERE real_stream_name = ?;
DELETE FROM `$this->eventStreamsTable` WHERE real_stream_name = ?;
EOT;

$statement = $this->connection->prepare($deleteEventStreamTableEntrySql);
Expand Down
28 changes: 14 additions & 14 deletions src/MySqlEventStore.php
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public function __construct(
public function fetchStreamMetadata(StreamName $streamName): array
{
$sql = <<<EOT
SELECT metadata FROM $this->eventStreamsTable
SELECT metadata FROM `$this->eventStreamsTable`
WHERE real_stream_name = :streamName;
EOT;

Expand Down Expand Up @@ -123,7 +123,7 @@ public function updateStreamMetadata(StreamName $streamName, array $newMetadata)
$eventStreamsTable = $this->eventStreamsTable;

$sql = <<<EOT
UPDATE $eventStreamsTable
UPDATE `$eventStreamsTable`
SET metadata = :metadata
WHERE real_stream_name = :streamName;
EOT;
Expand All @@ -150,7 +150,7 @@ public function updateStreamMetadata(StreamName $streamName, array $newMetadata)
public function hasStream(StreamName $streamName): bool
{
$sql = <<<EOT
SELECT COUNT(1) FROM $this->eventStreamsTable
SELECT COUNT(1) FROM `$this->eventStreamsTable`
WHERE real_stream_name = :streamName;
EOT;

Expand Down Expand Up @@ -179,7 +179,7 @@ public function create(Stream $stream): void
$tableName = $this->persistenceStrategy->generateTableName($streamName);
$this->createSchemaFor($tableName);
} catch (RuntimeException $exception) {
$this->connection->exec("DROP TABLE IF EXISTS $tableName;");
$this->connection->exec("DROP TABLE IF EXISTS `$tableName`;");
$this->removeStreamFromStreamsTable($streamName);

throw $exception;
Expand Down Expand Up @@ -223,7 +223,7 @@ public function appendTo(StreamName $streamName, Iterator $streamEvents): void
$rowPlaces = '(' . implode(', ', array_fill(0, count($columnNames), '?')) . ')';
$allPlaces = implode(', ', array_fill(0, $countEntries, $rowPlaces));

$sql = 'INSERT INTO ' . $tableName . ' (' . implode(', ', $columnNames) . ') VALUES ' . $allPlaces;
$sql = 'INSERT INTO `' . $tableName . '` (' . implode(', ', $columnNames) . ') VALUES ' . $allPlaces;

if (! $this->disableTransactionHandling && ! $this->connection->inTransaction()) {
$this->connection->beginTransaction();
Expand Down Expand Up @@ -298,7 +298,7 @@ public function load(
}

$query = <<<EOT
SELECT * FROM $tableName $queryHint
SELECT * FROM `$tableName` $queryHint
$whereCondition
ORDER BY `no` ASC
LIMIT :limit;
Expand Down Expand Up @@ -372,7 +372,7 @@ public function loadReverse(
}

$query = <<<EOT
SELECT * FROM $tableName $queryHint
SELECT * FROM `$tableName` $queryHint
$whereCondition
ORDER BY `no` DESC
LIMIT :limit;
Expand Down Expand Up @@ -431,7 +431,7 @@ public function delete(StreamName $streamName): void
$encodedStreamName = $this->persistenceStrategy->generateTableName($streamName);

$deleteEventStreamSql = <<<EOT
DROP TABLE IF EXISTS $encodedStreamName;
DROP TABLE IF EXISTS `$encodedStreamName`;
EOT;

$statement = $this->connection->prepare($deleteEventStreamSql);
Expand Down Expand Up @@ -470,7 +470,7 @@ public function fetchStreamNames(
}

$query = <<<SQL
SELECT `real_stream_name` FROM $this->eventStreamsTable
SELECT `real_stream_name` FROM `$this->eventStreamsTable`
$whereCondition
ORDER BY `real_stream_name` ASC
LIMIT $offset, $limit
Expand Down Expand Up @@ -521,7 +521,7 @@ public function fetchStreamNamesRegex(
$whereCondition = 'WHERE ' . implode(' AND ', $where);

$query = <<<SQL
SELECT `real_stream_name` FROM $this->eventStreamsTable
SELECT `real_stream_name` FROM `$this->eventStreamsTable`
$whereCondition
ORDER BY `real_stream_name` ASC
LIMIT $offset, $limit
Expand Down Expand Up @@ -567,7 +567,7 @@ public function fetchCategoryNames(?string $filter, int $limit = 20, int $offset
}

$query = <<<SQL
SELECT `category` FROM $this->eventStreamsTable
SELECT `category` FROM `$this->eventStreamsTable`
$whereCondition
GROUP BY `category`
ORDER BY `category` ASC
Expand Down Expand Up @@ -613,7 +613,7 @@ public function fetchCategoryNamesRegex(string $filter, int $limit = 20, int $of
$whereCondition = 'WHERE `category` REGEXP :filter AND `category` IS NOT NULL';

$query = <<<SQL
SELECT `category` FROM $this->eventStreamsTable
SELECT `category` FROM `$this->eventStreamsTable`
$whereCondition
GROUP BY `category`
ORDER BY `category` ASC
Expand Down Expand Up @@ -737,7 +737,7 @@ private function addStreamToStreamsTable(Stream $stream): void
$metadata = json_encode($stream->metadata());

$sql = <<<EOT
INSERT INTO $this->eventStreamsTable (real_stream_name, stream_name, metadata, category)
INSERT INTO `$this->eventStreamsTable` (real_stream_name, stream_name, metadata, category)
VALUES (:realStreamName, :streamName, :metadata, :category);
EOT;

Expand Down Expand Up @@ -770,7 +770,7 @@ private function addStreamToStreamsTable(Stream $stream): void
private function removeStreamFromStreamsTable(StreamName $streamName): void
{
$deleteEventStreamTableEntrySql = <<<EOT
DELETE FROM $this->eventStreamsTable WHERE real_stream_name = ?;
DELETE FROM `$this->eventStreamsTable` WHERE real_stream_name = ?;
EOT;

$statement = $this->connection->prepare($deleteEventStreamTableEntrySql);
Expand Down
4 changes: 2 additions & 2 deletions src/PersistenceStrategy/PostgresAggregateStreamStrategy.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ final class PostgresAggregateStreamStrategy implements PersistenceStrategy
public function createSchema(string $tableName): array
{
$statement = <<<EOT
CREATE TABLE $tableName (
CREATE TABLE "$tableName" (
no BIGSERIAL,
event_id UUID NOT NULL,
event_name VARCHAR(100) NOT NULL,
Expand All @@ -40,7 +40,7 @@ public function createSchema(string $tableName): array

return [
$statement,
"CREATE UNIQUE INDEX on $tableName ((metadata->>'_aggregate_version'));",
"CREATE UNIQUE INDEX on \"$tableName\" ((metadata->>'_aggregate_version'));",
];
}

Expand Down
2 changes: 1 addition & 1 deletion src/PersistenceStrategy/PostgresSimpleStreamStrategy.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ final class PostgresSimpleStreamStrategy implements PersistenceStrategy
public function createSchema(string $tableName): array
{
$statement = <<<EOT
CREATE TABLE $tableName (
CREATE TABLE "$tableName" (
no BIGSERIAL,
event_id UUID NOT NULL,
event_name VARCHAR(100) NOT NULL,
Expand Down
6 changes: 3 additions & 3 deletions src/PersistenceStrategy/PostgresSingleStreamStrategy.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ final class PostgresSingleStreamStrategy implements PersistenceStrategy
public function createSchema(string $tableName): array
{
$statement = <<<EOT
CREATE TABLE $tableName (
CREATE TABLE "$tableName" (
no BIGSERIAL,
event_id UUID NOT NULL,
event_name VARCHAR(100) NOT NULL,
Expand All @@ -41,12 +41,12 @@ public function createSchema(string $tableName): array
EOT;

$index1 = <<<EOT
CREATE UNIQUE INDEX ON $tableName
CREATE UNIQUE INDEX ON "$tableName"
((metadata->>'_aggregate_type'), (metadata->>'_aggregate_id'), (metadata->>'_aggregate_version'));
EOT;

$index2 = <<<EOT
CREATE INDEX ON $tableName
CREATE INDEX ON "$tableName"
((metadata->>'_aggregate_type'), (metadata->>'_aggregate_id'), no);
EOT;

Expand Down
Loading

0 comments on commit 005f670

Please sign in to comment.