On Thu, 08 Sep 2005 18:02:44 +0900, ITAGAKI Takahiro
<[EMAIL PROTECTED]> wrote:
+  * The length of varlena2 is encoded as follows:
+  *
+  * | First    | Trailing | Total | Max     |
+  * | byte     | bytes    | bits  | length  |
+  * +----------+----------+-------+---------+
+  * | 0******* |        0 |     7 | 127     |
+  * | 10****** |        1 |    14 | 16K  -1 |
+  * | 110***** |        2 |    21 | 2M   -1 |
+  * | 1110**** |        3 |    28 | 256M -1 |
+  * | 1111---- |        4 |    32 | 4G   -1 |

With external and compression flags this would look like
   * | ec0***** |        0 |     5 | 31      |
   * | ec10**** |        1 |    12 | 4K   -1 |
   * | ec110*** |        2 |    19 | 512K -1 |
   * | ec1110** |        3 |    26 | 64M  -1 |
   * | ec1111-- |        4 |    32 | 4G   -1 |

Only a matter of taste, but I'd just waste one byte for sizes between 4K
and 512K and thus get a shorter table:
   * | ec0***** |        0 |     5 | 31      |
   * | ec10**** |        1 |    12 | 4K   -1 |
   * | ec110*** |        3 |    27 | 128M -1 |
   * | ec111--- |        4 |    32 | 4G   -1 |

And you get back that one byte for sizes between 64M and 128M :-)

Another possible tweak:
   * | 0******* |        0 |     5 | 127     |
   * | 1ec0**** |        1 |    12 | 4K   -1 |
   * | 1ec10*** |        3 |    27 | 128M -1 |
   * | 1ec11--- |        4 |    32 | 4G   -1 |

I.e. drop the flags for very short strings.  If these flags are needed
for a string of size 32 to 127, then use a two byte header.

Servus
 Manfred

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to