Re: Postgres do not support tinyint?
Dominique Devienne писал(а) 2025-01-10 16:41: On Fri, Jan 10, 2025 at 10:13 AM Vladlen Popolitov wrote: If you really need 1-byte integer, you can use "char" type. Cast it to/from int. See comment at the end of the page https://www.postgresql.org/docs/17/datatype-character.html Hi. What would be the best online doc to learn about the physical storage / format for rows/pages/btree, etc... To understand alignment, packing, varint or not, all those things. I'm quite familiar with the [SQLite format][1], having read that doc dozens of times, and I'd like a better low-level understanding for PostgreSQL as well. TIA, --DD [1]: https://www.sqlite.org/fileformat.html I would recommend "PostgreSQL Internals" of Egor Rogov (Chapter 3 about tuples, other chapters also great) Free download from https://postgrespro.com/community/books/internals Also PostgreSQL source code is officially the part of the documentation. It is not joke. PostgreSQL source has clear comments in functions code and in structure declarations. You can compare with other sources, it is hard to find better comments made with love. Heap tuple information is in source file src/include/access/htup_details.h (HeapTupleHeaderData structure), but I recommend to read above book first, it simplier explains many internal concepts. -- Best regards, Vladlen Popolitov.
Re: Postgres do not support tinyint?
Igor Korot писал(а) 2025-01-09 02:40: Hi, Christopphe, On Wed, Jan 8, 2025 at 1:34 PM Christophe Pettus wrote: > On Jan 8, 2025, at 11:30, Igor Korot wrote: > There is no boolean - it is 0-4 inclusive. Unless you have somehow gotten PostgreSQL running on an IBM 7070, the range 0-4 can be represented by three binary digits, aka booleans. :-) The only booleans I know of are 0 and 1. ;-) To be serious, though, the situation is: 1. If there are just one or two tinyints, having a tinyint type wouldn't save any space in the row. No it is not a lot of them. So then "smallint" is the best bet, right? Thank you 2. If there are a lot of them, it's worth encoding them into a bitstring. Hi! If you really need 1-byte integer, you can use "char" type. Cast it to/from int. See comment at the end of the page https://www.postgresql.org/docs/17/datatype-character.html -- Best regards, Vladlen Popolitov.