classSqliteSchemaParser
final class SqliteSchemaParser
implements SchemaParserInterface
Public API: explicitly declared with
@visibility public.Simple regex-based parser for SQLite CREATE TABLE statements.
SQLite has a simpler type system based on "type affinity" rather than strict types like MySQL. This parser handles the basic SQLite column definitions and extracts type affinity information.
$schema = (new \SqlFixture\Platform\Sqlite\SqliteSchemaParser())->parse('CREATE TABLE users (tenant INT, id INT, name VARCHAR(30), PRIMARY KEY (tenant, id))');
$schema->primaryKeys // => ['tenant', 'id']
$schema->columns['name']->length // => 30Methods§
public function parse(string $createTableSql): TableSchemaParses the supplied declaration into its normalized representation.
Parameters
$createTableSql | string |
Returns
Test cases 88
SchemaParsingBench::benchSqlitecallsSqliteSchemaParserTest::testParseBacktickedColumncallsSqliteSchemaParserTest::testParseBlockCommentcallsSqliteSchemaParserTest::testParseColumnDefinitionTrimsRestcallsSqliteSchemaParserTest::testParseColumnParensEqualStartReturnsNullcallsSqliteSchemaParserTest::testParseColumnTypescallsSqliteSchemaParserTest::testParseColumnWithNoTypecallsSqliteSchemaParserTest::testParseColumnWithNoTypeReturnsBlobViaExtractTypecallsSqliteSchemaParserTest::testParseCommentscallsSqliteSchemaParserTest::testParseConstraintBeforeColumncallsSqliteSchemaParserTest::testParseConstraintKeywordcallsSqliteSchemaParserTest::testParseDecimalWithPrecisionAndScalecallsSqliteSchemaParserTest::testParseDefaultBooleanFalsecallsSqliteSchemaParserTest::testParseDefaultBooleanTruecallsSqliteSchemaParserTest::testParseDefaultCurrentDatecallsSqliteSchemaParserTest::testParseDefaultCurrentTimecallsSqliteSchemaParserTest::testParseDefaultCurrentTimestampNotPartOfLargerWordcallsSqliteSchemaParserTest::testParseDefaultCurrentTimestampUpperCasecallsSqliteSchemaParserTest::testParseDefaultExpressioncallsSqliteSchemaParserTest::testParseDefaultExpression2callsSqliteSchemaParserTest::testParseDefaultExpressionOnlyClosingParencallsSqliteSchemaParserTest::testParseDefaultExpressionWithOnlyOpeningParencallsSqliteSchemaParserTest::testParseDefaultExpressionWrappedInParenscallsSqliteSchemaParserTest::testParseDefaultFloatcallsSqliteSchemaParserTest::testParseDefaultIntegercallsSqliteSchemaParserTest::testParseDefaultInteger42callsSqliteSchemaParserTest::testParseDefaultNullcallsSqliteSchemaParserTest::testParseDefaultNumericOnecallsSqliteSchemaParserTest::testParseDefaultNumericZerocallsSqliteSchemaParserTest::testParseDefaultReferencesConstraintcallsSqliteSchemaParserTest::testParseDefaultStringcallsSqliteSchemaParserTest::testParseDefaultStringWithCheckConstraintcallsSqliteSchemaParserTest::testParseDefaultStringWithDoubleQuotescallsSqliteSchemaParserTest::testParseDefaultStringWithNotNullcallsSqliteSchemaParserTest::testParseDefaultTrimsValuecallsSqliteSchemaParserTest::testParseDefaultWithCollatecallsSqliteSchemaParserTest::testParseDefaultWithGeneratedKeywordcallsSqliteSchemaParserTest::testParseDefaultWithNotNullcallsSqliteSchemaParserTest::testParseEnumValuesAlwaysNullcallsSqliteSchemaParserTest::testParseGeneratedColumncallsSqliteSchemaParserTest::testParseIfNotExistscallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyAutoincrementcallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyNotAutoincrementcallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyWithoutAutoincrementIsNotAutoIncrementcallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyWithTextPrimaryKeyElseBranchcallsSqliteSchemaParserTest::testParseIsTableConstraintCaseInsensitivecallsSqliteSchemaParserTest::testParseIsTableConstraintWithLeadingWhitespacecallsSqliteSchemaParserTest::testParseLengthOnlyColumncallsSqliteSchemaParserTest::testParseLowercaseAutoincrementcallsSqliteSchemaParserTest::testParseLowercaseConstraintscallsSqliteSchemaParserTest::testParseLowercaseCreateTablecallsSqliteSchemaParserTest::testParseLowercaseDecimalTypecallsSqliteSchemaParserTest::testParseLowercaseDefaultValuescallsSqliteSchemaParserTest::testParseLowercaseDefaultWithTrailingConstraintscallsSqliteSchemaParserTest::testParseLowercaseGeneratedColumncallsSqliteSchemaParserTest::testParseLowercaseIfNotExistscallsSqliteSchemaParserTest::testParseLowercaseSchemaQualifiedcallsSqliteSchemaParserTest::testParseLowercaseTablePrimaryKeycallsSqliteSchemaParserTest::testParseLowercaseTypeAffinitycallsSqliteSchemaParserTest::testParseLowercaseVarcharWithLengthcallsSqliteSchemaParserTest::testParseMixedCaseKeywordscallsSqliteSchemaParserTest::testParseMultilineWithWhitespacecallsSqliteSchemaParserTest::testParseMultipleConstraintscallsSqliteSchemaParserTest::testParseMultipleConstraintsBetweenColumnscallsSqliteSchemaParserTest::testParseNonGeneratedColumncallsSqliteSchemaParserTest::testParseNonIntegerPrimaryKeyAutoincrementcallsSqliteSchemaParserTest::testParseNonIntegerPrimaryKeyIsNotAutoIncrementcallsSqliteSchemaParserTest::testParseNoParenthesescallsSqliteSchemaParserTest::testParseNormalizeSqlRemovesBlockCommentscallsSqliteSchemaParserTest::testParseNormalizeSqlTrimsWhitespacecallsSqliteSchemaParserTest::testParseNotNullConstraintcallsSqliteSchemaParserTest::testParsePrimaryKeycallsSqliteSchemaParserTest::testParsePrimaryKeyAutoincrementcallsSqliteSchemaParserTest::testParseQuotedPrimaryKeyColumnscallsSqliteSchemaParserTest::testParseQuotedTableNamecallsSqliteSchemaParserTest::testParseSchemaQualifiedTableNamecallsSqliteSchemaParserTest::testParseSimpleTablecallsSqliteSchemaParserTest::testParseSkipsTableConstraintscallsSqliteSchemaParserTest::testParseTableLevelPrimaryKeycallsSqliteSchemaParserTest::testParseTextPrimaryKeyNoAutoIncrementcallsSqliteSchemaParserTest::testParseTrimsDefinitionsInSplitColumnDefinitionscallsSqliteSchemaParserTest::testParseTypeAffinitycallsSqliteSchemaParserTest::testParseUnsignedAlwaysFalsecallsSqliteSchemaParserTest::testParseVarcharWithLengthcallsSqliteSchemaParserTest::testParseWithLeadingTrailingWhitespacecallsSqliteSchemaParserTest::testThrowsExceptionForEmptyTablecallsSqliteSchemaParserTest::testThrowsExceptionForInvalidSqlcallsSchemaParserInterfaceTest::testParseReturnsTheSchemaContractcalls
Called from 1
Calls 10
- method-call TableSyntax::normalizeSql() line 32
- new TableSyntax line 32
- method-call TableSyntax::extractTableName() line 34
- new InvalidSqlException line 36
- method-call TableSyntax::extractColumnsBlock() line 39
- new MissingColumnDefinitionsException line 41
- method-call TableSyntax::extractTablePrimaryKeys() line 44
- method-call DefinitionList::parseColumns() line 45
- new DefinitionList line 45
- new TableSchema line 51
Test cases 100§
Test cases that cover or call this symbol, from the coverage report and from the analyzed test sources.
Dedicated tests 86
SqliteSchemaParserTest::testParseBacktickedColumncallsSqliteSchemaParserTest::testParseBlockCommentcallsSqliteSchemaParserTest::testParseColumnDefinitionTrimsRestcallsSqliteSchemaParserTest::testParseColumnParensEqualStartReturnsNullcallsSqliteSchemaParserTest::testParseColumnTypescallsSqliteSchemaParserTest::testParseColumnWithNoTypecallsSqliteSchemaParserTest::testParseColumnWithNoTypeReturnsBlobViaExtractTypecallsSqliteSchemaParserTest::testParseCommentscallsSqliteSchemaParserTest::testParseConstraintBeforeColumncallsSqliteSchemaParserTest::testParseConstraintKeywordcallsSqliteSchemaParserTest::testParseDecimalWithPrecisionAndScalecallsSqliteSchemaParserTest::testParseDefaultBooleanFalsecallsSqliteSchemaParserTest::testParseDefaultBooleanTruecallsSqliteSchemaParserTest::testParseDefaultCurrentDatecallsSqliteSchemaParserTest::testParseDefaultCurrentTimecallsSqliteSchemaParserTest::testParseDefaultCurrentTimestampNotPartOfLargerWordcallsSqliteSchemaParserTest::testParseDefaultCurrentTimestampUpperCasecallsSqliteSchemaParserTest::testParseDefaultExpressioncallsSqliteSchemaParserTest::testParseDefaultExpression2callsSqliteSchemaParserTest::testParseDefaultExpressionOnlyClosingParencallsSqliteSchemaParserTest::testParseDefaultExpressionWithOnlyOpeningParencallsSqliteSchemaParserTest::testParseDefaultExpressionWrappedInParenscallsSqliteSchemaParserTest::testParseDefaultFloatcallsSqliteSchemaParserTest::testParseDefaultIntegercallsSqliteSchemaParserTest::testParseDefaultInteger42callsSqliteSchemaParserTest::testParseDefaultNullcallsSqliteSchemaParserTest::testParseDefaultNumericOnecallsSqliteSchemaParserTest::testParseDefaultNumericZerocallsSqliteSchemaParserTest::testParseDefaultReferencesConstraintcallsSqliteSchemaParserTest::testParseDefaultStringcallsSqliteSchemaParserTest::testParseDefaultStringWithCheckConstraintcallsSqliteSchemaParserTest::testParseDefaultStringWithDoubleQuotescallsSqliteSchemaParserTest::testParseDefaultStringWithNotNullcallsSqliteSchemaParserTest::testParseDefaultTrimsValuecallsSqliteSchemaParserTest::testParseDefaultWithCollatecallsSqliteSchemaParserTest::testParseDefaultWithGeneratedKeywordcallsSqliteSchemaParserTest::testParseDefaultWithNotNullcallsSqliteSchemaParserTest::testParseEnumValuesAlwaysNullcallsSqliteSchemaParserTest::testParseGeneratedColumncallsSqliteSchemaParserTest::testParseIfNotExistscallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyAutoincrementcallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyNotAutoincrementcallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyWithoutAutoincrementIsNotAutoIncrementcallsSqliteSchemaParserTest::testParseIntegerPrimaryKeyWithTextPrimaryKeyElseBranchcallsSqliteSchemaParserTest::testParseIsTableConstraintCaseInsensitivecallsSqliteSchemaParserTest::testParseIsTableConstraintWithLeadingWhitespacecallsSqliteSchemaParserTest::testParseLengthOnlyColumncallsSqliteSchemaParserTest::testParseLowercaseAutoincrementcallsSqliteSchemaParserTest::testParseLowercaseConstraintscallsSqliteSchemaParserTest::testParseLowercaseCreateTablecallsSqliteSchemaParserTest::testParseLowercaseDecimalTypecallsSqliteSchemaParserTest::testParseLowercaseDefaultValuescallsSqliteSchemaParserTest::testParseLowercaseDefaultWithTrailingConstraintscallsSqliteSchemaParserTest::testParseLowercaseGeneratedColumncallsSqliteSchemaParserTest::testParseLowercaseIfNotExistscallsSqliteSchemaParserTest::testParseLowercaseSchemaQualifiedcallsSqliteSchemaParserTest::testParseLowercaseTablePrimaryKeycallsSqliteSchemaParserTest::testParseLowercaseTypeAffinitycallsSqliteSchemaParserTest::testParseLowercaseVarcharWithLengthcallsSqliteSchemaParserTest::testParseMixedCaseKeywordscallsSqliteSchemaParserTest::testParseMultilineWithWhitespacecallsSqliteSchemaParserTest::testParseMultipleConstraintscallsSqliteSchemaParserTest::testParseMultipleConstraintsBetweenColumnscallsSqliteSchemaParserTest::testParseNonGeneratedColumncallsSqliteSchemaParserTest::testParseNonIntegerPrimaryKeyAutoincrementcallsSqliteSchemaParserTest::testParseNonIntegerPrimaryKeyIsNotAutoIncrementcallsSqliteSchemaParserTest::testParseNoParenthesescallsSqliteSchemaParserTest::testParseNormalizeSqlRemovesBlockCommentscallsSqliteSchemaParserTest::testParseNormalizeSqlTrimsWhitespacecallsSqliteSchemaParserTest::testParseNotNullConstraintcallsSqliteSchemaParserTest::testParsePrimaryKeycallsSqliteSchemaParserTest::testParsePrimaryKeyAutoincrementcallsSqliteSchemaParserTest::testParseQuotedPrimaryKeyColumnscallsSqliteSchemaParserTest::testParseQuotedTableNamecallsSqliteSchemaParserTest::testParseSchemaQualifiedTableNamecallsSqliteSchemaParserTest::testParseSimpleTablecallsSqliteSchemaParserTest::testParseSkipsTableConstraintscallsSqliteSchemaParserTest::testParseTableLevelPrimaryKeycallsSqliteSchemaParserTest::testParseTextPrimaryKeyNoAutoIncrementcallsSqliteSchemaParserTest::testParseTrimsDefinitionsInSplitColumnDefinitionscallsSqliteSchemaParserTest::testParseTypeAffinitycallsSqliteSchemaParserTest::testParseUnsignedAlwaysFalsecallsSqliteSchemaParserTest::testParseVarcharWithLengthcallsSqliteSchemaParserTest::testParseWithLeadingTrailingWhitespacecallsSqliteSchemaParserTest::testThrowsExceptionForEmptyTablecallsSqliteSchemaParserTest::testThrowsExceptionForInvalidSqlcalls
Other tests reaching this symbol 14
SchemaParsingBench::benchSqlitecallsPostgreSqlEndToEndTestcallsSqliteIntegrationTestcallsDatabaseFixtureProviderTestcallsFileFixtureProviderTestcallsFixtureProviderTest::testCustomSchemaParserIsPreservedcallsPlatformFactoryTest::testCreateSchemaParserForSqlitecallsSqliteSchemaFetcherTest::testFetchSchemaWithCustomParsercallsDatabaseSchemaCacheTestcallsDdlDirectoryTest::testLoadSchemasUsesOnlySqlFilescallsDdlFileTest::testLoadSchemaFileReadsDdlAndIgnoresNonSchemaSqlcallsSqlSchemaProviderTestcallsSchemaFetcherInterfaceTestcallsSchemaParserInterfaceTest::testParseReturnsTheSchemaContractcalls