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\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\PostgreSqlProvider($faker, 'pg-17.2');
$provider->integerLiteral(min: 42, max: 42) // => '42'new \SqlFaker\PostgreSqlProvider(\Faker\Factory::create(), 'missing-version') // throws \RuntimeException: UnsupportedCalls 5
- static-call
Base::__construct()line 54 - method-call
Generator::addProvider()line 56 - static-call PgGrammar::resolveVersion() line 57
- static-call SqlGeneratorFactory::forPostgreSql() line 58
- static-call PgGrammar::load() line 58
public function planner(): PlanBuilder@visibility public.Prepares grammar analysis for constructing concrete generation plans.
Returns
$provider = new \SqlFaker\PostgreSqlProvider(\Faker\Factory::create());
$plan = (new \SqlFaker\Generation\Choice\BytePlanCompiler())->compile('', $provider->planner());
$provider->generate($plan) === $provider->generate($plan) // => trueTest cases 1
Calls 1
- method-call SqlGenerator::planner() line 71
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\SqliteProvider(\Faker\Factory::create());
$plan = \SqlFaker\Generation\Plan\GenerationPlan::all()->requiringNonEmpty()->withExpansionBudget(100);
$provider->generate($plan) !== '' // => trueTest cases 1
Called from 49
- method-call SqlFaker\PostgreSqlProvider::sql() packages/sql-faker/src/PostgreSqlProvider.php:110
- method-call SqlFaker\PostgreSqlProvider::selectStatement() packages/sql-faker/src/PostgreSqlProvider.php:128
- method-call SqlFaker\PostgreSqlProvider::insertStatement() packages/sql-faker/src/PostgreSqlProvider.php:146
- method-call SqlFaker\PostgreSqlProvider::updateStatement() packages/sql-faker/src/PostgreSqlProvider.php:164
- method-call SqlFaker\PostgreSqlProvider::deleteStatement() packages/sql-faker/src/PostgreSqlProvider.php:182
- method-call SqlFaker\PostgreSqlProvider::createTableStatement() packages/sql-faker/src/PostgreSqlProvider.php:200
- method-call SqlFaker\PostgreSqlProvider::createTableAsStatement() packages/sql-faker/src/PostgreSqlProvider.php:218
- method-call SqlFaker\PostgreSqlProvider::createDomainStatement() packages/sql-faker/src/PostgreSqlProvider.php:236
- method-call SqlFaker\PostgreSqlProvider::alterTableStatement() packages/sql-faker/src/PostgreSqlProvider.php:256
- method-call SqlFaker\PostgreSqlProvider::dropTableStatement() packages/sql-faker/src/PostgreSqlProvider.php:274
- method-call SqlFaker\PostgreSqlProvider::simpleStatement() packages/sql-faker/src/PostgreSqlProvider.php:292
- method-call SqlFaker\PostgreSqlProvider::truncateStatement() packages/sql-faker/src/PostgreSqlProvider.php:310
- method-call SqlFaker\PostgreSqlProvider::copyStatement() packages/sql-faker/src/PostgreSqlProvider.php:328
- method-call SqlFaker\PostgreSqlProvider::createIndexStatement() packages/sql-faker/src/PostgreSqlProvider.php:346
- method-call SqlFaker\PostgreSqlProvider::transactionStatement() packages/sql-faker/src/PostgreSqlProvider.php:364
- method-call SqlFaker\PostgreSqlProvider::expr() packages/sql-faker/src/PostgreSqlProvider.php:382
- method-call SqlFaker\PostgreSqlProvider::simpleExpr() packages/sql-faker/src/PostgreSqlProvider.php:400
- method-call SqlFaker\PostgreSqlProvider::literal() packages/sql-faker/src/PostgreSqlProvider.php:418
- method-call SqlFaker\PostgreSqlProvider::whereClause() packages/sql-faker/src/PostgreSqlProvider.php:433
- method-call SqlFaker\PostgreSqlProvider::sortClause() packages/sql-faker/src/PostgreSqlProvider.php:451
- method-call SqlFaker\PostgreSqlProvider::selectLimit() packages/sql-faker/src/PostgreSqlProvider.php:469
- method-call SqlFaker\PostgreSqlProvider::tableRef() packages/sql-faker/src/PostgreSqlProvider.php:487
- method-call SqlFaker\PostgreSqlProvider::joinedTable() packages/sql-faker/src/PostgreSqlProvider.php:505
- method-call SqlFaker\PostgreSqlProvider::qualifiedName() packages/sql-faker/src/PostgreSqlProvider.php:523
- method-call SqlFaker\PostgreSqlProvider::subquery() packages/sql-faker/src/PostgreSqlProvider.php:541
- method-call SqlFaker\PostgreSqlProvider::withClause() packages/sql-faker/src/PostgreSqlProvider.php:559
- method-call SqlFaker\PostgreSqlProvider::foreignKeyConstraint() packages/sql-faker/src/PostgreSqlProvider.php:577
- method-call SqlFaker\PostgreSqlProvider::identifier() packages/sql-faker/src/PostgreSqlProvider.php:595
- method-call SqlFaker\PostgreSqlProvider::quotedIdentifier() packages/sql-faker/src/PostgreSqlProvider.php:613
- method-call SqlFaker\PostgreSqlProvider::stringLiteral() packages/sql-faker/src/PostgreSqlProvider.php:631
- method-call SqlFaker\PostgreSqlProvider::integerLiteral() packages/sql-faker/src/PostgreSqlProvider.php:647
- method-call SqlFaker\PostgreSqlProvider::decimalLiteral() packages/sql-faker/src/PostgreSqlProvider.php:665
- method-call SqlFaker\PostgreSqlProvider::floatLiteral() packages/sql-faker/src/PostgreSqlProvider.php:683
- method-call SqlFaker\PostgreSqlProvider::hexLiteral() packages/sql-faker/src/PostgreSqlProvider.php:703
- method-call SqlFaker\PostgreSqlProvider::binaryLiteral() packages/sql-faker/src/PostgreSqlProvider.php:721
- method-call SqlFaker\PostgreSqlProvider::dollarQuotedString() packages/sql-faker/src/PostgreSqlProvider.php:739
- method-call SqlFaker\PostgreSqlProvider::parameterMarker() packages/sql-faker/src/PostgreSqlProvider.php:755
- method-call SqlFaker\PostgreSqlProvider::insertFunctionUpsertStatement() packages/sql-faker/src/PostgreSqlProvider.php:772
- method-call SqlFaker\PostgreSqlProvider::partialIndexUpsertStatement() packages/sql-faker/src/PostgreSqlProvider.php:791
- method-call SqlFaker\PostgreSqlProvider::domainDmlStatement() packages/sql-faker/src/PostgreSqlProvider.php:815
- method-call SqlFaker\PostgreSqlProvider::fullTextSearchStatement() packages/sql-faker/src/PostgreSqlProvider.php:832
- method-call SqlFaker\PostgreSqlProvider::temporaryTableStatement() packages/sql-faker/src/PostgreSqlProvider.php:849
- method-call SqlFaker\PostgreSqlProvider::viewStatement() packages/sql-faker/src/PostgreSqlProvider.php:868
- method-call SqlFaker\PostgreSqlProvider::generatedColumnStatement() packages/sql-faker/src/PostgreSqlProvider.php:885
- method-call SqlFaker\PostgreSqlProvider::foreignKeyCascadeStatement() packages/sql-faker/src/PostgreSqlProvider.php:902
- method-call SqlFaker\PostgreSqlProvider::partitionOfStatement() packages/sql-faker/src/PostgreSqlProvider.php:919
- method-call SqlFaker\PostgreSqlProvider::tableSampleStatement() packages/sql-faker/src/PostgreSqlProvider.php:936
- method-call SqlFaker\PostgreSqlProvider::doStatement() packages/sql-faker/src/PostgreSqlProvider.php:953
- method-call SqlFaker\PostgreSqlProvider::mergeStatement() packages/sql-faker/src/PostgreSqlProvider.php:970
Calls 1
- method-call SqlGenerator::generate() line 91
public function sql(
StatementType|null $type = null,
int $maxDepth = PHP_INT_MAX,
): non-empty-string@visibility public.Generate a syntactically valid PostgreSQL SQL statement.
Parameters
$type | StatementType|null | Statement type (null for random) |
$maxDepth | int |
Returns
non-empty-string Generated SQL statement$faker = \Faker\Factory::create();
$provider = new \SqlFaker\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->sql(\SqlFaker\PostgreSql\StatementType::Select, maxDepth: 0);
preg_match('/\bSELECT\b/i', $sql) // => 1Test cases 8
LexicalGrammarTest::testSupportedPostgreSqlVersionBindsGrammarAndLexerProfileTogethercallsPostgreSqlProviderTest::testGrammarDrivenOutputIsNonEmptycallsPostgreSqlProviderTest::testSeededGenerationIsReproduciblecallsPostgreSqlProviderTest::testSqlcallsPostgreSqlProviderTest::testSqlWithAllStatementTypescallsPostgreSqlProviderTest::testSqlWithMaxDepthcallsPostgreSqlProviderTest::testSqlWithNullStatementTypeUsesRandomcallsPostgreSqlProviderTest::testSqlWithStatementTypecalls
Calls 2
- method-call PostgreSqlProvider::generate() line 110
- static-call GenerationPlans::statementOfType() line 110
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\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 128
- static-call GenerationPlan::fromRule() line 128
- class-const
StatementType::Select()line 128
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\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 146
- static-call GenerationPlan::fromRule() line 146
- class-const
StatementType::Insert()line 146
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\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 164
- static-call GenerationPlan::fromRule() line 164
- class-const
StatementType::Update()line 164
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\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 182
- static-call GenerationPlan::fromRule() line 182
- class-const
StatementType::Delete()line 182
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\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 200
- static-call GenerationPlan::fromRule() line 200
- class-const
StatementType::CreateTable()line 200
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\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 218
- static-call GenerationPlan::fromRule() line 218
- class-const
StatementType::CreateTableAs()line 218
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\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 236
- static-call GenerationPlan::fromRule() line 237
- class-const
StatementType::CreateDomain()line 237
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\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 256
- static-call GenerationPlan::fromRule() line 256
- class-const
StatementType::AlterTable()line 256
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\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 274
- static-call GenerationPlan::fromRule() line 274
- class-const
StatementType::DropTable()line 274
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->simpleStatement(maxDepth: 0);
$sql !== '' // => trueTest cases 2
Calls 3
- method-call PostgreSqlProvider::generate() line 292
- static-call GenerationPlan::fromRule() line 292
- class-const
StatementType::SimpleStatement()line 292
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\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 310
- static-call GenerationPlan::fromRule() line 310
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\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 328
- static-call GenerationPlans::copyStatement() line 328
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\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 346
- static-call GenerationPlan::fromRule() line 346
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\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 364
- static-call GenerationPlan::fromRule() line 364
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->expr(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 382
- static-call GenerationPlan::fromRule() line 382
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->simpleExpr(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 400
- static-call GenerationPlan::fromRule() line 400
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->literal(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 418
- static-call GenerationPlan::fromRule() line 418
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\PostgreSqlProvider($faker);
$faker->seed(7);
$provider->whereClause(maxDepth: 0) // => ''Test cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 433
- static-call GenerationPlan::fromRule() line 433
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\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 451
- static-call GenerationPlan::fromRule() line 451
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\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 469
- static-call GenerationPlan::fromRule() line 469
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->tableRef(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 487
- static-call GenerationPlan::fromRule() line 487
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\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 505
- static-call GenerationPlan::fromRule() line 505
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->qualifiedName(maxDepth: 0);
$sql !== '' // => trueTest cases 1
Calls 2
- method-call PostgreSqlProvider::generate() line 523
- static-call GenerationPlan::fromRule() line 523
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\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 541
- static-call GenerationPlan::fromRule() line 541
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\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 559
- static-call GenerationPlan::fromRule() line 559
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\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 577
- static-call GenerationPlans::foreignKeyConstraint() line 577
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->identifier(maxDepth: 0);
$sql !== '' // => trueTest cases 2
Calls 2
- method-call PostgreSqlProvider::generate() line 595
- static-call GenerationPlan::fromRule() line 595
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\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 613
- static-call GenerationPlans::quotedIdentifier() line 613
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\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 631
- static-call GenerationPlans::stringLiteral() line 631
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\PostgreSqlProvider($faker);
$provider->integerLiteral(min: 42, max: 42) // => '42'Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 647
- static-call GenerationPlans::integerLiteral() line 647
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\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 665
- static-call GenerationPlans::decimalLiteral() line 665
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\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 683
- static-call GenerationPlans::floatLiteral() line 684
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\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 703
- static-call GenerationPlans::hexLiteral() line 703
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\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 721
- static-call GenerationPlans::binaryLiteral() line 721
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\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 739
- static-call GenerationPlans::dollarQuotedString() line 739
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\PostgreSqlProvider($faker);
$provider->parameterMarker(min: 42, max: 42) // => '$42'Test cases 3
Calls 2
- method-call PostgreSqlProvider::generate() line 755
- static-call GenerationPlans::parameterMarker() line 755
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\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 772
- static-call GenerationPlans::insertFunctionUpsertStatement() line 773
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\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 791
- static-call GenerationPlans::partialIndexUpsertStatement() line 792
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\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 813
- method-call PostgreSqlProvider::generate() line 815
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\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 832
- static-call GenerationPlans::fullTextSearchStatement() line 832
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\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 849
- static-call GenerationPlans::temporaryTableStatement() line 850
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\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 868
- static-call GenerationPlans::viewStatement() line 868
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\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 885
- static-call GenerationPlans::generatedColumnStatement() line 885
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\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 902
- static-call GenerationPlans::foreignKeyCascadeStatement() line 902
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\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 919
- static-call GenerationPlans::partitionOfStatement() line 919
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\PostgreSqlProvider($faker);
$faker->seed(7);
$sql = $provider->tableSampleStatement(maxDepth: 0);
preg_match('/\bTABLESAMPLE\b/is', $sql) // => 1Calls 2
- method-call PostgreSqlProvider::generate() line 936
- static-call GenerationPlans::tableSampleStatement() line 936
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\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 953
- static-call GenerationPlans::doStatement() line 953
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\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 970
- static-call GenerationPlans::mergeStatement() line 970
Private surface 1§
Implementation details, listed for orientation only.
private SqlGenerator $sqlTest cases 81§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 80
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::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::testSqlWithAllStatementTypescallsPostgreSqlProviderTest::testSqlWithMaxDepthcallsPostgreSqlProviderTest::testSqlWithNullStatementTypeUsesRandomcallsPostgreSqlProviderTest::testSqlWithStatementTypecallsPostgreSqlProviderTest::testStringLiteralcallsPostgreSqlProviderTest::testStringLiteralCustomLengthcallsPostgreSqlProviderTest::testStringLiteralDefaultMatchesExplicitcallsPostgreSqlProviderTest::testSubquerycallsPostgreSqlProviderTest::testTableRefcallsPostgreSqlProviderTest::testTableSampleStatementDerivesSamplingClauseFromGrammarcallsPostgreSqlProviderTest::testTemporaryTableStatementcallsPostgreSqlProviderTest::testTransactionStatementcallsPostgreSqlProviderTest::testTruncateStatementcallsPostgreSqlProviderTest::testUpdateContainsSetClausecallsPostgreSqlProviderTest::testUpdateStatementcallsPostgreSqlProviderTest::testViewStatementcallsPostgreSqlProviderTest::testWhereClausecallsPostgreSqlProviderTest::testWithClausecalls