Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

postgres-lambda-diff

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Tom Lane authored
    We want this struct to be exactly a series of 3 int16 words, no more
    and no less.  Historically, at least, some ARM compilers preferred to
    pad it to 8 bytes unless coerced.  Our old way of doing that was just
    to use __attribute__((packed)), but as pointed out by Piotr Stefaniak,
    that does too much: it also licenses the compiler to give the struct
    only byte-alignment.  We don't want that because it adds access overhead,
    possibly quite significant overhead.  According to the GCC manual, what
    we want requires also specifying __attribute__((align(2))).  It's not
    entirely clear if all the relevant compilers accept this pragma as well,
    but we can hope the buildfarm will tell us if not.  We can also add a
    static assertion that should fire if the compiler padded the struct.
    
    Since the combination of these pragmas should define exactly what we
    want on any compiler that accepts them, let's try using them wherever
    we think they exist, not only for __arm__.  (This is likely to expose
    that the conditional definitions in c.h are inadequate, but finding
    that out would be a good thing.)
    
    The immediate motivation for this is that the current definition of
    ExecRowMark allows its curCtid field to be misaligned.  It is not clear
    whether there are any other uses of ItemPointerData with a similar hazard.
    We could change the definition of ExecRowMark if this doesn't work, but
    it would be far better to have a future-proof fix.
    
    Piotr Stefaniak, some further hacking by me
    d4b538ea
    History
    PostgreSQL Database Management System
    =====================================
    
    This directory contains the source code distribution of the PostgreSQL
    database management system.
    
    PostgreSQL is an advanced object-relational database management system
    that supports an extended subset of the SQL standard, including
    transactions, foreign keys, subqueries, triggers, user-defined types
    and functions.  This distribution also contains C language bindings.
    
    PostgreSQL has many language interfaces, many of which are listed here:
    
    	http://www.postgresql.org/download
    
    See the file INSTALL for instructions on how to build and install
    PostgreSQL.  That file also lists supported operating systems and
    hardware platforms and contains information regarding any other
    software packages that are required to build or run the PostgreSQL
    system.  Copyright and license information can be found in the
    file COPYRIGHT.  A comprehensive documentation set is included in this
    distribution; it can be read as described in the installation
    instructions.
    
    The latest version of this software may be obtained at
    http://www.postgresql.org/download/.  For more information look at our
    web site located at http://www.postgresql.org/.