Playing around with files-in-text-field.  I can happily slam a 10M file into a text field in a table defined as

   gtdb=# \d gt.ld
                        Table "gt.ld"
        Column    | Type | Collation | Nullable | Default
   --------------+------+-----------+----------+---------
     id           | uuid |           | not null |
     name         | text |           |          |
     markerset_id | uuid |           | not null |
     ld           | text |           |          |
   Indexes:
        "ld_pkey" PRIMARY KEY, btree (id)
   Foreign-key constraints:
        "ld_markerset_id_fkey" FOREIGN KEY (markerset_id) REFERENCES
   base.markerset(id)

   gtdb=# select id, length(ld), substring(ld,  300000, 100) from gt.ld;
                      id                  | length  | substring
   
--------------------------------------+---------+------------------------------
     28f8dc94-c9d1-4c45-b504-fda585b497f8 | 6742760
   |                             +
                                          |         | 3 2
   rs1858447|5852230|10+
                                          |         |  0.500000
   0.500000         +
                                          |         | 3 2
   rs1567706|5853767|10+
                                          |         |  0.500000 0.500000
   (1 row)

And I can regenerate the file using java (with jOOQ) in respectable time.

However, I get into deep dodo when I try redirecting psql output such as

   select ld from gt.ld\g /tmp/regen.file

"/tmp/regen.file" gets very large, very fast and I have to pg_terminate_backend.  Tried this three times, once using "\o test.blob" instead.

   h009357:loader$ ls -ltr
   total 2048
   -rwxr-xr-x 1 u0138544 camplab 10002460672 Sep 21 15:49 test.blob

Frankly, I'm suspicious of that ls (it's an smb mount of 25T partition) but that's what's in the emacs shell buffer! The re-direct isn't a must-have, but was hoping that would be an easy way to get a file back.

Have I simply gone too far with text type?

   h009357:share$ psql --version
   psql (PostgreSQL) 10.5 (Ubuntu 10.5-0ubuntu0.18.04)

   postgres=# select version();
   version
   
---------------------------------------------------------------------------------------------------------
     PostgreSQL 10.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC)
   4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
   (1 row)


Reply via email to