veil_interface.c File Reference


Detailed Description

Functions providing the SQL interface to veil, and utility functions to support them.

     Author:       Marc Munro
     Copyright (c) 2005, 2006 Marc Munro
     License:      BSD
 $Id: veil_interface.c,v 1.7 2008/02/06 15:04:52 bloodnok Exp $

Definition in file veil_interface.c.

#include "postgres.h"
#include "executor/spi.h"
#include "funcapi.h"
#include "utils/hsearch.h"
#include "utils/memutils.h"
#include "veil_version.h"
#include "veil_funcs.h"
#include "veil_datatypes.h"

Include dependency graph for veil_interface.c:

Go to the source code of this file.

Defines

#define VEIL_SET_VARSIZE(new_t, t)   SET_VARSIZE(new_t, t);

Functions

const Pg_magic_struct * Pg_magic_func (void)
static char * strfromtext (text *in)
static text * textfromstr (char *in)
static text * textfromstrn (char *in, int limit)
static char * copystr (char *str)
static char * strfromint (int4 val)
static char * strfrombool (bool val)
static void ensure_init ()
static void type_mismatch (char *name, ObjType expected, ObjType got)
static Int4VarGetInt4Var (char *name, bool create)
static RangeGetRange (char *name, bool create)
static BitmapGetBitmapFromVar (VarEntry *var, bool allow_empty, bool allow_ref)
static BitmapGetBitmap (char *name, bool allow_empty, bool allow_ref)
static BitmapRefGetBitmapRefFromVar (VarEntry *var)
static BitmapRefGetBitmapRef (char *name)
static BitmapArrayGetBitmapArrayFromVar (VarEntry *var, bool allow_empty)
static BitmapArrayGetBitmapArray (char *name, bool allow_empty)
static BitmapHashGetBitmapHashFromVar (VarEntry *var, bool allow_empty)
static BitmapHashGetBitmapHash (char *name, bool allow_empty)
static Int4ArrayGetInt4ArrayFromVar (VarEntry *var, bool allow_empty)
static Int4ArrayGetInt4Array (char *name, bool allow_empty)
const Pg_finfo_record * pg_finfo_veil_share (void)
Datum veil_share (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_variables (void)
Datum veil_variables (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_init_range (void)
Datum veil_init_range (FunctionCallInfo fcinfo)
Datum datum_from_range (int32 min, int32 max)
const Pg_finfo_record * pg_finfo_veil_range (void)
Datum veil_range (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_init_bitmap (void)
Datum veil_init_bitmap (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_clear_bitmap (void)
Datum veil_clear_bitmap (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_setbit (void)
Datum veil_bitmap_setbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_clearbit (void)
Datum veil_bitmap_clearbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_testbit (void)
Datum veil_bitmap_testbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_union (void)
Datum veil_bitmap_union (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_intersect (void)
Datum veil_bitmap_intersect (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_bits (void)
Datum veil_bitmap_bits (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_range (void)
Datum veil_bitmap_range (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_init_bitmap_array (void)
Datum veil_init_bitmap_array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_clear_bitmap_array (void)
Datum veil_clear_bitmap_array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_from_array (void)
Datum veil_bitmap_from_array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_array_testbit (void)
Datum veil_bitmap_array_testbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_array_setbit (void)
Datum veil_bitmap_array_setbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_array_clearbit (void)
Datum veil_bitmap_array_clearbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_union_from_bitmap_array (void)
Datum veil_union_from_bitmap_array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_intersect_from_bitmap_array (void)
Datum veil_intersect_from_bitmap_array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_array_bits (void)
Datum veil_bitmap_array_bits (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_array_arange (void)
Datum veil_bitmap_array_arange (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_array_brange (void)
Datum veil_bitmap_array_brange (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_init_bitmap_hash (void)
Datum veil_init_bitmap_hash (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_clear_bitmap_hash (void)
Datum veil_clear_bitmap_hash (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_from_hash (void)
Datum veil_bitmap_from_hash (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_testbit (void)
Datum veil_bitmap_hash_testbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_setbit (void)
Datum veil_bitmap_hash_setbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_clearbit (void)
Datum veil_bitmap_hash_clearbit (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_union_into_bitmap_hash (void)
Datum veil_union_into_bitmap_hash (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_union_from_bitmap_hash (void)
Datum veil_union_from_bitmap_hash (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_intersect_from_bitmap_hash (void)
Datum veil_intersect_from_bitmap_hash (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_bits (void)
Datum veil_bitmap_hash_bits (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_range (void)
Datum veil_bitmap_hash_range (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_entries (void)
Datum veil_bitmap_hash_entries (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_bitmap_hash_defined (void)
Datum veil_bitmap_hash_defined (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_int4_set (void)
Datum veil_int4_set (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_int4_get (void)
Datum veil_int4_get (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_init_int4array (void)
Datum veil_init_int4array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_clear_int4array (void)
Datum veil_clear_int4array (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_int4array_set (void)
Datum veil_int4array_set (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_int4array_get (void)
Datum veil_int4array_get (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_init (void)
Datum veil_init (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_perform_reset (void)
Datum veil_perform_reset (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_force_reset (void)
Datum veil_force_reset (FunctionCallInfo fcinfo)
const Pg_finfo_record * pg_finfo_veil_version (void)
Datum veil_version (FunctionCallInfo fcinfo)

Variables

int no_such_variable


Function Documentation

static char* copystr ( char *  str  )  [static]

Create a dynamically allocated text value as a copy of a C string, applying a limit to the length.

Parameters:
str String to be copied
Returns:
Dynamically allocated (by palloc()) copy of str.

Definition at line 106 of file veil_interface.c.

Datum datum_from_range ( int32  min,
int32  max 
)

Create a datum containing the values of a veil_range_t composite type.

Parameters:
min Min value of range
max Max value of range
Returns:
Composite (row) type datum containing the range elements.

Definition at line 738 of file veil_interface.c.

static void ensure_init (  )  [static]

Perform session initialisation once for the session. This calls the user-defined function veil_init which should create and possibly initialise all session and, maybe, shared variables. This function may be safely called any number of times - it will only perform the initialisation on the first call.

Definition at line 156 of file veil_interface.c.

References vl_bool_from_query(), and vl_get_shared_hash().

Referenced by veil_bitmap_array_bits(), veil_bitmap_hash_bits(), veil_clear_int4array(), veil_init(), and veil_variables().

Here is the call graph for this function:

static Bitmap* GetBitmap ( char *  name,
bool  allow_empty,
bool  allow_ref 
) [static]

Return the Bitmap matching the name parameter, possibly creating the VarEntry (variable) for it. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
allow_empty Whether to raise an error if the variable has not been defined.
allow_ref Whether to (not) raise an error if the variable is a bitmap_ref rather than a bitmap.
Returns:
Pointer to the variable or null if the variable does not exist and create was false.

Definition at line 356 of file veil_interface.c.

static BitmapArray* GetBitmapArray ( char *  name,
bool  allow_empty 
) [static]

Return the BitmapArray matching the name parameter, possibly creating the (VarEntry) variable. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
allow_empty Whether to raise an error if the variable has not been defined
Returns:
Pointer to the variable or null if the variable does not exist and create was false.

Definition at line 472 of file veil_interface.c.

Referenced by veil_bitmap_array_bits().

static BitmapArray* GetBitmapArrayFromVar ( VarEntry var,
bool  allow_empty 
) [static]

Return the BitmapArray from a bitmap array variable. This function exists primarily to perform type checking, and to raise an error if the variable is not a bitmap array.

Parameters:
var The VarEntry that should contain a bitmap array.
allow_empty Whether to raise an error if the variable has not yet been initialised.
Returns:
Pointer to the variable or null if the variable is undefined and allow_empty was true.

Definition at line 440 of file veil_interface.c.

References VarEntry::key, BitmapArray::type, and type_mismatch().

Here is the call graph for this function:

static Bitmap* GetBitmapFromVar ( VarEntry var,
bool  allow_empty,
bool  allow_ref 
) [static]

Return the Bitmap from a bitmap variable. This function exists primarily to perform type checking, and to raise an error if the variable is not a bitmap.

Parameters:
var The VarEntry that should contain a bitmap.
allow_empty Whether to raise an error if the variable has not yet been initialised.
allow_ref Whether to (not) raise an error if the variable is a bitmap_ref rather than a bitmap.
Returns:
Pointer to the variable or null if the variable is undefined and allow_empty was true.

Definition at line 305 of file veil_interface.c.

References BitmapRef::bitmap, VarEntry::key, VarEntry::obj, Bitmap::type, type_mismatch(), and BitmapRef::xid.

Here is the call graph for this function:

static BitmapHash* GetBitmapHash ( char *  name,
bool  allow_empty 
) [static]

Return the BitmapHash matching the name parameter, possibly creating the VarEntry (variable) for it. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
allow_empty Whether to raise an error if the variable has not been defined.
Returns:
Pointer to the variable or null if the variable does not exist and create was false.

Definition at line 528 of file veil_interface.c.

Referenced by veil_bitmap_hash_bits().

static BitmapHash* GetBitmapHashFromVar ( VarEntry var,
bool  allow_empty 
) [static]

Return the BitmapHash from a bitmap hash variable. This function exists primarily to perform type checking, and to raise an error if the variable is not a bitmap hash.

Parameters:
var The VarEntry that should contain a bitmap hash.
allow_empty Whether to raise an error if the variable has not yet been initialised.
Returns:
Pointer to the variable or null if the variable is undefined and allow_empty was true.

Definition at line 496 of file veil_interface.c.

References VarEntry::key, BitmapHash::type, and type_mismatch().

Here is the call graph for this function:

static BitmapRef* GetBitmapRef ( char *  name  )  [static]

Return the BitmapRef matching the name parameter, possibly creating the VarEntry (variable) for it. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
Returns:
Pointer to the variable

Definition at line 417 of file veil_interface.c.

static BitmapRef* GetBitmapRefFromVar ( VarEntry var  )  [static]

Return the BitmapRef from a bitmap ref variable. This function exists primarily to perform type checking, and to raise an error if the variable is not a bitmap ref. Note that BitmapRef variables may not be shared as they can contain references to non-shared objects.

Parameters:
var The VarEntry that should contain a bitmap ref.
Returns:
Pointer to the variable.

Definition at line 379 of file veil_interface.c.

References VarEntry::key, BitmapRef::type, and type_mismatch().

Here is the call graph for this function:

static Int4Array* GetInt4Array ( char *  name,
bool  allow_empty 
) [static]

Return the Int4Array matching the name parameter, possibly creating the VarEntry (variable) for it. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
allow_empty Whether to raise an error if the variable has not been defined.
Returns:
Pointer to the variable or null if the variable does not exist and create was false.

Definition at line 584 of file veil_interface.c.

Referenced by veil_clear_int4array().

static Int4Array* GetInt4ArrayFromVar ( VarEntry var,
bool  allow_empty 
) [static]

Return the Int4Array from an Int4Array variable. This function exists primarily to perform type checking, and to raise an error if the variable is not an Int4Array.

Parameters:
var The VarEntry that should contain an Int4Array.
allow_empty Whether to raise an error if the variable has not yet been initialised.
Returns:
Pointer to the variable or null if the variable is undefined and allow_empty was true.

Definition at line 552 of file veil_interface.c.

References VarEntry::key, Int4Array::type, and type_mismatch().

Here is the call graph for this function:

static Int4Var* GetInt4Var ( char *  name,
bool  create 
) [static]

Return the Int4Var variable matching the name parameter, possibly creating the variable. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
create Whether to create the variable if it does not exist.
Returns:
Pointer to the variable or null if the variable does not exist and create was false.

Definition at line 228 of file veil_interface.c.

static Range* GetRange ( char *  name,
bool  create 
) [static]

Return the Range variable matching the name parameter, possibly creating the variable. Raise an error if the named variable already exists and is of the wrong type.

Parameters:
name The name of the variable.
create Whether to create the variable if it does not exist.
Returns:
Pointer to the variable or null if the variable does not exist and create was false.

Definition at line 265 of file veil_interface.c.

static char* strfrombool ( bool  val  )  [static]

Create a dynamically allocated C string as a copy of a boolean value.

Parameters:
val value to be stringified
Returns:
Dynamically allocated string.

Definition at line 135 of file veil_interface.c.

static char* strfromint ( int4  val  )  [static]

Create a dynamically allocated C string as a copy of an integer value.

Parameters:
val value to be stringified
Returns:
Dynamically allocated string.

Definition at line 120 of file veil_interface.c.

static char* strfromtext ( text *  in  )  [static]

Create a dynamically allocated C string as a copy of a text value.

Parameters:
in text value from which the copy is made.
Returns:
Dynamically allocated (by palloc()) copy of in.

Definition at line 47 of file veil_interface.c.

Referenced by veil_bitmap_array_bits(), veil_bitmap_hash_bits(), and veil_clear_int4array().

static text* textfromstr ( char *  in  )  [static]

Create a dynamically allocated text value as a copy of a C string.

Parameters:
in String to be copied
Returns:
Dynamically allocated (by palloc()) copy of in.

Definition at line 63 of file veil_interface.c.

static text* textfromstrn ( char *  in,
int  limit 
) [static]

Create a dynamically allocated text value as a copy of a C string, applying a limit to the length.

Parameters:
in String to be copied
limit Maximum length of string to be copied.
Returns:
Dynamically allocated (by palloc()) copy of in.

Definition at line 82 of file veil_interface.c.

static void type_mismatch ( char *  name,
ObjType  expected,
ObjType  got 
) [static]

Report, by raising an error, a type mismatch between the expected and actual type of a VarEntry variable.

Parameters:
name The name of the variable
expected The expected type.
got The actual type

Definition at line 205 of file veil_interface.c.

References vl_ObjTypeName().

Referenced by GetBitmapArrayFromVar(), GetBitmapFromVar(), GetBitmapHashFromVar(), GetBitmapRefFromVar(), and GetInt4ArrayFromVar().

Here is the call graph for this function:

Datum veil_bitmap_array_arange ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_array_arange(text) returns veil_range_t Return composite type giving the range of the array part of the specified BitmapArray

Parameters:
fcinfo text The name of the bitmap array.
Returns:
veil_range_t Composite type containing the min and max indices of the array

Definition at line 1538 of file veil_interface.c.

Datum veil_bitmap_array_bits ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_array_bits(text) returns setof int4 Return the set of all bits set in the specified Bitmap from the BitmapArray.

Parameters:
fcinfo text The name of the bitmap array.
int4 Index of the required bitmap in the array
Returns:
setof int4The set of bits that are set in the bitmap.

Definition at line 1457 of file veil_interface.c.

References BitmapArray::arraymax, BitmapArray::arrayzero, ensure_init(), GetBitmapArray(), strfromtext(), and vl_BitmapFromArray().

Here is the call graph for this function:

Datum veil_bitmap_array_brange ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_array_brange(text) returns veil_range_t Return composite type giving the range of every Bitmap within the BitmapArray.

Parameters:
fcinfo text The name of the bitmap array.
Returns:
veil_range_t Composite type containing the min and max values of the bitmap array's range

Definition at line 1573 of file veil_interface.c.

Datum veil_bitmap_array_clearbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_array_clearbit(text, int4, int4) returns bool Clear a specified bit within a BitmapArray

An error will be raised if the first parameter is not a BitmapArray.

Parameters:
fcinfo text The name of the BitmapArray
int4 Index of the Bitmap within the array.
int4 Bit id of the bit within the Bitmap.
Returns:
bool True

Definition at line 1331 of file veil_interface.c.

Datum veil_bitmap_array_setbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_array_setbit(text, int4, int4) returns bool Set a specified bit within a BitmapArray

An error will be raised if the first parameter is not a BitmapArray.

Parameters:
fcinfo text The name of the BitmapArray
int4 Index of the Bitmap within the array.
int4 Bit id of the bit within the Bitmap.
Returns:
bool True

Definition at line 1286 of file veil_interface.c.

Datum veil_bitmap_array_testbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_array_testbit(text, int4, int4) returns bool Test a specified bit within a BitmapArray

An error will be raised if the first parameter is not a BitmapArray.

Parameters:
fcinfo text The name of the BitmapArray
int4 Index of the Bitmap within the array.
int4 Bit id of the bit within the Bitmap.
Returns:
bool True if the bit was set, false otherwise.

Definition at line 1247 of file veil_interface.c.

Datum veil_bitmap_bits ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_bits(text) returns setof int4 Return the set of all bits set in the specified Bitmap or BitmapRef.

Parameters:
fcinfo text The name of the bitmap.
Returns:
setof int4The set of bits that are set in the bitmap.

Definition at line 1032 of file veil_interface.c.

Datum veil_bitmap_clearbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_clearbit(int4, text) returns bool Clear the specified bit in the specified Bitmap.

An error will be raised if the variable is not a Bitmap or BitmapRef.

Parameters:
fcinfo int4 The bit to be cleared
text The name of the bitmap variable.
Returns:
bool true

Definition at line 908 of file veil_interface.c.

Datum veil_bitmap_from_array ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_from_array(text, text, int4) returns text Place a reference to the specified Bitmap from a BitmapArray into the specified BitmapRef An error will be raised if any parameter is not of the correct type.

Parameters:
fcinfo text The name of the BitmapRef into which a reference to the relevant Bitmap will be placed.
text Name of the BitmapArray containing the Bitmap in which we are interested.
int4 Index into the array of the bitmap in question.
Returns:
text The name of the BitmapRef

Definition at line 1208 of file veil_interface.c.

Datum veil_bitmap_from_hash ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_from_hash(text, text, text) returns text Place a reference to the specified Bitmap from a BitmapHash into the specified BitmapRef An error will be raised if any parameter is not of the correct type.

Parameters:
fcinfo text The name of the BitmapRef into which a reference to the relevant Bitmap will be placed.
text Name of the BitmapHash containing the Bitmap in which we are interested.
text Key, into the hash, of the bitmap in question.
Returns:
text The name of the BitmapRef

Definition at line 1691 of file veil_interface.c.

Datum veil_bitmap_hash_bits ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_bits(text) returns setof int4 Return the set of all bits set in the specified Bitmap from the BitmapHash.

Parameters:
fcinfo text The name of the bitmap hash.
text Key of the required bitmap in the hash
Returns:
setof int4The set of bits that are set in the bitmap.

Definition at line 1962 of file veil_interface.c.

References ensure_init(), GetBitmapHash(), strfromtext(), and vl_BitmapFromHash().

Here is the call graph for this function:

Datum veil_bitmap_hash_clearbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_clearbit(text, text, int4) returns bool Clear a specified bit within a BitmapHash

An error will be raised if the first parameter is not a BitmapHash.

Parameters:
fcinfo text The name of the BitmapHash
text Key of the Bitmap within the hash.
int4 Bit id of the bit within the Bitmap.
Returns:
bool True

Definition at line 1803 of file veil_interface.c.

Datum veil_bitmap_hash_defined ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_defined(text, text) returns bool Return true if the key exists in the bitmap hash.

Parameters:
fcinfo text The name of the bitmap hash.
text Key of the required bitmap in the hash
Returns:
bool True if key is defined in the hash

Definition at line 2126 of file veil_interface.c.

Datum veil_bitmap_hash_entries ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_entries(text) returns setof text Return the key of every Bitmap within the BitmapHash.

Parameters:
fcinfo text The name of the bitmap hash.
Returns:
setof text Every key in the hash.

Definition at line 2063 of file veil_interface.c.

Datum veil_bitmap_hash_range ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_range(text) returns veil_range_t Return composite type giving the range of every Bitmap within the BitmapHash.

Parameters:
fcinfo text The name of the bitmap array.
Returns:
veil_range_t Composite type containing the min and max values of the bitmap hash's range

Definition at line 2033 of file veil_interface.c.

Datum veil_bitmap_hash_setbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_setbit(text, text, int4) returns bool Set a specified bit within a BitmapHash

An error will be raised if the first parameter is not a BitmapHash.

Parameters:
fcinfo text The name of the BitmapHash
text Key of the Bitmap within the hash.
int4 Bit id of the bit within the Bitmap.
Returns:
bool True

Definition at line 1768 of file veil_interface.c.

Datum veil_bitmap_hash_testbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_hash_testbit(text, text, int4) returns bool Test a specified bit within a BitmapHash

An error will be raised if the first parameter is not a BitmapHash.

Parameters:
fcinfo text The name of the BitmapHash
text Key of the Bitmap within the hash.
int4 Bit id of the bit within the Bitmap.
Returns:
bool True if the bit was set, false otherwise.

Definition at line 1730 of file veil_interface.c.

Datum veil_bitmap_intersect ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_intersect(text, text) returns bool Intersect the bitmap specified in parameter 1 with that in parameter 2, with the result in parameter 1.

An error will be raised if the variables are not of type Bitmap or BitmapRef.

Parameters:
fcinfo text The target bitmap
text The bitmap with which to intersect the target
Returns:
bool true

Definition at line 1003 of file veil_interface.c.

Datum veil_bitmap_range ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_range(text) returns veil_range_t Return composite type giving the range of the specified Bitmap or BitmapRef.

Parameters:
fcinfo text The name of the bitmap.
Returns:
veil_range_t Composite type containing the min and max values of the bitmap's range

Definition at line 1098 of file veil_interface.c.

Datum veil_bitmap_setbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_setbit(int4, text) returns bool Set the specified bit in the specified Bitmap.

An error will be raised if the variable is not a Bitmap or BitmapRef.

Parameters:
fcinfo int4 The bit to be set
text The name of the bitmap variable.
Returns:
bool true

Definition at line 880 of file veil_interface.c.

Datum veil_bitmap_testbit ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_testbit(int4, text) returns bool Test the specified bit in the specified Bitmap, returning true if it is set.

An error will be raised if the variable is not a Bitmap or BitmapRef.

Parameters:
fcinfo int4 The bit to be tested.
text The name of the bitmap variable.
Returns:
bool true if the bit was set

Definition at line 937 of file veil_interface.c.

Datum veil_bitmap_union ( FunctionCallInfo  fcinfo  ) 

veil_bitmap_union(text, text) returns bool Union the bitmap specified in parameter 1 with that in parameter 2, with the result in parameter 1.

An error will be raised if the variables are not of type Bitmap or BitmapRef.

Parameters:
fcinfo text The target bitmap
text The bitmap with which to union the target
Returns:
bool true

Definition at line 969 of file veil_interface.c.

Datum veil_clear_bitmap ( FunctionCallInfo  fcinfo  ) 

veil_clear_bitmap(text) returns bool Clear all bits in the specified Bitmap. An error will be raised if the variable is not a Bitmap or BitmapRef.

Parameters:
fcinfo text The name of the bitmap to be cleared.
Returns:
bool true

Definition at line 851 of file veil_interface.c.

Datum veil_clear_bitmap_array ( FunctionCallInfo  fcinfo  ) 

veil_clear_bitmap_array(text) returns bool Clear the bits in an existing BitmapArray. An error will be raised if the parameter is not of the correct type.

Parameters:
fcinfo text The name of the BitmapArray.
Returns:
bool True

Definition at line 1176 of file veil_interface.c.

Datum veil_clear_bitmap_hash ( FunctionCallInfo  fcinfo  ) 

veil_clear_bitmap_hash(text) returns bool Clear the bits in an existing BitmapHash. An error will be raised if the parameter is not of the correct type.

Parameters:
fcinfo text The name of the BitmapHash.
Returns:
bool True

Definition at line 1655 of file veil_interface.c.

Datum veil_clear_int4array ( FunctionCallInfo  fcinfo  ) 

veil_clear_int4array(text) returns bool Clear an Int4Array variable. Each entry in the array will be zeroed.

Parameters:
fcinfo text The name of the Int4Array variable.
Returns:
bool True

Definition at line 2256 of file veil_interface.c.

References ensure_init(), GetInt4Array(), strfromtext(), and vl_Int4ArraySet().

Here is the call graph for this function:

Datum veil_force_reset ( FunctionCallInfo  fcinfo  ) 

veil_force_reset() returns bool Reset veil shared memory for this database, ignoring existing transactions. This function will always reset the shared memory context, even for sessions that are still using it. Having taken this drastic action, it will then cause a panic to reset the server.

Question - won't a panic reset the shared memory in any case? Is the panic superfluous, or maybe is this entire function superfluous?

Parameters:
fcinfo 
Returns:
bool True.

Definition at line 2424 of file veil_interface.c.

Datum veil_init ( FunctionCallInfo  fcinfo  ) 

veil_init(bool) returns bool Initialise or reset a veil session. The boolean parameter will be false when called for initialisation, and true when performing a reset.

This function must be redefined as a custom function in your implementation.

Parameters:
fcinfo bool Whether we are being called in order to reset (true) the session or (false) simply to initialise it.
Returns:
bool True

Definition at line 2343 of file veil_interface.c.

References ensure_init(), vl_bool_from_query(), and vl_prepare_context_switch().

Here is the call graph for this function:

Datum veil_init_bitmap ( FunctionCallInfo  fcinfo  ) 

veil_init_bitmap(text, text) returns bool Create or re-initialise a Bitmap, for dealing with a named range of values. An error will be raised if the variable already exists and is not a Bitmap.

Parameters:
fcinfo text The name of the bitmap to create or reset
text The name of a Range variable that defines the range of the new bitmap.
Returns:
bool true

Definition at line 817 of file veil_interface.c.

Datum veil_init_bitmap_array ( FunctionCallInfo  fcinfo  ) 

veil_init_bitmap_array(text, text, text) returns bool Create or reset a BitmapArray. An error will be raised if any parameter is not of the correct type.

Parameters:
fcinfo text The name of the bitmap array.
text Name of the Range variable that provides the range of the array part of the bitmap array.
text Name of the Range variable that provides the range of each bitmap in the array.
Returns:
bool True

Definition at line 1136 of file veil_interface.c.

Datum veil_init_bitmap_hash ( FunctionCallInfo  fcinfo  ) 

veil_init_bitmap_hash(text, text) returns bool Create or reset a BitmapHash. An error will be raised if any parameter is not of the correct type.

Parameters:
fcinfo text The name of the bitmap hash.
text Name of the Range variable that provides the range of each bitmap in the hash.
Returns:
bool True

Definition at line 1610 of file veil_interface.c.

Datum veil_init_int4array ( FunctionCallInfo  fcinfo  ) 

veil_init_int4array(text, text) returns bool Initialise an Int4Array variable. Each entry in the array will be zeroed.

Parameters:
fcinfo text The name of the Int4Array variable.
text Name of the range variable defining the size of the array.
Returns:
bool True

Definition at line 2222 of file veil_interface.c.

Datum veil_init_range ( FunctionCallInfo  fcinfo  ) 

veil_init_range(text, int4, int4) returns int4 Initialise a Range variable, returning the number of elements in the range. Ranges contain a min value and a max value. They may be examined using the veil_range() function.

Parameters:
fcinfo text The name of the variable to initialise.
int4 The min value of the range.
int4 The max value of the range.
Returns:
int4 The size of the range ((max - min) + 1).

Definition at line 709 of file veil_interface.c.

Datum veil_int4_get ( FunctionCallInfo  fcinfo  ) 

veil_int4_get(text) returns int4 Return the value of an Int4Var variable. An Error will be raised if the variable is not defined or is of the wrong type.

Parameters:
fcinfo text The name of the int4 variable.
Returns:
int4 The value of the variable.

Definition at line 2191 of file veil_interface.c.

Datum veil_int4_set ( FunctionCallInfo  fcinfo  ) 

veil_int4_set(text, int4) returns int4 Set an Int4Var variable type to a specified value. An Error will be raised if the variable is not defined or is of the wrong type.

Parameters:
fcinfo text The name of the int4 variable.
fcinfo int4 The value to be set (may be null).
Returns:
int4 The new value of the variable.

Definition at line 2157 of file veil_interface.c.

Datum veil_int4array_get ( FunctionCallInfo  fcinfo  ) 

veil_int4array_get(text, int4) returns int4 Get an Int4Array entry.

Parameters:
fcinfo text The name of the Int4Array variable.
int4 Index of the entry to be retrieved
Returns:
int4 The value of the array entry

Definition at line 2310 of file veil_interface.c.

Datum veil_int4array_set ( FunctionCallInfo  fcinfo  ) 

veil_int4array_set(text, int4, int4) returns int4 Set an Int4Array entry.

Parameters:
fcinfo text The name of the Int4Array variable.
int4 Index of the entry to be set
int4 Value to which the entry will be set
Returns:
int4 The new value of the array entry

Definition at line 2282 of file veil_interface.c.

Datum veil_intersect_from_bitmap_array ( FunctionCallInfo  fcinfo  ) 

veil_intersect_from_bitmap_array(text, text, int4) returns bool Intersect a Bitmap with the specified Bitmap from a BitmapArray with the result placed into the first parameter.

An error will be raised if the parameters are not of the correct types.

Parameters:
fcinfo text The name of the Bitmap into which the resulting intersection will be placed.
text Name of the BitmapArray
int4 Index of the required bitmap in the array
Returns:
bool True

Definition at line 1419 of file veil_interface.c.

Datum veil_intersect_from_bitmap_hash ( FunctionCallInfo  fcinfo  ) 

veil_intersect_from_bitmap_hash(text, text, text) returns bool Intersect a Bitmap with the specified Bitmap from a BitmapArray with the result placed into the bitmap parameter.

An error will be raised if the parameters are not of the correct types.

Parameters:
fcinfo text The name of the Bitmap into which the resulting intersection will be placed.
text Name of the BitmapHash
text Key of the required bitmap in the hash
Returns:
bool True

Definition at line 1920 of file veil_interface.c.

Datum veil_perform_reset ( FunctionCallInfo  fcinfo  ) 

veil_perform_reset() returns bool Reset veil shared memory for this database. This creates a new shared memory context with none of the existing shared variables. All current transactions will be able to continue using the current variables, all new transactions will see the new set, once this function has completed.

Parameters:
fcinfo 
Returns:
bool True if the function is able to complete successfully. If it is unable, no harm will have been done but neither will a memory reset have been performed.

Definition at line 2369 of file veil_interface.c.

Datum veil_range ( FunctionCallInfo  fcinfo  ) 

veil_range(text) returns veil_range_t Return the range (as a SQL veil_range_t composite type) from the named variable. An Error will be raised if the variable is not defined or is of the wrong type.

Parameters:
fcinfo text The name of the range variable.
Returns:
veil_range_t Composite type containing the min and max values from the named variable.

Definition at line 786 of file veil_interface.c.

Datum veil_share ( FunctionCallInfo  fcinfo  ) 

veil_share(text) returns bool Define a shared variable returning true if the variable is already defined. If the variable is already defined as a session variable an ERROR will be raised.

Session variables are simply defined by their first usage. Shared variables must be defined using this function. They may then be used in exactly the same way as session variables. Shared variables are shared by all backends and so need only be initialised once. The result of this function tells the caller whether the variable needs to be initialised. The caller that first defines a shared variable will get a false result and from this will know that the variable must be initialised. All subsequent callers will get a true result and so will know that the variable is already initialised.

Parameters:
fcinfo text name of variable.
Returns:
bool true if the variable already exists

Definition at line 617 of file veil_interface.c.

Datum veil_union_from_bitmap_array ( FunctionCallInfo  fcinfo  ) 

veil_union_from_bitmap_array(text, text, int4) returns bool Union a Bitmap with the specified Bitmap from a BitmapArray with the result placed into the first parameter.

An error will be raised if the parameters are not of the correct types.

Parameters:
fcinfo text The name of the Bitmap into which the resulting union will be placed.
text Name of the BitmapArray
int4 Index of the required bitmap in the array
Returns:
bool True

Definition at line 1378 of file veil_interface.c.

Datum veil_union_from_bitmap_hash ( FunctionCallInfo  fcinfo  ) 

veil_union_from_bitmap_hash(text, text, text) returns bool Union a Bitmap with the specified Bitmap from a BitmapHash with the result placed into the bitmap parameter.

An error will be raised if the parameters are not of the correct types.

Parameters:
fcinfo text The name of the Bitmap into which the resulting union will be placed.
text Name of the BitmapHash
text Key of the required bitmap in the hash
Returns:
bool True

Definition at line 1880 of file veil_interface.c.

Datum veil_union_into_bitmap_hash ( FunctionCallInfo  fcinfo  ) 

veil_union_into_bitmap_hash(text, text, text) returns bool Union a Bitmap with the specified Bitmap from a BitmapHash with the result placed into the bitmap hash.

An error will be raised if the parameters are not of the correct types.

Parameters:
fcinfo text Name of the BitmapHash
text Key of the required bitmap in the hash
text The name of the Bitmap into which the resulting union will be placed.
Returns:
bool True

Definition at line 1840 of file veil_interface.c.

Datum veil_variables ( FunctionCallInfo  fcinfo  ) 

veil_variables() returns setof veil_variable_t Return a veil_variable_t record for each defined variable. This includes both session and shared variables.

Parameters:
fcinfo None
Returns:
setof veil_variable_t

Definition at line 640 of file veil_interface.c.

References ensure_init().

Here is the call graph for this function:

Datum veil_version ( FunctionCallInfo  fcinfo  ) 

veil_version() returns text Return a string describing this version of veil.

Parameters:
fcinfo 
Returns:
text String describing the version.

Definition at line 2441 of file veil_interface.c.


Generated on Tue Mar 11 10:08:37 2008 for Veil by  doxygen 1.5.4