override suspend fun existingPrimaryKeys()

in exposed-r2dbc/src/main/kotlin/org/jetbrains/exposed/v1/r2dbc/statements/api/R2dbcDatabaseMetadataImpl.kt [282:301]


    override suspend fun existingPrimaryKeys(vararg tables: Table): Map<Table, PrimaryKeyMetadata?> {
        return tables.associateWith { table ->
            val (catalog, tableSchema) = tableCatalogAndSchema(table)
            val pkQuery = metadataProvider.getPrimaryKeys(catalog, tableSchema, table.nameInDatabaseCaseUnquoted())
            val results = flow {
                connection.createStatement(pkQuery)
                    .execute()
                    .collect { r ->
                        r.map { row, _ ->
                            row.getString("PK_NAME")?.let {
                                it to row.getString("COLUMN_NAME")!!
                            }
                        }
                            .collect { emit(it) }
                    }
            }.toList()
            val (names, columns) = results.unzip()
            names.distinct().singleOrNull()?.let { PrimaryKeyMetadata(it, columns) }
        }
    }