mirror of
https://github.com/postgres/postgres.git
synced 2026-06-11 01:30:11 -04:00
Pre-beta mechanical code beautification, step 1: run pgindent.
Update typedefs.list from the buildfarm, and run pgindent. The changes from the new typedefs list are pretty minimal, since we'd been pretty good (not perfect) about updating typedefs.list by hand. But the pgindent behavior changes installed bya3e6beba6,b518ba4af, and60f9467c3add up to make this a relatively sizable diff.
This commit is contained in:
parent
60f9467c38
commit
020794ee42
203 changed files with 1564 additions and 1087 deletions
|
|
@ -50,14 +50,14 @@ amcheck_index_mainfork_expected(Relation rel)
|
|||
}
|
||||
|
||||
/*
|
||||
* Amcheck main workhorse.
|
||||
* Given index relation OID, lock relation.
|
||||
* Next, take a number of standard actions:
|
||||
* 1) Make sure the index can be checked
|
||||
* 2) change the context of the user,
|
||||
* 3) keep track of GUCs modified via index functions
|
||||
* 4) execute callback function to verify integrity.
|
||||
*/
|
||||
* Amcheck main workhorse.
|
||||
* Given index relation OID, lock relation.
|
||||
* Next, take a number of standard actions:
|
||||
* 1) Make sure the index can be checked
|
||||
* 2) change the context of the user,
|
||||
* 3) keep track of GUCs modified via index functions
|
||||
* 4) execute callback function to verify integrity.
|
||||
*/
|
||||
void
|
||||
amcheck_lock_relation_and_check(Oid indrelid,
|
||||
Oid am_id,
|
||||
|
|
|
|||
|
|
@ -49,9 +49,9 @@ gbtreekey_out(PG_FUNCTION_ARGS)
|
|||
|
||||
|
||||
/*
|
||||
** GiST DeCompress methods
|
||||
** do not do anything.
|
||||
*/
|
||||
* GiST DeCompress methods
|
||||
* do not do anything.
|
||||
*/
|
||||
Datum
|
||||
gbt_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -165,8 +165,8 @@ gbt_num_fetch(GISTENTRY *entry, const gbtree_ninfo *tinfo)
|
|||
|
||||
|
||||
/*
|
||||
** The GiST union method for numerical values
|
||||
*/
|
||||
* The GiST union method for numerical values
|
||||
*/
|
||||
|
||||
void *
|
||||
gbt_num_union(GBT_NUMKEY *out, const GistEntryVector *entryvec, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
|
||||
|
|
@ -205,8 +205,8 @@ gbt_num_union(GBT_NUMKEY *out, const GistEntryVector *entryvec, const gbtree_nin
|
|||
|
||||
|
||||
/*
|
||||
** The GiST same method for numerical values
|
||||
*/
|
||||
* The GiST same method for numerical values
|
||||
*/
|
||||
|
||||
bool
|
||||
gbt_num_same(const GBT_NUMKEY *a, const GBT_NUMKEY *b, const gbtree_ninfo *tinfo, FmgrInfo *flinfo)
|
||||
|
|
@ -309,8 +309,8 @@ gbt_num_consistent(const GBT_NUMKEY_R *key,
|
|||
|
||||
|
||||
/*
|
||||
** The GiST distance method (for KNN-Gist)
|
||||
*/
|
||||
* The GiST distance method (for KNN-Gist)
|
||||
*/
|
||||
|
||||
float8
|
||||
gbt_num_distance(const GBT_NUMKEY_R *key,
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ gbt_var_leaf2node(GBT_VARKEY *leaf, const gbtree_vinfo *tinfo, FmgrInfo *flinfo)
|
|||
*
|
||||
* If the underlying type is character data, the prefix length may point in
|
||||
* the middle of a multibyte character.
|
||||
*/
|
||||
*/
|
||||
static int32
|
||||
gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo)
|
||||
{
|
||||
|
|
@ -207,9 +207,9 @@ gbt_var_node_pf_match(const GBT_VARKEY_R *node, const bytea *query, const gbtree
|
|||
|
||||
|
||||
/*
|
||||
* truncates / compresses the node key
|
||||
* cpf_length .. common prefix length
|
||||
*/
|
||||
* truncates / compresses the node key
|
||||
* cpf_length .. common prefix length
|
||||
*/
|
||||
static GBT_VARKEY *
|
||||
gbt_var_node_truncate(const GBT_VARKEY *node, int32 cpf_length, const gbtree_vinfo *tinfo)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ PG_MODULE_MAGIC_EXT(
|
|||
#define ARRNELEMS(x) ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x))
|
||||
|
||||
/*
|
||||
** Input/Output routines
|
||||
*/
|
||||
* Input/Output routines
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(cube_in);
|
||||
PG_FUNCTION_INFO_V1(cube_a_f8_f8);
|
||||
PG_FUNCTION_INFO_V1(cube_a_f8);
|
||||
|
|
@ -49,8 +49,8 @@ PG_FUNCTION_INFO_V1(cube_coord_llur);
|
|||
PG_FUNCTION_INFO_V1(cube_subset);
|
||||
|
||||
/*
|
||||
** GiST support methods
|
||||
*/
|
||||
* GiST support methods
|
||||
*/
|
||||
|
||||
PG_FUNCTION_INFO_V1(g_cube_consistent);
|
||||
PG_FUNCTION_INFO_V1(g_cube_compress);
|
||||
|
|
@ -62,8 +62,8 @@ PG_FUNCTION_INFO_V1(g_cube_same);
|
|||
PG_FUNCTION_INFO_V1(g_cube_distance);
|
||||
|
||||
/*
|
||||
** B-tree support functions
|
||||
*/
|
||||
* B-tree support functions
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(cube_eq);
|
||||
PG_FUNCTION_INFO_V1(cube_ne);
|
||||
PG_FUNCTION_INFO_V1(cube_lt);
|
||||
|
|
@ -73,8 +73,8 @@ PG_FUNCTION_INFO_V1(cube_ge);
|
|||
PG_FUNCTION_INFO_V1(cube_cmp);
|
||||
|
||||
/*
|
||||
** R-tree support functions
|
||||
*/
|
||||
* R-tree support functions
|
||||
*/
|
||||
|
||||
PG_FUNCTION_INFO_V1(cube_contains);
|
||||
PG_FUNCTION_INFO_V1(cube_contained);
|
||||
|
|
@ -84,8 +84,8 @@ PG_FUNCTION_INFO_V1(cube_inter);
|
|||
PG_FUNCTION_INFO_V1(cube_size);
|
||||
|
||||
/*
|
||||
** miscellaneous
|
||||
*/
|
||||
* miscellaneous
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(distance_taxicab);
|
||||
PG_FUNCTION_INFO_V1(cube_distance);
|
||||
PG_FUNCTION_INFO_V1(distance_chebyshev);
|
||||
|
|
@ -93,8 +93,8 @@ PG_FUNCTION_INFO_V1(cube_is_point);
|
|||
PG_FUNCTION_INFO_V1(cube_enlarge);
|
||||
|
||||
/*
|
||||
** For internal use only
|
||||
*/
|
||||
* For internal use only
|
||||
*/
|
||||
int32 cube_cmp_v0(NDBOX *a, NDBOX *b);
|
||||
bool cube_contains_v0(NDBOX *a, NDBOX *b);
|
||||
bool cube_overlap_v0(NDBOX *a, NDBOX *b);
|
||||
|
|
@ -105,8 +105,8 @@ bool g_cube_leaf_consistent(NDBOX *key, NDBOX *query, StrategyNumber strategy);
|
|||
bool g_cube_internal_consistent(NDBOX *key, NDBOX *query, StrategyNumber strategy);
|
||||
|
||||
/*
|
||||
** Auxiliary functions
|
||||
*/
|
||||
* Auxiliary functions
|
||||
*/
|
||||
static double distance_1D(double a1, double a2, double b1, double b2);
|
||||
static bool cube_is_point_internal(NDBOX *cube);
|
||||
|
||||
|
|
@ -137,8 +137,8 @@ cube_in(PG_FUNCTION_ARGS)
|
|||
|
||||
|
||||
/*
|
||||
** Allows the construction of a cube from 2 float[]'s
|
||||
*/
|
||||
* Allows the construction of a cube from 2 float[]'s
|
||||
*/
|
||||
Datum
|
||||
cube_a_f8_f8(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -204,8 +204,8 @@ cube_a_f8_f8(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** Allows the construction of a zero-volume cube from a float[]
|
||||
*/
|
||||
* Allows the construction of a zero-volume cube from a float[]
|
||||
*/
|
||||
Datum
|
||||
cube_a_f8(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -386,11 +386,11 @@ cube_recv(PG_FUNCTION_ARGS)
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
** The GiST Consistent method for boxes
|
||||
** Should return false if for all data items x below entry,
|
||||
** the predicate x op query == false, where op is the oper
|
||||
** corresponding to strategy in the pg_amop table.
|
||||
*/
|
||||
* The GiST Consistent method for boxes
|
||||
* Should return false if for all data items x below entry,
|
||||
* the predicate x op query == false, where op is the oper
|
||||
* corresponding to strategy in the pg_amop table.
|
||||
*/
|
||||
Datum
|
||||
g_cube_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -423,9 +423,9 @@ g_cube_consistent(PG_FUNCTION_ARGS)
|
|||
|
||||
|
||||
/*
|
||||
** The GiST Union method for boxes
|
||||
** returns the minimal bounding box that encloses all the entries in entryvec
|
||||
*/
|
||||
* The GiST Union method for boxes
|
||||
* returns the minimal bounding box that encloses all the entries in entryvec
|
||||
*/
|
||||
Datum
|
||||
g_cube_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -454,9 +454,9 @@ g_cube_union(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** GiST Compress and Decompress methods for boxes
|
||||
** do not do anything.
|
||||
*/
|
||||
* GiST Compress and Decompress methods for boxes
|
||||
* do not do anything.
|
||||
*/
|
||||
|
||||
Datum
|
||||
g_cube_compress(PG_FUNCTION_ARGS)
|
||||
|
|
@ -484,9 +484,9 @@ g_cube_decompress(PG_FUNCTION_ARGS)
|
|||
|
||||
|
||||
/*
|
||||
** The GiST Penalty method for boxes
|
||||
** As in the R-tree paper, we use change in area as our penalty metric
|
||||
*/
|
||||
* The GiST Penalty method for boxes
|
||||
* As in the R-tree paper, we use change in area as our penalty metric
|
||||
*/
|
||||
Datum
|
||||
g_cube_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -509,9 +509,9 @@ g_cube_penalty(PG_FUNCTION_ARGS)
|
|||
|
||||
|
||||
/*
|
||||
** The GiST PickSplit method for boxes
|
||||
** We use Guttman's poly time split algorithm
|
||||
*/
|
||||
* The GiST PickSplit method for boxes
|
||||
* We use Guttman's poly time split algorithm
|
||||
*/
|
||||
Datum
|
||||
g_cube_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -660,8 +660,8 @@ g_cube_picksplit(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** Equality method
|
||||
*/
|
||||
* Equality method
|
||||
*/
|
||||
Datum
|
||||
g_cube_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -678,8 +678,8 @@ g_cube_same(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** SUPPORT ROUTINES
|
||||
*/
|
||||
* SUPPORT ROUTINES
|
||||
*/
|
||||
bool
|
||||
g_cube_leaf_consistent(NDBOX *key,
|
||||
NDBOX *query,
|
||||
|
|
@ -936,8 +936,10 @@ rt_cube_size(NDBOX *a, double *size)
|
|||
*size = result;
|
||||
}
|
||||
|
||||
/* make up a metric in which one box will be 'lower' than the other
|
||||
-- this can be useful for sorting and to determine uniqueness */
|
||||
/*
|
||||
* make up a metric in which one box will be 'lower' than the other
|
||||
* -- this can be useful for sorting and to determine uniqueness
|
||||
*/
|
||||
int32
|
||||
cube_cmp_v0(NDBOX *a, NDBOX *b)
|
||||
{
|
||||
|
|
@ -1250,10 +1252,12 @@ cube_overlap(PG_FUNCTION_ARGS)
|
|||
|
||||
|
||||
/* Distance */
|
||||
/* The distance is computed as a per axis sum of the squared distances
|
||||
between 1D projections of the boxes onto Cartesian axes. Assuming zero
|
||||
distance between overlapping projections, this metric coincides with the
|
||||
"common sense" geometric distance */
|
||||
/*
|
||||
* The distance is computed as a per axis sum of the squared distances
|
||||
* between 1D projections of the boxes onto Cartesian axes. Assuming zero
|
||||
* distance between overlapping projections, this metric coincides with the
|
||||
* "common sense" geometric distance
|
||||
*/
|
||||
Datum
|
||||
cube_distance(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -1817,8 +1821,10 @@ cube_f8_f8(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_NDBOX_P(result);
|
||||
}
|
||||
|
||||
/* Add a dimension to an existing cube with the same values for the new
|
||||
coordinate */
|
||||
/*
|
||||
* Add a dimension to an existing cube with the same values for the new
|
||||
* coordinate
|
||||
*/
|
||||
Datum
|
||||
cube_c_f8(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ static bool dblink_connstr_has_pw(const char *connstr);
|
|||
static void dblink_security_check(PGconn *conn, const char *connname,
|
||||
const char *connstr);
|
||||
static void dblink_res_error(PGconn *conn, const char *conname, PGresult *res,
|
||||
bool fail, const char *fmt,...) pg_attribute_printf(5, 6);
|
||||
bool fail, const char *fmt, ...) pg_attribute_printf(5, 6);
|
||||
static char *get_connect_string(const char *servername);
|
||||
static char *escape_param_str(const char *str);
|
||||
static void validate_pkattnums(Relation rel,
|
||||
|
|
@ -2793,7 +2793,7 @@ dblink_connstr_check(const char *connstr)
|
|||
*/
|
||||
static void
|
||||
dblink_res_error(PGconn *conn, const char *conname, PGresult *res,
|
||||
bool fail, const char *fmt,...)
|
||||
bool fail, const char *fmt, ...)
|
||||
{
|
||||
int level;
|
||||
char *pg_diag_sqlstate = PQresultErrorField(res, PG_DIAG_SQLSTATE);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
* 744300 instead of 743000 as for "BEST".
|
||||
* - "J" is considered (only) a consonant in DaitchMokotoffSoundex.java
|
||||
* - "Y" is not considered a vowel in DaitchMokotoffSoundex.java
|
||||
*/
|
||||
*/
|
||||
|
||||
#include "postgres.h"
|
||||
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
* The soundex coding chart table is adapted from
|
||||
* https://www.jewishgen.org/InfoFiles/Soundex.html
|
||||
* See daitch_mokotoff_header.pl for details.
|
||||
*/
|
||||
*/
|
||||
|
||||
/* Generated coding chart table */
|
||||
#include "daitch_mokotoff.h"
|
||||
|
|
|
|||
|
|
@ -347,10 +347,10 @@ SetAt(metastring *s, int pos, char c)
|
|||
|
||||
|
||||
/*
|
||||
Caveats: the START value is 0 based
|
||||
*/
|
||||
* Caveats: the START value is 0 based
|
||||
*/
|
||||
static int
|
||||
StringAt(metastring *s, int start, int length,...)
|
||||
StringAt(metastring *s, int start, int length, ...)
|
||||
{
|
||||
char *test;
|
||||
char *pos;
|
||||
|
|
|
|||
|
|
@ -97,9 +97,11 @@ soundex_code(char letter)
|
|||
****************************************************************************/
|
||||
|
||||
|
||||
/* I add modifications to the traditional metaphone algorithm that you
|
||||
might find in books. Define this if you want metaphone to behave
|
||||
traditionally */
|
||||
/*
|
||||
* I add modifications to the traditional metaphone algorithm that you
|
||||
* might find in books. Define this if you want metaphone to behave
|
||||
* traditionally
|
||||
*/
|
||||
#undef USE_TRADITIONAL_METAPHONE
|
||||
|
||||
/* Special encodings */
|
||||
|
|
@ -302,8 +304,10 @@ metaphone(PG_FUNCTION_ARGS)
|
|||
* function (palloc, etc).
|
||||
*/
|
||||
|
||||
/* I suppose I could have been using a character pointer instead of
|
||||
* accessing the array directly... */
|
||||
/*
|
||||
* I suppose I could have been using a character pointer instead of
|
||||
* accessing the array directly...
|
||||
*/
|
||||
|
||||
/* Look at the next letter in the word */
|
||||
#define Next_Letter (pg_ascii_toupper((unsigned char) word[w_idx+1]))
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@
|
|||
/* or: #define MAXNUMELTS 1000000 */
|
||||
|
||||
/*
|
||||
** GiST support methods
|
||||
*/
|
||||
* GiST support methods
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(g_int_consistent);
|
||||
PG_FUNCTION_INFO_V1(g_int_compress);
|
||||
PG_FUNCTION_INFO_V1(g_int_decompress);
|
||||
|
|
@ -38,11 +38,11 @@ PG_FUNCTION_INFO_V1(g_int_options);
|
|||
|
||||
|
||||
/*
|
||||
** The GiST Consistent method for _intments
|
||||
** Should return false if for all data items x below entry,
|
||||
** the predicate x op query == false, where op is the oper
|
||||
** corresponding to strategy in the pg_amop table.
|
||||
*/
|
||||
* The GiST Consistent method for _intments
|
||||
* Should return false if for all data items x below entry,
|
||||
* the predicate x op query == false, where op is the oper
|
||||
* corresponding to strategy in the pg_amop table.
|
||||
*/
|
||||
Datum
|
||||
g_int_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -158,8 +158,8 @@ g_int_union(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** GiST Compress and Decompress methods
|
||||
*/
|
||||
* GiST Compress and Decompress methods
|
||||
*/
|
||||
Datum
|
||||
g_int_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -359,8 +359,8 @@ g_int_decompress(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** The GiST Penalty method for _intments
|
||||
*/
|
||||
* The GiST Penalty method for _intments
|
||||
*/
|
||||
Datum
|
||||
g_int_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -436,9 +436,9 @@ comparecost(const void *a, const void *b)
|
|||
}
|
||||
|
||||
/*
|
||||
** The GiST PickSplit method for _intments
|
||||
** We use Guttman's poly time split algorithm
|
||||
*/
|
||||
* The GiST PickSplit method for _intments
|
||||
* We use Guttman's poly time split algorithm
|
||||
*/
|
||||
Datum
|
||||
g_int_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -96,7 +96,8 @@ _int_same(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(result);
|
||||
}
|
||||
|
||||
/* _int_overlap -- does a overlap b?
|
||||
/*
|
||||
* _int_overlap -- does a overlap b?
|
||||
*/
|
||||
Datum
|
||||
_int_overlap(PG_FUNCTION_ARGS)
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@
|
|||
|
||||
#define GETENTRY(vec,pos) ((GISTTYPE *) DatumGetPointer((vec)->vector[(pos)].key))
|
||||
/*
|
||||
** _intbig methods
|
||||
*/
|
||||
* _intbig methods
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(g_intbig_consistent);
|
||||
PG_FUNCTION_INFO_V1(g_intbig_compress);
|
||||
PG_FUNCTION_INFO_V1(g_intbig_decompress);
|
||||
|
|
|
|||
|
|
@ -933,7 +933,8 @@ _PG_init(void)
|
|||
MarkGUCPrefixReserved("isn");
|
||||
}
|
||||
|
||||
/* isn_out
|
||||
/*
|
||||
* isn_out
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(isn_out);
|
||||
Datum
|
||||
|
|
@ -949,7 +950,8 @@ isn_out(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CSTRING(result);
|
||||
}
|
||||
|
||||
/* ean13_out
|
||||
/*
|
||||
* ean13_out
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(ean13_out);
|
||||
Datum
|
||||
|
|
@ -965,7 +967,8 @@ ean13_out(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CSTRING(result);
|
||||
}
|
||||
|
||||
/* ean13_in
|
||||
/*
|
||||
* ean13_in
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(ean13_in);
|
||||
Datum
|
||||
|
|
@ -979,7 +982,8 @@ ean13_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_EAN13(result);
|
||||
}
|
||||
|
||||
/* isbn_in
|
||||
/*
|
||||
* isbn_in
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(isbn_in);
|
||||
Datum
|
||||
|
|
@ -993,7 +997,8 @@ isbn_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_EAN13(result);
|
||||
}
|
||||
|
||||
/* ismn_in
|
||||
/*
|
||||
* ismn_in
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(ismn_in);
|
||||
Datum
|
||||
|
|
@ -1007,7 +1012,8 @@ ismn_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_EAN13(result);
|
||||
}
|
||||
|
||||
/* issn_in
|
||||
/*
|
||||
* issn_in
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(issn_in);
|
||||
Datum
|
||||
|
|
@ -1021,7 +1027,8 @@ issn_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_EAN13(result);
|
||||
}
|
||||
|
||||
/* upc_in
|
||||
/*
|
||||
* upc_in
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(upc_in);
|
||||
Datum
|
||||
|
|
@ -1035,8 +1042,9 @@ upc_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_EAN13(result);
|
||||
}
|
||||
|
||||
/* casting functions
|
||||
*/
|
||||
/*
|
||||
* casting functions
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(isbn_cast_from_ean13);
|
||||
Datum
|
||||
isbn_cast_from_ean13(PG_FUNCTION_ARGS)
|
||||
|
|
@ -1086,7 +1094,8 @@ upc_cast_from_ean13(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* is_valid - returns false if the "invalid-check-digit-on-input" is set
|
||||
/*
|
||||
* is_valid - returns false if the "invalid-check-digit-on-input" is set
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(is_valid);
|
||||
Datum
|
||||
|
|
@ -1097,7 +1106,8 @@ is_valid(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL((val & 1) == 0);
|
||||
}
|
||||
|
||||
/* make_valid - unsets the "invalid-check-digit-on-input" flag
|
||||
/*
|
||||
* make_valid - unsets the "invalid-check-digit-on-input" flag
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(make_valid);
|
||||
Datum
|
||||
|
|
@ -1109,7 +1119,8 @@ make_valid(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_EAN13(val);
|
||||
}
|
||||
|
||||
/* this function temporarily sets weak input flag
|
||||
/*
|
||||
* this function temporarily sets weak input flag
|
||||
* (to lose the strictness of check digit acceptance)
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(accept_weak_input);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ PG_MODULE_MAGIC_EXT(
|
|||
typedef char *(*PLyObject_AsString_t) (PyObject *plrv);
|
||||
static PLyObject_AsString_t PLyObject_AsString_p;
|
||||
|
||||
typedef void (*PLy_elog_impl_t) (int elevel, const char *fmt,...);
|
||||
typedef void (*PLy_elog_impl_t) (int elevel, const char *fmt, ...);
|
||||
static PLy_elog_impl_t PLy_elog_impl_p;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -741,15 +741,19 @@ _crypt_blowfish_rn(const char *key, const char *setting,
|
|||
output[7 + 22 - 1] = BF_itoa64[(int)
|
||||
BF_atoi64[(int) setting[7 + 22 - 1] - 0x20] & 0x30];
|
||||
|
||||
/* This has to be bug-compatible with the original implementation, so
|
||||
* only encode 23 of the 24 bytes. :-) */
|
||||
/*
|
||||
* This has to be bug-compatible with the original implementation, so
|
||||
* only encode 23 of the 24 bytes. :-)
|
||||
*/
|
||||
BF_swap(data.binary.output, 6);
|
||||
BF_encode(&output[7 + 22], data.binary.output, 23);
|
||||
output[7 + 22 + 31] = '\0';
|
||||
|
||||
/* Overwrite the most obvious sensitive data we have on the stack. Note
|
||||
/*
|
||||
* Overwrite the most obvious sensitive data we have on the stack. Note
|
||||
* that this does not guarantee there's no sensitive data left on the
|
||||
* stack and/or in registers; I'm not aware of portable code that does. */
|
||||
* stack and/or in registers; I'm not aware of portable code that does.
|
||||
*/
|
||||
px_memset(&data, 0, sizeof(data));
|
||||
|
||||
return output;
|
||||
|
|
|
|||
|
|
@ -45,8 +45,10 @@ _crypt_gensalt_extended_rn(unsigned long count,
|
|||
{
|
||||
unsigned long value;
|
||||
|
||||
/* Even iteration counts make it easier to detect weak DES keys from a look
|
||||
* at the hash, so they should be avoided */
|
||||
/*
|
||||
* Even iteration counts make it easier to detect weak DES keys from a look
|
||||
* at the hash, so they should be avoided
|
||||
*/
|
||||
if (size < 3 || output_size < 1 + 4 + 4 + 1 ||
|
||||
(count && (count > 0xffffff || !(count & 1))))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ px_set_debug_handler(void (*handler) (const char *))
|
|||
}
|
||||
|
||||
void
|
||||
px_debug(const char *fmt,...)
|
||||
px_debug(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ bool CheckFIPSMode(void);
|
|||
void CheckBuiltinCryptoMode(void);
|
||||
|
||||
#ifdef PX_DEBUG
|
||||
void px_debug(const char *fmt,...) pg_attribute_printf(1, 2);
|
||||
void px_debug(const char *fmt, ...) pg_attribute_printf(1, 2);
|
||||
#else
|
||||
#define px_debug(...)
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -5593,7 +5593,7 @@ postgresImportForeignStatistics(Relation relation, List *va_cols, int elevel)
|
|||
const char *relname = NULL;
|
||||
ForeignTable *table;
|
||||
ForeignServer *server;
|
||||
RemoteStatsResults remstats = {.rel = NULL,.att = NULL};
|
||||
RemoteStatsResults remstats = {.rel = NULL, .att = NULL};
|
||||
RemoteAttributeMapping *remattrmap = NULL;
|
||||
int attrcnt = 0;
|
||||
bool restore_stats = false;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
/*
|
||||
* contrib/seg/seg.c
|
||||
*
|
||||
******************************************************************************
|
||||
This file contains routines that can be bound to a Postgres backend and
|
||||
called by the backend in the process of processing queries. The calling
|
||||
format for these routines is dictated by Postgres architecture.
|
||||
******************************************************************************/
|
||||
*
|
||||
* This file contains routines that can be bound to a Postgres backend and
|
||||
* called by the backend in the process of processing queries. The calling
|
||||
* format for these routines is dictated by Postgres architecture.
|
||||
*/
|
||||
|
||||
#include "postgres.h"
|
||||
|
||||
|
|
@ -24,9 +24,9 @@
|
|||
|
||||
|
||||
/*
|
||||
#define GIST_DEBUG
|
||||
#define GIST_QUERY_DEBUG
|
||||
*/
|
||||
* #define GIST_DEBUG
|
||||
* #define GIST_QUERY_DEBUG
|
||||
*/
|
||||
|
||||
PG_MODULE_MAGIC_EXT(
|
||||
.name = "seg",
|
||||
|
|
@ -44,8 +44,8 @@ typedef struct
|
|||
} gseg_picksplit_item;
|
||||
|
||||
/*
|
||||
** Input/Output routines
|
||||
*/
|
||||
* Input/Output routines
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(seg_in);
|
||||
PG_FUNCTION_INFO_V1(seg_out);
|
||||
PG_FUNCTION_INFO_V1(seg_size);
|
||||
|
|
@ -54,8 +54,8 @@ PG_FUNCTION_INFO_V1(seg_upper);
|
|||
PG_FUNCTION_INFO_V1(seg_center);
|
||||
|
||||
/*
|
||||
** GiST support methods
|
||||
*/
|
||||
* GiST support methods
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gseg_consistent);
|
||||
PG_FUNCTION_INFO_V1(gseg_compress);
|
||||
PG_FUNCTION_INFO_V1(gseg_decompress);
|
||||
|
|
@ -69,8 +69,8 @@ static Datum gseg_binary_union(Datum r1, Datum r2, int *sizep);
|
|||
|
||||
|
||||
/*
|
||||
** R-tree support functions
|
||||
*/
|
||||
* R-tree support functions
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(seg_same);
|
||||
PG_FUNCTION_INFO_V1(seg_contains);
|
||||
PG_FUNCTION_INFO_V1(seg_contained);
|
||||
|
|
@ -84,8 +84,8 @@ PG_FUNCTION_INFO_V1(seg_inter);
|
|||
static void rt_seg_size(SEG *a, float *size);
|
||||
|
||||
/*
|
||||
** Various operators
|
||||
*/
|
||||
* Various operators
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(seg_cmp);
|
||||
PG_FUNCTION_INFO_V1(seg_lt);
|
||||
PG_FUNCTION_INFO_V1(seg_le);
|
||||
|
|
@ -94,8 +94,8 @@ PG_FUNCTION_INFO_V1(seg_ge);
|
|||
PG_FUNCTION_INFO_V1(seg_different);
|
||||
|
||||
/*
|
||||
** Auxiliary functions
|
||||
*/
|
||||
* Auxiliary functions
|
||||
*/
|
||||
static int restore(char *result, float val, int n);
|
||||
|
||||
|
||||
|
|
@ -191,11 +191,11 @@ seg_upper(PG_FUNCTION_ARGS)
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
** The GiST Consistent method for segments
|
||||
** Should return false if for all data items x below entry,
|
||||
** the predicate x op query == false, where op is the oper
|
||||
** corresponding to strategy in the pg_amop table.
|
||||
*/
|
||||
* The GiST Consistent method for segments
|
||||
* Should return false if for all data items x below entry,
|
||||
* the predicate x op query == false, where op is the oper
|
||||
* corresponding to strategy in the pg_amop table.
|
||||
*/
|
||||
Datum
|
||||
gseg_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -221,9 +221,9 @@ gseg_consistent(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** The GiST Union method for segments
|
||||
** returns the minimal bounding seg that encloses all the entries in entryvec
|
||||
*/
|
||||
* The GiST Union method for segments
|
||||
* returns the minimal bounding seg that encloses all the entries in entryvec
|
||||
*/
|
||||
Datum
|
||||
gseg_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -252,9 +252,9 @@ gseg_union(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** GiST Compress and Decompress methods for segments
|
||||
** do not do anything.
|
||||
*/
|
||||
* GiST Compress and Decompress methods for segments
|
||||
* do not do anything.
|
||||
*/
|
||||
Datum
|
||||
gseg_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -268,9 +268,9 @@ gseg_decompress(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** The GiST Penalty method for segments
|
||||
** As in the R-tree paper, we use change in area as our penalty metric
|
||||
*/
|
||||
* The GiST Penalty method for segments
|
||||
* As in the R-tree paper, we use change in area as our penalty metric
|
||||
*/
|
||||
Datum
|
||||
gseg_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -411,8 +411,8 @@ gseg_picksplit(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** Equality methods
|
||||
*/
|
||||
* Equality methods
|
||||
*/
|
||||
Datum
|
||||
gseg_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -431,8 +431,8 @@ gseg_same(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
** SUPPORT ROUTINES
|
||||
*/
|
||||
* SUPPORT ROUTINES
|
||||
*/
|
||||
static Datum
|
||||
gseg_leaf_consistent(Datum key, Datum query, StrategyNumber strategy)
|
||||
{
|
||||
|
|
@ -570,7 +570,8 @@ seg_same(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(cmp == 0);
|
||||
}
|
||||
|
||||
/* seg_overlap -- does a overlap b?
|
||||
/*
|
||||
* seg_overlap -- does a overlap b?
|
||||
*/
|
||||
Datum
|
||||
seg_overlap(PG_FUNCTION_ARGS)
|
||||
|
|
@ -582,7 +583,8 @@ seg_overlap(PG_FUNCTION_ARGS)
|
|||
((b->upper >= a->upper) && (b->lower <= a->upper)));
|
||||
}
|
||||
|
||||
/* seg_over_left -- is the right edge of (a) located at or left of the right edge of (b)?
|
||||
/*
|
||||
* seg_over_left -- is the right edge of (a) located at or left of the right edge of (b)?
|
||||
*/
|
||||
Datum
|
||||
seg_over_left(PG_FUNCTION_ARGS)
|
||||
|
|
@ -593,7 +595,8 @@ seg_over_left(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(a->upper <= b->upper);
|
||||
}
|
||||
|
||||
/* seg_left -- is (a) entirely on the left of (b)?
|
||||
/*
|
||||
* seg_left -- is (a) entirely on the left of (b)?
|
||||
*/
|
||||
Datum
|
||||
seg_left(PG_FUNCTION_ARGS)
|
||||
|
|
@ -604,7 +607,8 @@ seg_left(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(a->upper < b->lower);
|
||||
}
|
||||
|
||||
/* seg_right -- is (a) entirely on the right of (b)?
|
||||
/*
|
||||
* seg_right -- is (a) entirely on the right of (b)?
|
||||
*/
|
||||
Datum
|
||||
seg_right(PG_FUNCTION_ARGS)
|
||||
|
|
@ -615,7 +619,8 @@ seg_right(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(a->lower > b->upper);
|
||||
}
|
||||
|
||||
/* seg_over_right -- is the left edge of (a) located at or right of the left edge of (b)?
|
||||
/*
|
||||
* seg_over_right -- is the left edge of (a) located at or right of the left edge of (b)?
|
||||
*/
|
||||
Datum
|
||||
seg_over_right(PG_FUNCTION_ARGS)
|
||||
|
|
@ -1059,10 +1064,11 @@ restore(char *result, float val, int n)
|
|||
|
||||
|
||||
/*
|
||||
** Miscellany
|
||||
*/
|
||||
* Miscellany
|
||||
*/
|
||||
|
||||
/* find out the number of significant digits in a string representing
|
||||
/*
|
||||
* find out the number of significant digits in a string representing
|
||||
* a floating point number
|
||||
*/
|
||||
int
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
/*
|
||||
moddatetime.c
|
||||
|
||||
contrib/spi/moddatetime.c
|
||||
|
||||
What is this?
|
||||
It is a function to be called from a trigger for the purpose of updating
|
||||
a modification datetime stamp in a record when that record is UPDATEd.
|
||||
|
||||
Credits
|
||||
This is 95%+ based on autoinc.c, which I used as a starting point as I do
|
||||
not really know what I am doing. I also had help from
|
||||
Jan Wieck <jwieck@debis.com> who told me about the timestamp_in("now") function.
|
||||
OH, me, I'm Terry Mackintosh <terry@terrym.com>
|
||||
*/
|
||||
* moddatetime.c
|
||||
*
|
||||
* contrib/spi/moddatetime.c
|
||||
*
|
||||
* What is this?
|
||||
* It is a function to be called from a trigger for the purpose of updating
|
||||
* a modification datetime stamp in a record when that record is UPDATEd.
|
||||
*
|
||||
* Credits
|
||||
* This is 95%+ based on autoinc.c, which I used as a starting point as I do
|
||||
* not really know what I am doing. I also had help from
|
||||
* Jan Wieck <jwieck@debis.com> who told me about the timestamp_in("now") function.
|
||||
* OH, me, I'm Terry Mackintosh <terry@terrym.com>
|
||||
*/
|
||||
#include "postgres.h"
|
||||
|
||||
#include "access/htup_details.h"
|
||||
|
|
|
|||
|
|
@ -232,7 +232,8 @@ pgxmlNodeSetToText(xmlNodeSetPtr nodeset,
|
|||
}
|
||||
|
||||
|
||||
/* Translate a PostgreSQL "varlena" -i.e. a variable length parameter
|
||||
/*
|
||||
* Translate a PostgreSQL "varlena" -i.e. a variable length parameter
|
||||
* into the libxml2 representation
|
||||
*/
|
||||
static xmlChar *
|
||||
|
|
|
|||
|
|
@ -2405,7 +2405,7 @@ _gin_parse_tuple_key(GinTuple *a)
|
|||
}
|
||||
|
||||
/*
|
||||
* _gin_parse_tuple_items
|
||||
* _gin_parse_tuple_items
|
||||
* Return a pointer to a palloc'd array of decompressed TID array.
|
||||
*/
|
||||
static ItemPointer
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ identify_opfamily_groups(CatCList *oprlist, CatCList *proclist)
|
|||
*/
|
||||
bool
|
||||
check_amproc_signature(Oid funcid, Oid restype, bool exact,
|
||||
int minargs, int maxargs,...)
|
||||
int minargs, int maxargs, ...)
|
||||
{
|
||||
bool result = true;
|
||||
HeapTuple tp;
|
||||
|
|
|
|||
|
|
@ -3339,7 +3339,7 @@ _bt_skiparray_set_isnull(Relation rel, ScanKey skey, BTArrayKeyInfo *array)
|
|||
* compare the value that they're searching for to a binary search pivot.
|
||||
* However, unlike _bt_compare, this function's "tuple argument" comes first,
|
||||
* while its "array/scankey argument" comes second.
|
||||
*/
|
||||
*/
|
||||
static inline int32
|
||||
_bt_compare_array_skey(FmgrInfo *orderproc,
|
||||
Datum tupdatum, bool tupnull,
|
||||
|
|
|
|||
|
|
@ -1200,7 +1200,7 @@ ReserveXLogInsertLocation(int size, XLogRecPtr *StartPos, XLogRecPtr *EndPos,
|
|||
* *EndPos value. However, if we are already at the beginning of the current
|
||||
* segment, *StartPos and *EndPos are set to the current location without
|
||||
* reserving any space, and the function returns false.
|
||||
*/
|
||||
*/
|
||||
static bool
|
||||
ReserveXLogSwitch(XLogRecPtr *StartPos, XLogRecPtr *EndPos, XLogRecPtr *PrevPtr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
#include "common/logging.h"
|
||||
#endif
|
||||
|
||||
static void report_invalid_record(XLogReaderState *state, const char *fmt,...)
|
||||
static void report_invalid_record(XLogReaderState *state, const char *fmt, ...)
|
||||
pg_attribute_printf(2, 3);
|
||||
static void allocate_recordbuf(XLogReaderState *state, uint32 reclength);
|
||||
static int ReadPageInternal(XLogReaderState *state, XLogRecPtr pageptr,
|
||||
|
|
@ -70,7 +70,7 @@ static void WALOpenSegmentInit(WALOpenSegment *seg, WALSegmentContext *segcxt,
|
|||
* the current record being read.
|
||||
*/
|
||||
static void
|
||||
report_invalid_record(XLogReaderState *state, const char *fmt,...)
|
||||
report_invalid_record(XLogReaderState *state, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ static void manifest_process_wal_range(JsonManifestParseContext *context,
|
|||
XLogRecPtr start_lsn,
|
||||
XLogRecPtr end_lsn);
|
||||
pg_noreturn static void manifest_report_error(JsonManifestParseContext *context,
|
||||
const char *fmt,...)
|
||||
const char *fmt, ...)
|
||||
pg_attribute_printf(2, 3);
|
||||
static int compare_block_numbers(const void *a, const void *b);
|
||||
|
||||
|
|
@ -1018,7 +1018,7 @@ manifest_process_wal_range(JsonManifestParseContext *context,
|
|||
* manifest.
|
||||
*/
|
||||
static void
|
||||
manifest_report_error(JsonManifestParseContext *context, const char *fmt,...)
|
||||
manifest_report_error(JsonManifestParseContext *context, const char *fmt, ...)
|
||||
{
|
||||
StringInfoData errbuf;
|
||||
|
||||
|
|
|
|||
|
|
@ -319,7 +319,7 @@ WriteWalSummary(void *wal_summary_io, void *data, int length)
|
|||
* Error-reporting callback for use with CreateBlockRefTableReader.
|
||||
*/
|
||||
void
|
||||
ReportWalSummaryError(void *callback_arg, char *fmt,...)
|
||||
ReportWalSummaryError(void *callback_arg, char *fmt, ...)
|
||||
{
|
||||
StringInfoData buf;
|
||||
va_list ap;
|
||||
|
|
|
|||
|
|
@ -3057,7 +3057,8 @@ pg_aclmask(ObjectType objtype, Oid object_oid, AttrNumber attnum, Oid roleid,
|
|||
}
|
||||
|
||||
|
||||
/* ****************************************************************
|
||||
/*
|
||||
* ****************************************************************
|
||||
* Exported routines for examining a user's privileges for various objects
|
||||
*
|
||||
* See aclmask() for a description of the common API for these functions.
|
||||
|
|
|
|||
|
|
@ -263,7 +263,8 @@ SystemAttributeByName(const char *attname)
|
|||
|
||||
/* ----------------------------------------------------------------
|
||||
* XXX END OF UGLY HARD CODED BADNESS XXX
|
||||
* ---------------------------------------------------------------- */
|
||||
* ----------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1880,7 +1880,8 @@ ind_fetch_func(VacAttrStatsP stats, int rownum, bool *isNull)
|
|||
}
|
||||
|
||||
|
||||
/*==========================================================================
|
||||
/*
|
||||
* ==========================================================================
|
||||
*
|
||||
* Code below this point represents the "standard" type-specific statistics
|
||||
* analysis algorithms. This code can be replaced on a per-data-type basis
|
||||
|
|
|
|||
|
|
@ -1327,7 +1327,7 @@ DoCopyTo(CopyToState cstate)
|
|||
* root_rel can be set to the root table of rel if rel is a partition
|
||||
* table so that we can send tuples in root_rel's rowtype, which might
|
||||
* differ from individual partitions.
|
||||
*/
|
||||
*/
|
||||
static void
|
||||
CopyRelationTo(CopyToState cstate, Relation rel, Relation root_rel, uint64 *processed)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -13903,7 +13903,7 @@ transformFkeyCheckAttrs(Relation pkrel,
|
|||
*
|
||||
* Wrapper around find_coercion_pathway() for ATAddForeignKeyConstraint().
|
||||
* Caller has equal regard for binary coercibility and for an exact match.
|
||||
*/
|
||||
*/
|
||||
static CoercionPathType
|
||||
findFkeyCast(Oid targetTypeId, Oid sourceTypeId, Oid *funcid)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/* INTERFACE ROUTINES
|
||||
/*
|
||||
* INTERFACE ROUTINES
|
||||
* ExecInitAppend - initialize the append node
|
||||
* ExecAppend - retrieve the next tuple from the node
|
||||
* ExecEndAppend - shut down the append node
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/* INTERFACE ROUTINES
|
||||
/*
|
||||
* INTERFACE ROUTINES
|
||||
* ExecInitBitmapAnd - initialize the BitmapAnd node
|
||||
* MultiExecBitmapAnd - retrieve the result bitmap from the node
|
||||
* ExecEndBitmapAnd - shut down the BitmapAnd node
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/* INTERFACE ROUTINES
|
||||
/*
|
||||
* INTERFACE ROUTINES
|
||||
* ExecInitBitmapOr - initialize the BitmapOr node
|
||||
* MultiExecBitmapOr - retrieve the result bitmap from the node
|
||||
* ExecEndBitmapOr - shut down the BitmapOr node
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/* INTERFACE ROUTINES
|
||||
/*
|
||||
* INTERFACE ROUTINES
|
||||
* ExecInitMergeAppend - initialize the MergeAppend node
|
||||
* ExecMergeAppend - retrieve the next tuple from the node
|
||||
* ExecEndMergeAppend - shut down the MergeAppend node
|
||||
|
|
|
|||
|
|
@ -12,7 +12,8 @@
|
|||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/* INTERFACE ROUTINES
|
||||
/*
|
||||
* INTERFACE ROUTINES
|
||||
* ExecInitModifyTable - initialize the ModifyTable node
|
||||
* ExecModifyTable - retrieve the next tuple from the node
|
||||
* ExecEndModifyTable - shut down the ModifyTable node
|
||||
|
|
|
|||
|
|
@ -3336,7 +3336,8 @@ window_gettupleslot(WindowObject winobj, int64 pos, TupleTableSlot *slot)
|
|||
return true;
|
||||
}
|
||||
|
||||
/* gettuple_eval_partition
|
||||
/*
|
||||
* gettuple_eval_partition
|
||||
* get tuple in a partition and evaluate the window function's argument
|
||||
* expression on it.
|
||||
*/
|
||||
|
|
@ -3527,7 +3528,7 @@ init_notnull_info(WindowObject winobj, WindowStatePerFunc perfuncstate)
|
|||
* expand notnull_info if necessary.
|
||||
* pos: not null info position
|
||||
* argno: argument number
|
||||
*/
|
||||
*/
|
||||
static void
|
||||
grow_notnull_info(WindowObject winobj, int64 pos, int argno)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ struct RBTree
|
|||
|
||||
static RBTNode sentinel =
|
||||
{
|
||||
.color = RBTBLACK,.left = RBTNIL,.right = RBTNIL,.parent = NULL
|
||||
.color = RBTBLACK, .left = RBTNIL, .right = RBTNIL, .parent = NULL
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ typedef struct
|
|||
{
|
||||
uint32 status;
|
||||
const char *hostname;
|
||||
} HostCacheEntry;
|
||||
} HostCacheEntry;
|
||||
static uint32 host_cache_pointer(const char *key);
|
||||
#define SH_PREFIX host_cache
|
||||
#define SH_ELEMENT_TYPE HostCacheEntry
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ pq_beginmessage(StringInfo buf, char msgtype)
|
|||
}
|
||||
|
||||
/* --------------------------------
|
||||
|
||||
*
|
||||
* pq_beginmessage_reuse - initialize for sending a message, reuse buffer
|
||||
*
|
||||
* This requires the buffer to be allocated in a sufficiently long-lived
|
||||
|
|
|
|||
|
|
@ -10,12 +10,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* this is adopted from D. Whitley's Genitor algorithm */
|
||||
|
|
@ -36,7 +37,8 @@
|
|||
#include "postgres.h"
|
||||
#include "optimizer/geqo_copy.h"
|
||||
|
||||
/* geqo_copy
|
||||
/*
|
||||
* geqo_copy
|
||||
*
|
||||
* copies one gene to another
|
||||
*
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* the cx algorithm is adopted from Genitor : */
|
||||
|
|
@ -42,7 +43,8 @@
|
|||
#include "optimizer/geqo_random.h"
|
||||
#include "optimizer/geqo_recombination.h"
|
||||
|
||||
/* cx
|
||||
/*
|
||||
* cx
|
||||
*
|
||||
* cycle crossover
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* the edge recombination algorithm is adopted from Genitor : */
|
||||
|
|
@ -46,7 +47,8 @@ static Gene gimme_gene(PlannerInfo *root, Edge edge, Edge *edge_table);
|
|||
static Gene edge_failure(PlannerInfo *root, Gene *gene, int index, Edge *edge_table, int num_gene);
|
||||
|
||||
|
||||
/* alloc_edge_table
|
||||
/*
|
||||
* alloc_edge_table
|
||||
*
|
||||
* allocate memory for edge table
|
||||
*
|
||||
|
|
@ -67,7 +69,8 @@ alloc_edge_table(PlannerInfo *root, int num_gene)
|
|||
return edge_table;
|
||||
}
|
||||
|
||||
/* free_edge_table
|
||||
/*
|
||||
* free_edge_table
|
||||
*
|
||||
* deallocate memory of edge table
|
||||
*
|
||||
|
|
@ -78,7 +81,8 @@ free_edge_table(PlannerInfo *root, Edge *edge_table)
|
|||
pfree(edge_table);
|
||||
}
|
||||
|
||||
/* gimme_edge_table
|
||||
/*
|
||||
* gimme_edge_table
|
||||
*
|
||||
* fills a data structure which represents the set of explicit
|
||||
* edges between points in the (2) input genes
|
||||
|
|
@ -136,7 +140,8 @@ gimme_edge_table(PlannerInfo *root, Gene *tour1, Gene *tour2,
|
|||
return ((float) (edge_total * 2) / (float) num_gene);
|
||||
}
|
||||
|
||||
/* gimme_edge
|
||||
/*
|
||||
* gimme_edge
|
||||
*
|
||||
* registers edge from city1 to city2 in input edge table
|
||||
*
|
||||
|
|
@ -184,7 +189,8 @@ gimme_edge(PlannerInfo *root, Gene gene1, Gene gene2, Edge *edge_table)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* gimme_tour
|
||||
/*
|
||||
* gimme_tour
|
||||
*
|
||||
* creates a new tour using edges from the edge table.
|
||||
* priority is given to "shared" edges (i.e. edges which
|
||||
|
|
@ -229,7 +235,8 @@ gimme_tour(PlannerInfo *root, Edge *edge_table, Gene *new_gene, int num_gene)
|
|||
return edge_failures;
|
||||
}
|
||||
|
||||
/* remove_gene
|
||||
/*
|
||||
* remove_gene
|
||||
*
|
||||
* removes input gene from edge_table.
|
||||
* input edge is used
|
||||
|
|
@ -272,7 +279,8 @@ remove_gene(PlannerInfo *root, Gene gene, Edge edge, Edge *edge_table)
|
|||
}
|
||||
}
|
||||
|
||||
/* gimme_gene
|
||||
/*
|
||||
* gimme_gene
|
||||
*
|
||||
* priority is given to "shared" edges
|
||||
* (i.e. edges which both genes possess)
|
||||
|
|
@ -363,7 +371,8 @@ gimme_gene(PlannerInfo *root, Edge edge, Edge *edge_table)
|
|||
return 0; /* to keep the compiler quiet */
|
||||
}
|
||||
|
||||
/* edge_failure
|
||||
/*
|
||||
* edge_failure
|
||||
*
|
||||
* routine for handling edge failure
|
||||
*
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
#include "postgres.h"
|
||||
|
|
|
|||
|
|
@ -12,12 +12,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* -- parts of this are adapted from D. Whitley's Genitor algorithm -- */
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
#include "postgres.h"
|
||||
|
|
@ -51,7 +52,8 @@ avg_pool(Pool *pool)
|
|||
return cumulative;
|
||||
}
|
||||
|
||||
/* print_pool
|
||||
/*
|
||||
* print_pool
|
||||
*/
|
||||
void
|
||||
print_pool(FILE *fp, Pool *pool, int start, int stop)
|
||||
|
|
@ -83,7 +85,8 @@ print_pool(FILE *fp, Pool *pool, int start, int stop)
|
|||
fflush(fp);
|
||||
}
|
||||
|
||||
/* print_gen
|
||||
/*
|
||||
* print_gen
|
||||
*
|
||||
* printout for chromosome: best, worst, mean, average
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -9,12 +9,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* this is adopted from Genitor : */
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* the ox algorithm is adopted from Genitor : */
|
||||
|
|
@ -41,7 +42,8 @@
|
|||
#include "optimizer/geqo_random.h"
|
||||
#include "optimizer/geqo_recombination.h"
|
||||
|
||||
/* ox1
|
||||
/*
|
||||
* ox1
|
||||
*
|
||||
* position crossover
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* the ox algorithm is adopted from Genitor : */
|
||||
|
|
@ -41,7 +42,8 @@
|
|||
#include "optimizer/geqo_random.h"
|
||||
#include "optimizer/geqo_recombination.h"
|
||||
|
||||
/* ox2
|
||||
/*
|
||||
* ox2
|
||||
*
|
||||
* position crossover
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* the pmx algorithm is adopted from Genitor : */
|
||||
|
|
@ -41,7 +42,8 @@
|
|||
#include "optimizer/geqo_random.h"
|
||||
#include "optimizer/geqo_recombination.h"
|
||||
|
||||
/* pmx
|
||||
/*
|
||||
* pmx
|
||||
*
|
||||
* partially matched crossover
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* -- parts of this are adapted from D. Whitley's Genitor algorithm -- */
|
||||
|
|
@ -154,7 +155,8 @@ compare(const void *arg1, const void *arg2)
|
|||
return -1;
|
||||
}
|
||||
|
||||
/* alloc_chromo
|
||||
/*
|
||||
* alloc_chromo
|
||||
* allocates a chromosome and string space
|
||||
*/
|
||||
Chromosome *
|
||||
|
|
@ -168,7 +170,8 @@ alloc_chromo(PlannerInfo *root, int string_length)
|
|||
return chromo;
|
||||
}
|
||||
|
||||
/* free_chromo
|
||||
/*
|
||||
* free_chromo
|
||||
* deallocates a chromosome and string space
|
||||
*/
|
||||
void
|
||||
|
|
@ -178,7 +181,8 @@ free_chromo(PlannerInfo *root, Chromosome *chromo)
|
|||
pfree(chromo);
|
||||
}
|
||||
|
||||
/* spread_chromo
|
||||
/*
|
||||
* spread_chromo
|
||||
* inserts a new chromosome into the pool, displacing worst gene in pool
|
||||
* assumes best->worst = smallest->largest
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* the px algorithm is adopted from Genitor : */
|
||||
|
|
@ -41,7 +42,8 @@
|
|||
#include "optimizer/geqo_random.h"
|
||||
#include "optimizer/geqo_recombination.h"
|
||||
|
||||
/* px
|
||||
/*
|
||||
* px
|
||||
*
|
||||
* position crossover
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -8,12 +8,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* -- parts of this are adapted from D. Whitley's Genitor algorithm -- */
|
||||
|
|
@ -61,7 +62,8 @@ init_tour(PlannerInfo *root, Gene *tour, int num_gene)
|
|||
/* city table is used in these recombination methods: */
|
||||
#if defined(CX) || defined(PX) || defined(OX1) || defined(OX2)
|
||||
|
||||
/* alloc_city_table
|
||||
/*
|
||||
* alloc_city_table
|
||||
*
|
||||
* allocate memory for city table
|
||||
*/
|
||||
|
|
@ -79,7 +81,8 @@ alloc_city_table(PlannerInfo *root, int num_gene)
|
|||
return city_table;
|
||||
}
|
||||
|
||||
/* free_city_table
|
||||
/*
|
||||
* free_city_table
|
||||
*
|
||||
* deallocate memory of city table
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,12 +11,13 @@
|
|||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* contributed by:
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* Martin Utesch * Institute of Automatic Control *
|
||||
= = University of Mining and Technology =
|
||||
* utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
/*
|
||||
* contributed by:
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
* * Martin Utesch * Institute of Automatic Control *
|
||||
* = = University of Mining and Technology =
|
||||
* * utesch@aut.tu-freiberg.de * Freiberg, Germany *
|
||||
* =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
|
||||
*/
|
||||
|
||||
/* this is adopted from D. Whitley's Genitor algorithm */
|
||||
|
|
|
|||
|
|
@ -301,7 +301,8 @@ extractRemainingColumns(ParseState *pstate,
|
|||
return colcount;
|
||||
}
|
||||
|
||||
/* transformJoinUsingClause()
|
||||
/*
|
||||
* transformJoinUsingClause()
|
||||
* Build a complete ON clause from a partially-transformed USING list.
|
||||
* We are given lists of nodes representing left and right match columns.
|
||||
* Result is a transformed qualification expression.
|
||||
|
|
@ -361,7 +362,8 @@ transformJoinUsingClause(ParseState *pstate,
|
|||
return result;
|
||||
}
|
||||
|
||||
/* transformJoinOnClause()
|
||||
/*
|
||||
* transformJoinOnClause()
|
||||
* Transform the qual conditions for JOIN/ON.
|
||||
* Result is a transformed qualification expression.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2968,7 +2968,8 @@ check_valid_internal_signature(Oid ret_type,
|
|||
}
|
||||
|
||||
|
||||
/* TypeCategory()
|
||||
/*
|
||||
* TypeCategory()
|
||||
* Assign a category to the specified type OID.
|
||||
*
|
||||
* NB: this must not return TYPCATEGORY_INVALID.
|
||||
|
|
@ -2985,7 +2986,8 @@ TypeCategory(Oid type)
|
|||
}
|
||||
|
||||
|
||||
/* IsPreferredType()
|
||||
/*
|
||||
* IsPreferredType()
|
||||
* Check if this type is a preferred type for the given category.
|
||||
*
|
||||
* If category is TYPCATEGORY_INVALID, then we'll return true for preferred
|
||||
|
|
@ -3006,7 +3008,8 @@ IsPreferredType(TYPCATEGORY category, Oid type)
|
|||
}
|
||||
|
||||
|
||||
/* IsBinaryCoercible()
|
||||
/*
|
||||
* IsBinaryCoercible()
|
||||
* Check if srctype is binary-coercible to targettype.
|
||||
*
|
||||
* This notion allows us to cheat and directly exchange values without
|
||||
|
|
@ -3035,7 +3038,8 @@ IsBinaryCoercible(Oid srctype, Oid targettype)
|
|||
return IsBinaryCoercibleWithCast(srctype, targettype, &castoid);
|
||||
}
|
||||
|
||||
/* IsBinaryCoercibleWithCast()
|
||||
/*
|
||||
* IsBinaryCoercibleWithCast()
|
||||
* Check if srctype is binary-coercible to targettype.
|
||||
*
|
||||
* This variant also returns the OID of the pg_cast entry if one is involved.
|
||||
|
|
|
|||
|
|
@ -1019,7 +1019,8 @@ func_lookup_failure_details(int fgc_flags, List *argnames, bool proc_call)
|
|||
}
|
||||
|
||||
|
||||
/* func_match_argtypes()
|
||||
/*
|
||||
* func_match_argtypes()
|
||||
*
|
||||
* Given a list of candidate functions (having the right name and number
|
||||
* of arguments) and an array of input datatype OIDs, produce a shortlist of
|
||||
|
|
@ -1062,7 +1063,8 @@ func_match_argtypes(int nargs,
|
|||
} /* func_match_argtypes() */
|
||||
|
||||
|
||||
/* func_select_candidate()
|
||||
/*
|
||||
* func_select_candidate()
|
||||
* Given the input argtype array and more than one candidate
|
||||
* for the function, attempt to resolve the conflict.
|
||||
*
|
||||
|
|
@ -1473,7 +1475,8 @@ func_select_candidate(int nargs,
|
|||
} /* func_select_candidate() */
|
||||
|
||||
|
||||
/* func_get_detail()
|
||||
/*
|
||||
* func_get_detail()
|
||||
*
|
||||
* Find the named function in the system catalogs.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -253,7 +253,8 @@ oprfuncid(Operator op)
|
|||
}
|
||||
|
||||
|
||||
/* binary_oper_exact()
|
||||
/*
|
||||
* binary_oper_exact()
|
||||
* Check for an "exact" match to the specified operand types.
|
||||
*
|
||||
* If one operand is an unknown literal, assume it should be taken to be
|
||||
|
|
@ -300,7 +301,8 @@ binary_oper_exact(List *opname, Oid arg1, Oid arg2)
|
|||
}
|
||||
|
||||
|
||||
/* oper_select_candidate()
|
||||
/*
|
||||
* oper_select_candidate()
|
||||
* Given the input argtype array and one or more candidates
|
||||
* for the operator, attempt to resolve the conflict.
|
||||
*
|
||||
|
|
@ -355,7 +357,8 @@ oper_select_candidate(int nargs,
|
|||
}
|
||||
|
||||
|
||||
/* oper() -- search for a binary operator
|
||||
/*
|
||||
* oper() -- search for a binary operator
|
||||
* Given operator name, types of arg1 and arg2, return oper struct.
|
||||
*
|
||||
* IMPORTANT: the returned operator (if any) is only promised to be
|
||||
|
|
@ -444,7 +447,8 @@ oper(ParseState *pstate, List *opname, Oid ltypeId, Oid rtypeId,
|
|||
return (Operator) tup;
|
||||
}
|
||||
|
||||
/* compatible_oper()
|
||||
/*
|
||||
* compatible_oper()
|
||||
* given an opname and input datatypes, find a compatible binary operator
|
||||
*
|
||||
* This is tighter than oper() because it will not return an operator that
|
||||
|
|
@ -482,7 +486,8 @@ compatible_oper(ParseState *pstate, List *op, Oid arg1, Oid arg2,
|
|||
return (Operator) NULL;
|
||||
}
|
||||
|
||||
/* compatible_oper_opid() -- get OID of a binary operator
|
||||
/*
|
||||
* compatible_oper_opid() -- get OID of a binary operator
|
||||
*
|
||||
* This is a convenience routine that extracts only the operator OID
|
||||
* from the result of compatible_oper(). InvalidOid is returned if the
|
||||
|
|
@ -505,7 +510,8 @@ compatible_oper_opid(List *op, Oid arg1, Oid arg2, bool noError)
|
|||
}
|
||||
|
||||
|
||||
/* left_oper() -- search for a unary left operator (prefix operator)
|
||||
/*
|
||||
* left_oper() -- search for a unary left operator (prefix operator)
|
||||
* Given operator name and type of arg, return oper struct.
|
||||
*
|
||||
* IMPORTANT: the returned operator (if any) is only promised to be
|
||||
|
|
|
|||
|
|
@ -3693,7 +3693,8 @@ attnameAttNum(Relation rd, const char *attname, bool sysColOK)
|
|||
return InvalidAttrNumber;
|
||||
}
|
||||
|
||||
/* specialAttNum()
|
||||
/*
|
||||
* specialAttNum()
|
||||
*
|
||||
* Check attribute name to see if it is "special", e.g. "xmin".
|
||||
* - thomas 2000-02-07
|
||||
|
|
|
|||
|
|
@ -5713,7 +5713,7 @@ check_parent_values_in_new_partitions(Relation parent,
|
|||
* 3. In case new partitions don't contain the DEFAULT partition and the
|
||||
* partitioned table does not have the DEFAULT partition, the following
|
||||
* should be true: the sum of the bounds of new partitions should be equal
|
||||
& to the bound of the split partition.
|
||||
* to the bound of the split partition.
|
||||
*
|
||||
* parent: partitioned table
|
||||
* splitPartOid: split partition Oid
|
||||
|
|
|
|||
|
|
@ -375,8 +375,10 @@ pg_signal_thread(LPVOID param)
|
|||
}
|
||||
|
||||
|
||||
/* Console control handler will execute on a thread created
|
||||
by the OS at the time of invocation */
|
||||
/*
|
||||
* Console control handler will execute on a thread created
|
||||
* by the OS at the time of invocation
|
||||
*/
|
||||
static BOOL WINAPI
|
||||
pg_console_handler(DWORD dwCtrlType)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -228,11 +228,11 @@ typedef struct ParallelApplyWorkerEntry
|
|||
static HTAB *ParallelApplyTxnHash = NULL;
|
||||
|
||||
/*
|
||||
* A list (pool) of active parallel apply workers. The information for
|
||||
* the new worker is added to the list after successfully launching it. The
|
||||
* list entry is removed if there are already enough workers in the worker
|
||||
* pool at the end of the transaction. For more information about the worker
|
||||
* pool, see comments atop this file.
|
||||
* A list (pool) of active parallel apply workers. The information for
|
||||
* the new worker is added to the list after successfully launching it. The
|
||||
* list entry is removed if there are already enough workers in the worker
|
||||
* pool at the end of the transaction. For more information about the worker
|
||||
* pool, see comments atop this file.
|
||||
*/
|
||||
static List *ParallelApplyWorkerPool = NIL;
|
||||
|
||||
|
|
|
|||
|
|
@ -1180,7 +1180,7 @@ AtEOXact_ApplyLauncher(bool isCommit)
|
|||
* This is used to send launcher signal to stop sleeping and process the
|
||||
* subscriptions when current transaction commits. Should be used when new
|
||||
* tuple was added to the pg_subscription catalog.
|
||||
*/
|
||||
*/
|
||||
void
|
||||
ApplyLauncherWakeupAtCommit(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ pg_logical_slot_get_changes_guts(FunctionCallInfo fcinfo, bool confirm, bool bin
|
|||
* what we need.
|
||||
*/
|
||||
if (!binary &&
|
||||
ctx->options.output_type !=OUTPUT_PLUGIN_TEXTUAL_OUTPUT)
|
||||
ctx->options.output_type != OUTPUT_PLUGIN_TEXTUAL_OUTPUT)
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("logical decoding output plugin \"%s\" produces binary output, but function \"%s\" expects textual data",
|
||||
|
|
|
|||
|
|
@ -1643,7 +1643,7 @@ PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fileMode)
|
|||
* with PG_TEMP_FILE_PREFIX, so that they can be identified as temporary and
|
||||
* deleted at startup by RemovePgTempFiles(). Further subdirectories below
|
||||
* that do not need any particular prefix.
|
||||
*/
|
||||
*/
|
||||
void
|
||||
PathNameCreateTemporaryDir(const char *basedir, const char *directory)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -479,7 +479,7 @@ pg_get_dsm_registry_allocations(PG_FUNCTION_ARGS)
|
|||
entry->dsa.handle != DSA_HANDLE_INVALID)
|
||||
vals[2] = Int64GetDatum(dsa_get_total_size_from_handle(entry->dsa.handle));
|
||||
else if (entry->type == DSMR_ENTRY_TYPE_DSH &&
|
||||
entry->dsh.dsa_handle !=DSA_HANDLE_INVALID)
|
||||
entry->dsh.dsa_handle != DSA_HANDLE_INVALID)
|
||||
vals[2] = Int64GetDatum(dsa_get_total_size_from_handle(entry->dsh.dsa_handle));
|
||||
else
|
||||
nulls[2] = true;
|
||||
|
|
|
|||
|
|
@ -331,22 +331,22 @@ pgstat_io_snapshot_cb(void)
|
|||
}
|
||||
|
||||
/*
|
||||
* IO statistics are not collected for all BackendTypes.
|
||||
*
|
||||
* The following BackendTypes do not participate in the cumulative stats
|
||||
* subsystem or do not perform IO on which we currently track:
|
||||
* - Dead-end backend because it is not connected to shared memory and
|
||||
* doesn't do any IO
|
||||
* - Syslogger because it is not connected to shared memory
|
||||
* - Archiver because most relevant archiving IO is delegated to a
|
||||
* specialized command or module
|
||||
*
|
||||
* Function returns true if BackendType participates in the cumulative stats
|
||||
* subsystem for IO and false if it does not.
|
||||
*
|
||||
* When adding a new BackendType, also consider adding relevant restrictions to
|
||||
* pgstat_tracks_io_object() and pgstat_tracks_io_op().
|
||||
*/
|
||||
* IO statistics are not collected for all BackendTypes.
|
||||
*
|
||||
* The following BackendTypes do not participate in the cumulative stats
|
||||
* subsystem or do not perform IO on which we currently track:
|
||||
* - Dead-end backend because it is not connected to shared memory and
|
||||
* doesn't do any IO
|
||||
* - Syslogger because it is not connected to shared memory
|
||||
* - Archiver because most relevant archiving IO is delegated to a
|
||||
* specialized command or module
|
||||
*
|
||||
* Function returns true if BackendType participates in the cumulative stats
|
||||
* subsystem for IO and false if it does not.
|
||||
*
|
||||
* When adding a new BackendType, also consider adding relevant restrictions to
|
||||
* pgstat_tracks_io_object() and pgstat_tracks_io_op().
|
||||
*/
|
||||
bool
|
||||
pgstat_tracks_io_bktype(BackendType bktype)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -164,7 +164,8 @@ cash_div_int64(Cash c, int64 i)
|
|||
return c / i;
|
||||
}
|
||||
|
||||
/* cash_in()
|
||||
/*
|
||||
* cash_in()
|
||||
* Convert a string to a cash data type.
|
||||
* Format is [$]###[,]###[.##]
|
||||
* Examples: 123.45 $123.45 $123,456.78
|
||||
|
|
@ -380,7 +381,8 @@ cash_in(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_out()
|
||||
/*
|
||||
* cash_out()
|
||||
* Function to convert cash to a dollars and cents representation, using
|
||||
* the lc_monetary locale's formatting.
|
||||
*/
|
||||
|
|
@ -684,7 +686,8 @@ cash_cmp(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_pl()
|
||||
/*
|
||||
* cash_pl()
|
||||
* Add two cash values.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -697,7 +700,8 @@ cash_pl(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_mi()
|
||||
/*
|
||||
* cash_mi()
|
||||
* Subtract two cash values.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -710,7 +714,8 @@ cash_mi(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_div_cash()
|
||||
/*
|
||||
* cash_div_cash()
|
||||
* Divide cash by cash, returning float8.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -730,7 +735,8 @@ cash_div_cash(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_mul_flt8()
|
||||
/*
|
||||
* cash_mul_flt8()
|
||||
* Multiply cash by float8.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -743,7 +749,8 @@ cash_mul_flt8(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* flt8_mul_cash()
|
||||
/*
|
||||
* flt8_mul_cash()
|
||||
* Multiply float8 by cash.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -756,7 +763,8 @@ flt8_mul_cash(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_div_flt8()
|
||||
/*
|
||||
* cash_div_flt8()
|
||||
* Divide cash by float8.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -769,7 +777,8 @@ cash_div_flt8(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_mul_flt4()
|
||||
/*
|
||||
* cash_mul_flt4()
|
||||
* Multiply cash by float4.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -782,7 +791,8 @@ cash_mul_flt4(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* flt4_mul_cash()
|
||||
/*
|
||||
* flt4_mul_cash()
|
||||
* Multiply float4 by cash.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -795,7 +805,8 @@ flt4_mul_cash(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_div_flt4()
|
||||
/*
|
||||
* cash_div_flt4()
|
||||
* Divide cash by float4.
|
||||
*
|
||||
*/
|
||||
|
|
@ -809,7 +820,8 @@ cash_div_flt4(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_mul_int8()
|
||||
/*
|
||||
* cash_mul_int8()
|
||||
* Multiply cash by int8.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -822,7 +834,8 @@ cash_mul_int8(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* int8_mul_cash()
|
||||
/*
|
||||
* int8_mul_cash()
|
||||
* Multiply int8 by cash.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -834,7 +847,8 @@ int8_mul_cash(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(cash_mul_int64(c, i));
|
||||
}
|
||||
|
||||
/* cash_div_int8()
|
||||
/*
|
||||
* cash_div_int8()
|
||||
* Divide cash by 8-byte integer.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -847,7 +861,8 @@ cash_div_int8(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_mul_int4()
|
||||
/*
|
||||
* cash_mul_int4()
|
||||
* Multiply cash by int4.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -860,7 +875,8 @@ cash_mul_int4(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* int4_mul_cash()
|
||||
/*
|
||||
* int4_mul_cash()
|
||||
* Multiply int4 by cash.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -873,7 +889,8 @@ int4_mul_cash(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_div_int4()
|
||||
/*
|
||||
* cash_div_int4()
|
||||
* Divide cash by 4-byte integer.
|
||||
*
|
||||
*/
|
||||
|
|
@ -887,7 +904,8 @@ cash_div_int4(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_mul_int2()
|
||||
/*
|
||||
* cash_mul_int2()
|
||||
* Multiply cash by int2.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -899,7 +917,8 @@ cash_mul_int2(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(cash_mul_int64(c, (int64) s));
|
||||
}
|
||||
|
||||
/* int2_mul_cash()
|
||||
/*
|
||||
* int2_mul_cash()
|
||||
* Multiply int2 by cash.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -911,7 +930,8 @@ int2_mul_cash(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(cash_mul_int64(c, (int64) s));
|
||||
}
|
||||
|
||||
/* cash_div_int2()
|
||||
/*
|
||||
* cash_div_int2()
|
||||
* Divide cash by int2.
|
||||
*
|
||||
*/
|
||||
|
|
@ -924,7 +944,8 @@ cash_div_int2(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(cash_div_int64(c, (int64) s));
|
||||
}
|
||||
|
||||
/* cashlarger()
|
||||
/*
|
||||
* cashlarger()
|
||||
* Return larger of two cash values.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -939,7 +960,8 @@ cashlarger(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(result);
|
||||
}
|
||||
|
||||
/* cashsmaller()
|
||||
/*
|
||||
* cashsmaller()
|
||||
* Return smaller of two cash values.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -954,7 +976,8 @@ cashsmaller(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(result);
|
||||
}
|
||||
|
||||
/* cash_words()
|
||||
/*
|
||||
* cash_words()
|
||||
* This converts an int4 as well but to a representation using words
|
||||
* Obviously way North American centric - sorry
|
||||
*/
|
||||
|
|
@ -1045,7 +1068,8 @@ cash_words(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* cash_numeric()
|
||||
/*
|
||||
* cash_numeric()
|
||||
* Convert cash to numeric.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1101,7 +1125,8 @@ cash_numeric(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_DATUM(result);
|
||||
}
|
||||
|
||||
/* numeric_cash()
|
||||
/*
|
||||
* numeric_cash()
|
||||
* Convert numeric to cash.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1140,7 +1165,8 @@ numeric_cash(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(result);
|
||||
}
|
||||
|
||||
/* int4_cash()
|
||||
/*
|
||||
* int4_cash()
|
||||
* Convert int4 (int) to cash
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1172,7 +1198,8 @@ int4_cash(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CASH(result);
|
||||
}
|
||||
|
||||
/* int8_cash()
|
||||
/*
|
||||
* int8_cash()
|
||||
* Convert int8 (bigint) to cash
|
||||
*/
|
||||
Datum
|
||||
|
|
|
|||
|
|
@ -100,7 +100,8 @@ anytime_typmodout(bool istz, int32 typmod)
|
|||
*****************************************************************************/
|
||||
|
||||
|
||||
/* date_in()
|
||||
/*
|
||||
* date_in()
|
||||
* Given date text string, convert to internal date format.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -171,7 +172,8 @@ date_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_DATEADT(date);
|
||||
}
|
||||
|
||||
/* date_out()
|
||||
/*
|
||||
* date_out()
|
||||
* Given internal format date, convert to text string.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -539,7 +541,8 @@ date_smaller(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_DATEADT((dateVal1 < dateVal2) ? dateVal1 : dateVal2);
|
||||
}
|
||||
|
||||
/* Compute difference between two dates in days.
|
||||
/*
|
||||
* Compute difference between two dates in days.
|
||||
*/
|
||||
Datum
|
||||
date_mi(PG_FUNCTION_ARGS)
|
||||
|
|
@ -555,7 +558,8 @@ date_mi(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INT32((int32) (dateVal1 - dateVal2));
|
||||
}
|
||||
|
||||
/* Add a number of days to a date, giving a new date.
|
||||
/*
|
||||
* Add a number of days to a date, giving a new date.
|
||||
* Must handle both positive and negative numbers of days.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -580,7 +584,8 @@ date_pli(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_DATEADT(result);
|
||||
}
|
||||
|
||||
/* Subtract a number of days from a date, giving a new date.
|
||||
/*
|
||||
* Subtract a number of days from a date, giving a new date.
|
||||
*/
|
||||
Datum
|
||||
date_mii(PG_FUNCTION_ARGS)
|
||||
|
|
@ -1080,7 +1085,8 @@ in_range_date_interval(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* extract_date()
|
||||
/*
|
||||
* extract_date()
|
||||
* Extract specified field from date type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1257,7 +1263,8 @@ extract_date(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* Add an interval to a date, giving a new date.
|
||||
/*
|
||||
* Add an interval to a date, giving a new date.
|
||||
* Must handle both positive and negative intervals.
|
||||
*
|
||||
* We implement this by promoting the date to timestamp (without time zone)
|
||||
|
|
@ -1277,7 +1284,8 @@ date_pl_interval(PG_FUNCTION_ARGS)
|
|||
PointerGetDatum(span));
|
||||
}
|
||||
|
||||
/* Subtract an interval from a date, giving a new date.
|
||||
/*
|
||||
* Subtract an interval from a date, giving a new date.
|
||||
* Must handle both positive and negative intervals.
|
||||
*
|
||||
* We implement this by promoting the date to timestamp (without time zone)
|
||||
|
|
@ -1297,7 +1305,8 @@ date_mi_interval(PG_FUNCTION_ARGS)
|
|||
PointerGetDatum(span));
|
||||
}
|
||||
|
||||
/* date_timestamp()
|
||||
/*
|
||||
* date_timestamp()
|
||||
* Convert date to timestamp data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1313,7 +1322,8 @@ date_timestamp(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* timestamp_date()
|
||||
/*
|
||||
* timestamp_date()
|
||||
* Convert timestamp to date data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1375,7 +1385,8 @@ timestamp2date_safe(Timestamp timestamp, Node *escontext)
|
|||
}
|
||||
|
||||
|
||||
/* date_timestamptz()
|
||||
/*
|
||||
* date_timestamptz()
|
||||
* Convert date to timestamp with time zone data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1392,7 +1403,8 @@ date_timestamptz(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamptz_date()
|
||||
/*
|
||||
* timestamptz_date()
|
||||
* Convert timestamp with time zone to date data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1498,7 +1510,8 @@ time_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT(result);
|
||||
}
|
||||
|
||||
/* tm2time()
|
||||
/*
|
||||
* tm2time()
|
||||
* Convert a tm structure to a time data type.
|
||||
*/
|
||||
int
|
||||
|
|
@ -1509,7 +1522,8 @@ tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* time_overflows()
|
||||
/*
|
||||
* time_overflows()
|
||||
* Check to see if a broken-down time-of-day is out of range.
|
||||
*/
|
||||
bool
|
||||
|
|
@ -1533,7 +1547,8 @@ time_overflows(int hour, int min, int sec, fsec_t fsec)
|
|||
return false;
|
||||
}
|
||||
|
||||
/* float_time_overflows()
|
||||
/*
|
||||
* float_time_overflows()
|
||||
* Same, when we have seconds + fractional seconds as one "double" value.
|
||||
*/
|
||||
bool
|
||||
|
|
@ -1568,7 +1583,8 @@ float_time_overflows(int hour, int min, double sec)
|
|||
}
|
||||
|
||||
|
||||
/* time2tm()
|
||||
/*
|
||||
* time2tm()
|
||||
* Convert time data type to POSIX time structure.
|
||||
*
|
||||
* Note that only the hour/min/sec/fractional-sec fields are filled in.
|
||||
|
|
@ -1685,7 +1701,8 @@ make_time(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* time_support()
|
||||
/*
|
||||
* time_support()
|
||||
*
|
||||
* Planner support function for the time_scale() and timetz_scale()
|
||||
* length coercion functions (we need not distinguish them here).
|
||||
|
|
@ -1706,7 +1723,8 @@ time_support(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_POINTER(ret);
|
||||
}
|
||||
|
||||
/* time_scale()
|
||||
/*
|
||||
* time_scale()
|
||||
* Adjust time type for specified scale factor.
|
||||
* Used by PostgreSQL type system to stuff columns.
|
||||
*/
|
||||
|
|
@ -1723,7 +1741,8 @@ time_scale(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT(result);
|
||||
}
|
||||
|
||||
/* AdjustTimeForTypmod()
|
||||
/*
|
||||
* AdjustTimeForTypmod()
|
||||
* Force the precision of the time value to a specified value.
|
||||
* Uses *exactly* the same code as in AdjustTimestampForTypmod()
|
||||
* but we make a separate copy because those types do not
|
||||
|
|
@ -1862,7 +1881,8 @@ time_smaller(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT((time1 < time2) ? time1 : time2);
|
||||
}
|
||||
|
||||
/* overlaps_time() --- implements the SQL OVERLAPS operator.
|
||||
/*
|
||||
* overlaps_time() --- implements the SQL OVERLAPS operator.
|
||||
*
|
||||
* Algorithm is per SQL spec. This is much harder than you'd think
|
||||
* because the spec requires us to deliver a non-null answer in some cases
|
||||
|
|
@ -1987,7 +2007,8 @@ overlaps_time(PG_FUNCTION_ARGS)
|
|||
#undef TIMEADT_LT
|
||||
}
|
||||
|
||||
/* timestamp_time()
|
||||
/*
|
||||
* timestamp_time()
|
||||
* Convert timestamp to time data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2017,7 +2038,8 @@ timestamp_time(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT(result);
|
||||
}
|
||||
|
||||
/* timestamptz_time()
|
||||
/*
|
||||
* timestamptz_time()
|
||||
* Convert timestamptz to time data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2048,7 +2070,8 @@ timestamptz_time(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT(result);
|
||||
}
|
||||
|
||||
/* datetime_timestamp()
|
||||
/*
|
||||
* datetime_timestamp()
|
||||
* Convert date and time to timestamp data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2071,7 +2094,8 @@ datetime_timestamp(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* time_interval()
|
||||
/*
|
||||
* time_interval()
|
||||
* Convert time to interval data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2089,7 +2113,8 @@ time_interval(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INTERVAL_P(result);
|
||||
}
|
||||
|
||||
/* interval_time()
|
||||
/*
|
||||
* interval_time()
|
||||
* Convert interval to time data type.
|
||||
*
|
||||
* This is defined as producing the fractional-day portion of the interval.
|
||||
|
|
@ -2115,7 +2140,8 @@ interval_time(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT(result);
|
||||
}
|
||||
|
||||
/* time_mi_time()
|
||||
/*
|
||||
* time_mi_time()
|
||||
* Subtract two times to produce an interval.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2134,7 +2160,8 @@ time_mi_time(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INTERVAL_P(result);
|
||||
}
|
||||
|
||||
/* time_pl_interval()
|
||||
/*
|
||||
* time_pl_interval()
|
||||
* Add interval to time.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2157,7 +2184,8 @@ time_pl_interval(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMEADT(result);
|
||||
}
|
||||
|
||||
/* time_mi_interval()
|
||||
/*
|
||||
* time_mi_interval()
|
||||
* Subtract interval from time.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2222,7 +2250,8 @@ in_range_time_interval(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* time_part() and extract_time()
|
||||
/*
|
||||
* time_part() and extract_time()
|
||||
* Extract specified field from time type.
|
||||
*/
|
||||
static Datum
|
||||
|
|
@ -2345,7 +2374,8 @@ extract_time(PG_FUNCTION_ARGS)
|
|||
* Time With Time Zone ADT
|
||||
*****************************************************************************/
|
||||
|
||||
/* tm2timetz()
|
||||
/*
|
||||
* tm2timetz()
|
||||
* Convert a tm structure to a time data type.
|
||||
*/
|
||||
int
|
||||
|
|
@ -2485,7 +2515,8 @@ timetztypmodout(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timetz2tm()
|
||||
/*
|
||||
* timetz2tm()
|
||||
* Convert TIME WITH TIME ZONE data type to POSIX time structure.
|
||||
*/
|
||||
int
|
||||
|
|
@ -2506,7 +2537,8 @@ timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* timetz_scale()
|
||||
/*
|
||||
* timetz_scale()
|
||||
* Adjust time type for specified scale factor.
|
||||
* Used by PostgreSQL type system to stuff columns.
|
||||
*/
|
||||
|
|
@ -2678,7 +2710,8 @@ timetz_smaller(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMETZADT_P(result);
|
||||
}
|
||||
|
||||
/* timetz_pl_interval()
|
||||
/*
|
||||
* timetz_pl_interval()
|
||||
* Add interval to timetz.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2705,7 +2738,8 @@ timetz_pl_interval(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMETZADT_P(result);
|
||||
}
|
||||
|
||||
/* timetz_mi_interval()
|
||||
/*
|
||||
* timetz_mi_interval()
|
||||
* Subtract interval from timetz.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2774,7 +2808,8 @@ in_range_timetz_interval(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(timetz_cmp_internal(val, &sum) >= 0);
|
||||
}
|
||||
|
||||
/* overlaps_timetz() --- implements the SQL OVERLAPS operator.
|
||||
/*
|
||||
* overlaps_timetz() --- implements the SQL OVERLAPS operator.
|
||||
*
|
||||
* Algorithm is per SQL spec. This is much harder than you'd think
|
||||
* because the spec requires us to deliver a non-null answer in some cases
|
||||
|
|
@ -2936,7 +2971,8 @@ time_timetz(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamptz_timetz()
|
||||
/*
|
||||
* timestamptz_timetz()
|
||||
* Convert timestamp to timetz data type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2965,7 +3001,8 @@ timestamptz_timetz(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* datetimetz_timestamptz()
|
||||
/*
|
||||
* datetimetz_timestamptz()
|
||||
* Convert date and timetz to timestamp with time zone data type.
|
||||
* Timestamp is stored in GMT, so add the time zone
|
||||
* stored with the timetz to the result.
|
||||
|
|
@ -3009,7 +3046,8 @@ datetimetz_timestamptz(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timetz_part() and extract_timetz()
|
||||
/*
|
||||
* timetz_part() and extract_timetz()
|
||||
* Extract specified field from time type.
|
||||
*/
|
||||
static Datum
|
||||
|
|
@ -3141,7 +3179,8 @@ extract_timetz(PG_FUNCTION_ARGS)
|
|||
return timetz_part_common(fcinfo, true);
|
||||
}
|
||||
|
||||
/* timetz_zone()
|
||||
/*
|
||||
* timetz_zone()
|
||||
* Encode time with time zone type with specified time zone.
|
||||
* Applies DST rules as of the transaction start time.
|
||||
*/
|
||||
|
|
@ -3204,7 +3243,8 @@ timetz_zone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMETZADT_P(result);
|
||||
}
|
||||
|
||||
/* timetz_izone()
|
||||
/*
|
||||
* timetz_izone()
|
||||
* Encode time with time zone type with specified time interval as time zone.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -3245,7 +3285,8 @@ timetz_izone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMETZADT_P(result);
|
||||
}
|
||||
|
||||
/* timetz_at_local()
|
||||
/*
|
||||
* timetz_at_local()
|
||||
*
|
||||
* Unlike for timestamp[tz]_at_local, the type for timetz does not flip between
|
||||
* time with/without time zone, so we cannot just call the conversion function.
|
||||
|
|
|
|||
|
|
@ -739,7 +739,8 @@ ParseFractionalSecond(char *cp, fsec_t *fsec)
|
|||
}
|
||||
|
||||
|
||||
/* ParseDateTime()
|
||||
/*
|
||||
* ParseDateTime()
|
||||
* Break string into tokens based on a date/time context.
|
||||
* Returns 0 if successful, DTERR code if bogus input detected.
|
||||
*
|
||||
|
|
@ -967,7 +968,8 @@ ParseDateTime(const char *timestr, char *workbuf, size_t buflen,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeDateTime()
|
||||
/*
|
||||
* DecodeDateTime()
|
||||
* Interpret previously parsed fields for general date and time.
|
||||
* Return 0 if full date, 1 if only time, and negative DTERR code if problems.
|
||||
* (Currently, all callers treat 1 as an error return too.)
|
||||
|
|
@ -1589,7 +1591,8 @@ DecodeDateTime(char **field, int *ftype, int nf,
|
|||
}
|
||||
|
||||
|
||||
/* DetermineTimeZoneOffset()
|
||||
/*
|
||||
* DetermineTimeZoneOffset()
|
||||
*
|
||||
* Given a struct pg_tm in which tm_year, tm_mon, tm_mday, tm_hour, tm_min,
|
||||
* and tm_sec fields are set, and a zic-style time zone definition, determine
|
||||
|
|
@ -1610,7 +1613,8 @@ DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp)
|
|||
}
|
||||
|
||||
|
||||
/* DetermineTimeZoneOffsetInternal()
|
||||
/*
|
||||
* DetermineTimeZoneOffsetInternal()
|
||||
*
|
||||
* As above, but also return the actual UTC time imputed to the date/time
|
||||
* into *tp.
|
||||
|
|
@ -1748,7 +1752,8 @@ overflow:
|
|||
}
|
||||
|
||||
|
||||
/* DetermineTimeZoneAbbrevOffset()
|
||||
/*
|
||||
* DetermineTimeZoneAbbrevOffset()
|
||||
*
|
||||
* Determine the GMT offset and DST flag to be attributed to a dynamic
|
||||
* time zone abbreviation, that is one whose meaning has changed over time.
|
||||
|
|
@ -1795,7 +1800,8 @@ DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp)
|
|||
}
|
||||
|
||||
|
||||
/* DetermineTimeZoneAbbrevOffsetTS()
|
||||
/*
|
||||
* DetermineTimeZoneAbbrevOffsetTS()
|
||||
*
|
||||
* As above but the probe time is specified as a TimestampTz (hence, UTC time),
|
||||
* and DST status is returned into *isdst rather than into tm->tm_isdst.
|
||||
|
|
@ -1832,7 +1838,8 @@ DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr,
|
|||
}
|
||||
|
||||
|
||||
/* DetermineTimeZoneAbbrevOffsetInternal()
|
||||
/*
|
||||
* DetermineTimeZoneAbbrevOffsetInternal()
|
||||
*
|
||||
* Workhorse for above two functions: work from a pg_time_t probe instant.
|
||||
* On success, return GMT offset and DST status into *offset and *isdst.
|
||||
|
|
@ -1865,7 +1872,8 @@ DetermineTimeZoneAbbrevOffsetInternal(pg_time_t t, const char *abbr, pg_tz *tzp,
|
|||
}
|
||||
|
||||
|
||||
/* TimeZoneAbbrevIsKnown()
|
||||
/*
|
||||
* TimeZoneAbbrevIsKnown()
|
||||
*
|
||||
* Detect whether the given string is a time zone abbreviation that's known
|
||||
* in the specified TZDB timezone, and if so whether it's fixed or varying
|
||||
|
|
@ -1899,7 +1907,8 @@ TimeZoneAbbrevIsKnown(const char *abbr, pg_tz *tzp,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeTimeOnly()
|
||||
/*
|
||||
* DecodeTimeOnly()
|
||||
* Interpret parsed string as time fields only.
|
||||
* Returns 0 if successful, DTERR code if bogus input detected.
|
||||
*
|
||||
|
|
@ -2438,7 +2447,8 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* DecodeDate()
|
||||
/*
|
||||
* DecodeDate()
|
||||
* Decode date string which includes delimiters.
|
||||
* Return 0 if okay, a DTERR code if not.
|
||||
*
|
||||
|
|
@ -2554,7 +2564,8 @@ DecodeDate(char *str, int fmask, int *tmask, bool *is2digits,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* ValidateDate()
|
||||
/*
|
||||
* ValidateDate()
|
||||
* Check valid year/month/day values, handle BC and DOY cases
|
||||
* Return 0 if okay, a DTERR code if not.
|
||||
*/
|
||||
|
|
@ -2630,7 +2641,8 @@ ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeTimeCommon()
|
||||
/*
|
||||
* DecodeTimeCommon()
|
||||
* Decode time string which includes delimiters.
|
||||
* Return 0 if okay, a DTERR code if not.
|
||||
* tmask and itm are output parameters.
|
||||
|
|
@ -2715,7 +2727,8 @@ DecodeTimeCommon(char *str, int fmask, int range,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* DecodeTime()
|
||||
/*
|
||||
* DecodeTime()
|
||||
* Decode time string which includes delimiters.
|
||||
* Return 0 if okay, a DTERR code if not.
|
||||
*
|
||||
|
|
@ -2744,7 +2757,8 @@ DecodeTime(char *str, int fmask, int range,
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* DecodeTimeForInterval()
|
||||
/*
|
||||
* DecodeTimeForInterval()
|
||||
* Decode time string which includes delimiters.
|
||||
* Return 0 if okay, a DTERR code if not.
|
||||
*
|
||||
|
|
@ -2773,7 +2787,8 @@ DecodeTimeForInterval(char *str, int fmask, int range,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeNumber()
|
||||
/*
|
||||
* DecodeNumber()
|
||||
* Interpret plain numeric field as a date value in context.
|
||||
* Return 0 if okay, a DTERR code if not.
|
||||
*/
|
||||
|
|
@ -2955,7 +2970,8 @@ DecodeNumber(int flen, char *str, bool haveTextMonth, int fmask,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeNumberField()
|
||||
/*
|
||||
* DecodeNumberField()
|
||||
* Interpret numeric string as a concatenated date or time field.
|
||||
* Return a DTK token (>= 0) if successful, a DTERR code (< 0) if not.
|
||||
*
|
||||
|
|
@ -3049,7 +3065,8 @@ DecodeNumberField(int len, char *str, int fmask,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeTimezone()
|
||||
/*
|
||||
* DecodeTimezone()
|
||||
* Interpret string as a numeric timezone.
|
||||
*
|
||||
* Return 0 if okay (and set *tzp), a DTERR code if not okay.
|
||||
|
|
@ -3118,7 +3135,8 @@ DecodeTimezone(const char *str, int *tzp)
|
|||
}
|
||||
|
||||
|
||||
/* DecodeTimezoneAbbrev()
|
||||
/*
|
||||
* DecodeTimezoneAbbrev()
|
||||
* Interpret string as a timezone abbreviation, if possible.
|
||||
*
|
||||
* Sets *ftype to an abbreviation type (TZ, DTZ, or DYNTZ), or UNKNOWN_FIELD if
|
||||
|
|
@ -3231,7 +3249,8 @@ ClearTimeZoneAbbrevCache(void)
|
|||
}
|
||||
|
||||
|
||||
/* DecodeSpecial()
|
||||
/*
|
||||
* DecodeSpecial()
|
||||
* Decode text string using lookup table.
|
||||
*
|
||||
* Recognizes the keywords listed in datetktbl.
|
||||
|
|
@ -3271,7 +3290,8 @@ DecodeSpecial(int field, const char *lowtoken, int *val)
|
|||
}
|
||||
|
||||
|
||||
/* DecodeTimezoneName()
|
||||
/*
|
||||
* DecodeTimezoneName()
|
||||
* Interpret string as a timezone abbreviation or name.
|
||||
* Throw error if the name is not recognized.
|
||||
*
|
||||
|
|
@ -3333,7 +3353,8 @@ DecodeTimezoneName(const char *tzname, int *offset, pg_tz **tz)
|
|||
}
|
||||
}
|
||||
|
||||
/* DecodeTimezoneNameToTz()
|
||||
/*
|
||||
* DecodeTimezoneNameToTz()
|
||||
* Interpret string as a timezone abbreviation or name.
|
||||
* Throw error if the name is not recognized.
|
||||
*
|
||||
|
|
@ -3354,7 +3375,8 @@ DecodeTimezoneNameToTz(const char *tzname)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* DecodeTimezoneAbbrevPrefix()
|
||||
/*
|
||||
* DecodeTimezoneAbbrevPrefix()
|
||||
* Interpret prefix of string as a timezone abbreviation, if possible.
|
||||
*
|
||||
* This has roughly the same functionality as DecodeTimezoneAbbrev(),
|
||||
|
|
@ -3455,7 +3477,8 @@ DecodeTimezoneAbbrevPrefix(const char *str, int *offset, pg_tz **tz)
|
|||
}
|
||||
|
||||
|
||||
/* ClearPgItmIn
|
||||
/*
|
||||
* ClearPgItmIn
|
||||
*
|
||||
* Zero out a pg_itm_in
|
||||
*/
|
||||
|
|
@ -3469,7 +3492,8 @@ ClearPgItmIn(struct pg_itm_in *itm_in)
|
|||
}
|
||||
|
||||
|
||||
/* DecodeInterval()
|
||||
/*
|
||||
* DecodeInterval()
|
||||
* Interpret previously parsed fields for general time interval.
|
||||
* Returns 0 if successful, DTERR code if bogus input detected.
|
||||
* dtype and itm_in are output parameters.
|
||||
|
|
@ -3931,7 +3955,8 @@ ISO8601IntegerWidth(char *fieldstart)
|
|||
}
|
||||
|
||||
|
||||
/* DecodeISO8601Interval()
|
||||
/*
|
||||
* DecodeISO8601Interval()
|
||||
* Decode an ISO 8601 time interval of the "format with designators"
|
||||
* (section 4.4.3.2) or "alternative format" (section 4.4.3.3)
|
||||
* Examples: P1D for 1 day
|
||||
|
|
@ -4156,7 +4181,8 @@ DecodeISO8601Interval(char *str,
|
|||
}
|
||||
|
||||
|
||||
/* DecodeUnits()
|
||||
/*
|
||||
* DecodeUnits()
|
||||
* Decode text string using lookup table.
|
||||
*
|
||||
* This routine recognizes keywords associated with time interval units.
|
||||
|
|
@ -4268,7 +4294,8 @@ DateTimeParseError(int dterr, DateTimeErrorExtra *extra,
|
|||
}
|
||||
}
|
||||
|
||||
/* datebsearch()
|
||||
/*
|
||||
* datebsearch()
|
||||
* Binary search -- from Knuth (6.2.1) Algorithm B. Special case like this
|
||||
* is WAY faster than the generic bsearch().
|
||||
*/
|
||||
|
|
@ -4302,7 +4329,8 @@ datebsearch(const char *key, const datetkn *base, int nel)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* EncodeTimezone()
|
||||
/*
|
||||
* EncodeTimezone()
|
||||
* Copies representation of a numeric timezone offset to str.
|
||||
*
|
||||
* Returns a pointer to the new end of string. No NUL terminator is put
|
||||
|
|
@ -4343,7 +4371,8 @@ EncodeTimezone(char *str, int tz, int style)
|
|||
return str;
|
||||
}
|
||||
|
||||
/* EncodeDateOnly()
|
||||
/*
|
||||
* EncodeDateOnly()
|
||||
* Encode date as local time.
|
||||
*/
|
||||
void
|
||||
|
|
@ -4423,7 +4452,8 @@ EncodeDateOnly(struct pg_tm *tm, int style, char *str)
|
|||
}
|
||||
|
||||
|
||||
/* EncodeTimeOnly()
|
||||
/*
|
||||
* EncodeTimeOnly()
|
||||
* Encode time fields only.
|
||||
*
|
||||
* tm and fsec are the value to encode, print_tz determines whether to include
|
||||
|
|
@ -4445,7 +4475,8 @@ EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, int style,
|
|||
}
|
||||
|
||||
|
||||
/* EncodeDateTime()
|
||||
/*
|
||||
* EncodeDateTime()
|
||||
* Encode date and time interpreted as local time.
|
||||
*
|
||||
* tm and fsec are the value to encode, print_tz determines whether to include
|
||||
|
|
@ -4685,7 +4716,8 @@ AddVerboseIntPart(char *cp, int64 value, const char *units,
|
|||
}
|
||||
|
||||
|
||||
/* EncodeInterval()
|
||||
/*
|
||||
* EncodeInterval()
|
||||
* Interpret time structure as a delta time and convert to string.
|
||||
*
|
||||
* Support "traditional Postgres" and ISO-8601 styles.
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ typedef struct DdlOption
|
|||
static void parse_ddl_options(FunctionCallInfo fcinfo, int variadic_start,
|
||||
DdlOption *opts, int nopts);
|
||||
static void append_ddl_option(StringInfo buf, bool pretty, int indent,
|
||||
const char *fmt,...)
|
||||
const char *fmt, ...)
|
||||
pg_attribute_printf(4, 5);
|
||||
static void append_guc_value(StringInfo buf, const char *name,
|
||||
const char *value);
|
||||
|
|
@ -232,7 +232,7 @@ parse_ddl_options(FunctionCallInfo fcinfo, int variadic_start,
|
|||
*/
|
||||
static void
|
||||
append_ddl_option(StringInfo buf, bool pretty, int indent,
|
||||
const char *fmt,...)
|
||||
const char *fmt, ...)
|
||||
{
|
||||
if (pretty)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -975,8 +975,8 @@ static const KeyWord NUM_keywords[] = {
|
|||
*/
|
||||
static const int DCH_index[KeyWord_INDEX_SIZE] = {
|
||||
/*
|
||||
0 1 2 3 4 5 6 7 8 9
|
||||
*/
|
||||
* 0 1 2 3 4 5 6 7 8 9
|
||||
*/
|
||||
/*---- first 0..31 chars are skipped ----*/
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1,
|
||||
|
|
@ -998,8 +998,8 @@ static const int DCH_index[KeyWord_INDEX_SIZE] = {
|
|||
*/
|
||||
static const int NUM_index[KeyWord_INDEX_SIZE] = {
|
||||
/*
|
||||
0 1 2 3 4 5 6 7 8 9
|
||||
*/
|
||||
* 0 1 2 3 4 5 6 7 8 9
|
||||
*/
|
||||
/*---- first 0..31 chars are skipped ----*/
|
||||
|
||||
-1, -1, -1, -1, -1, -1, -1, -1,
|
||||
|
|
|
|||
|
|
@ -413,7 +413,8 @@ pair_count(char *s, char delim)
|
|||
* Formatting and conversion routines.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* box_in - convert a string to internal form.
|
||||
/*
|
||||
* box_in - convert a string to internal form.
|
||||
*
|
||||
* External format: (two corners of box)
|
||||
* "(f8, f8), (f8, f8)"
|
||||
|
|
@ -450,7 +451,8 @@ box_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOX_P(box);
|
||||
}
|
||||
|
||||
/* box_out - convert a box to external form.
|
||||
/*
|
||||
* box_out - convert a box to external form.
|
||||
*/
|
||||
Datum
|
||||
box_out(PG_FUNCTION_ARGS)
|
||||
|
|
@ -513,7 +515,8 @@ box_send(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_construct - fill in a new box.
|
||||
/*
|
||||
* box_construct - fill in a new box.
|
||||
*/
|
||||
static inline void
|
||||
box_construct(BOX *result, Point *pt1, Point *pt2)
|
||||
|
|
@ -546,7 +549,8 @@ box_construct(BOX *result, Point *pt1, Point *pt2)
|
|||
* <, >, <=, >=, and == are based on box area.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* box_same - are two boxes identical?
|
||||
/*
|
||||
* box_same - are two boxes identical?
|
||||
*/
|
||||
Datum
|
||||
box_same(PG_FUNCTION_ARGS)
|
||||
|
|
@ -558,7 +562,8 @@ box_same(PG_FUNCTION_ARGS)
|
|||
point_eq_point(&box1->low, &box2->low));
|
||||
}
|
||||
|
||||
/* box_overlap - does box1 overlap box2?
|
||||
/*
|
||||
* box_overlap - does box1 overlap box2?
|
||||
*/
|
||||
Datum
|
||||
box_overlap(PG_FUNCTION_ARGS)
|
||||
|
|
@ -578,7 +583,8 @@ box_ov(BOX *box1, BOX *box2)
|
|||
FPle(box2->low.y, box1->high.y));
|
||||
}
|
||||
|
||||
/* box_left - is box1 strictly left of box2?
|
||||
/*
|
||||
* box_left - is box1 strictly left of box2?
|
||||
*/
|
||||
Datum
|
||||
box_left(PG_FUNCTION_ARGS)
|
||||
|
|
@ -589,7 +595,8 @@ box_left(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPlt(box1->high.x, box2->low.x));
|
||||
}
|
||||
|
||||
/* box_overleft - is the right edge of box1 at or left of
|
||||
/*
|
||||
* box_overleft - is the right edge of box1 at or left of
|
||||
* the right edge of box2?
|
||||
*
|
||||
* This is "less than or equal" for the end of a time range,
|
||||
|
|
@ -604,7 +611,8 @@ box_overleft(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPle(box1->high.x, box2->high.x));
|
||||
}
|
||||
|
||||
/* box_right - is box1 strictly right of box2?
|
||||
/*
|
||||
* box_right - is box1 strictly right of box2?
|
||||
*/
|
||||
Datum
|
||||
box_right(PG_FUNCTION_ARGS)
|
||||
|
|
@ -615,7 +623,8 @@ box_right(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPgt(box1->low.x, box2->high.x));
|
||||
}
|
||||
|
||||
/* box_overright - is the left edge of box1 at or right of
|
||||
/*
|
||||
* box_overright - is the left edge of box1 at or right of
|
||||
* the left edge of box2?
|
||||
*
|
||||
* This is "greater than or equal" for time ranges, when time ranges
|
||||
|
|
@ -630,7 +639,8 @@ box_overright(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPge(box1->low.x, box2->low.x));
|
||||
}
|
||||
|
||||
/* box_below - is box1 strictly below box2?
|
||||
/*
|
||||
* box_below - is box1 strictly below box2?
|
||||
*/
|
||||
Datum
|
||||
box_below(PG_FUNCTION_ARGS)
|
||||
|
|
@ -641,7 +651,8 @@ box_below(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPlt(box1->high.y, box2->low.y));
|
||||
}
|
||||
|
||||
/* box_overbelow - is the upper edge of box1 at or below
|
||||
/*
|
||||
* box_overbelow - is the upper edge of box1 at or below
|
||||
* the upper edge of box2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -653,7 +664,8 @@ box_overbelow(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPle(box1->high.y, box2->high.y));
|
||||
}
|
||||
|
||||
/* box_above - is box1 strictly above box2?
|
||||
/*
|
||||
* box_above - is box1 strictly above box2?
|
||||
*/
|
||||
Datum
|
||||
box_above(PG_FUNCTION_ARGS)
|
||||
|
|
@ -664,7 +676,8 @@ box_above(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPgt(box1->low.y, box2->high.y));
|
||||
}
|
||||
|
||||
/* box_overabove - is the lower edge of box1 at or above
|
||||
/*
|
||||
* box_overabove - is the lower edge of box1 at or above
|
||||
* the lower edge of box2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -676,7 +689,8 @@ box_overabove(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(FPge(box1->low.y, box2->low.y));
|
||||
}
|
||||
|
||||
/* box_contained - is box1 contained by box2?
|
||||
/*
|
||||
* box_contained - is box1 contained by box2?
|
||||
*/
|
||||
Datum
|
||||
box_contained(PG_FUNCTION_ARGS)
|
||||
|
|
@ -687,7 +701,8 @@ box_contained(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(box_contain_box(box2, box1));
|
||||
}
|
||||
|
||||
/* box_contain - does box1 contain box2?
|
||||
/*
|
||||
* box_contain - does box1 contain box2?
|
||||
*/
|
||||
Datum
|
||||
box_contain(PG_FUNCTION_ARGS)
|
||||
|
|
@ -711,7 +726,8 @@ box_contain_box(BOX *contains_box, BOX *contained_box)
|
|||
}
|
||||
|
||||
|
||||
/* box_positionop -
|
||||
/*
|
||||
* box_positionop -
|
||||
* is box1 entirely {above,below} box2?
|
||||
*
|
||||
* box_below_eq and box_above_eq are obsolete versions that (probably
|
||||
|
|
@ -738,7 +754,8 @@ box_above_eq(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_relop - is area(box1) relop area(box2), within
|
||||
/*
|
||||
* box_relop - is area(box1) relop area(box2), within
|
||||
* our accuracy constraint?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -791,7 +808,8 @@ box_ge(PG_FUNCTION_ARGS)
|
|||
* "Arithmetic" operators on boxes.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* box_area - returns the area of the box.
|
||||
/*
|
||||
* box_area - returns the area of the box.
|
||||
*/
|
||||
Datum
|
||||
box_area(PG_FUNCTION_ARGS)
|
||||
|
|
@ -802,7 +820,8 @@ box_area(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_width - returns the width of the box
|
||||
/*
|
||||
* box_width - returns the width of the box
|
||||
* (horizontal magnitude).
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -814,7 +833,8 @@ box_width(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_height - returns the height of the box
|
||||
/*
|
||||
* box_height - returns the height of the box
|
||||
* (vertical magnitude).
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -826,7 +846,8 @@ box_height(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_distance - returns the distance between the
|
||||
/*
|
||||
* box_distance - returns the distance between the
|
||||
* center points of two boxes.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -844,7 +865,8 @@ box_distance(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_center - returns the center point of the box.
|
||||
/*
|
||||
* box_center - returns the center point of the box.
|
||||
*/
|
||||
Datum
|
||||
box_center(PG_FUNCTION_ARGS)
|
||||
|
|
@ -860,7 +882,8 @@ box_center(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_ar - returns the area of the box.
|
||||
/*
|
||||
* box_ar - returns the area of the box.
|
||||
*/
|
||||
static float8
|
||||
box_ar(BOX *box)
|
||||
|
|
@ -869,7 +892,8 @@ box_ar(BOX *box)
|
|||
}
|
||||
|
||||
|
||||
/* box_cn - stores the centerpoint of the box into *center.
|
||||
/*
|
||||
* box_cn - stores the centerpoint of the box into *center.
|
||||
*/
|
||||
static void
|
||||
box_cn(Point *center, BOX *box, Node *escontext)
|
||||
|
|
@ -894,7 +918,8 @@ box_cn(Point *center, BOX *box, Node *escontext)
|
|||
return;
|
||||
}
|
||||
|
||||
/* box_wd - returns the width (length) of the box
|
||||
/*
|
||||
* box_wd - returns the width (length) of the box
|
||||
* (horizontal magnitude).
|
||||
*/
|
||||
static float8
|
||||
|
|
@ -904,7 +929,8 @@ box_wd(BOX *box)
|
|||
}
|
||||
|
||||
|
||||
/* box_ht - returns the height of the box
|
||||
/*
|
||||
* box_ht - returns the height of the box
|
||||
* (vertical magnitude).
|
||||
*/
|
||||
static float8
|
||||
|
|
@ -918,7 +944,8 @@ box_ht(BOX *box)
|
|||
* Funky operations.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* box_intersect -
|
||||
/*
|
||||
* box_intersect -
|
||||
* returns the overlapping portion of two boxes,
|
||||
* or NULL if they do not intersect.
|
||||
*/
|
||||
|
|
@ -943,7 +970,8 @@ box_intersect(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_diagonal -
|
||||
/*
|
||||
* box_diagonal -
|
||||
* returns a line segment which happens to be the
|
||||
* positive-slope diagonal of "box".
|
||||
*/
|
||||
|
|
@ -1126,7 +1154,8 @@ line_construct(LINE *result, Point *pt, float8 m)
|
|||
}
|
||||
}
|
||||
|
||||
/* line_construct_pp()
|
||||
/*
|
||||
* line_construct_pp()
|
||||
* two points
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1272,7 +1301,8 @@ line_invsl(LINE *line)
|
|||
}
|
||||
|
||||
|
||||
/* line_distance()
|
||||
/*
|
||||
* line_distance()
|
||||
* Distance between two lines.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1297,7 +1327,8 @@ line_distance(PG_FUNCTION_ARGS)
|
|||
hypot(l1->A, l1->B)));
|
||||
}
|
||||
|
||||
/* line_interpt()
|
||||
/*
|
||||
* line_interpt()
|
||||
* Point where two lines l1, l2 intersect (if any)
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1662,7 +1693,8 @@ path_open(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* path_inter -
|
||||
/*
|
||||
* path_inter -
|
||||
* Does p1 intersect p2 at any point?
|
||||
* Use bounding boxes for a quick (O(n)) check, then do a
|
||||
* O(n^2) iterative edge check.
|
||||
|
|
@ -1740,7 +1772,8 @@ path_inter(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(false);
|
||||
}
|
||||
|
||||
/* path_distance()
|
||||
/*
|
||||
* path_distance()
|
||||
* This essentially does a cartesian product of the lsegs in the
|
||||
* two paths, and finds the min distance between any two lsegs
|
||||
*/
|
||||
|
|
@ -2151,7 +2184,8 @@ lseg_send(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* lseg_construct -
|
||||
/*
|
||||
* lseg_construct -
|
||||
* form a LSEG from two Points.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2210,8 +2244,8 @@ lseg_length(PG_FUNCTION_ARGS)
|
|||
*---------------------------------------------------------*/
|
||||
|
||||
/*
|
||||
** find intersection of the two lines, and see if it falls on
|
||||
** both segments.
|
||||
* find intersection of the two lines, and see if it falls on
|
||||
* both segments.
|
||||
*/
|
||||
Datum
|
||||
lseg_intersect(PG_FUNCTION_ARGS)
|
||||
|
|
@ -2326,7 +2360,8 @@ lseg_ge(PG_FUNCTION_ARGS)
|
|||
* Line arithmetic routines.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* lseg_distance -
|
||||
/*
|
||||
* lseg_distance -
|
||||
* If two segments don't intersect, then the closest
|
||||
* point will be from one of the endpoints to the other
|
||||
* segment.
|
||||
|
|
@ -3198,7 +3233,8 @@ box_contain_pt(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(box_contain_point(box, pt));
|
||||
}
|
||||
|
||||
/* on_ppath -
|
||||
/*
|
||||
* on_ppath -
|
||||
* Whether a point lies within (on) a polyline.
|
||||
* If open, we have to (groan) check each segment.
|
||||
* (uses same algorithm as for point intersecting segment - tgl 1997-07-09)
|
||||
|
|
@ -3368,7 +3404,8 @@ inter_sb(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* inter_lb()
|
||||
/*
|
||||
* inter_lb()
|
||||
* Do line and box intersect?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4397,7 +4434,8 @@ boxes_bound_box(PG_FUNCTION_ARGS)
|
|||
**
|
||||
***********************************************************************/
|
||||
|
||||
/* path_add()
|
||||
/*
|
||||
* path_add()
|
||||
* Concatenate two paths (only if they are both open).
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4445,7 +4483,8 @@ path_add(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_PATH_P(result);
|
||||
}
|
||||
|
||||
/* path_add_pt()
|
||||
/*
|
||||
* path_add_pt()
|
||||
* Translation operators.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4474,7 +4513,8 @@ path_sub_pt(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_PATH_P(path);
|
||||
}
|
||||
|
||||
/* path_mul_pt()
|
||||
/*
|
||||
* path_mul_pt()
|
||||
* Rotation and scaling operators.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4587,7 +4627,8 @@ poly_box(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* box_poly()
|
||||
/*
|
||||
* box_poly()
|
||||
* Convert a box to a polygon.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4660,7 +4701,8 @@ poly_path(PG_FUNCTION_ARGS)
|
|||
* Formatting and conversion routines.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* circle_in - convert a string to internal form.
|
||||
/*
|
||||
* circle_in - convert a string to internal form.
|
||||
*
|
||||
* External format: (center and radius of circle)
|
||||
* "<(f8,f8),f8>"
|
||||
|
|
@ -4734,7 +4776,8 @@ circle_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_CIRCLE_P(circle);
|
||||
}
|
||||
|
||||
/* circle_out - convert a circle to external form.
|
||||
/*
|
||||
* circle_out - convert a circle to external form.
|
||||
*/
|
||||
Datum
|
||||
circle_out(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4801,7 +4844,8 @@ circle_send(PG_FUNCTION_ARGS)
|
|||
* <, >, <=, >=, and == are based on circle area.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* circles identical?
|
||||
/*
|
||||
* circles identical?
|
||||
*
|
||||
* We consider NaNs values to be equal to each other to let those circles
|
||||
* to be found.
|
||||
|
|
@ -4817,7 +4861,8 @@ circle_same(PG_FUNCTION_ARGS)
|
|||
point_eq_point(&circle1->center, &circle2->center));
|
||||
}
|
||||
|
||||
/* circle_overlap - does circle1 overlap circle2?
|
||||
/*
|
||||
* circle_overlap - does circle1 overlap circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_overlap(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4829,7 +4874,8 @@ circle_overlap(PG_FUNCTION_ARGS)
|
|||
float8_pl(circle1->radius, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_overleft - is the right edge of circle1 at or left of
|
||||
/*
|
||||
* circle_overleft - is the right edge of circle1 at or left of
|
||||
* the right edge of circle2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4842,7 +4888,8 @@ circle_overleft(PG_FUNCTION_ARGS)
|
|||
float8_pl(circle2->center.x, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_left - is circle1 strictly left of circle2?
|
||||
/*
|
||||
* circle_left - is circle1 strictly left of circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_left(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4854,7 +4901,8 @@ circle_left(PG_FUNCTION_ARGS)
|
|||
float8_mi(circle2->center.x, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_right - is circle1 strictly right of circle2?
|
||||
/*
|
||||
* circle_right - is circle1 strictly right of circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_right(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4866,7 +4914,8 @@ circle_right(PG_FUNCTION_ARGS)
|
|||
float8_pl(circle2->center.x, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_overright - is the left edge of circle1 at or right of
|
||||
/*
|
||||
* circle_overright - is the left edge of circle1 at or right of
|
||||
* the left edge of circle2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4879,7 +4928,8 @@ circle_overright(PG_FUNCTION_ARGS)
|
|||
float8_mi(circle2->center.x, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_contained - is circle1 contained by circle2?
|
||||
/*
|
||||
* circle_contained - is circle1 contained by circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_contained(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4891,7 +4941,8 @@ circle_contained(PG_FUNCTION_ARGS)
|
|||
float8_mi(circle2->radius, circle1->radius)));
|
||||
}
|
||||
|
||||
/* circle_contain - does circle1 contain circle2?
|
||||
/*
|
||||
* circle_contain - does circle1 contain circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_contain(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4904,7 +4955,8 @@ circle_contain(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_below - is circle1 strictly below circle2?
|
||||
/*
|
||||
* circle_below - is circle1 strictly below circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_below(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4916,7 +4968,8 @@ circle_below(PG_FUNCTION_ARGS)
|
|||
float8_mi(circle2->center.y, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_above - is circle1 strictly above circle2?
|
||||
/*
|
||||
* circle_above - is circle1 strictly above circle2?
|
||||
*/
|
||||
Datum
|
||||
circle_above(PG_FUNCTION_ARGS)
|
||||
|
|
@ -4928,7 +4981,8 @@ circle_above(PG_FUNCTION_ARGS)
|
|||
float8_pl(circle2->center.y, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_overbelow - is the upper edge of circle1 at or below
|
||||
/*
|
||||
* circle_overbelow - is the upper edge of circle1 at or below
|
||||
* the upper edge of circle2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4941,7 +4995,8 @@ circle_overbelow(PG_FUNCTION_ARGS)
|
|||
float8_pl(circle2->center.y, circle2->radius)));
|
||||
}
|
||||
|
||||
/* circle_overabove - is the lower edge of circle1 at or above
|
||||
/*
|
||||
* circle_overabove - is the lower edge of circle1 at or above
|
||||
* the lower edge of circle2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4955,7 +5010,8 @@ circle_overabove(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_relop - is area(circle1) relop area(circle2), within
|
||||
/*
|
||||
* circle_relop - is area(circle1) relop area(circle2), within
|
||||
* our accuracy constraint?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5017,7 +5073,8 @@ circle_ge(PG_FUNCTION_ARGS)
|
|||
* "Arithmetic" operators on circles.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* circle_add_pt()
|
||||
/*
|
||||
* circle_add_pt()
|
||||
* Translation operator.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5051,7 +5108,8 @@ circle_sub_pt(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_mul_pt()
|
||||
/*
|
||||
* circle_mul_pt()
|
||||
* Rotation and scaling operators.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5085,7 +5143,8 @@ circle_div_pt(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_area - returns the area of the circle.
|
||||
/*
|
||||
* circle_area - returns the area of the circle.
|
||||
*/
|
||||
Datum
|
||||
circle_area(PG_FUNCTION_ARGS)
|
||||
|
|
@ -5096,7 +5155,8 @@ circle_area(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_diameter - returns the diameter of the circle.
|
||||
/*
|
||||
* circle_diameter - returns the diameter of the circle.
|
||||
*/
|
||||
Datum
|
||||
circle_diameter(PG_FUNCTION_ARGS)
|
||||
|
|
@ -5107,7 +5167,8 @@ circle_diameter(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_radius - returns the radius of the circle.
|
||||
/*
|
||||
* circle_radius - returns the radius of the circle.
|
||||
*/
|
||||
Datum
|
||||
circle_radius(PG_FUNCTION_ARGS)
|
||||
|
|
@ -5118,7 +5179,8 @@ circle_radius(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_distance - returns the distance between
|
||||
/*
|
||||
* circle_distance - returns the distance between
|
||||
* two circles.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5161,7 +5223,8 @@ pt_contained_circle(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* dist_pc - returns the distance between
|
||||
/*
|
||||
* dist_pc - returns the distance between
|
||||
* a point and a circle.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5196,7 +5259,8 @@ dist_cpoint(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_FLOAT8(result);
|
||||
}
|
||||
|
||||
/* circle_center - returns the center point of the circle.
|
||||
/*
|
||||
* circle_center - returns the center point of the circle.
|
||||
*/
|
||||
Datum
|
||||
circle_center(PG_FUNCTION_ARGS)
|
||||
|
|
@ -5212,7 +5276,8 @@ circle_center(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* circle_ar - returns the area of the circle.
|
||||
/*
|
||||
* circle_ar - returns the area of the circle.
|
||||
*/
|
||||
static float8
|
||||
circle_ar(CIRCLE *circle)
|
||||
|
|
@ -5276,7 +5341,8 @@ fail:
|
|||
PG_RETURN_NULL();
|
||||
}
|
||||
|
||||
/* box_circle()
|
||||
/*
|
||||
* box_circle()
|
||||
* Convert a box to a circle.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5536,7 +5602,8 @@ point_inside(Point *p, int npts, Point *plist)
|
|||
}
|
||||
|
||||
|
||||
/* lseg_crossing()
|
||||
/*
|
||||
* lseg_crossing()
|
||||
* Returns +/-2 if line segment crosses the positive X-axis in a +/- direction.
|
||||
* Returns +/-1 if one point is on the positive X-axis.
|
||||
* Returns 0 if both points are on the positive X-axis, or there is no crossing.
|
||||
|
|
|
|||
|
|
@ -1213,7 +1213,8 @@ int2mod(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* int[24]abs()
|
||||
/*
|
||||
* int[24]abs()
|
||||
* Absolute value
|
||||
*/
|
||||
Datum
|
||||
|
|
|
|||
|
|
@ -44,7 +44,8 @@ typedef struct
|
|||
* Formatting and conversion routines.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* int8in()
|
||||
/*
|
||||
* int8in()
|
||||
*/
|
||||
Datum
|
||||
int8in(PG_FUNCTION_ARGS)
|
||||
|
|
@ -55,7 +56,8 @@ int8in(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* int8out()
|
||||
/*
|
||||
* int8out()
|
||||
*/
|
||||
Datum
|
||||
int8out(PG_FUNCTION_ARGS)
|
||||
|
|
@ -106,7 +108,8 @@ int8send(PG_FUNCTION_ARGS)
|
|||
* Relational operators for int8s, including cross-data-type comparisons.
|
||||
*---------------------------------------------------------*/
|
||||
|
||||
/* int8relop()
|
||||
/*
|
||||
* int8relop()
|
||||
* Is val1 relop val2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -163,7 +166,8 @@ int8ge(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(val1 >= val2);
|
||||
}
|
||||
|
||||
/* int84relop()
|
||||
/*
|
||||
* int84relop()
|
||||
* Is 64-bit val1 relop 32-bit val2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -220,7 +224,8 @@ int84ge(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(val1 >= val2);
|
||||
}
|
||||
|
||||
/* int48relop()
|
||||
/*
|
||||
* int48relop()
|
||||
* Is 32-bit val1 relop 64-bit val2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -277,7 +282,8 @@ int48ge(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(val1 >= val2);
|
||||
}
|
||||
|
||||
/* int82relop()
|
||||
/*
|
||||
* int82relop()
|
||||
* Is 64-bit val1 relop 16-bit val2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -334,7 +340,8 @@ int82ge(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_BOOL(val1 >= val2);
|
||||
}
|
||||
|
||||
/* int28relop()
|
||||
/*
|
||||
* int28relop()
|
||||
* Is 16-bit val1 relop 64-bit val2?
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -539,7 +546,8 @@ int8div(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INT64(result);
|
||||
}
|
||||
|
||||
/* int8abs()
|
||||
/*
|
||||
* int8abs()
|
||||
* Absolute value
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -556,7 +564,8 @@ int8abs(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INT64(result);
|
||||
}
|
||||
|
||||
/* int8mod()
|
||||
/*
|
||||
* int8mod()
|
||||
* Modulo operation.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1170,7 +1179,8 @@ int28div(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INT64((int64) arg1 / arg2);
|
||||
}
|
||||
|
||||
/* Binary arithmetics
|
||||
/*
|
||||
* Binary arithmetics
|
||||
*
|
||||
* int8and - returns arg1 & arg2
|
||||
* int8or - returns arg1 | arg2
|
||||
|
|
@ -1290,7 +1300,8 @@ i8tod(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_FLOAT8(result);
|
||||
}
|
||||
|
||||
/* dtoi8()
|
||||
/*
|
||||
* dtoi8()
|
||||
* Convert float8 to 8-byte integer.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1325,7 +1336,8 @@ i8tof(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_FLOAT4(result);
|
||||
}
|
||||
|
||||
/* ftoi8()
|
||||
/*
|
||||
* ftoi8()
|
||||
* Convert float4 to 8-byte integer.
|
||||
*/
|
||||
Datum
|
||||
|
|
|
|||
|
|
@ -768,7 +768,7 @@ pg_try_advisory_xact_lock_shared_int8(PG_FUNCTION_ARGS)
|
|||
* pg_advisory_unlock(int8) - release exclusive lock on an int8 key
|
||||
*
|
||||
* Returns true if successful, false if lock was not held
|
||||
*/
|
||||
*/
|
||||
Datum
|
||||
pg_advisory_unlock_int8(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
@ -958,7 +958,7 @@ pg_try_advisory_xact_lock_shared_int4(PG_FUNCTION_ARGS)
|
|||
* pg_advisory_unlock(int4, int4) - release exclusive lock on 2 int4 keys
|
||||
*
|
||||
* Returns true if successful, false if lock was not held
|
||||
*/
|
||||
*/
|
||||
Datum
|
||||
pg_advisory_unlock_int4(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1337,10 +1337,10 @@ pg_stat_get_buf_alloc(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
/*
|
||||
* When adding a new column to the pg_stat_io view and the
|
||||
* pg_stat_get_backend_io() function, add a new enum value here above
|
||||
* IO_NUM_COLUMNS.
|
||||
*/
|
||||
* When adding a new column to the pg_stat_io view and the
|
||||
* pg_stat_get_backend_io() function, add a new enum value here above
|
||||
* IO_NUM_COLUMNS.
|
||||
*/
|
||||
typedef enum io_stat_col
|
||||
{
|
||||
IO_COL_INVALID = -1,
|
||||
|
|
|
|||
|
|
@ -5970,7 +5970,7 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid,
|
|||
/*
|
||||
* strip_all_phvs_deep
|
||||
* Deeply strip all PlaceHolderVars in an expression.
|
||||
|
||||
*
|
||||
* As a performance optimization, we first use a lightweight walker to check
|
||||
* for the presence of any PlaceHolderVars. The expensive mutator is invoked
|
||||
* only if a PlaceHolderVar is found, avoiding unnecessary memory allocation
|
||||
|
|
|
|||
|
|
@ -150,7 +150,8 @@ anytimestamp_typmodout(bool istz, int32 typmod)
|
|||
* USER I/O ROUTINES *
|
||||
*****************************************************************************/
|
||||
|
||||
/* timestamp_in()
|
||||
/*
|
||||
* timestamp_in()
|
||||
* Convert a string to internal form.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -218,7 +219,8 @@ timestamp_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* timestamp_out()
|
||||
/*
|
||||
* timestamp_out()
|
||||
* Convert a timestamp to external form.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -330,7 +332,8 @@ timestamp_support(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_POINTER(ret);
|
||||
}
|
||||
|
||||
/* timestamp_scale()
|
||||
/*
|
||||
* timestamp_scale()
|
||||
* Adjust time type for specified scale factor.
|
||||
* Used by PostgreSQL type system to stuff columns.
|
||||
*/
|
||||
|
|
@ -403,7 +406,8 @@ AdjustTimestampForTypmod(Timestamp *time, int32 typmod, Node *escontext)
|
|||
return true;
|
||||
}
|
||||
|
||||
/* timestamptz_in()
|
||||
/*
|
||||
* timestamptz_in()
|
||||
* Convert a string to internal form.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -761,7 +765,8 @@ float8_timestamptz(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* timestamptz_out()
|
||||
/*
|
||||
* timestamptz_out()
|
||||
* Convert a timestamp to external form.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -854,7 +859,8 @@ timestamptztypmodout(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamptz_scale()
|
||||
/*
|
||||
* timestamptz_scale()
|
||||
* Adjust time type for specified scale factor.
|
||||
* Used by PostgreSQL type system to stuff columns.
|
||||
*/
|
||||
|
|
@ -874,7 +880,8 @@ timestamptz_scale(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* interval_in()
|
||||
/*
|
||||
* interval_in()
|
||||
* Convert a string to internal form.
|
||||
*
|
||||
* External format(s):
|
||||
|
|
@ -959,7 +966,8 @@ interval_in(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INTERVAL_P(result);
|
||||
}
|
||||
|
||||
/* interval_out()
|
||||
/*
|
||||
* interval_out()
|
||||
* Convert a time span to external form.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -1313,7 +1321,8 @@ interval_support(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_POINTER(ret);
|
||||
}
|
||||
|
||||
/* interval_scale()
|
||||
/*
|
||||
* interval_scale()
|
||||
* Adjust interval type for specified fields.
|
||||
* Used by PostgreSQL type system to stuff columns.
|
||||
*/
|
||||
|
|
@ -1574,7 +1583,8 @@ out_of_range:
|
|||
PG_RETURN_NULL(); /* keep compiler quiet */
|
||||
}
|
||||
|
||||
/* EncodeSpecialTimestamp()
|
||||
/*
|
||||
* EncodeSpecialTimestamp()
|
||||
* Convert reserved timestamp data type to string.
|
||||
*/
|
||||
void
|
||||
|
|
@ -1993,7 +2003,8 @@ timestamp2tm(Timestamp dt, int *tzp, struct pg_tm *tm, fsec_t *fsec, const char
|
|||
}
|
||||
|
||||
|
||||
/* tm2timestamp()
|
||||
/*
|
||||
* tm2timestamp()
|
||||
* Convert a tm structure to a timestamp data type.
|
||||
* Note that year is _not_ 1900-based, but is an explicit full value.
|
||||
* Also, month is one-based, _not_ zero-based.
|
||||
|
|
@ -2036,7 +2047,8 @@ tm2timestamp(struct pg_tm *tm, fsec_t fsec, int *tzp, Timestamp *result)
|
|||
}
|
||||
|
||||
|
||||
/* interval2itm()
|
||||
/*
|
||||
* interval2itm()
|
||||
* Convert an Interval to a pg_itm structure.
|
||||
* Note: overflow is not possible, because the pg_itm fields are
|
||||
* wide enough for all possible conversion results.
|
||||
|
|
@ -2064,7 +2076,8 @@ interval2itm(Interval span, struct pg_itm *itm)
|
|||
itm->tm_usec = (int) time;
|
||||
}
|
||||
|
||||
/* itm2interval()
|
||||
/*
|
||||
* itm2interval()
|
||||
* Convert a pg_itm structure to an Interval.
|
||||
* Returns 0 if OK, -1 on overflow.
|
||||
*
|
||||
|
|
@ -2098,7 +2111,8 @@ itm2interval(struct pg_itm *itm, Interval *span)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* itmin2interval()
|
||||
/*
|
||||
* itmin2interval()
|
||||
* Convert a pg_itm_in structure to an Interval.
|
||||
* Returns 0 if OK, -1 on overflow.
|
||||
*
|
||||
|
|
@ -2660,7 +2674,8 @@ interval_hash_extended(PG_FUNCTION_ARGS)
|
|||
PG_GETARG_DATUM(1));
|
||||
}
|
||||
|
||||
/* overlaps_timestamp() --- implements the SQL OVERLAPS operator.
|
||||
/*
|
||||
* overlaps_timestamp() --- implements the SQL OVERLAPS operator.
|
||||
*
|
||||
* Algorithm is per SQL spec. This is much harder than you'd think
|
||||
* because the spec requires us to deliver a non-null answer in some cases
|
||||
|
|
@ -3074,7 +3089,8 @@ interval_justify_days(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INTERVAL_P(result);
|
||||
}
|
||||
|
||||
/* timestamp_pl_interval()
|
||||
/*
|
||||
* timestamp_pl_interval()
|
||||
* Add an interval to a timestamp data type.
|
||||
* Note that interval has provisions for qualitative year/month and day
|
||||
* units, so try to do the right thing with them.
|
||||
|
|
@ -3216,7 +3232,8 @@ timestamp_mi_interval(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamptz_pl_interval_internal()
|
||||
/*
|
||||
* timestamptz_pl_interval_internal()
|
||||
* Add an interval to a timestamptz, in the given (or session) timezone.
|
||||
*
|
||||
* Note that interval has provisions for qualitative year/month and day
|
||||
|
|
@ -3356,7 +3373,8 @@ timestamptz_pl_interval_internal(TimestampTz timestamp,
|
|||
return result;
|
||||
}
|
||||
|
||||
/* timestamptz_mi_interval_internal()
|
||||
/*
|
||||
* timestamptz_mi_interval_internal()
|
||||
* As above, but subtract the interval.
|
||||
*/
|
||||
static TimestampTz
|
||||
|
|
@ -3371,7 +3389,8 @@ timestamptz_mi_interval_internal(TimestampTz timestamp,
|
|||
return timestamptz_pl_interval_internal(timestamp, &tspan, attimezone);
|
||||
}
|
||||
|
||||
/* timestamptz_pl_interval()
|
||||
/*
|
||||
* timestamptz_pl_interval()
|
||||
* Add an interval to a timestamptz, in the session timezone.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -3392,7 +3411,8 @@ timestamptz_mi_interval(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(timestamptz_mi_interval_internal(timestamp, span, NULL));
|
||||
}
|
||||
|
||||
/* timestamptz_pl_interval_at_zone()
|
||||
/*
|
||||
* timestamptz_pl_interval_at_zone()
|
||||
* Add an interval to a timestamptz, in the specified timezone.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -3417,7 +3437,8 @@ timestamptz_mi_interval_at_zone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(timestamptz_mi_interval_internal(timestamp, span, attimezone));
|
||||
}
|
||||
|
||||
/* interval_um_internal()
|
||||
/*
|
||||
* interval_um_internal()
|
||||
* Negate an interval.
|
||||
*/
|
||||
static void
|
||||
|
|
@ -4276,7 +4297,8 @@ interval_sum(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INTERVAL_P(result);
|
||||
}
|
||||
|
||||
/* timestamp_age()
|
||||
/*
|
||||
* timestamp_age()
|
||||
* Calculate time difference while retaining year/month fields.
|
||||
* Note that this does not result in an accurate absolute time span
|
||||
* since year and month are out of context once the arithmetic
|
||||
|
|
@ -4422,7 +4444,8 @@ timestamp_age(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamptz_age()
|
||||
/*
|
||||
* timestamptz_age()
|
||||
* Calculate time difference while retaining year/month fields.
|
||||
* Note that this does not result in an accurate absolute time span
|
||||
* since year and month are out of context once the arithmetic
|
||||
|
|
@ -4579,7 +4602,8 @@ timestamptz_age(PG_FUNCTION_ARGS)
|
|||
*---------------------------------------------------------*/
|
||||
|
||||
|
||||
/* timestamp_bin()
|
||||
/*
|
||||
* timestamp_bin()
|
||||
* Bin timestamp into specified interval.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4650,7 +4674,8 @@ timestamp_bin(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* timestamp_trunc()
|
||||
/*
|
||||
* timestamp_trunc()
|
||||
* Truncate timestamp to specified units.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -4814,7 +4839,8 @@ timestamp_trunc(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* timestamptz_bin()
|
||||
/*
|
||||
* timestamptz_bin()
|
||||
* Bin timestamptz into specified interval using specified origin.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5066,7 +5092,8 @@ timestamptz_trunc_internal(text *units, TimestampTz timestamp, pg_tz *tzp)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* timestamptz_trunc()
|
||||
/*
|
||||
* timestamptz_trunc()
|
||||
* Truncate timestamptz to specified units in session timezone.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5081,7 +5108,8 @@ timestamptz_trunc(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMPTZ(result);
|
||||
}
|
||||
|
||||
/* timestamptz_trunc_zone()
|
||||
/*
|
||||
* timestamptz_trunc_zone()
|
||||
* Truncate timestamptz to specified units in specified timezone.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5103,7 +5131,8 @@ timestamptz_trunc_zone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMPTZ(result);
|
||||
}
|
||||
|
||||
/* interval_trunc()
|
||||
/*
|
||||
* interval_trunc()
|
||||
* Extract specified field from interval.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -5229,7 +5258,8 @@ interval_trunc(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_INTERVAL_P(result);
|
||||
}
|
||||
|
||||
/* isoweek2j()
|
||||
/*
|
||||
* isoweek2j()
|
||||
*
|
||||
* Return the Julian day which corresponds to the first day (Monday) of the given ISO 8601 year and week.
|
||||
* Julian days are used to convert between ISO week dates and Gregorian dates.
|
||||
|
|
@ -5253,7 +5283,8 @@ isoweek2j(int year, int week)
|
|||
return ((week - 1) * 7) + (day4 - day0);
|
||||
}
|
||||
|
||||
/* isoweek2date()
|
||||
/*
|
||||
* isoweek2date()
|
||||
* Convert ISO week of year number to date.
|
||||
* The year field must be specified with the ISO year!
|
||||
* karel 2000/08/07
|
||||
|
|
@ -5264,7 +5295,8 @@ isoweek2date(int woy, int *year, int *mon, int *mday)
|
|||
j2date(isoweek2j(*year, woy), year, mon, mday);
|
||||
}
|
||||
|
||||
/* isoweekdate2date()
|
||||
/*
|
||||
* isoweekdate2date()
|
||||
*
|
||||
* Convert an ISO 8601 week date (ISO year, ISO week) into a Gregorian date.
|
||||
* Gregorian day of week sent so weekday strings can be supplied.
|
||||
|
|
@ -5285,7 +5317,8 @@ isoweekdate2date(int isoweek, int wday, int *year, int *mon, int *mday)
|
|||
j2date(jday, year, mon, mday);
|
||||
}
|
||||
|
||||
/* date2isoweek()
|
||||
/*
|
||||
* date2isoweek()
|
||||
*
|
||||
* Returns ISO week number of year.
|
||||
*/
|
||||
|
|
@ -5339,7 +5372,8 @@ date2isoweek(int year, int mon, int mday)
|
|||
}
|
||||
|
||||
|
||||
/* date2isoyear()
|
||||
/*
|
||||
* date2isoyear()
|
||||
*
|
||||
* Returns ISO 8601 year number.
|
||||
* Note: zero or negative results follow the year-zero-exists convention.
|
||||
|
|
@ -5396,7 +5430,8 @@ date2isoyear(int year, int mon, int mday)
|
|||
}
|
||||
|
||||
|
||||
/* date2isoyearday()
|
||||
/*
|
||||
* date2isoyearday()
|
||||
*
|
||||
* Returns the ISO 8601 day-of-year, given a Gregorian year, month and day.
|
||||
* Possible return values are 1 through 371 (364 in non-leap years).
|
||||
|
|
@ -5472,7 +5507,8 @@ NonFiniteTimestampTzPart(int type, int unit, char *lowunits,
|
|||
}
|
||||
}
|
||||
|
||||
/* timestamp_part() and extract_timestamp()
|
||||
/*
|
||||
* timestamp_part() and extract_timestamp()
|
||||
* Extract specified field from timestamp.
|
||||
*/
|
||||
static Datum
|
||||
|
|
@ -5745,7 +5781,8 @@ extract_timestamp(PG_FUNCTION_ARGS)
|
|||
return timestamp_part_common(fcinfo, true);
|
||||
}
|
||||
|
||||
/* timestamptz_part() and extract_timestamptz()
|
||||
/*
|
||||
* timestamptz_part() and extract_timestamptz()
|
||||
* Extract specified field from timestamp with time zone.
|
||||
*/
|
||||
static Datum
|
||||
|
|
@ -6071,7 +6108,8 @@ NonFiniteIntervalPart(int type, int unit, char *lowunits, bool isNegative)
|
|||
}
|
||||
}
|
||||
|
||||
/* interval_part() and extract_interval()
|
||||
/*
|
||||
* interval_part() and extract_interval()
|
||||
* Extract specified field from interval.
|
||||
*/
|
||||
static Datum
|
||||
|
|
@ -6294,7 +6332,8 @@ extract_interval(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamp_zone()
|
||||
/*
|
||||
* timestamp_zone()
|
||||
* Encode timestamp type with specified time zone.
|
||||
* This function is just timestamp2timestamptz() except instead of
|
||||
* shifting to the global timezone, we shift to the specified timezone.
|
||||
|
|
@ -6364,7 +6403,8 @@ timestamp_zone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMPTZ(result);
|
||||
}
|
||||
|
||||
/* timestamp_izone()
|
||||
/*
|
||||
* timestamp_izone()
|
||||
* Encode timestamp type with specified time interval as time zone.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -6404,7 +6444,8 @@ timestamp_izone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMPTZ(result);
|
||||
} /* timestamp_izone() */
|
||||
|
||||
/* TimestampTimestampTzRequiresRewrite()
|
||||
/*
|
||||
* TimestampTimestampTzRequiresRewrite()
|
||||
*
|
||||
* Returns false if the TimeZone GUC setting causes timestamp_timestamptz and
|
||||
* timestamptz_timestamp to be no-ops, where the return value has the same
|
||||
|
|
@ -6421,7 +6462,8 @@ TimestampTimestampTzRequiresRewrite(void)
|
|||
return true;
|
||||
}
|
||||
|
||||
/* timestamp_timestamptz()
|
||||
/*
|
||||
* timestamp_timestamptz()
|
||||
* Convert local timestamp to timestamp at GMT
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -6489,7 +6531,8 @@ timestamp2timestamptz(Timestamp timestamp)
|
|||
return timestamp2timestamptz_safe(timestamp, NULL);
|
||||
}
|
||||
|
||||
/* timestamptz_timestamp()
|
||||
/*
|
||||
* timestamptz_timestamp()
|
||||
* Convert timestamp at GMT to local timestamp
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -6563,7 +6606,8 @@ timestamptz2timestamp_safe(TimestampTz timestamp, Node *escontext)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* timestamptz_zone()
|
||||
/*
|
||||
* timestamptz_zone()
|
||||
* Evaluate timestamp with time zone type at the specified time zone.
|
||||
* Returns a timestamp without time zone.
|
||||
*/
|
||||
|
|
@ -6627,7 +6671,8 @@ timestamptz_zone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* timestamptz_izone()
|
||||
/*
|
||||
* timestamptz_izone()
|
||||
* Encode timestamp with time zone type with specified time interval as time zone.
|
||||
* Returns a timestamp without time zone.
|
||||
*/
|
||||
|
|
@ -6668,7 +6713,8 @@ timestamptz_izone(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_TIMESTAMP(result);
|
||||
}
|
||||
|
||||
/* generate_series_timestamp()
|
||||
/*
|
||||
* generate_series_timestamp()
|
||||
* Generate the set of timestamps from start to finish by step
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -6750,7 +6796,8 @@ generate_series_timestamp(PG_FUNCTION_ARGS)
|
|||
}
|
||||
}
|
||||
|
||||
/* generate_series_timestamptz()
|
||||
/*
|
||||
* generate_series_timestamptz()
|
||||
* Generate the set of timestamps from start to finish by step,
|
||||
* doing arithmetic in the specified or session timezone.
|
||||
*/
|
||||
|
|
@ -6934,7 +6981,8 @@ generate_series_timestamp_support(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* timestamp_at_local()
|
||||
/*
|
||||
* timestamp_at_local()
|
||||
* timestamptz_at_local()
|
||||
*
|
||||
* The regression tests do not like two functions with the same proargs and
|
||||
|
|
|
|||
|
|
@ -346,7 +346,8 @@ bpchar(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* char_bpchar()
|
||||
/*
|
||||
* char_bpchar()
|
||||
* Convert char to bpchar(1).
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -364,7 +365,8 @@ char_bpchar(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* bpchar_name()
|
||||
/*
|
||||
* bpchar_name()
|
||||
* Converts a bpchar() type to a NameData type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -397,7 +399,8 @@ bpchar_name(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_NAME(result);
|
||||
}
|
||||
|
||||
/* name_bpchar()
|
||||
/*
|
||||
* name_bpchar()
|
||||
* Converts a NameData type to a bpchar type.
|
||||
*
|
||||
* Uses the text conversion functions, which is only appropriate if BpChar
|
||||
|
|
|
|||
|
|
@ -1395,7 +1395,8 @@ varstr_cmp(const char *arg1, int len1, const char *arg2, int len2, Oid collid)
|
|||
return result;
|
||||
}
|
||||
|
||||
/* text_cmp()
|
||||
/*
|
||||
* text_cmp()
|
||||
* Internal comparison function for text strings.
|
||||
* Returns -1, 0 or 1
|
||||
*/
|
||||
|
|
@ -2672,7 +2673,8 @@ bttext_pattern_sortsupport(PG_FUNCTION_ARGS)
|
|||
}
|
||||
|
||||
|
||||
/* text_name()
|
||||
/*
|
||||
* text_name()
|
||||
* Converts a text type to a Name type.
|
||||
*/
|
||||
Datum
|
||||
|
|
@ -2695,7 +2697,8 @@ text_name(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_NAME(result);
|
||||
}
|
||||
|
||||
/* name_text()
|
||||
/*
|
||||
* name_text()
|
||||
* Converts a Name type to a text type.
|
||||
*/
|
||||
Datum
|
||||
|
|
|
|||
|
|
@ -1091,7 +1091,7 @@ errcode_for_socket_access(void)
|
|||
* ereport will provide one for the output methods that need it.
|
||||
*/
|
||||
int
|
||||
errmsg(const char *fmt,...)
|
||||
errmsg(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1346,7 +1346,7 @@ backtrace_cleanup(int code, Datum arg)
|
|||
* error recursion.
|
||||
*/
|
||||
int
|
||||
errmsg_internal(const char *fmt,...)
|
||||
errmsg_internal(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1370,7 +1370,7 @@ errmsg_internal(const char *fmt,...)
|
|||
*/
|
||||
int
|
||||
errmsg_plural(const char *fmt_singular, const char *fmt_plural,
|
||||
unsigned long n,...)
|
||||
unsigned long n, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1392,7 +1392,7 @@ errmsg_plural(const char *fmt_singular, const char *fmt_plural,
|
|||
* errdetail --- add a detail error message text to the current error
|
||||
*/
|
||||
int
|
||||
errdetail(const char *fmt,...)
|
||||
errdetail(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1419,7 +1419,7 @@ errdetail(const char *fmt,...)
|
|||
* (typically, that they don't seem to be useful to average users).
|
||||
*/
|
||||
int
|
||||
errdetail_internal(const char *fmt,...)
|
||||
errdetail_internal(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1440,7 +1440,7 @@ errdetail_internal(const char *fmt,...)
|
|||
* errdetail_log --- add a detail_log error message text to the current error
|
||||
*/
|
||||
int
|
||||
errdetail_log(const char *fmt,...)
|
||||
errdetail_log(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1462,7 +1462,7 @@ errdetail_log(const char *fmt,...)
|
|||
*/
|
||||
int
|
||||
errdetail_log_plural(const char *fmt_singular, const char *fmt_plural,
|
||||
unsigned long n,...)
|
||||
unsigned long n, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1485,7 +1485,7 @@ errdetail_log_plural(const char *fmt_singular, const char *fmt_plural,
|
|||
*/
|
||||
int
|
||||
errdetail_plural(const char *fmt_singular, const char *fmt_plural,
|
||||
unsigned long n,...)
|
||||
unsigned long n, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1506,7 +1506,7 @@ errdetail_plural(const char *fmt_singular, const char *fmt_plural,
|
|||
* errhint --- add a hint error message text to the current error
|
||||
*/
|
||||
int
|
||||
errhint(const char *fmt,...)
|
||||
errhint(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1528,7 +1528,7 @@ errhint(const char *fmt,...)
|
|||
* Non-translated version of errhint(), see also errmsg_internal().
|
||||
*/
|
||||
int
|
||||
errhint_internal(const char *fmt,...)
|
||||
errhint_internal(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1550,7 +1550,7 @@ errhint_internal(const char *fmt,...)
|
|||
*/
|
||||
int
|
||||
errhint_plural(const char *fmt_singular, const char *fmt_plural,
|
||||
unsigned long n,...)
|
||||
unsigned long n, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1575,7 +1575,7 @@ errhint_plural(const char *fmt_singular, const char *fmt_plural,
|
|||
* states.
|
||||
*/
|
||||
int
|
||||
errcontext_msg(const char *fmt,...)
|
||||
errcontext_msg(const char *fmt, ...)
|
||||
{
|
||||
ErrorData *edata = &errordata[errordata_stack_depth];
|
||||
MemoryContext oldcontext;
|
||||
|
|
@ -1847,7 +1847,7 @@ pre_format_elog_string(int errnumber, const char *domain)
|
|||
}
|
||||
|
||||
char *
|
||||
format_elog_string(const char *fmt,...)
|
||||
format_elog_string(const char *fmt, ...)
|
||||
{
|
||||
ErrorData errdata;
|
||||
ErrorData *edata;
|
||||
|
|
@ -4226,7 +4226,7 @@ append_with_tabs(StringInfo buf, const char *str)
|
|||
* safely (memory context, GUC load etc)
|
||||
*/
|
||||
void
|
||||
write_stderr(const char *fmt,...)
|
||||
write_stderr(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
static void appendJSONKeyValueFmt(StringInfo buf, const char *key,
|
||||
bool escape_key,
|
||||
const char *fmt,...) pg_attribute_printf(4, 5);
|
||||
const char *fmt, ...) pg_attribute_printf(4, 5);
|
||||
|
||||
/*
|
||||
* appendJSONKeyValue
|
||||
|
|
@ -68,7 +68,7 @@ appendJSONKeyValue(StringInfo buf, const char *key, const char *value,
|
|||
*/
|
||||
static void
|
||||
appendJSONKeyValueFmt(StringInfo buf, const char *key,
|
||||
bool escape_key, const char *fmt,...)
|
||||
bool escape_key, const char *fmt, ...)
|
||||
{
|
||||
int save_errno = errno;
|
||||
size_t len = 128; /* initial assumption about buffer size */
|
||||
|
|
|
|||
|
|
@ -1178,7 +1178,8 @@ pg_mbstrlen(const char *mbstr)
|
|||
return len;
|
||||
}
|
||||
|
||||
/* returns the length (counted in wchars) of a multibyte string
|
||||
/*
|
||||
* returns the length (counted in wchars) of a multibyte string
|
||||
* (stops at the first of "limit" or a NUL)
|
||||
*/
|
||||
int
|
||||
|
|
|
|||
|
|
@ -261,7 +261,7 @@ static bool valid_custom_variable_name(const char *name);
|
|||
static bool assignable_custom_variable_name(const char *name, bool skip_errors,
|
||||
int elevel);
|
||||
static void do_serialize(char **destptr, Size *maxbytes,
|
||||
const char *fmt,...) pg_attribute_printf(3, 4);
|
||||
const char *fmt, ...) pg_attribute_printf(3, 4);
|
||||
static bool call_bool_check_hook(const struct config_generic *conf, bool *newval,
|
||||
void **extra, GucSource source, int elevel);
|
||||
static bool call_int_check_hook(const struct config_generic *conf, int *newval,
|
||||
|
|
@ -5883,7 +5883,7 @@ EstimateGUCStateSpace(void)
|
|||
* maxbytes is not sufficient to copy the string, error out.
|
||||
*/
|
||||
static void
|
||||
do_serialize(char **destptr, Size *maxbytes, const char *fmt,...)
|
||||
do_serialize(char **destptr, Size *maxbytes, const char *fmt, ...)
|
||||
{
|
||||
va_list vargs;
|
||||
int n;
|
||||
|
|
|
|||
|
|
@ -120,15 +120,15 @@ static inline void BumpBlockFree(BumpContext *set, BumpBlock *block);
|
|||
|
||||
|
||||
/*
|
||||
* BumpContextCreate
|
||||
* Create a new Bump context.
|
||||
*
|
||||
* parent: parent context, or NULL if top-level context
|
||||
* name: name of context (must be statically allocated)
|
||||
* minContextSize: minimum context size
|
||||
* initBlockSize: initial allocation block size
|
||||
* maxBlockSize: maximum allocation block size
|
||||
*/
|
||||
* BumpContextCreate
|
||||
* Create a new Bump context.
|
||||
*
|
||||
* parent: parent context, or NULL if top-level context
|
||||
* name: name of context (must be statically allocated)
|
||||
* minContextSize: minimum context size
|
||||
* initBlockSize: initial allocation block size
|
||||
* maxBlockSize: maximum allocation block size
|
||||
*/
|
||||
MemoryContext
|
||||
BumpContextCreate(MemoryContext parent, const char *name, Size minContextSize,
|
||||
Size initBlockSize, Size maxBlockSize)
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ typedef struct SlabBlock
|
|||
* SlabChunkIndex
|
||||
* Get the 0-based index of how many chunks into the block the given
|
||||
* chunk is.
|
||||
*/
|
||||
*/
|
||||
#define SlabChunkIndex(slab, block, chunk) \
|
||||
(((char *) (chunk) - (char *) SlabBlockGetChunk(slab, block, 0)) / \
|
||||
(slab)->fullChunkSize)
|
||||
|
|
|
|||
|
|
@ -1282,7 +1282,7 @@ ReceiveArchiveStream(PGconn *conn, pg_compress_specification *compress)
|
|||
ReceiveCopyData(conn, ReceiveArchiveStreamChunk, &state);
|
||||
|
||||
/* If we wrote the backup manifest to a file, close the file. */
|
||||
if (state.manifest_file !=NULL)
|
||||
if (state.manifest_file != NULL)
|
||||
{
|
||||
fclose(state.manifest_file);
|
||||
state.manifest_file = NULL;
|
||||
|
|
@ -1341,7 +1341,7 @@ ReceiveArchiveStreamChunk(size_t r, char *copybuf, void *callback_data)
|
|||
|
||||
/* Sanity check. */
|
||||
if (state->manifest_buffer != NULL ||
|
||||
state->manifest_file !=NULL)
|
||||
state->manifest_file != NULL)
|
||||
pg_fatal("archives must precede manifest");
|
||||
|
||||
/* Parse the rest of the CopyData message. */
|
||||
|
|
@ -1406,7 +1406,7 @@ ReceiveArchiveStreamChunk(size_t r, char *copybuf, void *callback_data)
|
|||
appendPQExpBuffer(state->manifest_buffer, copybuf + 1,
|
||||
r - 1);
|
||||
}
|
||||
else if (state->manifest_file !=NULL)
|
||||
else if (state->manifest_file != NULL)
|
||||
{
|
||||
/* Manifest data, write to disk. */
|
||||
if (fwrite(copybuf + 1, r - 1, 1,
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ static void combinebackup_per_wal_range_cb(JsonManifestParseContext *context,
|
|||
XLogRecPtr start_lsn,
|
||||
XLogRecPtr end_lsn);
|
||||
pg_noreturn static void report_manifest_error(JsonManifestParseContext *context,
|
||||
const char *fmt,...)
|
||||
const char *fmt, ...)
|
||||
pg_attribute_printf(2, 3);
|
||||
|
||||
/*
|
||||
|
|
@ -225,7 +225,7 @@ load_backup_manifest(char *backup_directory)
|
|||
* expects this function not to return.
|
||||
*/
|
||||
static void
|
||||
report_manifest_error(JsonManifestParseContext *context, const char *fmt,...)
|
||||
report_manifest_error(JsonManifestParseContext *context, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ static HANDLE shutdownHandles[2];
|
|||
#endif
|
||||
|
||||
|
||||
static void write_stderr(const char *fmt,...) pg_attribute_printf(1, 2);
|
||||
static void write_stderr(const char *fmt, ...) pg_attribute_printf(1, 2);
|
||||
static void do_advice(void);
|
||||
static void do_help(void);
|
||||
static void set_mode(char *modeopt);
|
||||
|
|
@ -200,7 +200,7 @@ write_eventlog(int level, const char *line)
|
|||
* not available).
|
||||
*/
|
||||
static void
|
||||
write_stderr(const char *fmt,...)
|
||||
write_stderr(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
|
|
|||
|
|
@ -253,7 +253,8 @@ getSchemaData(Archive *fout, int *numTablesPtr)
|
|||
return tblinfo;
|
||||
}
|
||||
|
||||
/* flagInhTables -
|
||||
/*
|
||||
* flagInhTables -
|
||||
* Fill in parent link fields of tables for which we need that information,
|
||||
* mark parents of target tables as interesting, and create
|
||||
* TableAttachInfo objects for partitioned tables with appropriate
|
||||
|
|
@ -448,7 +449,8 @@ flagInhIndexes(Archive *fout, TableInfo tblinfo[], int numTables)
|
|||
}
|
||||
}
|
||||
|
||||
/* flagInhAttrs -
|
||||
/*
|
||||
* flagInhAttrs -
|
||||
* for each dumpable table in tblinfo, flag its inherited attributes
|
||||
*
|
||||
* What we need to do here is:
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ get_object_type(const char *keyword, int size, FilterObjectType *objtype)
|
|||
|
||||
|
||||
void
|
||||
pg_log_filter_error(FilterStateData *fstate, const char *fmt,...)
|
||||
pg_log_filter_error(FilterStateData *fstate, const char *fmt, ...)
|
||||
{
|
||||
va_list argp;
|
||||
char buf[256];
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ typedef enum
|
|||
extern const char *filter_object_type_name(FilterObjectType fot);
|
||||
extern void filter_init(FilterStateData *fstate, const char *filename, exit_function f_exit);
|
||||
extern void filter_free(FilterStateData *fstate);
|
||||
extern void pg_log_filter_error(FilterStateData *fstate, const char *fmt,...)
|
||||
extern void pg_log_filter_error(FilterStateData *fstate, const char *fmt, ...)
|
||||
pg_attribute_printf(2, 3);
|
||||
extern bool filter_read_item(FilterStateData *fstate, char **objname,
|
||||
FilterCommandType *comtype, FilterObjectType *objtype);
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ extern void SortTocFromFile(Archive *AHX);
|
|||
|
||||
/* Convenience functions used only when writing DATA */
|
||||
extern void archputs(const char *s, Archive *AH);
|
||||
extern int archprintf(Archive *AH, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
extern int archprintf(Archive *AH, const char *fmt, ...) pg_attribute_printf(2, 3);
|
||||
|
||||
#define appendStringLiteralAH(buf,str,AH) \
|
||||
appendStringLiteral(buf, str, (AH)->encoding, (AH)->std_strings)
|
||||
|
|
|
|||
|
|
@ -1674,7 +1674,7 @@ archputs(const char *s, Archive *AH)
|
|||
|
||||
/* Public */
|
||||
int
|
||||
archprintf(Archive *AH, const char *fmt,...)
|
||||
archprintf(Archive *AH, const char *fmt, ...)
|
||||
{
|
||||
int save_errno = errno;
|
||||
char *p;
|
||||
|
|
@ -1778,7 +1778,7 @@ RestoreOutput(ArchiveHandle *AH, CompressFileHandle *savedOutput)
|
|||
* Print formatted text to the output file (usually stdout).
|
||||
*/
|
||||
int
|
||||
ahprintf(ArchiveHandle *AH, const char *fmt,...)
|
||||
ahprintf(ArchiveHandle *AH, const char *fmt, ...)
|
||||
{
|
||||
int save_errno = errno;
|
||||
char *p;
|
||||
|
|
@ -1916,7 +1916,7 @@ ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle *AH)
|
|||
|
||||
/* on some error, we may decide to go on... */
|
||||
void
|
||||
warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt,...)
|
||||
warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
|
|
|||
|
|
@ -396,7 +396,7 @@ extern int parallel_restore(ArchiveHandle *AH, TocEntry *te);
|
|||
extern void on_exit_close_archive(Archive *AHX);
|
||||
extern void replace_on_exit_close_archive(Archive *AHX);
|
||||
|
||||
extern void warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
extern void warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt, ...) pg_attribute_printf(2, 3);
|
||||
|
||||
/* Options for ArchiveEntry */
|
||||
typedef struct _archiveOpts
|
||||
|
|
@ -472,6 +472,6 @@ extern void IssueACLPerBlob(ArchiveHandle *AH, TocEntry *te);
|
|||
extern void DropLOIfExists(ArchiveHandle *AH, Oid oid);
|
||||
|
||||
void ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle *AH);
|
||||
int ahprintf(ArchiveHandle *AH, const char *fmt,...) pg_attribute_printf(2, 3);
|
||||
int ahprintf(ArchiveHandle *AH, const char *fmt, ...) pg_attribute_printf(2, 3);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ InitArchiveFmt_Custom(ArchiveHandle *AH)
|
|||
* Optional.
|
||||
*
|
||||
* Set up extract format-related TOC data.
|
||||
*/
|
||||
*/
|
||||
static void
|
||||
_ArchiveEntry(ArchiveHandle *AH, TocEntry *te)
|
||||
{
|
||||
|
|
@ -563,7 +563,7 @@ _PrintTocData(ArchiveHandle *AH, TocEntry *te)
|
|||
|
||||
/*
|
||||
* Print data from current file position.
|
||||
*/
|
||||
*/
|
||||
static void
|
||||
_PrintData(ArchiveHandle *AH)
|
||||
{
|
||||
|
|
@ -617,7 +617,7 @@ _skipLOs(ArchiveHandle *AH)
|
|||
* Skip data from current file position.
|
||||
* Data blocks are formatted as an integer length, followed by data.
|
||||
* A zero length indicates the end of the block.
|
||||
*/
|
||||
*/
|
||||
static void
|
||||
_skipData(ArchiveHandle *AH)
|
||||
{
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue