override fun existingSequences()

in exposed-jdbc/src/main/kotlin/org/jetbrains/exposed/v1/jdbc/statements/jdbc/JdbcDatabaseMetadataImpl.kt [344:398]


    override fun existingSequences(vararg tables: Table): Map<Table, List<Sequence>> {
        if (currentDialect !is PostgreSQLDialect) return emptyMap()

        return tables.associateWith { table ->
            val (_, tableSchema) = tableCatalogAndSchema(table)
            metadata.connection.executeSQL(
                """
                    SELECT seq_details.sequence_name,
                    seq_details.start,
                    seq_details.increment,
                    seq_details.max,
                    seq_details.min,
                    seq_details.cache,
                    seq_details.cycle
                    FROM pg_catalog.pg_namespace tns
                             INNER JOIN pg_catalog.pg_class t ON tns.oid = t.relnamespace AND t.relkind IN ('p', 'r')
                             INNER JOIN pg_catalog.pg_depend d ON t.oid = d.refobjid
                             LEFT OUTER JOIN (
                                SELECT s.relname AS sequence_name,
                                seq.seqstart AS start,
                                seq.seqincrement AS increment,
                                seq.seqmax AS max,
                                seq.seqmin AS min,
                                seq.seqcache AS cache,
                                seq.seqcycle AS cycle,
                                s.oid AS seq_id
                                FROM pg_catalog.pg_sequence seq
                                JOIN pg_catalog.pg_class s ON s.oid = seq.seqrelid AND s.relkind = 'S'
                                JOIN pg_catalog.pg_namespace sns ON s.relnamespace = sns.oid
                                WHERE sns.nspname = '$tableSchema'
                             ) seq_details ON seq_details.seq_id = d.objid
                    WHERE tns.nspname = '$tableSchema' AND t.relname = '${table.nameInDatabaseCaseUnquoted()}'
                """.trimIndent()
            ) { rs ->
                val tmpSequences = mutableListOf<Sequence>()
                while (rs.next()) {
                    rs.getString("sequence_name")?.let {
                        tmpSequences.add(
                            Sequence(
                                it,
                                rs.getLong("start"),
                                rs.getLong("increment"),
                                rs.getLong("min"),
                                rs.getLong("max"),
                                rs.getBoolean("cycle"),
                                rs.getLong("cache")
                            )
                        )
                    }
                }
                rs.close()
                tmpSequences
            }.orEmpty()
        }
    }