classPostgreSqlProvider
final class PostgreSqlProvider
extends Base
@visibility public.Faker Provider for generating syntactically valid PostgreSQL SQL statements.
This provider uses PostgreSQL's official Bison grammar (gram.y) to generate SQL that is syntactically valid. Note that generated SQL may not be semantically valid (tables/columns may not exist).
maxDepth selects shortest productions once the depth is reached; it is not a SQL length limit. The basic pipeline resolves lexical spaces without inserting comments. Optional clauses may be empty. Seed the supplied Faker generator to reproduce a run within the same package version.
$faker = \Faker\Factory::create();
$faker->addProvider(new \SqlFaker\PostgreSql\PostgreSqlProvider($faker));
$faker->parameterMarker(min: 2, max: 2) // => '$2'Methods§
public function __construct(
Generator $generator,
string|null $version = null,
?GrammarCoverage $coverage = null,
)@visibility public.Register SQL formatters on the supplied Faker generator.
Parameters
$generator | Generator | Faker generator |
$version | string|null | PostgreSQL version tag. Null for default. |
$coverage | ?GrammarCoverage |
$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker, 'pg-17.2');
$provider->integerLiteral(min: 42, max: 42) // => '42'new \SqlFaker\PostgreSql\PostgreSqlProvider(\Faker\Factory::create(), 'missing-version') // throws \RuntimeException: UnsupportedCalls 5
- static-call
Base::__construct()line 55 - method-call
Generator::addProvider()line 57 - static-call PgGrammar::resolveVersion() line 58
- static-call SqlGeneratorFactory::create() line 59
- static-call PgGrammar::load() line 59
public function planner(): PlanBuilder@visibility public.Prepares grammar analysis for constructing concrete generation plans.
Returns
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider(\Faker\Factory::create());
$plan = (new \SqlFaker\Generation\Choice\BytePlanCompiler())->compile('', $provider->planner());
$provider->generate($plan) === $provider->generate($plan) // => trueTest cases 2
Calls 1
- method-call SqlGenerator::planner() line 72
public function generate<TRequiresNonEmpty of bool>(GenerationPlan<TRequiresNonEmpty> $plan): (TRequiresNonEmpty is true ? non-empty-string : string)@visibility public.Generates through the same engine used by the convenience methods.
Parameters
$plan | GenerationPlan<TRequiresNonEmpty> |
Returns
(TRequiresNonEmpty is true ? non-empty-string : string)$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider(\Faker\Factory::create());
$plan = \SqlFaker\Generation\Plan\GenerationPlan::all()->requiringNonEmpty()->withExpansionBudget(100);
$provider->generate($plan) !== '' // => trueTest cases 2
Called from 49
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::sql() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:111
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::selectStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:129
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::insertStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:147
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::updateStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:165
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::deleteStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:183
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::createTableStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:201
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::createTableAsStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:219
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::createDomainStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:237
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::alterTableStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:257
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::dropTableStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:275
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::simpleStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:293
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::truncateStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:311
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::copyStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:329
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::createIndexStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:347
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::transactionStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:365
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::expr() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:383
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::simpleExpr() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:401
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::literal() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:419
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::whereClause() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:434
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::sortClause() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:452
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::selectLimit() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:470
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::tableRef() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:488
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::joinedTable() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:506
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::qualifiedName() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:524
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::subquery() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:542
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::withClause() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:560
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::foreignKeyConstraint() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:578
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::identifier() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:596
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::quotedIdentifier() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:614
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::stringLiteral() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:632
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::integerLiteral() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:648
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::decimalLiteral() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:666
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::floatLiteral() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:684
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::hexLiteral() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:704
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::binaryLiteral() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:722
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::dollarQuotedString() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:740
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::parameterMarker() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:756
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::insertFunctionUpsertStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:773
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::partialIndexUpsertStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:792
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::domainDmlStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:816
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::fullTextSearchStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:833
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::temporaryTableStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:850
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::viewStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:869
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::generatedColumnStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:886
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::foreignKeyCascadeStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:903
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::partitionOfStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:920
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::tableSampleStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:937
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::doStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:954
- method-call SqlFaker\PostgreSql\PostgreSqlProvider::mergeStatement() packages/sql-faker/src/PostgreSql/PostgreSqlProvider.php:971
Calls 1
- method-call SqlGenerator::generate() line 92
public function sql(
StatementRule|null $type = null,
int $maxDepth = PHP_INT_MAX,
): non-empty-string@visibility public.Generate a syntactically valid PostgreSQL SQL statement.
Parameters
$type | StatementRule|null | Statement type (null for random) |
$maxDepth | int |
Returns
non-empty-string Generated SQL statement$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->sql(\SqlFaker\PostgreSql\Generation\StatementRule::Select, maxDepth: 0);
preg_match('/\bSELECT\b/i', $sql) // => 1Test cases 8
LexicalGrammarTest::testSupportedPostgreSqlVersionBindsGrammarAndLexerProfileTogethercallsPostgreSqlProviderTest::testGrammarDrivenOutputIsNonEmptycallsPostgreSqlProviderTest::testSeededGenerationIsReproduciblecallsPostgreSqlProviderTest::testSqlcallsPostgreSqlProviderTest::testSqlWithAllStatementRulescallsPostgreSqlProviderTest::testSqlWithMaxDepthcallsPostgreSqlProviderTest::testSqlWithNullStatementRuleUsesRandomcallsPostgreSqlProviderTest::testSqlWithStatementRulecalls
Calls 2
- method-call PostgreSqlProvider::generate() line 111
- static-call GenerationPlans::statementOfType() line 111
public function selectStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL SELECT statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->selectStatement(maxDepth: 0);
preg_match('/\bSELECT\b/is', $sql) // => 1Test cases 3
Calls 3
- method-call PostgreSqlProvider::generate() line 129
- static-call GenerationPlan::fromRule() line 129
- class-const StatementRule::Select() line 129
public function insertStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL INSERT statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->insertStatement(maxDepth: 0);
preg_match('/\bINSERT\b/is', $sql) // => 1Test cases 1
Calls 3
- method-call PostgreSqlProvider::generate() line 147
- static-call GenerationPlan::fromRule() line 147
- class-const StatementRule::Insert() line 147
public function updateStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL UPDATE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->updateStatement(maxDepth: 0);
preg_match('/\bUPDATE\b/is', $sql) // => 1Test cases 2
Calls 3
- method-call PostgreSqlProvider::generate() line 165
- static-call GenerationPlan::fromRule() line 165
- class-const StatementRule::Update() line 165
public function deleteStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL DELETE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->deleteStatement(maxDepth: 0);
preg_match('/\bDELETE\b/is', $sql) // => 1Test cases 2
Calls 3
- method-call PostgreSqlProvider::generate() line 183
- static-call GenerationPlan::fromRule() line 183
- class-const StatementRule::Delete() line 183
public function createTableStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL CREATE TABLE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->createTableStatement(maxDepth: 0);
preg_match('/\bCREATE\b.*\bTABLE\b/is', $sql) // => 1Test cases 1
Calls 3
- method-call PostgreSqlProvider::generate() line 201
- static-call GenerationPlan::fromRule() line 201
- class-const StatementRule::CreateTable() line 201
public function createTableAsStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL CREATE TABLE AS statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->createTableAsStatement(maxDepth: 0);
preg_match('/\bCREATE\b.*\bTABLE\b.*\bAS\b/is', $sql) // => 1Test cases 1
Calls 3
- method-call PostgreSqlProvider::generate() line 219
- static-call GenerationPlan::fromRule() line 219
- class-const StatementRule::CreateTableAs() line 219
public function createDomainStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL CREATE DOMAIN statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->createDomainStatement(maxDepth: 0);
preg_match('/\bCREATE\b.*\bDOMAIN\b/is', $sql) // => 1Test cases 1
Calls 3
- method-call PostgreSqlProvider::generate() line 237
- static-call GenerationPlan::fromRule() line 238
- class-const StatementRule::CreateDomain() line 238
public function alterTableStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL ALTER TABLE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->alterTableStatement(maxDepth: 0);
preg_match('/\bALTER\b.*\bTABLE\b/is', $sql) // => 1Test cases 1
Calls 3
- method-call PostgreSqlProvider::generate() line 257
- static-call GenerationPlan::fromRule() line 257
- class-const StatementRule::AlterTable() line 257
public function dropTableStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL DROP TABLE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->dropTableStatement(maxDepth: 0);
preg_match('/\bDROP\b.*\bTABLE\b/is', $sql) // => 1Test cases 1
Calls 3
- method-call PostgreSqlProvider::generate() line 275
- static-call GenerationPlan::fromRule() line 275
- class-const StatementRule::DropTable() line 275
public function simpleStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate any PostgreSQL statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->simpleStatement(maxDepth: 0);
$sql !== '' // => trueTest cases 2
Calls 3
- method-call PostgreSqlProvider::generate() line 293
- static-call GenerationPlan::fromRule() line 293
- class-const StatementRule::SimpleStatement() line 293
public function truncateStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL TRUNCATE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->truncateStatement(maxDepth: 0);
preg_match('/\bTRUNCATE\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 311
- static-call GenerationPlan::fromRule() line 311
public function copyStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL COPY statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->copyStatement(maxDepth: 0);
preg_match('/\bCOPY\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 329
- static-call GenerationPlans::copyStatement() line 329
public function createIndexStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL CREATE INDEX statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->createIndexStatement(maxDepth: 0);
preg_match('/\bCREATE\b.*\bINDEX\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 347
- static-call GenerationPlan::fromRule() line 347
public function transactionStatement(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL transaction statement (BEGIN/COMMIT/ROLLBACK).
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->transactionStatement(maxDepth: 0);
preg_match('/\b(?:ABORT|BEGIN|COMMIT|ROLLBACK|START|SAVEPOINT|RELEASE|PREPARE)\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 365
- static-call GenerationPlan::fromRule() line 365
public function expr(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL expression.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->expr(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 383
- static-call GenerationPlan::fromRule() line 383
public function simpleExpr(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a simple PostgreSQL expression.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->simpleExpr(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 401
- static-call GenerationPlan::fromRule() line 401
public function literal(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL literal.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->literal(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 419
- static-call GenerationPlan::fromRule() line 419
public function whereClause(int $maxDepth = PHP_INT_MAX): string@visibility public.Generate a PostgreSQL WHERE clause.
Parameters
$maxDepth | int |
Returns
string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$provider->whereClause(maxDepth: 0) // => ''Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 434
- static-call GenerationPlan::fromRule() line 434
public function sortClause(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL ORDER BY clause.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->sortClause(maxDepth: 0);
preg_match('/\bORDER\b.*\bBY\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 452
- static-call GenerationPlan::fromRule() line 452
public function selectLimit(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL LIMIT clause.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->selectLimit(maxDepth: 0);
preg_match('/\b(?:LIMIT|OFFSET|FETCH)\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 470
- static-call GenerationPlan::fromRule() line 470
public function tableRef(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL table reference.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->tableRef(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 488
- static-call GenerationPlan::fromRule() line 488
public function joinedTable(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL joined table.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->joinedTable(maxDepth: 0);
preg_match('/\bJOIN\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 506
- static-call GenerationPlan::fromRule() line 506
public function qualifiedName(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL qualified name (table identifier).
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->qualifiedName(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 524
- static-call GenerationPlan::fromRule() line 524
public function subquery(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL subquery.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->subquery(maxDepth: 0);
preg_match('/\(.*\bSELECT\b.*\)/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 542
- static-call GenerationPlan::fromRule() line 542
public function withClause(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL WITH clause (CTE).
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->withClause(maxDepth: 0);
preg_match('/\bWITH\b.*\bAS\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 560
- static-call GenerationPlan::fromRule() line 560
public function foreignKeyConstraint(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a named PostgreSQL foreign-key table constraint.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->foreignKeyConstraint(maxDepth: 0);
preg_match('/\bCONSTRAINT\b.*\bFOREIGN\b.*\bREFERENCES\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 578
- static-call GenerationPlans::foreignKeyConstraint() line 578
public function identifier(int $maxDepth = PHP_INT_MAX): non-empty-string@visibility public.Generate a PostgreSQL identifier via grammar derivation.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->identifier(maxDepth: 0);
$sql !== '' // => trueTest cases 2
Calls 2
- method-call PostgreSqlProvider::generate() line 596
- static-call GenerationPlan::fromRule() line 596
public function quotedIdentifier(int $minLength = 1, int $maxLength = 63): non-empty-string@visibility public.Generate a double-quote-quoted PostgreSQL identifier.
Parameters
$minLength | int | |
$maxLength | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->quotedIdentifier(minLength: 4, maxLength: 4);
preg_match('/^"[a-z_][a-z0-9_]{3}"$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 614
- static-call GenerationPlans::quotedIdentifier() line 614
public function stringLiteral(int $minLength = 1, int $maxLength = 255): non-empty-string@visibility public.Generate a PostgreSQL string literal.
Parameters
$minLength | int | |
$maxLength | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->stringLiteral(minLength: 4, maxLength: 4);
preg_match('/^\'[A-Za-z0-9_]{4}\'$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 632
- static-call GenerationPlans::stringLiteral() line 632
public function integerLiteral(int $min = 1, int $max = 2147483647): non-empty-string@visibility public.Generate a PostgreSQL integer literal.
Parameters
$min | int | |
$max | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$provider->integerLiteral(min: 42, max: 42) // => '42'Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 648
- static-call GenerationPlans::integerLiteral() line 648
public function decimalLiteral(int $precision = 10, int $scale = 2): non-empty-string@visibility public.Generate a PostgreSQL decimal literal.
Parameters
$precision | int | |
$scale | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->decimalLiteral(precision: 5, scale: 2);
preg_match('/^[0-9]{1,3}\.[0-9]{2}$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 666
- static-call GenerationPlans::decimalLiteral() line 666
public function floatLiteral(
int $precision = 10,
int $scale = 2,
int $minExponent = -307,
int $maxExponent = 308,
): non-empty-string@visibility public.Generate a PostgreSQL float literal with exponent (FCONST).
Parameters
$precision | int | |
$scale | int | |
$minExponent | int | |
$maxExponent | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->floatLiteral(precision: 5, scale: 2, minExponent: 3, maxExponent: 3);
preg_match('/^[0-9]{1,3}\.[0-9]{2}e3$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 684
- static-call GenerationPlans::floatLiteral() line 685
public function hexLiteral(int $minLength = 1, int $maxLength = 16): non-empty-string@visibility public.Generate a PostgreSQL hexadecimal literal (X'...' / XCONST).
Parameters
$minLength | int | |
$maxLength | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->hexLiteral(minLength: 4, maxLength: 4);
preg_match('/^X\'[0-9a-f]{4}\'$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 704
- static-call GenerationPlans::hexLiteral() line 704
public function binaryLiteral(int $minLength = 1, int $maxLength = 64): non-empty-string@visibility public.Generate a PostgreSQL bit string literal (B'...' / BCONST).
Parameters
$minLength | int | |
$maxLength | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->binaryLiteral(minLength: 4, maxLength: 4);
preg_match('/^B\'[01]{4}\'$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 722
- static-call GenerationPlans::binaryLiteral() line 722
public function dollarQuotedString(int $minLength = 1, int $maxLength = 255): non-empty-string@visibility public.Generate a PostgreSQL dollar-quoted string ($$...$$).
Parameters
$minLength | int | |
$maxLength | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$token = $provider->dollarQuotedString(minLength: 4, maxLength: 4);
preg_match('/^\$\$[A-Za-z0-9_]{4}\$\$$/', $token) // => 1Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 740
- static-call GenerationPlans::dollarQuotedString() line 740
public function parameterMarker(int $min = 1, int $max = 99): non-empty-string@visibility public.Generate a PostgreSQL parameter marker ($1, $2, etc.).
Parameters
$min | int | |
$max | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$provider->parameterMarker(min: 42, max: 42) // => '$42'Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 756
- static-call GenerationPlans::parameterMarker() line 756
public function insertFunctionUpsertStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate an upsert whose update expression calls a function.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->insertFunctionUpsertStatement(maxDepth: 0);
preg_match('/\bINSERT\b.*\bCONFLICT\b.*\bUPDATE\b.*\(/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 773
- static-call GenerationPlans::insertFunctionUpsertStatement() line 774
public function partialIndexUpsertStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate an upsert with a partial-index predicate.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->partialIndexUpsertStatement(maxDepth: 0);
preg_match('/\bCONFLICT\b.*\bWHERE\b.*\bUPDATE\b/is', $sql) // => 1Calls 2
- method-call PostgreSqlProvider::generate() line 792
- static-call GenerationPlans::partialIndexUpsertStatement() line 793
public function domainDmlStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate an INSERT, UPDATE or DELETE for domain-oriented fuzzing.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->domainDmlStatement(maxDepth: 0);
preg_match('/\b(?:INSERT|UPDATE|DELETE)\b/is', $sql) // => 1Test cases 1
Calls 2
- static-call GenerationPlans::domainDmlStatements() line 814
- method-call PostgreSqlProvider::generate() line 816
public function fullTextSearchStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a query using the dialect full-text search syntax.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->fullTextSearchStatement(maxDepth: 0);
preg_match('/\bSELECT\b.*@@/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 833
- static-call GenerationPlans::fullTextSearchStatement() line 833
public function temporaryTableStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a temporary-table declaration.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->temporaryTableStatement(maxDepth: 0);
preg_match('/\bCREATE\b.*\bTEMP(?:ORARY)?\b.*\bTABLE\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 850
- static-call GenerationPlans::temporaryTableStatement() line 851
public function viewStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a view declaration.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->viewStatement(maxDepth: 0);
preg_match('/\bCREATE\b.*\bVIEW\b.*\bAS\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 869
- static-call GenerationPlans::viewStatement() line 869
public function generatedColumnStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a table with a generated column.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->generatedColumnStatement(maxDepth: 0);
preg_match('/\bGENERATED\b.*\bALWAYS\b.*\bAS\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 886
- static-call GenerationPlans::generatedColumnStatement() line 886
public function foreignKeyCascadeStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a foreign key with cascading update and delete actions.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->foreignKeyCascadeStatement(maxDepth: 0);
preg_match('/\bREFERENCES\b.*\bCASCADE\b.*\bCASCADE\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 903
- static-call GenerationPlans::foreignKeyCascadeStatement() line 903
public function partitionOfStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a table partition declaration.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->partitionOfStatement(maxDepth: 0);
preg_match('/\bPARTITION\b.*\bOF\b.*\bVALUES\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 920
- static-call GenerationPlans::partitionOfStatement() line 920
public function tableSampleStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a query with TABLESAMPLE.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->tableSampleStatement(maxDepth: 0);
preg_match('/\bTABLESAMPLE\b/is', $sql) // => 1Calls 2
- method-call PostgreSqlProvider::generate() line 937
- static-call GenerationPlans::tableSampleStatement() line 937
public function doStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a DO statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->doStatement(maxDepth: 0);
preg_match('/\bDO\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 954
- static-call GenerationPlans::doStatement() line 954
public function mergeStatement(int $maxDepth = 40): non-empty-string@visibility public.Generate a MERGE statement.
Parameters
$maxDepth | int |
Returns
non-empty-string$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSql\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->mergeStatement(maxDepth: 0);
preg_match('/\bMERGE\b.*\bMATCHED\b/is', $sql) // => 1Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 971
- static-call GenerationPlans::mergeStatement() line 971
Private surface 1§
Implementation details, listed for orientation only.
private SqlGenerator $sqlTest cases 83§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 81
PostgreSqlProviderTest::testAlterTableStatementcallsPostgreSqlProviderTest::testBinaryLiteralcallsPostgreSqlProviderTest::testBinaryLiteralCustomLengthcallsPostgreSqlProviderTest::testBinaryLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testCopyStatementUsesOfficialGrammarRulecallsPostgreSqlProviderTest::testCreateDomainStatementcallsPostgreSqlProviderTest::testCreateIndexStatementcallsPostgreSqlProviderTest::testCreateTableAsStatementcallsPostgreSqlProviderTest::testCreateTableStatementcallsPostgreSqlProviderTest::testDecimalLiteralcallsPostgreSqlProviderTest::testDecimalLiteralCustomPrecisioncallsPostgreSqlProviderTest::testDecimalLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testDeleteContainsFromKeywordcallsPostgreSqlProviderTest::testDeleteStatementcallsPostgreSqlProviderTest::testDollarQuotedStringcallsPostgreSqlProviderTest::testDollarQuotedStringCustomLengthcallsPostgreSqlProviderTest::testDollarQuotedStringDefaultMatchesExplicitcallsPostgreSqlProviderTest::testDomainDmlStatementDerivesDmlFromGrammarcallsPostgreSqlProviderTest::testDoStatementDerivesAnonymousBlockFromGrammarcallsPostgreSqlProviderTest::testDropTableStatementcallsPostgreSqlProviderTest::testExprcallsPostgreSqlProviderTest::testFloatLiteralcallsPostgreSqlProviderTest::testFloatLiteralCustomParamscallsPostgreSqlProviderTest::testFloatLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testForeignKeyCascadeStatementcallsPostgreSqlProviderTest::testForeignKeyConstraintcallsPostgreSqlProviderTest::testFullTextSearchStatementDerivesMatchOperatorFromGrammarAndLexercallsPostgreSqlProviderTest::testGeneratedColumnStatementcallsPostgreSqlProviderTest::testGenerateSchemaBoundInsertAndFreezeChoicescallsPostgreSqlProviderTest::testGrammarDrivenOutputIsNonEmptycallsPostgreSqlProviderTest::testHexLiteralcallsPostgreSqlProviderTest::testHexLiteralCustomLengthcallsPostgreSqlProviderTest::testHexLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testIdentifiercallsPostgreSqlProviderTest::testInsertFunctionUpsertStatementDerivesFunctionExpressionFromGrammarcallsPostgreSqlProviderTest::testInsertStatementcallsPostgreSqlProviderTest::testIntegerLiteralcallsPostgreSqlProviderTest::testIntegerLiteralCustomRangecallsPostgreSqlProviderTest::testIntegerLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testJoinedTablecallsPostgreSqlProviderTest::testLiteralcallsPostgreSqlProviderTest::testMergeStatementDerivesEveryActionFromGrammarcallsPostgreSqlProviderTest::testMultipleGenerationsReturnDifferentResultscallsPostgreSqlProviderTest::testParameterMarkercallsPostgreSqlProviderTest::testParameterMarkerCustomRangecallsPostgreSqlProviderTest::testParameterMarkerDefaultMatchesExplicitcallsPostgreSqlProviderTest::testPartialIndexUpsertStatementIncludesArbiterPredicatecallsPostgreSqlProviderTest::testPartitionOfStatementGeneratesRangeChildDdlcallsPostgreSqlProviderTest::testPlannerCompilesReusableInstructionsWithoutChangingTheDefaultStartcallsPostgreSqlProviderTest::testQualifiedNamecallsPostgreSqlProviderTest::testQuotedIdentifiercallsPostgreSqlProviderTest::testQuotedIdentifierCustomLengthcallsPostgreSqlProviderTest::testQuotedIdentifierDefaultMatchesExplicitcallsPostgreSqlProviderTest::testRegistersItselfWithTheFakerGeneratorcallsPostgreSqlProviderTest::testSeededGenerationIsReproduciblecallsPostgreSqlProviderTest::testSelectContainsSelectOrValuesOrTablecallsPostgreSqlProviderTest::testSelectLimitcallsPostgreSqlProviderTest::testSelectStatementcallsPostgreSqlProviderTest::testSimpleExprcallsPostgreSqlProviderTest::testSimpleStatementReturnsNonEmptycallsPostgreSqlProviderTest::testSimpleStatementReturnsNonEmptyAtMinimumDepthcallsPostgreSqlProviderTest::testSortClausecallsPostgreSqlProviderTest::testSqlcallsPostgreSqlProviderTest::testSqlWithAllStatementRulescallsPostgreSqlProviderTest::testSqlWithMaxDepthcallsPostgreSqlProviderTest::testSqlWithNullStatementRuleUsesRandomcallsPostgreSqlProviderTest::testSqlWithStatementRulecallsPostgreSqlProviderTest::testStringLiteralcallsPostgreSqlProviderTest::testStringLiteralCustomLengthcallsPostgreSqlProviderTest::testStringLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testSubquerycallsPostgreSqlProviderTest::testTableRefcallsPostgreSqlProviderTest::testTableSampleStatementDerivesSamplingClauseFromGrammarcallsPostgreSqlProviderTest::testTemporaryTableStatementcallsPostgreSqlProviderTest::testTransactionStatementcallsPostgreSqlProviderTest::testTruncateStatementcallsPostgreSqlProviderTest::testUpdateContainsSetClausecallsPostgreSqlProviderTest::testUpdateStatementcallsPostgreSqlProviderTest::testViewStatementcallsPostgreSqlProviderTest::testWhereClausecallsPostgreSqlProviderTest::testWithClausecalls