Skip to content

Commit

Permalink
Fix postgres Schema::hastable (#13008)
Browse files Browse the repository at this point in the history
  • Loading branch information
themsaid authored and taylorotwell committed Apr 25, 2016
1 parent f574322 commit 0a26661
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
15 changes: 15 additions & 0 deletions src/Illuminate/Database/PostgresConnection.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,28 @@

namespace Illuminate\Database;

use Illuminate\Database\Schema\PostgresBuilder;
use Doctrine\DBAL\Driver\PDOPgSql\Driver as DoctrineDriver;
use Illuminate\Database\Query\Processors\PostgresProcessor;
use Illuminate\Database\Query\Grammars\PostgresGrammar as QueryGrammar;
use Illuminate\Database\Schema\Grammars\PostgresGrammar as SchemaGrammar;

class PostgresConnection extends Connection
{
/**
* Get a schema builder instance for the connection.
*
* @return \Illuminate\Database\Schema\PostgresBuilder
*/
public function getSchemaBuilder()
{
if (is_null($this->schemaGrammar)) {
$this->useDefaultSchemaGrammar();
}

return new PostgresBuilder($this);
}

/**
* Get the default query grammar instance.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class PostgresGrammar extends Grammar
*/
public function compileTableExists()
{
return 'select * from information_schema.tables where table_name = ?';
return 'select * from information_schema.tables where table_schema = ? and table_name = ?';
}

This comment has been minimized.

Copy link
@Eddymarais

Eddymarais May 3, 2016

This is breaking my code when I run a migration, when I changed to the previous commit it works. In Illuminate\Database\Schema\Bulder.php ln:55 in the hasTable method the select is only passing 1 argument, should be 2...

This is the error message:

[Illuminate\Database\QueryException]
SQLSTATE[08P01]: \Unknown error>>: 7 ERROR: bind message supplies 1 parameters, but prepared statement "pdo_stmt_00000
003" requires 2 (SQL: select * from information_schema.tables where table_schema = migrations and table_name = ?)

[PDOException]
SQLSTATE[08P01]: \Unknown error>>: 7 ERROR: bind message supplies 1 parameters, but prepared statement "pdo_stmt_00000
003" requires 2

This comment has been minimized.

Copy link
@matejvelikonja

matejvelikonja Jan 1, 2017

Contributor

anything new on this?

/**
Expand Down
23 changes: 23 additions & 0 deletions src/Illuminate/Database/Schema/PostgresBuilder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

namespace Illuminate\Database\Schema;

class PostgresBuilder extends Builder
{
/**
* Determine if the given table exists.
*
* @param string $table
* @return bool
*/
public function hasTable($table)
{
$sql = $this->grammar->compileTableExists();

$schema = $this->connection->getConfig('schema');

$table = $this->connection->getTablePrefix().$table;

return count($this->connection->select($sql, [$schema, $table])) > 0;
}
}

0 comments on commit 0a26661

Please sign in to comment.