<?xml version="1.0"?>
<psalm
    errorLevel="2"
    phpVersion="8.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="https://getpsalm.org/schema/config"
    xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
>
    <projectFiles>
        <directory name="src" />
        <directory name="static-analysis" />
        <directory name="tests" />
        <ignoreFiles>
            <directory name="vendor" />
        </ignoreFiles>
    </projectFiles>
    <stubs>
        <file name="vendor/jetbrains/phpstorm-stubs/PDO/PDO.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/ibm_db2/ibm_db2.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/mysqli/mysqli.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/oci8/oci8.php" />
        <file name="vendor/jetbrains/phpstorm-stubs/sqlsrv/sqlsrv.php" />
    </stubs>
    <issueHandlers>
        <ArgumentTypeCoercion>
            <errorLevel type="suppress">
                <!--
                    See https://github.com/composer/package-versions-deprecated/pull/12
                -->
                <file name="src/Tools/Console/ConsoleRunner.php"/>
            </errorLevel>
        </ArgumentTypeCoercion>
        <ConflictingReferenceConstraint>
            <errorLevel type="suppress">
                <!--
                    This one is just too convoluted for Psalm to figure out, by
                    its author's own admission
                -->
                <file name="src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php"/>
            </errorLevel>
        </ConflictingReferenceConstraint>
        <DeprecatedClass>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.0.
                -->
                <referencedClass name="Doctrine\DBAL\Id\TableGenerator"/>
                <referencedClass name="Doctrine\DBAL\Id\TableGeneratorSchemaVisitor"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Driver\ServerInfoAwareConnection"/>
                <referencedClass name="Doctrine\DBAL\VersionAwarePlatformDriver"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Platforms\Keywords\MariaDb102Keywords"/>
                <referencedClass name="Doctrine\DBAL\Platforms\Keywords\MySQL57Keywords"/>
                <referencedClass name="Doctrine\DBAL\Platforms\Keywords\PostgreSQL100Keywords"/>
                <referencedClass name="Doctrine\DBAL\Platforms\Keywords\PostgreSQL94Keywords"/>
                <referencedClass name="Doctrine\DBAL\Platforms\Keywords\SQLServer2012Keywords"/>
                <referencedClass name="Doctrine\DBAL\Platforms\MariaDb1027Platform"/>
                <referencedClass name="Doctrine\DBAL\Platforms\MySQL57Platform"/>
                <referencedClass name="Doctrine\DBAL\Platforms\PostgreSQL100Platform"/>
                <referencedClass name="Doctrine\DBAL\Platforms\PostgreSQL94Platform"/>
                <referencedClass name="Doctrine\DBAL\Platforms\SQLServer2012Platform"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Schema\Constraint"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4967
                -->
                <referencedClass name="Doctrine\DBAL\Logging\DebugStack"/>
                <referencedClass name="Doctrine\DBAL\Logging\SQLLogger"/>
                <referencedClass name="Doctrine\DBAL\Logging\LoggerChain"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\CreateSchemaSqlCollector"/>
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\DropSchemaSqlCollector"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Platforms\Keywords\ReservedKeywordsValidator"/>
                <referencedClass name="Doctrine\DBAL\Tools\Console\Command\ReservedWordsCommand"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\RemoveNamespacedAssets"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\AbstractVisitor"/>
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\Visitor"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Types\ArrayType"/>
                <referencedClass name="Doctrine\DBAL\Types\ObjectType"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableAddColumnEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableChangeColumnEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableRemoveColumnEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaAlterTableRenameColumnEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaCreateTableColumnEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaCreateTableEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaDropTableEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaColumnDefinitionEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\SchemaIndexDefinitionEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\TransactionEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\TransactionBeginEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\TransactionCommitEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\TransactionRollBackEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\ConnectionEventArgs"/>
                <referencedClass name="Doctrine\DBAL\Event\Listeners\OracleSessionInit"/>
                <referencedClass name="Doctrine\DBAL\Event\Listeners\SQLSessionInit"/>
                <referencedClass name="Doctrine\DBAL\Event\Listeners\SQLiteSessionInit"/>
                <referencedClass name="Doctrine\DBAL\Events"/>
            </errorLevel>
        </DeprecatedClass>
        <DeprecatedConstant>
            <errorLevel type="suppress">
            <!--
                TODO: remove in 4.0.0
            -->
                <file name="src/Types/ArrayType.php"/>
                <file name="src/Types/ObjectType.php"/>
                <file name="src/Types/Type.php"/>
                <file name="tests/Schema/ComparatorTest.php"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <file name="src/Query/QueryBuilder.php"/>
                <file name="tests/Query/QueryBuilderTest.php"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <directory name="src/Schema/Exception"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <file name="src/Connection.php"/>
                <file name="src/Connections/PrimaryReadReplicaConnection.php"/>
                <file name="src/Event/Listeners/OracleSessionInit.php"/>
                <file name="src/Event/Listeners/SQLSessionInit.php"/>
                <file name="src/Event/Listeners/SQLiteSessionInit.php"/>
                <file name="src/Platforms/AbstractPlatform.php"/>
                <file name="src/Schema/AbstractSchemaManager.php"/>
                <file name="tests/ConnectionTest.php"/>
                <file name="tests/Events/OracleSessionInitTest.php"/>
                <file name="tests/Events/SQLSessionInitTest.php"/>
                <file name="tests/Functional/Schema/SchemaManagerFunctionalTestCase.php"/>
                <file name="tests/Platforms/AbstractPlatformTestCase.php"/>
            </errorLevel>
        </DeprecatedConstant>
        <DeprecatedInterface>
            <errorLevel type="suppress">
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Driver\ServerInfoAwareConnection"/>
                <referencedClass name="Doctrine\DBAL\VersionAwarePlatformDriver"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Schema\Constraint"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4967
                -->
                <referencedClass name="Doctrine\DBAL\Logging\SQLLogger"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\Visitor"/>
                <referencedClass name="Doctrine\DBAL\Schema\Visitor\NamespaceVisitor"/>
            </errorLevel>
        </DeprecatedInterface>
        <DeprecatedMethod>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed after 2022
                    See https://github.com/doctrine/dbal/pull/4317
                -->
                <file name="tests/Functional/LegacyAPITest.php"/>
                <!--
                    This suppression should be removed in 4.0.0.
                -->
                <file name="src/Platforms/AbstractPlatform.php"/>
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/3865
                -->
                <file name="src/Query/Expression/CompositeExpression.php"/>
                <file name="tests/Query/Expression/CompositeExpressionTest.php"/>
                <file name="tests/Query/Expression/ExpressionBuilderTest.php"/>
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/4518
                -->
                <file name="src/Query/QueryBuilder.php"/>
                <file name="src/Tools/Console/Command/ReservedWordsCommand.php"/>
                <!--
                    This suppression should be removed in 4.0.x
                -->
                <file name="src/Schema/AbstractSchemaManager.php" />
                <file name="src/Schema/PostgreSQLSchemaManager.php" />
                <!--
                    See https://github.com/doctrine/dbal/pull/4518
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Connection::getSchemaManager"/>
                <!--
                    See https://github.com/doctrine/dbal/issues/4503
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\AbstractSchemaManager::listNamespaceNames"/>
                <referencedMethod name="Doctrine\DBAL\Schema\PostgreSQLSchemaManager::getSchemaNames"/>
                <!--
                    See https://github.com/doctrine/dbal/pull/4722
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\Comparator::compare" />
                <!--
                    See https://github.com/doctrine/dbal/pull/4578
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Query\QueryBuilder::execute" />
                <referencedMethod name="Doctrine\DBAL\Statement::execute"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getBinaryDefaultLength"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getBinaryMaxLength"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getIsNullExpression"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getUniqueFieldDeclarationSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::getCharMaxLength"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::getBinaryMaxLength"/>
                <!--
                    See https://github.com/doctrine/dbal/pull/5058
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::isCommentedDoctrineType"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::initializeCommentedDoctrineTypes"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::markedDoctrineTypeCommented"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::supportsAlterTable"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::supportsViews"/>
                <!--
                    See https://github.com/doctrine/dbal/pull/4742
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\ForeignKeyConstraint::getLocalTable"/>
                <referencedMethod name="Doctrine\DBAL\Schema\ForeignKeyConstraint::getLocalTableName"/>
                <referencedMethod name="Doctrine\DBAL\Schema\ForeignKeyConstraint::setLocalTable"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\Schema::getMigrateToSql"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::assertValidIdentifier"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4822
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\SchemaConfig::hasExplicitForeignKeyIndexes"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4814
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\AbstractAsset::getFullQualifiedName"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4821
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\AbstractSchemaManager::getSchemaSearchPaths"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getCreateConstraintSQL"/>
                <referencedMethod name="Doctrine\DBAL\Schema\ForeignKeyConstraint::getColumns"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4897
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\AbstractSchemaManager::tryMethod"/>

                <!-- TODO: remove in 4.0.0 -->
                <referencedMethod name="Doctrine\DBAL\Driver\PDO\Connection::getWrappedConnection"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4966
                -->
                <referencedMethod name="Doctrine\DBAL\Connection::getWrappedConnection"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractMySQLPlatform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractMySQLPlatform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractMySQLPlatform::getListTableIndexesSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getListTableIndexesSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::getListTableCommentsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::getListTableIndexesSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::getListTableIndexesSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::getListTableIndexesSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::getListTableMetadataSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SQLServerPlatform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SQLServerPlatform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SQLServerPlatform::getListTableIndexesSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SQLServerPlatform::getListTableMetadataSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::getListTableColumnsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::getListTableForeignKeysSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::getListTableIndexesSQL"/>
                <!--
                    See https://github.com/doctrine/dbal/pull/1519
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractMySQLPlatform::prefersIdentityColumns"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::prefersIdentityColumns"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::prefersIdentityColumns"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SQLServerPlatform::prefersIdentityColumns"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::prefersIdentityColumns"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/5136
                -->
                <referencedMethod name="Doctrine\DBAL\Types\Type::canRequireSQLConversion"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/4967
                -->
                <referencedMethod name="Doctrine\DBAL\Configuration::getSQLLogger"/>
                <referencedMethod name="Doctrine\DBAL\Configuration::setSQLLogger"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/5204
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getColumnComment"/>
                <!--
                    TODO: remove in 4.0.0
                    See https://github.com/doctrine/dbal/pull/5049
                -->
                <referencedMethod name="Doctrine\DBAL\Types\Type::getName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::getListTableConstraintsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::getListTableConstraintsSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::getListTableConstraintsSQL"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getVarcharTypeDeclarationSQL"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractMySQLPlatform::getIdentifierQuoteCharacter"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getIdentifierQuoteCharacter"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getStringLiteralQuoteCharacter"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::supportsForeignKeyConstraints"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\Keywords\KeywordList::getName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\Schema::visit"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Sequence::visit"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Table::visit"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Driver::getSchemaManager"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\Column::getCustomSchemaOption"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Column::getCustomSchemaOptions"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Column::hasCustomSchemaOption"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Column::setCustomSchemaOption"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Types\Type::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\DateImmutableType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\DateIntervalType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\DateTimeTzImmutableType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\DateTimeImmutableType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\GuidType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\JsonType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\TimeImmutableType::requiresSQLCommentHint"/>
                <referencedMethod name="Doctrine\DBAL\Types\VarDateTimeImmutableType::requiresSQLCommentHint"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::hasNativeGuidType"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::hasNativeJsonType"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::hasNativeJsonType"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::getTinyIntTypeDeclarationSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\SqlitePlatform::getMediumIntTypeDeclarationSQL"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getDefaultSchemaName"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getIdentitySequenceName"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::supportsCreateDropDatabase"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::usesSequenceEmulatedIdentityColumns"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\DB2Platform::supportsCreateDropDatabase"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\OraclePlatform::usesSequenceEmulatedIdentityColumns"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::getIdentitySequenceName"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\PostgreSQLPlatform::usesSequenceEmulatedIdentityColumns"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getIndexFieldDeclarationListSQL"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::getCustomTypeDeclarationSQL"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Query\QueryBuilder::getState"/>
                <referencedMethod name="Doctrine\DBAL\Query\QueryBuilder::getType"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Driver\Statement::bindParam"/>
                <referencedMethod name="Doctrine\DBAL\Driver\IBMDB2\Statement::bindParam"/>
                <referencedMethod name="Doctrine\DBAL\Driver\Middleware\AbstractStatementMiddleware::bindParam"/>
                <referencedMethod name="Doctrine\DBAL\Driver\OCI8\Statement::bindParam"/>
                <referencedMethod name="Doctrine\DBAL\Driver\PDO\Statement::bindParam"/>
                <referencedMethod name="Doctrine\DBAL\Driver\PDO\SQLSrv\Statement::bindParam"/>
                <referencedMethod name="Doctrine\DBAL\Statement::bindParam"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\AbstractSchemaManager::listTableDetails"/>
                <referencedMethod name="Doctrine\DBAL\Schema\SqliteSchemaManager::listTableDetails"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\ColumnDiff::getOldColumnName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\ColumnDiff::hasChanged"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Comparator::diffColumn"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\TableDiff::getNewName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\TableDiff::getName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\Table::changeColumn"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Table::getForeignKeyColumns"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Table::getPrimaryKeyColumns"/>
                <referencedMethod name="Doctrine\DBAL\Schema\Table::hasPrimaryKey"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\SchemaDiff::toSql"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Schema\Comparator::diffTable"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Query\QueryBuilder::getConnection"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedMethod name="Doctrine\DBAL\Connection::getEventManager"/>
                <referencedMethod name="Doctrine\DBAL\Platforms\AbstractPlatform::setEventManager"/>

                <!-- TODO for PHPUnit 10 -->
                <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::withConsecutive"/>
            </errorLevel>
        </DeprecatedMethod>
        <DeprecatedProperty>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/4518
                -->
                <file name="src/Connection.php"/>

                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/4620
                -->
                <file name="src/Configuration.php"/>
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/4822
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\SchemaConfig::$hasExplicitForeignKeyIndexes"/>
                <!--
                    See https://github.com/doctrine/dbal/pull/5058
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Platforms\AbstractPlatform::$doctrineTypeComments"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\Column::$_customSchemaOptions"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\SchemaDiff::$fromSchema"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\ColumnDiff::$oldColumnName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\ColumnDiff::$changedProperties"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\TableDiff::$newName"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\TableDiff::$name"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Schema\SchemaDiff::$orphanedForeignKeys"/>
                <!--
                    TODO: remove in 4.0.0
                -->
                <referencedProperty name="Doctrine\DBAL\Connection::$_eventManager"/>
                <referencedProperty name="Doctrine\DBAL\Platforms\AbstractPlatform::$_eventManager"/>
            </errorLevel>
        </DeprecatedProperty>
        <DocblockTypeContradiction>
            <errorLevel type="suppress">
                <!--
                    These issues can be mostly divided in the following categories:
                      1. Union types not supported at the language level (require dropping PHP 7 support)
                      2. Associative arrays with typed elements used instead of classes (require breaking API changes)
                -->
                <file name="src/Cache/QueryCacheProfile.php"/>
                <file name="src/Connection.php"/>
                <file name="src/Driver/IBMDB2/Statement.php"/>
                <directory name="src/Driver/PgSQL"/>
                <file name="src/DriverManager.php"/>
                <file name="src/Platforms/AbstractMySQLPlatform.php"/>
                <file name="src/Platforms/AbstractPlatform.php"/>
                <file name="src/Platforms/SQLServerPlatform.php"/>
                <file name="src/Platforms/SqlitePlatform.php"/>
                <file name="src/Schema/Column.php"/>
                <!--
                    This issue is fixed in 4.0
                -->
                <file name="src/Schema/Index.php"/>
                <!-- See https://github.com/vimeo/psalm/issues/5472 -->
                <file name="src/Portability/Converter.php"/>
                <!-- See https://github.com/psalm/psalm-plugin-phpunit/issues/107 -->
                <file name="tests/Functional/Schema/SchemaManagerFunctionalTestCase.php"/>
            </errorLevel>
        </DocblockTypeContradiction>
        <FalsableReturnStatement>
            <errorLevel type="suppress">
                <!--
                    Fixing these issues requires an API change
                -->
                <file name="src/Driver/PDO/SQLSrv/Connection.php"/>
                <file name="src/Driver/SQLSrv/Connection.php"/>
            </errorLevel>
        </FalsableReturnStatement>
        <ImplementedReturnTypeMismatch>
            <errorLevel type="suppress">
                <!-- Fixing this issue requires an API change -->
                <file name="src/Driver/OCI8/Connection.php"/>
            </errorLevel>
        </ImplementedReturnTypeMismatch>
        <InvalidArgument>
            <errorLevel type="suppress">
                <!-- We're testing with invalid input here. -->
                <file name="tests/Platforms/AbstractPlatformTestCase.php"/>
            </errorLevel>
        </InvalidArgument>
        <InvalidDocblock>
            <errorLevel type="suppress">
                <!-- See https://github.com/vimeo/psalm/issues/5472 -->
                <file name="src/Portability/Converter.php"/>
            </errorLevel>
        </InvalidDocblock>
        <InvalidNullableReturnType>
            <errorLevel type="suppress">
                <!-- See https://github.com/doctrine/dbal/issues/4503 -->
                <file name="src/Schema/PostgreSQLSchemaManager.php"/>
            </errorLevel>
        </InvalidNullableReturnType>
        <InvalidPropertyAssignmentValue>
            <errorLevel type="suppress">
                <!-- Fixing this issue requires an API change -->
                <file name="src/Driver/PDO/Exception.php"/>
            </errorLevel>
        </InvalidPropertyAssignmentValue>
        <MissingConstructor>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/3712
                -->
                <file name="src/Schema/SchemaConfig.php"/>
            </errorLevel>
        </MissingConstructor>
        <NullableReturnStatement>
            <errorLevel type="suppress">
                <!--
                    Fixing this issue requires an API change
                -->
                <file name="src/Driver/AbstractSQLiteDriver.php"/>
                <!-- See https://github.com/doctrine/dbal/issues/4503 -->
                <file name="src/Schema/PostgreSQLSchemaManager.php"/>
            </errorLevel>
        </NullableReturnStatement>
        <PossiblyInvalidArgument>
            <errorLevel type="suppress">
                <!-- PgSql objects are represented as resources in PHP 7.4 -->
                <referencedFunction name="pg_affected_rows"/>
                <referencedFunction name="pg_close"/>
                <referencedFunction name="pg_escape_bytea"/>
                <referencedFunction name="pg_escape_identifier"/>
                <referencedFunction name="pg_escape_literal"/>
                <referencedFunction name="pg_fetch_all"/>
                <referencedFunction name="pg_fetch_all_columns"/>
                <referencedFunction name="pg_fetch_assoc"/>
                <referencedFunction name="pg_fetch_row"/>
                <referencedFunction name="pg_field_name"/>
                <referencedFunction name="pg_field_type"/>
                <referencedFunction name="pg_free_result"/>
                <referencedFunction name="pg_get_result"/>
                <referencedFunction name="pg_last_error"/>
                <referencedFunction name="pg_num_fields"/>
                <referencedFunction name="pg_query"/>
                <referencedFunction name="pg_result_error_field"/>
                <referencedFunction name="pg_send_execute"/>
                <referencedFunction name="pg_send_prepare"/>
                <referencedFunction name="pg_send_query"/>
                <referencedFunction name="pg_version"/>
            </errorLevel>
        </PossiblyInvalidArgument>
        <PossiblyInvalidArrayOffset>
            <errorLevel type="suppress">
                <!-- $array[key($array)] is safe. -->
                <file name="src/Query/QueryBuilder.php"/>
            </errorLevel>
        </PossiblyInvalidArrayOffset>
        <PossiblyNullArgument>
            <errorLevel type="suppress">
                <!-- See https://github.com/doctrine/dbal/pull/3488 -->
                <file name="src/Schema/AbstractSchemaManager.php"/>
            </errorLevel>
        </PossiblyNullArgument>
        <PossiblyUndefinedArrayOffset>
            <errorLevel type="suppress">
                <!-- See https://github.com/psalm/psalm-plugin-phpunit/pull/82 -->
                <file name="tests/Functional/PrimaryReadReplicaConnectionTest.php"/>
                <file name="tests/Functional/Schema/PostgreSQLSchemaManagerTest.php"/>
            </errorLevel>
        </PossiblyUndefinedArrayOffset>
        <PossiblyNullIterator>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/3712
                -->
                <file name="src/Driver/Mysqli/Statement.php"/>
            </errorLevel>
        </PossiblyNullIterator>
        <PossiblyFalseReference>
            <errorLevel type="suppress">
                <!--
                    oci_new_descriptor() returns OCI-Lob|false on PHP 7 and OCILob|null on PHP 8
                -->
                <file name="src/Driver/OCI8/Statement.php"/>
            </errorLevel>
        </PossiblyFalseReference>
        <PropertyNotSetInConstructor>
            <errorLevel type="suppress">
                <!-- See https://github.com/psalm/psalm-plugin-phpunit/issues/107 -->
                <!-- See https://github.com/sebastianbergmann/phpunit/pull/4610 -->
                <directory name="tests"/>
                <!-- See https://github.com/doctrine/dbal/issues/4506 -->
                <file name="src/Schema/ForeignKeyConstraint.php"/>
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/3712
                -->
                <file name="src/Schema/Column.php"/>
                <file name="src/Schema/Identifier.php"/>
                <file name="src/Schema/Index.php"/>
                <file name="src/Schema/Schema.php"/>
                <file name="src/Schema/Sequence.php"/>
                <file name="src/Schema/Table.php"/>
                <file name="src/Schema/UniqueConstraint.php"/>
                <file name="src/Schema/View.php"/>
            </errorLevel>
        </PropertyNotSetInConstructor>
        <!-- This is necessary pre 4.0  -->
        <RedundantCastGivenDocblockType>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.x
                    where we have scalar argument types enforced
                -->
                <directory name="src"/>
            </errorLevel>
        </RedundantCastGivenDocblockType>
        <RedundantConditionGivenDocblockType>
            <errorLevel type="suppress">
                <!--
                    Fixing these issues requires support of union types at the language level
                    or breaking API changes.
                -->
                <file name="src/Platforms/AbstractMySQLPlatform.php"/>
                <file name="tests/Functional/Driver/AbstractDriverTest.php"/>
                
                <!-- We're checking for invalid input. -->
                <directory name="src/Driver/PgSQL"/>
            </errorLevel>
        </RedundantConditionGivenDocblockType>
        <RedundantPropertyInitializationCheck>
            <errorLevel type="suppress">
                <!-- Running isset() checks on properties that should be initialized by setUp() is fine. -->
                <directory name="tests"/>

                <!-- Ignore isset() checks in destructors. -->
                <file name="src/Driver/PgSQL/Connection.php"/>
                <file name="src/Driver/PgSQL/Statement.php"/>
            </errorLevel>
        </RedundantPropertyInitializationCheck>
        <ReferenceConstraintViolation>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/pull/3836
                -->
                <file name="src/Query/QueryBuilder.php"/>
            </errorLevel>
        </ReferenceConstraintViolation>
        <TooManyArguments>
            <errorLevel type="suppress">
                <!--
                    This suppression should be removed in 4.0.x
                    See https://github.com/doctrine/dbal/issues/3263
                -->
                <file name="src/Platforms/AbstractPlatform.php"/>
                <!-- See https://github.com/doctrine/dbal/pull/3562 -->
                <file name="src/Schema/AbstractSchemaManager.php"/>
                <file name="src/Schema/SqliteSchemaManager.php"/>
                <!-- See https://github.com/doctrine/dbal/pull/3498 -->
                <file name="tests/Platforms/AbstractMySQLPlatformTestCase.php"/>
            </errorLevel>
        </TooManyArguments>
        <TypeDoesNotContainType>
            <errorLevel type="suppress">
                <!-- On PHP 7.4, pg_fetch_all() might return false for empty result sets. -->
                <file name="src/Driver/PgSQL/Result.php"/>
            </errorLevel>
        </TypeDoesNotContainType>
        <UndefinedDocblockClass>
            <errorLevel type="suppress">
                <!-- See https://github.com/vimeo/psalm/issues/5472 -->
                <referencedClass name="Doctrine\DBAL\Portability\T"/>
                <!--
                    The OCI-Lob class was renamed to OCILob in PHP 8 while Psalm infers PHP 7 from composer.json
                    and may not properly interpret the LanguageLevelTypeAware annotation from the stubs.
                -->
                <referencedClass name="OCILob"/>
            </errorLevel>
        </UndefinedDocblockClass>
        <InvalidReturnStatement>
            <errorLevel type="suppress">
                <!-- lastInsertId has a return type that does not match the one defined in the interface-->
                <file name="src/Driver/Mysqli/Connection.php"/>
                <!--
                    This issue should be fixed in 4.0
                -->
                <file name="src/Connection.php"/>
                <file name="src/Statement.php"/>
                <file name="src/Query/QueryBuilder.php"/>
            </errorLevel>
        </InvalidReturnStatement>
        <InvalidReturnType>
            <errorLevel type="suppress">
                <!-- lastInsertId has a return type that does not match the one defined in the interface-->
                <file name="src/Driver/Mysqli/Connection.php"/>
                <!--
                    This issue should be fixed in 4.0
                -->
                <file name="src/Connection.php"/>
                <file name="src/Statement.php"/>
                <file name="src/Query/QueryBuilder.php"/>
            </errorLevel>
        </InvalidReturnType>
        <InvalidScalarArgument>
            <errorLevel type="suppress">
                <!-- See https://github.com/doctrine/dbal/pull/3498 -->
                <file name="tests/Functional/DataAccessTest.php"/>
                <file name="tests/Platforms/AbstractPlatformTestCase.php"/>
                <file name="tests/Platforms/DB2PlatformTest.php"/>
                <file name="tests/Platforms/OraclePlatformTest.php"/>
                <file name="tests/Platforms/SqlitePlatformTest.php"/>

                <!-- See https://github.com/doctrine/dbal/pull/3574 -->
                <file name="tests/Query/Expression/ExpressionBuilderTest.php"/>

                <!-- See https://bugs.php.net/bug.php?id=77591 -->
                <referencedFunction name="db2_autocommit"/>
            </errorLevel>
        </InvalidScalarArgument>
    </issueHandlers>
</psalm>
