MonetDB type system

From MonetDB
Revision as of 21:05, 6 October 2015 by Stefan Manegold (talk | contribs)
Jump to navigationJump to search
  • Rule #1
    • C types long & unsigned long are evil and must NOT be used!
      While they are 32/64-bit on 32/64-bit systems under Unix, they are always 32-bit (also on 64-bit systems) under Windows.
  • Rule #2
    • monetdb_config.h must be the first #include in each .c file (not in any .h file).
MonetDB type system
semantics SQL MAL C width signed? NIL value value range format string format cast availability C example
bit / boolean
(0/1 / false/true)
BOOLEAN :bit bit 1 byte
8 bit
(yes) bit_nil ==
(bit) bte_nil
"%hhd" always bit x = 0;
printf("%hhd", x);
1-byte (8-bit)
signed integer
TINYINT :bte bte 1 byte
8 bit
yes bte_nil ==
"%hhd" always bte x = 0;
printf("%hhd", x);
2-byte (16-bit)
signed integer
SMALLINT :sht sht 2 byte
16 bit
yes sht_nil ==
"%hd" always sht x = 0;
printf( "%hd", x);
4-byte (32-bit)
signed integer
INT / INTEGER :int int 4 byte
32 bit
yes int_nil ==
"%d" always int x = 0;
printf( "%d", x);
8-byte (64-bit)
signed integer
BIGINT :lng lng 8 byte
64 bit
yes lng_nil ==
LLFMT always lng x = 0;
printf(LLFMT , x);
16-byte (128-bit)
signed integer
HUGEINT :hge hge 16 byte
128 bit
yes hge_nil ==
(none provide by compilers) if supported by compiler
(configure then defines HAVE_HGE)
#ifdef HAVE_HGE
hge x = 0;
printf("%.40g", (dbl) x);

... to be continued ...