Summary
Postgres Table Browser and SQL workspace already convert cells with convertPostgresResultRowsToStrings (OID / udt_name literals). They then pass that List<List<String>> into convertResultRowsToStringsAdaptive, which walks every cell again (internObject / toString) and, at ≥1000 rows, copies the whole matrix to an isolate.
That second pass cannot recover PG types (already strings). Cost is O(R×C) twice on first paint of a capped SELECT (default 5000).
Scope
- Return the typed conversion result (optionally intern in that pass).
- Do not call
convertResultRowsToStringsAdaptive on already-string PG rows.
- Cover SQL workspace + Table Browser (
_postgresRowsToDisplayStrings).
Out of scope
- MySQL/SQLite convert paths (they are not double-typed).
Summary
Postgres Table Browser and SQL workspace already convert cells with
convertPostgresResultRowsToStrings(OID /udt_nameliterals). They then pass thatList<List<String>>intoconvertResultRowsToStringsAdaptive, which walks every cell again (internObject/toString) and, at ≥1000 rows, copies the whole matrix to an isolate.That second pass cannot recover PG types (already strings). Cost is O(R×C) twice on first paint of a capped SELECT (default 5000).
Scope
convertResultRowsToStringsAdaptiveon already-string PG rows._postgresRowsToDisplayStrings).Out of scope