diff options
Diffstat (limited to 'src/backend')
295 files changed, 6828 insertions, 6616 deletions
diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c index 64995491774..ac5749c7133 100644 --- a/src/backend/access/common/heaptuple.c +++ b/src/backend/access/common/heaptuple.c @@ -50,7 +50,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/heaptuple.c,v 1.126 2009/03/30 04:08:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/heaptuple.c,v 1.127 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -388,7 +388,7 @@ nocachegetattr(HeapTuple tuple, * Now check to see if any preceding bits are null... */ { - int byte = attnum >> 3; + int byte = attnum >> 3; int finalbit = attnum & 0x07; /* check for nulls "before" final bit of last byte */ @@ -1183,7 +1183,7 @@ slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull) { if (tuple == NULL) /* internal error */ elog(ERROR, "cannot extract system attribute from virtual tuple"); - if (tuple == &(slot->tts_minhdr)) /* internal error */ + if (tuple == &(slot->tts_minhdr)) /* internal error */ elog(ERROR, "cannot extract system attribute from minimal tuple"); return heap_getsysattr(tuple, attnum, tupleDesc, isnull); } @@ -1369,7 +1369,7 @@ slot_attisnull(TupleTableSlot *slot, int attnum) { if (tuple == NULL) /* internal error */ elog(ERROR, "cannot extract system attribute from virtual tuple"); - if (tuple == &(slot->tts_minhdr)) /* internal error */ + if (tuple == &(slot->tts_minhdr)) /* internal error */ elog(ERROR, "cannot extract system attribute from minimal tuple"); return heap_attisnull(tuple, attnum); } diff --git a/src/backend/access/common/indextuple.c b/src/backend/access/common/indextuple.c index 839d2429135..cd3b88654bd 100644 --- a/src/backend/access/common/indextuple.c +++ b/src/backend/access/common/indextuple.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/indextuple.c,v 1.87 2009/01/01 17:23:34 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/indextuple.c,v 1.88 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -86,7 +86,7 @@ index_form_tuple(TupleDesc tupleDescriptor, * try to compress it in-line. */ if (!VARATT_IS_EXTENDED(DatumGetPointer(untoasted_values[i])) && - VARSIZE(DatumGetPointer(untoasted_values[i])) > TOAST_INDEX_TARGET && + VARSIZE(DatumGetPointer(untoasted_values[i])) > TOAST_INDEX_TARGET && (att->attstorage == 'x' || att->attstorage == 'm')) { Datum cvalue = toast_compress_datum(untoasted_values[i]); @@ -270,7 +270,7 @@ nocache_index_getattr(IndexTuple tup, * Now check to see if any preceding bits are null... */ { - int byte = attnum >> 3; + int byte = attnum >> 3; int finalbit = attnum & 0x07; /* check for nulls "before" final bit of last byte */ diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c index 324c9781323..13a09dd9b3c 100644 --- a/src/backend/access/common/printtup.c +++ b/src/backend/access/common/printtup.c @@ -9,7 +9,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/printtup.c,v 1.104 2009/01/01 17:23:34 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/printtup.c,v 1.105 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -71,7 +71,7 @@ printtup_create_DR(CommandDest dest) { DR_printtup *self = (DR_printtup *) palloc0(sizeof(DR_printtup)); - self->pub.receiveSlot = printtup; /* might get changed later */ + self->pub.receiveSlot = printtup; /* might get changed later */ self->pub.rStartup = printtup_startup; self->pub.rShutdown = printtup_shutdown; self->pub.rDestroy = printtup_destroy; diff --git a/src/backend/access/common/reloptions.c b/src/backend/access/common/reloptions.c index 2668fd8bfe1..b970601b1c8 100644 --- a/src/backend/access/common/reloptions.c +++ b/src/backend/access/common/reloptions.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.27 2009/05/24 22:22:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/reloptions.c,v 1.28 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -65,7 +65,7 @@ static relopt_bool boolRelOpts[] = true }, /* list terminator */ - { { NULL } } + {{NULL}} }; static relopt_int intRelOpts[] = @@ -158,7 +158,7 @@ static relopt_int intRelOpts[] = }, 150000000, 0, 2000000000 }, /* list terminator */ - { { NULL } } + {{NULL}} }; static relopt_real realRelOpts[] = @@ -180,21 +180,21 @@ static relopt_real realRelOpts[] = 0.1, 0.0, 100.0 }, /* list terminator */ - { { NULL } } + {{NULL}} }; static relopt_string stringRelOpts[] = { /* list terminator */ - { { NULL } } + {{NULL}} }; static relopt_gen **relOpts = NULL; static bits32 last_assigned_kind = RELOPT_KIND_LAST_DEFAULT; -static int num_custom_options = 0; +static int num_custom_options = 0; static relopt_gen **custom_options = NULL; -static bool need_initialization = true; +static bool need_initialization = true; static void initialize_reloptions(void); static void parse_one_reloption(relopt_value *option, char *text_str, @@ -202,15 +202,15 @@ static void parse_one_reloption(relopt_value *option, char *text_str, /* * initialize_reloptions - * initialization routine, must be called before parsing + * initialization routine, must be called before parsing * * Initialize the relOpts array and fill each variable's type and name length. */ static void initialize_reloptions(void) { - int i; - int j = 0; + int i; + int j = 0; for (i = 0; boolRelOpts[i].gen.name; i++) j++; @@ -272,8 +272,8 @@ initialize_reloptions(void) /* * add_reloption_kind - * Create a new relopt_kind value, to be used in custom reloptions by - * user-defined AMs. + * Create a new relopt_kind value, to be used in custom reloptions by + * user-defined AMs. */ relopt_kind add_reloption_kind(void) @@ -282,24 +282,24 @@ add_reloption_kind(void) if (last_assigned_kind >= RELOPT_KIND_MAX) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("user-defined relation parameter types limit exceeded"))); + errmsg("user-defined relation parameter types limit exceeded"))); last_assigned_kind <<= 1; return (relopt_kind) last_assigned_kind; } /* * add_reloption - * Add an already-created custom reloption to the list, and recompute the - * main parser table. + * Add an already-created custom reloption to the list, and recompute the + * main parser table. */ static void add_reloption(relopt_gen *newoption) { - static int max_custom_options = 0; + static int max_custom_options = 0; if (num_custom_options >= max_custom_options) { - MemoryContext oldcxt; + MemoryContext oldcxt; oldcxt = MemoryContextSwitchTo(TopMemoryContext); @@ -312,7 +312,7 @@ add_reloption(relopt_gen *newoption) { max_custom_options *= 2; custom_options = repalloc(custom_options, - max_custom_options * sizeof(relopt_gen *)); + max_custom_options * sizeof(relopt_gen *)); } MemoryContextSwitchTo(oldcxt); } @@ -323,15 +323,15 @@ add_reloption(relopt_gen *newoption) /* * allocate_reloption - * Allocate a new reloption and initialize the type-agnostic fields - * (for types other than string) + * Allocate a new reloption and initialize the type-agnostic fields + * (for types other than string) */ static relopt_gen * allocate_reloption(bits32 kinds, int type, char *name, char *desc) { - MemoryContext oldcxt; - size_t size; - relopt_gen *newoption; + MemoryContext oldcxt; + size_t size; + relopt_gen *newoption; Assert(type != RELOPT_TYPE_STRING); @@ -350,7 +350,7 @@ allocate_reloption(bits32 kinds, int type, char *name, char *desc) break; default: elog(ERROR, "unsupported option type"); - return NULL; /* keep compiler quiet */ + return NULL; /* keep compiler quiet */ } newoption = palloc(size); @@ -371,12 +371,12 @@ allocate_reloption(bits32 kinds, int type, char *name, char *desc) /* * add_bool_reloption - * Add a new boolean reloption + * Add a new boolean reloption */ void add_bool_reloption(bits32 kinds, char *name, char *desc, bool default_val) { - relopt_bool *newoption; + relopt_bool *newoption; newoption = (relopt_bool *) allocate_reloption(kinds, RELOPT_TYPE_BOOL, name, desc); @@ -387,13 +387,13 @@ add_bool_reloption(bits32 kinds, char *name, char *desc, bool default_val) /* * add_int_reloption - * Add a new integer reloption + * Add a new integer reloption */ void add_int_reloption(bits32 kinds, char *name, char *desc, int default_val, int min_val, int max_val) { - relopt_int *newoption; + relopt_int *newoption; newoption = (relopt_int *) allocate_reloption(kinds, RELOPT_TYPE_INT, name, desc); @@ -406,13 +406,13 @@ add_int_reloption(bits32 kinds, char *name, char *desc, int default_val, /* * add_real_reloption - * Add a new float reloption + * Add a new float reloption */ void add_real_reloption(bits32 kinds, char *name, char *desc, double default_val, - double min_val, double max_val) + double min_val, double max_val) { - relopt_real *newoption; + relopt_real *newoption; newoption = (relopt_real *) allocate_reloption(kinds, RELOPT_TYPE_REAL, name, desc); @@ -428,7 +428,7 @@ add_real_reloption(bits32 kinds, char *name, char *desc, double default_val, * Add a new string reloption * * "validator" is an optional function pointer that can be used to test the - * validity of the values. It must elog(ERROR) when the argument string is + * validity of the values. It must elog(ERROR) when the argument string is * not acceptable for the variable. Note that the default value must pass * the validation. */ @@ -436,9 +436,9 @@ void add_string_reloption(bits32 kinds, char *name, char *desc, char *default_val, validate_string_relopt validator) { - MemoryContext oldcxt; - relopt_string *newoption; - int default_len = 0; + MemoryContext oldcxt; + relopt_string *newoption; + int default_len = 0; oldcxt = MemoryContextSwitchTo(TopMemoryContext); @@ -495,7 +495,7 @@ add_string_reloption(bits32 kinds, char *name, char *desc, char *default_val, * Note that this is not responsible for determining whether the options * are valid, but it does check that namespaces for all the options given are * listed in validnsps. The NULL namespace is always valid and needs not be - * explicitely listed. Passing a NULL pointer means that only the NULL + * explicitely listed. Passing a NULL pointer means that only the NULL * namespace is valid. * * Both oldOptions and the result are text arrays (or NULL for "default"), @@ -538,7 +538,7 @@ transformRelOptions(Datum oldOptions, List *defList, char *namspace, /* Search for a match in defList */ foreach(cell, defList) { - DefElem *def = (DefElem *) lfirst(cell); + DefElem *def = (DefElem *) lfirst(cell); int kw_len; /* ignore if not in the same namespace */ @@ -574,7 +574,7 @@ transformRelOptions(Datum oldOptions, List *defList, char *namspace, */ foreach(cell, defList) { - DefElem *def = (DefElem *) lfirst(cell); + DefElem *def = (DefElem *) lfirst(cell); if (isReset) { @@ -590,13 +590,13 @@ transformRelOptions(Datum oldOptions, List *defList, char *namspace, Size len; /* - * Error out if the namespace is not valid. A NULL namespace - * is always valid. + * Error out if the namespace is not valid. A NULL namespace is + * always valid. */ if (def->defnamespace != NULL) { - bool valid = false; - int i; + bool valid = false; + int i; if (validnsps) { @@ -719,10 +719,10 @@ untransformRelOptions(Datum options) bytea * extractRelOptions(HeapTuple tuple, TupleDesc tupdesc, Oid amoptions) { - bytea *options; - bool isnull; - Datum datum; - Form_pg_class classForm; + bytea *options; + bool isnull; + Datum datum; + Form_pg_class classForm; datum = fastgetattr(tuple, Anum_pg_class_reloptions, @@ -768,7 +768,7 @@ extractRelOptions(HeapTuple tuple, TupleDesc tupdesc, Oid amoptions) * is returned. * * Note: values of type int, bool and real are allocated as part of the - * returned array. Values of type string are allocated separately and must + * returned array. Values of type string are allocated separately and must * be freed by the caller. */ relopt_value * @@ -894,31 +894,31 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, parsed = parse_bool(value, &option->values.bool_val); if (validate && !parsed) ereport(ERROR, - (errmsg("invalid value for boolean option \"%s\": %s", - option->gen->name, value))); + (errmsg("invalid value for boolean option \"%s\": %s", + option->gen->name, value))); } break; case RELOPT_TYPE_INT: { - relopt_int *optint = (relopt_int *) option->gen; + relopt_int *optint = (relopt_int *) option->gen; parsed = parse_int(value, &option->values.int_val, 0, NULL); if (validate && !parsed) ereport(ERROR, - (errmsg("invalid value for integer option \"%s\": %s", - option->gen->name, value))); + (errmsg("invalid value for integer option \"%s\": %s", + option->gen->name, value))); if (validate && (option->values.int_val < optint->min || option->values.int_val > optint->max)) ereport(ERROR, - (errmsg("value %s out of bounds for option \"%s\"", - value, option->gen->name), - errdetail("Valid values are between \"%d\" and \"%d\".", - optint->min, optint->max))); + (errmsg("value %s out of bounds for option \"%s\"", + value, option->gen->name), + errdetail("Valid values are between \"%d\" and \"%d\".", + optint->min, optint->max))); } break; case RELOPT_TYPE_REAL: { - relopt_real *optreal = (relopt_real *) option->gen; + relopt_real *optreal = (relopt_real *) option->gen; parsed = parse_real(value, &option->values.real_val); if (validate && !parsed) @@ -928,15 +928,15 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, if (validate && (option->values.real_val < optreal->min || option->values.real_val > optreal->max)) ereport(ERROR, - (errmsg("value %s out of bounds for option \"%s\"", - value, option->gen->name), - errdetail("Valid values are between \"%f\" and \"%f\".", - optreal->min, optreal->max))); + (errmsg("value %s out of bounds for option \"%s\"", + value, option->gen->name), + errdetail("Valid values are between \"%f\" and \"%f\".", + optreal->min, optreal->max))); } break; case RELOPT_TYPE_STRING: { - relopt_string *optstring = (relopt_string *) option->gen; + relopt_string *optstring = (relopt_string *) option->gen; option->values.string_val = value; nofree = true; @@ -947,7 +947,7 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, break; default: elog(ERROR, "unsupported reloption type %d", option->gen->type); - parsed = true; /* quiet compiler */ + parsed = true; /* quiet compiler */ break; } @@ -967,8 +967,8 @@ parse_one_reloption(relopt_value *option, char *text_str, int text_len, void * allocateReloptStruct(Size base, relopt_value *options, int numoptions) { - Size size = base; - int i; + Size size = base; + int i; for (i = 0; i < numoptions; i++) if (options[i].gen->type == RELOPT_TYPE_STRING) @@ -994,21 +994,21 @@ fillRelOptions(void *rdopts, Size basesize, bool validate, const relopt_parse_elt *elems, int numelems) { - int i; - int offset = basesize; + int i; + int offset = basesize; for (i = 0; i < numoptions; i++) { - int j; - bool found = false; + int j; + bool found = false; for (j = 0; j < numelems; j++) { if (pg_strcasecmp(options[i].gen->name, elems[j].optname) == 0) { relopt_string *optstring; - char *itempos = ((char *) rdopts) + elems[j].offset; - char *string_val; + char *itempos = ((char *) rdopts) + elems[j].offset; + char *string_val; switch (options[i].gen->type) { @@ -1069,31 +1069,31 @@ fillRelOptions(void *rdopts, Size basesize, bytea * default_reloptions(Datum reloptions, bool validate, relopt_kind kind) { - relopt_value *options; - StdRdOptions *rdopts; - int numoptions; + relopt_value *options; + StdRdOptions *rdopts; + int numoptions; static const relopt_parse_elt tab[] = { {"fillfactor", RELOPT_TYPE_INT, offsetof(StdRdOptions, fillfactor)}, {"autovacuum_enabled", RELOPT_TYPE_BOOL, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, enabled)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, enabled)}, {"autovacuum_vacuum_threshold", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_threshold)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, vacuum_threshold)}, {"autovacuum_analyze_threshold", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, analyze_threshold)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, analyze_threshold)}, {"autovacuum_vacuum_cost_delay", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_cost_delay)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, vacuum_cost_delay)}, {"autovacuum_vacuum_cost_limit", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_cost_limit)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, vacuum_cost_limit)}, {"autovacuum_freeze_min_age", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, freeze_min_age)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, freeze_min_age)}, {"autovacuum_freeze_max_age", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, freeze_max_age)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, freeze_max_age)}, {"autovacuum_freeze_table_age", RELOPT_TYPE_INT, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, freeze_table_age)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, freeze_table_age)}, {"autovacuum_vacuum_scale_factor", RELOPT_TYPE_REAL, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, vacuum_scale_factor)}, + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, vacuum_scale_factor)}, {"autovacuum_analyze_scale_factor", RELOPT_TYPE_REAL, - offsetof(StdRdOptions, autovacuum) + offsetof(AutoVacOpts, analyze_scale_factor)} + offsetof(StdRdOptions, autovacuum) +offsetof(AutoVacOpts, analyze_scale_factor)} }; options = parseRelOptions(reloptions, validate, kind, &numoptions); diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c index ea16913c8e2..79efec0969a 100644 --- a/src/backend/access/common/tupdesc.c +++ b/src/backend/access/common/tupdesc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/common/tupdesc.c,v 1.125 2009/01/22 20:16:00 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/common/tupdesc.c,v 1.126 2009/06/11 14:48:53 momjian Exp $ * * NOTES * some of the executor utility code such as "ExecTypeFromTL" should be @@ -55,8 +55,8 @@ CreateTemplateTupleDesc(int natts, bool hasoid) * pointers. * * Note: Only the fixed part of pg_attribute rows is included in tuple - * descriptors, so we only need ATTRIBUTE_FIXED_PART_SIZE space - * per attr. That might need alignment padding, however. + * descriptors, so we only need ATTRIBUTE_FIXED_PART_SIZE space per attr. + * That might need alignment padding, however. */ attroffset = sizeof(struct tupleDesc) + natts * sizeof(Form_pg_attribute); attroffset = MAXALIGN(attroffset); diff --git a/src/backend/access/gin/ginarrayproc.c b/src/backend/access/gin/ginarrayproc.c index 717caaad8b5..feff95f1d84 100644 --- a/src/backend/access/gin/ginarrayproc.c +++ b/src/backend/access/gin/ginarrayproc.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginarrayproc.c,v 1.15 2009/03/25 22:19:01 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginarrayproc.c,v 1.16 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -95,6 +95,7 @@ ginarrayconsistent(PG_FUNCTION_ARGS) bool *check = (bool *) PG_GETARG_POINTER(0); StrategyNumber strategy = PG_GETARG_UINT16(1); ArrayType *query = PG_GETARG_ARRAYTYPE_P(2); + /* int32 nkeys = PG_GETARG_INT32(3); */ /* Pointer *extra_data = (Pointer *) PG_GETARG_POINTER(4); */ bool *recheck = (bool *) PG_GETARG_POINTER(5); diff --git a/src/backend/access/gin/ginbulk.c b/src/backend/access/gin/ginbulk.c index a7258619aee..2e800ce44a4 100644 --- a/src/backend/access/gin/ginbulk.c +++ b/src/backend/access/gin/ginbulk.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginbulk.c,v 1.15 2009/03/24 20:17:10 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginbulk.c,v 1.16 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -84,7 +84,7 @@ ginInsertData(BuildAccumulator *accum, EntryAccumulator *entry, ItemPointer heap static Datum getDatumCopy(BuildAccumulator *accum, OffsetNumber attnum, Datum value) { - Form_pg_attribute att = accum->ginstate->origTupdesc->attrs[ attnum - 1 ]; + Form_pg_attribute att = accum->ginstate->origTupdesc->attrs[attnum - 1]; Datum res; if (att->attbyval) @@ -161,8 +161,8 @@ ginInsertEntry(BuildAccumulator *accum, ItemPointer heapptr, OffsetNumber attnum * then calls itself for each parts */ static void -ginChooseElem(BuildAccumulator *accum, ItemPointer heapptr, OffsetNumber attnum, - Datum *entries, uint32 nentry, +ginChooseElem(BuildAccumulator *accum, ItemPointer heapptr, OffsetNumber attnum, + Datum *entries, uint32 nentry, uint32 low, uint32 high, uint32 offset) { uint32 pos; @@ -187,8 +187,8 @@ ginChooseElem(BuildAccumulator *accum, ItemPointer heapptr, OffsetNumber attnum, * next middle on left part and middle of right part. */ void -ginInsertRecordBA(BuildAccumulator *accum, ItemPointer heapptr, OffsetNumber attnum, - Datum *entries, int32 nentry) +ginInsertRecordBA(BuildAccumulator *accum, ItemPointer heapptr, OffsetNumber attnum, + Datum *entries, int32 nentry) { uint32 i, nbit = 0, diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c index 22199102ddc..ebbdaa33e59 100644 --- a/src/backend/access/gin/gindatapage.c +++ b/src/backend/access/gin/gindatapage.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/gindatapage.c,v 1.15 2009/06/06 02:39:40 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/gindatapage.c,v 1.16 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -47,7 +47,7 @@ MergeItemPointers(ItemPointerData *dst, while (aptr - a < na && bptr - b < nb) { - int cmp = compareItemPointers(aptr, bptr); + int cmp = compareItemPointers(aptr, bptr); if (cmp > 0) *dptr++ = *bptr++; diff --git a/src/backend/access/gin/ginentrypage.c b/src/backend/access/gin/ginentrypage.c index f35994db953..c4659cde1f0 100644 --- a/src/backend/access/gin/ginentrypage.c +++ b/src/backend/access/gin/ginentrypage.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginentrypage.c,v 1.20 2009/06/06 02:39:40 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginentrypage.c,v 1.21 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -46,23 +46,23 @@ * Attributes of an index tuple are different for single and multicolumn index. * For single-column case, index tuple stores only value to be indexed. * For multicolumn case, it stores two attributes: column number of value - * and value. + * and value. */ IndexTuple GinFormTuple(GinState *ginstate, OffsetNumber attnum, Datum key, ItemPointerData *ipd, uint32 nipd) { - bool isnull[2] = {FALSE,FALSE}; + bool isnull[2] = {FALSE, FALSE}; IndexTuple itup; - if ( ginstate->oneCol ) + if (ginstate->oneCol) itup = index_form_tuple(ginstate->origTupdesc, &key, isnull); else { - Datum datums[2]; + Datum datums[2]; datums[0] = UInt16GetDatum(attnum); datums[1] = key; - itup = index_form_tuple(ginstate->tupdesc[attnum-1], datums, isnull); + itup = index_form_tuple(ginstate->tupdesc[attnum - 1], datums, isnull); } GinSetOrigSizePosting(itup, IndexTupleSize(itup)); @@ -136,12 +136,12 @@ entryIsMoveRight(GinBtree btree, Page page) if (GinPageRightMost(page)) return FALSE; - itup = getRightMostTuple(page); + itup = getRightMostTuple(page); if (compareAttEntries(btree->ginstate, - btree->entryAttnum, btree->entryValue, - gintuple_get_attrnum(btree->ginstate, itup), - gin_index_getattr(btree->ginstate, itup)) > 0) + btree->entryAttnum, btree->entryValue, + gintuple_get_attrnum(btree->ginstate, itup), + gin_index_getattr(btree->ginstate, itup)) > 0) return TRUE; return FALSE; @@ -187,10 +187,10 @@ entryLocateEntry(GinBtree btree, GinBtreeStack *stack) else { itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, mid)); - result = compareAttEntries(btree->ginstate, - btree->entryAttnum, btree->entryValue, - gintuple_get_attrnum(btree->ginstate, itup), - gin_index_getattr(btree->ginstate, itup)); + result = compareAttEntries(btree->ginstate, + btree->entryAttnum, btree->entryValue, + gintuple_get_attrnum(btree->ginstate, itup), + gin_index_getattr(btree->ginstate, itup)); } if (result == 0) @@ -252,10 +252,10 @@ entryLocateLeafEntry(GinBtree btree, GinBtreeStack *stack) int result; itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, mid)); - result = compareAttEntries(btree->ginstate, - btree->entryAttnum, btree->entryValue, - gintuple_get_attrnum(btree->ginstate, itup), - gin_index_getattr(btree->ginstate, itup)); + result = compareAttEntries(btree->ginstate, + btree->entryAttnum, btree->entryValue, + gintuple_get_attrnum(btree->ginstate, itup), + gin_index_getattr(btree->ginstate, itup)); if (result == 0) { stack->off = mid; diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c index f474ad6598e..20887ba56cf 100644 --- a/src/backend/access/gin/ginfast.c +++ b/src/backend/access/gin/ginfast.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginfast.c,v 1.2 2009/03/24 22:06:03 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginfast.c,v 1.3 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -33,9 +33,9 @@ typedef struct DatumArray { - Datum *values; /* expansible array */ - int32 nvalues; /* current number of valid entries */ - int32 maxvalues; /* allocated size of array */ + Datum *values; /* expansible array */ + int32 nvalues; /* current number of valid entries */ + int32 maxvalues; /* allocated size of array */ } DatumArray; @@ -46,11 +46,14 @@ static int32 writeListPage(Relation index, Buffer buffer, IndexTuple *tuples, int32 ntuples, BlockNumber rightlink) { - Page page = BufferGetPage(buffer); - int i, freesize, size=0; - OffsetNumber l, off; - char *workspace; - char *ptr; + Page page = BufferGetPage(buffer); + int i, + freesize, + size = 0; + OffsetNumber l, + off; + char *workspace; + char *ptr; /* workspace could be a local array; we use palloc for alignment */ workspace = palloc(BLCKSZ); @@ -62,15 +65,15 @@ writeListPage(Relation index, Buffer buffer, off = FirstOffsetNumber; ptr = workspace; - for(i=0; i<ntuples; i++) + for (i = 0; i < ntuples; i++) { - int this_size = IndexTupleSize(tuples[i]); + int this_size = IndexTupleSize(tuples[i]); memcpy(ptr, tuples[i], this_size); ptr += this_size; size += this_size; - l = PageAddItem(page, (Item)tuples[i], this_size, off, false, false); + l = PageAddItem(page, (Item) tuples[i], this_size, off, false, false); if (l == InvalidOffsetNumber) elog(ERROR, "failed to add item to index page in \"%s\"", @@ -84,10 +87,10 @@ writeListPage(Relation index, Buffer buffer, GinPageGetOpaque(page)->rightlink = rightlink; /* - * tail page may contain only the whole row(s) or final - * part of row placed on previous pages + * tail page may contain only the whole row(s) or final part of row placed + * on previous pages */ - if ( rightlink == InvalidBlockNumber ) + if (rightlink == InvalidBlockNumber) { GinPageSetFullRow(page); GinPageGetOpaque(page)->maxoff = 1; @@ -103,15 +106,15 @@ writeListPage(Relation index, Buffer buffer, if (!index->rd_istemp) { - XLogRecData rdata[2]; - ginxlogInsertListPage data; - XLogRecPtr recptr; + XLogRecData rdata[2]; + ginxlogInsertListPage data; + XLogRecPtr recptr; rdata[0].buffer = buffer; rdata[0].buffer_std = true; - rdata[0].data = (char*)&data; + rdata[0].data = (char *) &data; rdata[0].len = sizeof(ginxlogInsertListPage); - rdata[0].next = rdata+1; + rdata[0].next = rdata + 1; rdata[1].buffer = InvalidBuffer; rdata[1].data = workspace; @@ -140,27 +143,29 @@ static void makeSublist(Relation index, IndexTuple *tuples, int32 ntuples, GinMetaPageData *res) { - Buffer curBuffer = InvalidBuffer; - Buffer prevBuffer = InvalidBuffer; - int i, size = 0, tupsize; - int startTuple = 0; + Buffer curBuffer = InvalidBuffer; + Buffer prevBuffer = InvalidBuffer; + int i, + size = 0, + tupsize; + int startTuple = 0; Assert(ntuples > 0); /* * Split tuples into pages */ - for(i=0;i<ntuples;i++) + for (i = 0; i < ntuples; i++) { - if ( curBuffer == InvalidBuffer ) + if (curBuffer == InvalidBuffer) { curBuffer = GinNewBuffer(index); - if ( prevBuffer != InvalidBuffer ) + if (prevBuffer != InvalidBuffer) { res->nPendingPages++; writeListPage(index, prevBuffer, - tuples+startTuple, i-startTuple, + tuples + startTuple, i - startTuple, BufferGetBlockNumber(curBuffer)); } else @@ -175,7 +180,7 @@ makeSublist(Relation index, IndexTuple *tuples, int32 ntuples, tupsize = MAXALIGN(IndexTupleSize(tuples[i])) + sizeof(ItemIdData); - if ( size + tupsize >= GinListPageSize ) + if (size + tupsize >= GinListPageSize) { /* won't fit, force a new page and reprocess */ i--; @@ -192,7 +197,7 @@ makeSublist(Relation index, IndexTuple *tuples, int32 ntuples, */ res->tail = BufferGetBlockNumber(curBuffer); res->tailFreeSize = writeListPage(index, curBuffer, - tuples+startTuple, ntuples-startTuple, + tuples + startTuple, ntuples - startTuple, InvalidBlockNumber); res->nPendingPages++; /* that was only one heap tuple */ @@ -207,17 +212,17 @@ void ginHeapTupleFastInsert(Relation index, GinState *ginstate, GinTupleCollector *collector) { - Buffer metabuffer; - Page metapage; - GinMetaPageData *metadata = NULL; - XLogRecData rdata[2]; - Buffer buffer = InvalidBuffer; - Page page = NULL; - ginxlogUpdateMeta data; - bool separateList = false; - bool needCleanup = false; - - if ( collector->ntuples == 0 ) + Buffer metabuffer; + Page metapage; + GinMetaPageData *metadata = NULL; + XLogRecData rdata[2]; + Buffer buffer = InvalidBuffer; + Page page = NULL; + ginxlogUpdateMeta data; + bool separateList = false; + bool needCleanup = false; + + if (collector->ntuples == 0) return; data.node = index->rd_node; @@ -232,7 +237,7 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, metabuffer = ReadBuffer(index, GIN_METAPAGE_BLKNO); metapage = BufferGetPage(metabuffer); - if ( collector->sumsize + collector->ntuples * sizeof(ItemIdData) > GIN_PAGE_FREESIZE ) + if (collector->sumsize + collector->ntuples * sizeof(ItemIdData) > GIN_PAGE_FREESIZE) { /* * Total size is greater than one page => make sublist @@ -244,8 +249,8 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, LockBuffer(metabuffer, GIN_EXCLUSIVE); metadata = GinPageGetMeta(metapage); - if ( metadata->head == InvalidBlockNumber || - collector->sumsize + collector->ntuples * sizeof(ItemIdData) > metadata->tailFreeSize ) + if (metadata->head == InvalidBlockNumber || + collector->sumsize + collector->ntuples * sizeof(ItemIdData) > metadata->tailFreeSize) { /* * Pending list is empty or total size is greater than freespace @@ -258,14 +263,14 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, } } - if ( separateList ) + if (separateList) { - GinMetaPageData sublist; + GinMetaPageData sublist; /* * We should make sublist separately and append it to the tail */ - memset( &sublist, 0, sizeof(GinMetaPageData) ); + memset(&sublist, 0, sizeof(GinMetaPageData)); makeSublist(index, collector->tuples, collector->ntuples, &sublist); @@ -275,14 +280,14 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, LockBuffer(metabuffer, GIN_EXCLUSIVE); metadata = GinPageGetMeta(metapage); - if ( metadata->head == InvalidBlockNumber ) + if (metadata->head == InvalidBlockNumber) { /* * Sublist becomes main list */ START_CRIT_SECTION(); - memcpy(metadata, &sublist, sizeof(GinMetaPageData) ); - memcpy(&data.metadata, &sublist, sizeof(GinMetaPageData) ); + memcpy(metadata, &sublist, sizeof(GinMetaPageData)); + memcpy(&data.metadata, &sublist, sizeof(GinMetaPageData)); } else { @@ -305,7 +310,7 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, metadata->nPendingPages += sublist.nPendingPages; metadata->nPendingHeapTuples += sublist.nPendingHeapTuples; - memcpy(&data.metadata, metadata, sizeof(GinMetaPageData) ); + memcpy(&data.metadata, metadata, sizeof(GinMetaPageData)); data.newRightlink = sublist.head; MarkBufferDirty(buffer); @@ -317,21 +322,23 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, * Insert into tail page, metapage is already locked */ - OffsetNumber l, off; - int i, tupsize; - char *ptr; + OffsetNumber l, + off; + int i, + tupsize; + char *ptr; buffer = ReadBuffer(index, metadata->tail); LockBuffer(buffer, GIN_EXCLUSIVE); page = BufferGetPage(buffer); off = (PageIsEmpty(page)) ? FirstOffsetNumber : - OffsetNumberNext(PageGetMaxOffsetNumber(page)); + OffsetNumberNext(PageGetMaxOffsetNumber(page)); rdata[0].next = rdata + 1; rdata[1].buffer = buffer; rdata[1].buffer_std = true; - ptr = rdata[1].data = (char *) palloc( collector->sumsize ); + ptr = rdata[1].data = (char *) palloc(collector->sumsize); rdata[1].len = collector->sumsize; rdata[1].next = NULL; @@ -342,44 +349,44 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, /* * Increase counter of heap tuples */ - Assert( GinPageGetOpaque(page)->maxoff <= metadata->nPendingHeapTuples ); + Assert(GinPageGetOpaque(page)->maxoff <= metadata->nPendingHeapTuples); GinPageGetOpaque(page)->maxoff++; metadata->nPendingHeapTuples++; - for(i=0; i<collector->ntuples; i++) + for (i = 0; i < collector->ntuples; i++) { tupsize = IndexTupleSize(collector->tuples[i]); - l = PageAddItem(page, (Item)collector->tuples[i], tupsize, off, false, false); + l = PageAddItem(page, (Item) collector->tuples[i], tupsize, off, false, false); if (l == InvalidOffsetNumber) elog(ERROR, "failed to add item to index page in \"%s\"", - RelationGetRelationName(index)); + RelationGetRelationName(index)); memcpy(ptr, collector->tuples[i], tupsize); - ptr+=tupsize; + ptr += tupsize; off++; } metadata->tailFreeSize -= collector->sumsize + collector->ntuples * sizeof(ItemIdData); - memcpy(&data.metadata, metadata, sizeof(GinMetaPageData) ); + memcpy(&data.metadata, metadata, sizeof(GinMetaPageData)); MarkBufferDirty(buffer); } /* - * Make real write + * Make real write */ MarkBufferDirty(metabuffer); - if ( !index->rd_istemp ) + if (!index->rd_istemp) { - XLogRecPtr recptr; + XLogRecPtr recptr; recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_UPDATE_META_PAGE, rdata); PageSetLSN(metapage, recptr); PageSetTLI(metapage, ThisTimeLineID); - if ( buffer != InvalidBuffer ) + if (buffer != InvalidBuffer) { PageSetLSN(page, recptr); PageSetTLI(page, ThisTimeLineID); @@ -390,23 +397,22 @@ ginHeapTupleFastInsert(Relation index, GinState *ginstate, UnlockReleaseBuffer(buffer); /* - * Force pending list cleanup when it becomes too long. - * And, ginInsertCleanup could take significant amount of - * time, so we prefer to call it when it can do all the work in a - * single collection cycle. In non-vacuum mode, it shouldn't - * require maintenance_work_mem, so fire it while pending list is - * still small enough to fit into work_mem. + * Force pending list cleanup when it becomes too long. And, + * ginInsertCleanup could take significant amount of time, so we prefer to + * call it when it can do all the work in a single collection cycle. In + * non-vacuum mode, it shouldn't require maintenance_work_mem, so fire it + * while pending list is still small enough to fit into work_mem. * * ginInsertCleanup() should not be called inside our CRIT_SECTION. */ - if ( metadata->nPendingPages * GIN_PAGE_FREESIZE > work_mem * 1024L ) + if (metadata->nPendingPages * GIN_PAGE_FREESIZE > work_mem * 1024L) needCleanup = true; UnlockReleaseBuffer(metabuffer); END_CRIT_SECTION(); - if ( needCleanup ) + if (needCleanup) ginInsertCleanup(index, ginstate, false, NULL); } @@ -432,17 +438,17 @@ ginHeapTupleFastCollect(Relation index, GinState *ginstate, /* * Allocate/reallocate memory for storing collected tuples */ - if ( collector->tuples == NULL ) + if (collector->tuples == NULL) { collector->lentuples = nentries * index->rd_att->natts; - collector->tuples = (IndexTuple*)palloc(sizeof(IndexTuple) * collector->lentuples); + collector->tuples = (IndexTuple *) palloc(sizeof(IndexTuple) * collector->lentuples); } - while ( collector->ntuples + nentries > collector->lentuples ) + while (collector->ntuples + nentries > collector->lentuples) { collector->lentuples *= 2; - collector->tuples = (IndexTuple*)repalloc( collector->tuples, - sizeof(IndexTuple) * collector->lentuples); + collector->tuples = (IndexTuple *) repalloc(collector->tuples, + sizeof(IndexTuple) * collector->lentuples); } /* @@ -450,13 +456,13 @@ ginHeapTupleFastCollect(Relation index, GinState *ginstate, */ for (i = 0; i < nentries; i++) { - int32 tupsize; + int32 tupsize; collector->tuples[collector->ntuples + i] = GinFormTuple(ginstate, attnum, entries[i], NULL, 0); collector->tuples[collector->ntuples + i]->t_tid = *item; tupsize = IndexTupleSize(collector->tuples[collector->ntuples + i]); - if ( tupsize > TOAST_INDEX_TARGET || tupsize >= GinMaxItemSize) + if (tupsize > TOAST_INDEX_TARGET || tupsize >= GinMaxItemSize) elog(ERROR, "huge tuple"); collector->sumsize += tupsize; @@ -480,9 +486,9 @@ static bool shiftList(Relation index, Buffer metabuffer, BlockNumber newHead, IndexBulkDeleteResult *stats) { - Page metapage; - GinMetaPageData *metadata; - BlockNumber blknoToDelete; + Page metapage; + GinMetaPageData *metadata; + BlockNumber blknoToDelete; metapage = BufferGetPage(metabuffer); metadata = GinPageGetMeta(metapage); @@ -490,12 +496,12 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead, do { - Page page; - int i; - int64 nDeletedHeapTuples = 0; - ginxlogDeleteListPages data; - XLogRecData rdata[1]; - Buffer buffers[GIN_NDELETE_AT_ONCE]; + Page page; + int i; + int64 nDeletedHeapTuples = 0; + ginxlogDeleteListPages data; + XLogRecData rdata[1]; + Buffer buffers[GIN_NDELETE_AT_ONCE]; data.node = index->rd_node; @@ -507,24 +513,24 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead, data.ndeleted = 0; while (data.ndeleted < GIN_NDELETE_AT_ONCE && blknoToDelete != newHead) { - data.toDelete[ data.ndeleted ] = blknoToDelete; - buffers[ data.ndeleted ] = ReadBuffer(index, blknoToDelete); - LockBuffer( buffers[ data.ndeleted ], GIN_EXCLUSIVE ); - page = BufferGetPage( buffers[ data.ndeleted ] ); + data.toDelete[data.ndeleted] = blknoToDelete; + buffers[data.ndeleted] = ReadBuffer(index, blknoToDelete); + LockBuffer(buffers[data.ndeleted], GIN_EXCLUSIVE); + page = BufferGetPage(buffers[data.ndeleted]); data.ndeleted++; - if ( GinPageIsDeleted(page) ) + if (GinPageIsDeleted(page)) { /* concurrent cleanup process is detected */ - for(i=0;i<data.ndeleted;i++) - UnlockReleaseBuffer( buffers[i] ); + for (i = 0; i < data.ndeleted; i++) + UnlockReleaseBuffer(buffers[i]); return true; } nDeletedHeapTuples += GinPageGetOpaque(page)->maxoff; - blknoToDelete = GinPageGetOpaque( page )->rightlink; + blknoToDelete = GinPageGetOpaque(page)->rightlink; } if (stats) @@ -534,50 +540,50 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead, metadata->head = blknoToDelete; - Assert( metadata->nPendingPages >= data.ndeleted ); + Assert(metadata->nPendingPages >= data.ndeleted); metadata->nPendingPages -= data.ndeleted; - Assert( metadata->nPendingHeapTuples >= nDeletedHeapTuples ); + Assert(metadata->nPendingHeapTuples >= nDeletedHeapTuples); metadata->nPendingHeapTuples -= nDeletedHeapTuples; - if ( blknoToDelete == InvalidBlockNumber ) + if (blknoToDelete == InvalidBlockNumber) { metadata->tail = InvalidBlockNumber; metadata->tailFreeSize = 0; metadata->nPendingPages = 0; metadata->nPendingHeapTuples = 0; } - memcpy( &data.metadata, metadata, sizeof(GinMetaPageData)); + memcpy(&data.metadata, metadata, sizeof(GinMetaPageData)); - MarkBufferDirty( metabuffer ); + MarkBufferDirty(metabuffer); - for(i=0; i<data.ndeleted; i++) + for (i = 0; i < data.ndeleted; i++) { - page = BufferGetPage( buffers[ i ] ); - GinPageGetOpaque( page )->flags = GIN_DELETED; - MarkBufferDirty( buffers[ i ] ); + page = BufferGetPage(buffers[i]); + GinPageGetOpaque(page)->flags = GIN_DELETED; + MarkBufferDirty(buffers[i]); } - if ( !index->rd_istemp ) + if (!index->rd_istemp) { - XLogRecPtr recptr; + XLogRecPtr recptr; recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_DELETE_LISTPAGE, rdata); PageSetLSN(metapage, recptr); PageSetTLI(metapage, ThisTimeLineID); - for(i=0; i<data.ndeleted; i++) + for (i = 0; i < data.ndeleted; i++) { - page = BufferGetPage( buffers[ i ] ); + page = BufferGetPage(buffers[i]); PageSetLSN(page, recptr); PageSetTLI(page, ThisTimeLineID); } } - for(i=0; i<data.ndeleted; i++) - UnlockReleaseBuffer( buffers[ i ] ); + for (i = 0; i < data.ndeleted; i++) + UnlockReleaseBuffer(buffers[i]); END_CRIT_SECTION(); - } while( blknoToDelete != newHead ); + } while (blknoToDelete != newHead); return false; } @@ -586,14 +592,14 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead, static void addDatum(DatumArray *datums, Datum datum) { - if ( datums->nvalues >= datums->maxvalues) + if (datums->nvalues >= datums->maxvalues) { datums->maxvalues *= 2; - datums->values = (Datum*)repalloc(datums->values, - sizeof(Datum)*datums->maxvalues); + datums->values = (Datum *) repalloc(datums->values, + sizeof(Datum) * datums->maxvalues); } - datums->values[ datums->nvalues++ ] = datum; + datums->values[datums->nvalues++] = datum; } /* @@ -606,31 +612,33 @@ static void processPendingPage(BuildAccumulator *accum, DatumArray *da, Page page, OffsetNumber startoff) { - ItemPointerData heapptr; - OffsetNumber i,maxoff; - OffsetNumber attrnum, curattnum; + ItemPointerData heapptr; + OffsetNumber i, + maxoff; + OffsetNumber attrnum, + curattnum; /* reset *da to empty */ da->nvalues = 0; maxoff = PageGetMaxOffsetNumber(page); - Assert( maxoff >= FirstOffsetNumber ); + Assert(maxoff >= FirstOffsetNumber); ItemPointerSetInvalid(&heapptr); attrnum = 0; for (i = startoff; i <= maxoff; i = OffsetNumberNext(i)) { - IndexTuple itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, i)); + IndexTuple itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, i)); curattnum = gintuple_get_attrnum(accum->ginstate, itup); - if ( !ItemPointerIsValid(&heapptr) ) + if (!ItemPointerIsValid(&heapptr)) { heapptr = itup->t_tid; attrnum = curattnum; } - else if ( !(ItemPointerEquals(&heapptr, &itup->t_tid) && - curattnum == attrnum) ) + else if (!(ItemPointerEquals(&heapptr, &itup->t_tid) && + curattnum == attrnum)) { /* * We can insert several datums per call, but only for one heap @@ -652,7 +660,7 @@ processPendingPage(BuildAccumulator *accum, DatumArray *da, * * This can be called concurrently by multiple backends, so it must cope. * On first glance it looks completely not concurrent-safe and not crash-safe - * either. The reason it's okay is that multiple insertion of the same entry + * either. The reason it's okay is that multiple insertion of the same entry * is detected and treated as a no-op by gininsert.c. If we crash after * posting entries to the main index and before removing them from the * pending list, it's okay because when we redo the posting later on, nothing @@ -671,20 +679,23 @@ void ginInsertCleanup(Relation index, GinState *ginstate, bool vac_delay, IndexBulkDeleteResult *stats) { - Buffer metabuffer, buffer; - Page metapage, page; - GinMetaPageData *metadata; - MemoryContext opCtx, oldCtx; - BuildAccumulator accum; - DatumArray datums; - BlockNumber blkno; + Buffer metabuffer, + buffer; + Page metapage, + page; + GinMetaPageData *metadata; + MemoryContext opCtx, + oldCtx; + BuildAccumulator accum; + DatumArray datums; + BlockNumber blkno; metabuffer = ReadBuffer(index, GIN_METAPAGE_BLKNO); LockBuffer(metabuffer, GIN_SHARE); metapage = BufferGetPage(metabuffer); metadata = GinPageGetMeta(metapage); - if ( metadata->head == InvalidBlockNumber ) + if (metadata->head == InvalidBlockNumber) { /* Nothing to do */ UnlockReleaseBuffer(metabuffer); @@ -702,7 +713,7 @@ ginInsertCleanup(Relation index, GinState *ginstate, LockBuffer(metabuffer, GIN_UNLOCK); /* - * Initialize. All temporary space will be in opCtx + * Initialize. All temporary space will be in opCtx */ opCtx = AllocSetContextCreate(CurrentMemoryContext, "GIN insert cleanup temporary context", @@ -712,24 +723,24 @@ ginInsertCleanup(Relation index, GinState *ginstate, oldCtx = MemoryContextSwitchTo(opCtx); - datums.maxvalues=128; + datums.maxvalues = 128; datums.nvalues = 0; - datums.values = (Datum*)palloc(sizeof(Datum)*datums.maxvalues); + datums.values = (Datum *) palloc(sizeof(Datum) * datums.maxvalues); ginInitBA(&accum); accum.ginstate = ginstate; /* - * At the top of this loop, we have pin and lock on the current page - * of the pending list. However, we'll release that before exiting - * the loop. Note we also have pin but not lock on the metapage. + * At the top of this loop, we have pin and lock on the current page of + * the pending list. However, we'll release that before exiting the loop. + * Note we also have pin but not lock on the metapage. */ - for(;;) + for (;;) { - if ( GinPageIsDeleted(page) ) + if (GinPageIsDeleted(page)) { /* another cleanup process is running concurrently */ - UnlockReleaseBuffer( buffer ); + UnlockReleaseBuffer(buffer); break; } @@ -742,9 +753,9 @@ ginInsertCleanup(Relation index, GinState *ginstate, vacuum_delay_point(); /* - * Is it time to flush memory to disk? Flush if we are at the end - * of the pending list, or if we have a full row and memory is - * getting full. + * Is it time to flush memory to disk? Flush if we are at the end of + * the pending list, or if we have a full row and memory is getting + * full. * * XXX using up maintenance_work_mem here is probably unreasonably * much, since vacuum might already be using that much. @@ -754,15 +765,16 @@ ginInsertCleanup(Relation index, GinState *ginstate, (accum.allocatedMemory >= maintenance_work_mem * 1024L || accum.maxdepth > GIN_MAX_TREE_DEPTH))) { - ItemPointerData *list; - uint32 nlist; - Datum entry; - OffsetNumber maxoff, attnum; + ItemPointerData *list; + uint32 nlist; + Datum entry; + OffsetNumber maxoff, + attnum; /* - * Unlock current page to increase performance. - * Changes of page will be checked later by comparing - * maxoff after completion of memory flush. + * Unlock current page to increase performance. Changes of page + * will be checked later by comparing maxoff after completion of + * memory flush. */ maxoff = PageGetMaxOffsetNumber(page); LockBuffer(buffer, GIN_UNLOCK); @@ -785,7 +797,7 @@ ginInsertCleanup(Relation index, GinState *ginstate, LockBuffer(metabuffer, GIN_EXCLUSIVE); LockBuffer(buffer, GIN_SHARE); - if ( GinPageIsDeleted(page) ) + if (GinPageIsDeleted(page)) { /* another cleanup process is running concurrently */ UnlockReleaseBuffer(buffer); @@ -795,16 +807,16 @@ ginInsertCleanup(Relation index, GinState *ginstate, /* * While we left the page unlocked, more stuff might have gotten - * added to it. If so, process those entries immediately. There + * added to it. If so, process those entries immediately. There * shouldn't be very many, so we don't worry about the fact that * we're doing this with exclusive lock. Insertion algorithm * gurantees that inserted row(s) will not continue on next page. * NOTE: intentionally no vacuum_delay_point in this loop. */ - if ( PageGetMaxOffsetNumber(page) != maxoff ) + if (PageGetMaxOffsetNumber(page) != maxoff) { ginInitBA(&accum); - processPendingPage(&accum, &datums, page, maxoff+1); + processPendingPage(&accum, &datums, page, maxoff + 1); while ((list = ginGetEntry(&accum, &attnum, &entry, &nlist)) != NULL) ginEntryInsert(index, ginstate, attnum, entry, list, nlist, FALSE); @@ -814,26 +826,27 @@ ginInsertCleanup(Relation index, GinState *ginstate, * Remember next page - it will become the new list head */ blkno = GinPageGetOpaque(page)->rightlink; - UnlockReleaseBuffer(buffer); /* shiftList will do exclusive locking */ + UnlockReleaseBuffer(buffer); /* shiftList will do exclusive + * locking */ /* * remove readed pages from pending list, at this point all * content of readed pages is in regular structure */ - if ( shiftList(index, metabuffer, blkno, stats) ) + if (shiftList(index, metabuffer, blkno, stats)) { /* another cleanup process is running concurrently */ LockBuffer(metabuffer, GIN_UNLOCK); break; } - Assert( blkno == metadata->head ); + Assert(blkno == metadata->head); LockBuffer(metabuffer, GIN_UNLOCK); /* * if we removed the whole pending list just exit */ - if ( blkno == InvalidBlockNumber ) + if (blkno == InvalidBlockNumber) break; /* @@ -842,7 +855,7 @@ ginInsertCleanup(Relation index, GinState *ginstate, MemoryContextReset(opCtx); ginInitBA(&accum); datums.nvalues = 0; - datums.values = (Datum*)palloc(sizeof(Datum)*datums.maxvalues); + datums.values = (Datum *) palloc(sizeof(Datum) * datums.maxvalues); } else { diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c index d57ee8febbd..f5e0f788d1c 100644 --- a/src/backend/access/gin/ginget.c +++ b/src/backend/access/gin/ginget.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginget.c,v 1.26 2009/05/19 02:48:26 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginget.c,v 1.27 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -25,10 +25,10 @@ typedef struct pendingPosition { - Buffer pendingBuffer; - OffsetNumber firstOffset; - OffsetNumber lastOffset; - ItemPointerData item; + Buffer pendingBuffer; + OffsetNumber firstOffset; + OffsetNumber lastOffset; + ItemPointerData item; } pendingPosition; @@ -64,19 +64,19 @@ findItemInPage(Page page, ItemPointer item, OffsetNumber *off) * Goes to the next page if current offset is outside of bounds */ static bool -moveRightIfItNeeded( GinBtreeData *btree, GinBtreeStack *stack ) +moveRightIfItNeeded(GinBtreeData *btree, GinBtreeStack *stack) { - Page page = BufferGetPage(stack->buffer); + Page page = BufferGetPage(stack->buffer); - if ( stack->off > PageGetMaxOffsetNumber(page) ) + if (stack->off > PageGetMaxOffsetNumber(page)) { /* * We scanned the whole page, so we should take right page */ stack->blkno = GinPageGetOpaque(page)->rightlink; - if ( GinPageRightMost(page) ) - return false; /* no more pages */ + if (GinPageRightMost(page)) + return false; /* no more pages */ LockBuffer(stack->buffer, GIN_UNLOCK); stack->buffer = ReleaseAndReadBuffer(stack->buffer, btree->index, stack->blkno); @@ -92,12 +92,12 @@ moveRightIfItNeeded( GinBtreeData *btree, GinBtreeStack *stack ) * in scanEntry->partialMatch TIDBitmap */ static void -scanForItems( Relation index, GinScanEntry scanEntry, BlockNumber rootPostingTree ) +scanForItems(Relation index, GinScanEntry scanEntry, BlockNumber rootPostingTree) { GinPostingTreeScan *gdi; - Buffer buffer; - Page page; - BlockNumber blkno; + Buffer buffer; + Page page; + BlockNumber blkno; gdi = prepareScanPostingTree(index, rootPostingTree, TRUE); @@ -110,23 +110,23 @@ scanForItems( Relation index, GinScanEntry scanEntry, BlockNumber rootPostingTre /* * Goes through all leaves */ - for(;;) + for (;;) { page = BufferGetPage(buffer); - if ((GinPageGetOpaque(page)->flags & GIN_DELETED) == 0 && GinPageGetOpaque(page)->maxoff >= FirstOffsetNumber ) + if ((GinPageGetOpaque(page)->flags & GIN_DELETED) == 0 && GinPageGetOpaque(page)->maxoff >= FirstOffsetNumber) { - tbm_add_tuples( scanEntry->partialMatch, - (ItemPointer)GinDataPageGetItem(page, FirstOffsetNumber), - GinPageGetOpaque(page)->maxoff, false); + tbm_add_tuples(scanEntry->partialMatch, + (ItemPointer) GinDataPageGetItem(page, FirstOffsetNumber), + GinPageGetOpaque(page)->maxoff, false); scanEntry->predictNumberResult += GinPageGetOpaque(page)->maxoff; } blkno = GinPageGetOpaque(page)->rightlink; - if ( GinPageRightMost(page) ) + if (GinPageRightMost(page)) { UnlockReleaseBuffer(buffer); - return; /* no more pages */ + return; /* no more pages */ } LockBuffer(buffer, GIN_UNLOCK); @@ -142,21 +142,21 @@ scanForItems( Relation index, GinScanEntry scanEntry, BlockNumber rootPostingTre * Returns true if done, false if it's needed to restart scan from scratch */ static bool -computePartialMatchList( GinBtreeData *btree, GinBtreeStack *stack, GinScanEntry scanEntry ) +computePartialMatchList(GinBtreeData *btree, GinBtreeStack *stack, GinScanEntry scanEntry) { - Page page; - IndexTuple itup; + Page page; + IndexTuple itup; Datum idatum; int32 cmp; - scanEntry->partialMatch = tbm_create( work_mem * 1024L ); + scanEntry->partialMatch = tbm_create(work_mem * 1024L); - for(;;) + for (;;) { /* * stack->off points to the interested entry, buffer is already locked */ - if ( moveRightIfItNeeded(btree, stack) == false ) + if (moveRightIfItNeeded(btree, stack) == false) return true; page = BufferGetPage(stack->buffer); @@ -165,10 +165,10 @@ computePartialMatchList( GinBtreeData *btree, GinBtreeStack *stack, GinScanEntry /* * If tuple stores another attribute then stop scan */ - if ( gintuple_get_attrnum( btree->ginstate, itup ) != scanEntry->attnum ) + if (gintuple_get_attrnum(btree->ginstate, itup) != scanEntry->attnum) return true; - idatum = gin_index_getattr( btree->ginstate, itup ); + idatum = gin_index_getattr(btree->ginstate, itup); /*---------- @@ -178,74 +178,74 @@ computePartialMatchList( GinBtreeData *btree, GinBtreeStack *stack, GinScanEntry * case cmp < 0 => not match and continue scan *---------- */ - cmp = DatumGetInt32(FunctionCall4(&btree->ginstate->comparePartialFn[scanEntry->attnum-1], + cmp = DatumGetInt32(FunctionCall4(&btree->ginstate->comparePartialFn[scanEntry->attnum - 1], scanEntry->entry, idatum, UInt16GetDatum(scanEntry->strategy), - PointerGetDatum(scanEntry->extra_data))); + PointerGetDatum(scanEntry->extra_data))); - if ( cmp > 0 ) + if (cmp > 0) return true; - else if ( cmp < 0 ) + else if (cmp < 0) { stack->off++; continue; } - if ( GinIsPostingTree(itup) ) + if (GinIsPostingTree(itup)) { BlockNumber rootPostingTree = GinGetPostingTree(itup); Datum newDatum, - savedDatum = datumCopy ( - idatum, - btree->ginstate->origTupdesc->attrs[scanEntry->attnum-1]->attbyval, - btree->ginstate->origTupdesc->attrs[scanEntry->attnum-1]->attlen - ); + savedDatum = datumCopy( + idatum, + btree->ginstate->origTupdesc->attrs[scanEntry->attnum - 1]->attbyval, + btree->ginstate->origTupdesc->attrs[scanEntry->attnum - 1]->attlen + ); + /* - * We should unlock current page (but not unpin) during - * tree scan to prevent deadlock with vacuum processes. + * We should unlock current page (but not unpin) during tree scan + * to prevent deadlock with vacuum processes. * * We save current entry value (savedDatum) to be able to refind * our tuple after re-locking */ LockBuffer(stack->buffer, GIN_UNLOCK); - scanForItems( btree->index, scanEntry, rootPostingTree ); + scanForItems(btree->index, scanEntry, rootPostingTree); /* - * We lock again the entry page and while it was unlocked - * insert might occured, so we need to refind our position + * We lock again the entry page and while it was unlocked insert + * might occured, so we need to refind our position */ LockBuffer(stack->buffer, GIN_SHARE); page = BufferGetPage(stack->buffer); - if ( !GinPageIsLeaf(page) ) + if (!GinPageIsLeaf(page)) { /* - * Root page becomes non-leaf while we unlock it. We - * will start again, this situation doesn't cause - * often - root can became a non-leaf only one per - * life of index. + * Root page becomes non-leaf while we unlock it. We will + * start again, this situation doesn't cause often - root can + * became a non-leaf only one per life of index. */ return false; } - for(;;) + for (;;) { - if ( moveRightIfItNeeded(btree, stack) == false ) - elog(ERROR, "lost saved point in index"); /* must not happen !!! */ + if (moveRightIfItNeeded(btree, stack) == false) + elog(ERROR, "lost saved point in index"); /* must not happen !!! */ page = BufferGetPage(stack->buffer); itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, stack->off)); - newDatum = gin_index_getattr( btree->ginstate, itup ); + newDatum = gin_index_getattr(btree->ginstate, itup); - if ( gintuple_get_attrnum( btree->ginstate, itup ) != scanEntry->attnum ) - elog(ERROR, "lost saved point in index"); /* must not happen !!! */ + if (gintuple_get_attrnum(btree->ginstate, itup) != scanEntry->attnum) + elog(ERROR, "lost saved point in index"); /* must not happen !!! */ - if ( compareEntries(btree->ginstate, scanEntry->attnum, newDatum, savedDatum) == 0 ) + if (compareEntries(btree->ginstate, scanEntry->attnum, newDatum, savedDatum) == 0) { /* Found! */ - if ( btree->ginstate->origTupdesc->attrs[scanEntry->attnum-1]->attbyval == false ) - pfree( DatumGetPointer(savedDatum) ); + if (btree->ginstate->origTupdesc->attrs[scanEntry->attnum - 1]->attbyval == false) + pfree(DatumGetPointer(savedDatum)); break; } @@ -254,8 +254,8 @@ computePartialMatchList( GinBtreeData *btree, GinBtreeStack *stack, GinScanEntry } else { - tbm_add_tuples( scanEntry->partialMatch, GinGetPosting(itup), GinGetNPosting(itup), false); - scanEntry->predictNumberResult += GinGetNPosting(itup); + tbm_add_tuples(scanEntry->partialMatch, GinGetPosting(itup), GinGetNPosting(itup), false); + scanEntry->predictNumberResult += GinGetNPosting(itup); } /* @@ -273,10 +273,10 @@ computePartialMatchList( GinBtreeData *btree, GinBtreeStack *stack, GinScanEntry static void startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) { - GinBtreeData btreeEntry; - GinBtreeStack *stackEntry; - Page page; - bool needUnlock = TRUE; + GinBtreeData btreeEntry; + GinBtreeStack *stackEntry; + Page page; + bool needUnlock = TRUE; entry->buffer = InvalidBuffer; entry->offset = InvalidOffsetNumber; @@ -294,8 +294,8 @@ startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) } /* - * we should find entry, and begin scan of posting tree - * or just store posting list in memory + * we should find entry, and begin scan of posting tree or just store + * posting list in memory */ prepareEntryScan(&btreeEntry, index, entry->attnum, entry->entry, ginstate); @@ -305,27 +305,26 @@ startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) entry->isFinished = TRUE; - if ( entry->isPartialMatch ) + if (entry->isPartialMatch) { /* - * btreeEntry.findItem points to the first equal or greater value - * than needed. So we will scan further and collect all - * ItemPointers + * btreeEntry.findItem points to the first equal or greater value than + * needed. So we will scan further and collect all ItemPointers */ btreeEntry.findItem(&btreeEntry, stackEntry); - if ( computePartialMatchList( &btreeEntry, stackEntry, entry ) == false ) + if (computePartialMatchList(&btreeEntry, stackEntry, entry) == false) { /* - * GIN tree was seriously restructured, so we will - * cleanup all found data and rescan. See comments near - * 'return false' in computePartialMatchList() + * GIN tree was seriously restructured, so we will cleanup all + * found data and rescan. See comments near 'return false' in + * computePartialMatchList() */ - if ( entry->partialMatch ) + if (entry->partialMatch) { if (entry->partialMatchIterator) tbm_end_iterate(entry->partialMatchIterator); entry->partialMatchIterator = NULL; - tbm_free( entry->partialMatch ); + tbm_free(entry->partialMatch); entry->partialMatch = NULL; } LockBuffer(stackEntry->buffer, GIN_UNLOCK); @@ -335,7 +334,7 @@ startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) return; } - if ( entry->partialMatch && !tbm_is_empty(entry->partialMatch) ) + if (entry->partialMatch && !tbm_is_empty(entry->partialMatch)) { entry->partialMatchIterator = tbm_begin_iterate(entry->partialMatch); entry->isFinished = FALSE; @@ -352,22 +351,22 @@ startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) Page page; /* - * We should unlock entry page before make deal with - * posting tree to prevent deadlocks with vacuum processes. - * Because entry is never deleted from page and posting tree is - * never reduced to the posting list, we can unlock page after - * getting BlockNumber of root of posting tree. + * We should unlock entry page before make deal with posting tree + * to prevent deadlocks with vacuum processes. Because entry is + * never deleted from page and posting tree is never reduced to + * the posting list, we can unlock page after getting BlockNumber + * of root of posting tree. */ LockBuffer(stackEntry->buffer, GIN_UNLOCK); needUnlock = FALSE; gdi = prepareScanPostingTree(index, rootPostingTree, TRUE); entry->buffer = scanBeginPostingTree(gdi); + /* * We keep buffer pinned because we need to prevent deletion of - * page during scan. See GIN's vacuum implementation. RefCount - * is increased to keep buffer pinned after freeGinBtreeStack() - * call. + * page during scan. See GIN's vacuum implementation. RefCount is + * increased to keep buffer pinned after freeGinBtreeStack() call. */ IncrBufferRefCount(entry->buffer); @@ -377,10 +376,10 @@ startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) /* * Keep page content in memory to prevent durable page locking */ - entry->list = (ItemPointerData *) palloc( BLCKSZ ); + entry->list = (ItemPointerData *) palloc(BLCKSZ); entry->nlist = GinPageGetOpaque(page)->maxoff; - memcpy( entry->list, GinDataPageGetItem(page, FirstOffsetNumber), - GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData) ); + memcpy(entry->list, GinDataPageGetItem(page, FirstOffsetNumber), + GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData)); LockBuffer(entry->buffer, GIN_UNLOCK); freeGinBtreeStack(gdi->stack); @@ -397,7 +396,7 @@ startScanEntry(Relation index, GinState *ginstate, GinScanEntry entry) } if (needUnlock) - LockBuffer(stackEntry->buffer, GIN_UNLOCK); + LockBuffer(stackEntry->buffer, GIN_UNLOCK); freeGinBtreeStack(stackEntry); } @@ -419,10 +418,10 @@ startScanKey(Relation index, GinState *ginstate, GinScanKey key) if (GinFuzzySearchLimit > 0) { /* - * If all of keys more than threshold we will try to reduce - * result, we hope (and only hope, for intersection operation of - * array our supposition isn't true), that total result will not - * more than minimal predictNumberResult. + * If all of keys more than threshold we will try to reduce result, we + * hope (and only hope, for intersection operation of array our + * supposition isn't true), that total result will not more than + * minimal predictNumberResult. */ for (i = 0; i < key->nentries; i++) @@ -459,7 +458,7 @@ entryGetNextItem(Relation index, GinScanEntry entry) Page page; BlockNumber blkno; - for(;;) + for (;;) { entry->offset++; @@ -471,7 +470,7 @@ entryGetNextItem(Relation index, GinScanEntry entry) LockBuffer(entry->buffer, GIN_SHARE); page = BufferGetPage(entry->buffer); - for(;;) + for (;;) { /* * It's needed to go by right link. During that we should refind @@ -501,20 +500,20 @@ entryGetNextItem(Relation index, GinScanEntry entry) * Found position equal to or greater than stored */ entry->nlist = GinPageGetOpaque(page)->maxoff; - memcpy( entry->list, GinDataPageGetItem(page, FirstOffsetNumber), - GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData) ); + memcpy(entry->list, GinDataPageGetItem(page, FirstOffsetNumber), + GinPageGetOpaque(page)->maxoff * sizeof(ItemPointerData)); LockBuffer(entry->buffer, GIN_UNLOCK); - if ( !ItemPointerIsValid(&entry->curItem) || - compareItemPointers( &entry->curItem, entry->list + entry->offset - 1 ) == 0 ) + if (!ItemPointerIsValid(&entry->curItem) || + compareItemPointers(&entry->curItem, entry->list + entry->offset - 1) == 0) { /* - * First pages are deleted or empty, or we found exact position, - * so break inner loop and continue outer one. + * First pages are deleted or empty, or we found exact + * position, so break inner loop and continue outer one. */ - break; + break; } /* @@ -543,7 +542,7 @@ entryGetItem(Relation index, GinScanEntry entry) entry->isFinished = entry->master->isFinished; entry->curItem = entry->master->curItem; } - else if ( entry->partialMatch ) + else if (entry->partialMatch) { do { @@ -552,7 +551,7 @@ entryGetItem(Relation index, GinScanEntry entry) { entry->partialMatchResult = tbm_iterate(entry->partialMatchIterator); - if ( entry->partialMatchResult == NULL ) + if (entry->partialMatchResult == NULL) { ItemPointerSet(&entry->curItem, InvalidBlockNumber, InvalidOffsetNumber); tbm_end_iterate(entry->partialMatchIterator); @@ -562,22 +561,23 @@ entryGetItem(Relation index, GinScanEntry entry) } /* - * reset counter to the beginning of entry->partialMatchResult. - * Note: entry->offset is still greater than - * partialMatchResult->ntuples if partialMatchResult is - * lossy. So, on next call we will get next result from - * TIDBitmap. + * reset counter to the beginning of + * entry->partialMatchResult. Note: entry->offset is still + * greater than partialMatchResult->ntuples if + * partialMatchResult is lossy. So, on next call we will get + * next result from TIDBitmap. */ entry->offset = 0; } - if ( entry->partialMatchResult->ntuples < 0 ) + if (entry->partialMatchResult->ntuples < 0) { /* * lossy result, so we need to check the whole page */ ItemPointerSetLossyPage(&entry->curItem, entry->partialMatchResult->blockno); + /* * We might as well fall out of the loop; we could not * estimate number of results on this page to support correct @@ -618,7 +618,7 @@ entryGetItem(Relation index, GinScanEntry entry) * Sets key->curItem to new found heap item pointer for one scan key * Returns isFinished, ie TRUE means we did NOT get a new item pointer! * Also, *keyrecheck is set true if recheck is needed for this scan key. - * Note: lossy page could be returned after items from the same page. + * Note: lossy page could be returned after items from the same page. */ static bool keyGetItem(Relation index, GinState *ginstate, MemoryContext tempCtx, @@ -636,10 +636,10 @@ keyGetItem(Relation index, GinState *ginstate, MemoryContext tempCtx, { /* * move forward from previously value and set new curItem, which is - * minimal from entries->curItems. Lossy page is encoded by ItemPointer - * with max value for offset (0xffff), so if there is an non-lossy entries - * on lossy page they will returned too and after that the whole page. - * That's not a problem for resulting tidbitmap. + * minimal from entries->curItems. Lossy page is encoded by + * ItemPointer with max value for offset (0xffff), so if there is an + * non-lossy entries on lossy page they will returned too and after + * that the whole page. That's not a problem for resulting tidbitmap. */ ItemPointerSetMax(&key->curItem); for (i = 0; i < key->nentries; i++) @@ -649,9 +649,9 @@ keyGetItem(Relation index, GinState *ginstate, MemoryContext tempCtx, if (key->entryRes[i]) { /* - * Move forward only entries which was the least - * on previous call, key->entryRes[i] points that - * current entry was a result of loop/call. + * Move forward only entries which was the least on previous + * call, key->entryRes[i] points that current entry was a + * result of loop/call. */ if (entry->isFinished == FALSE && entryGetItem(index, entry) == FALSE) { @@ -685,10 +685,10 @@ keyGetItem(Relation index, GinState *ginstate, MemoryContext tempCtx, /*---------- * entryRes array is used for: * - as an argument for consistentFn - * - entry->curItem with corresponding key->entryRes[i] == false are - * greater than key->curItem, so next loop/call they should be - * renewed by entryGetItem(). So, we need to set up an array before - * checking of lossy page. + * - entry->curItem with corresponding key->entryRes[i] == false are + * greater than key->curItem, so next loop/call they should be + * renewed by entryGetItem(). So, we need to set up an array before + * checking of lossy page. *---------- */ for (i = 0; i < key->nentries; i++) @@ -717,7 +717,7 @@ keyGetItem(Relation index, GinState *ginstate, MemoryContext tempCtx, return FALSE; oldCtx = MemoryContextSwitchTo(tempCtx); - res = DatumGetBool(FunctionCall6(&ginstate->consistentFn[key->attnum-1], + res = DatumGetBool(FunctionCall6(&ginstate->consistentFn[key->attnum - 1], PointerGetDatum(key->entryRes), UInt16GetDatum(key->strategy), key->query, @@ -745,35 +745,36 @@ keyGetItem(Relation index, GinState *ginstate, MemoryContext tempCtx, static bool scanGetCandidate(IndexScanDesc scan, pendingPosition *pos) { - OffsetNumber maxoff; - Page page; - IndexTuple itup; + OffsetNumber maxoff; + Page page; + IndexTuple itup; - ItemPointerSetInvalid( &pos->item ); - for(;;) + ItemPointerSetInvalid(&pos->item); + for (;;) { page = BufferGetPage(pos->pendingBuffer); maxoff = PageGetMaxOffsetNumber(page); - if ( pos->firstOffset > maxoff ) + if (pos->firstOffset > maxoff) { BlockNumber blkno = GinPageGetOpaque(page)->rightlink; - if ( blkno == InvalidBlockNumber ) + + if (blkno == InvalidBlockNumber) { UnlockReleaseBuffer(pos->pendingBuffer); - pos->pendingBuffer=InvalidBuffer; + pos->pendingBuffer = InvalidBuffer; return false; } else { /* - * Here we must prevent deletion of next page by - * insertcleanup process, which may be trying to obtain - * exclusive lock on current page. So, we lock next - * page before releasing the current one + * Here we must prevent deletion of next page by insertcleanup + * process, which may be trying to obtain exclusive lock on + * current page. So, we lock next page before releasing the + * current one */ - Buffer tmpbuf = ReadBuffer(scan->indexRelation, blkno); + Buffer tmpbuf = ReadBuffer(scan->indexRelation, blkno); LockBuffer(tmpbuf, GIN_SHARE); UnlockReleaseBuffer(pos->pendingBuffer); @@ -786,12 +787,12 @@ scanGetCandidate(IndexScanDesc scan, pendingPosition *pos) { itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, pos->firstOffset)); pos->item = itup->t_tid; - if ( GinPageHasFullRow(page) ) + if (GinPageHasFullRow(page)) { /* * find itempointer to the next row */ - for(pos->lastOffset = pos->firstOffset+1; pos->lastOffset<=maxoff; pos->lastOffset++) + for (pos->lastOffset = pos->firstOffset + 1; pos->lastOffset <= maxoff; pos->lastOffset++) { itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, pos->lastOffset)); if (!ItemPointerEquals(&pos->item, &itup->t_tid)) @@ -807,9 +808,9 @@ scanGetCandidate(IndexScanDesc scan, pendingPosition *pos) } /* - * Now pos->firstOffset points to the first tuple of current heap row, - * pos->lastOffset points to the first tuple of second heap row (or - * to the end of page) + * Now pos->firstOffset points to the first tuple of current heap + * row, pos->lastOffset points to the first tuple of second heap + * row (or to the end of page) */ break; @@ -830,23 +831,23 @@ static bool matchPartialInPendingList(GinState *ginstate, Page page, OffsetNumber off, OffsetNumber maxoff, Datum value, OffsetNumber attrnum, - Datum *datum, bool *datumExtracted, + Datum *datum, bool *datumExtracted, StrategyNumber strategy, Pointer extra_data) { - IndexTuple itup; - int32 cmp; + IndexTuple itup; + int32 cmp; - while ( off < maxoff ) + while (off < maxoff) { itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, off)); - if ( attrnum != gintuple_get_attrnum(ginstate, itup) ) + if (attrnum != gintuple_get_attrnum(ginstate, itup)) return false; - if (datumExtracted[ off-1 ] == false) + if (datumExtracted[off - 1] == false) { - datum[ off-1 ] = gin_index_getattr(ginstate, itup); - datumExtracted[ off-1 ] = true; + datum[off - 1] = gin_index_getattr(ginstate, itup); + datumExtracted[off - 1] = true; } /*---------- @@ -856,9 +857,9 @@ matchPartialInPendingList(GinState *ginstate, Page page, * case cmp < 0 => not match and continue scan *---------- */ - cmp = DatumGetInt32(FunctionCall4(&ginstate->comparePartialFn[attrnum-1], + cmp = DatumGetInt32(FunctionCall4(&ginstate->comparePartialFn[attrnum - 1], value, - datum[off-1], + datum[off - 1], UInt16GetDatum(strategy), PointerGetDatum(extra_data))); if (cmp == 0) @@ -882,12 +883,13 @@ matchPartialInPendingList(GinState *ginstate, Page page, static bool collectDatumForItem(IndexScanDesc scan, pendingPosition *pos) { - GinScanOpaque so = (GinScanOpaque) scan->opaque; - OffsetNumber attrnum; - Page page; - IndexTuple itup; - int i, j; - bool hasMatch = false; + GinScanOpaque so = (GinScanOpaque) scan->opaque; + OffsetNumber attrnum; + Page page; + IndexTuple itup; + int i, + j; + bool hasMatch = false; /* * Resets entryRes @@ -895,38 +897,40 @@ collectDatumForItem(IndexScanDesc scan, pendingPosition *pos) for (i = 0; i < so->nkeys; i++) { GinScanKey key = so->keys + i; - memset( key->entryRes, FALSE, key->nentries ); + + memset(key->entryRes, FALSE, key->nentries); } - for(;;) + for (;;) { - Datum datum[ BLCKSZ/sizeof(IndexTupleData) ]; - bool datumExtracted[ BLCKSZ/sizeof(IndexTupleData) ]; + Datum datum[BLCKSZ / sizeof(IndexTupleData)]; + bool datumExtracted[BLCKSZ / sizeof(IndexTupleData)]; - Assert( pos->lastOffset > pos->firstOffset ); - memset(datumExtracted + pos->firstOffset - 1, 0, sizeof(bool) * (pos->lastOffset - pos->firstOffset )); + Assert(pos->lastOffset > pos->firstOffset); + memset(datumExtracted + pos->firstOffset - 1, 0, sizeof(bool) * (pos->lastOffset - pos->firstOffset)); page = BufferGetPage(pos->pendingBuffer); - for(i = 0; i < so->nkeys; i++) + for (i = 0; i < so->nkeys; i++) { - GinScanKey key = so->keys + i; + GinScanKey key = so->keys + i; - for(j=0; j<key->nentries; j++) + for (j = 0; j < key->nentries; j++) { - OffsetNumber StopLow = pos->firstOffset, - StopHigh = pos->lastOffset, - StopMiddle; - GinScanEntry entry = key->scanEntry + j; + OffsetNumber StopLow = pos->firstOffset, + StopHigh = pos->lastOffset, + StopMiddle; + GinScanEntry entry = key->scanEntry + j; /* already true - do not extra work */ - if ( key->entryRes[j] ) + if (key->entryRes[j]) continue; /* - * Interested tuples are from pos->firstOffset to pos->lastOffset - * and they are ordered by (attnum, Datum) as it's done in entry tree - * So we could use binary search to prevent linear scanning + * Interested tuples are from pos->firstOffset to + * pos->lastOffset and they are ordered by (attnum, Datum) as + * it's done in entry tree So we could use binary search to + * prevent linear scanning */ while (StopLow < StopHigh) { @@ -941,53 +945,53 @@ collectDatumForItem(IndexScanDesc scan, pendingPosition *pos) StopLow = StopMiddle + 1; else { - int res; + int res; - if (datumExtracted[ StopMiddle-1 ] == false) + if (datumExtracted[StopMiddle - 1] == false) { - datum[ StopMiddle-1 ] = gin_index_getattr(&so->ginstate, itup); - datumExtracted[ StopMiddle-1 ] = true; + datum[StopMiddle - 1] = gin_index_getattr(&so->ginstate, itup); + datumExtracted[StopMiddle - 1] = true; } - res = compareEntries(&so->ginstate, - entry->attnum, - entry->entry, - datum[ StopMiddle-1 ]); + res = compareEntries(&so->ginstate, + entry->attnum, + entry->entry, + datum[StopMiddle - 1]); - if ( res == 0 ) + if (res == 0) { /* - * The exact match causes, so we just scan from - * current position to find a partial match. - * See comment above about tuple's ordering. + * The exact match causes, so we just scan from + * current position to find a partial match. See + * comment above about tuple's ordering. */ - if ( entry->isPartialMatch ) + if (entry->isPartialMatch) key->entryRes[j] = matchPartialInPendingList(&so->ginstate, - page, StopMiddle, + page, StopMiddle, pos->lastOffset, entry->entry, entry->attnum, datum, datumExtracted, entry->strategy, - entry->extra_data); + entry->extra_data); else key->entryRes[j] = true; break; } - else if ( res < 0 ) + else if (res < 0) StopHigh = StopMiddle; else StopLow = StopMiddle + 1; } } - if ( StopLow>=StopHigh && entry->isPartialMatch ) + if (StopLow >= StopHigh && entry->isPartialMatch) { - /* - * The exact match wasn't found, so we need to start - * scan from first tuple greater then current entry - * See comment above about tuple's ordering. + /* + * The exact match wasn't found, so we need to start scan + * from first tuple greater then current entry See comment + * above about tuple's ordering. */ key->entryRes[j] = matchPartialInPendingList(&so->ginstate, @@ -1007,7 +1011,7 @@ collectDatumForItem(IndexScanDesc scan, pendingPosition *pos) pos->firstOffset = pos->lastOffset; - if ( GinPageHasFullRow(page) ) + if (GinPageHasFullRow(page)) { /* * We scan all values from one tuple, go to next one @@ -1020,12 +1024,13 @@ collectDatumForItem(IndexScanDesc scan, pendingPosition *pos) ItemPointerData item = pos->item; /* - * need to get next portion of tuples of row containing - * on several pages + * need to get next portion of tuples of row containing on several + * pages */ - if ( scanGetCandidate(scan, pos) == false || !ItemPointerEquals(&pos->item, &item) ) - elog(ERROR,"Could not process tuple"); /* XXX should not be here ! */ + if (scanGetCandidate(scan, pos) == false || !ItemPointerEquals(&pos->item, &item)) + elog(ERROR, "Could not process tuple"); /* XXX should not be + * here ! */ } } @@ -1039,12 +1044,14 @@ static void scanPendingInsert(IndexScanDesc scan, TIDBitmap *tbm, int64 *ntids) { GinScanOpaque so = (GinScanOpaque) scan->opaque; - MemoryContext oldCtx; - bool recheck, keyrecheck, match; - int i; - pendingPosition pos; - Buffer metabuffer = ReadBuffer(scan->indexRelation, GIN_METAPAGE_BLKNO); - BlockNumber blkno; + MemoryContext oldCtx; + bool recheck, + keyrecheck, + match; + int i; + pendingPosition pos; + Buffer metabuffer = ReadBuffer(scan->indexRelation, GIN_METAPAGE_BLKNO); + BlockNumber blkno; *ntids = 0; @@ -1052,39 +1059,38 @@ scanPendingInsert(IndexScanDesc scan, TIDBitmap *tbm, int64 *ntids) blkno = GinPageGetMeta(BufferGetPage(metabuffer))->head; /* - * fetch head of list before unlocking metapage. - * head page must be pinned to prevent deletion by vacuum process + * fetch head of list before unlocking metapage. head page must be pinned + * to prevent deletion by vacuum process */ - if ( blkno == InvalidBlockNumber ) + if (blkno == InvalidBlockNumber) { /* No pending list, so proceed with normal scan */ - UnlockReleaseBuffer( metabuffer ); + UnlockReleaseBuffer(metabuffer); return; } pos.pendingBuffer = ReadBuffer(scan->indexRelation, blkno); LockBuffer(pos.pendingBuffer, GIN_SHARE); pos.firstOffset = FirstOffsetNumber; - UnlockReleaseBuffer( metabuffer ); + UnlockReleaseBuffer(metabuffer); /* - * loop for each heap row. scanGetCandidate returns full row - * or row's tuples from first page. + * loop for each heap row. scanGetCandidate returns full row or row's + * tuples from first page. */ - while( scanGetCandidate(scan, &pos) ) + while (scanGetCandidate(scan, &pos)) { - /* - * Check entries in tuple and setup entryRes array - * If tuples of heap's row are placed on several pages - * collectDatumForItem will read all of that pages. + * Check entries in tuple and setup entryRes array If tuples of heap's + * row are placed on several pages collectDatumForItem will read all + * of that pages. */ if (!collectDatumForItem(scan, &pos)) continue; /* - * Matching of entries of one row is finished, - * so check row by consistent function. + * Matching of entries of one row is finished, so check row by + * consistent function. */ oldCtx = MemoryContextSwitchTo(so->tempCtx); recheck = false; @@ -1092,11 +1098,11 @@ scanPendingInsert(IndexScanDesc scan, TIDBitmap *tbm, int64 *ntids) for (i = 0; i < so->nkeys; i++) { - GinScanKey key = so->keys + i; + GinScanKey key = so->keys + i; keyrecheck = true; - if (!DatumGetBool(FunctionCall6(&so->ginstate.consistentFn[key->attnum-1], + if (!DatumGetBool(FunctionCall6(&so->ginstate.consistentFn[key->attnum - 1], PointerGetDatum(key->entryRes), UInt16GetDatum(key->strategy), key->query, @@ -1114,7 +1120,7 @@ scanPendingInsert(IndexScanDesc scan, TIDBitmap *tbm, int64 *ntids) MemoryContextSwitchTo(oldCtx); MemoryContextReset(so->tempCtx); - if ( match ) + if (match) { tbm_add_tuples(tbm, &pos.item, 1, recheck); (*ntids)++; @@ -1137,10 +1143,10 @@ scanGetItem(IndexScanDesc scan, ItemPointerData *item, bool *recheck) * We return recheck = true if any of the keyGetItem calls return * keyrecheck = true. Note that because the second loop might advance * some keys, this could theoretically be too conservative. In practice - * though, we expect that a consistentFn's recheck result will depend - * only on the operator and the query, so for any one key it should - * stay the same regardless of advancing to new items. So it's not - * worth working harder. + * though, we expect that a consistentFn's recheck result will depend only + * on the operator and the query, so for any one key it should stay the + * same regardless of advancing to new items. So it's not worth working + * harder. */ *recheck = false; @@ -1165,13 +1171,13 @@ scanGetItem(IndexScanDesc scan, ItemPointerData *item, bool *recheck) { int cmp = compareItemPointers(item, &key->curItem); - if ( cmp != 0 && (ItemPointerIsLossyPage(item) || ItemPointerIsLossyPage(&key->curItem)) ) + if (cmp != 0 && (ItemPointerIsLossyPage(item) || ItemPointerIsLossyPage(&key->curItem))) { /* * if one of ItemPointers points to the whole page then * compare only page's number */ - if ( ItemPointerGetBlockNumber(item) == ItemPointerGetBlockNumber(&key->curItem) ) + if (ItemPointerGetBlockNumber(item) == ItemPointerGetBlockNumber(&key->curItem)) cmp = 0; else cmp = (ItemPointerGetBlockNumber(item) > ItemPointerGetBlockNumber(&key->curItem)) ? 1 : -1; @@ -1205,7 +1211,7 @@ Datum gingetbitmap(PG_FUNCTION_ARGS) { IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); - TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); + TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); int64 ntids; if (GinIsNewKey(scan)) @@ -1217,15 +1223,14 @@ gingetbitmap(PG_FUNCTION_ARGS) ntids = 0; /* - * First, scan the pending list and collect any matching entries into - * the bitmap. After we scan a pending item, some other backend could - * post it into the main index, and so we might visit it a second time - * during the main scan. This is okay because we'll just re-set the - * same bit in the bitmap. (The possibility of duplicate visits is a - * major reason why GIN can't support the amgettuple API, however.) - * Note that it would not do to scan the main index before the pending - * list, since concurrent cleanup could then make us miss entries - * entirely. + * First, scan the pending list and collect any matching entries into the + * bitmap. After we scan a pending item, some other backend could post it + * into the main index, and so we might visit it a second time during the + * main scan. This is okay because we'll just re-set the same bit in the + * bitmap. (The possibility of duplicate visits is a major reason why GIN + * can't support the amgettuple API, however.) Note that it would not do + * to scan the main index before the pending list, since concurrent + * cleanup could then make us miss entries entirely. */ scanPendingInsert(scan, tbm, &ntids); @@ -1244,7 +1249,7 @@ gingetbitmap(PG_FUNCTION_ARGS) if (!scanGetItem(scan, &iptr, &recheck)) break; - if ( ItemPointerIsLossyPage(&iptr) ) + if (ItemPointerIsLossyPage(&iptr)) tbm_add_page(tbm, ItemPointerGetBlockNumber(&iptr)); else tbm_add_tuples(tbm, &iptr, 1, recheck); diff --git a/src/backend/access/gin/gininsert.c b/src/backend/access/gin/gininsert.c index ef3d4bbb032..2adaed43d48 100644 --- a/src/backend/access/gin/gininsert.c +++ b/src/backend/access/gin/gininsert.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/gininsert.c,v 1.21 2009/06/06 02:39:40 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/gininsert.c,v 1.22 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -100,15 +100,15 @@ static IndexTuple addItemPointersToTuple(Relation index, GinState *ginstate, GinBtreeStack *stack, IndexTuple old, ItemPointerData *items, uint32 nitem, bool isBuild) { - Datum key = gin_index_getattr(ginstate, old); - OffsetNumber attnum = gintuple_get_attrnum(ginstate, old); - IndexTuple res = GinFormTuple(ginstate, attnum, key, - NULL, nitem + GinGetNPosting(old)); + Datum key = gin_index_getattr(ginstate, old); + OffsetNumber attnum = gintuple_get_attrnum(ginstate, old); + IndexTuple res = GinFormTuple(ginstate, attnum, key, + NULL, nitem + GinGetNPosting(old)); if (res) { /* good, small enough */ - uint32 newnitem; + uint32 newnitem; newnitem = MergeItemPointers(GinGetPosting(res), GinGetPosting(old), GinGetNPosting(old), @@ -236,15 +236,15 @@ ginBuildCallback(Relation index, HeapTuple htup, Datum *values, { GinBuildState *buildstate = (GinBuildState *) state; MemoryContext oldCtx; - int i; + int i; oldCtx = MemoryContextSwitchTo(buildstate->tmpCtx); - for(i=0; i<buildstate->ginstate.origTupdesc->natts;i++) - if ( !isnull[i] ) - buildstate->indtuples += ginHeapTupleBulkInsert(buildstate, - (OffsetNumber)(i+1), values[i], - &htup->t_self); + for (i = 0; i < buildstate->ginstate.origTupdesc->natts; i++) + if (!isnull[i]) + buildstate->indtuples += ginHeapTupleBulkInsert(buildstate, + (OffsetNumber) (i + 1), values[i], + &htup->t_self); /* If we've maxed out our available memory, dump everything to the index */ /* Also dump if the tree seems to be getting too unbalanced */ @@ -254,7 +254,7 @@ ginBuildCallback(Relation index, HeapTuple htup, Datum *values, ItemPointerData *list; Datum entry; uint32 nlist; - OffsetNumber attnum; + OffsetNumber attnum; while ((list = ginGetEntry(&buildstate->accum, &attnum, &entry, &nlist)) != NULL) { @@ -279,7 +279,8 @@ ginbuild(PG_FUNCTION_ARGS) IndexBuildResult *result; double reltuples; GinBuildState buildstate; - Buffer RootBuffer, MetaBuffer; + Buffer RootBuffer, + MetaBuffer; ItemPointerData *list; Datum entry; uint32 nlist; @@ -316,7 +317,7 @@ ginbuild(PG_FUNCTION_ARGS) rdata.next = NULL; recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_CREATE_INDEX, &rdata); - + page = BufferGetPage(RootBuffer); PageSetLSN(page, recptr); PageSetTLI(page, ThisTimeLineID); @@ -420,7 +421,7 @@ gininsert(PG_FUNCTION_ARGS) MemoryContext oldCtx; MemoryContext insertCtx; uint32 res = 0; - int i; + int i; insertCtx = AllocSetContextCreate(CurrentMemoryContext, "Gin insert temporary context", @@ -432,24 +433,24 @@ gininsert(PG_FUNCTION_ARGS) initGinState(&ginstate, index); - if ( GinGetUseFastUpdate(index) ) + if (GinGetUseFastUpdate(index)) { - GinTupleCollector collector; + GinTupleCollector collector; memset(&collector, 0, sizeof(GinTupleCollector)); - for(i=0; i<ginstate.origTupdesc->natts;i++) - if ( !isnull[i] ) + for (i = 0; i < ginstate.origTupdesc->natts; i++) + if (!isnull[i]) res += ginHeapTupleFastCollect(index, &ginstate, &collector, - (OffsetNumber)(i+1), values[i], ht_ctid); + (OffsetNumber) (i + 1), values[i], ht_ctid); ginHeapTupleFastInsert(index, &ginstate, &collector); } else { - for(i=0; i<ginstate.origTupdesc->natts;i++) - if ( !isnull[i] ) - res += ginHeapTupleInsert(index, &ginstate, - (OffsetNumber)(i+1), values[i], ht_ctid); + for (i = 0; i < ginstate.origTupdesc->natts; i++) + if (!isnull[i]) + res += ginHeapTupleInsert(index, &ginstate, + (OffsetNumber) (i + 1), values[i], ht_ctid); } diff --git a/src/backend/access/gin/ginscan.c b/src/backend/access/gin/ginscan.c index a3d11357084..bda97033adc 100644 --- a/src/backend/access/gin/ginscan.c +++ b/src/backend/access/gin/ginscan.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginscan.c,v 1.23 2009/04/05 11:32:01 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginscan.c,v 1.24 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -37,7 +37,7 @@ ginbeginscan(PG_FUNCTION_ARGS) static void fillScanKey(GinState *ginstate, GinScanKey key, OffsetNumber attnum, Datum query, - Datum *entryValues, bool *partial_matches, uint32 nEntryValues, + Datum *entryValues, bool *partial_matches, uint32 nEntryValues, StrategyNumber strategy, Pointer *extra_data) { uint32 i, @@ -68,8 +68,8 @@ fillScanKey(GinState *ginstate, GinScanKey key, OffsetNumber attnum, Datum query key->scanEntry[i].strategy = strategy; key->scanEntry[i].list = NULL; key->scanEntry[i].nlist = 0; - key->scanEntry[i].isPartialMatch = ( ginstate->canPartialMatch[attnum - 1] && partial_matches ) - ? partial_matches[i] : false; + key->scanEntry[i].isPartialMatch = (ginstate->canPartialMatch[attnum - 1] && partial_matches) + ? partial_matches[i] : false; /* link to the equals entry in current scan key */ key->scanEntry[i].master = NULL; @@ -172,12 +172,12 @@ newScanKey(IndexScanDesc scan) ScanKey skey = &scankey[i]; Datum *entryValues; int32 nEntryValues = 0; - bool *partial_matches = NULL; - Pointer *extra_data = NULL; + bool *partial_matches = NULL; + Pointer *extra_data = NULL; /* - * Assume, that GIN-indexable operators are strict, so - * nothing could be found + * Assume, that GIN-indexable operators are strict, so nothing could + * be found */ if (skey->sk_flags & SK_ISNULL) { @@ -196,8 +196,8 @@ newScanKey(IndexScanDesc scan) if (nEntryValues < 0) { /* - * extractQueryFn signals that nothing can match, so we can - * just set isVoidRes flag. No need to examine any more keys. + * extractQueryFn signals that nothing can match, so we can just + * set isVoidRes flag. No need to examine any more keys. */ so->isVoidRes = true; break; @@ -206,10 +206,10 @@ newScanKey(IndexScanDesc scan) if (entryValues == NULL || nEntryValues == 0) { /* - * extractQueryFn signals that everything matches. This would - * require a full scan, which we can't do, but perhaps there - * is another scankey that provides a restriction to use. So - * we keep going and check only at the end. + * extractQueryFn signals that everything matches. This would + * require a full scan, which we can't do, but perhaps there is + * another scankey that provides a restriction to use. So we keep + * going and check only at the end. */ continue; } diff --git a/src/backend/access/gin/ginutil.c b/src/backend/access/gin/ginutil.c index e0951a6a4f8..3834ae3b562 100644 --- a/src/backend/access/gin/ginutil.c +++ b/src/backend/access/gin/ginutil.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginutil.c,v 1.21 2009/03/24 20:17:11 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginutil.c,v 1.22 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -16,7 +16,7 @@ #include "access/genam.h" #include "access/gin.h" #include "access/reloptions.h" -#include "catalog/pg_type.h" +#include "catalog/pg_type.h" #include "storage/bufmgr.h" #include "storage/freespace.h" #include "storage/indexfsm.h" @@ -25,44 +25,44 @@ void initGinState(GinState *state, Relation index) { - int i; + int i; state->origTupdesc = index->rd_att; state->oneCol = (index->rd_att->natts == 1) ? true : false; - for(i=0;i<index->rd_att->natts;i++) + for (i = 0; i < index->rd_att->natts; i++) { - state->tupdesc[i] = CreateTemplateTupleDesc(2,false); + state->tupdesc[i] = CreateTemplateTupleDesc(2, false); - TupleDescInitEntry( state->tupdesc[i], (AttrNumber) 1, NULL, - INT2OID, -1, 0); - TupleDescInitEntry( state->tupdesc[i], (AttrNumber) 2, NULL, - index->rd_att->attrs[i]->atttypid, - index->rd_att->attrs[i]->atttypmod, - index->rd_att->attrs[i]->attndims - ); + TupleDescInitEntry(state->tupdesc[i], (AttrNumber) 1, NULL, + INT2OID, -1, 0); + TupleDescInitEntry(state->tupdesc[i], (AttrNumber) 2, NULL, + index->rd_att->attrs[i]->atttypid, + index->rd_att->attrs[i]->atttypmod, + index->rd_att->attrs[i]->attndims + ); fmgr_info_copy(&(state->compareFn[i]), - index_getprocinfo(index, i+1, GIN_COMPARE_PROC), - CurrentMemoryContext); + index_getprocinfo(index, i + 1, GIN_COMPARE_PROC), + CurrentMemoryContext); fmgr_info_copy(&(state->extractValueFn[i]), - index_getprocinfo(index, i+1, GIN_EXTRACTVALUE_PROC), - CurrentMemoryContext); + index_getprocinfo(index, i + 1, GIN_EXTRACTVALUE_PROC), + CurrentMemoryContext); fmgr_info_copy(&(state->extractQueryFn[i]), - index_getprocinfo(index, i+1, GIN_EXTRACTQUERY_PROC), - CurrentMemoryContext); + index_getprocinfo(index, i + 1, GIN_EXTRACTQUERY_PROC), + CurrentMemoryContext); fmgr_info_copy(&(state->consistentFn[i]), - index_getprocinfo(index, i+1, GIN_CONSISTENT_PROC), - CurrentMemoryContext); + index_getprocinfo(index, i + 1, GIN_CONSISTENT_PROC), + CurrentMemoryContext); /* * Check opclass capability to do partial match. */ - if ( index_getprocid(index, i+1, GIN_COMPARE_PARTIAL_PROC) != InvalidOid ) + if (index_getprocid(index, i + 1, GIN_COMPARE_PARTIAL_PROC) != InvalidOid) { fmgr_info_copy(&(state->comparePartialFn[i]), - index_getprocinfo(index, i+1, GIN_COMPARE_PARTIAL_PROC), + index_getprocinfo(index, i + 1, GIN_COMPARE_PARTIAL_PROC), CurrentMemoryContext); state->canPartialMatch[i] = true; @@ -82,21 +82,21 @@ gintuple_get_attrnum(GinState *ginstate, IndexTuple tuple) { OffsetNumber colN = FirstOffsetNumber; - if ( !ginstate->oneCol ) + if (!ginstate->oneCol) { - Datum res; - bool isnull; + Datum res; + bool isnull; /* - * First attribute is always int16, so we can safely use any - * tuple descriptor to obtain first attribute of tuple + * First attribute is always int16, so we can safely use any tuple + * descriptor to obtain first attribute of tuple */ res = index_getattr(tuple, FirstOffsetNumber, ginstate->tupdesc[0], &isnull); Assert(!isnull); colN = DatumGetUInt16(res); - Assert( colN >= FirstOffsetNumber && colN <= ginstate->origTupdesc->natts ); + Assert(colN >= FirstOffsetNumber && colN <= ginstate->origTupdesc->natts); } return colN; @@ -108,10 +108,10 @@ gintuple_get_attrnum(GinState *ginstate, IndexTuple tuple) Datum gin_index_getattr(GinState *ginstate, IndexTuple tuple) { - bool isnull; - Datum res; + bool isnull; + Datum res; - if ( ginstate->oneCol ) + if (ginstate->oneCol) { /* * Single column index doesn't store attribute numbers in tuples @@ -122,8 +122,8 @@ gin_index_getattr(GinState *ginstate, IndexTuple tuple) else { /* - * Since the datum type depends on which index column it's from, - * we must be careful to use the right tuple descriptor here. + * Since the datum type depends on which index column it's from, we + * must be careful to use the right tuple descriptor here. */ OffsetNumber colN = gintuple_get_attrnum(ginstate, tuple); @@ -216,8 +216,8 @@ GinInitBuffer(Buffer b, uint32 f) void GinInitMetabuffer(Buffer b) { - GinMetaPageData *metadata; - Page page = BufferGetPage(b); + GinMetaPageData *metadata; + Page page = BufferGetPage(b); GinInitPage(page, GIN_META, BufferGetPageSize(b)); @@ -234,7 +234,7 @@ compareEntries(GinState *ginstate, OffsetNumber attnum, Datum a, Datum b) { return DatumGetInt32( FunctionCall2( - &ginstate->compareFn[attnum-1], + &ginstate->compareFn[attnum - 1], a, b ) ); @@ -242,12 +242,12 @@ compareEntries(GinState *ginstate, OffsetNumber attnum, Datum a, Datum b) int compareAttEntries(GinState *ginstate, OffsetNumber attnum_a, Datum a, - OffsetNumber attnum_b, Datum b) + OffsetNumber attnum_b, Datum b) { - if ( attnum_a == attnum_b ) - return compareEntries( ginstate, attnum_a, a, b); + if (attnum_a == attnum_b) + return compareEntries(ginstate, attnum_a, a, b); - return ( attnum_a < attnum_b ) ? -1 : 1; + return (attnum_a < attnum_b) ? -1 : 1; } typedef struct @@ -275,7 +275,7 @@ extractEntriesS(GinState *ginstate, OffsetNumber attnum, Datum value, int32 *nen Datum *entries; entries = (Datum *) DatumGetPointer(FunctionCall2( - &ginstate->extractValueFn[attnum-1], + &ginstate->extractValueFn[attnum - 1], value, PointerGetDatum(nentries) )); @@ -288,7 +288,7 @@ extractEntriesS(GinState *ginstate, OffsetNumber attnum, Datum value, int32 *nen { cmpEntriesData arg; - arg.cmpDatumFunc = &ginstate->compareFn[attnum-1]; + arg.cmpDatumFunc = &ginstate->compareFn[attnum - 1]; arg.needUnique = needUnique; qsort_arg(entries, *nentries, sizeof(Datum), (qsort_arg_comparator) cmpEntries, (void *) &arg); @@ -348,7 +348,7 @@ ginoptions(PG_FUNCTION_ARGS) rdopts = allocateReloptStruct(sizeof(GinOptions), options, numoptions); fillRelOptions((void *) rdopts, sizeof(GinOptions), options, numoptions, - validate, tab, lengthof(tab)); + validate, tab, lengthof(tab)); pfree(options); diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c index 934bf7c3628..7f2ff9896f0 100644 --- a/src/backend/access/gin/ginvacuum.c +++ b/src/backend/access/gin/ginvacuum.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginvacuum.c,v 1.29 2009/06/06 22:13:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginvacuum.c,v 1.30 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ @@ -533,8 +533,8 @@ ginVacuumEntryPage(GinVacuumState *gvs, Buffer buffer, BlockNumber *roots, uint3 if (GinGetNPosting(itup) != newN) { - Datum value; - OffsetNumber attnum; + Datum value; + OffsetNumber attnum; /* * Some ItemPointers was deleted, so we should remake our @@ -724,9 +724,9 @@ ginvacuumcleanup(PG_FUNCTION_ARGS) PG_RETURN_POINTER(stats); } - /* - * Set up all-zero stats and cleanup pending inserts - * if ginbulkdelete wasn't called + /* + * Set up all-zero stats and cleanup pending inserts if ginbulkdelete + * wasn't called */ if (stats == NULL) { @@ -758,7 +758,7 @@ ginvacuumcleanup(PG_FUNCTION_ARGS) if (needLock) UnlockRelationForExtension(index, ExclusiveLock); - totFreePages = 0; + totFreePages = 0; for (blkno = GIN_ROOT_BLKNO + 1; blkno < npages; blkno++) { diff --git a/src/backend/access/gin/ginxlog.c b/src/backend/access/gin/ginxlog.c index 03cdc1129cf..1f008b727f0 100644 --- a/src/backend/access/gin/ginxlog.c +++ b/src/backend/access/gin/ginxlog.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gin/ginxlog.c,v 1.18 2009/03/24 20:17:11 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gin/ginxlog.c,v 1.19 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -71,7 +71,8 @@ static void ginRedoCreateIndex(XLogRecPtr lsn, XLogRecord *record) { RelFileNode *node = (RelFileNode *) XLogRecGetData(record); - Buffer RootBuffer, MetaBuffer; + Buffer RootBuffer, + MetaBuffer; Page page; MetaBuffer = XLogReadBuffer(*node, GIN_METAPAGE_BLKNO, true); @@ -446,7 +447,7 @@ ginRedoDeletePage(XLogRecPtr lsn, XLogRecord *record) static void ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) { - ginxlogUpdateMeta *data = (ginxlogUpdateMeta*) XLogRecGetData(record); + ginxlogUpdateMeta *data = (ginxlogUpdateMeta *) XLogRecGetData(record); Buffer metabuffer; Page metapage; @@ -455,39 +456,41 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) if (!XLByteLE(lsn, PageGetLSN(metapage))) { - memcpy( GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); + memcpy(GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); PageSetLSN(metapage, lsn); PageSetTLI(metapage, ThisTimeLineID); MarkBufferDirty(metabuffer); } - if ( data->ntuples > 0 ) + if (data->ntuples > 0) { /* * insert into tail page */ if (!(record->xl_info & XLR_BKP_BLOCK_1)) { - Buffer buffer = XLogReadBuffer(data->node, data->metadata.tail, false); - Page page = BufferGetPage(buffer); + Buffer buffer = XLogReadBuffer(data->node, data->metadata.tail, false); + Page page = BufferGetPage(buffer); - if ( !XLByteLE(lsn, PageGetLSN(page))) + if (!XLByteLE(lsn, PageGetLSN(page))) { - OffsetNumber l, off = (PageIsEmpty(page)) ? FirstOffsetNumber : - OffsetNumberNext(PageGetMaxOffsetNumber(page)); - int i, tupsize; - IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogUpdateMeta)); - - for(i=0; i<data->ntuples; i++) + OffsetNumber l, + off = (PageIsEmpty(page)) ? FirstOffsetNumber : + OffsetNumberNext(PageGetMaxOffsetNumber(page)); + int i, + tupsize; + IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogUpdateMeta)); + + for (i = 0; i < data->ntuples; i++) { tupsize = IndexTupleSize(tuples); - l = PageAddItem(page, (Item)tuples, tupsize, off, false, false); + l = PageAddItem(page, (Item) tuples, tupsize, off, false, false); if (l == InvalidOffsetNumber) elog(ERROR, "failed to add item to index page"); - tuples = (IndexTuple)( ((char*)tuples) + tupsize ); + tuples = (IndexTuple) (((char *) tuples) + tupsize); } /* @@ -502,16 +505,16 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) UnlockReleaseBuffer(buffer); } } - else if ( data->prevTail != InvalidBlockNumber ) + else if (data->prevTail != InvalidBlockNumber) { /* * New tail */ - Buffer buffer = XLogReadBuffer(data->node, data->prevTail, false); - Page page = BufferGetPage(buffer); + Buffer buffer = XLogReadBuffer(data->node, data->prevTail, false); + Page page = BufferGetPage(buffer); - if ( !XLByteLE(lsn, PageGetLSN(page))) + if (!XLByteLE(lsn, PageGetLSN(page))) { GinPageGetOpaque(page)->rightlink = data->newRightlink; @@ -528,12 +531,14 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) static void ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) { - ginxlogInsertListPage *data = (ginxlogInsertListPage*) XLogRecGetData(record); - Buffer buffer; - Page page; - OffsetNumber l, off = FirstOffsetNumber; - int i, tupsize; - IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogInsertListPage)); + ginxlogInsertListPage *data = (ginxlogInsertListPage *) XLogRecGetData(record); + Buffer buffer; + Page page; + OffsetNumber l, + off = FirstOffsetNumber; + int i, + tupsize; + IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogInsertListPage)); if (record->xl_info & XLR_BKP_BLOCK_1) return; @@ -543,7 +548,7 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) GinInitBuffer(buffer, GIN_LIST); GinPageGetOpaque(page)->rightlink = data->rightlink; - if ( data->rightlink == InvalidBlockNumber ) + if (data->rightlink == InvalidBlockNumber) { /* tail of sublist */ GinPageSetFullRow(page); @@ -554,16 +559,16 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) GinPageGetOpaque(page)->maxoff = 0; } - for(i=0; i<data->ntuples; i++) + for (i = 0; i < data->ntuples; i++) { tupsize = IndexTupleSize(tuples); - l = PageAddItem(page, (Item)tuples, tupsize, off, false, false); + l = PageAddItem(page, (Item) tuples, tupsize, off, false, false); if (l == InvalidOffsetNumber) elog(ERROR, "failed to add item to index page"); - tuples = (IndexTuple)( ((char*)tuples) + tupsize ); + tuples = (IndexTuple) (((char *) tuples) + tupsize); } PageSetLSN(page, lsn); @@ -576,28 +581,28 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) static void ginRedoDeleteListPages(XLogRecPtr lsn, XLogRecord *record) { - ginxlogDeleteListPages *data = (ginxlogDeleteListPages*) XLogRecGetData(record); + ginxlogDeleteListPages *data = (ginxlogDeleteListPages *) XLogRecGetData(record); Buffer metabuffer; Page metapage; - int i; + int i; metabuffer = XLogReadBuffer(data->node, GIN_METAPAGE_BLKNO, false); metapage = BufferGetPage(metabuffer); if (!XLByteLE(lsn, PageGetLSN(metapage))) { - memcpy( GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); + memcpy(GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); PageSetLSN(metapage, lsn); PageSetTLI(metapage, ThisTimeLineID); MarkBufferDirty(metabuffer); } - for(i=0; i<data->ndeleted; i++) + for (i = 0; i < data->ndeleted; i++) { - Buffer buffer = XLogReadBuffer(data->node,data->toDelete[i],false); - Page page = BufferGetPage(buffer); + Buffer buffer = XLogReadBuffer(data->node, data->toDelete[i], false); + Page page = BufferGetPage(buffer); - if ( !XLByteLE(lsn, PageGetLSN(page))) + if (!XLByteLE(lsn, PageGetLSN(page))) { GinPageGetOpaque(page)->flags = GIN_DELETED; @@ -645,7 +650,7 @@ gin_redo(XLogRecPtr lsn, XLogRecord *record) case XLOG_GIN_INSERT_LISTPAGE: ginRedoInsertListPage(lsn, record); break; - case XLOG_GIN_DELETE_LISTPAGE: + case XLOG_GIN_DELETE_LISTPAGE: ginRedoDeleteListPages(lsn, record); break; default: @@ -705,15 +710,15 @@ gin_desc(StringInfo buf, uint8 xl_info, char *rec) break; case XLOG_GIN_UPDATE_META_PAGE: appendStringInfo(buf, "Update metapage, "); - desc_node(buf, ((ginxlogUpdateMeta *) rec)->node, ((ginxlogUpdateMeta *) rec)->metadata.tail); + desc_node(buf, ((ginxlogUpdateMeta *) rec)->node, ((ginxlogUpdateMeta *) rec)->metadata.tail); break; case XLOG_GIN_INSERT_LISTPAGE: appendStringInfo(buf, "Insert new list page, "); - desc_node(buf, ((ginxlogInsertListPage *) rec)->node, ((ginxlogInsertListPage *) rec)->blkno); + desc_node(buf, ((ginxlogInsertListPage *) rec)->node, ((ginxlogInsertListPage *) rec)->blkno); break; case XLOG_GIN_DELETE_LISTPAGE: appendStringInfo(buf, "Delete list pages (%d), ", ((ginxlogDeleteListPages *) rec)->ndeleted); - desc_node(buf, ((ginxlogDeleteListPages *) rec)->node, ((ginxlogDeleteListPages *) rec)->metadata.head); + desc_node(buf, ((ginxlogDeleteListPages *) rec)->node, ((ginxlogDeleteListPages *) rec)->metadata.head); break; default: elog(PANIC, "gin_desc: unknown op code %u", info); diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c index 9701d30e38e..e7ca8f64767 100644 --- a/src/backend/access/gist/gistget.c +++ b/src/backend/access/gist/gistget.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistget.c,v 1.80 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistget.c,v 1.81 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -79,7 +79,7 @@ gistgettuple(PG_FUNCTION_ARGS) so = (GISTScanOpaque) scan->opaque; - if (dir != ForwardScanDirection) + if (dir != ForwardScanDirection) elog(ERROR, "GiST doesn't support other scan directions than forward"); /* @@ -101,8 +101,8 @@ Datum gistgetbitmap(PG_FUNCTION_ARGS) { IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); - TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); - int64 ntids; + TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); + int64 ntids; ntids = gistnext(scan, tbm); @@ -136,10 +136,10 @@ gistnext(IndexScanDesc scan, TIDBitmap *tbm) so = (GISTScanOpaque) scan->opaque; - if ( so->qual_ok == false ) + if (so->qual_ok == false) return 0; - if ( so->curbuf == InvalidBuffer ) + if (so->curbuf == InvalidBuffer) { if (ItemPointerIsValid(&so->curpos) == false) { @@ -155,7 +155,7 @@ gistnext(IndexScanDesc scan, TIDBitmap *tbm) stk->block = GIST_ROOT_BLKNO; pgstat_count_index_scan(scan->indexRelation); - } + } else { /* scan is finished */ @@ -164,25 +164,25 @@ gistnext(IndexScanDesc scan, TIDBitmap *tbm) } /* - * check stored pointers from last visit + * check stored pointers from last visit */ - if ( so->nPageData > 0 ) + if (so->nPageData > 0) { /* * gistgetmulti never should go here */ - Assert( tbm == NULL ); + Assert(tbm == NULL); - if ( so->curPageData < so->nPageData ) + if (so->curPageData < so->nPageData) { - scan->xs_ctup.t_self = so->pageData[ so->curPageData ].heapPtr; - scan->xs_recheck = so->pageData[ so->curPageData ].recheck; + scan->xs_ctup.t_self = so->pageData[so->curPageData].heapPtr; + scan->xs_recheck = so->pageData[so->curPageData].recheck; ItemPointerSet(&so->curpos, - BufferGetBlockNumber(so->curbuf), - so->pageData[ so->curPageData ].pageOffset); + BufferGetBlockNumber(so->curbuf), + so->pageData[so->curPageData].pageOffset); - so->curPageData ++; + so->curPageData++; return 1; } @@ -227,7 +227,7 @@ gistnext(IndexScanDesc scan, TIDBitmap *tbm) if (!XLogRecPtrIsInvalid(so->stack->parentlsn) && XLByteLT(so->stack->parentlsn, opaque->nsn) && opaque->rightlink != InvalidBlockNumber /* sanity check */ && - (so->stack->next == NULL || so->stack->next->block != opaque->rightlink) /* check if already + (so->stack->next == NULL || so->stack->next->block != opaque->rightlink) /* check if already added */ ) { /* detect page split, follow right link to add pages */ @@ -272,12 +272,12 @@ gistnext(IndexScanDesc scan, TIDBitmap *tbm) if (!OffsetNumberIsValid(n)) { /* - * If we was called from gistgettuple and current buffer contains - * something matched then make a recursive call - it will return - * ItemPointer from so->pageData. But we save buffer pinned to - * support tuple's killing + * If we was called from gistgettuple and current buffer + * contains something matched then make a recursive call - it + * will return ItemPointer from so->pageData. But we save + * buffer pinned to support tuple's killing */ - if ( !tbm && so->nPageData > 0 ) + if (!tbm && so->nPageData > 0) { LockBuffer(so->curbuf, GIST_UNLOCK); return gistnext(scan, NULL); @@ -324,12 +324,12 @@ gistnext(IndexScanDesc scan, TIDBitmap *tbm) ntids++; if (tbm != NULL) tbm_add_tuples(tbm, &it->t_tid, 1, scan->xs_recheck); - else + else { - so->pageData[ so->nPageData ].heapPtr = it->t_tid; - so->pageData[ so->nPageData ].pageOffset = n; - so->pageData[ so->nPageData ].recheck = scan->xs_recheck; - so->nPageData ++; + so->pageData[so->nPageData].heapPtr = it->t_tid; + so->pageData[so->nPageData].pageOffset = n; + so->pageData[so->nPageData].recheck = scan->xs_recheck; + so->nPageData++; } } } @@ -437,8 +437,8 @@ gistindex_keytest(IndexTuple tuple, /* * Call the Consistent function to evaluate the test. The * arguments are the index datum (as a GISTENTRY*), the comparison - * datum, the comparison operator's strategy number and - * subtype from pg_amop, and the recheck flag. + * datum, the comparison operator's strategy number and subtype + * from pg_amop, and the recheck flag. * * (Presently there's no need to pass the subtype since it'll * always be zero, but might as well pass it for possible future diff --git a/src/backend/access/gist/gistproc.c b/src/backend/access/gist/gistproc.c index 396b93ab976..ef44380e77f 100644 --- a/src/backend/access/gist/gistproc.c +++ b/src/backend/access/gist/gistproc.c @@ -10,7 +10,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistproc.c,v 1.16 2009/04/06 14:27:27 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistproc.c,v 1.17 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -86,6 +86,7 @@ gist_box_consistent(PG_FUNCTION_ARGS) GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); BOX *query = PG_GETARG_BOX_P(1); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); + /* Oid subtype = PG_GETARG_OID(3); */ bool *recheck = (bool *) PG_GETARG_POINTER(4); @@ -279,11 +280,11 @@ chooseLR(GIST_SPLITVEC *v, static void fallbackSplit(GistEntryVector *entryvec, GIST_SPLITVEC *v) { - OffsetNumber i, - maxoff; - BOX *unionL = NULL, - *unionR = NULL; - int nbytes; + OffsetNumber i, + maxoff; + BOX *unionL = NULL, + *unionR = NULL; + int nbytes; maxoff = entryvec->n - 1; @@ -294,7 +295,7 @@ fallbackSplit(GistEntryVector *entryvec, GIST_SPLITVEC *v) for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { - BOX * cur = DatumGetBoxP(entryvec->vector[i].key); + BOX *cur = DatumGetBoxP(entryvec->vector[i].key); if (i <= (maxoff - FirstOffsetNumber + 1) / 2) { @@ -767,6 +768,7 @@ gist_poly_consistent(PG_FUNCTION_ARGS) GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); POLYGON *query = PG_GETARG_POLYGON_P(1); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); + /* Oid subtype = PG_GETARG_OID(3); */ bool *recheck = (bool *) PG_GETARG_POINTER(4); bool result; @@ -843,6 +845,7 @@ gist_circle_consistent(PG_FUNCTION_ARGS) GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); CIRCLE *query = PG_GETARG_CIRCLE_P(1); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); + /* Oid subtype = PG_GETARG_OID(3); */ bool *recheck = (bool *) PG_GETARG_POINTER(4); BOX bbox; diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index 68924332b7f..aed3e95b4e3 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistscan.c,v 1.75 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistscan.c,v 1.76 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -94,11 +94,13 @@ gistrescan(PG_FUNCTION_ARGS) * Next, if any of keys is a NULL and that key is not marked with * SK_SEARCHNULL then nothing can be found. */ - for (i = 0; i < scan->numberOfKeys; i++) { + for (i = 0; i < scan->numberOfKeys; i++) + { scan->keyData[i].sk_func = so->giststate->consistentFn[scan->keyData[i].sk_attno - 1]; - if ( scan->keyData[i].sk_flags & SK_ISNULL ) { - if ( (scan->keyData[i].sk_flags & SK_SEARCHNULL) == 0 ) + if (scan->keyData[i].sk_flags & SK_ISNULL) + { + if ((scan->keyData[i].sk_flags & SK_SEARCHNULL) == 0) so->qual_ok = false; } } diff --git a/src/backend/access/gist/gistsplit.c b/src/backend/access/gist/gistsplit.c index 0d11e7c9ab1..c5e5f6f13ac 100644 --- a/src/backend/access/gist/gistsplit.c +++ b/src/backend/access/gist/gistsplit.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistsplit.c,v 1.9 2009/06/10 20:02:15 petere Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistsplit.c,v 1.10 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -281,7 +281,7 @@ supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, GIST_SPLITVEC } /* - * Trivial picksplit implementaion. Function called only + * Trivial picksplit implementaion. Function called only * if user-defined picksplit puts all keys to the one page. * That is a bug of user-defined picksplit but we'd like * to "fix" that. @@ -289,10 +289,10 @@ supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, GIST_SPLITVEC static void genericPickSplit(GISTSTATE *giststate, GistEntryVector *entryvec, GIST_SPLITVEC *v, int attno) { - OffsetNumber i, - maxoff; - int nbytes; - GistEntryVector *evec; + OffsetNumber i, + maxoff; + int nbytes; + GistEntryVector *evec; maxoff = entryvec->n - 1; @@ -320,21 +320,21 @@ genericPickSplit(GISTSTATE *giststate, GistEntryVector *entryvec, GIST_SPLITVEC * Form unions of each page */ - evec = palloc( sizeof(GISTENTRY) * entryvec->n + GEVHDRSZ ); + evec = palloc(sizeof(GISTENTRY) * entryvec->n + GEVHDRSZ); evec->n = v->spl_nleft; - memcpy(evec->vector, entryvec->vector + FirstOffsetNumber, - sizeof(GISTENTRY) * evec->n); - v->spl_ldatum = FunctionCall2(&giststate->unionFn[attno], - PointerGetDatum(evec), - PointerGetDatum(&nbytes)); + memcpy(evec->vector, entryvec->vector + FirstOffsetNumber, + sizeof(GISTENTRY) * evec->n); + v->spl_ldatum = FunctionCall2(&giststate->unionFn[attno], + PointerGetDatum(evec), + PointerGetDatum(&nbytes)); evec->n = v->spl_nright; - memcpy(evec->vector, entryvec->vector + FirstOffsetNumber + v->spl_nleft, - sizeof(GISTENTRY) * evec->n); - v->spl_rdatum = FunctionCall2(&giststate->unionFn[attno], - PointerGetDatum(evec), - PointerGetDatum(&nbytes)); + memcpy(evec->vector, entryvec->vector + FirstOffsetNumber + v->spl_nleft, + sizeof(GISTENTRY) * evec->n); + v->spl_rdatum = FunctionCall2(&giststate->unionFn[attno], + PointerGetDatum(evec), + PointerGetDatum(&nbytes)); } /* @@ -365,17 +365,17 @@ gistUserPicksplit(Relation r, GistEntryVector *entryvec, int attno, GistSplitVec PointerGetDatum(entryvec), PointerGetDatum(sv)); - if ( sv->spl_nleft == 0 || sv->spl_nright == 0 ) + if (sv->spl_nleft == 0 || sv->spl_nright == 0) { ereport(DEBUG1, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("picksplit method for %d column of index \"%s\" failed", - attno+1, RelationGetRelationName(r)), + errmsg("picksplit method for %d column of index \"%s\" failed", + attno + 1, RelationGetRelationName(r)), errhint("The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command."))); /* - * Reinit GIST_SPLITVEC. Although that fields are not used - * by genericPickSplit(), let us set up it for further processing + * Reinit GIST_SPLITVEC. Although that fields are not used by + * genericPickSplit(), let us set up it for further processing */ sv->spl_ldatum_exists = (v->spl_lisnull[attno]) ? false : true; sv->spl_rdatum_exists = (v->spl_risnull[attno]) ? false : true; diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index fa1e3088ad4..78eb3787252 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.33 2009/01/05 17:14:28 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.34 2009/06/11 14:48:53 momjian Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -43,7 +43,8 @@ gistfillbuffer(Page page, IndexTuple *itup, int len, OffsetNumber off) for (i = 0; i < len; i++) { - Size sz = IndexTupleSize(itup[i]); + Size sz = IndexTupleSize(itup[i]); + l = PageAddItem(page, (Item) itup[i], sz, off, false, false); if (l == InvalidOffsetNumber) elog(ERROR, "failed to add item to GiST index page, item %d out of %d, size %d bytes", diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index 833e6c574eb..975f9d8c56f 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.44 2009/06/06 22:13:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.45 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -510,7 +510,7 @@ gistvacuumcleanup(PG_FUNCTION_ARGS) Relation rel = info->index; BlockNumber npages, blkno; - BlockNumber totFreePages; + BlockNumber totFreePages; BlockNumber lastBlock = GIST_ROOT_BLKNO, lastFilledBlock = GIST_ROOT_BLKNO; bool needLock; diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c index 4c1cd5ceda9..49b6594f1eb 100644 --- a/src/backend/access/hash/hash.c +++ b/src/backend/access/hash/hash.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hash.c,v 1.111 2009/06/06 22:13:50 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hash.c,v 1.112 2009/06/11 14:48:53 momjian Exp $ * * NOTES * This file contains only the public interface routines. @@ -52,7 +52,7 @@ hashbuild(PG_FUNCTION_ARGS) Relation index = (Relation) PG_GETARG_POINTER(1); IndexInfo *indexInfo = (IndexInfo *) PG_GETARG_POINTER(2); IndexBuildResult *result; - BlockNumber relpages; + BlockNumber relpages; double reltuples; uint32 num_buckets; HashBuildState buildstate; @@ -76,12 +76,12 @@ hashbuild(PG_FUNCTION_ARGS) * (assuming their hash codes are pretty random) there will be no locality * of access to the index, and if the index is bigger than available RAM * then we'll thrash horribly. To prevent that scenario, we can sort the - * tuples by (expected) bucket number. However, such a sort is useless + * tuples by (expected) bucket number. However, such a sort is useless * overhead when the index does fit in RAM. We choose to sort if the * initial index size exceeds NBuffers. * - * NOTE: this test will need adjustment if a bucket is ever different - * from one page. + * NOTE: this test will need adjustment if a bucket is ever different from + * one page. */ if (num_buckets >= (uint32) NBuffers) buildstate.spool = _h_spoolinit(index, num_buckets); @@ -285,7 +285,7 @@ Datum hashgetbitmap(PG_FUNCTION_ARGS) { IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); - TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); + TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); HashScanOpaque so = (HashScanOpaque) scan->opaque; bool res; int64 ntids = 0; @@ -294,7 +294,7 @@ hashgetbitmap(PG_FUNCTION_ARGS) while (res) { - bool add_tuple; + bool add_tuple; /* * Skip killed tuples if asked to. @@ -312,7 +312,7 @@ hashgetbitmap(PG_FUNCTION_ARGS) add_tuple = true; /* Save tuple ID, and continue scanning */ - if (add_tuple) + if (add_tuple) { /* Note we mark the tuple ID as requiring recheck */ tbm_add_tuples(tbm, &scan->xs_ctup.t_self, 1, true); @@ -481,7 +481,7 @@ hashbulkdelete(PG_FUNCTION_ARGS) * each bucket. */ metabuf = _hash_getbuf(rel, HASH_METAPAGE, HASH_READ, LH_META_PAGE); - metap = HashPageGetMeta(BufferGetPage(metabuf)); + metap = HashPageGetMeta(BufferGetPage(metabuf)); orig_maxbucket = metap->hashm_maxbucket; orig_ntuples = metap->hashm_ntuples; memcpy(&local_metapage, metap, sizeof(local_metapage)); diff --git a/src/backend/access/hash/hashfunc.c b/src/backend/access/hash/hashfunc.c index 4561a09481d..3242e2713ea 100644 --- a/src/backend/access/hash/hashfunc.c +++ b/src/backend/access/hash/hashfunc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hashfunc.c,v 1.58 2009/02/09 21:18:28 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hashfunc.c,v 1.59 2009/06/11 14:48:53 momjian Exp $ * * NOTES * These functions are stored in pg_amproc. For each operator class @@ -225,35 +225,35 @@ hashvarlena(PG_FUNCTION_ARGS) * are sometimes the same for one pair and different for another pair. * This was tested for: * * pairs that differed by one bit, by two bits, in any combination - * of top bits of (a,b,c), or in any combination of bottom bits of - * (a,b,c). + * of top bits of (a,b,c), or in any combination of bottom bits of + * (a,b,c). * * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed - * the output delta to a Gray code (a^(a>>1)) so a string of 1's (as - * is commonly produced by subtraction) look like a single 1-bit - * difference. + * the output delta to a Gray code (a^(a>>1)) so a string of 1's (as + * is commonly produced by subtraction) look like a single 1-bit + * difference. * * the base values were pseudorandom, all zero but one bit set, or - * all zero plus a counter that starts at zero. - * + * all zero plus a counter that starts at zero. + * * This does not achieve avalanche. There are input bits of (a,b,c) * that fail to affect some output bits of (a,b,c), especially of a. The * most thoroughly mixed value is c, but it doesn't really even achieve - * avalanche in c. - * + * avalanche in c. + * * This allows some parallelism. Read-after-writes are good at doubling * the number of bits affected, so the goal of mixing pulls in the opposite - * direction from the goal of parallelism. I did what I could. Rotates + * direction from the goal of parallelism. I did what I could. Rotates * seem to cost as much as shifts on every machine I could lay my hands on, * and rotates are much kinder to the top and bottom bits, so I used rotates. *---------- */ #define mix(a,b,c) \ { \ - a -= c; a ^= rot(c, 4); c += b; \ - b -= a; b ^= rot(a, 6); a += c; \ - c -= b; c ^= rot(b, 8); b += a; \ - a -= c; a ^= rot(c,16); c += b; \ - b -= a; b ^= rot(a,19); a += c; \ - c -= b; c ^= rot(b, 4); b += a; \ + a -= c; a ^= rot(c, 4); c += b; \ + b -= a; b ^= rot(a, 6); a += c; \ + c -= b; c ^= rot(b, 8); b += a; \ + a -= c; a ^= rot(c,16); c += b; \ + b -= a; b ^= rot(a,19); a += c; \ + c -= b; c ^= rot(b, 4); b += a; \ } /*---------- @@ -262,20 +262,20 @@ hashvarlena(PG_FUNCTION_ARGS) * Pairs of (a,b,c) values differing in only a few bits will usually * produce values of c that look totally different. This was tested for * * pairs that differed by one bit, by two bits, in any combination - * of top bits of (a,b,c), or in any combination of bottom bits of - * (a,b,c). + * of top bits of (a,b,c), or in any combination of bottom bits of + * (a,b,c). * * "differ" is defined as +, -, ^, or ~^. For + and -, I transformed - * the output delta to a Gray code (a^(a>>1)) so a string of 1's (as - * is commonly produced by subtraction) look like a single 1-bit - * difference. + * the output delta to a Gray code (a^(a>>1)) so a string of 1's (as + * is commonly produced by subtraction) look like a single 1-bit + * difference. * * the base values were pseudorandom, all zero but one bit set, or - * all zero plus a counter that starts at zero. - * + * all zero plus a counter that starts at zero. + * * The use of separate functions for mix() and final() allow for a * substantial performance increase since final() does not need to * do well in reverse, but is does need to affect all output bits. * mix(), on the other hand, does not need to affect all output - * bits (affecting 32 bits is enough). The original hash function had + * bits (affecting 32 bits is enough). The original hash function had * a single mixing operation that had to satisfy both sets of requirements * and was slower as a result. *---------- @@ -374,9 +374,9 @@ hash_any(register const unsigned char *k, register int keylen) /* fall through */ case 1: a += ((uint32) k[0] << 24); - /* case 0: nothing left to add */ + /* case 0: nothing left to add */ } -#else /* !WORDS_BIGENDIAN */ +#else /* !WORDS_BIGENDIAN */ switch (len) { case 11: @@ -413,9 +413,9 @@ hash_any(register const unsigned char *k, register int keylen) /* fall through */ case 1: a += k[0]; - /* case 0: nothing left to add */ + /* case 0: nothing left to add */ } -#endif /* WORDS_BIGENDIAN */ +#endif /* WORDS_BIGENDIAN */ } else { @@ -428,11 +428,11 @@ hash_any(register const unsigned char *k, register int keylen) a += (k[3] + ((uint32) k[2] << 8) + ((uint32) k[1] << 16) + ((uint32) k[0] << 24)); b += (k[7] + ((uint32) k[6] << 8) + ((uint32) k[5] << 16) + ((uint32) k[4] << 24)); c += (k[11] + ((uint32) k[10] << 8) + ((uint32) k[9] << 16) + ((uint32) k[8] << 24)); -#else /* !WORDS_BIGENDIAN */ +#else /* !WORDS_BIGENDIAN */ a += (k[0] + ((uint32) k[1] << 8) + ((uint32) k[2] << 16) + ((uint32) k[3] << 24)); b += (k[4] + ((uint32) k[5] << 8) + ((uint32) k[6] << 16) + ((uint32) k[7] << 24)); c += (k[8] + ((uint32) k[9] << 8) + ((uint32) k[10] << 16) + ((uint32) k[11] << 24)); -#endif /* WORDS_BIGENDIAN */ +#endif /* WORDS_BIGENDIAN */ mix(a, b, c); k += 12; len -= 12; @@ -465,9 +465,9 @@ hash_any(register const unsigned char *k, register int keylen) a += ((uint32) k[1] << 16); case 1: a += ((uint32) k[0] << 24); - /* case 0: nothing left to add */ + /* case 0: nothing left to add */ } -#else /* !WORDS_BIGENDIAN */ +#else /* !WORDS_BIGENDIAN */ switch (len) /* all the case statements fall through */ { case 11: @@ -493,9 +493,9 @@ hash_any(register const unsigned char *k, register int keylen) a += ((uint32) k[1] << 8); case 1: a += k[0]; - /* case 0: nothing left to add */ + /* case 0: nothing left to add */ } -#endif /* WORDS_BIGENDIAN */ +#endif /* WORDS_BIGENDIAN */ } final(a, b, c); diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c index f47d2132981..bd1f930e063 100644 --- a/src/backend/access/hash/hashpage.c +++ b/src/backend/access/hash/hashpage.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hashpage.c,v 1.79 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hashpage.c,v 1.80 2009/06/11 14:48:53 momjian Exp $ * * NOTES * Postgres hash pages look like ordinary relation pages. The opaque @@ -361,8 +361,8 @@ _hash_metapinit(Relation rel, double num_tuples) /* * Choose the number of initial bucket pages to match the fill factor * given the estimated number of tuples. We round up the result to the - * next power of 2, however, and always force at least 2 bucket pages. - * The upper limit is determined by considerations explained in + * next power of 2, however, and always force at least 2 bucket pages. The + * upper limit is determined by considerations explained in * _hash_expandtable(). */ dnumbuckets = num_tuples / ffactor; @@ -421,8 +421,8 @@ _hash_metapinit(Relation rel, double num_tuples) /* * We initialize the index with N buckets, 0 .. N-1, occupying physical - * blocks 1 to N. The first freespace bitmap page is in block N+1. - * Since N is a power of 2, we can set the masks this way: + * blocks 1 to N. The first freespace bitmap page is in block N+1. Since + * N is a power of 2, we can set the masks this way: */ metap->hashm_maxbucket = metap->hashm_lowmask = num_buckets - 1; metap->hashm_highmask = (num_buckets << 1) - 1; @@ -438,8 +438,8 @@ _hash_metapinit(Relation rel, double num_tuples) /* * Release buffer lock on the metapage while we initialize buckets. * Otherwise, we'll be in interrupt holdoff and the CHECK_FOR_INTERRUPTS - * won't accomplish anything. It's a bad idea to hold buffer locks - * for long intervals in any case, since that can block the bgwriter. + * won't accomplish anything. It's a bad idea to hold buffer locks for + * long intervals in any case, since that can block the bgwriter. */ _hash_chgbufaccess(rel, metabuf, HASH_WRITE, HASH_NOLOCK); @@ -552,8 +552,8 @@ _hash_expandtable(Relation rel, Buffer metabuf) * _hash_alloc_buckets() would fail, but if we supported buckets smaller * than a disk block then this would be an independent constraint. * - * If you change this, see also the maximum initial number of buckets - * in _hash_metapinit(). + * If you change this, see also the maximum initial number of buckets in + * _hash_metapinit(). */ if (metap->hashm_maxbucket >= (uint32) 0x7FFFFFFE) goto fail; @@ -839,8 +839,8 @@ _hash_splitbucket(Relation rel, } /* - * Fetch the item's hash key (conveniently stored in the item) - * and determine which bucket it now belongs in. + * Fetch the item's hash key (conveniently stored in the item) and + * determine which bucket it now belongs in. */ itup = (IndexTuple) PageGetItem(opage, PageGetItemId(opage, ooffnum)); bucket = _hash_hashkey2bucket(_hash_get_indextuple_hashkey(itup), diff --git a/src/backend/access/hash/hashscan.c b/src/backend/access/hash/hashscan.c index 8cd371e9021..1b0ce2c739c 100644 --- a/src/backend/access/hash/hashscan.c +++ b/src/backend/access/hash/hashscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hashscan.c,v 1.46 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hashscan.c,v 1.47 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -59,8 +59,8 @@ ReleaseResources_hash(void) /* * Release all HashScanList items belonging to the current ResourceOwner. * Note that we do not release the underlying IndexScanDesc; that's in - * executor memory and will go away on its own (in fact quite possibly - * has gone away already, so we mustn't try to touch it here). + * executor memory and will go away on its own (in fact quite possibly has + * gone away already, so we mustn't try to touch it here). * * Note: this should be a no-op during normal query shutdown. However, in * an abort situation ExecutorEnd is not called and so there may be open diff --git a/src/backend/access/hash/hashsearch.c b/src/backend/access/hash/hashsearch.c index 5a9763fe9a1..fec2f5d78a1 100644 --- a/src/backend/access/hash/hashsearch.c +++ b/src/backend/access/hash/hashsearch.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hashsearch.c,v 1.56 2009/05/05 19:36:32 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hashsearch.c,v 1.57 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -312,15 +312,15 @@ _hash_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir) for (;;) { /* - * check if we're still in the range of items with - * the target hash key + * check if we're still in the range of items with the + * target hash key */ if (offnum <= maxoff) { Assert(offnum >= FirstOffsetNumber); itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); if (so->hashso_sk_hash == _hash_get_indextuple_hashkey(itup)) - break; /* yes, so exit for-loop */ + break; /* yes, so exit for-loop */ } /* @@ -353,15 +353,15 @@ _hash_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir) for (;;) { /* - * check if we're still in the range of items with - * the target hash key + * check if we're still in the range of items with the + * target hash key */ if (offnum >= FirstOffsetNumber) { Assert(offnum <= maxoff); itup = (IndexTuple) PageGetItem(page, PageGetItemId(page, offnum)); if (so->hashso_sk_hash == _hash_get_indextuple_hashkey(itup)) - break; /* yes, so exit for-loop */ + break; /* yes, so exit for-loop */ } /* diff --git a/src/backend/access/hash/hashsort.c b/src/backend/access/hash/hashsort.c index 6ba8362a9e4..00e7dc5f5d5 100644 --- a/src/backend/access/hash/hashsort.c +++ b/src/backend/access/hash/hashsort.c @@ -8,7 +8,7 @@ * thrashing. We use tuplesort.c to sort the given index tuples into order. * * Note: if the number of rows in the table has been underestimated, - * bucket splits may occur during the index build. In that case we'd + * bucket splits may occur during the index build. In that case we'd * be inserting into two or more buckets for each possible masked-off * hash code value. That's no big problem though, since we'll still have * plenty of locality of access. @@ -18,7 +18,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hashsort.c,v 1.2 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hashsort.c,v 1.3 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -52,13 +52,13 @@ _h_spoolinit(Relation index, uint32 num_buckets) hspool->index = index; /* - * Determine the bitmask for hash code values. Since there are currently + * Determine the bitmask for hash code values. Since there are currently * num_buckets buckets in the index, the appropriate mask can be computed * as follows. * - * Note: at present, the passed-in num_buckets is always a power of 2, - * so we could just compute num_buckets - 1. We prefer not to assume - * that here, though. + * Note: at present, the passed-in num_buckets is always a power of 2, so + * we could just compute num_buckets - 1. We prefer not to assume that + * here, though. */ hash_mask = (((uint32) 1) << _hash_log2(num_buckets)) - 1; diff --git a/src/backend/access/hash/hashutil.c b/src/backend/access/hash/hashutil.c index 42e79376f8f..ba1d6fbbf56 100644 --- a/src/backend/access/hash/hashutil.c +++ b/src/backend/access/hash/hashutil.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/hash/hashutil.c,v 1.59 2009/01/05 17:14:28 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/access/hash/hashutil.c,v 1.60 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -29,10 +29,10 @@ bool _hash_checkqual(IndexScanDesc scan, IndexTuple itup) { /* - * Currently, we can't check any of the scan conditions since we do - * not have the original index entry value to supply to the sk_func. - * Always return true; we expect that hashgettuple already set the - * recheck flag to make the main indexscan code do it. + * Currently, we can't check any of the scan conditions since we do not + * have the original index entry value to supply to the sk_func. Always + * return true; we expect that hashgettuple already set the recheck flag + * to make the main indexscan code do it. */ #ifdef NOT_USED TupleDesc tupdesc = RelationGetDescr(scan->indexRelation); @@ -240,8 +240,8 @@ _hash_get_indextuple_hashkey(IndexTuple itup) char *attp; /* - * We assume the hash key is the first attribute and can't be null, - * so this can be done crudely but very very cheaply ... + * We assume the hash key is the first attribute and can't be null, so + * this can be done crudely but very very cheaply ... */ attp = (char *) itup + IndexInfoFindDataOffset(itup->t_info); return *((uint32 *) attp); @@ -253,10 +253,10 @@ _hash_get_indextuple_hashkey(IndexTuple itup) IndexTuple _hash_form_tuple(Relation index, Datum *values, bool *isnull) { - IndexTuple itup; - uint32 hashkey; - Datum hashkeydatum; - TupleDesc hashdesc; + IndexTuple itup; + uint32 hashkey; + Datum hashkeydatum; + TupleDesc hashdesc; if (isnull[0]) hashkeydatum = (Datum) 0; @@ -280,14 +280,14 @@ _hash_form_tuple(Relation index, Datum *values, bool *isnull) * * Returns the offset of the first index entry having hashkey >= hash_value, * or the page's max offset plus one if hash_value is greater than all - * existing hash keys in the page. This is the appropriate place to start + * existing hash keys in the page. This is the appropriate place to start * a search, or to insert a new item. */ OffsetNumber _hash_binsearch(Page page, uint32 hash_value) { - OffsetNumber upper; - OffsetNumber lower; + OffsetNumber upper; + OffsetNumber lower; /* Loop invariant: lower <= desired place <= upper */ upper = PageGetMaxOffsetNumber(page) + 1; @@ -295,9 +295,9 @@ _hash_binsearch(Page page, uint32 hash_value) while (upper > lower) { - OffsetNumber off; - IndexTuple itup; - uint32 hashkey; + OffsetNumber off; + IndexTuple itup; + uint32 hashkey; off = (upper + lower) / 2; Assert(OffsetNumberIsValid(off)); @@ -324,8 +324,8 @@ _hash_binsearch(Page page, uint32 hash_value) OffsetNumber _hash_binsearch_last(Page page, uint32 hash_value) { - OffsetNumber upper; - OffsetNumber lower; + OffsetNumber upper; + OffsetNumber lower; /* Loop invariant: lower <= desired place <= upper */ upper = PageGetMaxOffsetNumber(page); @@ -333,9 +333,9 @@ _hash_binsearch_last(Page page, uint32 hash_value) while (upper > lower) { - IndexTuple itup; - OffsetNumber off; - uint32 hashkey; + IndexTuple itup; + OffsetNumber off; + uint32 hashkey; off = (upper + lower + 1) / 2; Assert(OffsetNumberIsValid(off)); diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 1f6edf6cafa..2e45c041a6b 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.276 2009/06/10 18:54:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/heapam.c,v 1.277 2009/06/11 14:48:53 momjian Exp $ * * * INTERFACE ROUTINES @@ -69,7 +69,7 @@ /* GUC variable */ -bool synchronize_seqscans = true; +bool synchronize_seqscans = true; static HeapScanDesc heap_beginscan_internal(Relation relation, @@ -116,9 +116,9 @@ initscan(HeapScanDesc scan, ScanKey key, bool is_rescan) * strategy and enable synchronized scanning (see syncscan.c). Although * the thresholds for these features could be different, we make them the * same so that there are only two behaviors to tune rather than four. - * (However, some callers need to be able to disable one or both of - * these behaviors, independently of the size of the table; also there - * is a GUC variable that can disable synchronized scanning.) + * (However, some callers need to be able to disable one or both of these + * behaviors, independently of the size of the table; also there is a GUC + * variable that can disable synchronized scanning.) * * During a rescan, don't make a new strategy object if we don't have to. */ @@ -146,8 +146,8 @@ initscan(HeapScanDesc scan, ScanKey key, bool is_rescan) if (is_rescan) { /* - * If rescan, keep the previous startblock setting so that rewinding - * a cursor doesn't generate surprising results. Reset the syncscan + * If rescan, keep the previous startblock setting so that rewinding a + * cursor doesn't generate surprising results. Reset the syncscan * setting, though. */ scan->rs_syncscan = (allow_sync && synchronize_seqscans); @@ -1793,7 +1793,7 @@ void FreeBulkInsertState(BulkInsertState bistate) { if (bistate->current_buf != InvalidBuffer) - ReleaseBuffer(bistate->current_buf); + ReleaseBuffer(bistate->current_buf); FreeAccessStrategy(bistate->strategy); pfree(bistate); } @@ -1977,7 +1977,7 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid, /* Clear the bit in the visibility map if necessary */ if (all_visible_cleared) - visibilitymap_clear(relation, + visibilitymap_clear(relation, ItemPointerGetBlockNumber(&(heaptup->t_self))); /* @@ -3437,8 +3437,8 @@ l3: LockBuffer(*buffer, BUFFER_LOCK_UNLOCK); /* - * Don't update the visibility map here. Locking a tuple doesn't - * change visibility info. + * Don't update the visibility map here. Locking a tuple doesn't change + * visibility info. */ /* @@ -4115,11 +4115,11 @@ heap_xlog_clean(XLogRecPtr lsn, XLogRecord *record, bool clean_move) nowunused, nunused, clean_move); - freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */ + freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */ /* - * Note: we don't worry about updating the page's prunability hints. - * At worst this will cause an extra prune cycle to occur soon. + * Note: we don't worry about updating the page's prunability hints. At + * worst this will cause an extra prune cycle to occur soon. */ PageSetLSN(page, lsn); @@ -4217,17 +4217,18 @@ heap_xlog_delete(XLogRecPtr lsn, XLogRecord *record) OffsetNumber offnum; ItemId lp = NULL; HeapTupleHeader htup; - BlockNumber blkno; + BlockNumber blkno; blkno = ItemPointerGetBlockNumber(&(xlrec->target.tid)); /* - * The visibility map always needs to be updated, even if the heap page - * is already up-to-date. + * The visibility map always needs to be updated, even if the heap page is + * already up-to-date. */ if (xlrec->all_visible_cleared) { - Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + visibilitymap_clear(reln, blkno); FreeFakeRelcacheEntry(reln); } @@ -4294,17 +4295,18 @@ heap_xlog_insert(XLogRecPtr lsn, XLogRecord *record) xl_heap_header xlhdr; uint32 newlen; Size freespace; - BlockNumber blkno; + BlockNumber blkno; blkno = ItemPointerGetBlockNumber(&(xlrec->target.tid)); /* - * The visibility map always needs to be updated, even if the heap page - * is already up-to-date. + * The visibility map always needs to be updated, even if the heap page is + * already up-to-date. */ if (xlrec->all_visible_cleared) { - Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + visibilitymap_clear(reln, blkno); FreeFakeRelcacheEntry(reln); } @@ -4361,7 +4363,7 @@ heap_xlog_insert(XLogRecPtr lsn, XLogRecord *record) if (offnum == InvalidOffsetNumber) elog(PANIC, "heap_insert_redo: failed to add tuple"); - freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */ + freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */ PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); @@ -4374,8 +4376,8 @@ heap_xlog_insert(XLogRecPtr lsn, XLogRecord *record) /* * If the page is running low on free space, update the FSM as well. - * Arbitrarily, our definition of "low" is less than 20%. We can't do - * much better than that without knowing the fill-factor for the table. + * Arbitrarily, our definition of "low" is less than 20%. We can't do much + * better than that without knowing the fill-factor for the table. * * XXX: We don't get here if the page was restored from full page image. * We don't bother to update the FSM in that case, it doesn't need to be @@ -4410,12 +4412,13 @@ heap_xlog_update(XLogRecPtr lsn, XLogRecord *record, bool move, bool hot_update) Size freespace; /* - * The visibility map always needs to be updated, even if the heap page - * is already up-to-date. + * The visibility map always needs to be updated, even if the heap page is + * already up-to-date. */ if (xlrec->all_visible_cleared) { - Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + visibilitymap_clear(reln, ItemPointerGetBlockNumber(&xlrec->target.tid)); FreeFakeRelcacheEntry(reln); @@ -4504,12 +4507,13 @@ heap_xlog_update(XLogRecPtr lsn, XLogRecord *record, bool move, bool hot_update) newt:; /* - * The visibility map always needs to be updated, even if the heap page - * is already up-to-date. + * The visibility map always needs to be updated, even if the heap page is + * already up-to-date. */ if (xlrec->new_all_visible_cleared) { - Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + Relation reln = CreateFakeRelcacheEntry(xlrec->target.node); + visibilitymap_clear(reln, ItemPointerGetBlockNumber(&xlrec->newtid)); FreeFakeRelcacheEntry(reln); } @@ -4595,7 +4599,7 @@ newsame:; if (xlrec->new_all_visible_cleared) PageClearAllVisible(page); - freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */ + freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */ PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); @@ -4604,8 +4608,8 @@ newsame:; /* * If the page is running low on free space, update the FSM as well. - * Arbitrarily, our definition of "low" is less than 20%. We can't do - * much better than that without knowing the fill-factor for the table. + * Arbitrarily, our definition of "low" is less than 20%. We can't do much + * better than that without knowing the fill-factor for the table. * * However, don't update the FSM on HOT updates, because after crash * recovery, either the old or the new tuple will certainly be dead and @@ -4619,7 +4623,7 @@ newsame:; */ if (!hot_update && freespace < BLCKSZ / 5) XLogRecordPageWithFreeSpace(xlrec->target.node, - ItemPointerGetBlockNumber(&(xlrec->newtid)), freespace); + ItemPointerGetBlockNumber(&(xlrec->newtid)), freespace); } static void diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c index 1d70e6c01a6..7ed8612357a 100644 --- a/src/backend/access/heap/hio.c +++ b/src/backend/access/heap/hio.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.75 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.76 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -64,7 +64,7 @@ static Buffer ReadBufferBI(Relation relation, BlockNumber targetBlock, BulkInsertState bistate) { - Buffer buffer; + Buffer buffer; /* If not bulk-insert, exactly like ReadBuffer */ if (!bistate) @@ -118,7 +118,7 @@ ReadBufferBI(Relation relation, BlockNumber targetBlock, * happen if space is freed in that page after heap_update finds there's not * enough there). In that case, the page will be pinned and locked only once. * - * We normally use FSM to help us find free space. However, + * We normally use FSM to help us find free space. However, * if HEAP_INSERT_SKIP_FSM is specified, we just append a new empty page to * the end of the relation if the tuple won't fit on the current target page. * This can save some cycles when we know the relation is new and doesn't @@ -133,7 +133,7 @@ ReadBufferBI(Relation relation, BlockNumber targetBlock, * for additional constraints needed for safe usage of this behavior.) * * The caller can also provide a BulkInsertState object to optimize many - * insertions into the same relation. This keeps a pin on the current + * insertions into the same relation. This keeps a pin on the current * insertion target page (to save pin/unpin cycles) and also passes a * BULKWRITE buffer selection strategy object to the buffer manager. * Passing NULL for bistate selects the default behavior. @@ -186,7 +186,7 @@ RelationGetBufferForTuple(Relation relation, Size len, /* * We first try to put the tuple on the same page we last inserted a tuple - * on, as cached in the BulkInsertState or relcache entry. If that + * on, as cached in the BulkInsertState or relcache entry. If that * doesn't work, we ask the Free Space Map to locate a suitable page. * Since the FSM's info might be out of date, we have to be prepared to * loop around and retry multiple times. (To insure this isn't an infinite diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c index 4b445c7ad85..71ea689d0e6 100644 --- a/src/backend/access/heap/pruneheap.c +++ b/src/backend/access/heap/pruneheap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/pruneheap.c,v 1.17 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/pruneheap.c,v 1.18 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -30,7 +30,7 @@ typedef struct { TransactionId new_prune_xid; /* new prune hint value for page */ - int nredirected; /* numbers of entries in arrays below */ + int nredirected; /* numbers of entries in arrays below */ int ndead; int nunused; /* arrays that accumulate indexes of items to be changed */ @@ -159,21 +159,21 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, /* * Our strategy is to scan the page and make lists of items to change, - * then apply the changes within a critical section. This keeps as - * much logic as possible out of the critical section, and also ensures - * that WAL replay will work the same as the normal case. + * then apply the changes within a critical section. This keeps as much + * logic as possible out of the critical section, and also ensures that + * WAL replay will work the same as the normal case. * - * First, inform inval.c that upcoming CacheInvalidateHeapTuple calls - * are nontransactional. + * First, inform inval.c that upcoming CacheInvalidateHeapTuple calls are + * nontransactional. */ if (redirect_move) BeginNonTransactionalInvalidation(); /* - * Initialize the new pd_prune_xid value to zero (indicating no - * prunable tuples). If we find any tuples which may soon become - * prunable, we will save the lowest relevant XID in new_prune_xid. - * Also initialize the rest of our working state. + * Initialize the new pd_prune_xid value to zero (indicating no prunable + * tuples). If we find any tuples which may soon become prunable, we will + * save the lowest relevant XID in new_prune_xid. Also initialize the rest + * of our working state. */ prstate.new_prune_xid = InvalidTransactionId; prstate.nredirected = prstate.ndead = prstate.nunused = 0; @@ -204,9 +204,9 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, } /* - * Send invalidation messages for any tuples we are about to move. - * It is safe to do this now, even though we could theoretically still - * fail before making the actual page update, because a useless cache + * Send invalidation messages for any tuples we are about to move. It is + * safe to do this now, even though we could theoretically still fail + * before making the actual page update, because a useless cache * invalidation doesn't hurt anything. Also, no one else can reload the * tuples while we have exclusive buffer lock, so it's not too early to * send the invals. This avoids sending the invals while inside the @@ -222,9 +222,8 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, if (prstate.nredirected > 0 || prstate.ndead > 0 || prstate.nunused > 0) { /* - * Apply the planned item changes, then repair page fragmentation, - * and update the page's hint bit about whether it has free line - * pointers. + * Apply the planned item changes, then repair page fragmentation, and + * update the page's hint bit about whether it has free line pointers. */ heap_page_prune_execute(buffer, prstate.redirected, prstate.nredirected, @@ -268,8 +267,8 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, { /* * If we didn't prune anything, but have found a new value for the - * pd_prune_xid field, update it and mark the buffer dirty. - * This is treated as a non-WAL-logged hint. + * pd_prune_xid field, update it and mark the buffer dirty. This is + * treated as a non-WAL-logged hint. * * Also clear the "page is full" flag if it is set, since there's no * point in repeating the prune/defrag process until something else @@ -334,8 +333,8 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, * OldestXmin is the cutoff XID used to identify dead tuples. * * We don't actually change the page here, except perhaps for hint-bit updates - * caused by HeapTupleSatisfiesVacuum. We just add entries to the arrays in - * prstate showing the changes to be made. Items to be redirected are added + * caused by HeapTupleSatisfiesVacuum. We just add entries to the arrays in + * prstate showing the changes to be made. Items to be redirected are added * to the redirected[] array (two entries per redirection); items to be set to * LP_DEAD state are added to nowdead[]; and items to be set to LP_UNUSED * state are added to nowunused[]. @@ -598,19 +597,19 @@ heap_prune_chain(Relation relation, Buffer buffer, OffsetNumber rootoffnum, else if (redirect_move && ItemIdIsRedirected(rootlp)) { /* - * If we desire to eliminate LP_REDIRECT items by moving tuples, - * make a redirection entry for each redirected root item; this - * will cause heap_page_prune_execute to actually do the move. - * (We get here only when there are no DEAD tuples in the chain; - * otherwise the redirection entry was made above.) + * If we desire to eliminate LP_REDIRECT items by moving tuples, make + * a redirection entry for each redirected root item; this will cause + * heap_page_prune_execute to actually do the move. (We get here only + * when there are no DEAD tuples in the chain; otherwise the + * redirection entry was made above.) */ heap_prune_record_redirect(prstate, rootoffnum, chainitems[1]); redirect_target = chainitems[1]; } /* - * If we are going to implement a redirect by moving tuples, we have - * to issue a cache invalidation against the redirection target tuple, + * If we are going to implement a redirect by moving tuples, we have to + * issue a cache invalidation against the redirection target tuple, * because its CTID will be effectively changed by the move. Note that * CacheInvalidateHeapTuple only queues the request, it doesn't send it; * if we fail before reaching EndNonTransactionalInvalidation, nothing @@ -693,7 +692,7 @@ heap_prune_record_unused(PruneState *prstate, OffsetNumber offnum) * buffer, and is inside a critical section. * * This is split out because it is also used by heap_xlog_clean() - * to replay the WAL record when needed after a crash. Note that the + * to replay the WAL record when needed after a crash. Note that the * arguments are identical to those of log_heap_clean(). */ void diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c index f6a16b8492d..6f00c24845f 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -96,7 +96,7 @@ * Portions Copyright (c) 1994-5, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/rewriteheap.c,v 1.17 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/rewriteheap.c,v 1.18 2009/06/11 14:48:53 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -577,7 +577,7 @@ raw_heap_insert(RewriteState state, HeapTuple tup) heaptup = toast_insert_or_update(state->rs_new_rel, tup, NULL, HEAP_INSERT_SKIP_FSM | (state->rs_use_wal ? - 0 : HEAP_INSERT_SKIP_WAL)); + 0 : HEAP_INSERT_SKIP_WAL)); else heaptup = tup; diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c index 35019a543c7..a3203085b7a 100644 --- a/src/backend/access/heap/tuptoaster.c +++ b/src/backend/access/heap/tuptoaster.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.92 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.93 2009/06/11 14:48:54 momjian Exp $ * * * INTERFACE ROUTINES @@ -1073,8 +1073,8 @@ toast_compress_datum(Datum value) Assert(!VARATT_IS_COMPRESSED(DatumGetPointer(value))); /* - * No point in wasting a palloc cycle if value size is out of the - * allowed range for compression + * No point in wasting a palloc cycle if value size is out of the allowed + * range for compression */ if (valsize < PGLZ_strategy_default->min_input_size || valsize > PGLZ_strategy_default->max_input_size) @@ -1087,10 +1087,10 @@ toast_compress_datum(Datum value) * because it might be satisfied with having saved as little as one byte * in the compressed data --- which could turn into a net loss once you * consider header and alignment padding. Worst case, the compressed - * format might require three padding bytes (plus header, which is included - * in VARSIZE(tmp)), whereas the uncompressed format would take only one - * header byte and no padding if the value is short enough. So we insist - * on a savings of more than 2 bytes to ensure we have a gain. + * format might require three padding bytes (plus header, which is + * included in VARSIZE(tmp)), whereas the uncompressed format would take + * only one header byte and no padding if the value is short enough. So + * we insist on a savings of more than 2 bytes to ensure we have a gain. */ if (pglz_compress(VARDATA_ANY(DatumGetPointer(value)), valsize, (PGLZ_Header *) tmp, PGLZ_strategy_default) && @@ -1130,7 +1130,7 @@ toast_save_datum(Relation rel, Datum value, int options) struct { struct varlena hdr; - char data[TOAST_MAX_CHUNK_SIZE]; /* make struct big enough */ + char data[TOAST_MAX_CHUNK_SIZE]; /* make struct big enough */ int32 align_it; /* ensure struct is aligned well enough */ } chunk_data; int32 chunk_size; @@ -1295,8 +1295,8 @@ toast_delete_datum(Relation rel, Datum value) /* * Find all the chunks. (We don't actually care whether we see them in - * sequence or not, but since we've already locked the index we might - * as well use systable_beginscan_ordered.) + * sequence or not, but since we've already locked the index we might as + * well use systable_beginscan_ordered.) */ toastscan = systable_beginscan_ordered(toastrel, toastidx, SnapshotToast, 1, &toastkey); @@ -1598,7 +1598,7 @@ toast_fetch_datum_slice(struct varlena * attr, int32 sliceoffset, int32 length) */ nextidx = startchunk; toastscan = systable_beginscan_ordered(toastrel, toastidx, - SnapshotToast, nscankeys, toastkey); + SnapshotToast, nscankeys, toastkey); while ((ttup = systable_getnext_ordered(toastscan, ForwardScanDirection)) != NULL) { /* diff --git a/src/backend/access/heap/visibilitymap.c b/src/backend/access/heap/visibilitymap.c index 2b5a0704ede..d425e772b96 100644 --- a/src/backend/access/heap/visibilitymap.c +++ b/src/backend/access/heap/visibilitymap.c @@ -8,10 +8,10 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/heap/visibilitymap.c,v 1.3 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/heap/visibilitymap.c,v 1.4 2009/06/11 14:48:54 momjian Exp $ * * INTERFACE ROUTINES - * visibilitymap_clear - clear a bit in the visibility map + * visibilitymap_clear - clear a bit in the visibility map * visibilitymap_pin - pin a map page for setting a bit * visibilitymap_set - set a bit in a previously pinned page * visibilitymap_test - test if a bit is set @@ -144,7 +144,7 @@ visibilitymap_clear(Relation rel, BlockNumber heapBlk) mapBuffer = vm_readbuf(rel, mapBlock, false); if (!BufferIsValid(mapBuffer)) - return; /* nothing to do */ + return; /* nothing to do */ LockBuffer(mapBuffer, BUFFER_LOCK_EXCLUSIVE); map = PageGetContents(BufferGetPage(mapBuffer)); @@ -295,10 +295,11 @@ void visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) { BlockNumber newnblocks; + /* last remaining block, byte, and bit */ BlockNumber truncBlock = HEAPBLK_TO_MAPBLOCK(nheapblocks); - uint32 truncByte = HEAPBLK_TO_MAPBYTE(nheapblocks); - uint8 truncBit = HEAPBLK_TO_MAPBIT(nheapblocks); + uint32 truncByte = HEAPBLK_TO_MAPBYTE(nheapblocks); + uint8 truncBit = HEAPBLK_TO_MAPBIT(nheapblocks); #ifdef TRACE_VISIBILITYMAP elog(DEBUG1, "vm_truncate %s %d", RelationGetRelationName(rel), nheapblocks); @@ -315,14 +316,14 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) * Unless the new size is exactly at a visibility map page boundary, the * tail bits in the last remaining map page, representing truncated heap * blocks, need to be cleared. This is not only tidy, but also necessary - * because we don't get a chance to clear the bits if the heap is - * extended again. + * because we don't get a chance to clear the bits if the heap is extended + * again. */ if (truncByte != 0 || truncBit != 0) { - Buffer mapBuffer; - Page page; - char *map; + Buffer mapBuffer; + Page page; + char *map; newnblocks = truncBlock + 1; @@ -344,11 +345,8 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) /* * Mask out the unwanted bits of the last remaining byte. * - * ((1 << 0) - 1) = 00000000 - * ((1 << 1) - 1) = 00000001 - * ... - * ((1 << 6) - 1) = 00111111 - * ((1 << 7) - 1) = 01111111 + * ((1 << 0) - 1) = 00000000 ((1 << 1) - 1) = 00000001 ... ((1 << 6) - + * 1) = 00111111 ((1 << 7) - 1) = 01111111 */ map[truncByte] &= (1 << truncBit) - 1; @@ -368,8 +366,8 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) rel->rd_istemp); /* - * Need to invalidate the relcache entry, because rd_vm_nblocks - * seen by other backends is no longer valid. + * Need to invalidate the relcache entry, because rd_vm_nblocks seen by + * other backends is no longer valid. */ if (!InRecovery) CacheInvalidateRelcache(rel); @@ -386,7 +384,7 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) static Buffer vm_readbuf(Relation rel, BlockNumber blkno, bool extend) { - Buffer buf; + Buffer buf; RelationOpenSmgr(rel); @@ -433,20 +431,20 @@ static void vm_extend(Relation rel, BlockNumber vm_nblocks) { BlockNumber vm_nblocks_now; - Page pg; + Page pg; pg = (Page) palloc(BLCKSZ); PageInit(pg, BLCKSZ, 0); /* - * We use the relation extension lock to lock out other backends trying - * to extend the visibility map at the same time. It also locks out - * extension of the main fork, unnecessarily, but extending the - * visibility map happens seldom enough that it doesn't seem worthwhile to - * have a separate lock tag type for it. + * We use the relation extension lock to lock out other backends trying to + * extend the visibility map at the same time. It also locks out extension + * of the main fork, unnecessarily, but extending the visibility map + * happens seldom enough that it doesn't seem worthwhile to have a + * separate lock tag type for it. * - * Note that another backend might have extended or created the - * relation before we get the lock. + * Note that another backend might have extended or created the relation + * before we get the lock. */ LockRelationForExtension(rel, ExclusiveLock); diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c index 9193ee40ebe..a79c3920713 100644 --- a/src/backend/access/index/genam.c +++ b/src/backend/access/index/genam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/index/genam.c,v 1.73 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/index/genam.c,v 1.74 2009/06/11 14:48:54 momjian Exp $ * * NOTES * many of the old access method routines have been turned into @@ -197,7 +197,7 @@ systable_beginscan(Relation heapRelation, /* Change attribute numbers to be index column numbers. */ for (i = 0; i < nkeys; i++) { - int j; + int j; for (j = 0; j < irel->rd_index->indnatts; j++) { @@ -241,12 +241,13 @@ systable_getnext(SysScanDesc sysscan) if (sysscan->irel) { htup = index_getnext(sysscan->iscan, ForwardScanDirection); + /* - * We currently don't need to support lossy index operators for - * any system catalog scan. It could be done here, using the - * scan keys to drive the operator calls, if we arranged to save - * the heap attnums during systable_beginscan(); this is practical - * because we still wouldn't need to support indexes on expressions. + * We currently don't need to support lossy index operators for any + * system catalog scan. It could be done here, using the scan keys to + * drive the operator calls, if we arranged to save the heap attnums + * during systable_beginscan(); this is practical because we still + * wouldn't need to support indexes on expressions. */ if (htup && sysscan->iscan->xs_recheck) elog(ERROR, "system catalog scans with lossy index conditions are not implemented"); @@ -326,7 +327,7 @@ systable_endscan(SysScanDesc sysscan) * index order. Also, for largely historical reasons, the index to use * is opened and locked by the caller, not here. * - * Currently we do not support non-index-based scans here. (In principle + * Currently we do not support non-index-based scans here. (In principle * we could do a heapscan and sort, but the uses are in places that * probably don't need to still work with corrupted catalog indexes.) * For the moment, therefore, these functions are merely the thinnest of @@ -360,7 +361,7 @@ systable_beginscan_ordered(Relation heapRelation, /* Change attribute numbers to be index column numbers. */ for (i = 0; i < nkeys; i++) { - int j; + int j; for (j = 0; j < indexRelation->rd_index->indnatts; j++) { diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c index 197fa3b041d..32623965c78 100644 --- a/src/backend/access/index/indexam.c +++ b/src/backend/access/index/indexam.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/index/indexam.c,v 1.113 2009/03/24 20:17:12 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/index/indexam.c,v 1.114 2009/06/11 14:48:54 momjian Exp $ * * INTERFACE ROUTINES * index_open - open an index relation by relation OID @@ -21,7 +21,7 @@ * index_markpos - mark a scan position * index_restrpos - restore a scan position * index_getnext - get the next tuple from a scan - * index_getbitmap - get all tuples from a scan + * index_getbitmap - get all tuples from a scan * index_bulk_delete - bulk deletion of index tuples * index_vacuum_cleanup - post-deletion cleanup of an index * index_getprocid - get a support procedure OID @@ -461,9 +461,9 @@ index_getnext(IndexScanDesc scan, ScanDirection direction) /* * The AM's gettuple proc finds the next index entry matching the - * scan keys, and puts the TID in xs_ctup.t_self (ie, *tid). - * It should also set scan->xs_recheck, though we pay no - * attention to that here. + * scan keys, and puts the TID in xs_ctup.t_self (ie, *tid). It + * should also set scan->xs_recheck, though we pay no attention to + * that here. */ found = DatumGetBool(FunctionCall2(procedure, PointerGetDatum(scan), diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index b0d14319b73..a06faa20203 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.169 2009/01/01 17:23:35 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.170 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -374,7 +374,7 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel, * removing any LP_DEAD tuples. * * On entry, *buf and *offsetptr point to the first legal position - * where the new tuple could be inserted. The caller should hold an + * where the new tuple could be inserted. The caller should hold an * exclusive lock on *buf. *offsetptr can also be set to * InvalidOffsetNumber, in which case the function will search for the * right location within the page if needed. On exit, they point to the @@ -951,7 +951,7 @@ _bt_split(Relation rel, Buffer buf, OffsetNumber firstright, sopaque = (BTPageOpaque) PageGetSpecialPointer(spage); if (sopaque->btpo_prev != ropaque->btpo_prev) elog(PANIC, "right sibling's left-link doesn't match: " - "block %u links to %u instead of expected %u in index \"%s\"", + "block %u links to %u instead of expected %u in index \"%s\"", ropaque->btpo_next, sopaque->btpo_prev, ropaque->btpo_prev, RelationGetRelationName(rel)); diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 55d947e9f27..2b76e7cd453 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -12,7 +12,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.170 2009/06/06 22:13:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtree.c,v 1.171 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -290,7 +290,7 @@ Datum btgetbitmap(PG_FUNCTION_ARGS) { IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); - TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); + TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1); BTScanOpaque so = (BTScanOpaque) scan->opaque; int64 ntids = 0; ItemPointer heapTid; @@ -579,9 +579,8 @@ btvacuumcleanup(PG_FUNCTION_ARGS) /* * During a non-FULL vacuum it's quite possible for us to be fooled by * concurrent page splits into double-counting some index tuples, so - * disbelieve any total that exceeds the underlying heap's count ... - * if we know that accurately. Otherwise this might just make matters - * worse. + * disbelieve any total that exceeds the underlying heap's count ... if we + * know that accurately. Otherwise this might just make matters worse. */ if (!info->vacuum_full && !info->estimated_count) { diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 3de7d50e012..d132d6bdee1 100644 --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.54 2009/01/20 18:59:37 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.55 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -338,8 +338,8 @@ btree_xlog_split(bool onleft, bool isroot, _bt_restore_page(rpage, datapos, datalen); /* - * On leaf level, the high key of the left page is equal to the - * first key on the right page. + * On leaf level, the high key of the left page is equal to the first key + * on the right page. */ if (xlrec->level == 0) { @@ -936,7 +936,7 @@ btree_xlog_cleanup(void) buf = XLogReadBuffer(action->node, action->delblk, false); if (BufferIsValid(buf)) { - Relation reln; + Relation reln; reln = CreateFakeRelcacheEntry(action->node); if (_bt_pagedel(reln, buf, NULL, true) == 0) diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index 368d2c9d1a5..8544725abb4 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -26,7 +26,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/clog.c,v 1.52 2009/01/20 18:59:37 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/clog.c,v 1.53 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -81,7 +81,7 @@ static bool CLOGPagePrecedes(int page1, int page2); static void WriteZeroPageXlogRec(int pageno); static void WriteTruncateXlogRec(int pageno); static void TransactionIdSetPageStatus(TransactionId xid, int nsubxids, - TransactionId *subxids, XidStatus status, + TransactionId *subxids, XidStatus status, XLogRecPtr lsn, int pageno); static void TransactionIdSetStatusBit(TransactionId xid, XidStatus status, XLogRecPtr lsn, int slotno); @@ -112,10 +112,10 @@ static void set_status_by_pages(int nsubxids, TransactionId *subxids, * the same CLOG page as xid. If they all are, then the lock will be grabbed * only once, and the status will be set to committed directly. Otherwise * we must - * 1. set sub-committed all subxids that are not on the same page as the - * main xid - * 2. atomically set committed the main xid and the subxids on the same page - * 3. go over the first bunch again and set them committed + * 1. set sub-committed all subxids that are not on the same page as the + * main xid + * 2. atomically set committed the main xid and the subxids on the same page + * 3. go over the first bunch again and set them committed * Note that as far as concurrent checkers are concerned, main transaction * commit as a whole is still atomic. * @@ -126,13 +126,13 @@ static void set_status_by_pages(int nsubxids, TransactionId *subxids, * page2: set t2,t3 as sub-committed * page3: set t4 as sub-committed * 2. update page1: - * set t1 as sub-committed, + * set t1 as sub-committed, * then set t as committed, then set t1 as committed * 3. update pages2-3: * page2: set t2,t3 as committed * page3: set t4 as committed - * + * * NB: this is a low-level routine and is NOT the preferred entry point * for most uses; functions in transam.c are the intended callers. * @@ -142,16 +142,17 @@ static void set_status_by_pages(int nsubxids, TransactionId *subxids, */ void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, - TransactionId *subxids, XidStatus status, XLogRecPtr lsn) + TransactionId *subxids, XidStatus status, XLogRecPtr lsn) { - int pageno = TransactionIdToPage(xid); /* get page of parent */ - int i; + int pageno = TransactionIdToPage(xid); /* get page of parent */ + int i; Assert(status == TRANSACTION_STATUS_COMMITTED || status == TRANSACTION_STATUS_ABORTED); /* - * See how many subxids, if any, are on the same page as the parent, if any. + * See how many subxids, if any, are on the same page as the parent, if + * any. */ for (i = 0; i < nsubxids; i++) { @@ -172,14 +173,14 @@ TransactionIdSetTreeStatus(TransactionId xid, int nsubxids, } else { - int nsubxids_on_first_page = i; + int nsubxids_on_first_page = i; /* * If this is a commit then we care about doing this correctly (i.e. - * using the subcommitted intermediate status). By here, we know we're - * updating more than one page of clog, so we must mark entries that - * are *not* on the first page so that they show as subcommitted before - * we then return to update the status to fully committed. + * using the subcommitted intermediate status). By here, we know + * we're updating more than one page of clog, so we must mark entries + * that are *not* on the first page so that they show as subcommitted + * before we then return to update the status to fully committed. * * To avoid touching the first page twice, skip marking subcommitted * for the subxids on that first page. @@ -217,13 +218,13 @@ static void set_status_by_pages(int nsubxids, TransactionId *subxids, XidStatus status, XLogRecPtr lsn) { - int pageno = TransactionIdToPage(subxids[0]); - int offset = 0; - int i = 0; + int pageno = TransactionIdToPage(subxids[0]); + int offset = 0; + int i = 0; while (i < nsubxids) { - int num_on_page = 0; + int num_on_page = 0; while (TransactionIdToPage(subxids[i]) == pageno && i < nsubxids) { @@ -251,7 +252,7 @@ TransactionIdSetPageStatus(TransactionId xid, int nsubxids, XLogRecPtr lsn, int pageno) { int slotno; - int i; + int i; Assert(status == TRANSACTION_STATUS_COMMITTED || status == TRANSACTION_STATUS_ABORTED || @@ -275,9 +276,9 @@ TransactionIdSetPageStatus(TransactionId xid, int nsubxids, * * If we update more than one xid on this page while it is being written * out, we might find that some of the bits go to disk and others don't. - * If we are updating commits on the page with the top-level xid that could - * break atomicity, so we subcommit the subxids first before we mark the - * top-level commit. + * If we are updating commits on the page with the top-level xid that + * could break atomicity, so we subcommit the subxids first before we mark + * the top-level commit. */ if (TransactionIdIsValid(xid)) { @@ -336,7 +337,7 @@ TransactionIdSetStatusBit(TransactionId xid, XidStatus status, XLogRecPtr lsn, i curval == TRANSACTION_STATUS_COMMITTED) return; - /* + /* * Current state change should be from 0 or subcommitted to target state * or we should already be there when replaying changes during recovery. */ diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 4685ccdf10b..4a43579c407 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.52 2009/04/23 00:23:45 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/twophase.c,v 1.53 2009/06/11 14:48:54 momjian Exp $ * * NOTES * Each global transaction is associated with a global transaction @@ -233,7 +233,7 @@ MarkAsPreparing(TransactionId xid, const char *gid, ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("prepared transactions are disabled"), - errhint("Set max_prepared_transactions to a nonzero value."))); + errhint("Set max_prepared_transactions to a nonzero value."))); LWLockAcquire(TwoPhaseStateLock, LW_EXCLUSIVE); diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index ac330411aa7..2b6a2224775 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.273 2009/05/13 20:27:17 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xact.c,v 1.274 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -456,7 +456,7 @@ GetCurrentSubTransactionId(void) * * "used" must be TRUE if the caller intends to use the command ID to mark * inserted/updated/deleted tuples. FALSE means the ID is being fetched - * for read-only purposes (ie, as a snapshot validity cutoff). See + * for read-only purposes (ie, as a snapshot validity cutoff). See * CommandCounterIncrement() for discussion. */ CommandId @@ -566,7 +566,8 @@ TransactionIdIsCurrentTransactionId(TransactionId xid) */ for (s = CurrentTransactionState; s != NULL; s = s->parent) { - int low, high; + int low, + high; if (s->state == TRANS_ABORT) continue; @@ -579,8 +580,8 @@ TransactionIdIsCurrentTransactionId(TransactionId xid) high = s->nChildXids - 1; while (low <= high) { - int middle; - TransactionId probe; + int middle; + TransactionId probe; middle = low + (high - low) / 2; probe = s->childXids[middle]; @@ -604,33 +605,31 @@ void CommandCounterIncrement(void) { /* - * If the current value of the command counter hasn't been "used" to - * mark tuples, we need not increment it, since there's no need to - * distinguish a read-only command from others. This helps postpone - * command counter overflow, and keeps no-op CommandCounterIncrement - * operations cheap. + * If the current value of the command counter hasn't been "used" to mark + * tuples, we need not increment it, since there's no need to distinguish + * a read-only command from others. This helps postpone command counter + * overflow, and keeps no-op CommandCounterIncrement operations cheap. */ if (currentCommandIdUsed) { currentCommandId += 1; - if (currentCommandId == FirstCommandId) /* check for overflow */ + if (currentCommandId == FirstCommandId) /* check for overflow */ { currentCommandId -= 1; ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("cannot have more than 2^32-1 commands in a transaction"))); + errmsg("cannot have more than 2^32-1 commands in a transaction"))); } currentCommandIdUsed = false; /* Propagate new command ID into static snapshots */ SnapshotSetCommandId(currentCommandId); - + /* - * Make any catalog changes done by the just-completed command - * visible in the local syscache. We obviously don't need to do - * this after a read-only command. (But see hacks in inval.c - * to make real sure we don't think a command that queued inval - * messages was read-only.) + * Make any catalog changes done by the just-completed command visible + * in the local syscache. We obviously don't need to do this after a + * read-only command. (But see hacks in inval.c to make real sure we + * don't think a command that queued inval messages was read-only.) */ AtCommit_LocalCache(); } @@ -638,11 +637,11 @@ CommandCounterIncrement(void) /* * Make any other backends' catalog changes visible to me. * - * XXX this is probably in the wrong place: CommandCounterIncrement - * should be purely a local operation, most likely. However fooling - * with this will affect asynchronous cross-backend interactions, - * which doesn't seem like a wise thing to do in late beta, so save - * improving this for another day - tgl 2007-11-30 + * XXX this is probably in the wrong place: CommandCounterIncrement should + * be purely a local operation, most likely. However fooling with this + * will affect asynchronous cross-backend interactions, which doesn't seem + * like a wise thing to do in late beta, so save improving this for + * another day - tgl 2007-11-30 */ AtStart_Cache(); } @@ -1086,14 +1085,14 @@ AtSubCommit_childXids(void) /* Allocate or enlarge the parent array if necessary */ if (s->parent->maxChildXids < new_nChildXids) { - int new_maxChildXids; - TransactionId *new_childXids; + int new_maxChildXids; + TransactionId *new_childXids; /* * Make it 2x what's needed right now, to avoid having to enlarge it - * repeatedly. But we can't go above MaxAllocSize. (The latter - * limit is what ensures that we don't need to worry about integer - * overflow here or in the calculation of new_nChildXids.) + * repeatedly. But we can't go above MaxAllocSize. (The latter limit + * is what ensures that we don't need to worry about integer overflow + * here or in the calculation of new_nChildXids.) */ new_maxChildXids = Min(new_nChildXids * 2, (int) (MaxAllocSize / sizeof(TransactionId))); @@ -1111,13 +1110,13 @@ AtSubCommit_childXids(void) */ if (s->parent->childXids == NULL) new_childXids = - MemoryContextAlloc(TopTransactionContext, + MemoryContextAlloc(TopTransactionContext, new_maxChildXids * sizeof(TransactionId)); else - new_childXids = repalloc(s->parent->childXids, - new_maxChildXids * sizeof(TransactionId)); + new_childXids = repalloc(s->parent->childXids, + new_maxChildXids * sizeof(TransactionId)); - s->parent->childXids = new_childXids; + s->parent->childXids = new_childXids; s->parent->maxChildXids = new_maxChildXids; } @@ -1126,9 +1125,9 @@ AtSubCommit_childXids(void) * * Note: We rely on the fact that the XID of a child always follows that * of its parent. By copying the XID of this subtransaction before the - * XIDs of its children, we ensure that the array stays ordered. Likewise, - * all XIDs already in the array belong to subtransactions started and - * subcommitted before us, so their XIDs must precede ours. + * XIDs of its children, we ensure that the array stays ordered. + * Likewise, all XIDs already in the array belong to subtransactions + * started and subcommitted before us, so their XIDs must precede ours. */ s->parent->childXids[s->parent->nChildXids] = s->transactionId; @@ -1801,15 +1800,15 @@ PrepareTransaction(void) /* NOTIFY and flatfiles will be handled below */ /* - * Don't allow PREPARE TRANSACTION if we've accessed a temporary table - * in this transaction. Having the prepared xact hold locks on another + * Don't allow PREPARE TRANSACTION if we've accessed a temporary table in + * this transaction. Having the prepared xact hold locks on another * backend's temp table seems a bad idea --- for instance it would prevent - * the backend from exiting. There are other problems too, such as how - * to clean up the source backend's local buffers and ON COMMIT state - * if the prepared xact includes a DROP of a temp table. + * the backend from exiting. There are other problems too, such as how to + * clean up the source backend's local buffers and ON COMMIT state if the + * prepared xact includes a DROP of a temp table. * - * We must check this after executing any ON COMMIT actions, because - * they might still access a temp relation. + * We must check this after executing any ON COMMIT actions, because they + * might still access a temp relation. * * XXX In principle this could be relaxed to allow some useful special * cases, such as a temp table created and dropped all within the @@ -2021,8 +2020,8 @@ AbortTransaction(void) /* * Reset user ID which might have been changed transiently. We need this * to clean up in case control escaped out of a SECURITY DEFINER function - * or other local change of CurrentUserId; therefore, the prior value - * of SecurityDefinerContext also needs to be restored. + * or other local change of CurrentUserId; therefore, the prior value of + * SecurityDefinerContext also needs to be restored. * * (Note: it is not necessary to restore session authorization or role * settings here because those can only be changed via GUC, and GUC will @@ -3749,8 +3748,8 @@ CommitSubTransaction(void) /* Must CCI to ensure commands of subtransaction are seen as done */ CommandCounterIncrement(); - /* - * Prior to 8.4 we marked subcommit in clog at this point. We now only + /* + * Prior to 8.4 we marked subcommit in clog at this point. We now only * perform that step, if required, as part of the atomic update of the * whole transaction tree at top level commit or abort. */ @@ -3868,8 +3867,8 @@ AbortSubTransaction(void) s->state = TRANS_ABORT; /* - * Reset user ID which might have been changed transiently. (See notes - * in AbortTransaction.) + * Reset user ID which might have been changed transiently. (See notes in + * AbortTransaction.) */ SetUserIdAndContext(s->prevUser, s->prevSecDefCxt); @@ -4089,7 +4088,7 @@ ShowTransactionStateRec(TransactionState s) if (s->nChildXids > 0) { - int i; + int i; appendStringInfo(&buf, "%u", s->childXids[0]); for (i = 1; i < s->nChildXids; i++) @@ -4241,7 +4240,7 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid) for (i = 0; i < xlrec->nrels; i++) { SMgrRelation srel = smgropen(xlrec->xnodes[i]); - ForkNumber fork; + ForkNumber fork; for (fork = 0; fork <= MAX_FORKNUM; fork++) { @@ -4284,7 +4283,7 @@ xact_redo_abort(xl_xact_abort *xlrec, TransactionId xid) for (i = 0; i < xlrec->nrels; i++) { SMgrRelation srel = smgropen(xlrec->xnodes[i]); - ForkNumber fork; + ForkNumber fork; for (fork = 0; fork <= MAX_FORKNUM; fork++) { @@ -4353,7 +4352,8 @@ xact_desc_commit(StringInfo buf, xl_xact_commit *xlrec) appendStringInfo(buf, "; rels:"); for (i = 0; i < xlrec->nrels; i++) { - char *path = relpath(xlrec->xnodes[i], MAIN_FORKNUM); + char *path = relpath(xlrec->xnodes[i], MAIN_FORKNUM); + appendStringInfo(buf, " %s", path); pfree(path); } @@ -4380,7 +4380,8 @@ xact_desc_abort(StringInfo buf, xl_xact_abort *xlrec) appendStringInfo(buf, "; rels:"); for (i = 0; i < xlrec->nrels; i++) { - char *path = relpath(xlrec->xnodes[i], MAIN_FORKNUM); + char *path = relpath(xlrec->xnodes[i], MAIN_FORKNUM); + appendStringInfo(buf, " %s", path); pfree(path); } diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index b6171c78c01..d521fa6e7b1 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.342 2009/06/02 06:18:06 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.343 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -69,7 +69,7 @@ bool XLogArchiveMode = false; char *XLogArchiveCommand = NULL; bool fullPageWrites = true; bool log_checkpoints = false; -int sync_method = DEFAULT_SYNC_METHOD; +int sync_method = DEFAULT_SYNC_METHOD; #ifdef WAL_DEBUG bool XLOG_DEBUG = false; @@ -122,7 +122,7 @@ CheckpointStatsData CheckpointStats; TimeLineID ThisTimeLineID = 0; /* - * Are we doing recovery from XLOG? + * Are we doing recovery from XLOG? * * This is only ever true in the startup process, even if the system is still * in recovery. Prior to 8.4, all activity during recovery were carried out @@ -336,9 +336,8 @@ typedef struct XLogCtlData bool SharedRecoveryInProgress; /* - * During recovery, we keep a copy of the latest checkpoint record - * here. Used by the background writer when it wants to create - * a restartpoint. + * During recovery, we keep a copy of the latest checkpoint record here. + * Used by the background writer when it wants to create a restartpoint. * * Protected by info_lck. */ @@ -422,8 +421,9 @@ static XLogRecPtr ReadRecPtr; /* start of last record read */ static XLogRecPtr EndRecPtr; /* end+1 of last record read */ static XLogRecord *nextRecord = NULL; static TimeLineID lastPageTLI = 0; -static XLogRecPtr minRecoveryPoint; /* local copy of ControlFile->minRecoveryPoint */ -static bool updateMinRecoveryPoint = true; +static XLogRecPtr minRecoveryPoint; /* local copy of + * ControlFile->minRecoveryPoint */ +static bool updateMinRecoveryPoint = true; static bool InRedo = false; @@ -432,6 +432,7 @@ static bool InRedo = false; */ static volatile sig_atomic_t got_SIGHUP = false; static volatile sig_atomic_t shutdown_requested = false; + /* * Flag set when executing a restore command, to tell SIGTERM signal handler * that it's safe to just proc_exit. @@ -482,6 +483,7 @@ static void writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI, static void WriteControlFile(void); static void ReadControlFile(void); static char *str_time(pg_time_t tnow); + #ifdef WAL_DEBUG static void xlog_outrec(StringInfo buf, XLogRecord *record); #endif @@ -490,7 +492,7 @@ static void pg_start_backup_callback(int code, Datum arg); static bool read_backup_label(XLogRecPtr *checkPointLoc, XLogRecPtr *minRecoveryLoc); static void rm_redo_error_callback(void *arg); -static int get_sync_bit(int method); +static int get_sync_bit(int method); /* @@ -1260,9 +1262,9 @@ XLogArchiveIsBusy(const char *xlog) return false; /* - * Check to see if the WAL file has been removed by checkpoint, - * which implies it has already been archived, and explains why we - * can't see a status file for it. + * Check to see if the WAL file has been removed by checkpoint, which + * implies it has already been archived, and explains why we can't see a + * status file for it. */ snprintf(archiveStatusPath, MAXPGPATH, XLOGDIR "/%s", xlog); if (stat(archiveStatusPath, &stat_buf) != 0 && @@ -1775,8 +1777,8 @@ XLogSetAsyncCommitLSN(XLogRecPtr asyncCommitLSN) * Advance minRecoveryPoint in control file. * * If we crash during recovery, we must reach this point again before the - * database is consistent. - * + * database is consistent. + * * If 'force' is true, 'lsn' argument is ignored. Otherwise, minRecoveryPoint * is is only updated if it's not already greater than or equal to 'lsn'. */ @@ -1802,7 +1804,7 @@ UpdateMinRecoveryPoint(XLogRecPtr lsn, bool force) { /* use volatile pointer to prevent code rearrangement */ volatile XLogCtlData *xlogctl = XLogCtl; - XLogRecPtr newMinRecoveryPoint; + XLogRecPtr newMinRecoveryPoint; /* * To avoid having to update the control file too often, we update it @@ -2567,7 +2569,7 @@ XLogFileClose(void) /* * WAL segment files will not be re-read in normal operation, so we advise - * the OS to release any cached pages. But do not do so if WAL archiving + * the OS to release any cached pages. But do not do so if WAL archiving * is active, because archiver process could use the cache to read the WAL * segment. Also, don't bother with it if we are using O_DIRECT, since * the kernel is presumably not caching in that case. @@ -2663,19 +2665,19 @@ RestoreArchivedFile(char *path, const char *xlogfname, /* * Calculate the archive file cutoff point for use during log shipping - * replication. All files earlier than this point can be deleted - * from the archive, though there is no requirement to do so. + * replication. All files earlier than this point can be deleted from the + * archive, though there is no requirement to do so. * * We initialise this with the filename of an InvalidXLogRecPtr, which - * will prevent the deletion of any WAL files from the archive - * because of the alphabetic sorting property of WAL filenames. + * will prevent the deletion of any WAL files from the archive because of + * the alphabetic sorting property of WAL filenames. * * Once we have successfully located the redo pointer of the checkpoint * from which we start recovery we never request a file prior to the redo - * pointer of the last restartpoint. When redo begins we know that we - * have successfully located it, so there is no need for additional - * status flags to signify the point when we can begin deleting WAL files - * from the archive. + * pointer of the last restartpoint. When redo begins we know that we have + * successfully located it, so there is no need for additional status + * flags to signify the point when we can begin deleting WAL files from + * the archive. */ if (InRedo) { @@ -2821,9 +2823,9 @@ RestoreArchivedFile(char *path, const char *xlogfname, * On SIGTERM, assume we have received a fast shutdown request, and exit * cleanly. It's pure chance whether we receive the SIGTERM first, or the * child process. If we receive it first, the signal handler will call - * proc_exit, otherwise we do it here. If we or the child process - * received SIGTERM for any other reason than a fast shutdown request, - * postmaster will perform an immediate shutdown when it sees us exiting + * proc_exit, otherwise we do it here. If we or the child process received + * SIGTERM for any other reason than a fast shutdown request, postmaster + * will perform an immediate shutdown when it sees us exiting * unexpectedly. * * Per the Single Unix Spec, shells report exit status > 128 when a called @@ -2871,19 +2873,19 @@ ExecuteRecoveryEndCommand(void) /* * Calculate the archive file cutoff point for use during log shipping - * replication. All files earlier than this point can be deleted - * from the archive, though there is no requirement to do so. + * replication. All files earlier than this point can be deleted from the + * archive, though there is no requirement to do so. * * We initialise this with the filename of an InvalidXLogRecPtr, which - * will prevent the deletion of any WAL files from the archive - * because of the alphabetic sorting property of WAL filenames. + * will prevent the deletion of any WAL files from the archive because of + * the alphabetic sorting property of WAL filenames. * * Once we have successfully located the redo pointer of the checkpoint * from which we start recovery we never request a file prior to the redo - * pointer of the last restartpoint. When redo begins we know that we - * have successfully located it, so there is no need for additional - * status flags to signify the point when we can begin deleting WAL files - * from the archive. + * pointer of the last restartpoint. When redo begins we know that we have + * successfully located it, so there is no need for additional status + * flags to signify the point when we can begin deleting WAL files from + * the archive. */ if (InRedo) { @@ -2948,14 +2950,14 @@ ExecuteRecoveryEndCommand(void) { /* * If the failure was due to any sort of signal, it's best to punt and - * abort recovery. See also detailed comments on signals in + * abort recovery. See also detailed comments on signals in * RestoreArchivedFile(). */ signaled = WIFSIGNALED(rc) || WEXITSTATUS(rc) > 125; ereport(signaled ? FATAL : WARNING, (errmsg("recovery_end_command \"%s\": return code %d", - xlogRecoveryEndCmd, rc))); + xlogRecoveryEndCmd, rc))); } } @@ -3101,12 +3103,12 @@ static void ValidateXLOGDirectoryStructure(void) { char path[MAXPGPATH]; - struct stat stat_buf; + struct stat stat_buf; /* Check for pg_xlog; if it doesn't exist, error out */ if (stat(XLOGDIR, &stat_buf) != 0 || !S_ISDIR(stat_buf.st_mode)) - ereport(FATAL, + ereport(FATAL, (errmsg("required WAL directory \"%s\" does not exist", XLOGDIR))); @@ -3116,7 +3118,7 @@ ValidateXLOGDirectoryStructure(void) { /* Check for weird cases where it exists but isn't a directory */ if (!S_ISDIR(stat_buf.st_mode)) - ereport(FATAL, + ereport(FATAL, (errmsg("required WAL directory \"%s\" does not exist", path))); } @@ -3125,7 +3127,7 @@ ValidateXLOGDirectoryStructure(void) ereport(LOG, (errmsg("creating missing WAL directory \"%s\"", path))); if (mkdir(path, 0700) < 0) - ereport(FATAL, + ereport(FATAL, (errmsg("could not create missing directory \"%s\": %m", path))); } @@ -3187,7 +3189,7 @@ CleanupBackupHistory(void) * ignoring them as already applied, but that's not a huge drawback. * * If 'cleanup' is true, a cleanup lock is used when restoring blocks. - * Otherwise, a normal exclusive lock is used. At the moment, that's just + * Otherwise, a normal exclusive lock is used. At the moment, that's just * pro forma, because there can't be any regular backends in the system * during recovery. The 'cleanup' argument applies to all backup blocks * in the WAL record, that suffices for now. @@ -4283,8 +4285,8 @@ ReadControlFile(void) ereport(FATAL, (errmsg("database files are incompatible with server"), errdetail("The database cluster was initialized with PG_CONTROL_VERSION %d (0x%08x)," - " but the server was compiled with PG_CONTROL_VERSION %d (0x%08x).", - ControlFile->pg_control_version, ControlFile->pg_control_version, + " but the server was compiled with PG_CONTROL_VERSION %d (0x%08x).", + ControlFile->pg_control_version, ControlFile->pg_control_version, PG_CONTROL_VERSION, PG_CONTROL_VERSION), errhint("This could be a problem of mismatched byte ordering. It looks like you need to initdb."))); @@ -4309,8 +4311,8 @@ ReadControlFile(void) /* * Do compatibility checking immediately. If the database isn't - * compatible with the backend executable, we want to abort before we - * can possibly do any damage. + * compatible with the backend executable, we want to abort before we can + * possibly do any damage. */ if (ControlFile->catalog_version_no != CATALOG_VERSION_NO) ereport(FATAL, @@ -4402,14 +4404,14 @@ ReadControlFile(void) ereport(FATAL, (errmsg("database files are incompatible with server"), errdetail("The database cluster was initialized without USE_FLOAT4_BYVAL" - " but the server was compiled with USE_FLOAT4_BYVAL."), + " but the server was compiled with USE_FLOAT4_BYVAL."), errhint("It looks like you need to recompile or initdb."))); #else if (ControlFile->float4ByVal != false) ereport(FATAL, (errmsg("database files are incompatible with server"), - errdetail("The database cluster was initialized with USE_FLOAT4_BYVAL" - " but the server was compiled without USE_FLOAT4_BYVAL."), + errdetail("The database cluster was initialized with USE_FLOAT4_BYVAL" + " but the server was compiled without USE_FLOAT4_BYVAL."), errhint("It looks like you need to recompile or initdb."))); #endif @@ -4418,14 +4420,14 @@ ReadControlFile(void) ereport(FATAL, (errmsg("database files are incompatible with server"), errdetail("The database cluster was initialized without USE_FLOAT8_BYVAL" - " but the server was compiled with USE_FLOAT8_BYVAL."), + " but the server was compiled with USE_FLOAT8_BYVAL."), errhint("It looks like you need to recompile or initdb."))); #else if (ControlFile->float8ByVal != false) ereport(FATAL, (errmsg("database files are incompatible with server"), - errdetail("The database cluster was initialized with USE_FLOAT8_BYVAL" - " but the server was compiled without USE_FLOAT8_BYVAL."), + errdetail("The database cluster was initialized with USE_FLOAT8_BYVAL" + " but the server was compiled without USE_FLOAT8_BYVAL."), errhint("It looks like you need to recompile or initdb."))); #endif } @@ -4848,9 +4850,9 @@ readRecoveryCommandFile(void) * does nothing if a recovery_target is not also set */ if (!parse_bool(tok2, &recoveryTargetInclusive)) - ereport(ERROR, - (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("parameter \"recovery_target_inclusive\" requires a Boolean value"))); + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("parameter \"recovery_target_inclusive\" requires a Boolean value"))); ereport(LOG, (errmsg("recovery_target_inclusive = %s", tok2))); } @@ -5204,8 +5206,8 @@ StartupXLOG(void) /* * Verify that pg_xlog and pg_xlog/archive_status exist. In cases where - * someone has performed a copy for PITR, these directories may have - * been excluded and need to be re-created. + * someone has performed a copy for PITR, these directories may have been + * excluded and need to be re-created. */ ValidateXLOGDirectoryStructure(); @@ -5437,6 +5439,7 @@ StartupXLOG(void) bool recoveryApply = true; bool reachedMinRecoveryPoint = false; ErrorContextCallback errcontext; + /* use volatile pointer to prevent code rearrangement */ volatile XLogCtlData *xlogctl = XLogCtl; @@ -5454,7 +5457,7 @@ StartupXLOG(void) else ereport(LOG, (errmsg("redo starts at %X/%X, consistency will be reached at %X/%X", - ReadRecPtr.xlogid, ReadRecPtr.xrecoff, + ReadRecPtr.xlogid, ReadRecPtr.xrecoff, minRecoveryPoint.xlogid, minRecoveryPoint.xrecoff))); /* @@ -5512,17 +5515,17 @@ StartupXLOG(void) proc_exit(1); /* - * Have we reached our safe starting point? If so, we can - * tell postmaster that the database is consistent now. + * Have we reached our safe starting point? If so, we can tell + * postmaster that the database is consistent now. */ - if (!reachedMinRecoveryPoint && - XLByteLE(minRecoveryPoint, EndRecPtr)) + if (!reachedMinRecoveryPoint && + XLByteLE(minRecoveryPoint, EndRecPtr)) { reachedMinRecoveryPoint = true; if (InArchiveRecovery) { ereport(LOG, - (errmsg("consistent recovery state reached"))); + (errmsg("consistent recovery state reached"))); if (IsUnderPostmaster) SendPostmasterSignal(PMSIGNAL_RECOVERY_CONSISTENT); } @@ -5554,9 +5557,8 @@ StartupXLOG(void) } /* - * Update shared replayEndRecPtr before replaying this - * record, so that XLogFlush will update minRecoveryPoint - * correctly. + * Update shared replayEndRecPtr before replaying this record, + * so that XLogFlush will update minRecoveryPoint correctly. */ SpinLockAcquire(&xlogctl->info_lck); xlogctl->replayEndRecPtr = EndRecPtr; @@ -5819,9 +5821,9 @@ bool RecoveryInProgress(void) { /* - * We check shared state each time only until we leave recovery mode. - * We can't re-enter recovery, so we rely on the local state variable - * after that. + * We check shared state each time only until we leave recovery mode. We + * can't re-enter recovery, so we rely on the local state variable after + * that. */ if (!LocalRecoveryInProgress) return false; @@ -6114,11 +6116,11 @@ ShutdownXLOG(int code, Datum arg) static void LogCheckpointStart(int flags, bool restartpoint) { - char *msg; + char *msg; /* - * XXX: This is hopelessly untranslatable. We could call gettext_noop - * for the main message, but what about all the flags? + * XXX: This is hopelessly untranslatable. We could call gettext_noop for + * the main message, but what about all the flags? */ if (restartpoint) msg = "restartpoint starting:%s%s%s%s%s%s"; @@ -6561,7 +6563,7 @@ CheckPointGuts(XLogRecPtr checkPointRedo, int flags) /* * This is used during WAL recovery to establish a point from which recovery - * can roll forward without replaying the entire recovery log. This function + * can roll forward without replaying the entire recovery log. This function * is called each time a checkpoint record is read from XLOG. It is stored * in shared memory, so that it can be used as a restartpoint later on. */ @@ -6569,6 +6571,7 @@ static void RecoveryRestartPoint(const CheckPoint *checkPoint) { int rmid; + /* use volatile pointer to prevent code rearrangement */ volatile XLogCtlData *xlogctl = XLogCtl; @@ -6592,8 +6595,8 @@ RecoveryRestartPoint(const CheckPoint *checkPoint) } /* - * Copy the checkpoint record to shared memory, so that bgwriter can - * use it the next time it wants to perform a restartpoint. + * Copy the checkpoint record to shared memory, so that bgwriter can use + * it the next time it wants to perform a restartpoint. */ SpinLockAcquire(&xlogctl->info_lck); XLogCtl->lastCheckPointRecPtr = ReadRecPtr; @@ -6613,8 +6616,9 @@ RecoveryRestartPoint(const CheckPoint *checkPoint) bool CreateRestartPoint(int flags) { - XLogRecPtr lastCheckPointRecPtr; - CheckPoint lastCheckPoint; + XLogRecPtr lastCheckPointRecPtr; + CheckPoint lastCheckPoint; + /* use volatile pointer to prevent code rearrangement */ volatile XLogCtlData *xlogctl = XLogCtl; @@ -6630,14 +6634,14 @@ CreateRestartPoint(int flags) memcpy(&lastCheckPoint, &XLogCtl->lastCheckPoint, sizeof(CheckPoint)); SpinLockRelease(&xlogctl->info_lck); - /* + /* * Check that we're still in recovery mode. It's ok if we exit recovery * mode after this check, the restart point is valid anyway. */ if (!RecoveryInProgress()) { ereport(DEBUG2, - (errmsg("skipping restartpoint, recovery has already ended"))); + (errmsg("skipping restartpoint, recovery has already ended"))); LWLockRelease(CheckpointLock); return false; } @@ -6653,16 +6657,17 @@ CreateRestartPoint(int flags) * possible in case of immediate shutdown, though. * * We don't explicitly advance minRecoveryPoint when we do create a - * restartpoint. It's assumed that flushing the buffers will do that - * as a side-effect. + * restartpoint. It's assumed that flushing the buffers will do that as a + * side-effect. */ if (XLogRecPtrIsInvalid(lastCheckPointRecPtr) || XLByteLE(lastCheckPoint.redo, ControlFile->checkPointCopy.redo)) { - XLogRecPtr InvalidXLogRecPtr = {0, 0}; + XLogRecPtr InvalidXLogRecPtr = {0, 0}; + ereport(DEBUG2, (errmsg("skipping restartpoint, already performed at %X/%X", - lastCheckPoint.redo.xlogid, lastCheckPoint.redo.xrecoff))); + lastCheckPoint.redo.xlogid, lastCheckPoint.redo.xrecoff))); UpdateMinRecoveryPoint(InvalidXLogRecPtr, true); LWLockRelease(CheckpointLock); @@ -6694,9 +6699,9 @@ CreateRestartPoint(int flags) LWLockRelease(ControlFileLock); /* - * Currently, there is no need to truncate pg_subtrans during recovery. - * If we did do that, we will need to have called StartupSUBTRANS() - * already and then TruncateSUBTRANS() would go here. + * Currently, there is no need to truncate pg_subtrans during recovery. If + * we did do that, we will need to have called StartupSUBTRANS() already + * and then TruncateSUBTRANS() would go here. */ /* All real work is done, but log before releasing lock. */ @@ -6705,12 +6710,12 @@ CreateRestartPoint(int flags) ereport((log_checkpoints ? LOG : DEBUG2), (errmsg("recovery restart point at %X/%X", - lastCheckPoint.redo.xlogid, lastCheckPoint.redo.xrecoff))); + lastCheckPoint.redo.xlogid, lastCheckPoint.redo.xrecoff))); if (recoveryLastXTime) ereport((log_checkpoints ? LOG : DEBUG2), - (errmsg("last completed transaction was at log time %s", - timestamptz_to_str(recoveryLastXTime)))); + (errmsg("last completed transaction was at log time %s", + timestamptz_to_str(recoveryLastXTime)))); LWLockRelease(CheckpointLock); return true; @@ -6828,9 +6833,9 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record) (int) checkPoint.ThisTimeLineID)) ereport(PANIC, (errmsg("unexpected timeline ID %u (after %u) in checkpoint record", - checkPoint.ThisTimeLineID, ThisTimeLineID))); - /* Following WAL records should be run with new TLI */ - ThisTimeLineID = checkPoint.ThisTimeLineID; + checkPoint.ThisTimeLineID, ThisTimeLineID))); + /* Following WAL records should be run with new TLI */ + ThisTimeLineID = checkPoint.ThisTimeLineID; } RecoveryRestartPoint(&checkPoint); @@ -6948,12 +6953,12 @@ get_sync_bit(int method) switch (method) { - /* - * enum values for all sync options are defined even if they are not - * supported on the current platform. But if not, they are not - * included in the enum option array, and therefore will never be seen - * here. - */ + /* + * enum values for all sync options are defined even if they are + * not supported on the current platform. But if not, they are + * not included in the enum option array, and therefore will never + * be seen here. + */ case SYNC_METHOD_FSYNC: case SYNC_METHOD_FSYNC_WRITETHROUGH: case SYNC_METHOD_FDATASYNC: @@ -6969,7 +6974,7 @@ get_sync_bit(int method) default: /* can't happen (unless we are out of sync with option array) */ elog(ERROR, "unrecognized wal_sync_method: %d", method); - return 0; /* silence warning */ + return 0; /* silence warning */ } } @@ -7146,8 +7151,8 @@ pg_start_backup(PG_FUNCTION_ARGS) * have different checkpoint positions and hence different history * file names, even if nothing happened in between. * - * We use CHECKPOINT_IMMEDIATE only if requested by user (via - * passing fast = true). Otherwise this can take awhile. + * We use CHECKPOINT_IMMEDIATE only if requested by user (via passing + * fast = true). Otherwise this can take awhile. */ RequestCheckpoint(CHECKPOINT_FORCE | CHECKPOINT_WAIT | (fast ? CHECKPOINT_IMMEDIATE : 0)); @@ -7376,9 +7381,9 @@ pg_stop_backup(PG_FUNCTION_ARGS) * property of the WAL files ensures any earlier WAL files are safely * archived as well. * - * We wait forever, since archive_command is supposed to work and - * we assume the admin wanted his backup to work completely. If you - * don't wish to wait, you can set statement_timeout. + * We wait forever, since archive_command is supposed to work and we + * assume the admin wanted his backup to work completely. If you don't + * wish to wait, you can set statement_timeout. */ XLByteToPrevSeg(stoppoint, _logId, _logSeg); XLogFileName(lastxlogfilename, ThisTimeLineID, _logId, _logSeg); @@ -7399,7 +7404,7 @@ pg_stop_backup(PG_FUNCTION_ARGS) if (++waits >= seconds_before_warning) { - seconds_before_warning *= 2; /* This wraps in >10 years... */ + seconds_before_warning *= 2; /* This wraps in >10 years... */ ereport(WARNING, (errmsg("pg_stop_backup still waiting for archive to complete (%d seconds elapsed)", waits))); @@ -7775,7 +7780,7 @@ CancelBackup(void) ereport(LOG, (errmsg("online backup mode cancelled"), errdetail("\"%s\" was renamed to \"%s\".", - BACKUP_LABEL_FILE, BACKUP_LABEL_OLD))); + BACKUP_LABEL_FILE, BACKUP_LABEL_OLD))); } else { @@ -7783,12 +7788,12 @@ CancelBackup(void) (errcode_for_file_access(), errmsg("online backup mode was not cancelled"), errdetail("Could not rename \"%s\" to \"%s\": %m.", - BACKUP_LABEL_FILE, BACKUP_LABEL_OLD))); + BACKUP_LABEL_FILE, BACKUP_LABEL_OLD))); } } /* ------------------------------------------------------ - * Startup Process main entry point and signal handlers + * Startup Process main entry point and signal handlers * ------------------------------------------------------ */ @@ -7818,8 +7823,8 @@ startupproc_quickdie(SIGNAL_ARGS) * system reset cycle if some idiot DBA sends a manual SIGQUIT to a random * backend. This is necessary precisely because we don't clean up our * shared memory state. (The "dead man switch" mechanism in pmsignal.c - * should ensure the postmaster sees this as a crash, too, but no harm - * in being doubly sure.) + * should ensure the postmaster sees this as a crash, too, but no harm in + * being doubly sure.) */ exit(2); } @@ -7858,10 +7863,10 @@ StartupProcessMain(void) /* * Properly accept or ignore signals the postmaster might send us */ - pqsignal(SIGHUP, StartupProcSigHupHandler); /* reload config file */ - pqsignal(SIGINT, SIG_IGN); /* ignore query cancel */ - pqsignal(SIGTERM, StartupProcShutdownHandler); /* request shutdown */ - pqsignal(SIGQUIT, startupproc_quickdie); /* hard crash time */ + pqsignal(SIGHUP, StartupProcSigHupHandler); /* reload config file */ + pqsignal(SIGINT, SIG_IGN); /* ignore query cancel */ + pqsignal(SIGTERM, StartupProcShutdownHandler); /* request shutdown */ + pqsignal(SIGQUIT, startupproc_quickdie); /* hard crash time */ pqsignal(SIGALRM, SIG_IGN); pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGUSR1, SIG_IGN); @@ -7881,13 +7886,13 @@ StartupProcessMain(void) */ PG_SETMASK(&UnBlockSig); - StartupXLOG(); + StartupXLOG(); BuildFlatFiles(false); /* - * Exit normally. Exit code 0 tells postmaster that we completed - * recovery successfully. + * Exit normally. Exit code 0 tells postmaster that we completed recovery + * successfully. */ proc_exit(0); } diff --git a/src/backend/access/transam/xlogutils.c b/src/backend/access/transam/xlogutils.c index 458af10ca19..8c6e339bf4c 100644 --- a/src/backend/access/transam/xlogutils.c +++ b/src/backend/access/transam/xlogutils.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlogutils.c,v 1.67 2009/01/20 18:59:37 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlogutils.c,v 1.68 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -68,7 +68,8 @@ log_invalid_page(RelFileNode node, ForkNumber forkno, BlockNumber blkno, */ if (log_min_messages <= DEBUG1 || client_min_messages <= DEBUG1) { - char *path = relpath(node, forkno); + char *path = relpath(node, forkno); + if (present) elog(DEBUG1, "page %u of relation %s is uninitialized", blkno, path); @@ -132,7 +133,8 @@ forget_invalid_pages(RelFileNode node, ForkNumber forkno, BlockNumber minblkno) { if (log_min_messages <= DEBUG2 || client_min_messages <= DEBUG2) { - char *path = relpath(hentry->key.node, forkno); + char *path = relpath(hentry->key.node, forkno); + elog(DEBUG2, "page %u of relation %s has been dropped", hentry->key.blkno, path); pfree(path); @@ -164,7 +166,8 @@ forget_invalid_pages_db(Oid dbid) { if (log_min_messages <= DEBUG2 || client_min_messages <= DEBUG2) { - char *path = relpath(hentry->key.node, hentry->key.forkno); + char *path = relpath(hentry->key.node, hentry->key.forkno); + elog(DEBUG2, "page %u of relation %s has been dropped", hentry->key.blkno, path); pfree(path); @@ -197,7 +200,8 @@ XLogCheckInvalidPages(void) */ while ((hentry = (xl_invalid_page *) hash_seq_search(&status)) != NULL) { - char *path = relpath(hentry->key.node, hentry->key.forkno); + char *path = relpath(hentry->key.node, hentry->key.forkno); + if (hentry->present) elog(WARNING, "page %u of relation %s was uninitialized", hentry->key.blkno, path); @@ -237,7 +241,8 @@ XLogCheckInvalidPages(void) Buffer XLogReadBuffer(RelFileNode rnode, BlockNumber blkno, bool init) { - Buffer buf; + Buffer buf; + buf = XLogReadBufferExtended(rnode, MAIN_FORKNUM, blkno, init ? RBM_ZERO : RBM_NORMAL); if (BufferIsValid(buf)) @@ -344,8 +349,8 @@ XLogReadBufferExtended(RelFileNode rnode, ForkNumber forknum, */ typedef struct { - RelationData reldata; /* Note: this must be first */ - FormData_pg_class pgc; + RelationData reldata; /* Note: this must be first */ + FormData_pg_class pgc; } FakeRelCacheEntryData; typedef FakeRelCacheEntryData *FakeRelCacheEntry; @@ -354,10 +359,10 @@ typedef FakeRelCacheEntryData *FakeRelCacheEntry; * Create a fake relation cache entry for a physical relation * * It's often convenient to use the same functions in XLOG replay as in the - * main codepath, but those functions typically work with a relcache entry. - * We don't have a working relation cache during XLOG replay, but this - * function can be used to create a fake relcache entry instead. Only the - * fields related to physical storage, like rd_rel, are initialized, so the + * main codepath, but those functions typically work with a relcache entry. + * We don't have a working relation cache during XLOG replay, but this + * function can be used to create a fake relcache entry instead. Only the + * fields related to physical storage, like rd_rel, are initialized, so the * fake entry is only usable in low-level operations like ReadBuffer(). * * Caller must free the returned entry with FreeFakeRelcacheEntry(). @@ -366,7 +371,7 @@ Relation CreateFakeRelcacheEntry(RelFileNode rnode) { FakeRelCacheEntry fakeentry; - Relation rel; + Relation rel; /* Allocate the Relation struct and all related space in one block. */ fakeentry = palloc0(sizeof(FakeRelCacheEntryData)); @@ -381,9 +386,9 @@ CreateFakeRelcacheEntry(RelFileNode rnode) /* * We set up the lockRelId in case anything tries to lock the dummy * relation. Note that this is fairly bogus since relNode may be - * different from the relation's OID. It shouldn't really matter - * though, since we are presumably running by ourselves and can't have - * any lock conflicts ... + * different from the relation's OID. It shouldn't really matter though, + * since we are presumably running by ourselves and can't have any lock + * conflicts ... */ rel->rd_lockInfo.lockRelId.dbId = rnode.dbNode; rel->rd_lockInfo.lockRelId.relId = rnode.relNode; @@ -427,10 +432,9 @@ XLogDropDatabase(Oid dbid) { /* * This is unnecessarily heavy-handed, as it will close SMgrRelation - * objects for other databases as well. DROP DATABASE occurs seldom - * enough that it's not worth introducing a variant of smgrclose for - * just this purpose. XXX: Or should we rather leave the smgr entries - * dangling? + * objects for other databases as well. DROP DATABASE occurs seldom enough + * that it's not worth introducing a variant of smgrclose for just this + * purpose. XXX: Or should we rather leave the smgr entries dangling? */ smgrcloseall(); diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index 2924dddf625..bb15e78d1c9 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.153 2009/02/06 21:15:11 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/aclchk.c,v 1.154 2009/06/11 14:48:54 momjian Exp $ * * NOTES * See acl.h. @@ -62,13 +62,13 @@ static void ExecGrant_Tablespace(InternalGrant *grantStmt); static List *objectNamesToOids(GrantObjectType objtype, List *objnames); static void expand_col_privileges(List *colnames, Oid table_oid, - AclMode this_privileges, - AclMode *col_privileges, - int num_col_privileges); + AclMode this_privileges, + AclMode *col_privileges, + int num_col_privileges); static void expand_all_col_privileges(Oid table_oid, Form_pg_class classForm, - AclMode this_privileges, - AclMode *col_privileges, - int num_col_privileges); + AclMode this_privileges, + AclMode *col_privileges, + int num_col_privileges); static AclMode string_to_privilege(const char *privname); static const char *privilege_to_string(AclMode privilege); static AclMode restrict_and_check_grant(bool is_grant, AclMode avail_goptions, @@ -77,7 +77,7 @@ static AclMode restrict_and_check_grant(bool is_grant, AclMode avail_goptions, AclObjectKind objkind, const char *objname, AttrNumber att_number, const char *colname); static AclMode pg_aclmask(AclObjectKind objkind, Oid table_oid, AttrNumber attnum, - Oid roleid, AclMode mask, AclMaskHow how); + Oid roleid, AclMode mask, AclMaskHow how); #ifdef ACLDEBUG @@ -127,7 +127,7 @@ merge_acl_with_grant(Acl *old_acl, bool is_grant, AclItem aclitem; Acl *newer_acl; - aclitem.ai_grantee = lfirst_oid(j); + aclitem. ai_grantee = lfirst_oid(j); /* * Grant options can only be granted to individual roles, not PUBLIC. @@ -140,7 +140,7 @@ merge_acl_with_grant(Acl *old_acl, bool is_grant, (errcode(ERRCODE_INVALID_GRANT_OPERATION), errmsg("grant options can only be granted to roles"))); - aclitem.ai_grantor = grantorId; + aclitem. ai_grantor = grantorId; /* * The asymmetry in the conditions here comes from the spec. In @@ -314,8 +314,8 @@ ExecuteGrantStmt(GrantStmt *stmt) } /* - * Convert stmt->privileges, a list of AccessPriv nodes, into an - * AclMode bitmask. Note: objtype can't be ACL_OBJECT_COLUMN. + * Convert stmt->privileges, a list of AccessPriv nodes, into an AclMode + * bitmask. Note: objtype can't be ACL_OBJECT_COLUMN. */ switch (stmt->objtype) { @@ -389,8 +389,8 @@ ExecuteGrantStmt(GrantStmt *stmt) AclMode priv; /* - * If it's a column-level specification, we just set it aside - * in col_privs for the moment; but insist it's for a relation. + * If it's a column-level specification, we just set it aside in + * col_privs for the moment; but insist it's for a relation. */ if (privnode->cols) { @@ -402,7 +402,7 @@ ExecuteGrantStmt(GrantStmt *stmt) continue; } - if (privnode->priv_name == NULL) /* parser mistake? */ + if (privnode->priv_name == NULL) /* parser mistake? */ elog(ERROR, "AccessPriv node must specify privilege or columns"); priv = string_to_privilege(privnode->priv_name); @@ -421,7 +421,7 @@ ExecuteGrantStmt(GrantStmt *stmt) /* * ExecGrantStmt_oids * - * "Internal" entrypoint for granting and revoking privileges. This is + * "Internal" entrypoint for granting and revoking privileges. This is * exported for pg_shdepend.c to use in revoking privileges when dropping * a role. */ @@ -586,8 +586,8 @@ objectNamesToOids(GrantObjectType objtype, List *objnames) case ACL_OBJECT_FDW: foreach(cell, objnames) { - char *fdwname = strVal(lfirst(cell)); - Oid fdwid = GetForeignDataWrapperOidByName(fdwname, false); + char *fdwname = strVal(lfirst(cell)); + Oid fdwid = GetForeignDataWrapperOidByName(fdwname, false); objects = lappend_oid(objects, fdwid); } @@ -595,8 +595,8 @@ objectNamesToOids(GrantObjectType objtype, List *objnames) case ACL_OBJECT_FOREIGN_SERVER: foreach(cell, objnames) { - char *srvname = strVal(lfirst(cell)); - Oid srvid = GetForeignServerOidByName(srvname, false); + char *srvname = strVal(lfirst(cell)); + Oid srvid = GetForeignServerOidByName(srvname, false); objects = lappend_oid(objects, srvid); } @@ -637,7 +637,7 @@ expand_col_privileges(List *colnames, Oid table_oid, colname, get_rel_name(table_oid)))); attnum -= FirstLowInvalidHeapAttributeNumber; if (attnum <= 0 || attnum >= num_col_privileges) - elog(ERROR, "column number out of range"); /* safety check */ + elog(ERROR, "column number out of range"); /* safety check */ col_privileges[attnum] |= this_privileges; } } @@ -705,24 +705,24 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname, AttrNumber attnum, Oid ownerId, AclMode col_privileges, Relation attRelation, const Acl *old_rel_acl) { - HeapTuple attr_tuple; - Form_pg_attribute pg_attribute_tuple; - Acl *old_acl; - Acl *new_acl; - Acl *merged_acl; - Datum aclDatum; - bool isNull; - Oid grantorId; - AclMode avail_goptions; - bool need_update; - HeapTuple newtuple; - Datum values[Natts_pg_attribute]; - bool nulls[Natts_pg_attribute]; - bool replaces[Natts_pg_attribute]; - int noldmembers; - int nnewmembers; - Oid *oldmembers; - Oid *newmembers; + HeapTuple attr_tuple; + Form_pg_attribute pg_attribute_tuple; + Acl *old_acl; + Acl *new_acl; + Acl *merged_acl; + Datum aclDatum; + bool isNull; + Oid grantorId; + AclMode avail_goptions; + bool need_update; + HeapTuple newtuple; + Datum values[Natts_pg_attribute]; + bool nulls[Natts_pg_attribute]; + bool replaces[Natts_pg_attribute]; + int noldmembers; + int nnewmembers; + Oid *oldmembers; + Oid *newmembers; attr_tuple = SearchSysCache(ATTNUM, ObjectIdGetDatum(relOid), @@ -734,8 +734,8 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname, pg_attribute_tuple = (Form_pg_attribute) GETSTRUCT(attr_tuple); /* - * Get working copy of existing ACL. If there's no ACL, - * substitute the proper default. + * Get working copy of existing ACL. If there's no ACL, substitute the + * proper default. */ aclDatum = SysCacheGetAttr(ATTNUM, attr_tuple, Anum_pg_attribute_attacl, &isNull); @@ -747,8 +747,8 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname, /* * In select_best_grantor we should consider existing table-level ACL bits * as well as the per-column ACL. Build a new ACL that is their - * concatenation. (This is a bit cheap and dirty compared to merging - * them properly with no duplications, but it's all we need here.) + * concatenation. (This is a bit cheap and dirty compared to merging them + * properly with no duplications, but it's all we need here.) */ merged_acl = aclconcat(old_rel_acl, old_acl); @@ -760,12 +760,12 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname, pfree(merged_acl); /* - * Restrict the privileges to what we can actually grant, and emit - * the standards-mandated warning and error messages. Note: we don't - * track whether the user actually used the ALL PRIVILEGES(columns) - * syntax for each column; we just approximate it by whether all the - * possible privileges are specified now. Since the all_privs flag only - * determines whether a warning is issued, this seems close enough. + * Restrict the privileges to what we can actually grant, and emit the + * standards-mandated warning and error messages. Note: we don't track + * whether the user actually used the ALL PRIVILEGES(columns) syntax for + * each column; we just approximate it by whether all the possible + * privileges are specified now. Since the all_privs flag only determines + * whether a warning is issued, this seems close enough. */ col_privileges = restrict_and_check_grant(istmt->is_grant, avail_goptions, @@ -778,8 +778,8 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname, /* * Generate new ACL. * - * We need the members of both old and new ACLs so we can correct - * the shared dependency information. + * We need the members of both old and new ACLs so we can correct the + * shared dependency information. */ noldmembers = aclmembers(old_acl, &oldmembers); @@ -797,11 +797,11 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname, MemSet(replaces, false, sizeof(replaces)); /* - * If the updated ACL is empty, we can set attacl to null, and maybe - * even avoid an update of the pg_attribute row. This is worth testing - * because we'll come through here multiple times for any relation-level - * REVOKE, even if there were never any column GRANTs. Note we are - * assuming that the "default" ACL state for columns is empty. + * If the updated ACL is empty, we can set attacl to null, and maybe even + * avoid an update of the pg_attribute row. This is worth testing because + * we'll come through here multiple times for any relation-level REVOKE, + * even if there were never any column GRANTs. Note we are assuming that + * the "default" ACL state for columns is empty. */ if (ACL_NUM(new_acl) > 0) { @@ -857,7 +857,7 @@ ExecGrant_Relation(InternalGrant *istmt) Form_pg_class pg_class_tuple; bool isNull; AclMode this_privileges; - AclMode *col_privileges; + AclMode *col_privileges; int num_col_privileges; bool have_col_privileges; Acl *old_acl; @@ -954,7 +954,7 @@ ExecGrant_Relation(InternalGrant *istmt) /* * Set up array in which we'll accumulate any column privilege bits - * that need modification. The array is indexed such that entry [0] + * that need modification. The array is indexed such that entry [0] * corresponds to FirstLowInvalidHeapAttributeNumber. */ num_col_privileges = pg_class_tuple->relnatts - FirstLowInvalidHeapAttributeNumber + 1; @@ -1025,7 +1025,7 @@ ExecGrant_Relation(InternalGrant *istmt) restrict_and_check_grant(istmt->is_grant, avail_goptions, istmt->all_privs, this_privileges, relOid, grantorId, - pg_class_tuple->relkind == RELKIND_SEQUENCE + pg_class_tuple->relkind == RELKIND_SEQUENCE ? ACL_KIND_SEQUENCE : ACL_KIND_CLASS, NameStr(pg_class_tuple->relname), 0, NULL); @@ -1081,7 +1081,7 @@ ExecGrant_Relation(InternalGrant *istmt) */ foreach(cell_colprivs, istmt->col_privs) { - AccessPriv *col_privs = (AccessPriv *) lfirst(cell_colprivs); + AccessPriv *col_privs = (AccessPriv *) lfirst(cell_colprivs); if (col_privs->priv_name == NULL) this_privileges = ACL_ALL_RIGHTS_COLUMN; @@ -1099,8 +1099,8 @@ ExecGrant_Relation(InternalGrant *istmt) { /* * The only column privilege allowed on sequences is SELECT. - * This is a warning not error because we do it that way - * for relation-level privileges. + * This is a warning not error because we do it that way for + * relation-level privileges. */ ereport(WARNING, (errcode(ERRCODE_INVALID_GRANT_OPERATION), @@ -1119,7 +1119,7 @@ ExecGrant_Relation(InternalGrant *istmt) if (have_col_privileges) { - AttrNumber i; + AttrNumber i; for (i = 0; i < num_col_privileges; i++) { @@ -1385,7 +1385,8 @@ ExecGrant_Fdw(InternalGrant *istmt) heap_close(relation, RowExclusiveLock); } -static void ExecGrant_ForeignServer(InternalGrant *istmt) +static void +ExecGrant_ForeignServer(InternalGrant *istmt) { Relation relation; ListCell *cell; @@ -1450,7 +1451,7 @@ static void ExecGrant_ForeignServer(InternalGrant *istmt) this_privileges = restrict_and_check_grant(istmt->is_grant, avail_goptions, istmt->all_privs, istmt->privileges, - srvid, grantorId, ACL_KIND_FOREIGN_SERVER, + srvid, grantorId, ACL_KIND_FOREIGN_SERVER, NameStr(pg_server_tuple->srvname), 0, NULL); @@ -2274,7 +2275,7 @@ pg_aclmask(AclObjectKind objkind, Oid table_oid, AttrNumber attnum, Oid roleid, * * Note: this considers only privileges granted specifically on the column. * It is caller's responsibility to take relation-level privileges into account - * as appropriate. (For the same reason, we have no special case for + * as appropriate. (For the same reason, we have no special case for * superuser-ness here.) */ AclMode @@ -2316,9 +2317,9 @@ pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, Oid roleid, &isNull); /* - * Here we hard-wire knowledge that the default ACL for a column - * grants no privileges, so that we can fall out quickly in the - * very common case where attacl is null. + * Here we hard-wire knowledge that the default ACL for a column grants no + * privileges, so that we can fall out quickly in the very common case + * where attacl is null. */ if (isNull) { @@ -2328,11 +2329,11 @@ pg_attribute_aclmask(Oid table_oid, AttrNumber attnum, Oid roleid, /* * Must get the relation's ownerId from pg_class. Since we already found - * a pg_attribute entry, the only likely reason for this to fail is that - * a concurrent DROP of the relation committed since then (which could - * only happen if we don't have lock on the relation). We prefer to - * report "no privileges" rather than failing in such a case, so as to - * avoid unwanted failures in has_column_privilege() tests. + * a pg_attribute entry, the only likely reason for this to fail is that a + * concurrent DROP of the relation committed since then (which could only + * happen if we don't have lock on the relation). We prefer to report "no + * privileges" rather than failing in such a case, so as to avoid unwanted + * failures in has_column_privilege() tests. */ classTuple = SearchSysCache(RELOID, ObjectIdGetDatum(table_oid), @@ -2804,7 +2805,7 @@ pg_foreign_data_wrapper_aclmask(Oid fdw_oid, Oid roleid, 0, 0, 0); if (!HeapTupleIsValid(tuple)) ereport(ERROR, - (errmsg("foreign-data wrapper with OID %u does not exist", + (errmsg("foreign-data wrapper with OID %u does not exist", fdw_oid))); fdwForm = (Form_pg_foreign_data_wrapper) GETSTRUCT(tuple); @@ -2844,7 +2845,7 @@ pg_foreign_data_wrapper_aclmask(Oid fdw_oid, Oid roleid, */ AclMode pg_foreign_server_aclmask(Oid srv_oid, Oid roleid, - AclMode mask, AclMaskHow how) + AclMode mask, AclMaskHow how) { AclMode result; HeapTuple tuple; @@ -2867,7 +2868,7 @@ pg_foreign_server_aclmask(Oid srv_oid, Oid roleid, 0, 0, 0); if (!HeapTupleIsValid(tuple)) ereport(ERROR, - (errmsg("foreign server with OID %u does not exist", + (errmsg("foreign server with OID %u does not exist", srv_oid))); srvForm = (Form_pg_foreign_server) GETSTRUCT(tuple); @@ -2944,16 +2945,16 @@ AclResult pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, AclMode mode, AclMaskHow how) { - AclResult result; - HeapTuple classTuple; - Form_pg_class classForm; - AttrNumber nattrs; - AttrNumber curr_att; + AclResult result; + HeapTuple classTuple; + Form_pg_class classForm; + AttrNumber nattrs; + AttrNumber curr_att; /* * Must fetch pg_class row to check number of attributes. As in - * pg_attribute_aclmask, we prefer to return "no privileges" instead - * of throwing an error if we get any unexpected lookup errors. + * pg_attribute_aclmask, we prefer to return "no privileges" instead of + * throwing an error if we get any unexpected lookup errors. */ classTuple = SearchSysCache(RELOID, ObjectIdGetDatum(table_oid), @@ -2967,8 +2968,8 @@ pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, AclMode mode, ReleaseSysCache(classTuple); /* - * Initialize result in case there are no non-dropped columns. We want - * to report failure in such cases for either value of 'how'. + * Initialize result in case there are no non-dropped columns. We want to + * report failure in such cases for either value of 'how'. */ result = ACLCHECK_NO_PRIV; @@ -2993,8 +2994,8 @@ pg_attribute_aclcheck_all(Oid table_oid, Oid roleid, AclMode mode, /* * Here we hard-wire knowledge that the default ACL for a column - * grants no privileges, so that we can fall out quickly in the - * very common case where attacl is null. + * grants no privileges, so that we can fall out quickly in the very + * common case where attacl is null. */ if (heap_attisnull(attTuple, Anum_pg_attribute_attacl)) attmask = 0; @@ -3466,8 +3467,8 @@ pg_foreign_server_ownercheck(Oid srv_oid, Oid roleid) if (!HeapTupleIsValid(tuple)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign server with OID %u does not exist", - srv_oid))); + errmsg("foreign server with OID %u does not exist", + srv_oid))); ownerId = ((Form_pg_foreign_server) GETSTRUCT(tuple))->srvowner; diff --git a/src/backend/catalog/catalog.c b/src/backend/catalog/catalog.c index a4a527f963d..42371d51373 100644 --- a/src/backend/catalog/catalog.c +++ b/src/backend/catalog/catalog.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/catalog.c,v 1.82 2009/03/25 14:11:48 petere Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/catalog.c,v 1.83 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -42,8 +42,8 @@ #include "utils/tqual.h" -#define OIDCHARS 10 /* max chars printed by %u */ -#define FORKNAMECHARS 4 /* max chars for a fork name */ +#define OIDCHARS 10 /* max chars printed by %u */ +#define FORKNAMECHARS 4 /* max chars for a fork name */ /* * Lookup table of fork name by fork number. @@ -53,9 +53,9 @@ * up-to-date. */ const char *forkNames[] = { - "main", /* MAIN_FORKNUM */ - "fsm", /* FSM_FORKNUM */ - "vm" /* VISIBILITYMAP_FORKNUM */ + "main", /* MAIN_FORKNUM */ + "fsm", /* FSM_FORKNUM */ + "vm" /* VISIBILITYMAP_FORKNUM */ }; /* @@ -64,7 +64,7 @@ const char *forkNames[] = { ForkNumber forkname_to_number(char *forkName) { - ForkNumber forkNum; + ForkNumber forkNum; for (forkNum = 0; forkNum <= MAX_FORKNUM; forkNum++) if (strcmp(forkNames[forkNum], forkName) == 0) @@ -74,7 +74,7 @@ forkname_to_number(char *forkName) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid fork name"), errhint("Valid fork names are \"main\", \"fsm\", and \"vm\"."))); - return InvalidForkNumber; /* keep compiler quiet */ + return InvalidForkNumber; /* keep compiler quiet */ } /* @@ -407,7 +407,7 @@ GetNewOidWithIndex(Relation relation, Oid indexId, AttrNumber oidcolumn) { Oid newOid; SnapshotData SnapshotDirty; - SysScanDesc scan; + SysScanDesc scan; ScanKeyData key; bool collides; diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index 377ae8b712b..8181cae64a5 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.88 2009/06/04 18:33:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.89 2009/06/11 14:48:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -94,7 +94,7 @@ typedef struct struct ObjectAddresses { ObjectAddress *refs; /* => palloc'd array */ - ObjectAddressExtra *extras; /* => palloc'd array, or NULL if not used */ + ObjectAddressExtra *extras; /* => palloc'd array, or NULL if not used */ int numrefs; /* current number of references */ int maxrefs; /* current size of palloc'd array(s) */ }; @@ -104,9 +104,9 @@ struct ObjectAddresses /* threaded list of ObjectAddresses, for recursion detection */ typedef struct ObjectAddressStack { - const ObjectAddress *object; /* object being visited */ + const ObjectAddress *object; /* object being visited */ int flags; /* its current flag bits */ - struct ObjectAddressStack *next; /* next outer stack level */ + struct ObjectAddressStack *next; /* next outer stack level */ } ObjectAddressStack; /* for find_expr_references_walker */ @@ -171,8 +171,8 @@ static void add_exact_object_address_extra(const ObjectAddress *object, const ObjectAddressExtra *extra, ObjectAddresses *addrs); static bool object_address_present_add_flags(const ObjectAddress *object, - int flags, - ObjectAddresses *addrs); + int flags, + ObjectAddresses *addrs); static void getRelationDescription(StringInfo buffer, Oid relid); static void getOpFamilyDescription(StringInfo buffer, Oid opfid); @@ -204,7 +204,7 @@ performDeletion(const ObjectAddress *object, depRel = heap_open(DependRelationId, RowExclusiveLock); /* - * Acquire deletion lock on the target object. (Ideally the caller has + * Acquire deletion lock on the target object. (Ideally the caller has * done this already, but many places are sloppy about it.) */ AcquireDeletionLock(object); @@ -276,10 +276,10 @@ performMultipleDeletions(const ObjectAddresses *objects, /* * Construct a list of objects to delete (ie, the given objects plus * everything directly or indirectly dependent on them). Note that - * because we pass the whole objects list as pendingObjects context, - * we won't get a failure from trying to delete an object that is - * internally dependent on another one in the list; we'll just skip - * that object and delete it when we reach its owner. + * because we pass the whole objects list as pendingObjects context, we + * won't get a failure from trying to delete an object that is internally + * dependent on another one in the list; we'll just skip that object and + * delete it when we reach its owner. */ targetObjects = new_object_addresses(); @@ -295,7 +295,7 @@ performMultipleDeletions(const ObjectAddresses *objects, findDependentObjects(thisobj, DEPFLAG_ORIGINAL, - NULL, /* empty stack */ + NULL, /* empty stack */ targetObjects, objects, depRel); @@ -304,8 +304,8 @@ performMultipleDeletions(const ObjectAddresses *objects, /* * Check if deletion is allowed, and report about cascaded deletes. * - * If there's exactly one object being deleted, report it the same - * way as in performDeletion(), else we have to be vaguer. + * If there's exactly one object being deleted, report it the same way as + * in performDeletion(), else we have to be vaguer. */ reportDependentObjects(targetObjects, behavior, @@ -352,7 +352,7 @@ deleteWhatDependsOn(const ObjectAddress *object, depRel = heap_open(DependRelationId, RowExclusiveLock); /* - * Acquire deletion lock on the target object. (Ideally the caller has + * Acquire deletion lock on the target object. (Ideally the caller has * done this already, but many places are sloppy about it.) */ AcquireDeletionLock(object); @@ -404,7 +404,7 @@ deleteWhatDependsOn(const ObjectAddress *object, * * For every object that depends on the starting object, acquire a deletion * lock on the object, add it to targetObjects (if not already there), - * and recursively find objects that depend on it. An object's dependencies + * and recursively find objects that depend on it. An object's dependencies * will be placed into targetObjects before the object itself; this means * that the finished list's order represents a safe deletion order. * @@ -446,8 +446,8 @@ findDependentObjects(const ObjectAddress *object, /* * If the target object is already being visited in an outer recursion - * level, just report the current flags back to that level and exit. - * This is needed to avoid infinite recursion in the face of circular + * level, just report the current flags back to that level and exit. This + * is needed to avoid infinite recursion in the face of circular * dependencies. * * The stack check alone would result in dependency loops being broken at @@ -457,7 +457,7 @@ findDependentObjects(const ObjectAddress *object, * will not break a loop at an internal dependency: if we enter the loop * at an "owned" object we will switch and start at the "owning" object * instead. We could probably hack something up to avoid breaking at an - * auto dependency, too, if we had to. However there are no known cases + * auto dependency, too, if we had to. However there are no known cases * where that would be necessary. */ for (stackptr = stack; stackptr; stackptr = stackptr->next) @@ -470,6 +470,7 @@ findDependentObjects(const ObjectAddress *object, stackptr->flags |= flags; return; } + /* * Could visit column with whole table already on stack; this is * the same case noted in object_address_present_add_flags(). @@ -487,8 +488,8 @@ findDependentObjects(const ObjectAddress *object, * specified flags to its entry and return. * * (Note: in these early-exit cases we could release the caller-taken - * lock, since the object is presumably now locked multiple times; - * but it seems not worth the cycles.) + * lock, since the object is presumably now locked multiple times; but it + * seems not worth the cycles.) */ if (object_address_present_add_flags(object, flags, targetObjects)) return; @@ -499,7 +500,7 @@ findDependentObjects(const ObjectAddress *object, * object, we have to transform this deletion request into a deletion * request of the owning object. (We'll eventually recurse back to this * object, but the owning object has to be visited first so it will be - * deleted after.) The way to find out about this is to scan the + * deleted after.) The way to find out about this is to scan the * pg_depend entries that show what this object depends on. */ ScanKeyInit(&key[0], @@ -546,10 +547,10 @@ findDependentObjects(const ObjectAddress *object, * * 1. At the outermost recursion level, disallow the DROP. (We * just ereport here, rather than proceeding, since no other - * dependencies are likely to be interesting.) However, if + * dependencies are likely to be interesting.) However, if * the other object is listed in pendingObjects, just release - * the caller's lock and return; we'll eventually complete - * the DROP when we reach that entry in the pending list. + * the caller's lock and return; we'll eventually complete the + * DROP when we reach that entry in the pending list. */ if (stack == NULL) { @@ -597,8 +598,8 @@ findDependentObjects(const ObjectAddress *object, AcquireDeletionLock(&otherObject); /* - * The other object might have been deleted while we waited - * to lock it; if so, neither it nor the current object are + * The other object might have been deleted while we waited to + * lock it; if so, neither it nor the current object are * interesting anymore. We test this by checking the * pg_depend entry (see notes below). */ @@ -610,10 +611,10 @@ findDependentObjects(const ObjectAddress *object, } /* - * Okay, recurse to the other object instead of proceeding. - * We treat this exactly as if the original reference had - * linked to that object instead of this one; hence, pass - * through the same flags and stack. + * Okay, recurse to the other object instead of proceeding. We + * treat this exactly as if the original reference had linked + * to that object instead of this one; hence, pass through the + * same flags and stack. */ findDependentObjects(&otherObject, flags, @@ -643,8 +644,8 @@ findDependentObjects(const ObjectAddress *object, systable_endscan(scan); /* - * Now recurse to any dependent objects. We must visit them first - * since they have to be deleted before the current object. + * Now recurse to any dependent objects. We must visit them first since + * they have to be deleted before the current object. */ mystack.object = object; /* set up a new stack level */ mystack.flags = flags; @@ -675,7 +676,7 @@ findDependentObjects(const ObjectAddress *object, while (HeapTupleIsValid(tup = systable_getnext(scan))) { Form_pg_depend foundDep = (Form_pg_depend) GETSTRUCT(tup); - int subflags; + int subflags; otherObject.classId = foundDep->classid; otherObject.objectId = foundDep->objid; @@ -687,11 +688,11 @@ findDependentObjects(const ObjectAddress *object, AcquireDeletionLock(&otherObject); /* - * The dependent object might have been deleted while we waited - * to lock it; if so, we don't need to do anything more with it. - * We can test this cheaply and independently of the object's type - * by seeing if the pg_depend tuple we are looking at is still live. - * (If the object got deleted, the tuple would have been deleted too.) + * The dependent object might have been deleted while we waited to + * lock it; if so, we don't need to do anything more with it. We can + * test this cheaply and independently of the object's type by seeing + * if the pg_depend tuple we are looking at is still live. (If the + * object got deleted, the tuple would have been deleted too.) */ if (!systable_recheck_tuple(scan, tup)) { @@ -743,9 +744,9 @@ findDependentObjects(const ObjectAddress *object, systable_endscan(scan); /* - * Finally, we can add the target object to targetObjects. Be careful - * to include any flags that were passed back down to us from inner - * recursion levels. + * Finally, we can add the target object to targetObjects. Be careful to + * include any flags that were passed back down to us from inner recursion + * levels. */ extra.flags = mystack.flags; if (stack) @@ -782,8 +783,8 @@ reportDependentObjects(const ObjectAddresses *targetObjects, int i; /* - * If no error is to be thrown, and the msglevel is too low to be shown - * to either client or server log, there's no need to do any of the work. + * If no error is to be thrown, and the msglevel is too low to be shown to + * either client or server log, there's no need to do any of the work. * * Note: this code doesn't know all there is to be known about elog * levels, but it works for NOTICE and DEBUG2, which are the only values @@ -822,16 +823,16 @@ reportDependentObjects(const ObjectAddresses *targetObjects, objDesc = getObjectDescription(obj); /* - * If, at any stage of the recursive search, we reached the object - * via an AUTO or INTERNAL dependency, then it's okay to delete it - * even in RESTRICT mode. + * If, at any stage of the recursive search, we reached the object via + * an AUTO or INTERNAL dependency, then it's okay to delete it even in + * RESTRICT mode. */ if (extra->flags & (DEPFLAG_AUTO | DEPFLAG_INTERNAL)) { /* - * auto-cascades are reported at DEBUG2, not msglevel. We - * don't try to combine them with the regular message because - * the results are too confusing when client_min_messages and + * auto-cascades are reported at DEBUG2, not msglevel. We don't + * try to combine them with the regular message because the + * results are too confusing when client_min_messages and * log_min_messages are different. */ ereport(DEBUG2, @@ -840,7 +841,7 @@ reportDependentObjects(const ObjectAddresses *targetObjects, } else if (behavior == DROP_RESTRICT) { - char *otherDesc = getObjectDescription(&extra->dependee); + char *otherDesc = getObjectDescription(&extra->dependee); if (numReportedClient < MAX_REPORTED_DEPS) { @@ -897,8 +898,8 @@ reportDependentObjects(const ObjectAddresses *targetObjects, if (origObject) ereport(ERROR, (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST), - errmsg("cannot drop %s because other objects depend on it", - getObjectDescription(origObject)), + errmsg("cannot drop %s because other objects depend on it", + getObjectDescription(origObject)), errdetail("%s", clientdetail.data), errdetail_log("%s", logdetail.data), errhint("Use DROP ... CASCADE to drop the dependent objects too."))); @@ -913,7 +914,7 @@ reportDependentObjects(const ObjectAddresses *targetObjects, else if (numReportedClient > 1) { ereport(msglevel, - /* translator: %d always has a value larger than 1 */ + /* translator: %d always has a value larger than 1 */ (errmsg_plural("drop cascades to %d other object", "drop cascades to %d other objects", numReportedClient + numNotReportedClient, @@ -947,7 +948,7 @@ deleteOneObject(const ObjectAddress *object, Relation depRel) /* * First remove any pg_depend records that link from this object to - * others. (Any records linking to this object should be gone already.) + * others. (Any records linking to this object should be gone already.) * * When dropping a whole object (subId = 0), remove all pg_depend records * for its sub-objects too. @@ -982,8 +983,8 @@ deleteOneObject(const ObjectAddress *object, Relation depRel) systable_endscan(scan); /* - * Delete shared dependency references related to this object. Again, - * if subId = 0, remove records for sub-objects too. + * Delete shared dependency references related to this object. Again, if + * subId = 0, remove records for sub-objects too. */ deleteSharedDependencyRecordsFor(object->classId, object->objectId, object->objectSubId); @@ -1651,9 +1652,9 @@ eliminate_duplicate_dependencies(ObjectAddresses *addrs) newrefs; /* - * We can't sort if the array has "extra" data, because there's no way - * to keep it in sync. Fortunately that combination of features is - * not needed. + * We can't sort if the array has "extra" data, because there's no way to + * keep it in sync. Fortunately that combination of features is not + * needed. */ Assert(!addrs->extras); @@ -1828,7 +1829,7 @@ add_exact_object_address_extra(const ObjectAddress *object, addrs->refs = (ObjectAddress *) repalloc(addrs->refs, addrs->maxrefs * sizeof(ObjectAddress)); addrs->extras = (ObjectAddressExtra *) - repalloc(addrs->extras, addrs->maxrefs * sizeof(ObjectAddressExtra)); + repalloc(addrs->extras, addrs->maxrefs * sizeof(ObjectAddressExtra)); } /* record this item */ item = addrs->refs + addrs->numrefs; @@ -1894,7 +1895,7 @@ object_address_present_add_flags(const ObjectAddress *object, { /* * We get here if we find a need to delete a column after - * having already decided to drop its whole table. Obviously + * having already decided to drop its whole table. Obviously * we no longer need to drop the column. But don't plaster * its flags on the table. */ @@ -2136,7 +2137,7 @@ getObjectDescription(const ObjectAddress *object) if (OidIsValid(con->conrelid)) { - StringInfoData rel; + StringInfoData rel; initStringInfo(&rel); getRelationDescription(&rel, con->conrelid); @@ -2304,10 +2305,11 @@ getObjectDescription(const ObjectAddress *object) initStringInfo(&opfam); getOpFamilyDescription(&opfam, amopForm->amopfamily); + /* * translator: %d is the operator strategy (a number), the - * first %s is the textual form of the operator, and the second - * %s is the description of the operator family. + * first %s is the textual form of the operator, and the + * second %s is the description of the operator family. */ appendStringInfo(&buffer, _("operator %d %s of %s"), amopForm->amopstrategy, @@ -2350,6 +2352,7 @@ getObjectDescription(const ObjectAddress *object) initStringInfo(&opfam); getOpFamilyDescription(&opfam, amprocForm->amprocfamily); + /* * translator: %d is the function number, the first %s is the * textual form of the function with arguments, and the second @@ -2563,9 +2566,9 @@ getObjectDescription(const ObjectAddress *object) case OCLASS_USER_MAPPING: { - HeapTuple tup; - Oid useid; - char *usename; + HeapTuple tup; + Oid useid; + char *usename; tup = SearchSysCache(USERMAPPINGOID, ObjectIdGetDatum(object->objectId), diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index bc03ef60331..f4cf829b468 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.353 2009/04/19 19:46:32 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.354 2009/06/11 14:48:54 momjian Exp $ * * * INTERFACE ROUTINES @@ -83,10 +83,10 @@ static Oid AddNewRelationType(const char *typeName, Oid new_array_type); static void RelationRemoveInheritance(Oid relid); static void StoreRelCheck(Relation rel, char *ccname, Node *expr, - bool is_local, int inhcount); + bool is_local, int inhcount); static void StoreConstraints(Relation rel, List *cooked_constraints); static bool MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr, - bool allow_merge, bool is_local); + bool allow_merge, bool is_local); static void SetRelationNumChecks(Relation rel, int numchecks); static Node *cookConstraint(ParseState *pstate, Node *raw_constraint, @@ -113,37 +113,37 @@ static List *insert_ordered_unique_oid(List *list, Oid datum); static FormData_pg_attribute a1 = { 0, {"ctid"}, TIDOID, 0, sizeof(ItemPointerData), SelfItemPointerAttributeNumber, 0, -1, -1, - false, 'p', 's', true, false, false, true, 0, { 0 } + false, 'p', 's', true, false, false, true, 0, {0} }; static FormData_pg_attribute a2 = { 0, {"oid"}, OIDOID, 0, sizeof(Oid), ObjectIdAttributeNumber, 0, -1, -1, - true, 'p', 'i', true, false, false, true, 0, { 0 } + true, 'p', 'i', true, false, false, true, 0, {0} }; static FormData_pg_attribute a3 = { 0, {"xmin"}, XIDOID, 0, sizeof(TransactionId), MinTransactionIdAttributeNumber, 0, -1, -1, - true, 'p', 'i', true, false, false, true, 0, { 0 } + true, 'p', 'i', true, false, false, true, 0, {0} }; static FormData_pg_attribute a4 = { 0, {"cmin"}, CIDOID, 0, sizeof(CommandId), MinCommandIdAttributeNumber, 0, -1, -1, - true, 'p', 'i', true, false, false, true, 0, { 0 } + true, 'p', 'i', true, false, false, true, 0, {0} }; static FormData_pg_attribute a5 = { 0, {"xmax"}, XIDOID, 0, sizeof(TransactionId), MaxTransactionIdAttributeNumber, 0, -1, -1, - true, 'p', 'i', true, false, false, true, 0, { 0 } + true, 'p', 'i', true, false, false, true, 0, {0} }; static FormData_pg_attribute a6 = { 0, {"cmax"}, CIDOID, 0, sizeof(CommandId), MaxCommandIdAttributeNumber, 0, -1, -1, - true, 'p', 'i', true, false, false, true, 0, { 0 } + true, 'p', 'i', true, false, false, true, 0, {0} }; /* @@ -155,7 +155,7 @@ static FormData_pg_attribute a6 = { static FormData_pg_attribute a7 = { 0, {"tableoid"}, OIDOID, 0, sizeof(Oid), TableOidAttributeNumber, 0, -1, -1, - true, 'p', 'i', true, false, false, true, 0, { 0 } + true, 'p', 'i', true, false, false, true, 0, {0} }; static const Form_pg_attribute SysAtt[] = {&a1, &a2, &a3, &a4, &a5, &a6, &a7}; @@ -478,7 +478,7 @@ CheckAttributeType(const char *attname, Oid atttypid) * Caller has already opened and locked pg_attribute. new_attribute is the * attribute to insert (but we ignore its attacl, if indeed it has one). * - * indstate is the index state for CatalogIndexInsert. It can be passed as + * indstate is the index state for CatalogIndexInsert. It can be passed as * NULL, in which case we'll fetch the necessary info. (Don't do this when * inserting multiple attributes, because it's a tad more expensive.) * @@ -530,6 +530,7 @@ InsertPgAttributeTuple(Relation pg_attribute_rel, heap_freetuple(tup); } + /* -------------------------------- * AddNewAttributeTuples * @@ -798,7 +799,7 @@ AddNewRelationType(const char *typeName, ownerid, /* owner's ID */ -1, /* internal size (varlena) */ TYPTYPE_COMPOSITE, /* type-type (composite) */ - TYPCATEGORY_COMPOSITE, /* type-category (ditto) */ + TYPCATEGORY_COMPOSITE, /* type-category (ditto) */ false, /* composite types are never preferred */ DEFAULT_TYPDELIM, /* default array delimiter */ F_RECORD_IN, /* input procedure */ @@ -979,7 +980,7 @@ heap_create_with_catalog(const char *relname, ownerid, /* owner's ID */ -1, /* Internal size (varlena) */ TYPTYPE_BASE, /* Not composite - typelem is */ - TYPCATEGORY_ARRAY, /* type-category (array) */ + TYPCATEGORY_ARRAY, /* type-category (array) */ false, /* array types are never preferred */ DEFAULT_TYPDELIM, /* default array delimiter */ F_ARRAY_IN, /* array input proc */ @@ -1671,8 +1672,8 @@ StoreRelCheck(Relation rel, char *ccname, Node *expr, expr, /* Tree form check constraint */ ccbin, /* Binary form check constraint */ ccsrc, /* Source form check constraint */ - is_local, /* conislocal */ - inhcount); /* coninhcount */ + is_local, /* conislocal */ + inhcount); /* coninhcount */ pfree(ccbin); pfree(ccsrc); @@ -1889,10 +1890,10 @@ AddRelationNewConstraints(Relation rel, checknames = lappend(checknames, ccname); /* - * Check against pre-existing constraints. If we are allowed - * to merge with an existing constraint, there's no more to - * do here. (We omit the duplicate constraint from the result, - * which is what ATAddCheckConstraint wants.) + * Check against pre-existing constraints. If we are allowed to + * merge with an existing constraint, there's no more to do here. + * (We omit the duplicate constraint from the result, which is + * what ATAddCheckConstraint wants.) */ if (MergeWithExistingConstraint(rel, ccname, expr, allow_merge, is_local)) @@ -2010,8 +2011,8 @@ MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr, /* Found it. Conflicts if not identical check constraint */ if (con->contype == CONSTRAINT_CHECK) { - Datum val; - bool isnull; + Datum val; + bool isnull; val = fastgetattr(tup, Anum_pg_constraint_conbin, @@ -2029,8 +2030,8 @@ MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr, ccname, RelationGetRelationName(rel)))); /* OK to update the tuple */ ereport(NOTICE, - (errmsg("merging constraint \"%s\" with inherited definition", - ccname))); + (errmsg("merging constraint \"%s\" with inherited definition", + ccname))); tup = heap_copytuple(tup); con = (Form_pg_constraint) GETSTRUCT(tup); if (is_local) @@ -2152,7 +2153,7 @@ cookDefault(ParseState *pstate, if (pstate->p_hasWindowFuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot use window function in default expression"))); + errmsg("cannot use window function in default expression"))); /* * Coerce the expression to the correct type and typmod, if given. This @@ -2212,8 +2213,8 @@ cookConstraint(ParseState *pstate, if (list_length(pstate->p_rtable) != 1) ereport(ERROR, (errcode(ERRCODE_INVALID_COLUMN_REFERENCE), - errmsg("only table \"%s\" can be referenced in check constraint", - relname))); + errmsg("only table \"%s\" can be referenced in check constraint", + relname))); /* * No subplans or aggregates, either... @@ -2225,7 +2226,7 @@ cookConstraint(ParseState *pstate, if (pstate->p_hasAggs) ereport(ERROR, (errcode(ERRCODE_GROUPING_ERROR), - errmsg("cannot use aggregate function in check constraint"))); + errmsg("cannot use aggregate function in check constraint"))); if (pstate->p_hasWindowFuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 1e19cbff31e..b75aac04e17 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/index.c,v 1.317 2009/06/06 22:13:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/index.c,v 1.318 2009/06/11 14:48:55 momjian Exp $ * * * INTERFACE ROUTINES @@ -745,8 +745,8 @@ index_create(Oid heapRelationId, NULL, /* no check constraint */ NULL, NULL, - true, /* islocal */ - 0); /* inhcount */ + true, /* islocal */ + 0); /* inhcount */ referenced.classId = ConstraintRelationId; referenced.objectId = conOid; @@ -1383,8 +1383,8 @@ index_build(Relation heapRelation, Assert(RegProcedureIsValid(procedure)); /* - * Switch to the table owner's userid, so that any index functions are - * run as that user. + * Switch to the table owner's userid, so that any index functions are run + * as that user. */ GetUserIdAndContext(&save_userid, &save_secdefcxt); SetUserIdAndContext(heapRelation->rd_rel->relowner, true); @@ -1544,9 +1544,9 @@ IndexBuildHeapScan(Relation heapRelation, scan = heap_beginscan_strat(heapRelation, /* relation */ snapshot, /* snapshot */ - 0, /* number of keys */ - NULL, /* scan key */ - true, /* buffer access strategy OK */ + 0, /* number of keys */ + NULL, /* scan key */ + true, /* buffer access strategy OK */ allow_sync); /* syncscan OK? */ reltuples = 0; @@ -1926,8 +1926,8 @@ validate_index(Oid heapId, Oid indexId, Snapshot snapshot) indexInfo->ii_Concurrent = true; /* - * Switch to the table owner's userid, so that any index functions are - * run as that user. + * Switch to the table owner's userid, so that any index functions are run + * as that user. */ GetUserIdAndContext(&save_userid, &save_secdefcxt); SetUserIdAndContext(heapRelation->rd_rel->relowner, true); @@ -2050,10 +2050,10 @@ validate_index_heapscan(Relation heapRelation, */ scan = heap_beginscan_strat(heapRelation, /* relation */ snapshot, /* snapshot */ - 0, /* number of keys */ - NULL, /* scan key */ - true, /* buffer access strategy OK */ - false); /* syncscan not OK */ + 0, /* number of keys */ + NULL, /* scan key */ + true, /* buffer access strategy OK */ + false); /* syncscan not OK */ /* * Scan all tuples matching the snapshot. @@ -2267,11 +2267,11 @@ reindex_index(Oid indexId) if (RELATION_IS_OTHER_TEMP(iRel)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot reindex temporary tables of other sessions"))); + errmsg("cannot reindex temporary tables of other sessions"))); /* - * Also check for active uses of the index in the current transaction; - * we don't want to reindex underneath an open indexscan. + * Also check for active uses of the index in the current transaction; we + * don't want to reindex underneath an open indexscan. */ CheckTableNotInUse(iRel, "REINDEX INDEX"); diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index f38568bed8a..12cb1720cde 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -13,7 +13,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/namespace.c,v 1.117 2009/03/31 22:12:46 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/namespace.c,v 1.118 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -573,7 +573,7 @@ TypeIsVisible(Oid typid) * and the returned nvargs will always be zero. * * If expand_defaults is true, functions that could match after insertion of - * default argument values will also be retrieved. In this case the returned + * default argument values will also be retrieved. In this case the returned * structs could have nargs > passed-in nargs, and ndargs is set to the number * of additional args (which can be retrieved from the function's * proargdefaults entry). @@ -726,7 +726,7 @@ FuncnameGetCandidates(List *names, int nargs, pronargs * sizeof(Oid)); if (variadic) { - int i; + int i; newResult->nvargs = effective_nargs - pronargs + 1; /* Expand variadic argument into N copies of element type */ @@ -774,7 +774,7 @@ FuncnameGetCandidates(List *names, int nargs, } else { - int cmp_nargs = newResult->nargs - newResult->ndargs; + int cmp_nargs = newResult->nargs - newResult->ndargs; for (prevResult = resultList; prevResult; @@ -791,13 +791,13 @@ FuncnameGetCandidates(List *names, int nargs, if (prevResult) { /* - * We have a match with a previous result. Decide which one + * We have a match with a previous result. Decide which one * to keep, or mark it ambiguous if we can't decide. The * logic here is preference > 0 means prefer the old result, * preference < 0 means prefer the new, preference = 0 means * ambiguous. */ - int preference; + int preference; if (pathpos != prevResult->pathpos) { @@ -810,9 +810,9 @@ FuncnameGetCandidates(List *names, int nargs, { /* * With variadic functions we could have, for example, - * both foo(numeric) and foo(variadic numeric[]) in - * the same namespace; if so we prefer the - * non-variadic match on efficiency grounds. + * both foo(numeric) and foo(variadic numeric[]) in the + * same namespace; if so we prefer the non-variadic match + * on efficiency grounds. */ preference = 1; } @@ -858,7 +858,7 @@ FuncnameGetCandidates(List *names, int nargs, break; } } - Assert(prevPrevResult); /* assert we found it */ + Assert(prevPrevResult); /* assert we found it */ } pfree(prevResult); /* fall through to add newResult to list */ @@ -2865,8 +2865,8 @@ InitTempTableNamespace(void) } /* - * If the corresponding toast-table namespace doesn't exist yet, create it. - * (We assume there is no need to clean it out if it does exist, since + * If the corresponding toast-table namespace doesn't exist yet, create + * it. (We assume there is no need to clean it out if it does exist, since * dropping a parent table should make its toast table go away.) */ snprintf(namespaceName, sizeof(namespaceName), "pg_toast_temp_%d", @@ -3230,7 +3230,7 @@ fetch_search_path(bool includeImplicit) /* * Fetch the active search path into a caller-allocated array of OIDs. - * Returns the number of path entries. (If this is more than sarray_len, + * Returns the number of path entries. (If this is more than sarray_len, * then the data didn't fit and is not all stored.) * * The returned list always includes the implicitly-prepended namespaces, diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c index 5af71a54ea1..8c9f8bce7a7 100644 --- a/src/backend/catalog/pg_aggregate.c +++ b/src/backend/catalog/pg_aggregate.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_aggregate.c,v 1.101 2009/01/01 17:23:37 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_aggregate.c,v 1.102 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -180,9 +180,9 @@ AggregateCreate(const char *aggName, /* * Also, the return type can't be INTERNAL unless there's at least one - * INTERNAL argument. This is the same type-safety restriction we - * enforce for regular functions, but at the level of aggregates. We - * must test this explicitly because we allow INTERNAL as the transtype. + * INTERNAL argument. This is the same type-safety restriction we enforce + * for regular functions, but at the level of aggregates. We must test + * this explicitly because we allow INTERNAL as the transtype. */ if (finaltype == INTERNALOID && !hasInternalArg) ereport(ERROR, @@ -228,7 +228,7 @@ AggregateCreate(const char *aggName, PointerGetDatum(NULL), /* allParamTypes */ PointerGetDatum(NULL), /* parameterModes */ PointerGetDatum(NULL), /* parameterNames */ - NIL, /* parameterDefaults */ + NIL, /* parameterDefaults */ PointerGetDatum(NULL), /* proconfig */ 1, /* procost */ 0); /* prorows */ diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index e3e46afd40e..9e13872fa83 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_constraint.c,v 1.44 2009/01/01 17:23:37 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_constraint.c,v 1.45 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -600,8 +600,8 @@ RenameConstraintById(Oid conId, const char *newname) con = (Form_pg_constraint) GETSTRUCT(tuple); /* - * We need to check whether the name is already in use --- note that - * there currently is not a unique index that would catch this. + * We need to check whether the name is already in use --- note that there + * currently is not a unique index that would catch this. */ if (OidIsValid(con->conrelid) && ConstraintNameIsUsed(CONSTRAINT_RELATION, @@ -610,8 +610,8 @@ RenameConstraintById(Oid conId, const char *newname) newname)) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), - errmsg("constraint \"%s\" for relation \"%s\" already exists", - newname, get_rel_name(con->conrelid)))); + errmsg("constraint \"%s\" for relation \"%s\" already exists", + newname, get_rel_name(con->conrelid)))); if (OidIsValid(con->contypid) && ConstraintNameIsUsed(CONSTRAINT_DOMAIN, con->contypid, diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c index 1508243c089..9867cc2c679 100644 --- a/src/backend/catalog/pg_depend.c +++ b/src/backend/catalog/pg_depend.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_depend.c,v 1.31 2009/01/01 17:23:37 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_depend.c,v 1.32 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -427,8 +427,8 @@ getOwnedSequences(Oid relid) { List *result = NIL; Relation depRel; - ScanKeyData key[2]; - SysScanDesc scan; + ScanKeyData key[2]; + SysScanDesc scan; HeapTuple tup; depRel = heap_open(DependRelationId, AccessShareLock); @@ -571,8 +571,8 @@ get_index_constraint(Oid indexId) Form_pg_depend deprec = (Form_pg_depend) GETSTRUCT(tup); /* - * We assume any internal dependency on a constraint - * must be what we are looking for. + * We assume any internal dependency on a constraint must be what we + * are looking for. */ if (deprec->refclassid == ConstraintRelationId && deprec->refobjsubid == 0 && diff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c index 49342dc3453..8ae368b7413 100644 --- a/src/backend/catalog/pg_inherits.c +++ b/src/backend/catalog/pg_inherits.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_inherits.c,v 1.2 2009/05/12 03:11:01 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_inherits.c,v 1.3 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -82,8 +82,8 @@ find_inheritance_children(Oid parentrelId, LOCKMODE lockmode) /* * Now that we have the lock, double-check to see if the relation - * really exists or not. If not, assume it was dropped while - * we waited to acquire lock, and ignore it. + * really exists or not. If not, assume it was dropped while we + * waited to acquire lock, and ignore it. */ if (!SearchSysCacheExists(RELOID, ObjectIdGetDatum(inhrelid), @@ -235,10 +235,10 @@ typeInheritsFrom(Oid subclassTypeId, Oid superclassTypeId) HeapTuple inhtup; /* - * If we've seen this relid already, skip it. This avoids extra - * work in multiple-inheritance scenarios, and also protects us - * from an infinite loop in case there is a cycle in pg_inherits - * (though theoretically that shouldn't happen). + * If we've seen this relid already, skip it. This avoids extra work + * in multiple-inheritance scenarios, and also protects us from an + * infinite loop in case there is a cycle in pg_inherits (though + * theoretically that shouldn't happen). */ if (list_member_oid(visited, this_relid)) continue; diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c index 12ffd742566..90c4acc9b20 100644 --- a/src/backend/catalog/pg_operator.c +++ b/src/backend/catalog/pg_operator.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_operator.c,v 1.108 2009/01/22 20:16:01 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_operator.c,v 1.109 2009/06/11 14:48:55 momjian Exp $ * * NOTES * these routines moved here from commands/define.c and somewhat cleaned up. @@ -391,11 +391,11 @@ OperatorCreate(const char *operatorName, if (OidIsValid(restrictionId)) ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), - errmsg("only boolean operators can have restriction selectivity"))); + errmsg("only boolean operators can have restriction selectivity"))); if (OidIsValid(joinId)) ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), - errmsg("only boolean operators can have join selectivity"))); + errmsg("only boolean operators can have join selectivity"))); if (canMerge) ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), @@ -420,8 +420,8 @@ OperatorCreate(const char *operatorName, /* * At this point, if operatorObjectId is not InvalidOid then we are - * filling in a previously-created shell. Insist that the user own - * any such shell. + * filling in a previously-created shell. Insist that the user own any + * such shell. */ if (OidIsValid(operatorObjectId) && !pg_oper_ownercheck(operatorObjectId, GetUserId())) @@ -499,10 +499,10 @@ OperatorCreate(const char *operatorName, values[i++] = ObjectIdGetDatum(rightTypeId); /* oprright */ values[i++] = ObjectIdGetDatum(operResultType); /* oprresult */ values[i++] = ObjectIdGetDatum(commutatorId); /* oprcom */ - values[i++] = ObjectIdGetDatum(negatorId); /* oprnegate */ - values[i++] = ObjectIdGetDatum(procedureId); /* oprcode */ - values[i++] = ObjectIdGetDatum(restrictionId); /* oprrest */ - values[i++] = ObjectIdGetDatum(joinId); /* oprjoin */ + values[i++] = ObjectIdGetDatum(negatorId); /* oprnegate */ + values[i++] = ObjectIdGetDatum(procedureId); /* oprcode */ + values[i++] = ObjectIdGetDatum(restrictionId); /* oprrest */ + values[i++] = ObjectIdGetDatum(joinId); /* oprjoin */ pg_operator_desc = heap_open(OperatorRelationId, RowExclusiveLock); @@ -519,10 +519,10 @@ OperatorCreate(const char *operatorName, operatorObjectId); tup = heap_modify_tuple(tup, - RelationGetDescr(pg_operator_desc), - values, - nulls, - replaces); + RelationGetDescr(pg_operator_desc), + values, + nulls, + replaces); simple_heap_update(pg_operator_desc, &tup->t_self, tup); } @@ -690,10 +690,10 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId) } tup = heap_modify_tuple(tup, - RelationGetDescr(pg_operator_desc), - values, - nulls, - replaces); + RelationGetDescr(pg_operator_desc), + values, + nulls, + replaces); simple_heap_update(pg_operator_desc, &tup->t_self, tup); @@ -715,10 +715,10 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId) replaces[Anum_pg_operator_oprcom - 1] = true; tup = heap_modify_tuple(tup, - RelationGetDescr(pg_operator_desc), - values, - nulls, - replaces); + RelationGetDescr(pg_operator_desc), + values, + nulls, + replaces); simple_heap_update(pg_operator_desc, &tup->t_self, tup); @@ -741,10 +741,10 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId) replaces[Anum_pg_operator_oprnegate - 1] = true; tup = heap_modify_tuple(tup, - RelationGetDescr(pg_operator_desc), - values, - nulls, - replaces); + RelationGetDescr(pg_operator_desc), + values, + nulls, + replaces); simple_heap_update(pg_operator_desc, &tup->t_self, tup); diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index ce42910e785..64920f5d2a8 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.163 2009/06/04 18:33:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.164 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -232,10 +232,11 @@ ProcedureCreate(const char *procedureName, ARR_ELEMTYPE(modesArray) != CHAROID) elog(ERROR, "parameterModes is not a 1-D char array"); modes = (char *) ARR_DATA_PTR(modesArray); + /* - * Only the last input parameter can be variadic; if it is, save - * its element type. Errors here are just elog since caller should - * have checked this already. + * Only the last input parameter can be variadic; if it is, save its + * element type. Errors here are just elog since caller should have + * checked this already. */ for (i = 0; i < allParamCount; i++) { @@ -393,11 +394,11 @@ ProcedureCreate(const char *procedureName, /* * If there are existing defaults, check compatibility: redefinition - * must not remove any defaults nor change their types. (Removing - * a default might cause a function to fail to satisfy an existing - * call. Changing type would only be possible if the associated - * parameter is polymorphic, and in such cases a change of default - * type might alter the resolved output type of existing calls.) + * must not remove any defaults nor change their types. (Removing a + * default might cause a function to fail to satisfy an existing call. + * Changing type would only be possible if the associated parameter is + * polymorphic, and in such cases a change of default type might alter + * the resolved output type of existing calls.) */ if (oldproc->pronargdefaults != 0) { @@ -430,8 +431,8 @@ ProcedureCreate(const char *procedureName, foreach(oldlc, oldDefaults) { - Node *oldDef = (Node *) lfirst(oldlc); - Node *newDef = (Node *) lfirst(newlc); + Node *oldDef = (Node *) lfirst(oldlc); + Node *newDef = (Node *) lfirst(newlc); if (exprType(oldDef) != exprType(newDef)) ereport(ERROR, @@ -453,8 +454,8 @@ ProcedureCreate(const char *procedureName, else ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("function \"%s\" is not an aggregate function", - procedureName))); + errmsg("function \"%s\" is not an aggregate function", + procedureName))); } if (oldproc->proiswindow != isWindowFunc) { diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c index 19cfe08f4f8..08977c38633 100644 --- a/src/backend/catalog/pg_shdepend.c +++ b/src/backend/catalog/pg_shdepend.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_shdepend.c,v 1.33 2009/06/04 18:33:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_shdepend.c,v 1.34 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -56,18 +56,18 @@ static int getOidListDiff(Oid *list1, int nlist1, Oid *list2, int nlist2, static Oid classIdGetDbId(Oid classId); static void shdepLockAndCheckObject(Oid classId, Oid objectId); static void shdepChangeDep(Relation sdepRel, - Oid classid, Oid objid, int32 objsubid, - Oid refclassid, Oid refobjid, - SharedDependencyType deptype); + Oid classid, Oid objid, int32 objsubid, + Oid refclassid, Oid refobjid, + SharedDependencyType deptype); static void shdepAddDependency(Relation sdepRel, - Oid classId, Oid objectId, int32 objsubId, - Oid refclassId, Oid refobjId, - SharedDependencyType deptype); + Oid classId, Oid objectId, int32 objsubId, + Oid refclassId, Oid refobjId, + SharedDependencyType deptype); static void shdepDropDependency(Relation sdepRel, - Oid classId, Oid objectId, int32 objsubId, - bool drop_subobjects, - Oid refclassId, Oid refobjId, - SharedDependencyType deptype); + Oid classId, Oid objectId, int32 objsubId, + bool drop_subobjects, + Oid refclassId, Oid refobjId, + SharedDependencyType deptype); static void storeObjectDescription(StringInfo descs, objectType type, ObjectAddress *object, SharedDependencyType deptype, @@ -216,7 +216,7 @@ shdepChangeDep(Relation sdepRel, /* Caller screwed up if multiple matches */ if (oldtup) elog(ERROR, - "multiple pg_shdepend entries for object %u/%u/%d deptype %c", + "multiple pg_shdepend entries for object %u/%u/%d deptype %c", classid, objid, objsubid, deptype); oldtup = heap_copytuple(scantup); } @@ -450,7 +450,7 @@ updateAclDependencies(Oid classId, Oid objectId, int32 objsubId, SHARED_DEPENDENCY_ACL); else shdepDropDependency(sdepRel, classId, objectId, objsubId, - false, /* exact match on objsubId */ + false, /* exact match on objsubId */ AuthIdRelationId, roleid, SHARED_DEPENDENCY_ACL); } @@ -664,7 +664,7 @@ checkSharedDependencies(Oid classId, Oid objectId, if (numNotReportedDbs > 0) appendStringInfo(&descs, ngettext("\nand objects in %d other database " "(see server log for list)", - "\nand objects in %d other databases " + "\nand objects in %d other databases " "(see server log for list)", numNotReportedDbs), numNotReportedDbs); diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index c7daed4e323..4c7e3f50785 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/pg_type.c,v 1.125 2009/02/24 01:38:09 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/pg_type.c,v 1.126 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -278,14 +278,14 @@ TypeCreate(Oid newTypeOid, if (internalSize == -1 && !(alignment == 'i' || alignment == 'd')) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("alignment \"%c\" is invalid for variable-length type", - alignment))); + errmsg("alignment \"%c\" is invalid for variable-length type", + alignment))); /* cstring must have char alignment */ if (internalSize == -2 && !(alignment == 'c')) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("alignment \"%c\" is invalid for variable-length type", - alignment))); + errmsg("alignment \"%c\" is invalid for variable-length type", + alignment))); } /* Only varlena types can be toasted */ @@ -392,10 +392,10 @@ TypeCreate(Oid newTypeOid, * Okay to update existing shell type tuple */ tup = heap_modify_tuple(tup, - RelationGetDescr(pg_type_desc), - values, - nulls, - replaces); + RelationGetDescr(pg_type_desc), + values, + nulls, + replaces); simple_heap_update(pg_type_desc, &tup->t_self, tup); @@ -406,8 +406,8 @@ TypeCreate(Oid newTypeOid, else { tup = heap_form_tuple(RelationGetDescr(pg_type_desc), - values, - nulls); + values, + nulls); /* Force the OID if requested by caller, else heap_insert does it */ if (OidIsValid(newTypeOid)) diff --git a/src/backend/catalog/storage.c b/src/backend/catalog/storage.c index e1a0f6254c6..8f4612dda40 100644 --- a/src/backend/catalog/storage.c +++ b/src/backend/catalog/storage.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/storage.c,v 1.5 2009/01/20 18:59:37 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/storage.c,v 1.6 2009/06/11 14:48:55 momjian Exp $ * * NOTES * Some of this code used to be in storage/smgr/smgr.c, and the @@ -109,8 +109,8 @@ RelationCreateStorage(RelFileNode rnode, bool istemp) if (!istemp) { /* - * Make an XLOG entry showing the file creation. If we abort, the file - * will be dropped at abort time. + * Make an XLOG entry showing the file creation. If we abort, the + * file will be dropped at abort time. */ xlrec.rnode = rnode; @@ -175,8 +175,8 @@ RelationDropStorage(Relation rel) void RelationTruncate(Relation rel, BlockNumber nblocks) { - bool fsm; - bool vm; + bool fsm; + bool vm; /* Open it at the smgr level if not already done */ RelationOpenSmgr(rel); @@ -195,13 +195,13 @@ RelationTruncate(Relation rel, BlockNumber nblocks) visibilitymap_truncate(rel, nblocks); /* - * We WAL-log the truncation before actually truncating, which - * means trouble if the truncation fails. If we then crash, the WAL - * replay likely isn't going to succeed in the truncation either, and - * cause a PANIC. It's tempting to put a critical section here, but - * that cure would be worse than the disease. It would turn a usually - * harmless failure to truncate, that could spell trouble at WAL replay, - * into a certain PANIC. + * We WAL-log the truncation before actually truncating, which means + * trouble if the truncation fails. If we then crash, the WAL replay + * likely isn't going to succeed in the truncation either, and cause a + * PANIC. It's tempting to put a critical section here, but that cure + * would be worse than the disease. It would turn a usually harmless + * failure to truncate, that could spell trouble at WAL replay, into a + * certain PANIC. */ if (!rel->rd_istemp) { @@ -223,11 +223,11 @@ RelationTruncate(Relation rel, BlockNumber nblocks) lsn = XLogInsert(RM_SMGR_ID, XLOG_SMGR_TRUNCATE, &rdata); /* - * Flush, because otherwise the truncation of the main relation - * might hit the disk before the WAL record, and the truncation of - * the FSM or visibility map. If we crashed during that window, we'd - * be left with a truncated heap, but the FSM or visibility map would - * still contain entries for the non-existent heap pages. + * Flush, because otherwise the truncation of the main relation might + * hit the disk before the WAL record, and the truncation of the FSM + * or visibility map. If we crashed during that window, we'd be left + * with a truncated heap, but the FSM or visibility map would still + * contain entries for the non-existent heap pages. */ if (fsm || vm) XLogFlush(lsn); @@ -270,7 +270,7 @@ smgrDoPendingDeletes(bool isCommit) /* do deletion if called for */ if (pending->atCommit == isCommit) { - int i; + int i; /* schedule unlinking old files */ SMgrRelation srel; @@ -431,11 +431,12 @@ smgr_redo(XLogRecPtr lsn, XLogRecord *record) /* Also tell xlogutils.c about it */ XLogTruncateRelation(xlrec->rnode, MAIN_FORKNUM, xlrec->blkno); - + /* Truncate FSM too */ if (smgrexists(reln, FSM_FORKNUM)) { - Relation rel = CreateFakeRelcacheEntry(xlrec->rnode); + Relation rel = CreateFakeRelcacheEntry(xlrec->rnode); + FreeSpaceMapTruncateRel(rel, xlrec->blkno); FreeFakeRelcacheEntry(rel); } @@ -453,7 +454,7 @@ smgr_desc(StringInfo buf, uint8 xl_info, char *rec) if (info == XLOG_SMGR_CREATE) { xl_smgr_create *xlrec = (xl_smgr_create *) rec; - char *path = relpath(xlrec->rnode, MAIN_FORKNUM); + char *path = relpath(xlrec->rnode, MAIN_FORKNUM); appendStringInfo(buf, "file create: %s", path); pfree(path); @@ -461,7 +462,7 @@ smgr_desc(StringInfo buf, uint8 xl_info, char *rec) else if (info == XLOG_SMGR_TRUNCATE) { xl_smgr_truncate *xlrec = (xl_smgr_truncate *) rec; - char *path = relpath(xlrec->rnode, MAIN_FORKNUM); + char *path = relpath(xlrec->rnode, MAIN_FORKNUM); appendStringInfo(buf, "file truncate: %s to %u blocks", path, xlrec->blkno); diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c index ff9499ca35b..510c88ec338 100644 --- a/src/backend/catalog/toasting.c +++ b/src/backend/catalog/toasting.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/catalog/toasting.c,v 1.15 2009/05/07 22:58:28 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/toasting.c,v 1.16 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -145,8 +145,8 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, /* * Check to see whether the table actually needs a TOAST table. * - * Caller can optionally override this check. (Note: at present - * no callers in core Postgres do so, but this option is needed by + * Caller can optionally override this check. (Note: at present no + * callers in core Postgres do so, but this option is needed by * pg_migrator.) */ if (!force && !needs_toast_table(rel)) diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c index 7b2d8915df2..461f81005c2 100644 --- a/src/backend/commands/aggregatecmds.c +++ b/src/backend/commands/aggregatecmds.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/aggregatecmds.c,v 1.48 2009/01/01 17:23:37 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/aggregatecmds.c,v 1.49 2009/06/11 14:48:55 momjian Exp $ * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the @@ -173,18 +173,18 @@ DefineAggregate(List *name, List *args, bool oldstyle, List *parameters) * * transtype can't be a pseudo-type, since we need to be able to store * values of the transtype. However, we can allow polymorphic transtype - * in some cases (AggregateCreate will check). Also, we allow "internal" + * in some cases (AggregateCreate will check). Also, we allow "internal" * for functions that want to pass pointers to private data structures; - * but allow that only to superusers, since you could crash the system - * (or worse) by connecting up incompatible internal-using functions - * in an aggregate. + * but allow that only to superusers, since you could crash the system (or + * worse) by connecting up incompatible internal-using functions in an + * aggregate. */ transTypeId = typenameTypeId(NULL, transType, NULL); if (get_typtype(transTypeId) == TYPTYPE_PSEUDO && !IsPolymorphicType(transTypeId)) { if (transTypeId == INTERNALOID && superuser()) - /* okay */ ; + /* okay */ ; else ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index d549fa3bb9f..f5e76e2aedd 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/analyze.c,v 1.138 2009/06/06 22:13:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/analyze.c,v 1.139 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -177,8 +177,8 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt, { if (onerel->rd_rel->relisshared) ereport(WARNING, - (errmsg("skipping \"%s\" --- only superuser can analyze it", - RelationGetRelationName(onerel)))); + (errmsg("skipping \"%s\" --- only superuser can analyze it", + RelationGetRelationName(onerel)))); else if (onerel->rd_rel->relnamespace == PG_CATALOG_NAMESPACE) ereport(WARNING, (errmsg("skipping \"%s\" --- only superuser or database owner can analyze it", @@ -234,8 +234,8 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt, RelationGetRelationName(onerel)))); /* - * Switch to the table owner's userid, so that any index functions are - * run as that user. + * Switch to the table owner's userid, so that any index functions are run + * as that user. */ GetUserIdAndContext(&save_userid, &save_secdefcxt); SetUserIdAndContext(onerel->rd_rel->relowner, true); @@ -467,7 +467,7 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt, /* * Same for indexes. Vacuum always scans all indexes, so if we're part of - * VACUUM ANALYZE, don't overwrite the accurate count already inserted by + * VACUUM ANALYZE, don't overwrite the accurate count already inserted by * VACUUM. */ if (!vacstmt->vacuum) @@ -719,8 +719,8 @@ examine_attribute(Relation onerel, int attnum) return NULL; /* - * Create the VacAttrStats struct. Note that we only have a copy of - * the fixed fields of the pg_attribute tuple. + * Create the VacAttrStats struct. Note that we only have a copy of the + * fixed fields of the pg_attribute tuple. */ stats = (VacAttrStats *) palloc0(sizeof(VacAttrStats)); stats->attr = (Form_pg_attribute) palloc(ATTRIBUTE_FIXED_PART_SIZE); @@ -737,10 +737,9 @@ examine_attribute(Relation onerel, int attnum) stats->tupattnum = attnum; /* - * The fields describing the stats->stavalues[n] element types default - * to the type of the field being analyzed, but the type-specific - * typanalyze function can change them if it wants to store something - * else. + * The fields describing the stats->stavalues[n] element types default to + * the type of the field being analyzed, but the type-specific typanalyze + * function can change them if it wants to store something else. */ for (i = 0; i < STATISTIC_NUM_SLOTS; i++) { @@ -894,7 +893,7 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, double *totalrows, double *totaldeadrows) { int numrows = 0; /* # rows now in reservoir */ - double samplerows = 0; /* total # rows collected */ + double samplerows = 0; /* total # rows collected */ double liverows = 0; /* # live rows seen */ double deadrows = 0; /* # dead rows seen */ double rowstoskip = -1; /* -1 means not set yet */ @@ -931,9 +930,9 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, * the maxoffset value stays good (else concurrent VACUUM might delete * tuples out from under us). Hence, pin the page until we are done * looking at it. We also choose to hold sharelock on the buffer - * throughout --- we could release and re-acquire sharelock for - * each tuple, but since we aren't doing much work per tuple, the - * extra lock traffic is probably better avoided. + * throughout --- we could release and re-acquire sharelock for each + * tuple, but since we aren't doing much work per tuple, the extra + * lock traffic is probably better avoided. */ targbuffer = ReadBufferExtended(onerel, MAIN_FORKNUM, targblock, RBM_NORMAL, vac_strategy); @@ -952,9 +951,9 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, /* * We ignore unused and redirect line pointers. DEAD line - * pointers should be counted as dead, because we need vacuum - * to run to get rid of them. Note that this rule agrees with - * the way that heap_page_prune() counts things. + * pointers should be counted as dead, because we need vacuum to + * run to get rid of them. Note that this rule agrees with the + * way that heap_page_prune() counts things. */ if (!ItemIdIsNormal(itemid)) { @@ -984,6 +983,7 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, break; case HEAPTUPLE_INSERT_IN_PROGRESS: + /* * Insert-in-progress rows are not counted. We assume * that when the inserting transaction commits or aborts, @@ -991,17 +991,17 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, * count. This works right only if that transaction ends * after we finish analyzing the table; if things happen * in the other order, its stats update will be - * overwritten by ours. However, the error will be - * large only if the other transaction runs long enough - * to insert many tuples, so assuming it will finish - * after us is the safer option. + * overwritten by ours. However, the error will be large + * only if the other transaction runs long enough to + * insert many tuples, so assuming it will finish after us + * is the safer option. * * A special case is that the inserting transaction might - * be our own. In this case we should count and sample + * be our own. In this case we should count and sample * the row, to accommodate users who load a table and * analyze it in one transaction. (pgstat_report_analyze - * has to adjust the numbers we send to the stats collector - * to make this come out right.) + * has to adjust the numbers we send to the stats + * collector to make this come out right.) */ if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmin(targtuple.t_data))) { @@ -1011,6 +1011,7 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, break; case HEAPTUPLE_DELETE_IN_PROGRESS: + /* * We count delete-in-progress rows as still live, using * the same reasoning given above; but we don't bother to @@ -1019,8 +1020,8 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, * If the delete was done by our own transaction, however, * we must count the row as dead to make * pgstat_report_analyze's stats adjustments come out - * right. (Note: this works out properly when the row - * was both inserted and deleted in our xact.) + * right. (Note: this works out properly when the row was + * both inserted and deleted in our xact.) */ if (TransactionIdIsCurrentTransactionId(HeapTupleHeaderGetXmax(targtuple.t_data))) deadrows += 1; @@ -1054,8 +1055,8 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows, /* * t in Vitter's paper is the number of records already * processed. If we need to compute a new S value, we - * must use the not-yet-incremented value of samplerows - * as t. + * must use the not-yet-incremented value of samplerows as + * t. */ if (rowstoskip < 0) rowstoskip = get_next_S(samplerows, targrows, &rstate); @@ -1385,10 +1386,10 @@ update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats) { /* Yes, replace it */ stup = heap_modify_tuple(oldtup, - RelationGetDescr(sd), - values, - nulls, - replaces); + RelationGetDescr(sd), + values, + nulls, + replaces); ReleaseSysCache(oldtup); simple_heap_update(sd, &stup->t_self, stup); } @@ -1883,9 +1884,10 @@ compute_minimal_stats(VacAttrStatsP stats, stats->numnumbers[0] = num_mcv; stats->stavalues[0] = mcv_values; stats->numvalues[0] = num_mcv; + /* - * Accept the defaults for stats->statypid and others. - * They have been set before we were called (see vacuum.h) + * Accept the defaults for stats->statypid and others. They have + * been set before we were called (see vacuum.h) */ } } @@ -2232,9 +2234,10 @@ compute_scalar_stats(VacAttrStatsP stats, stats->numnumbers[slot_idx] = num_mcv; stats->stavalues[slot_idx] = mcv_values; stats->numvalues[slot_idx] = num_mcv; + /* - * Accept the defaults for stats->statypid and others. - * They have been set before we were called (see vacuum.h) + * Accept the defaults for stats->statypid and others. They have + * been set before we were called (see vacuum.h) */ slot_idx++; } @@ -2312,7 +2315,7 @@ compute_scalar_stats(VacAttrStatsP stats, /* * The object of this loop is to copy the first and last values[] - * entries along with evenly-spaced values in between. So the + * entries along with evenly-spaced values in between. So the * i'th value is values[(i * (nvals - 1)) / (num_hist - 1)]. But * computing that subscript directly risks integer overflow when * the stats target is more than a couple thousand. Instead we @@ -2344,9 +2347,10 @@ compute_scalar_stats(VacAttrStatsP stats, stats->staop[slot_idx] = mystats->ltopr; stats->stavalues[slot_idx] = hist_values; stats->numvalues[slot_idx] = num_hist; + /* - * Accept the defaults for stats->statypid and others. - * They have been set before we were called (see vacuum.h) + * Accept the defaults for stats->statypid and others. They have + * been set before we were called (see vacuum.h) */ slot_idx++; } diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c index 745f4558537..9da815d4811 100644 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/async.c,v 1.146 2009/02/13 17:12:04 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/async.c,v 1.147 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -53,7 +53,7 @@ * transaction. * * Like NOTIFY, LISTEN and UNLISTEN just add the desired action to a list - * of pending actions. If we reach transaction commit, the changes are + * of pending actions. If we reach transaction commit, the changes are * applied to pg_listener just before executing any pending NOTIFYs. This * method is necessary because to avoid race conditions, we must hold lock * on pg_listener from when we insert a new listener tuple until we commit. @@ -124,12 +124,12 @@ typedef enum typedef struct { ListenActionKind action; - char condname[1]; /* actually, as long as needed */ + char condname[1]; /* actually, as long as needed */ } ListenAction; -static List *pendingActions = NIL; /* list of ListenAction */ +static List *pendingActions = NIL; /* list of ListenAction */ -static List *upperPendingActions = NIL; /* list of upper-xact lists */ +static List *upperPendingActions = NIL; /* list of upper-xact lists */ /* * State for outbound notifies consists of a list of all relnames NOTIFYed @@ -147,7 +147,7 @@ static List *upperPendingActions = NIL; /* list of upper-xact lists */ * condition name, it will get a self-notify at commit. This is a bit odd * but is consistent with our historical behavior. */ -static List *pendingNotifies = NIL; /* list of C strings */ +static List *pendingNotifies = NIL; /* list of C strings */ static List *upperPendingNotifies = NIL; /* list of upper-xact lists */ @@ -209,10 +209,9 @@ Async_Notify(const char *relname) oldcontext = MemoryContextSwitchTo(CurTransactionContext); /* - * Ordering of the list isn't important. We choose to put new - * entries on the front, as this might make duplicate-elimination - * a tad faster when the same condition is signaled many times in - * a row. + * Ordering of the list isn't important. We choose to put new entries + * on the front, as this might make duplicate-elimination a tad faster + * when the same condition is signaled many times in a row. */ pendingNotifies = lcons(pstrdup(relname), pendingNotifies); @@ -235,10 +234,10 @@ queue_listen(ListenActionKind action, const char *condname) ListenAction *actrec; /* - * Unlike Async_Notify, we don't try to collapse out duplicates. - * It would be too complicated to ensure we get the right interactions - * of conflicting LISTEN/UNLISTEN/UNLISTEN_ALL, and it's unlikely that - * there would be any performance benefit anyway in sane applications. + * Unlike Async_Notify, we don't try to collapse out duplicates. It would + * be too complicated to ensure we get the right interactions of + * conflicting LISTEN/UNLISTEN/UNLISTEN_ALL, and it's unlikely that there + * would be any performance benefit anyway in sane applications. */ oldcontext = MemoryContextSwitchTo(CurTransactionContext); @@ -488,7 +487,7 @@ Exec_Listen(Relation lRel, const char *relname) namestrcpy(&condname, relname); values[Anum_pg_listener_relname - 1] = NameGetDatum(&condname); values[Anum_pg_listener_pid - 1] = Int32GetDatum(MyProcPid); - values[Anum_pg_listener_notify - 1] = Int32GetDatum(0); /* no notifies pending */ + values[Anum_pg_listener_notify - 1] = Int32GetDatum(0); /* no notifies pending */ tuple = heap_form_tuple(RelationGetDescr(lRel), values, nulls); @@ -755,9 +754,9 @@ AtSubAbort_Notify(void) int my_level = GetCurrentTransactionNestLevel(); /* - * All we have to do is pop the stack --- the actions/notifies made in this - * subxact are no longer interesting, and the space will be freed when - * CurTransactionContext is recycled. + * All we have to do is pop the stack --- the actions/notifies made in + * this subxact are no longer interesting, and the space will be freed + * when CurTransactionContext is recycled. * * This routine could be called more than once at a given nesting level if * there is trouble during subxact abort. Avoid dumping core by using diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index 08c09ed435e..ca9999d5f4a 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.184 2009/05/07 22:58:28 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.185 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -631,9 +631,9 @@ rebuild_relation(Relation OldHeap, Oid indexOid) /* * At this point, everything is kosher except that the toast table's name - * corresponds to the temporary table. The name is irrelevant to - * the backend because it's referenced by OID, but users looking at the - * catalogs could be confused. Rename it to prevent this problem. + * corresponds to the temporary table. The name is irrelevant to the + * backend because it's referenced by OID, but users looking at the + * catalogs could be confused. Rename it to prevent this problem. * * Note no lock required on the relation, because we already hold an * exclusive lock on it. @@ -679,10 +679,10 @@ make_new_heap(Oid OIDOldHeap, const char *NewName, Oid NewTableSpace) /* * Need to make a copy of the tuple descriptor, since - * heap_create_with_catalog modifies it. Note that the NewHeap will - * not receive any of the defaults or constraints associated with the - * OldHeap; we don't need 'em, and there's no reason to spend cycles - * inserting them into the catalogs only to delete them. + * heap_create_with_catalog modifies it. Note that the NewHeap will not + * receive any of the defaults or constraints associated with the OldHeap; + * we don't need 'em, and there's no reason to spend cycles inserting them + * into the catalogs only to delete them. */ tupdesc = CreateTupleDescCopy(OldHeapDesc); @@ -811,8 +811,8 @@ copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex) &OldestXmin, &FreezeXid, NULL); /* - * FreezeXid will become the table's new relfrozenxid, and that mustn't - * go backwards, so take the max. + * FreezeXid will become the table's new relfrozenxid, and that mustn't go + * backwards, so take the max. */ if (TransactionIdPrecedes(FreezeXid, OldHeap->rd_rel->relfrozenxid)) FreezeXid = OldHeap->rd_rel->relfrozenxid; diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 5f5da2a8954..b6a90a248bf 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -7,7 +7,7 @@ * Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.106 2009/01/01 17:23:37 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.107 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -249,7 +249,7 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment) else { newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(description), values, - nulls, replaces); + nulls, replaces); simple_heap_update(description, &oldtuple->t_self, newtuple); } @@ -263,7 +263,7 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment) if (newtuple == NULL && comment != NULL) { newtuple = heap_form_tuple(RelationGetDescr(description), - values, nulls); + values, nulls); simple_heap_insert(description, newtuple); } @@ -344,7 +344,7 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment) else { newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(shdescription), - values, nulls, replaces); + values, nulls, replaces); simple_heap_update(shdescription, &oldtuple->t_self, newtuple); } @@ -358,7 +358,7 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment) if (newtuple == NULL && comment != NULL) { newtuple = heap_form_tuple(RelationGetDescr(shdescription), - values, nulls); + values, nulls); simple_heap_insert(shdescription, newtuple); } diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c index 13c55d51bff..8f5093f8084 100644 --- a/src/backend/commands/conversioncmds.c +++ b/src/backend/commands/conversioncmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.38 2009/02/27 16:35:26 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.39 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -87,8 +87,8 @@ CreateConversionCommand(CreateConversionStmt *stmt) if (get_func_rettype(funcoid) != VOIDOID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("encoding conversion function %s must return type \"void\"", - NameListToString(func_name)))); + errmsg("encoding conversion function %s must return type \"void\"", + NameListToString(func_name)))); /* Check we have EXECUTE rights for the function */ aclresult = pg_proc_aclcheck(funcoid, GetUserId(), ACL_EXECUTE); @@ -97,10 +97,10 @@ CreateConversionCommand(CreateConversionStmt *stmt) NameListToString(func_name)); /* - * Check that the conversion function is suitable for the requested - * source and target encodings. We do that by calling the function with - * an empty string; the conversion function should throw an error if it - * can't perform the requested conversion. + * Check that the conversion function is suitable for the requested source + * and target encodings. We do that by calling the function with an empty + * string; the conversion function should throw an error if it can't + * perform the requested conversion. */ OidFunctionCall5(funcoid, Int32GetDatum(from_encoding), @@ -124,19 +124,19 @@ void DropConversionsCommand(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; /* * First we identify all the conversions, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the conversions depends on another. - * (Not that that is very likely, but we may as well do this consistently.) + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the conversions depends on another. (Not that + * that is very likely, but we may as well do this consistently.) */ objects = new_object_addresses(); foreach(cell, drop->objects) { - List *name = (List *) lfirst(cell); + List *name = (List *) lfirst(cell); Oid conversionOid; HeapTuple tuple; Form_pg_conversion con; diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 7840e7b52cf..c464ed7f6ce 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.311 2009/06/03 15:06:48 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/copy.c,v 1.312 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -178,7 +178,7 @@ typedef struct * function call overhead in tight COPY loops. * * We must use "if (1)" because the usual "do {...} while(0)" wrapper would - * prevent the continue/break processing from working. We end the "if (1)" + * prevent the continue/break processing from working. We end the "if (1)" * with "else ((void) 0)" to ensure the "if" does not unintentionally match * any "else" in the calling code, and to avoid any compiler warnings about * empty statements. See http://www.cit.gu.edu.au/~anthony/info/C/C.macros. @@ -859,7 +859,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString) if (strlen(cstate->delim) != 1) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("COPY delimiter must be a single one-byte character"))); + errmsg("COPY delimiter must be a single one-byte character"))); /* Disallow end-of-line characters */ if (strchr(cstate->delim, '\r') != NULL || @@ -879,8 +879,8 @@ DoCopy(const CopyStmt *stmt, const char *queryString) * backslash because it would be ambiguous. We can't allow the other * cases because data characters matching the delimiter must be * backslashed, and certain backslash combinations are interpreted - * non-literally by COPY IN. Disallowing all lower case ASCII letters - * is more than strictly necessary, but seems best for consistency and + * non-literally by COPY IN. Disallowing all lower case ASCII letters is + * more than strictly necessary, but seems best for consistency and * future-proofing. Likewise we disallow all digits though only octal * digits are actually dangerous. */ @@ -1670,7 +1670,7 @@ CopyFrom(CopyState cstate) MemoryContext oldcontext = CurrentMemoryContext; ErrorContextCallback errcontext; CommandId mycid = GetCurrentCommandId(true); - int hi_options = 0; /* start with default heap_insert options */ + int hi_options = 0; /* start with default heap_insert options */ BulkInsertState bistate; Assert(cstate->rel); @@ -2454,10 +2454,10 @@ CopyReadLineText(CopyState cstate) ereport(ERROR, (errcode(ERRCODE_BAD_COPY_FILE_FORMAT), !cstate->csv_mode ? - errmsg("literal carriage return found in data") : - errmsg("unquoted carriage return found in data"), + errmsg("literal carriage return found in data") : + errmsg("unquoted carriage return found in data"), !cstate->csv_mode ? - errhint("Use \"\\r\" to represent carriage return.") : + errhint("Use \"\\r\" to represent carriage return.") : errhint("Use quoted CSV field to represent carriage return."))); /* @@ -2474,7 +2474,7 @@ CopyReadLineText(CopyState cstate) errmsg("literal carriage return found in data") : errmsg("unquoted carriage return found in data"), !cstate->csv_mode ? - errhint("Use \"\\r\" to represent carriage return.") : + errhint("Use \"\\r\" to represent carriage return.") : errhint("Use quoted CSV field to represent carriage return."))); /* If reach here, we have found the line terminator */ break; @@ -2491,7 +2491,7 @@ CopyReadLineText(CopyState cstate) errmsg("unquoted newline found in data"), !cstate->csv_mode ? errhint("Use \"\\n\" to represent newline.") : - errhint("Use quoted CSV field to represent newline."))); + errhint("Use quoted CSV field to represent newline."))); cstate->eol_type = EOL_NL; /* in case not set yet */ /* If reach here, we have found the line terminator */ break; @@ -2847,9 +2847,9 @@ CopyReadAttributesText(CopyState cstate, int maxfields, char **fieldvals) *output_ptr++ = '\0'; /* - * If we de-escaped a non-7-bit-ASCII char, make sure we still - * have valid data for the db encoding. Avoid calling strlen here for - * the sake of efficiency. + * If we de-escaped a non-7-bit-ASCII char, make sure we still have + * valid data for the db encoding. Avoid calling strlen here for the + * sake of efficiency. */ if (saw_non_ascii) { @@ -2945,12 +2945,12 @@ CopyReadAttributesCSV(CopyState cstate, int maxfields, char **fieldvals) start_ptr = cur_ptr; fieldvals[fieldno] = output_ptr; - /* Scan data for field, + /* + * Scan data for field, * - * The loop starts in "not quote" mode and then toggles between - * that and "in quote" mode. - * The loop exits normally if it is in "not quote" mode and a - * delimiter or line end is seen. + * The loop starts in "not quote" mode and then toggles between that + * and "in quote" mode. The loop exits normally if it is in "not + * quote" mode and a delimiter or line end is seen. */ for (;;) { @@ -2994,8 +2994,8 @@ CopyReadAttributesCSV(CopyState cstate, int maxfields, char **fieldvals) if (c == escapec) { /* - * peek at the next char if available, and escape it if it is - * an escape char or a quote char + * peek at the next char if available, and escape it if it + * is an escape char or a quote char */ if (cur_ptr < line_end_ptr) { @@ -3009,10 +3009,11 @@ CopyReadAttributesCSV(CopyState cstate, int maxfields, char **fieldvals) } } } + /* - * end of quoted field. Must do this test after testing for escape - * in case quote char and escape char are the same (which is the - * common case). + * end of quoted field. Must do this test after testing for + * escape in case quote char and escape char are the same + * (which is the common case). */ if (c == quotec) break; @@ -3021,7 +3022,7 @@ CopyReadAttributesCSV(CopyState cstate, int maxfields, char **fieldvals) *output_ptr++ = c; } } - endfield: +endfield: /* Terminate attribute value in output area */ *output_ptr++ = '\0'; @@ -3144,11 +3145,11 @@ CopyAttributeOutText(CopyState cstate, char *string) if ((unsigned char) c < (unsigned char) 0x20) { /* - * \r and \n must be escaped, the others are traditional. - * We prefer to dump these using the C-like notation, rather - * than a backslash and the literal character, because it - * makes the dump file a bit more proof against Microsoftish - * data mangling. + * \r and \n must be escaped, the others are traditional. We + * prefer to dump these using the C-like notation, rather than + * a backslash and the literal character, because it makes the + * dump file a bit more proof against Microsoftish data + * mangling. */ switch (c) { @@ -3182,7 +3183,7 @@ CopyAttributeOutText(CopyState cstate, char *string) DUMPSOFAR(); CopySendChar(cstate, '\\'); CopySendChar(cstate, c); - start = ++ptr; /* do not include char in next run */ + start = ++ptr; /* do not include char in next run */ } else if (c == '\\' || c == delimc) { @@ -3204,11 +3205,11 @@ CopyAttributeOutText(CopyState cstate, char *string) if ((unsigned char) c < (unsigned char) 0x20) { /* - * \r and \n must be escaped, the others are traditional. - * We prefer to dump these using the C-like notation, rather - * than a backslash and the literal character, because it - * makes the dump file a bit more proof against Microsoftish - * data mangling. + * \r and \n must be escaped, the others are traditional. We + * prefer to dump these using the C-like notation, rather than + * a backslash and the literal character, because it makes the + * dump file a bit more proof against Microsoftish data + * mangling. */ switch (c) { @@ -3242,7 +3243,7 @@ CopyAttributeOutText(CopyState cstate, char *string) DUMPSOFAR(); CopySendChar(cstate, '\\'); CopySendChar(cstate, c); - start = ++ptr; /* do not include char in next run */ + start = ++ptr; /* do not include char in next run */ } else if (c == '\\' || c == delimc) { diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 8d5972dfa51..1ea84fdbb2d 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.224 2009/05/06 16:15:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.225 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -334,8 +334,8 @@ createdb(const CreatedbStmt *stmt) /* * Check whether chosen encoding matches chosen locale settings. This * restriction is necessary because libc's locale-specific code usually - * fails when presented with data in an encoding it's not expecting. - * We allow mismatch in three cases: + * fails when presented with data in an encoding it's not expecting. We + * allow mismatch in three cases: * * 1. locale encoding = SQL_ASCII, which means either that the locale is * C/POSIX which works with any encoding, or that we couldn't determine @@ -365,8 +365,8 @@ createdb(const CreatedbStmt *stmt) errmsg("encoding %s does not match locale %s", pg_encoding_to_char(encoding), dbctype), - errdetail("The chosen LC_CTYPE setting requires encoding %s.", - pg_encoding_to_char(ctype_encoding)))); + errdetail("The chosen LC_CTYPE setting requires encoding %s.", + pg_encoding_to_char(ctype_encoding)))); if (!(collate_encoding == encoding || collate_encoding == PG_SQL_ASCII || @@ -554,7 +554,7 @@ createdb(const CreatedbStmt *stmt) new_record_nulls[Anum_pg_database_datacl - 1] = true; tuple = heap_form_tuple(RelationGetDescr(pg_database_rel), - new_record, new_record_nulls); + new_record, new_record_nulls); HeapTupleSetOid(tuple, dboid); @@ -716,9 +716,9 @@ createdb_failure_callback(int code, Datum arg) createdb_failure_params *fparms = (createdb_failure_params *) DatumGetPointer(arg); /* - * Release lock on source database before doing recursive remove. - * This is not essential but it seems desirable to release the lock - * as soon as possible. + * Release lock on source database before doing recursive remove. This is + * not essential but it seems desirable to release the lock as soon as + * possible. */ UnlockSharedObject(DatabaseRelationId, fparms->src_dboid, 0, ShareLock); @@ -842,9 +842,9 @@ dropdb(const char *dbname, bool missing_ok) /* * Tell bgwriter to forget any pending fsync and unlink requests for files - * in the database; else the fsyncs will fail at next checkpoint, or worse, - * it will delete files that belong to a newly created database with the - * same OID. + * in the database; else the fsyncs will fail at next checkpoint, or + * worse, it will delete files that belong to a newly created database + * with the same OID. */ ForgetDatabaseFsyncRequests(db_id); @@ -975,21 +975,23 @@ RenameDatabase(const char *oldname, const char *newname) static void movedb(const char *dbname, const char *tblspcname) { - Oid db_id; - Relation pgdbrel; - int notherbackends; - int npreparedxacts; - HeapTuple oldtuple, newtuple; - Oid src_tblspcoid, dst_tblspcoid; - Datum new_record[Natts_pg_database]; - bool new_record_nulls[Natts_pg_database]; - bool new_record_repl[Natts_pg_database]; - ScanKeyData scankey; - SysScanDesc sysscan; - AclResult aclresult; - char *src_dbpath; - char *dst_dbpath; - DIR *dstdir; + Oid db_id; + Relation pgdbrel; + int notherbackends; + int npreparedxacts; + HeapTuple oldtuple, + newtuple; + Oid src_tblspcoid, + dst_tblspcoid; + Datum new_record[Natts_pg_database]; + bool new_record_nulls[Natts_pg_database]; + bool new_record_repl[Natts_pg_database]; + ScanKeyData scankey; + SysScanDesc sysscan; + AclResult aclresult; + char *src_dbpath; + char *dst_dbpath; + DIR *dstdir; struct dirent *xlde; movedb_failure_params fparms; @@ -1089,13 +1091,13 @@ movedb(const char *dbname, const char *tblspcname) /* * Force a checkpoint before proceeding. This will force dirty buffers out - * to disk, to ensure source database is up-to-date on disk for the - * copy. FlushDatabaseBuffers() would suffice for that, but we also want - * to process any pending unlink requests. Otherwise, the check for - * existing files in the target directory might fail unnecessarily, not to - * mention that the copy might fail due to source files getting deleted - * under it. On Windows, this also ensures that the bgwriter doesn't hold - * any open files, which would cause rmdir() to fail. + * to disk, to ensure source database is up-to-date on disk for the copy. + * FlushDatabaseBuffers() would suffice for that, but we also want to + * process any pending unlink requests. Otherwise, the check for existing + * files in the target directory might fail unnecessarily, not to mention + * that the copy might fail due to source files getting deleted under it. + * On Windows, this also ensures that the bgwriter doesn't hold any open + * files, which would cause rmdir() to fail. */ RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT); @@ -1125,8 +1127,8 @@ movedb(const char *dbname, const char *tblspcname) FreeDir(dstdir); /* - * The directory exists but is empty. - * We must remove it before using the copydir function. + * The directory exists but is empty. We must remove it before using + * the copydir function. */ if (rmdir(dst_dbpath) != 0) elog(ERROR, "could not remove directory \"%s\": %m", @@ -1135,7 +1137,7 @@ movedb(const char *dbname, const char *tblspcname) /* * Use an ENSURE block to make sure we remove the debris if the copy fails - * (eg, due to out-of-disk-space). This is not a 100% solution, because + * (eg, due to out-of-disk-space). This is not a 100% solution, because * of the possibility of failure during transaction commit, but it should * handle most scenarios. */ @@ -1179,7 +1181,7 @@ movedb(const char *dbname, const char *tblspcname) sysscan = systable_beginscan(pgdbrel, DatabaseNameIndexId, true, SnapshotNow, 1, &scankey); oldtuple = systable_getnext(sysscan); - if (!HeapTupleIsValid(oldtuple)) /* shouldn't happen... */ + if (!HeapTupleIsValid(oldtuple)) /* shouldn't happen... */ ereport(ERROR, (errcode(ERRCODE_UNDEFINED_DATABASE), errmsg("database \"%s\" does not exist", dbname))); @@ -1228,13 +1230,13 @@ movedb(const char *dbname, const char *tblspcname) PointerGetDatum(&fparms)); /* - * Commit the transaction so that the pg_database update is committed. - * If we crash while removing files, the database won't be corrupt, - * we'll just leave some orphaned files in the old directory. + * Commit the transaction so that the pg_database update is committed. If + * we crash while removing files, the database won't be corrupt, we'll + * just leave some orphaned files in the old directory. * * (This is OK because we know we aren't inside a transaction block.) * - * XXX would it be safe/better to do this inside the ensure block? Not + * XXX would it be safe/better to do this inside the ensure block? Not * convinced it's a good idea; consider elog just after the transaction * really commits. */ @@ -1389,7 +1391,7 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel) } newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel), new_record, - new_record_nulls, new_record_repl); + new_record_nulls, new_record_repl); simple_heap_update(rel, &tuple->t_self, newtuple); /* Update indexes */ @@ -1482,7 +1484,7 @@ AlterDatabaseSet(AlterDatabaseSetStmt *stmt) } newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &tuple->t_self, newtuple); /* Update indexes */ @@ -1720,11 +1722,11 @@ get_db_info(const char *name, LOCKMODE lockmode, /* default tablespace for this database */ if (dbTablespace) *dbTablespace = dbform->dattablespace; - /* default locale settings for this database */ - if (dbCollate) - *dbCollate = pstrdup(NameStr(dbform->datcollate)); - if (dbCtype) - *dbCtype = pstrdup(NameStr(dbform->datctype)); + /* default locale settings for this database */ + if (dbCollate) + *dbCollate = pstrdup(NameStr(dbform->datcollate)); + if (dbCtype) + *dbCtype = pstrdup(NameStr(dbform->datctype)); ReleaseSysCache(tuple); result = true; break; diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index d8f27a1175b..45e8edf5957 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994-5, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.185 2009/04/05 19:59:39 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.186 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -61,7 +61,7 @@ static void explain_outNode(StringInfo str, Plan *outer_plan, int indent, ExplainState *es); static void show_plan_tlist(Plan *plan, - StringInfo str, int indent, ExplainState *es); + StringInfo str, int indent, ExplainState *es); static void show_scan_qual(List *qual, const char *qlabel, int scanrelid, Plan *scan_plan, Plan *outer_plan, StringInfo str, int indent, ExplainState *es); @@ -342,7 +342,7 @@ void ExplainPrintPlan(StringInfo str, QueryDesc *queryDesc, bool analyze, bool verbose) { - ExplainState es; + ExplainState es; Assert(queryDesc->plannedstmt != NULL); diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index 74021efdae4..79706b0837b 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/foreigncmds.c,v 1.7 2009/04/04 21:12:31 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/foreigncmds.c,v 1.8 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -47,8 +47,8 @@ static Datum optionListToArray(List *options) { - ArrayBuildState *astate = NULL; - ListCell *cell; + ArrayBuildState *astate = NULL; + ListCell *cell; foreach(cell, options) { @@ -76,7 +76,7 @@ optionListToArray(List *options) /* - * Transform a list of DefElem into text array format. This is substantially + * Transform a list of DefElem into text array format. This is substantially * the same thing as optionListToArray(), except we recognize SET/ADD/DROP * actions for modifying an existing list of options, which is passed in * Datum form as oldOptions. Also, if fdwvalidator isn't InvalidOid @@ -92,23 +92,23 @@ transformGenericOptions(Datum oldOptions, List *options, Oid fdwvalidator) { - List *resultOptions = untransformRelOptions(oldOptions); - ListCell *optcell; - Datum result; + List *resultOptions = untransformRelOptions(oldOptions); + ListCell *optcell; + Datum result; foreach(optcell, options) { - DefElem *od = lfirst(optcell); + DefElem *od = lfirst(optcell); ListCell *cell; ListCell *prev = NULL; /* - * Find the element in resultOptions. We need this for - * validation in all cases. Also identify the previous element. + * Find the element in resultOptions. We need this for validation in + * all cases. Also identify the previous element. */ - foreach (cell, resultOptions) + foreach(cell, resultOptions) { - DefElem *def = lfirst(cell); + DefElem *def = lfirst(cell); if (strcmp(def->defname, od->defname) == 0) break; @@ -117,10 +117,10 @@ transformGenericOptions(Datum oldOptions, } /* - * It is possible to perform multiple SET/DROP actions on the - * same option. The standard permits this, as long as the - * options to be added are unique. Note that an unspecified - * action is taken to be ADD. + * It is possible to perform multiple SET/DROP actions on the same + * option. The standard permits this, as long as the options to be + * added are unique. Note that an unspecified action is taken to be + * ADD. */ switch (od->defaction) { @@ -174,16 +174,16 @@ transformGenericOptions(Datum oldOptions, static Oid GetUserOidFromMapping(const char *username, bool missing_ok) { - if (!username) - /* PUBLIC user mapping */ - return InvalidOid; + if (!username) + /* PUBLIC user mapping */ + return InvalidOid; - if (strcmp(username, "current_user") == 0) - /* map to the owner */ - return GetUserId(); + if (strcmp(username, "current_user") == 0) + /* map to the owner */ + return GetUserId(); - /* map to provided user */ - return missing_ok ? get_roleid(username) : get_roleid_checked(username); + /* map to provided user */ + return missing_ok ? get_roleid(username) : get_roleid_checked(username); } @@ -201,7 +201,7 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) Oid fdwId; Form_pg_foreign_data_wrapper form; - /* Must be a superuser to change a FDW owner */ + /* Must be a superuser to change a FDW owner */ if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), @@ -209,13 +209,13 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) name), errhint("Must be superuser to change owner of a foreign-data wrapper."))); - /* New owner must also be a superuser */ + /* New owner must also be a superuser */ if (!superuser_arg(newOwnerId)) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied to change owner of foreign-data wrapper \"%s\"", name), - errhint("The owner of a foreign-data wrapper must be a superuser."))); + errhint("The owner of a foreign-data wrapper must be a superuser."))); rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); @@ -226,7 +226,7 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) if (!HeapTupleIsValid(tup)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", name))); + errmsg("foreign-data wrapper \"%s\" does not exist", name))); fdwId = HeapTupleGetOid(tup); form = (Form_pg_foreign_data_wrapper) GETSTRUCT(tup); @@ -268,9 +268,9 @@ AlterForeignServerOwner(const char *name, Oid newOwnerId) 0, 0, 0); if (!HeapTupleIsValid(tup)) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", name))); + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("server \"%s\" does not exist", name))); srvId = HeapTupleGetOid(tup); form = (Form_pg_foreign_server) GETSTRUCT(tup); @@ -334,22 +334,22 @@ lookup_fdw_validator_func(List *validator) void CreateForeignDataWrapper(CreateFdwStmt *stmt) { - Relation rel; - Datum values[Natts_pg_foreign_data_wrapper]; - bool nulls[Natts_pg_foreign_data_wrapper]; - HeapTuple tuple; - Oid fdwId; - Oid fdwvalidator; - Datum fdwoptions; - Oid ownerId; + Relation rel; + Datum values[Natts_pg_foreign_data_wrapper]; + bool nulls[Natts_pg_foreign_data_wrapper]; + HeapTuple tuple; + Oid fdwId; + Oid fdwvalidator; + Datum fdwoptions; + Oid ownerId; /* Must be super user */ if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("permission denied to create foreign-data wrapper \"%s\"", - stmt->fdwname), - errhint("Must be superuser to create a foreign-data wrapper."))); + errmsg("permission denied to create foreign-data wrapper \"%s\"", + stmt->fdwname), + errhint("Must be superuser to create a foreign-data wrapper."))); /* For now the owner cannot be specified on create. Use effective user ID. */ ownerId = GetUserId(); @@ -440,9 +440,9 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("permission denied to alter foreign-data wrapper \"%s\"", - stmt->fdwname), - errhint("Must be superuser to alter a foreign-data wrapper."))); + errmsg("permission denied to alter foreign-data wrapper \"%s\"", + stmt->fdwname), + errhint("Must be superuser to alter a foreign-data wrapper."))); tp = SearchSysCacheCopy(FOREIGNDATAWRAPPERNAME, CStringGetDatum(stmt->fdwname), @@ -451,7 +451,7 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) if (!HeapTupleIsValid(tp)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", stmt->fdwname))); + errmsg("foreign-data wrapper \"%s\" does not exist", stmt->fdwname))); fdwId = HeapTupleGetOid(tp); @@ -467,18 +467,17 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) /* * It could be that the options for the FDW, SERVER and USER MAPPING - * are no longer valid with the new validator. Warn about this. + * are no longer valid with the new validator. Warn about this. */ if (stmt->validator) ereport(WARNING, - (errmsg("changing the foreign-data wrapper validator can cause " - "the options for dependent objects to become invalid"))); + (errmsg("changing the foreign-data wrapper validator can cause " + "the options for dependent objects to become invalid"))); } else { /* - * Validator is not changed, but we need it for validating - * options. + * Validator is not changed, but we need it for validating options. */ datum = SysCacheGetAttr(FOREIGNDATAWRAPPEROID, tp, @@ -517,7 +516,7 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); tp = heap_modify_tuple(tp, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &tp->t_self, tp); CatalogUpdateIndexes(rel, tp); @@ -533,30 +532,30 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) void RemoveForeignDataWrapper(DropFdwStmt *stmt) { - Oid fdwId; - ObjectAddress object; + Oid fdwId; + ObjectAddress object; fdwId = GetForeignDataWrapperOidByName(stmt->fdwname, true); if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("permission denied to drop foreign-data wrapper \"%s\"", - stmt->fdwname), - errhint("Must be superuser to drop a foreign-data wrapper."))); + errmsg("permission denied to drop foreign-data wrapper \"%s\"", + stmt->fdwname), + errhint("Must be superuser to drop a foreign-data wrapper."))); if (!OidIsValid(fdwId)) { if (!stmt->missing_ok) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", - stmt->fdwname))); + errmsg("foreign-data wrapper \"%s\" does not exist", + stmt->fdwname))); /* IF EXISTS specified, just note it */ ereport(NOTICE, - (errmsg("foreign-data wrapper \"%s\" does not exist, skipping", - stmt->fdwname))); + (errmsg("foreign-data wrapper \"%s\" does not exist, skipping", + stmt->fdwname))); return; } @@ -603,16 +602,16 @@ RemoveForeignDataWrapperById(Oid fdwId) void CreateForeignServer(CreateForeignServerStmt *stmt) { - Relation rel; - Datum srvoptions; - Datum values[Natts_pg_foreign_server]; - bool nulls[Natts_pg_foreign_server]; - HeapTuple tuple; - Oid srvId; - Oid ownerId; - AclResult aclresult; - ObjectAddress myself; - ObjectAddress referenced; + Relation rel; + Datum srvoptions; + Datum values[Natts_pg_foreign_server]; + bool nulls[Natts_pg_foreign_server]; + HeapTuple tuple; + Oid srvId; + Oid ownerId; + AclResult aclresult; + ObjectAddress myself; + ObjectAddress referenced; ForeignDataWrapper *fdw; /* For now the owner cannot be specified on create. Use effective user ID. */ @@ -628,8 +627,8 @@ CreateForeignServer(CreateForeignServerStmt *stmt) stmt->servername))); /* - * Check that the FDW exists and that we have USAGE on it. - * Also get the actual FDW for option validation etc. + * Check that the FDW exists and that we have USAGE on it. Also get the + * actual FDW for option validation etc. */ fdw = GetForeignDataWrapperByName(stmt->fdwname, false); @@ -712,7 +711,7 @@ AlterForeignServer(AlterForeignServerStmt *stmt) bool repl_null[Natts_pg_foreign_server]; bool repl_repl[Natts_pg_foreign_server]; Oid srvId; - Form_pg_foreign_server srvForm; + Form_pg_foreign_server srvForm; tp = SearchSysCacheCopy(FOREIGNSERVERNAME, CStringGetDatum(stmt->servername), @@ -721,7 +720,7 @@ AlterForeignServer(AlterForeignServerStmt *stmt) if (!HeapTupleIsValid(tp)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", stmt->servername))); + errmsg("server \"%s\" does not exist", stmt->servername))); srvId = HeapTupleGetOid(tp); srvForm = (Form_pg_foreign_server) GETSTRUCT(tp); @@ -754,8 +753,8 @@ AlterForeignServer(AlterForeignServerStmt *stmt) if (stmt->options) { ForeignDataWrapper *fdw = GetForeignDataWrapper(srvForm->srvfdw); - Datum datum; - bool isnull; + Datum datum; + bool isnull; /* Extract the current srvoptions */ datum = SysCacheGetAttr(FOREIGNSERVEROID, @@ -782,7 +781,7 @@ AlterForeignServer(AlterForeignServerStmt *stmt) rel = heap_open(ForeignServerRelationId, RowExclusiveLock); tp = heap_modify_tuple(tp, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &tp->t_self, tp); CatalogUpdateIndexes(rel, tp); @@ -798,8 +797,8 @@ AlterForeignServer(AlterForeignServerStmt *stmt) void RemoveForeignServer(DropForeignServerStmt *stmt) { - Oid srvId; - ObjectAddress object; + Oid srvId; + ObjectAddress object; srvId = GetForeignServerOidByName(stmt->servername, true); @@ -809,7 +808,7 @@ RemoveForeignServer(DropForeignServerStmt *stmt) if (!stmt->missing_ok) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", stmt->servername))); + errmsg("server \"%s\" does not exist", stmt->servername))); /* IF EXISTS specified, just note it */ ereport(NOTICE, @@ -871,7 +870,7 @@ user_mapping_ddl_aclcheck(Oid umuserid, Oid serverid, const char *servername) { if (umuserid == curuserid) { - AclResult aclresult; + AclResult aclresult; aclresult = pg_foreign_server_aclcheck(serverid, curuserid, ACL_USAGE); if (aclresult != ACLCHECK_OK) @@ -890,16 +889,16 @@ user_mapping_ddl_aclcheck(Oid umuserid, Oid serverid, const char *servername) void CreateUserMapping(CreateUserMappingStmt *stmt) { - Relation rel; - Datum useoptions; - Datum values[Natts_pg_user_mapping]; - bool nulls[Natts_pg_user_mapping]; - HeapTuple tuple; - Oid useId; - Oid umId; - ObjectAddress myself; - ObjectAddress referenced; - ForeignServer *srv; + Relation rel; + Datum useoptions; + Datum values[Natts_pg_user_mapping]; + bool nulls[Natts_pg_user_mapping]; + HeapTuple tuple; + Oid useId; + Oid umId; + ObjectAddress myself; + ObjectAddress referenced; + ForeignServer *srv; ForeignDataWrapper *fdw; useId = GetUserOidFromMapping(stmt->username, false); @@ -913,9 +912,9 @@ CreateUserMapping(CreateUserMappingStmt *stmt) * Check that the user mapping is unique within server. */ umId = GetSysCacheOid(USERMAPPINGUSERSERVER, - ObjectIdGetDatum(useId), - ObjectIdGetDatum(srv->serverid), - 0, 0); + ObjectIdGetDatum(useId), + ObjectIdGetDatum(srv->serverid), + 0, 0); if (OidIsValid(umId)) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), @@ -984,7 +983,7 @@ AlterUserMapping(AlterUserMappingStmt *stmt) bool repl_repl[Natts_pg_user_mapping]; Oid useId; Oid umId; - ForeignServer *srv; + ForeignServer *srv; useId = GetUserOidFromMapping(stmt->username, false); srv = GetForeignServerByName(stmt->servername, false); @@ -996,8 +995,8 @@ AlterUserMapping(AlterUserMappingStmt *stmt) if (!OidIsValid(umId)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("user mapping \"%s\" does not exist for the server", - MappingUserName(useId)))); + errmsg("user mapping \"%s\" does not exist for the server", + MappingUserName(useId)))); user_mapping_ddl_aclcheck(useId, srv->serverid, stmt->servername); @@ -1014,9 +1013,9 @@ AlterUserMapping(AlterUserMappingStmt *stmt) if (stmt->options) { - ForeignDataWrapper *fdw; - Datum datum; - bool isnull; + ForeignDataWrapper *fdw; + Datum datum; + bool isnull; /* * Process the options. @@ -1048,7 +1047,7 @@ AlterUserMapping(AlterUserMappingStmt *stmt) rel = heap_open(UserMappingRelationId, RowExclusiveLock); tp = heap_modify_tuple(tp, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &tp->t_self, tp); CatalogUpdateIndexes(rel, tp); @@ -1064,10 +1063,10 @@ AlterUserMapping(AlterUserMappingStmt *stmt) void RemoveUserMapping(DropUserMappingStmt *stmt) { - ObjectAddress object; - Oid useId; - Oid umId; - ForeignServer *srv; + ObjectAddress object; + Oid useId; + Oid umId; + ForeignServer *srv; useId = GetUserOidFromMapping(stmt->username, stmt->missing_ok); srv = GetForeignServerByName(stmt->servername, true); @@ -1075,8 +1074,8 @@ RemoveUserMapping(DropUserMappingStmt *stmt) if (stmt->username && !OidIsValid(useId)) { /* - * IF EXISTS specified, role not found and not public. - * Notice this and leave. + * IF EXISTS specified, role not found and not public. Notice this and + * leave. */ elog(NOTICE, "role \"%s\" does not exist, skipping", stmt->username); return; @@ -1087,8 +1086,8 @@ RemoveUserMapping(DropUserMappingStmt *stmt) if (!stmt->missing_ok) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", - stmt->servername))); + errmsg("server \"%s\" does not exist", + stmt->servername))); /* IF EXISTS, just note it */ ereport(NOTICE, (errmsg("server does not exist, skipping"))); return; @@ -1104,13 +1103,13 @@ RemoveUserMapping(DropUserMappingStmt *stmt) if (!stmt->missing_ok) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("user mapping \"%s\" does not exist for the server", - MappingUserName(useId)))); + errmsg("user mapping \"%s\" does not exist for the server", + MappingUserName(useId)))); /* IF EXISTS specified, just note it */ ereport(NOTICE, - (errmsg("user mapping \"%s\" does not exist for the server, skipping", - MappingUserName(useId)))); + (errmsg("user mapping \"%s\" does not exist for the server, skipping", + MappingUserName(useId)))); return; } diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index a6dd2cb6db9..2151fd94f09 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.109 2009/03/04 11:53:53 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.110 2009/06/11 14:48:55 momjian Exp $ * * DESCRIPTION * These routines take the parse tree and pick out the @@ -274,7 +274,7 @@ examine_parameter_list(List *parameters, Oid languageOid, if (!OidIsValid(get_element_type(toid))) ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), - errmsg("VARIADIC parameter must be an array"))); + errmsg("VARIADIC parameter must be an array"))); break; } } @@ -291,12 +291,12 @@ examine_parameter_list(List *parameters, Oid languageOid, if (fp->defexpr) { - Node *def; + Node *def; if (!isinput) ereport(ERROR, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), - errmsg("only input parameters can have default values"))); + errmsg("only input parameters can have default values"))); def = transformExpr(pstate, fp->defexpr); def = coerce_to_specific_type(pstate, def, toid, "DEFAULT"); @@ -324,7 +324,7 @@ examine_parameter_list(List *parameters, Oid languageOid, if (pstate->p_hasSubLinks) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot use subquery in parameter default value"))); + errmsg("cannot use subquery in parameter default value"))); if (pstate->p_hasAggs) ereport(ERROR, (errcode(ERRCODE_GROUPING_ERROR), @@ -685,7 +685,7 @@ interpret_AS_clause(Oid languageOid, const char *languageName, { /* * For "C" language, store the file name in probin and, when given, - * the link symbol name in prosrc. If link symbol is omitted, + * the link symbol name in prosrc. If link symbol is omitted, * substitute procedure name. We also allow link symbol to be * specified as "-", since that was the habit in PG versions before * 8.4, and there might be dump files out there that don't translate @@ -1243,7 +1243,7 @@ AlterFunctionOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId) } newtuple = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, - repl_null, repl_repl); + repl_null, repl_repl); simple_heap_update(rel, &newtuple->t_self, newtuple); CatalogUpdateIndexes(rel, newtuple); @@ -1375,7 +1375,7 @@ AlterFunction(AlterFunctionStmt *stmt) } tup = heap_modify_tuple(tup, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); } /* Do the update */ @@ -1513,7 +1513,7 @@ CreateCast(CreateCastStmt *stmt) /* Detemine the cast method */ if (stmt->func != NULL) castmethod = COERCION_METHOD_FUNCTION; - else if(stmt->inout) + else if (stmt->inout) castmethod = COERCION_METHOD_INOUT; else castmethod = COERCION_METHOD_BINARY; @@ -1541,7 +1541,7 @@ CreateCast(CreateCastStmt *stmt) if (!IsBinaryCoercible(sourcetypeid, procstruct->proargtypes.values[0])) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("argument of cast function must match or be binary-coercible from source data type"))); + errmsg("argument of cast function must match or be binary-coercible from source data type"))); if (nargs > 1 && procstruct->proargtypes.values[1] != INT4OID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), @@ -1573,7 +1573,7 @@ CreateCast(CreateCastStmt *stmt) if (procstruct->proiswindow) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("cast function must not be a window function"))); + errmsg("cast function must not be a window function"))); if (procstruct->proretset) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), @@ -1622,7 +1622,7 @@ CreateCast(CreateCastStmt *stmt) /* * We know that composite, enum and array types are never binary- - * compatible with each other. They all have OIDs embedded in them. + * compatible with each other. They all have OIDs embedded in them. * * Theoretically you could build a user-defined base type that is * binary-compatible with a composite, enum, or array type. But we @@ -1633,7 +1633,7 @@ CreateCast(CreateCastStmt *stmt) targettyptype == TYPTYPE_COMPOSITE) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("composite data types are not binary-compatible"))); + errmsg("composite data types are not binary-compatible"))); if (sourcetyptype == TYPTYPE_ENUM || targettyptype == TYPTYPE_ENUM) diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index f2ff5b6da21..c6a01f5b759 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.184 2009/04/04 17:40:36 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.185 2009/06/11 14:48:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -639,25 +639,25 @@ DefineIndex(RangeVar *heapRelation, * We can exclude any running transactions that have xmin > the xmin of * our reference snapshot; their oldest snapshot must be newer than ours. * We can also exclude any transactions that have xmin = zero, since they - * evidently have no live snapshot at all (and any one they might be - * in process of taking is certainly newer than ours). Transactions in - * other DBs can be ignored too, since they'll never even be able to see - * this index. + * evidently have no live snapshot at all (and any one they might be in + * process of taking is certainly newer than ours). Transactions in other + * DBs can be ignored too, since they'll never even be able to see this + * index. * * We can also exclude autovacuum processes and processes running manual * lazy VACUUMs, because they won't be fazed by missing index entries - * either. (Manual ANALYZEs, however, can't be excluded because they + * either. (Manual ANALYZEs, however, can't be excluded because they * might be within transactions that are going to do arbitrary operations * later.) * * Also, GetCurrentVirtualXIDs never reports our own vxid, so we need not * check for that. * - * If a process goes idle-in-transaction with xmin zero, we do not need - * to wait for it anymore, per the above argument. We do not have the - * infrastructure right now to stop waiting if that happens, but we can - * at least avoid the folly of waiting when it is idle at the time we - * would begin to wait. We do this by repeatedly rechecking the output of + * If a process goes idle-in-transaction with xmin zero, we do not need to + * wait for it anymore, per the above argument. We do not have the + * infrastructure right now to stop waiting if that happens, but we can at + * least avoid the folly of waiting when it is idle at the time we would + * begin to wait. We do this by repeatedly rechecking the output of * GetCurrentVirtualXIDs. If, during any iteration, a particular vxid * doesn't show up in the output, we know we can forget about it. */ @@ -680,12 +680,12 @@ DefineIndex(RangeVar *heapRelation, newer_snapshots = GetCurrentVirtualXIDs(snapshot->xmin, true, false, - PROC_IS_AUTOVACUUM | PROC_IN_VACUUM, + PROC_IS_AUTOVACUUM | PROC_IN_VACUUM, &n_newer_snapshots); for (j = i; j < n_old_snapshots; j++) { if (!VirtualTransactionIdIsValid(old_snapshots[j])) - continue; /* found uninteresting in previous cycle */ + continue; /* found uninteresting in previous cycle */ for (k = 0; k < n_newer_snapshots; k++) { if (VirtualTransactionIdEquals(old_snapshots[j], @@ -1058,7 +1058,7 @@ GetDefaultOpClass(Oid type_id, Oid am_id) ScanKeyData skey[1]; SysScanDesc scan; HeapTuple tup; - TYPCATEGORY tcategory; + TYPCATEGORY tcategory; /* If it's a domain, look at the base type instead */ type_id = getBaseType(type_id); diff --git a/src/backend/commands/lockcmds.c b/src/backend/commands/lockcmds.c index 1e9b5dd961a..043d68ac7a0 100644 --- a/src/backend/commands/lockcmds.c +++ b/src/backend/commands/lockcmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/lockcmds.c,v 1.24 2009/05/12 16:43:32 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/lockcmds.c,v 1.25 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -25,7 +25,7 @@ #include "utils/lsyscache.h" static void LockTableRecurse(Oid reloid, RangeVar *rv, - LOCKMODE lockmode, bool nowait, bool recurse); + LOCKMODE lockmode, bool nowait, bool recurse); /* @@ -67,9 +67,9 @@ LockTableRecurse(Oid reloid, RangeVar *rv, AclResult aclresult; /* - * Acquire the lock. We must do this first to protect against - * concurrent drops. Note that a lock against an already-dropped - * relation's OID won't fail. + * Acquire the lock. We must do this first to protect against concurrent + * drops. Note that a lock against an already-dropped relation's OID + * won't fail. */ if (nowait) { @@ -148,8 +148,8 @@ LockTableRecurse(Oid reloid, RangeVar *rv, */ if (recurse) { - List *children = find_inheritance_children(reloid, NoLock); - ListCell *lc; + List *children = find_inheritance_children(reloid, NoLock); + ListCell *lc; foreach(lc, children) { diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c index 0e454f8d025..daa8549e493 100644 --- a/src/backend/commands/operatorcmds.c +++ b/src/backend/commands/operatorcmds.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/operatorcmds.c,v 1.42 2009/01/01 17:23:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/operatorcmds.c,v 1.43 2009/06/11 14:48:56 momjian Exp $ * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the @@ -188,9 +188,9 @@ DefineOperator(List *names, List *parameters) functionOid = LookupFuncName(functionName, nargs, typeId, false); /* - * We require EXECUTE rights for the function. This isn't strictly - * necessary, since EXECUTE will be checked at any attempted use of - * the operator, but it seems like a good idea anyway. + * We require EXECUTE rights for the function. This isn't strictly + * necessary, since EXECUTE will be checked at any attempted use of the + * operator, but it seems like a good idea anyway. */ aclresult = pg_proc_aclcheck(functionOid, GetUserId(), ACL_EXECUTE); if (aclresult != ACLCHECK_OK) @@ -237,9 +237,9 @@ DefineOperator(List *names, List *parameters) typeId[4] = INTERNALOID; /* SpecialJoinInfo */ /* - * As of Postgres 8.4, the preferred signature for join estimators - * has 5 arguments, but we still allow the old 4-argument form. - * Try the preferred form first. + * As of Postgres 8.4, the preferred signature for join estimators has + * 5 arguments, but we still allow the old 4-argument form. Try the + * preferred form first. */ joinOid = LookupFuncName(joinName, 5, typeId, true); if (!OidIsValid(joinOid)) @@ -252,8 +252,8 @@ DefineOperator(List *names, List *parameters) if (get_func_rettype(joinOid) != FLOAT8OID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("join estimator function %s must return type \"float8\"", - NameListToString(joinName)))); + errmsg("join estimator function %s must return type \"float8\"", + NameListToString(joinName)))); /* Require EXECUTE rights for the estimator */ aclresult = pg_proc_aclcheck(joinOid, GetUserId(), ACL_EXECUTE); @@ -271,7 +271,7 @@ DefineOperator(List *names, List *parameters) oprNamespace, /* namespace */ typeId1, /* left type id */ typeId2, /* right type id */ - functionOid, /* function for operator */ + functionOid, /* function for operator */ commutatorName, /* optional commutator operator name */ negatorName, /* optional negator operator name */ restrictionOid, /* optional restrict. sel. procedure */ diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index 9940b92df5a..17192341739 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/portalcmds.c,v 1.78 2009/01/01 17:23:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/portalcmds.c,v 1.79 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -352,8 +352,8 @@ PersistHoldablePortal(Portal portal) ExecutorRewind(queryDesc); /* - * Change the destination to output to the tuplestore. Note we - * tell the tuplestore receiver to detoast all data passed through it. + * Change the destination to output to the tuplestore. Note we tell + * the tuplestore receiver to detoast all data passed through it. */ queryDesc->dest = CreateDestReceiver(DestTuplestore); SetTuplestoreDestReceiverParams(queryDesc->dest, diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c index e1c0edb8e85..0e948e4b72d 100644 --- a/src/backend/commands/prepare.c +++ b/src/backend/commands/prepare.c @@ -10,7 +10,7 @@ * Copyright (c) 2002-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.96 2009/01/02 20:42:00 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.97 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -350,7 +350,7 @@ EvaluateParams(PreparedStatement *pstmt, List *params, if (pstate->p_hasWindowFuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot use window function in EXECUTE parameter"))); + errmsg("cannot use window function in EXECUTE parameter"))); given_type_id = exprType(expr); diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index 9d30d57a579..afb61981cec 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/proclang.c,v 1.84 2009/01/01 17:23:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/proclang.c,v 1.85 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -140,7 +140,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) pltemplate->tmplhandler, pltemplate->tmpllibrary, false, /* isAgg */ - false, /* isWindowFunc */ + false, /* isWindowFunc */ false, /* security_definer */ false, /* isStrict */ PROVOLATILE_VOLATILE, @@ -175,7 +175,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) pltemplate->tmplvalidator, pltemplate->tmpllibrary, false, /* isAgg */ - false, /* isWindowFunc */ + false, /* isWindowFunc */ false, /* security_definer */ false, /* isStrict */ PROVOLATILE_VOLATILE, @@ -635,7 +635,7 @@ AlterLanguageOwner_internal(HeapTuple tup, Relation rel, Oid newOwnerId) } newtuple = heap_modify_tuple(tup, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &newtuple->t_self, newtuple); CatalogUpdateIndexes(rel, newtuple); diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c index 5b5c466ea99..5680da36579 100644 --- a/src/backend/commands/schemacmds.c +++ b/src/backend/commands/schemacmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/schemacmds.c,v 1.52 2009/01/01 17:23:39 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/schemacmds.c,v 1.53 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -87,8 +87,8 @@ CreateSchemaCommand(CreateSchemaStmt *stmt, const char *queryString) * temporarily set the current user so that the object(s) will be created * with the correct ownership. * - * (The setting will be restored at the end of this routine, or in case - * of error, transaction abort will clean things up.) + * (The setting will be restored at the end of this routine, or in case of + * error, transaction abort will clean things up.) */ if (saved_uid != owner_uid) SetUserIdAndContext(owner_uid, true); @@ -155,12 +155,12 @@ void RemoveSchemas(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; /* * First we identify all the schemas, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the schemas depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the schemas depends on another. */ objects = new_object_addresses(); diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 4da934970c3..e6c75ab014a 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.159 2009/04/04 21:12:31 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.160 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1199,8 +1199,8 @@ init_params(List *options, bool isInit, snprintf(bufm, sizeof(bufm), INT64_FORMAT, new->min_value); ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("RESTART value (%s) cannot be less than MINVALUE (%s)", - bufs, bufm))); + errmsg("RESTART value (%s) cannot be less than MINVALUE (%s)", + bufs, bufm))); } if (new->last_value > new->max_value) { @@ -1211,8 +1211,8 @@ init_params(List *options, bool isInit, snprintf(bufm, sizeof(bufm), INT64_FORMAT, new->max_value); ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("RESTART value (%s) cannot be greater than MAXVALUE (%s)", - bufs, bufm))); + errmsg("RESTART value (%s) cannot be greater than MAXVALUE (%s)", + bufs, bufm))); } /* CACHE */ diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index bc077c9d097..56bf67eef4c 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.285 2009/05/20 08:48:10 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.286 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -137,7 +137,7 @@ typedef struct AlteredTableInfo List *constraints; /* List of NewConstraint */ List *newvals; /* List of NewColumnValue */ bool new_notnull; /* T if we added new NOT NULL constraints */ - bool new_changeoids; /* T if we added/dropped the OID column */ + bool new_changeoids; /* T if we added/dropped the OID column */ Oid newTableSpace; /* new tablespace; 0 means no change */ /* Objects to rebuild after completing ALTER TYPE operations */ List *changedConstraintOids; /* OIDs of constraints to rebuild */ @@ -187,35 +187,35 @@ struct dropmsgstrings static const struct dropmsgstrings dropmsgstringarray[] = { {RELKIND_RELATION, - ERRCODE_UNDEFINED_TABLE, - gettext_noop("table \"%s\" does not exist"), - gettext_noop("table \"%s\" does not exist, skipping"), - gettext_noop("\"%s\" is not a table"), - gettext_noop("Use DROP TABLE to remove a table.")}, + ERRCODE_UNDEFINED_TABLE, + gettext_noop("table \"%s\" does not exist"), + gettext_noop("table \"%s\" does not exist, skipping"), + gettext_noop("\"%s\" is not a table"), + gettext_noop("Use DROP TABLE to remove a table.")}, {RELKIND_SEQUENCE, - ERRCODE_UNDEFINED_TABLE, - gettext_noop("sequence \"%s\" does not exist"), - gettext_noop("sequence \"%s\" does not exist, skipping"), - gettext_noop("\"%s\" is not a sequence"), - gettext_noop("Use DROP SEQUENCE to remove a sequence.")}, + ERRCODE_UNDEFINED_TABLE, + gettext_noop("sequence \"%s\" does not exist"), + gettext_noop("sequence \"%s\" does not exist, skipping"), + gettext_noop("\"%s\" is not a sequence"), + gettext_noop("Use DROP SEQUENCE to remove a sequence.")}, {RELKIND_VIEW, - ERRCODE_UNDEFINED_TABLE, - gettext_noop("view \"%s\" does not exist"), - gettext_noop("view \"%s\" does not exist, skipping"), - gettext_noop("\"%s\" is not a view"), - gettext_noop("Use DROP VIEW to remove a view.")}, + ERRCODE_UNDEFINED_TABLE, + gettext_noop("view \"%s\" does not exist"), + gettext_noop("view \"%s\" does not exist, skipping"), + gettext_noop("\"%s\" is not a view"), + gettext_noop("Use DROP VIEW to remove a view.")}, {RELKIND_INDEX, - ERRCODE_UNDEFINED_OBJECT, - gettext_noop("index \"%s\" does not exist"), - gettext_noop("index \"%s\" does not exist, skipping"), - gettext_noop("\"%s\" is not an index"), - gettext_noop("Use DROP INDEX to remove an index.")}, + ERRCODE_UNDEFINED_OBJECT, + gettext_noop("index \"%s\" does not exist"), + gettext_noop("index \"%s\" does not exist, skipping"), + gettext_noop("\"%s\" is not an index"), + gettext_noop("Use DROP INDEX to remove an index.")}, {RELKIND_COMPOSITE_TYPE, - ERRCODE_UNDEFINED_OBJECT, - gettext_noop("type \"%s\" does not exist"), - gettext_noop("type \"%s\" does not exist, skipping"), - gettext_noop("\"%s\" is not a type"), - gettext_noop("Use DROP TYPE to remove a type.")}, + ERRCODE_UNDEFINED_OBJECT, + gettext_noop("type \"%s\" does not exist"), + gettext_noop("type \"%s\" does not exist, skipping"), + gettext_noop("\"%s\" is not a type"), + gettext_noop("Use DROP TYPE to remove a type.")}, {'\0', 0, NULL, NULL, NULL, NULL} }; @@ -256,7 +256,7 @@ static void ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd, bool recurse, bool recursing); static void ATRewriteCatalogs(List **wqueue); static void ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel, - AlterTableCmd *cmd); + AlterTableCmd *cmd); static void ATRewriteTables(List **wqueue); static void ATRewriteTable(AlteredTableInfo *tab, Oid OIDNewHeap); static AlteredTableInfo *ATGetQueueEntry(List **wqueue, Relation rel); @@ -272,7 +272,7 @@ static void ATExecAddColumn(AlteredTableInfo *tab, Relation rel, ColumnDef *colDef, bool isOid); static void add_column_datatype_dependency(Oid relid, int32 attnum, Oid typid); static void ATPrepAddOids(List **wqueue, Relation rel, bool recurse, - AlterTableCmd *cmd); + AlterTableCmd *cmd); static void ATExecDropNotNull(Relation rel, const char *colName); static void ATExecSetNotNull(AlteredTableInfo *tab, Relation rel, const char *colName); @@ -290,17 +290,17 @@ static void ATExecDropColumn(List **wqueue, Relation rel, const char *colName, static void ATExecAddIndex(AlteredTableInfo *tab, Relation rel, IndexStmt *stmt, bool is_rebuild); static void ATExecAddConstraint(List **wqueue, - AlteredTableInfo *tab, Relation rel, - Node *newConstraint, bool recurse); + AlteredTableInfo *tab, Relation rel, + Node *newConstraint, bool recurse); static void ATAddCheckConstraint(List **wqueue, - AlteredTableInfo *tab, Relation rel, - Constraint *constr, - bool recurse, bool recursing); + AlteredTableInfo *tab, Relation rel, + Constraint *constr, + bool recurse, bool recursing); static void ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, FkConstraint *fkconstraint); static void ATExecDropConstraint(Relation rel, const char *constrName, - DropBehavior behavior, - bool recurse, bool recursing); + DropBehavior behavior, + bool recurse, bool recursing); static void ATPrepAlterColumnType(List **wqueue, AlteredTableInfo *tab, Relation rel, bool recurse, bool recursing, @@ -324,7 +324,7 @@ static void ATExecEnableDisableRule(Relation rel, char *rulename, static void ATExecAddInherit(Relation rel, RangeVar *parent); static void ATExecDropInherit(Relation rel, RangeVar *parent); static void copy_relation_data(SMgrRelation rel, SMgrRelation dst, - ForkNumber forkNum, bool istemp); + ForkNumber forkNum, bool istemp); /* ---------------------------------------------------------------- @@ -353,7 +353,7 @@ DefineRelation(CreateStmt *stmt, char relkind) Datum reloptions; ListCell *listptr; AttrNumber attnum; - static char *validnsps[] = HEAP_RELOPT_NAMESPACES; + static char *validnsps[] = HEAP_RELOPT_NAMESPACES; /* * Truncate relname to appropriate length (probably a waste of time, as @@ -435,7 +435,7 @@ DefineRelation(CreateStmt *stmt, char relkind) &inheritOids, &old_constraints, &parentOidCount); /* - * Create a tuple descriptor from the relation schema. Note that this + * Create a tuple descriptor from the relation schema. Note that this * deals with column names, types, and NOT NULL constraints, but not * default values or CHECK constraints; we handle those below. */ @@ -448,9 +448,9 @@ DefineRelation(CreateStmt *stmt, char relkind) * Find columns with default values and prepare for insertion of the * defaults. Pre-cooked (that is, inherited) defaults go into a list of * CookedConstraint structs that we'll pass to heap_create_with_catalog, - * while raw defaults go into a list of RawColumnDefault structs that - * will be processed by AddRelationNewConstraints. (We can't deal with - * raw expressions until we can do transformExpr.) + * while raw defaults go into a list of RawColumnDefault structs that will + * be processed by AddRelationNewConstraints. (We can't deal with raw + * expressions until we can do transformExpr.) * * We can set the atthasdef flags now in the tuple descriptor; this just * saves StoreAttrDefault from having to do an immediate update of the @@ -495,9 +495,9 @@ DefineRelation(CreateStmt *stmt, char relkind) } /* - * Create the relation. Inherited defaults and constraints are passed - * in for immediate handling --- since they don't need parsing, they - * can be stored immediately. + * Create the relation. Inherited defaults and constraints are passed in + * for immediate handling --- since they don't need parsing, they can be + * stored immediately. */ relationId = heap_create_with_catalog(relname, namespaceId, @@ -606,7 +606,7 @@ DropErrorMsgWrongType(const char *relname, char wrongkind, char rightkind) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg(rentry->nota_msg, relname), - (wentry->kind != '\0') ? errhint("%s", _(wentry->drophint_msg)) : 0)); + (wentry->kind != '\0') ? errhint("%s", _(wentry->drophint_msg)) : 0)); } /* @@ -622,8 +622,8 @@ RemoveRelations(DropStmt *drop) /* * First we identify all the relations, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the relations depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the relations depends on another. */ /* Determine required relkind */ @@ -648,7 +648,7 @@ RemoveRelations(DropStmt *drop) default: elog(ERROR, "unrecognized drop object type: %d", (int) drop->removeType); - relkind = 0; /* keep compiler quiet */ + relkind = 0; /* keep compiler quiet */ break; } @@ -862,11 +862,11 @@ ExecuteTruncate(TruncateStmt *stmt) #endif /* - * If we are asked to restart sequences, find all the sequences, - * lock them (we only need AccessShareLock because that's all that - * ALTER SEQUENCE takes), and check permissions. We want to do this - * early since it's pointless to do all the truncation work only to fail - * on sequence permissions. + * If we are asked to restart sequences, find all the sequences, lock them + * (we only need AccessShareLock because that's all that ALTER SEQUENCE + * takes), and check permissions. We want to do this early since it's + * pointless to do all the truncation work only to fail on sequence + * permissions. */ if (stmt->restart_seqs) { @@ -878,8 +878,8 @@ ExecuteTruncate(TruncateStmt *stmt) foreach(seqcell, seqlist) { - Oid seq_relid = lfirst_oid(seqcell); - Relation seq_rel; + Oid seq_relid = lfirst_oid(seqcell); + Relation seq_rel; seq_rel = relation_open(seq_relid, AccessShareLock); @@ -899,8 +899,8 @@ ExecuteTruncate(TruncateStmt *stmt) AfterTriggerBeginQuery(); /* - * To fire triggers, we'll need an EState as well as a ResultRelInfo - * for each relation. + * To fire triggers, we'll need an EState as well as a ResultRelInfo for + * each relation. */ estate = CreateExecutorState(); resultRelInfos = (ResultRelInfo *) @@ -912,7 +912,7 @@ ExecuteTruncate(TruncateStmt *stmt) InitResultRelInfo(resultRelInfo, rel, - 0, /* dummy rangetable index */ + 0, /* dummy rangetable index */ CMD_DELETE, /* don't need any index info */ false); resultRelInfo++; @@ -922,9 +922,9 @@ ExecuteTruncate(TruncateStmt *stmt) /* * Process all BEFORE STATEMENT TRUNCATE triggers before we begin - * truncating (this is because one of them might throw an error). - * Also, if we were to allow them to prevent statement execution, - * that would need to be handled here. + * truncating (this is because one of them might throw an error). Also, if + * we were to allow them to prevent statement execution, that would need + * to be handled here. */ resultRelInfo = resultRelInfos; foreach(cell, rels) @@ -996,18 +996,18 @@ ExecuteTruncate(TruncateStmt *stmt) /* * Lastly, restart any owned sequences if we were asked to. This is done - * last because it's nontransactional: restarts will not roll back if - * we abort later. Hence it's important to postpone them as long as + * last because it's nontransactional: restarts will not roll back if we + * abort later. Hence it's important to postpone them as long as * possible. (This is also a big reason why we locked and * permission-checked the sequences beforehand.) */ if (stmt->restart_seqs) { - List *options = list_make1(makeDefElem("restart", NULL)); + List *options = list_make1(makeDefElem("restart", NULL)); foreach(cell, seq_relids) { - Oid seq_relid = lfirst_oid(cell); + Oid seq_relid = lfirst_oid(cell); AlterSequenceInternal(seq_relid, options); } @@ -1361,7 +1361,7 @@ MergeAttributes(List *schema, List *supers, bool istemp, /* * Now copy the CHECK constraints of this parent, adjusting attnos - * using the completed newattno[] map. Identically named constraints + * using the completed newattno[] map. Identically named constraints * are merged if possible, else we throw error. */ if (constr && constr->num_check > 0) @@ -1387,7 +1387,7 @@ MergeAttributes(List *schema, List *supers, bool istemp, cooked = (CookedConstraint *) palloc(sizeof(CookedConstraint)); cooked->contype = CONSTR_CHECK; cooked->name = pstrdup(name); - cooked->attnum = 0; /* not used for constraints */ + cooked->attnum = 0; /* not used for constraints */ cooked->expr = expr; cooked->is_local = false; cooked->inhcount = 1; @@ -2052,8 +2052,8 @@ RenameRelation(Oid myrelid, const char *newrelname, ObjectType reltype) RelationGetRelationName(targetrelation)))); /* - * Don't allow ALTER TABLE on composite types. - * We want people to use ALTER TYPE for that. + * Don't allow ALTER TABLE on composite types. We want people to use ALTER + * TYPE for that. */ if (relkind == RELKIND_COMPOSITE_TYPE) ereport(ERROR, @@ -2089,8 +2089,8 @@ RenameRelationInternal(Oid myrelid, const char *newrelname, Oid namespaceId) Form_pg_class relform; /* - * Grab an exclusive lock on the target table, index, sequence or - * view, which we will NOT release until end of transaction. + * Grab an exclusive lock on the target table, index, sequence or view, + * which we will NOT release until end of transaction. */ targetrelation = relation_open(myrelid, AccessExclusiveLock); @@ -2166,7 +2166,7 @@ RenameRelationInternal(Oid myrelid, const char *newrelname, Oid namespaceId) * We also reject these commands if there are any pending AFTER trigger events * for the rel. This is certainly necessary for the rewriting variants of * ALTER TABLE, because they don't preserve tuple TIDs and so the pending - * events would try to fetch the wrong tuples. It might be overly cautious + * events would try to fetch the wrong tuples. It might be overly cautious * in other cases, but again it seems better to err on the side of paranoia. * * REINDEX calls this with "rel" referencing the index to be rebuilt; here @@ -2184,7 +2184,7 @@ CheckTableNotInUse(Relation rel, const char *stmt) if (rel->rd_refcnt != expected_refcnt) ereport(ERROR, (errcode(ERRCODE_OBJECT_IN_USE), - /* translator: first %s is a SQL command, eg ALTER TABLE */ + /* translator: first %s is a SQL command, eg ALTER TABLE */ errmsg("cannot %s \"%s\" because " "it is being used by active queries in this session", stmt, RelationGetRelationName(rel)))); @@ -2193,7 +2193,7 @@ CheckTableNotInUse(Relation rel, const char *stmt) AfterTriggerPendingOnRel(RelationGetRelid(rel))) ereport(ERROR, (errcode(ERRCODE_OBJECT_IN_USE), - /* translator: first %s is a SQL command, eg ALTER TABLE */ + /* translator: first %s is a SQL command, eg ALTER TABLE */ errmsg("cannot %s \"%s\" because " "it has pending trigger events", stmt, RelationGetRelationName(rel)))); @@ -2220,7 +2220,7 @@ CheckTableNotInUse(Relation rel, const char *stmt) * expressions that need to be evaluated with respect to the old table * schema. * - * ATRewriteCatalogs performs phase 2 for each affected table. (Note that + * ATRewriteCatalogs performs phase 2 for each affected table. (Note that * phases 2 and 3 normally do no explicit recursion, since phase 1 already * did it --- although some subcommands have to recurse in phase 2 instead.) * Certain subcommands need to be performed before others to avoid @@ -2244,9 +2244,10 @@ AlterTable(AlterTableStmt *stmt) switch (stmt->relkind) { case OBJECT_TABLE: + /* - * For mostly-historical reasons, we allow ALTER TABLE to apply - * to all relation types. + * For mostly-historical reasons, we allow ALTER TABLE to apply to + * all relation types. */ break; @@ -2363,7 +2364,8 @@ ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd, ATPrepAddColumn(wqueue, rel, recurse, cmd); pass = AT_PASS_ADD_COL; break; - case AT_AddColumnToView: /* add column via CREATE OR REPLACE VIEW */ + case AT_AddColumnToView: /* add column via CREATE OR REPLACE + * VIEW */ ATSimplePermissions(rel, true); /* Performs own recursion */ ATPrepAddColumn(wqueue, rel, recurse, cmd); @@ -2597,7 +2599,8 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel, switch (cmd->subtype) { case AT_AddColumn: /* ADD COLUMN */ - case AT_AddColumnToView: /* add column via CREATE OR REPLACE VIEW */ + case AT_AddColumnToView: /* add column via CREATE OR REPLACE + * VIEW */ ATExecAddColumn(tab, rel, (ColumnDef *) cmd->def, false); break; case AT_ColumnDefault: /* ALTER COLUMN DEFAULT */ @@ -3539,8 +3542,8 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel, if (isOid && childatt->attnum != ObjectIdAttributeNumber) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("child table \"%s\" has a conflicting \"%s\" column", - RelationGetRelationName(rel), colDef->colname))); + errmsg("child table \"%s\" has a conflicting \"%s\" column", + RelationGetRelationName(rel), colDef->colname))); /* Bump the existing child att's inhcount */ childatt->attinhcount++; @@ -3690,10 +3693,10 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel, * returned by AddRelationNewConstraints, so that the right thing happens * when a datatype's default applies. * - * We skip this step completely for views. For a view, we can only get + * We skip this step completely for views. For a view, we can only get * here from CREATE OR REPLACE VIEW, which historically doesn't set up - * defaults, not even for domain-typed columns. And in any case we mustn't - * invoke Phase 3 on a view, since it has no storage. + * defaults, not even for domain-typed columns. And in any case we + * mustn't invoke Phase 3 on a view, since it has no storage. */ if (relkind != RELKIND_VIEW && attribute.attnum > 0) { @@ -3715,7 +3718,7 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel, COERCION_ASSIGNMENT, COERCE_IMPLICIT_CAST, -1); - if (defval == NULL) /* should not happen */ + if (defval == NULL) /* should not happen */ elog(ERROR, "failed to coerce base type to domain"); } @@ -3740,8 +3743,8 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel, } /* - * If we are adding an OID column, we have to tell Phase 3 to rewrite - * the table to fix that. + * If we are adding an OID column, we have to tell Phase 3 to rewrite the + * table to fix that. */ if (isOid) tab->new_changeoids = true; @@ -3773,7 +3776,7 @@ add_column_datatype_dependency(Oid relid, int32 attnum, Oid typid) /* * ALTER TABLE SET WITH OIDS * - * Basically this is an ADD COLUMN for the special OID column. We have + * Basically this is an ADD COLUMN for the special OID column. We have * to cons up a ColumnDef node because the ADD COLUMN code needs one. */ static void @@ -4295,8 +4298,8 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName, performDeletion(&object, behavior); /* - * If we dropped the OID column, must adjust pg_class.relhasoids and - * tell Phase 3 to physically get rid of the column. + * If we dropped the OID column, must adjust pg_class.relhasoids and tell + * Phase 3 to physically get rid of the column. */ if (attnum == ObjectIdAttributeNumber) { @@ -4410,8 +4413,8 @@ ATExecAddConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, FkConstraint *fkconstraint = (FkConstraint *) newConstraint; /* - * Note that we currently never recurse for FK constraints, - * so the "recurse" flag is silently ignored. + * Note that we currently never recurse for FK constraints, so + * the "recurse" flag is silently ignored. * * Assign or validate constraint name */ @@ -4473,8 +4476,8 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, /* * Call AddRelationNewConstraints to do the work, making sure it works on - * a copy of the Constraint so transformExpr can't modify the original. - * It returns a list of cooked constraints. + * a copy of the Constraint so transformExpr can't modify the original. It + * returns a list of cooked constraints. * * If the constraint ends up getting merged with a pre-existing one, it's * omitted from the returned list, which is what we want: we do not need @@ -4584,7 +4587,8 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, pkrel = heap_openrv(fkconstraint->pktable, AccessExclusiveLock); /* - * Validity checks (permission checks wait till we have the column numbers) + * Validity checks (permission checks wait till we have the column + * numbers) */ if (pkrel->rd_rel->relkind != RELKIND_RELATION) ereport(ERROR, @@ -4810,8 +4814,8 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, NULL, /* no check constraint */ NULL, NULL, - true, /* islocal */ - 0); /* inhcount */ + true, /* islocal */ + 0); /* inhcount */ /* * Create the triggers that will enforce the constraint. @@ -5400,9 +5404,9 @@ ATExecDropConstraint(Relation rel, const char *constrName, /* Don't drop inherited constraints */ if (con->coninhcount > 0 && !recursing) ereport(ERROR, - (errcode(ERRCODE_INVALID_TABLE_DEFINITION), - errmsg("cannot drop inherited constraint \"%s\" of relation \"%s\"", - constrName, RelationGetRelationName(rel)))); + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("cannot drop inherited constraint \"%s\" of relation \"%s\"", + constrName, RelationGetRelationName(rel)))); /* Right now only CHECK constraints can be inherited */ if (con->contype == CONSTRAINT_CHECK) @@ -5459,7 +5463,7 @@ ATExecDropConstraint(Relation rel, const char *constrName, while (HeapTupleIsValid(tuple = systable_getnext(scan))) { - HeapTuple copy_tuple; + HeapTuple copy_tuple; con = (Form_pg_constraint) GETSTRUCT(tuple); @@ -5472,7 +5476,7 @@ ATExecDropConstraint(Relation rel, const char *constrName, found = true; - if (con->coninhcount <= 0) /* shouldn't happen */ + if (con->coninhcount <= 0) /* shouldn't happen */ elog(ERROR, "relation %u has non-inherited constraint \"%s\"", childrelid, constrName); @@ -5482,9 +5486,9 @@ ATExecDropConstraint(Relation rel, const char *constrName, if (recurse) { /* - * If the child constraint has other definition sources, - * just decrement its inheritance count; if not, recurse - * to delete it. + * If the child constraint has other definition sources, just + * decrement its inheritance count; if not, recurse to delete + * it. */ if (con->coninhcount == 1 && !con->conislocal) { @@ -5506,9 +5510,9 @@ ATExecDropConstraint(Relation rel, const char *constrName, else { /* - * If we were told to drop ONLY in this table (no - * recursion), we need to mark the inheritors' constraints - * as locally defined rather than inherited. + * If we were told to drop ONLY in this table (no recursion), + * we need to mark the inheritors' constraints as locally + * defined rather than inherited. */ con->coninhcount--; con->conislocal = true; @@ -5528,9 +5532,9 @@ ATExecDropConstraint(Relation rel, const char *constrName, if (!found) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("constraint \"%s\" of relation \"%s\" does not exist", - constrName, - RelationGetRelationName(childrel)))); + errmsg("constraint \"%s\" of relation \"%s\" does not exist", + constrName, + RelationGetRelationName(childrel)))); heap_close(childrel, NoLock); } @@ -5628,7 +5632,7 @@ ATPrepAlterColumnType(List **wqueue, if (pstate->p_hasWindowFuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot use window function in transform expression"))); + errmsg("cannot use window function in transform expression"))); } else { @@ -5745,8 +5749,8 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel, if (defaultexpr == NULL) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("default for column \"%s\" cannot be cast to type %s", - colName, format_type_be(targettype)))); + errmsg("default for column \"%s\" cannot be cast to type %s", + colName, format_type_be(targettype)))); } else defaultexpr = NULL; @@ -6536,7 +6540,7 @@ ATExecSetRelOptions(Relation rel, List *defList, bool isReset) Datum repl_val[Natts_pg_class]; bool repl_null[Natts_pg_class]; bool repl_repl[Natts_pg_class]; - static char *validnsps[] = HEAP_RELOPT_NAMESPACES; + static char *validnsps[] = HEAP_RELOPT_NAMESPACES; if (defList == NIL) return; /* nothing to do */ @@ -6555,7 +6559,7 @@ ATExecSetRelOptions(Relation rel, List *defList, bool isReset) /* Generate new proposed reloptions (text array) */ newOptions = transformRelOptions(isnull ? (Datum) 0 : datum, - defList, NULL, validnsps, false, isReset); + defList, NULL, validnsps, false, isReset); /* Validate */ switch (rel->rd_rel->relkind) @@ -6591,7 +6595,7 @@ ATExecSetRelOptions(Relation rel, List *defList, bool isReset) repl_repl[Anum_pg_class_reloptions - 1] = true; newtuple = heap_modify_tuple(tuple, RelationGetDescr(pgclass), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(pgclass, &newtuple->t_self, newtuple); @@ -6619,7 +6623,7 @@ ATExecSetRelOptions(Relation rel, List *defList, bool isReset) datum = SysCacheGetAttr(RELOID, tuple, Anum_pg_class_reloptions, &isnull); newOptions = transformRelOptions(isnull ? (Datum) 0 : datum, - defList, "toast", validnsps, false, isReset); + defList, "toast", validnsps, false, isReset); (void) heap_reloptions(RELKIND_TOASTVALUE, newOptions, true); @@ -6749,11 +6753,11 @@ ATExecSetTableSpace(Oid tableOid, Oid newTableSpace) RelationOpenSmgr(rel); /* - * Create and copy all forks of the relation, and schedule unlinking - * of old physical files. + * Create and copy all forks of the relation, and schedule unlinking of + * old physical files. * * NOTE: any conflict in relfilenode value will be caught in - * RelationCreateStorage(). + * RelationCreateStorage(). */ RelationCreateStorage(newrnode, rel->rd_istemp); @@ -7163,11 +7167,11 @@ MergeConstraintsIntoExisting(Relation child_rel, Relation parent_rel) while (HeapTupleIsValid(parent_tuple = systable_getnext(parent_scan))) { - Form_pg_constraint parent_con = (Form_pg_constraint) GETSTRUCT(parent_tuple); - SysScanDesc child_scan; - ScanKeyData child_key; - HeapTuple child_tuple; - bool found = false; + Form_pg_constraint parent_con = (Form_pg_constraint) GETSTRUCT(parent_tuple); + SysScanDesc child_scan; + ScanKeyData child_key; + HeapTuple child_tuple; + bool found = false; if (parent_con->contype != CONSTRAINT_CHECK) continue; @@ -7182,8 +7186,8 @@ MergeConstraintsIntoExisting(Relation child_rel, Relation parent_rel) while (HeapTupleIsValid(child_tuple = systable_getnext(child_scan))) { - Form_pg_constraint child_con = (Form_pg_constraint) GETSTRUCT(child_tuple); - HeapTuple child_copy; + Form_pg_constraint child_con = (Form_pg_constraint) GETSTRUCT(child_tuple); + HeapTuple child_copy; if (child_con->contype != CONSTRAINT_CHECK) continue; @@ -7344,8 +7348,8 @@ ATExecDropInherit(Relation rel, RangeVar *parent) heap_close(catalogRelation, RowExclusiveLock); /* - * Likewise, find inherited check constraints and disinherit them. - * To do this, we first need a list of the names of the parent's check + * Likewise, find inherited check constraints and disinherit them. To do + * this, we first need a list of the names of the parent's check * constraints. (We cheat a bit by only checking for name matches, * assuming that the expressions will match.) */ @@ -7380,14 +7384,14 @@ ATExecDropInherit(Relation rel, RangeVar *parent) while (HeapTupleIsValid(constraintTuple = systable_getnext(scan))) { Form_pg_constraint con = (Form_pg_constraint) GETSTRUCT(constraintTuple); - bool match; - ListCell *lc; + bool match; + ListCell *lc; if (con->contype != CONSTRAINT_CHECK) continue; match = false; - foreach (lc, connames) + foreach(lc, connames) { if (strcmp(NameStr(con->conname), (char *) lfirst(lc)) == 0) { @@ -7401,6 +7405,7 @@ ATExecDropInherit(Relation rel, RangeVar *parent) /* Decrement inhcount and possibly set islocal to true */ HeapTuple copyTuple = heap_copytuple(constraintTuple); Form_pg_constraint copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple); + if (copy_con->coninhcount <= 0) /* shouldn't happen */ elog(ERROR, "relation %u has non-inherited constraint \"%s\"", RelationGetRelid(rel), NameStr(copy_con->conname)); @@ -7484,9 +7489,10 @@ AlterTableNamespace(RangeVar *relation, const char *newschema, switch (stmttype) { case OBJECT_TABLE: + /* - * For mostly-historical reasons, we allow ALTER TABLE to apply - * to all relation types. + * For mostly-historical reasons, we allow ALTER TABLE to apply to + * all relation types. */ break; diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index ce276e5fe55..08d9593de91 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.246 2009/01/22 20:16:02 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.247 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -274,8 +274,8 @@ CreateTrigger(CreateTrigStmt *stmt, Oid constraintOid, bool checkPermissions) } /* - * Scan pg_trigger for existing triggers on relation. We do this only - * to give a nice error message if there's already a trigger of the same + * Scan pg_trigger for existing triggers on relation. We do this only to + * give a nice error message if there's already a trigger of the same * name. (The unique index on tgrelid/tgname would complain anyway.) * * NOTE that this is cool only because we have AccessExclusiveLock on the @@ -857,12 +857,12 @@ RemoveTriggerById(Oid trigOid) /* * We do not bother to try to determine whether any other triggers remain, - * which would be needed in order to decide whether it's safe to clear - * the relation's relhastriggers. (In any case, there might be a - * concurrent process adding new triggers.) Instead, just force a - * relcache inval to make other backends (and this one too!) rebuild - * their relcache entries. There's no great harm in leaving relhastriggers - * true even if there are no triggers left. + * which would be needed in order to decide whether it's safe to clear the + * relation's relhastriggers. (In any case, there might be a concurrent + * process adding new triggers.) Instead, just force a relcache inval to + * make other backends (and this one too!) rebuild their relcache entries. + * There's no great harm in leaving relhastriggers true even if there are + * no triggers left. */ CacheInvalidateRelcache(rel); @@ -1118,8 +1118,8 @@ RelationBuildTriggers(Relation relation) int i; /* - * Allocate a working array to hold the triggers (the array is extended - * if necessary) + * Allocate a working array to hold the triggers (the array is extended if + * necessary) */ maxtrigs = 16; triggers = (Trigger *) palloc(maxtrigs * sizeof(Trigger)); @@ -2095,8 +2095,8 @@ ExecBSTruncateTriggers(EState *estate, ResultRelInfo *relinfo) if (newtuple) ereport(ERROR, - (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), - errmsg("BEFORE STATEMENT trigger cannot return a value"))); + (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), + errmsg("BEFORE STATEMENT trigger cannot return a value"))); } } @@ -2264,7 +2264,7 @@ typedef SetConstraintStateData *SetConstraintState; * Per-trigger-event data * * The actual per-event data, AfterTriggerEventData, includes DONE/IN_PROGRESS - * status bits and one or two tuple CTIDs. Each event record also has an + * status bits and one or two tuple CTIDs. Each event record also has an * associated AfterTriggerSharedData that is shared across all instances * of similar events within a "chunk". * @@ -2278,12 +2278,13 @@ typedef SetConstraintStateData *SetConstraintState; * Although this is mutable state, we can keep it in AfterTriggerSharedData * because all instances of the same type of event in a given event list will * be fired at the same time, if they were queued between the same firing - * cycles. So we need only ensure that ats_firing_id is zero when attaching + * cycles. So we need only ensure that ats_firing_id is zero when attaching * a new event to an existing AfterTriggerSharedData record. */ typedef uint32 TriggerFlags; -#define AFTER_TRIGGER_OFFSET 0x0FFFFFFF /* must be low-order bits */ +#define AFTER_TRIGGER_OFFSET 0x0FFFFFFF /* must be low-order + * bits */ #define AFTER_TRIGGER_2CTIDS 0x10000000 #define AFTER_TRIGGER_DONE 0x20000000 #define AFTER_TRIGGER_IN_PROGRESS 0x40000000 @@ -2324,13 +2325,13 @@ typedef struct AfterTriggerEventDataOneCtid /* * To avoid palloc overhead, we keep trigger events in arrays in successively- * larger chunks (a slightly more sophisticated version of an expansible - * array). The space between CHUNK_DATA_START and freeptr is occupied by + * array). The space between CHUNK_DATA_START and freeptr is occupied by * AfterTriggerEventData records; the space between endfree and endptr is * occupied by AfterTriggerSharedData records. */ typedef struct AfterTriggerEventChunk { - struct AfterTriggerEventChunk *next; /* list link */ + struct AfterTriggerEventChunk *next; /* list link */ char *freeptr; /* start of free space in chunk */ char *endfree; /* end of free space in chunk */ char *endptr; /* end of chunk */ @@ -2555,9 +2556,9 @@ afterTriggerAddEvent(AfterTriggerEventList *events, /* check number of shared records in preceding chunk */ if ((chunk->endptr - chunk->endfree) <= (100 * sizeof(AfterTriggerSharedData))) - chunksize *= 2; /* okay, double it */ + chunksize *= 2; /* okay, double it */ else - chunksize /= 2; /* too many shared records */ + chunksize /= 2; /* too many shared records */ chunksize = Min(chunksize, MAX_CHUNK_SIZE); } chunk = MemoryContextAlloc(afterTriggers->event_cxt, chunksize); @@ -2574,8 +2575,8 @@ afterTriggerAddEvent(AfterTriggerEventList *events, } /* - * Try to locate a matching shared-data record already in the chunk. - * If none, make a new one. + * Try to locate a matching shared-data record already in the chunk. If + * none, make a new one. */ for (newshared = ((AfterTriggerShared) chunk->endptr) - 1; (char *) newshared >= chunk->endfree; @@ -2590,7 +2591,7 @@ afterTriggerAddEvent(AfterTriggerEventList *events, if ((char *) newshared < chunk->endfree) { *newshared = *evtshared; - newshared->ats_firing_id = 0; /* just to be sure */ + newshared->ats_firing_id = 0; /* just to be sure */ chunk->endfree = (char *) newshared; } @@ -2658,6 +2659,7 @@ afterTriggerRestoreEventList(AfterTriggerEventList *events, /* and clean up the tail chunk to be the right length */ events->tail->next = NULL; events->tail->freeptr = events->tailfree; + /* * We don't make any effort to remove now-unused shared data records. * They might still be useful, anyway. @@ -2940,7 +2942,7 @@ afterTriggerInvokeEvents(AfterTriggerEventList *events, trigdesc = rInfo->ri_TrigDesc; finfo = rInfo->ri_TrigFunctions; instr = rInfo->ri_TrigInstrument; - if (trigdesc == NULL) /* should not happen */ + if (trigdesc == NULL) /* should not happen */ elog(ERROR, "relation %u has no triggers", evtshared->ats_relid); } @@ -3015,7 +3017,7 @@ AfterTriggerBeginXact(void) MemoryContextAlloc(TopTransactionContext, sizeof(AfterTriggersData)); - afterTriggers->firing_counter = (CommandId) 1; /* mustn't be 0 */ + afterTriggers->firing_counter = (CommandId) 1; /* mustn't be 0 */ afterTriggers->state = SetConstraintStateCreate(8); afterTriggers->events.head = NULL; afterTriggers->events.tail = NULL; @@ -3348,8 +3350,8 @@ AfterTriggerEndSubXact(bool isCommit) else { /* - * Aborting. Release any event lists from queries being aborted, - * and restore query_depth to its pre-subxact value. + * Aborting. Release any event lists from queries being aborted, and + * restore query_depth to its pre-subxact value. */ while (afterTriggers->query_depth > afterTriggers->depth_stack[my_level]) { @@ -3721,7 +3723,7 @@ AfterTriggerSetState(ConstraintsSetStmt *stmt) /* * Make sure a snapshot has been established in case trigger - * functions need one. Note that we avoid setting a snapshot if + * functions need one. Note that we avoid setting a snapshot if * we don't find at least one trigger that has to be fired now. * This is so that BEGIN; SET CONSTRAINTS ...; SET TRANSACTION * ISOLATION LEVEL SERIALIZABLE; ... works properly. (If we are diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 7276cd50d40..5339e1783c4 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tsearchcmds.c,v 1.16 2009/01/22 20:16:02 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tsearchcmds.c,v 1.17 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -275,7 +275,7 @@ void RemoveTSParsers(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; if (!superuser()) ereport(ERROR, @@ -284,14 +284,14 @@ RemoveTSParsers(DropStmt *drop) /* * First we identify all the objects, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the objects depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the objects depends on another. */ objects = new_object_addresses(); foreach(cell, drop->objects) { - List *names = (List *) lfirst(cell); + List *names = (List *) lfirst(cell); Oid prsOid; ObjectAddress object; @@ -309,8 +309,8 @@ RemoveTSParsers(DropStmt *drop) else { ereport(NOTICE, - (errmsg("text search parser \"%s\" does not exist, skipping", - NameListToString(names)))); + (errmsg("text search parser \"%s\" does not exist, skipping", + NameListToString(names)))); } continue; } @@ -636,18 +636,18 @@ void RemoveTSDictionaries(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; /* * First we identify all the objects, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the objects depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the objects depends on another. */ objects = new_object_addresses(); foreach(cell, drop->objects) { - List *names = (List *) lfirst(cell); + List *names = (List *) lfirst(cell); Oid dictOid; ObjectAddress object; HeapTuple tup; @@ -661,14 +661,14 @@ RemoveTSDictionaries(DropStmt *drop) { ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("text search dictionary \"%s\" does not exist", - NameListToString(names)))); + errmsg("text search dictionary \"%s\" does not exist", + NameListToString(names)))); } else { ereport(NOTICE, - (errmsg("text search dictionary \"%s\" does not exist, skipping", - NameListToString(names)))); + (errmsg("text search dictionary \"%s\" does not exist, skipping", + NameListToString(names)))); } continue; } @@ -676,7 +676,7 @@ RemoveTSDictionaries(DropStmt *drop) tup = SearchSysCache(TSDICTOID, ObjectIdGetDatum(dictOid), 0, 0, 0); - if (!HeapTupleIsValid(tup)) /* should not happen */ + if (!HeapTupleIsValid(tup)) /* should not happen */ elog(ERROR, "cache lookup failed for text search dictionary %u", dictOid); @@ -824,7 +824,7 @@ AlterTSDictionary(AlterTSDictionaryStmt *stmt) repl_repl[Anum_pg_ts_dict_dictinitoption - 1] = true; newtup = heap_modify_tuple(tup, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &newtup->t_self, newtup); @@ -1127,7 +1127,7 @@ void RemoveTSTemplates(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; if (!superuser()) ereport(ERROR, @@ -1136,14 +1136,14 @@ RemoveTSTemplates(DropStmt *drop) /* * First we identify all the objects, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the objects depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the objects depends on another. */ objects = new_object_addresses(); foreach(cell, drop->objects) { - List *names = (List *) lfirst(cell); + List *names = (List *) lfirst(cell); Oid tmplOid; ObjectAddress object; @@ -1534,18 +1534,18 @@ void RemoveTSConfigurations(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; /* * First we identify all the objects, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the objects depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the objects depends on another. */ objects = new_object_addresses(); foreach(cell, drop->objects) { - List *names = (List *) lfirst(cell); + List *names = (List *) lfirst(cell); Oid cfgOid; Oid namespaceId; ObjectAddress object; @@ -1559,8 +1559,8 @@ RemoveTSConfigurations(DropStmt *drop) { ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("text search configuration \"%s\" does not exist", - NameListToString(names)))); + errmsg("text search configuration \"%s\" does not exist", + NameListToString(names)))); } else { @@ -1923,8 +1923,8 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt, repl_repl[Anum_pg_ts_config_map_mapdict - 1] = true; newtup = heap_modify_tuple(maptup, - RelationGetDescr(relMap), - repl_val, repl_null, repl_repl); + RelationGetDescr(relMap), + repl_val, repl_null, repl_repl); simple_heap_update(relMap, &newtup->t_self, newtup); CatalogUpdateIndexes(relMap, newtup); diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index cfbc2a75ae0..f791c53fe4d 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.133 2009/04/04 21:12:31 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.134 2009/06/11 14:48:56 momjian Exp $ * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the @@ -115,23 +115,23 @@ DefineType(List *names, List *parameters) bool byValue = false; char alignment = 'i'; /* default alignment */ char storage = 'p'; /* default TOAST storage method */ - DefElem *likeTypeEl = NULL; - DefElem *internalLengthEl = NULL; - DefElem *inputNameEl = NULL; - DefElem *outputNameEl = NULL; - DefElem *receiveNameEl = NULL; - DefElem *sendNameEl = NULL; - DefElem *typmodinNameEl = NULL; - DefElem *typmodoutNameEl = NULL; - DefElem *analyzeNameEl = NULL; - DefElem *categoryEl = NULL; - DefElem *preferredEl = NULL; - DefElem *delimiterEl = NULL; - DefElem *elemTypeEl = NULL; - DefElem *defaultValueEl = NULL; - DefElem *byValueEl = NULL; - DefElem *alignmentEl = NULL; - DefElem *storageEl = NULL; + DefElem *likeTypeEl = NULL; + DefElem *internalLengthEl = NULL; + DefElem *inputNameEl = NULL; + DefElem *outputNameEl = NULL; + DefElem *receiveNameEl = NULL; + DefElem *sendNameEl = NULL; + DefElem *typmodinNameEl = NULL; + DefElem *typmodoutNameEl = NULL; + DefElem *analyzeNameEl = NULL; + DefElem *categoryEl = NULL; + DefElem *preferredEl = NULL; + DefElem *delimiterEl = NULL; + DefElem *elemTypeEl = NULL; + DefElem *defaultValueEl = NULL; + DefElem *byValueEl = NULL; + DefElem *alignmentEl = NULL; + DefElem *storageEl = NULL; Oid inputOid; Oid outputOid; Oid receiveOid = InvalidOid; @@ -150,8 +150,8 @@ DefineType(List *names, List *parameters) * As of Postgres 8.4, we require superuser privilege to create a base * type. This is simple paranoia: there are too many ways to mess up the * system with an incorrect type definition (for instance, representation - * parameters that don't match what the C code expects). In practice - * it takes superuser privilege to create the I/O functions, and so the + * parameters that don't match what the C code expects). In practice it + * takes superuser privilege to create the I/O functions, and so the * former requirement that you own the I/O functions pretty much forced * superuserness anyway. We're just making doubly sure here. * @@ -277,13 +277,13 @@ DefineType(List *names, List *parameters) } /* - * Now interpret the options; we do this separately so that LIKE can - * be overridden by other options regardless of the ordering in the - * parameter list. + * Now interpret the options; we do this separately so that LIKE can be + * overridden by other options regardless of the ordering in the parameter + * list. */ if (likeTypeEl) { - Type likeType; + Type likeType; Form_pg_type likeForm; likeType = typenameType(NULL, defGetTypeName(likeTypeEl), NULL); @@ -319,8 +319,8 @@ DefineType(List *names, List *parameters) if (category < 32 || category > 126) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("invalid type category \"%s\": must be simple ASCII", - p))); + errmsg("invalid type category \"%s\": must be simple ASCII", + p))); } if (preferredEl) preferred = defGetBoolean(preferredEl); @@ -351,8 +351,8 @@ DefineType(List *names, List *parameters) /* * Note: if argument was an unquoted identifier, parser will have - * applied translations to it, so be prepared to recognize - * translated type names as well as the nominal form. + * applied translations to it, so be prepared to recognize translated + * type names as well as the nominal form. */ if (pg_strcasecmp(a, "double") == 0 || pg_strcasecmp(a, "float8") == 0 || @@ -536,7 +536,7 @@ DefineType(List *names, List *parameters) typeNamespace, /* namespace */ InvalidOid, /* relation oid (n/a here) */ 0, /* relation kind (ditto) */ - GetUserId(), /* owner's ID */ + GetUserId(), /* owner's ID */ internalLength, /* internal size */ TYPTYPE_BASE, /* type-type (base type) */ category, /* type-category */ @@ -578,7 +578,7 @@ DefineType(List *names, List *parameters) GetUserId(), /* owner's ID */ -1, /* internal size (always varlena) */ TYPTYPE_BASE, /* type-type (base type) */ - TYPCATEGORY_ARRAY, /* type-category (array) */ + TYPCATEGORY_ARRAY, /* type-category (array) */ false, /* array types are never preferred */ delimiter, /* array element delimiter */ F_ARRAY_IN, /* input procedure */ @@ -616,18 +616,18 @@ void RemoveTypes(DropStmt *drop) { ObjectAddresses *objects; - ListCell *cell; + ListCell *cell; /* * First we identify all the types, then we delete them in a single - * performMultipleDeletions() call. This is to avoid unwanted - * DROP RESTRICT errors if one of the types depends on another. + * performMultipleDeletions() call. This is to avoid unwanted DROP + * RESTRICT errors if one of the types depends on another. */ objects = new_object_addresses(); foreach(cell, drop->objects) { - List *names = (List *) lfirst(cell); + List *names = (List *) lfirst(cell); TypeName *typename; Oid typeoid; HeapTuple tup; @@ -1020,7 +1020,7 @@ DefineDomain(CreateDomainStmt *stmt) domainNamespace, /* namespace */ InvalidOid, /* relation oid (n/a here) */ 0, /* relation kind (ditto) */ - GetUserId(), /* owner's ID */ + GetUserId(), /* owner's ID */ internalLength, /* internal size */ TYPTYPE_DOMAIN, /* type-type (domain type) */ category, /* type-category */ @@ -1134,7 +1134,7 @@ DefineEnum(CreateEnumStmt *stmt) enumNamespace, /* namespace */ InvalidOid, /* relation oid (n/a here) */ 0, /* relation kind (ditto) */ - GetUserId(), /* owner's ID */ + GetUserId(), /* owner's ID */ sizeof(Oid), /* internal size */ TYPTYPE_ENUM, /* type-type (enum type) */ TYPCATEGORY_ENUM, /* type-category (enum type) */ @@ -1176,7 +1176,7 @@ DefineEnum(CreateEnumStmt *stmt) GetUserId(), /* owner's ID */ -1, /* internal size (always varlena) */ TYPTYPE_BASE, /* type-type (base type) */ - TYPCATEGORY_ARRAY, /* type-category (array) */ + TYPCATEGORY_ARRAY, /* type-category (array) */ false, /* array types are never preferred */ DEFAULT_TYPDELIM, /* array element delimiter */ F_ARRAY_IN, /* input procedure */ @@ -1610,8 +1610,8 @@ AlterDomainDefault(List *names, Node *defaultRaw) } newtuple = heap_modify_tuple(tup, RelationGetDescr(rel), - new_record, new_record_nulls, - new_record_repl); + new_record, new_record_nulls, + new_record_repl); simple_heap_update(rel, &tup->t_self, newtuple); @@ -2472,8 +2472,8 @@ RenameType(List *names, const char *newTypeName) /* * If it's a composite type, we need to check that it really is a - * free-standing composite type, and not a table's rowtype. We - * want people to use ALTER TABLE not ALTER TYPE for that case. + * free-standing composite type, and not a table's rowtype. We want people + * to use ALTER TABLE not ALTER TYPE for that case. */ if (typTup->typtype == TYPTYPE_COMPOSITE && get_rel_relkind(typTup->typrelid) != RELKIND_COMPOSITE_TYPE) @@ -2493,7 +2493,7 @@ RenameType(List *names, const char *newTypeName) errhint("You can alter type %s, which will alter the array type as well.", format_type_be(typTup->typelem)))); - /* + /* * If type is composite we need to rename associated pg_class entry too. * RenameRelationInternal will call RenameTypeInternal automatically. */ diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 22491cf3f78..6796a1f5e29 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/commands/user.c,v 1.186 2009/01/30 17:24:47 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/commands/user.c,v 1.187 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -684,7 +684,7 @@ AlterRole(AlterRoleStmt *stmt) } new_tuple = heap_modify_tuple(tuple, pg_authid_dsc, new_record, - new_record_nulls, new_record_repl); + new_record_nulls, new_record_repl); simple_heap_update(pg_authid_rel, &tuple->t_self, new_tuple); /* Update indexes */ @@ -802,7 +802,7 @@ AlterRoleSet(AlterRoleSetStmt *stmt) } newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(rel), - repl_val, repl_null, repl_repl); + repl_val, repl_null, repl_repl); simple_heap_update(rel, &oldtuple->t_self, newtuple); CatalogUpdateIndexes(rel, newtuple); @@ -1143,7 +1143,7 @@ GrantRole(GrantRoleStmt *stmt) if (rolename == NULL || priv->cols != NIL) ereport(ERROR, (errcode(ERRCODE_INVALID_GRANT_OPERATION), - errmsg("column names cannot be included in GRANT/REVOKE ROLE"))); + errmsg("column names cannot be included in GRANT/REVOKE ROLE"))); roleid = get_roleid_checked(rolename); if (stmt->is_grant) @@ -1366,8 +1366,8 @@ AddRoleMems(const char *rolename, Oid roleid, new_record_repl[Anum_pg_auth_members_grantor - 1] = true; new_record_repl[Anum_pg_auth_members_admin_option - 1] = true; tuple = heap_modify_tuple(authmem_tuple, pg_authmem_dsc, - new_record, - new_record_nulls, new_record_repl); + new_record, + new_record_nulls, new_record_repl); simple_heap_update(pg_authmem_rel, &tuple->t_self, tuple); CatalogUpdateIndexes(pg_authmem_rel, tuple); ReleaseSysCache(authmem_tuple); @@ -1375,7 +1375,7 @@ AddRoleMems(const char *rolename, Oid roleid, else { tuple = heap_form_tuple(pg_authmem_dsc, - new_record, new_record_nulls); + new_record, new_record_nulls); simple_heap_insert(pg_authmem_rel, tuple); CatalogUpdateIndexes(pg_authmem_rel, tuple); } @@ -1485,8 +1485,8 @@ DelRoleMems(const char *rolename, Oid roleid, new_record_repl[Anum_pg_auth_members_admin_option - 1] = true; tuple = heap_modify_tuple(authmem_tuple, pg_authmem_dsc, - new_record, - new_record_nulls, new_record_repl); + new_record, + new_record_nulls, new_record_repl); simple_heap_update(pg_authmem_rel, &tuple->t_self, tuple); CatalogUpdateIndexes(pg_authmem_rel, tuple); } diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 4a5ae53d484..732f6d09c30 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.388 2009/06/06 22:13:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.389 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -655,7 +655,7 @@ vacuum_set_xid_limits(int freeze_min_age, if (freezeTableLimit != NULL) { - int freezetable; + int freezetable; /* * Determine the table freeze age to use: as specified by the caller, @@ -671,8 +671,8 @@ vacuum_set_xid_limits(int freeze_min_age, Assert(freezetable >= 0); /* - * Compute the cutoff XID, being careful not to generate a - * "permanent" XID. + * Compute the cutoff XID, being careful not to generate a "permanent" + * XID. */ limit = ReadNewTransactionId() - freezetable; if (!TransactionIdIsNormal(limit)) @@ -1031,16 +1031,16 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound, StartTransactionCommand(); /* - * Functions in indexes may want a snapshot set. Also, setting - * a snapshot ensures that RecentGlobalXmin is kept truly recent. + * Functions in indexes may want a snapshot set. Also, setting a snapshot + * ensures that RecentGlobalXmin is kept truly recent. */ PushActiveSnapshot(GetTransactionSnapshot()); if (!vacstmt->full) { /* - * In lazy vacuum, we can set the PROC_IN_VACUUM flag, which lets other - * concurrent VACUUMs know that they can ignore this one while + * In lazy vacuum, we can set the PROC_IN_VACUUM flag, which lets + * other concurrent VACUUMs know that they can ignore this one while * determining their OldestXmin. (The reason we don't set it during a * full VACUUM is exactly that we may have to run user- defined * functions for functional indexes, and we want to make sure that if @@ -1049,9 +1049,9 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound, * contents of other tables is arguably broken, but we won't break it * here by violating transaction semantics.) * - * We also set the VACUUM_FOR_WRAPAROUND flag, which is passed down - * by autovacuum; it's used to avoid cancelling a vacuum that was - * invoked in an emergency. + * We also set the VACUUM_FOR_WRAPAROUND flag, which is passed down by + * autovacuum; it's used to avoid cancelling a vacuum that was invoked + * in an emergency. * * Note: these flags remain set until CommitTransaction or * AbortTransaction. We don't want to clear them until we reset @@ -1108,8 +1108,8 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound, { if (onerel->rd_rel->relisshared) ereport(WARNING, - (errmsg("skipping \"%s\" --- only superuser can vacuum it", - RelationGetRelationName(onerel)))); + (errmsg("skipping \"%s\" --- only superuser can vacuum it", + RelationGetRelationName(onerel)))); else if (onerel->rd_rel->relnamespace == PG_CATALOG_NAMESPACE) ereport(WARNING, (errmsg("skipping \"%s\" --- only superuser or database owner can vacuum it", @@ -1125,8 +1125,9 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound, } /* - * Check that it's a vacuumable table; we used to do this in get_rel_oids() - * but seems safer to check after we've locked the relation. + * Check that it's a vacuumable table; we used to do this in + * get_rel_oids() but seems safer to check after we've locked the + * relation. */ if (onerel->rd_rel->relkind != RELKIND_RELATION && onerel->rd_rel->relkind != RELKIND_TOASTVALUE) @@ -1178,9 +1179,8 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound, toast_relid = InvalidOid; /* - * Switch to the table owner's userid, so that any index functions are - * run as that user. (This is unnecessary, but harmless, for lazy - * VACUUM.) + * Switch to the table owner's userid, so that any index functions are run + * as that user. (This is unnecessary, but harmless, for lazy VACUUM.) */ GetUserIdAndContext(&save_userid, &save_secdefcxt); SetUserIdAndContext(onerel->rd_rel->relowner, true); @@ -1740,13 +1740,13 @@ scan_heap(VRelStats *vacrelstats, Relation onerel, /* * Add the page to vacuum_pages if it requires reaping, and add it to * fraged_pages if it has a useful amount of free space. "Useful" - * means enough for a minimal-sized tuple. But we don't know that + * means enough for a minimal-sized tuple. But we don't know that * accurately near the start of the relation, so add pages * unconditionally if they have >= BLCKSZ/10 free space. Also * forcibly add pages with no live tuples, to avoid confusing the * empty_end_pages logic. (In the presence of unreasonably small - * fillfactor, it seems possible that such pages might not pass - * the free-space test, but they had better be in the list anyway.) + * fillfactor, it seems possible that such pages might not pass the + * free-space test, but they had better be in the list anyway.) */ do_frag = (vacpage->free >= min_tlen || vacpage->free >= BLCKSZ / 10 || notup); @@ -2228,7 +2228,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, /* assume block# is OK (see heap_fetch comments) */ nextBuf = ReadBufferExtended(onerel, MAIN_FORKNUM, ItemPointerGetBlockNumber(&nextTid), - RBM_NORMAL, vac_strategy); + RBM_NORMAL, vac_strategy); nextPage = BufferGetPage(nextBuf); /* If bogus or unused slot, assume tp is end of chain */ nextOffnum = ItemPointerGetOffsetNumber(&nextTid); @@ -2373,7 +2373,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, tp.t_self = vtlp->this_tid; Pbuf = ReadBufferExtended(onerel, MAIN_FORKNUM, ItemPointerGetBlockNumber(&(tp.t_self)), - RBM_NORMAL, vac_strategy); + RBM_NORMAL, vac_strategy); Ppage = BufferGetPage(Pbuf); Pitemid = PageGetItemId(Ppage, ItemPointerGetOffsetNumber(&(tp.t_self))); @@ -2457,7 +2457,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel, tuple.t_self = vtmove[ti].tid; Cbuf = ReadBufferExtended(onerel, MAIN_FORKNUM, ItemPointerGetBlockNumber(&(tuple.t_self)), - RBM_NORMAL, vac_strategy); + RBM_NORMAL, vac_strategy); /* Get page to move to */ dst_buffer = ReadBufferExtended(onerel, MAIN_FORKNUM, @@ -3400,8 +3400,8 @@ scan_index(Relation indrel, double num_tuples) return; /* - * Now update statistics in pg_class, but only if the index says the - * count is accurate. + * Now update statistics in pg_class, but only if the index says the count + * is accurate. */ if (!stats->estimated_count) vac_update_relstats(indrel, @@ -3477,8 +3477,8 @@ vacuum_index(VacPageList vacpagelist, Relation indrel, return; /* - * Now update statistics in pg_class, but only if the index says the - * count is accurate. + * Now update statistics in pg_class, but only if the index says the count + * is accurate. */ if (!stats->estimated_count) vac_update_relstats(indrel, @@ -3835,7 +3835,7 @@ PageGetFreeSpaceWithFillFactor(Relation relation, Page page) { /* * It is correct to use PageGetExactFreeSpace() here, *not* - * PageGetHeapFreeSpace(). This is because (a) we do our own, exact + * PageGetHeapFreeSpace(). This is because (a) we do our own, exact * accounting for whether line pointers must be added, and (b) we will * recycle any LP_DEAD line pointers before starting to add rows to a * page, but that may not have happened yet at the time this function is diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index dd0691d0fe7..01aa11a6d21 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -29,7 +29,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.120 2009/06/06 22:13:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.121 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -87,7 +87,7 @@ typedef struct LVRelStats bool scanned_all; /* have we scanned all pages (this far)? */ /* Overall statistics about rel */ BlockNumber rel_pages; - double old_rel_tuples; /* previous value of pg_class.reltuples */ + double old_rel_tuples; /* previous value of pg_class.reltuples */ double rel_tuples; /* counts only tuples on scanned pages */ BlockNumber pages_removed; double tuples_deleted; @@ -175,14 +175,14 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); - vacrelstats->scanned_all = true; /* will be cleared if we skip a page */ + vacrelstats->scanned_all = true; /* will be cleared if we skip a page */ vacrelstats->old_rel_tuples = onerel->rd_rel->reltuples; vacrelstats->num_index_scans = 0; /* Open all indexes of the relation */ vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); vacrelstats->hasindex = (nindexes > 0); - + /* Do the vacuuming */ lazy_scan_heap(onerel, vacrelstats, Irel, nindexes, scan_all); @@ -208,9 +208,9 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, * Update statistics in pg_class. But only if we didn't skip any pages; * the tuple count only includes tuples from the pages we've visited, and * we haven't frozen tuples in unvisited pages either. The page count is - * accurate in any case, but because we use the reltuples / relpages - * ratio in the planner, it's better to not update relpages either if we - * can't update reltuples. + * accurate in any case, but because we use the reltuples / relpages ratio + * in the planner, it's better to not update relpages either if we can't + * update reltuples. */ if (vacrelstats->scanned_all) vac_update_relstats(onerel, @@ -279,7 +279,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, int i; PGRUsage ru0; Buffer vmbuffer = InvalidBuffer; - BlockNumber all_visible_streak; + BlockNumber all_visible_streak; pg_rusage_init(&ru0); @@ -318,8 +318,8 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, bool all_visible; /* - * Skip pages that don't require vacuuming according to the - * visibility map. But only if we've seen a streak of at least + * Skip pages that don't require vacuuming according to the visibility + * map. But only if we've seen a streak of at least * SKIP_PAGES_THRESHOLD pages marked as clean. Since we're reading * sequentially, the OS should be doing readahead for us and there's * no gain in skipping a page now and then. You need a longer run of @@ -558,9 +558,10 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, all_visible = false; break; } + /* - * The inserter definitely committed. But is it - * old enough that everyone sees it as committed? + * The inserter definitely committed. But is it old + * enough that everyone sees it as committed? */ xmin = HeapTupleHeaderGetXmin(tuple.t_data); if (!TransactionIdPrecedes(xmin, OldestXmin)) @@ -922,8 +923,8 @@ lazy_cleanup_index(Relation indrel, return; /* - * Now update statistics in pg_class, but only if the index says the - * count is accurate. + * Now update statistics in pg_class, but only if the index says the count + * is accurate. */ if (!stats->estimated_count) vac_update_relstats(indrel, diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index c9236f7e80a..1374b651229 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/variable.c,v 1.129 2009/01/01 17:23:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/variable.c,v 1.130 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -268,7 +268,7 @@ assign_timezone(const char *value, bool doit, GucSource source) /* * Try to parse it. XXX an invalid interval format will result in - * ereport(ERROR), which is not desirable for GUC. We did what we + * ereport(ERROR), which is not desirable for GUC. We did what we * could to guard against this in flatten_set_variable_args, but a * string coming in from postgresql.conf might contain anything. */ @@ -290,7 +290,7 @@ assign_timezone(const char *value, bool doit, GucSource source) { ereport(GUC_complaint_elevel(source), (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("invalid interval value for time zone: day not allowed"))); + errmsg("invalid interval value for time zone: day not allowed"))); pfree(interval); return NULL; } @@ -843,7 +843,7 @@ assign_role(const char *value, bool doit, GucSource source) /* * Disallow SET ROLE inside a security definer context. We need to do * this because when we exit the context, GUC won't be notified, - * leaving things out of sync. Note that this test is arranged so + * leaving things out of sync. Note that this test is arranged so * that restoring a previously saved setting isn't prevented. * * XXX it would be nice to allow this case in future, with the diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index ab8e6a78fc3..b06a48b7aba 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.115 2009/04/04 21:12:31 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.116 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -185,14 +185,14 @@ DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace) checkViewTupleDesc(descriptor, rel->rd_att); /* - * If new attributes have been added, we must add pg_attribute entries + * If new attributes have been added, we must add pg_attribute entries * for them. It is convenient (although overkill) to use the ALTER * TABLE ADD COLUMN infrastructure for this. */ if (list_length(attrList) > rel->rd_att->natts) { - List *atcmds = NIL; - ListCell *c; + List *atcmds = NIL; + ListCell *c; int skip = rel->rd_att->natts; foreach(c, attrList) @@ -273,9 +273,9 @@ checkViewTupleDesc(TupleDesc newdesc, TupleDesc olddesc) if (strcmp(NameStr(newattr->attname), NameStr(oldattr->attname)) != 0) ereport(ERROR, (errcode(ERRCODE_INVALID_TABLE_DEFINITION), - errmsg("cannot change name of view column \"%s\" to \"%s\"", - NameStr(oldattr->attname), - NameStr(newattr->attname)))); + errmsg("cannot change name of view column \"%s\" to \"%s\"", + NameStr(oldattr->attname), + NameStr(newattr->attname)))); /* XXX would it be safe to allow atttypmod to change? Not sure */ if (newattr->atttypid != oldattr->atttypid || newattr->atttypmod != oldattr->atttypmod) diff --git a/src/backend/executor/execCurrent.c b/src/backend/executor/execCurrent.c index 2c1a1731dbc..d9ecc973e1e 100644 --- a/src/backend/executor/execCurrent.c +++ b/src/backend/executor/execCurrent.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/executor/execCurrent.c,v 1.9 2009/01/01 17:23:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execCurrent.c,v 1.10 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -138,8 +138,8 @@ execCurrentOf(CurrentOfExpr *cexpr, /* * This table didn't produce the cursor's current row; some other - * inheritance child of the same parent must have. Signal caller - * to do nothing on this table. + * inheritance child of the same parent must have. Signal caller to + * do nothing on this table. */ return false; } diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 03461a235af..1c6fd02e1fe 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -26,7 +26,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.324 2009/05/07 22:58:28 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.325 2009/06/11 14:48:56 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -62,9 +62,9 @@ /* Hooks for plugins to get control in ExecutorStart/Run/End() */ -ExecutorStart_hook_type ExecutorStart_hook = NULL; -ExecutorRun_hook_type ExecutorRun_hook = NULL; -ExecutorEnd_hook_type ExecutorEnd_hook = NULL; +ExecutorStart_hook_type ExecutorStart_hook = NULL; +ExecutorRun_hook_type ExecutorRun_hook = NULL; +ExecutorEnd_hook_type ExecutorEnd_hook = NULL; typedef struct evalPlanQual { @@ -552,17 +552,17 @@ ExecCheckRTEPerms(RangeTblEntry *rte) } /* - * Basically the same for the mod columns, with either INSERT or UPDATE - * privilege as specified by remainingPerms. + * Basically the same for the mod columns, with either INSERT or + * UPDATE privilege as specified by remainingPerms. */ remainingPerms &= ~ACL_SELECT; if (remainingPerms != 0) { /* - * When the query doesn't explicitly change any columns, allow - * the query if we have permission on any column of the rel. This - * is to handle SELECT FOR UPDATE as well as possible corner cases - * in INSERT and UPDATE. + * When the query doesn't explicitly change any columns, allow the + * query if we have permission on any column of the rel. This is + * to handle SELECT FOR UPDATE as well as possible corner cases in + * INSERT and UPDATE. */ if (bms_is_empty(rte->modifiedCols)) { @@ -843,9 +843,9 @@ InitPlan(QueryDesc *queryDesc, int eflags) /* * Initialize the junk filter if needed. SELECT and INSERT queries need a - * filter if there are any junk attrs in the tlist. UPDATE and - * DELETE always need a filter, since there's always a junk 'ctid' - * attribute present --- no need to look first. + * filter if there are any junk attrs in the tlist. UPDATE and DELETE + * always need a filter, since there's always a junk 'ctid' attribute + * present --- no need to look first. * * This section of code is also a convenient place to verify that the * output of an INSERT or UPDATE matches the target table(s). @@ -1194,7 +1194,7 @@ ExecCheckPlanOutput(Relation resultRel, List *targetList) errdetail("Table has type %s at ordinal position %d, but query expects %s.", format_type_be(attr->atttypid), attno, - format_type_be(exprType((Node *) tle->expr))))); + format_type_be(exprType((Node *) tle->expr))))); } else { @@ -1215,7 +1215,7 @@ ExecCheckPlanOutput(Relation resultRel, List *targetList) if (attno != resultDesc->natts) ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("table row type and query-specified row type do not match"), + errmsg("table row type and query-specified row type do not match"), errdetail("Query has too few columns."))); } @@ -1547,7 +1547,7 @@ lnext: ; /* if child rel, must check whether it produced this row */ if (erm->rti != erm->prti) { - Oid tableoid; + Oid tableoid; datum = ExecGetJunkAttribute(slot, erm->toidAttNo, @@ -1774,8 +1774,8 @@ ExecInsert(TupleTableSlot *slot, * rowtype. * * XXX if we ever wanted to allow users to assign their own OIDs to new - * rows, this'd be the place to do it. For the moment, we make a point - * of doing this before calling triggers, so that a user-supplied trigger + * rows, this'd be the place to do it. For the moment, we make a point of + * doing this before calling triggers, so that a user-supplied trigger * could hack the OID if desired. */ if (resultRelationDesc->rd_rel->relhasoids) @@ -2847,7 +2847,7 @@ OpenIntoRel(QueryDesc *queryDesc) Oid intoRelationId; TupleDesc tupdesc; DR_intorel *myState; - static char *validnsps[] = HEAP_RELOPT_NAMESPACES; + static char *validnsps[] = HEAP_RELOPT_NAMESPACES; Assert(into); @@ -2970,8 +2970,8 @@ OpenIntoRel(QueryDesc *queryDesc) myState->rel = intoRelationDesc; /* - * We can skip WAL-logging the insertions, unless PITR is in use. We - * can skip the FSM in any case. + * We can skip WAL-logging the insertions, unless PITR is in use. We can + * skip the FSM in any case. */ myState->hi_options = HEAP_INSERT_SKIP_FSM | (XLogArchivingActive() ? 0 : HEAP_INSERT_SKIP_WAL); diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 65bf01c6a8e..a0e4566630b 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.248 2009/06/09 22:00:57 petere Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execQual.c,v 1.249 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -63,8 +63,8 @@ static Datum ExecEvalAggref(AggrefExprState *aggref, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); static Datum ExecEvalWindowFunc(WindowFuncExprState *wfunc, - ExprContext *econtext, - bool *isNull, ExprDoneCond *isDone); + ExprContext *econtext, + bool *isNull, ExprDoneCond *isDone); static Datum ExecEvalVar(ExprState *exprstate, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); static Datum ExecEvalScalarVar(ExprState *exprstate, ExprContext *econtext, @@ -78,7 +78,7 @@ static Datum ExecEvalConst(ExprState *exprstate, ExprContext *econtext, static Datum ExecEvalParam(ExprState *exprstate, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); static void init_fcache(Oid foid, FuncExprState *fcache, - MemoryContext fcacheCxt, bool needDescForSets); + MemoryContext fcacheCxt, bool needDescForSets); static void ShutdownFuncExpr(Datum arg); static TupleDesc get_cached_rowtype(Oid type_id, int32 typmod, TupleDesc *cache_field, ExprContext *econtext); @@ -617,7 +617,7 @@ ExecEvalVar(ExprState *exprstate, ExprContext *econtext, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("table row type and query-specified row type do not match"), errdetail_plural("Table row contains %d attribute, but query expects %d.", - "Table row contains %d attributes, but query expects %d.", + "Table row contains %d attributes, but query expects %d.", slot_tupdesc->natts, slot_tupdesc->natts, var_tupdesc->natts))); @@ -1044,10 +1044,10 @@ init_fcache(Oid foid, FuncExprState *fcache, if (list_length(fcache->args) > FUNC_MAX_ARGS) ereport(ERROR, (errcode(ERRCODE_TOO_MANY_ARGUMENTS), - errmsg_plural("cannot pass more than %d argument to a function", - "cannot pass more than %d arguments to a function", - FUNC_MAX_ARGS, - FUNC_MAX_ARGS))); + errmsg_plural("cannot pass more than %d argument to a function", + "cannot pass more than %d arguments to a function", + FUNC_MAX_ARGS, + FUNC_MAX_ARGS))); /* Set up the primary fmgr lookup information */ fmgr_info_cxt(foid, &(fcache->func), fcacheCxt); @@ -1237,7 +1237,7 @@ ExecEvalFuncArgs(FunctionCallInfo fcinfo, * ExecPrepareTuplestoreResult * * Subroutine for ExecMakeFunctionResult: prepare to extract rows from a - * tuplestore function result. We must set up a funcResultSlot (unless + * tuplestore function result. We must set up a funcResultSlot (unless * already done in a previous call cycle) and verify that the function * returned the expected tuple descriptor. */ @@ -1268,9 +1268,8 @@ ExecPrepareTuplestoreResult(FuncExprState *fcache, } /* - * If function provided a tupdesc, cross-check it. We only really - * need to do this for functions returning RECORD, but might as well - * do it always. + * If function provided a tupdesc, cross-check it. We only really need to + * do this for functions returning RECORD, but might as well do it always. */ if (resultDesc) { @@ -1316,7 +1315,7 @@ tupledesc_match(TupleDesc dst_tupdesc, TupleDesc src_tupdesc) (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("function return row and query-specified return row do not match"), errdetail_plural("Returned row contains %d attribute, but query expects %d.", - "Returned row contains %d attributes, but query expects %d.", + "Returned row contains %d attributes, but query expects %d.", src_tupdesc->natts, src_tupdesc->natts, dst_tupdesc->natts))); @@ -1353,7 +1352,7 @@ tupledesc_match(TupleDesc dst_tupdesc, TupleDesc src_tupdesc) * init_fcache is presumed already run on the FuncExprState. * * This function handles the most general case, wherein the function or - * one of its arguments might (or might not) return a set. If we find + * one of its arguments might (or might not) return a set. If we find * no sets involved, we will change the FuncExprState's function pointer * to use a simpler method on subsequent calls. */ @@ -1379,13 +1378,13 @@ restart: check_stack_depth(); /* - * If a previous call of the function returned a set result in the form - * of a tuplestore, continue reading rows from the tuplestore until it's + * If a previous call of the function returned a set result in the form of + * a tuplestore, continue reading rows from the tuplestore until it's * empty. */ if (fcache->funcResultStore) { - Assert(isDone); /* it was provided before ... */ + Assert(isDone); /* it was provided before ... */ if (tuplestore_gettupleslot(fcache->funcResultStore, true, false, fcache->funcResultSlot)) { @@ -1420,10 +1419,10 @@ restart: * For non-set-returning functions, we just use a local-variable * FunctionCallInfoData. For set-returning functions we keep the callinfo * record in fcache->setArgs so that it can survive across multiple - * value-per-call invocations. (The reason we don't just do the latter - * all the time is that plpgsql expects to be able to use simple expression - * trees re-entrantly. Which might not be a good idea, but the penalty - * for not doing so is high.) + * value-per-call invocations. (The reason we don't just do the latter + * all the time is that plpgsql expects to be able to use simple + * expression trees re-entrantly. Which might not be a good idea, but the + * penalty for not doing so is high.) */ if (fcache->func.fn_retset) fcinfo = &fcache->setArgs; @@ -1534,7 +1533,7 @@ restart: *isDone = rsinfo.isDone; pgstat_end_function_usage(&fcusage, - rsinfo.isDone != ExprMultipleResult); + rsinfo.isDone != ExprMultipleResult); } else { @@ -1564,7 +1563,7 @@ restart: { RegisterExprContextCallback(econtext, ShutdownFuncExpr, - PointerGetDatum(fcache)); + PointerGetDatum(fcache)); fcache->shutdown_reg = true; } } @@ -2043,9 +2042,8 @@ no_function_result: } /* - * If function provided a tupdesc, cross-check it. We only really - * need to do this for functions returning RECORD, but might as well - * do it always. + * If function provided a tupdesc, cross-check it. We only really need to + * do this for functions returning RECORD, but might as well do it always. */ if (rsinfo.setDesc) { @@ -3229,41 +3227,41 @@ ExecEvalXml(XmlExprState *xmlExpr, ExprContext *econtext, break; case IS_XMLFOREST: - { - StringInfoData buf; - - initStringInfo(&buf); - forboth(arg, xmlExpr->named_args, narg, xexpr->arg_names) { - ExprState *e = (ExprState *) lfirst(arg); - char *argname = strVal(lfirst(narg)); + StringInfoData buf; - value = ExecEvalExpr(e, econtext, &isnull, NULL); - if (!isnull) + initStringInfo(&buf); + forboth(arg, xmlExpr->named_args, narg, xexpr->arg_names) { - appendStringInfo(&buf, "<%s>%s</%s>", - argname, - map_sql_value_to_xml_value(value, exprType((Node *) e->expr), true), - argname); - *isNull = false; + ExprState *e = (ExprState *) lfirst(arg); + char *argname = strVal(lfirst(narg)); + + value = ExecEvalExpr(e, econtext, &isnull, NULL); + if (!isnull) + { + appendStringInfo(&buf, "<%s>%s</%s>", + argname, + map_sql_value_to_xml_value(value, exprType((Node *) e->expr), true), + argname); + *isNull = false; + } } - } - if (*isNull) - { - pfree(buf.data); - return (Datum) 0; - } - else - { - text *result; + if (*isNull) + { + pfree(buf.data); + return (Datum) 0; + } + else + { + text *result; - result = cstring_to_text_with_len(buf.data, buf.len); - pfree(buf.data); + result = cstring_to_text_with_len(buf.data, buf.len); + pfree(buf.data); - return PointerGetDatum(result); + return PointerGetDatum(result); + } } - } break; case IS_XMLELEMENT: @@ -4095,9 +4093,9 @@ ExecEvalExprSwitchContext(ExprState *expression, * * Any Aggref, WindowFunc, or SubPlan nodes found in the tree are added to the * lists of such nodes held by the parent PlanState. Otherwise, we do very - * little initialization here other than building the state-node tree. Any + * little initialization here other than building the state-node tree. Any * nontrivial work associated with initializing runtime info for a node should - * happen during the first actual evaluation of that node. (This policy lets + * happen during the first actual evaluation of that node. (This policy lets * us avoid work if the node is never actually evaluated.) * * Note: there is no ExecEndExpr function; we assume that any resource @@ -4209,7 +4207,7 @@ ExecInitExpr(Expr *node, PlanState *parent) if (nfuncs != winstate->numfuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("window function calls cannot be nested"))); + errmsg("window function calls cannot be nested"))); } else { @@ -5156,11 +5154,11 @@ ExecProject(ProjectionInfo *projInfo, ExprDoneCond *isDone) numSimpleVars = projInfo->pi_numSimpleVars; if (numSimpleVars > 0) { - Datum *values = slot->tts_values; - bool *isnull = slot->tts_isnull; - int *varSlotOffsets = projInfo->pi_varSlotOffsets; - int *varNumbers = projInfo->pi_varNumbers; - int i; + Datum *values = slot->tts_values; + bool *isnull = slot->tts_isnull; + int *varSlotOffsets = projInfo->pi_varSlotOffsets; + int *varNumbers = projInfo->pi_varNumbers; + int i; if (projInfo->pi_directMap) { @@ -5178,7 +5176,7 @@ ExecProject(ProjectionInfo *projInfo, ExprDoneCond *isDone) else { /* we have to pay attention to varOutputCols[] */ - int *varOutputCols = projInfo->pi_varOutputCols; + int *varOutputCols = projInfo->pi_varOutputCols; for (i = 0; i < numSimpleVars; i++) { @@ -5195,9 +5193,9 @@ ExecProject(ProjectionInfo *projInfo, ExprDoneCond *isDone) /* * If there are any generic expressions, evaluate them. It's possible - * that there are set-returning functions in such expressions; if so - * and we have reached the end of the set, we return the result slot, - * which we already marked empty. + * that there are set-returning functions in such expressions; if so and + * we have reached the end of the set, we return the result slot, which we + * already marked empty. */ if (projInfo->pi_targetlist) { diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c index 1d0a5854fb9..7b5ba41f5fc 100644 --- a/src/backend/executor/execTuples.c +++ b/src/backend/executor/execTuples.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execTuples.c,v 1.106 2009/03/30 04:08:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execTuples.c,v 1.107 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -756,9 +756,9 @@ ExecFetchSlotMinimalTuple(TupleTableSlot *slot) /* * Note: we may now have a situation where we have a local minimal tuple - * attached to a virtual or non-local physical tuple. There seems no - * harm in that at the moment, but if any materializes, we should change - * this function to force the slot into minimal-tuple-only state. + * attached to a virtual or non-local physical tuple. There seems no harm + * in that at the moment, but if any materializes, we should change this + * function to force the slot into minimal-tuple-only state. */ return slot->tts_mintuple; @@ -843,9 +843,9 @@ ExecMaterializeSlot(TupleTableSlot *slot) slot->tts_buffer = InvalidBuffer; /* - * Mark extracted state invalid. This is important because the slot - * is not supposed to depend any more on the previous external data; - * we mustn't leave any dangling pass-by-reference datums in tts_values. + * Mark extracted state invalid. This is important because the slot is + * not supposed to depend any more on the previous external data; we + * mustn't leave any dangling pass-by-reference datums in tts_values. * However, we have not actually invalidated any such datums, if there * happen to be any previously fetched from the slot. (Note in particular * that we have not pfree'd tts_mintuple, if there is one.) @@ -854,9 +854,9 @@ ExecMaterializeSlot(TupleTableSlot *slot) /* * On the same principle of not depending on previous remote storage, - * forget the mintuple if it's not local storage. (If it is local storage, - * we must not pfree it now, since callers might have already fetched - * datum pointers referencing it.) + * forget the mintuple if it's not local storage. (If it is local + * storage, we must not pfree it now, since callers might have already + * fetched datum pointers referencing it.) */ if (!slot->tts_shouldFreeMin) slot->tts_mintuple = NULL; diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 4b3d92d48b8..360ee408586 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.158 2009/04/02 22:39:30 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.159 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -584,8 +584,8 @@ ExecBuildProjectionInfo(List *targetList, /* * We separate the target list elements into simple Var references and - * expressions which require the full ExecTargetList machinery. To be - * a simple Var, a Var has to be a user attribute and not mismatch the + * expressions which require the full ExecTargetList machinery. To be a + * simple Var, a Var has to be a user attribute and not mismatch the * inputDesc. (Note: if there is a type mismatch then ExecEvalVar will * probably throw an error at runtime, but we leave that to it.) */ @@ -621,7 +621,7 @@ ExecBuildProjectionInfo(List *targetList, varNumbers[numSimpleVars] = attnum; varOutputCols[numSimpleVars] = tle->resno; - if (tle->resno != numSimpleVars+1) + if (tle->resno != numSimpleVars + 1) directMap = false; switch (variable->varno) @@ -683,7 +683,7 @@ get_last_attnums(Node *node, ProjectionInfo *projInfo) return false; if (IsA(node, Var)) { - Var *variable = (Var *) node; + Var *variable = (Var *) node; AttrNumber attnum = variable->varattno; switch (variable->varno) @@ -705,9 +705,10 @@ get_last_attnums(Node *node, ProjectionInfo *projInfo) } return false; } + /* - * Don't examine the arguments of Aggrefs or WindowFuncs, because those - * do not represent expressions to be evaluated within the overall + * Don't examine the arguments of Aggrefs or WindowFuncs, because those do + * not represent expressions to be evaluated within the overall * targetlist's econtext. */ if (IsA(node, Aggref)) diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c index f71807835f2..b0d8b9008a8 100644 --- a/src/backend/executor/functions.c +++ b/src/backend/executor/functions.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/functions.c,v 1.133 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/functions.c,v 1.134 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -101,8 +101,8 @@ typedef SQLFunctionCache *SQLFunctionCachePtr; /* non-export function prototypes */ static execution_state *init_execution_state(List *queryTree_list, - SQLFunctionCachePtr fcache, - bool lazyEvalOK); + SQLFunctionCachePtr fcache, + bool lazyEvalOK); static void init_sql_fcache(FmgrInfo *finfo, bool lazyEvalOK); static void postquel_start(execution_state *es, SQLFunctionCachePtr fcache); static bool postquel_getnext(execution_state *es, SQLFunctionCachePtr fcache); @@ -168,8 +168,8 @@ init_execution_state(List *queryTree_list, newes->next = NULL; newes->status = F_EXEC_START; - newes->setsResult = false; /* might change below */ - newes->lazyEval = false; /* might change below */ + newes->setsResult = false; /* might change below */ + newes->lazyEval = false; /* might change below */ newes->stmt = stmt; newes->qd = NULL; @@ -180,9 +180,9 @@ init_execution_state(List *queryTree_list, } /* - * Mark the last canSetTag query as delivering the function result; - * then, if it is a plain SELECT, mark it for lazy evaluation. - * If it's not a SELECT we must always run it to completion. + * Mark the last canSetTag query as delivering the function result; then, + * if it is a plain SELECT, mark it for lazy evaluation. If it's not a + * SELECT we must always run it to completion. * * Note: at some point we might add additional criteria for whether to use * lazy eval. However, we should prefer to use it whenever the function @@ -191,8 +191,8 @@ init_execution_state(List *queryTree_list, * * Note: don't set setsResult if the function returns VOID, as evidenced * by not having made a junkfilter. This ensures we'll throw away any - * output from a utility statement that check_sql_fn_retval deemed to - * not have output. + * output from a utility statement that check_sql_fn_retval deemed to not + * have output. */ if (lasttages && fcache->junkFilter) { @@ -326,10 +326,10 @@ init_sql_fcache(FmgrInfo *finfo, bool lazyEvalOK) * Note: we set fcache->returnsTuple according to whether we are returning * the whole tuple result or just a single column. In the latter case we * clear returnsTuple because we need not act different from the scalar - * result case, even if it's a rowtype column. (However, we have to - * force lazy eval mode in that case; otherwise we'd need extra code to - * expand the rowtype column into multiple columns, since we have no - * way to notify the caller that it should do that.) + * result case, even if it's a rowtype column. (However, we have to force + * lazy eval mode in that case; otherwise we'd need extra code to expand + * the rowtype column into multiple columns, since we have no way to + * notify the caller that it should do that.) * * check_sql_fn_retval will also construct a JunkFilter we can use to * coerce the returned rowtype to the desired form (unless the result type @@ -459,7 +459,7 @@ postquel_getnext(execution_state *es, SQLFunctionCachePtr fcache) es->qd->utilitystmt), fcache->src, es->qd->params, - false, /* not top level */ + false, /* not top level */ es->qd->dest, NULL); result = true; /* never stops early */ @@ -566,7 +566,7 @@ postquel_get_single_result(TupleTableSlot *slot, /* * Set up to return the function value. For pass-by-reference datatypes, * be sure to allocate the result in resultcontext, not the current memory - * context (which has query lifespan). We can't leave the data in the + * context (which has query lifespan). We can't leave the data in the * TupleTableSlot because we intend to clear the slot before returning. */ oldcontext = MemoryContextSwitchTo(resultcontext); @@ -670,8 +670,8 @@ fmgr_sql(PG_FUNCTION_ARGS) postquel_sub_params(fcache, fcinfo); /* - * Build tuplestore to hold results, if we don't have one already. - * Note it's in the query-lifespan context. + * Build tuplestore to hold results, if we don't have one already. Note + * it's in the query-lifespan context. */ if (!fcache->tstore) fcache->tstore = tuplestore_begin_heap(randomAccess, false, work_mem); @@ -688,7 +688,7 @@ fmgr_sql(PG_FUNCTION_ARGS) */ while (es) { - bool completed; + bool completed; if (es->status == F_EXEC_START) postquel_start(es, fcache); @@ -696,22 +696,22 @@ fmgr_sql(PG_FUNCTION_ARGS) completed = postquel_getnext(es, fcache); /* - * If we ran the command to completion, we can shut it down now. - * Any row(s) we need to return are safely stashed in the tuplestore, - * and we want to be sure that, for example, AFTER triggers get fired + * If we ran the command to completion, we can shut it down now. Any + * row(s) we need to return are safely stashed in the tuplestore, and + * we want to be sure that, for example, AFTER triggers get fired * before we return anything. Also, if the function doesn't return - * set, we can shut it down anyway because it must be a SELECT and - * we don't care about fetching any more result rows. + * set, we can shut it down anyway because it must be a SELECT and we + * don't care about fetching any more result rows. */ if (completed || !fcache->returnsSet) postquel_end(es); /* * Break from loop if we didn't shut down (implying we got a - * lazily-evaluated row). Otherwise we'll press on till the - * whole function is done, relying on the tuplestore to keep hold - * of the data to eventually be returned. This is necessary since - * an INSERT/UPDATE/DELETE RETURNING that sets the result might be + * lazily-evaluated row). Otherwise we'll press on till the whole + * function is done, relying on the tuplestore to keep hold of the + * data to eventually be returned. This is necessary since an + * INSERT/UPDATE/DELETE RETURNING that sets the result might be * followed by additional rule-inserted commands, and we want to * finish doing all those commands before we return anything. */ @@ -730,7 +730,8 @@ fmgr_sql(PG_FUNCTION_ARGS) if (es) { /* - * If we stopped short of being done, we must have a lazy-eval row. + * If we stopped short of being done, we must have a lazy-eval + * row. */ Assert(es->lazyEval); /* Re-use the junkfilter's output slot to fetch back the tuple */ @@ -765,7 +766,7 @@ fmgr_sql(PG_FUNCTION_ARGS) else if (fcache->lazyEval) { /* - * We are done with a lazy evaluation. Clean up. + * We are done with a lazy evaluation. Clean up. */ tuplestore_clear(fcache->tstore); @@ -789,9 +790,9 @@ fmgr_sql(PG_FUNCTION_ARGS) else { /* - * We are done with a non-lazy evaluation. Return whatever is - * in the tuplestore. (It is now caller's responsibility to - * free the tuplestore when done.) + * We are done with a non-lazy evaluation. Return whatever is in + * the tuplestore. (It is now caller's responsibility to free the + * tuplestore when done.) */ rsi->returnMode = SFRM_Materialize; rsi->setResult = fcache->tstore; @@ -844,8 +845,8 @@ fmgr_sql(PG_FUNCTION_ARGS) } /* - * If we've gone through every command in the function, we are done. - * Reset the execution states to start over again on next call. + * If we've gone through every command in the function, we are done. Reset + * the execution states to start over again on next call. */ if (es == NULL) { @@ -997,7 +998,7 @@ ShutdownSQLFunction(Datum arg) * function definition of a polymorphic function.) * * This function returns true if the sql function returns the entire tuple - * result of its final statement, and false otherwise. Note that because we + * result of its final statement, and false otherwise. Note that because we * allow "SELECT rowtype_expression", this may be false even when the declared * function return type is a rowtype. * @@ -1029,14 +1030,14 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList, *junkFilter = NULL; /* initialize in case of VOID result */ /* - * Find the last canSetTag query in the list. This isn't necessarily - * the last parsetree, because rule rewriting can insert queries after - * what the user wrote. + * Find the last canSetTag query in the list. This isn't necessarily the + * last parsetree, because rule rewriting can insert queries after what + * the user wrote. */ parse = NULL; foreach(lc, queryTreeList) { - Query *q = (Query *) lfirst(lc); + Query *q = (Query *) lfirst(lc); if (q->canSetTag) parse = q; @@ -1044,12 +1045,12 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList, /* * If it's a plain SELECT, it returns whatever the targetlist says. - * Otherwise, if it's INSERT/UPDATE/DELETE with RETURNING, it returns that. - * Otherwise, the function return type must be VOID. + * Otherwise, if it's INSERT/UPDATE/DELETE with RETURNING, it returns + * that. Otherwise, the function return type must be VOID. * * Note: eventually replace this test with QueryReturnsTuples? We'd need - * a more general method of determining the output type, though. Also, - * it seems too dangerous to consider FETCH or EXECUTE as returning a + * a more general method of determining the output type, though. Also, it + * seems too dangerous to consider FETCH or EXECUTE as returning a * determinable rowtype, since they depend on relatively short-lived * entities. */ @@ -1076,7 +1077,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), errmsg("return type mismatch in function declared to return %s", format_type_be(rettype)), - errdetail("Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."))); + errdetail("Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING."))); return false; } @@ -1112,7 +1113,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), errmsg("return type mismatch in function declared to return %s", format_type_be(rettype)), - errdetail("Final statement must return exactly one column."))); + errdetail("Final statement must return exactly one column."))); /* We assume here that non-junk TLEs must come first in tlists */ tle = (TargetEntry *) linitial(tlist); @@ -1148,8 +1149,8 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList, * If the target list is of length 1, and the type of the varnode in * the target list matches the declared return type, this is okay. * This can happen, for example, where the body of the function is - * 'SELECT func2()', where func2 has the same composite return type - * as the function that's calling it. + * 'SELECT func2()', where func2 has the same composite return type as + * the function that's calling it. */ if (tlistlen == 1) { @@ -1211,7 +1212,7 @@ check_sql_fn_retval(Oid func_id, Oid rettype, List *queryTreeList, (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION), errmsg("return type mismatch in function declared to return %s", format_type_be(rettype)), - errdetail("Final statement returns too many columns."))); + errdetail("Final statement returns too many columns."))); attr = tupdesc->attrs[colindex - 1]; } while (attr->attisdropped); tuplogcols++; diff --git a/src/backend/executor/nodeBitmapHeapscan.c b/src/backend/executor/nodeBitmapHeapscan.c index b2aad2133c2..306e7f6e177 100644 --- a/src/backend/executor/nodeBitmapHeapscan.c +++ b/src/backend/executor/nodeBitmapHeapscan.c @@ -21,7 +21,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeBitmapHeapscan.c,v 1.34 2009/01/12 16:00:41 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeBitmapHeapscan.c,v 1.35 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -114,17 +114,17 @@ BitmapHeapNext(BitmapHeapScanState *node) } /* - * If we haven't yet performed the underlying index scan, do it, and - * begin the iteration over the bitmap. + * If we haven't yet performed the underlying index scan, do it, and begin + * the iteration over the bitmap. * * For prefetching, we use *two* iterators, one for the pages we are * actually scanning and another that runs ahead of the first for - * prefetching. node->prefetch_pages tracks exactly how many pages - * ahead the prefetch iterator is. Also, node->prefetch_target tracks - * the desired prefetch distance, which starts small and increases up - * to the GUC-controlled maximum, target_prefetch_pages. This is to - * avoid doing a lot of prefetching in a scan that stops after a few - * tuples because of a LIMIT. + * prefetching. node->prefetch_pages tracks exactly how many pages ahead + * the prefetch iterator is. Also, node->prefetch_target tracks the + * desired prefetch distance, which starts small and increases up to the + * GUC-controlled maximum, target_prefetch_pages. This is to avoid doing + * a lot of prefetching in a scan that stops after a few tuples because of + * a LIMIT. */ if (tbm == NULL) { @@ -144,7 +144,7 @@ BitmapHeapNext(BitmapHeapScanState *node) node->prefetch_pages = 0; node->prefetch_target = -1; } -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } for (;;) @@ -178,7 +178,7 @@ BitmapHeapNext(BitmapHeapScanState *node) if (tbmpre == NULL || tbmpre->blockno != tbmres->blockno) elog(ERROR, "prefetch and main iterators are out of sync"); } -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ /* * Ignore any claimed entries past what we think is the end of the @@ -203,21 +203,22 @@ BitmapHeapNext(BitmapHeapScanState *node) scan->rs_cindex = 0; #ifdef USE_PREFETCH + /* - * Increase prefetch target if it's not yet at the max. Note - * that we will increase it to zero after fetching the very - * first page/tuple, then to one after the second tuple is - * fetched, then it doubles as later pages are fetched. + * Increase prefetch target if it's not yet at the max. Note that + * we will increase it to zero after fetching the very first + * page/tuple, then to one after the second tuple is fetched, then + * it doubles as later pages are fetched. */ if (node->prefetch_target >= target_prefetch_pages) - /* don't increase any further */ ; + /* don't increase any further */ ; else if (node->prefetch_target >= target_prefetch_pages / 2) node->prefetch_target = target_prefetch_pages; else if (node->prefetch_target > 0) node->prefetch_target *= 2; else node->prefetch_target++; -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } else { @@ -227,13 +228,14 @@ BitmapHeapNext(BitmapHeapScanState *node) scan->rs_cindex++; #ifdef USE_PREFETCH + /* * Try to prefetch at least a few pages even before we get to the * second page if we don't stop reading after the first tuple. */ if (node->prefetch_target < target_prefetch_pages) node->prefetch_target++; -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } /* @@ -246,12 +248,13 @@ BitmapHeapNext(BitmapHeapScanState *node) } #ifdef USE_PREFETCH + /* - * We issue prefetch requests *after* fetching the current page - * to try to avoid having prefetching interfere with the main I/O. - * Also, this should happen only when we have determined there is - * still something to do on the current page, else we may uselessly - * prefetch the same page we are just about to request for real. + * We issue prefetch requests *after* fetching the current page to try + * to avoid having prefetching interfere with the main I/O. Also, this + * should happen only when we have determined there is still something + * to do on the current page, else we may uselessly prefetch the same + * page we are just about to request for real. */ if (prefetch_iterator) { @@ -270,7 +273,7 @@ BitmapHeapNext(BitmapHeapScanState *node) PrefetchBuffer(scan->rs_rd, MAIN_FORKNUM, tbmpre->blockno); } } -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ /* * Okay to fetch the tuple diff --git a/src/backend/executor/nodeBitmapIndexscan.c b/src/backend/executor/nodeBitmapIndexscan.c index 5cae0589212..1ef6c988ce4 100644 --- a/src/backend/executor/nodeBitmapIndexscan.c +++ b/src/backend/executor/nodeBitmapIndexscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeBitmapIndexscan.c,v 1.29 2009/01/01 17:23:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeBitmapIndexscan.c,v 1.30 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -94,7 +94,7 @@ MultiExecBitmapIndexScan(BitmapIndexScanState *node) doscan = ExecIndexAdvanceArrayKeys(node->biss_ArrayKeys, node->biss_NumArrayKeys); - if (doscan) /* reset index scan */ + if (doscan) /* reset index scan */ index_rescan(node->biss_ScanDesc, node->biss_ScanKeys); } diff --git a/src/backend/executor/nodeCtescan.c b/src/backend/executor/nodeCtescan.c index 67589908ce1..81469c41d7c 100644 --- a/src/backend/executor/nodeCtescan.c +++ b/src/backend/executor/nodeCtescan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeCtescan.c,v 1.4 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeCtescan.c,v 1.5 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -73,8 +73,8 @@ CteScanNext(CteScanState *node) * If we can fetch another tuple from the tuplestore, return it. * * Note: we have to use copy=true in the tuplestore_gettupleslot call, - * because we are sharing the tuplestore with other nodes that might - * write into the tuplestore before we get called again. + * because we are sharing the tuplestore with other nodes that might write + * into the tuplestore before we get called again. */ if (!eof_tuplestore) { @@ -111,16 +111,16 @@ CteScanNext(CteScanState *node) * Append a copy of the returned tuple to tuplestore. NOTE: because * our read pointer is certainly in EOF state, its read position will * move forward over the added tuple. This is what we want. Also, - * any other readers will *not* move past the new tuple, which is - * what they want. + * any other readers will *not* move past the new tuple, which is what + * they want. */ tuplestore_puttupleslot(tuplestorestate, cteslot); /* - * We MUST copy the CTE query's output tuple into our own slot. - * This is because other CteScan nodes might advance the CTE query - * before we are called again, and our output tuple must stay - * stable over that. + * We MUST copy the CTE query's output tuple into our own slot. This + * is because other CteScan nodes might advance the CTE query before + * we are called again, and our output tuple must stay stable over + * that. */ return ExecCopySlot(slot, cteslot); } @@ -193,10 +193,10 @@ ExecInitCteScan(CteScan *node, EState *estate, int eflags) node->ctePlanId - 1); /* - * The Param slot associated with the CTE query is used to hold a - * pointer to the CteState of the first CteScan node that initializes - * for this CTE. This node will be the one that holds the shared - * state for all the CTEs. + * The Param slot associated with the CTE query is used to hold a pointer + * to the CteState of the first CteScan node that initializes for this + * CTE. This node will be the one that holds the shared state for all the + * CTEs. */ prmdata = &(estate->es_param_exec_vals[node->cteParam]); Assert(prmdata->execPlan == NULL); @@ -315,8 +315,8 @@ ExecCteScanReScan(CteScanState *node, ExprContext *exprCtxt) if (node->leader == node) { /* - * The leader is responsible for clearing the tuplestore if a new - * scan of the underlying CTE is required. + * The leader is responsible for clearing the tuplestore if a new scan + * of the underlying CTE is required. */ if (node->cteplanstate->chgParam != NULL) { diff --git a/src/backend/executor/nodeFunctionscan.c b/src/backend/executor/nodeFunctionscan.c index 3f34e7c835c..f38199650e5 100644 --- a/src/backend/executor/nodeFunctionscan.c +++ b/src/backend/executor/nodeFunctionscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeFunctionscan.c,v 1.51 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeFunctionscan.c,v 1.52 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -277,7 +277,7 @@ ExecFunctionReScan(FunctionScanState *node, ExprContext *exprCtxt) /* * Here we have a choice whether to drop the tuplestore (and recompute the * function outputs) or just rescan it. We must recompute if the - * expression contains parameters, else we rescan. XXX maybe we should + * expression contains parameters, else we rescan. XXX maybe we should * recompute if the function is volatile? */ if (node->ss.ps.chgParam != NULL) diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 4a85dc97c37..471534538aa 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.120 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.121 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -41,11 +41,11 @@ static void ExecHashIncreaseNumBatches(HashJoinTable hashtable); static void ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, - int mcvsToUse); + int mcvsToUse); static void ExecHashSkewTableInsert(HashJoinTable hashtable, - TupleTableSlot *slot, - uint32 hashvalue, - int bucketNumber); + TupleTableSlot *slot, + uint32 hashvalue, + int bucketNumber); static void ExecHashRemoveNextSkewBucket(HashJoinTable hashtable); @@ -108,7 +108,7 @@ MultiExecHash(HashState *node) if (ExecHashGetHashValue(hashtable, econtext, hashkeys, false, false, &hashvalue)) { - int bucketNumber; + int bucketNumber; bucketNumber = ExecHashGetSkewBucket(hashtable, hashvalue); if (bucketNumber != INVALID_SKEW_BUCKET_NO) @@ -373,7 +373,7 @@ ExecHashTableCreate(Hash *node, List *hashOperators) /* * Set up for skew optimization, if possible and there's a need for more - * than one batch. (In a one-batch join, there's no point in it.) + * than one batch. (In a one-batch join, there's no point in it.) */ if (nbatch > 1) ExecHashBuildSkewHash(hashtable, node, num_skew_mcvs); @@ -446,14 +446,14 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew, skew_table_bytes = hash_table_bytes * SKEW_WORK_MEM_PERCENT / 100; *num_skew_mcvs = skew_table_bytes / ( - /* size of a hash tuple */ - tupsize + - /* worst-case size of skewBucket[] per MCV */ - (8 * sizeof(HashSkewBucket *)) + - /* size of skewBucketNums[] entry */ - sizeof(int) + - /* size of skew bucket struct itself */ - SKEW_BUCKET_OVERHEAD + /* size of a hash tuple */ + tupsize + + /* worst-case size of skewBucket[] per MCV */ + (8 * sizeof(HashSkewBucket *)) + + /* size of skewBucketNums[] entry */ + sizeof(int) + + /* size of skew bucket struct itself */ + SKEW_BUCKET_OVERHEAD ); if (*num_skew_mcvs > 0) @@ -983,11 +983,11 @@ ExecReScanHash(HashState *node, ExprContext *exprCtxt) static void ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, int mcvsToUse) { - HeapTupleData *statsTuple; - Datum *values; - int nvalues; - float4 *numbers; - int nnumbers; + HeapTupleData *statsTuple; + Datum *values; + int nvalues; + float4 *numbers; + int nnumbers; /* Do nothing if planner didn't identify the outer relation's join key */ if (!OidIsValid(node->skewTable)) @@ -1040,11 +1040,12 @@ ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, int mcvsToUse) * * skewBucket[] is an open addressing hashtable with a power of 2 size * that is greater than the number of MCV values. (This ensures there - * will be at least one null entry, so searches will always terminate.) + * will be at least one null entry, so searches will always + * terminate.) * - * Note: this code could fail if mcvsToUse exceeds INT_MAX/8, but - * that is not currently possible since we limit pg_statistic entries - * to much less than that. + * Note: this code could fail if mcvsToUse exceeds INT_MAX/8, but that + * is not currently possible since we limit pg_statistic entries to + * much less than that. */ nbuckets = 2; while (nbuckets <= mcvsToUse) @@ -1056,9 +1057,9 @@ ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, int mcvsToUse) hashtable->skewBucketLen = nbuckets; /* - * We allocate the bucket memory in the hashtable's batch context. - * It is only needed during the first batch, and this ensures it - * will be automatically removed once the first batch is done. + * We allocate the bucket memory in the hashtable's batch context. It + * is only needed during the first batch, and this ensures it will be + * automatically removed once the first batch is done. */ hashtable->skewBucket = (HashSkewBucket **) MemoryContextAllocZero(hashtable->batchCxt, @@ -1075,18 +1076,18 @@ ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, int mcvsToUse) /* * Create a skew bucket for each MCV hash value. * - * Note: it is very important that we create the buckets in order - * of decreasing MCV frequency. If we have to remove some buckets, - * they must be removed in reverse order of creation (see notes in - * ExecHashRemoveNextSkewBucket) and we want the least common MCVs - * to be removed first. + * Note: it is very important that we create the buckets in order of + * decreasing MCV frequency. If we have to remove some buckets, they + * must be removed in reverse order of creation (see notes in + * ExecHashRemoveNextSkewBucket) and we want the least common MCVs to + * be removed first. */ hashfunctions = hashtable->outer_hashfunctions; for (i = 0; i < mcvsToUse; i++) { - uint32 hashvalue; - int bucket; + uint32 hashvalue; + int bucket; hashvalue = DatumGetUInt32(FunctionCall1(&hashfunctions[0], values[i])); @@ -1094,7 +1095,7 @@ ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, int mcvsToUse) /* * While we have not hit a hole in the hashtable and have not hit * the desired bucket, we have collided with some previous hash - * value, so try the next bucket location. NB: this code must + * value, so try the next bucket location. NB: this code must * match ExecHashGetSkewBucket. */ bucket = hashvalue & (nbuckets - 1); @@ -1103,8 +1104,8 @@ ExecHashBuildSkewHash(HashJoinTable hashtable, Hash *node, int mcvsToUse) bucket = (bucket + 1) & (nbuckets - 1); /* - * If we found an existing bucket with the same hashvalue, - * leave it alone. It's okay for two MCVs to share a hashvalue. + * If we found an existing bucket with the same hashvalue, leave + * it alone. It's okay for two MCVs to share a hashvalue. */ if (hashtable->skewBucket[bucket] != NULL) continue; @@ -1141,8 +1142,8 @@ ExecHashGetSkewBucket(HashJoinTable hashtable, uint32 hashvalue) int bucket; /* - * Always return INVALID_SKEW_BUCKET_NO if not doing skew optimization - * (in particular, this happens after the initial batch is done). + * Always return INVALID_SKEW_BUCKET_NO if not doing skew optimization (in + * particular, this happens after the initial batch is done). */ if (!hashtable->skewEnabled) return INVALID_SKEW_BUCKET_NO; @@ -1154,8 +1155,8 @@ ExecHashGetSkewBucket(HashJoinTable hashtable, uint32 hashvalue) /* * While we have not hit a hole in the hashtable and have not hit the - * desired bucket, we have collided with some other hash value, so try - * the next bucket location. + * desired bucket, we have collided with some other hash value, so try the + * next bucket location. */ while (hashtable->skewBucket[bucket] != NULL && hashtable->skewBucket[bucket]->hashvalue != hashvalue) @@ -1222,11 +1223,11 @@ ExecHashSkewTableInsert(HashJoinTable hashtable, static void ExecHashRemoveNextSkewBucket(HashJoinTable hashtable) { - int bucketToRemove; + int bucketToRemove; HashSkewBucket *bucket; - uint32 hashvalue; - int bucketno; - int batchno; + uint32 hashvalue; + int bucketno; + int batchno; HashJoinTuple hashTuple; /* Locate the bucket to remove */ @@ -1236,8 +1237,8 @@ ExecHashRemoveNextSkewBucket(HashJoinTable hashtable) /* * Calculate which bucket and batch the tuples belong to in the main * hashtable. They all have the same hash value, so it's the same for all - * of them. Also note that it's not possible for nbatch to increase - * while we are processing the tuples. + * of them. Also note that it's not possible for nbatch to increase while + * we are processing the tuples. */ hashvalue = bucket->hashvalue; ExecHashGetBucketAndBatch(hashtable, hashvalue, &bucketno, &batchno); @@ -1248,7 +1249,7 @@ ExecHashRemoveNextSkewBucket(HashJoinTable hashtable) { HashJoinTuple nextHashTuple = hashTuple->next; MinimalTuple tuple; - Size tupleSize; + Size tupleSize; /* * This code must agree with ExecHashTableInsert. We do not use @@ -1286,12 +1287,12 @@ ExecHashRemoveNextSkewBucket(HashJoinTable hashtable) * * NOTE: this is not nearly as simple as it looks on the surface, because * of the possibility of collisions in the hashtable. Suppose that hash - * values A and B collide at a particular hashtable entry, and that A - * was entered first so B gets shifted to a different table entry. If - * we were to remove A first then ExecHashGetSkewBucket would mistakenly - * start reporting that B is not in the hashtable, because it would hit - * the NULL before finding B. However, we always remove entries in the - * reverse order of creation, so this failure cannot happen. + * values A and B collide at a particular hashtable entry, and that A was + * entered first so B gets shifted to a different table entry. If we were + * to remove A first then ExecHashGetSkewBucket would mistakenly start + * reporting that B is not in the hashtable, because it would hit the NULL + * before finding B. However, we always remove entries in the reverse + * order of creation, so this failure cannot happen. */ hashtable->skewBucket[bucketToRemove] = NULL; hashtable->nSkewBuckets--; diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c index c7a05762913..bfb07472b0c 100644 --- a/src/backend/executor/nodeHashjoin.c +++ b/src/backend/executor/nodeHashjoin.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeHashjoin.c,v 1.100 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeHashjoin.c,v 1.101 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -23,7 +23,7 @@ /* Returns true for JOIN_LEFT and JOIN_ANTI jointypes */ -#define HASHJOIN_IS_OUTER(hjstate) ((hjstate)->hj_NullInnerTupleSlot != NULL) +#define HASHJOIN_IS_OUTER(hjstate) ((hjstate)->hj_NullInnerTupleSlot != NULL) static TupleTableSlot *ExecHashJoinOuterGetTuple(PlanState *outerNode, HashJoinState *hjstate, @@ -210,8 +210,8 @@ ExecHashJoin(HashJoinState *node) /* * Now we've got an outer tuple and the corresponding hash bucket, - * but it might not belong to the current batch, or it might - * match a skew bucket. + * but it might not belong to the current batch, or it might match + * a skew bucket. */ if (batchno != hashtable->curbatch && node->hj_CurSkewBucketNo == INVALID_SKEW_BUCKET_NO) @@ -656,13 +656,13 @@ start_over: BufFileClose(hashtable->outerBatchFile[curbatch]); hashtable->outerBatchFile[curbatch] = NULL; } - else /* we just finished the first batch */ + else /* we just finished the first batch */ { /* - * Reset some of the skew optimization state variables, since we - * no longer need to consider skew tuples after the first batch. - * The memory context reset we are about to do will release the - * skew hashtable itself. + * Reset some of the skew optimization state variables, since we no + * longer need to consider skew tuples after the first batch. The + * memory context reset we are about to do will release the skew + * hashtable itself. */ hashtable->skewEnabled = false; hashtable->skewBucket = NULL; diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index f440da756ab..d0f1899fca3 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.131 2009/01/01 17:23:41 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeIndexscan.c,v 1.132 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -367,8 +367,8 @@ ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys) /* * Note we advance the rightmost array key most quickly, since it will * correspond to the lowest-order index column among the available - * qualifications. This is hypothesized to result in better locality - * of access in the index. + * qualifications. This is hypothesized to result in better locality of + * access in the index. */ for (j = numArrayKeys - 1; j >= 0; j--) { @@ -716,8 +716,8 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid, extra_scan_keys = n_scan_keys; /* - * for each opclause in the given qual, convert the opclause into - * a single scan key + * for each opclause in the given qual, convert the opclause into a single + * scan key */ j = 0; foreach(qual_cell, quals) @@ -727,8 +727,8 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid, Oid opno; /* operator's OID */ RegProcedure opfuncid; /* operator proc id used in scan */ Oid opfamily; /* opfamily of index column */ - int op_strategy; /* operator's strategy number */ - Oid op_lefttype; /* operator's declared input types */ + int op_strategy; /* operator's strategy number */ + Oid op_lefttype; /* operator's declared input types */ Oid op_righttype; Expr *leftop; /* expr on lhs of operator */ Expr *rightop; /* expr on rhs ... */ @@ -805,8 +805,8 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid, ScanKeyEntryInitialize(this_scan_key, flags, varattno, /* attribute number to scan */ - op_strategy, /* op's strategy */ - op_righttype, /* strategy subtype */ + op_strategy, /* op's strategy */ + op_righttype, /* strategy subtype */ opfuncid, /* reg proc to use */ scanvalue); /* constant */ } @@ -983,8 +983,8 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid, ScanKeyEntryInitialize(this_scan_key, 0, /* flags */ varattno, /* attribute number to scan */ - op_strategy, /* op's strategy */ - op_righttype, /* strategy subtype */ + op_strategy, /* op's strategy */ + op_righttype, /* strategy subtype */ opfuncid, /* reg proc to use */ (Datum) 0); /* constant */ } @@ -1015,7 +1015,7 @@ ExecIndexBuildScanKeys(PlanState *planstate, Relation index, Index scanrelid, ScanKeyEntryInitialize(this_scan_key, SK_ISNULL | SK_SEARCHNULL, varattno, /* attribute number to scan */ - InvalidStrategy, /* no strategy */ + InvalidStrategy, /* no strategy */ InvalidOid, /* no strategy subtype */ InvalidOid, /* no reg proc for this */ (Datum) 0); /* constant */ diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c index f7c1c7acdc0..0626b8be371 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeLimit.c,v 1.38 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeLimit.c,v 1.39 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -247,8 +247,8 @@ recompute_limits(LimitState *node) node->offset = DatumGetInt64(val); if (node->offset < 0) ereport(ERROR, - (errcode(ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE), - errmsg("OFFSET must not be negative"))); + (errcode(ERRCODE_INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE), + errmsg("OFFSET must not be negative"))); } } else diff --git a/src/backend/executor/nodeMaterial.c b/src/backend/executor/nodeMaterial.c index 9282bf130dd..817a7e7824c 100644 --- a/src/backend/executor/nodeMaterial.c +++ b/src/backend/executor/nodeMaterial.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeMaterial.c,v 1.68 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeMaterial.c,v 1.69 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -63,10 +63,10 @@ ExecMaterial(MaterialState *node) if (node->eflags & EXEC_FLAG_MARK) { /* - * Allocate a second read pointer to serve as the mark. - * We know it must have index 1, so needn't store that. + * Allocate a second read pointer to serve as the mark. We know it + * must have index 1, so needn't store that. */ - int ptrno; + int ptrno; ptrno = tuplestore_alloc_read_pointer(tuplestorestate, node->eflags); @@ -185,7 +185,7 @@ ExecInitMaterial(Material *node, EState *estate, int eflags) /* * Tuplestore's interpretation of the flag bits is subtly different from * the general executor meaning: it doesn't think BACKWARD necessarily - * means "backwards all the way to start". If told to support BACKWARD we + * means "backwards all the way to start". If told to support BACKWARD we * must include REWIND in the tuplestore eflags, else tuplestore_trim * might throw away too much. */ diff --git a/src/backend/executor/nodeMergejoin.c b/src/backend/executor/nodeMergejoin.c index 52bdf3bfe5f..3b9bcb7d560 100644 --- a/src/backend/executor/nodeMergejoin.c +++ b/src/backend/executor/nodeMergejoin.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeMergejoin.c,v 1.96 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeMergejoin.c,v 1.97 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -774,8 +774,8 @@ ExecMergeJoin(MergeJoinState *node) } /* - * In a semijoin, we'll consider returning the first match, - * but after that we're done with this outer tuple. + * In a semijoin, we'll consider returning the first + * match, but after that we're done with this outer tuple. */ if (node->js.jointype == JOIN_SEMI) node->mj_JoinState = EXEC_MJ_NEXTOUTER; diff --git a/src/backend/executor/nodeNestloop.c b/src/backend/executor/nodeNestloop.c index 93f7e81e678..338ee07e626 100644 --- a/src/backend/executor/nodeNestloop.c +++ b/src/backend/executor/nodeNestloop.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeNestloop.c,v 1.52 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeNestloop.c,v 1.53 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -225,8 +225,8 @@ ExecNestLoop(NestLoopState *node) } /* - * In a semijoin, we'll consider returning the first match, - * but after that we're done with this outer tuple. + * In a semijoin, we'll consider returning the first match, but + * after that we're done with this outer tuple. */ if (node->js.jointype == JOIN_SEMI) node->nl_NeedNewOuter = true; diff --git a/src/backend/executor/nodeRecursiveunion.c b/src/backend/executor/nodeRecursiveunion.c index 4c674d03159..39b687f221a 100644 --- a/src/backend/executor/nodeRecursiveunion.c +++ b/src/backend/executor/nodeRecursiveunion.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeRecursiveunion.c,v 1.3 2009/01/01 17:23:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeRecursiveunion.c,v 1.4 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -38,7 +38,7 @@ typedef struct RUHashEntryData static void build_hash_table(RecursiveUnionState *rustate) { - RecursiveUnion *node = (RecursiveUnion *) rustate->ps.plan; + RecursiveUnion *node = (RecursiveUnion *) rustate->ps.plan; Assert(node->numCols > 0); Assert(node->numGroups > 0); @@ -58,7 +58,7 @@ build_hash_table(RecursiveUnionState *rustate) * ExecRecursiveUnion(node) * * Scans the recursive query sequentially and returns the next - * qualifying tuple. + * qualifying tuple. * * 1. evaluate non recursive term and assign the result to RT * @@ -151,8 +151,8 @@ ExecRecursiveUnion(RecursiveUnionState *node) } /* Else, tuple is good; stash it in intermediate table ... */ - node->intermediate_empty = false; - tuplestore_puttupleslot(node->intermediate_table, slot); + node->intermediate_empty = false; + tuplestore_puttupleslot(node->intermediate_table, slot); /* ... and return it */ return slot; } @@ -240,8 +240,8 @@ ExecInitRecursiveUnion(RecursiveUnion *node, EState *estate, int eflags) ExecInitResultTupleSlot(estate, &rustate->ps); /* - * Initialize result tuple type and projection info. (Note: we have - * to set up the result type before initializing child nodes, because + * Initialize result tuple type and projection info. (Note: we have to + * set up the result type before initializing child nodes, because * nodeWorktablescan.c expects it to be valid.) */ ExecAssignResultTypeFromTL(&rustate->ps); @@ -254,8 +254,8 @@ ExecInitRecursiveUnion(RecursiveUnion *node, EState *estate, int eflags) innerPlanState(rustate) = ExecInitNode(innerPlan(node), estate, eflags); /* - * If hashing, precompute fmgr lookup data for inner loop, and create - * the hash table. + * If hashing, precompute fmgr lookup data for inner loop, and create the + * hash table. */ if (node->numCols > 0) { @@ -322,15 +322,15 @@ ExecRecursiveUnionReScan(RecursiveUnionState *node, ExprContext *exprCtxt) RecursiveUnion *plan = (RecursiveUnion *) node->ps.plan; /* - * Set recursive term's chgParam to tell it that we'll modify the - * working table and therefore it has to rescan. + * Set recursive term's chgParam to tell it that we'll modify the working + * table and therefore it has to rescan. */ innerPlan->chgParam = bms_add_member(innerPlan->chgParam, plan->wtParam); /* * if chgParam of subnode is not null then plan will be re-scanned by - * first ExecProcNode. Because of above, we only have to do this to - * the non-recursive term. + * first ExecProcNode. Because of above, we only have to do this to the + * non-recursive term. */ if (outerPlan->chgParam == NULL) ExecReScan(outerPlan, exprCtxt); diff --git a/src/backend/executor/nodeSetOp.c b/src/backend/executor/nodeSetOp.c index 3611ae7ddcc..cff155abe67 100644 --- a/src/backend/executor/nodeSetOp.c +++ b/src/backend/executor/nodeSetOp.c @@ -5,7 +5,7 @@ * * The input of a SetOp node consists of tuples from two relations, * which have been combined into one dataset, with a junk attribute added - * that shows which relation each tuple came from. In SETOP_SORTED mode, + * that shows which relation each tuple came from. In SETOP_SORTED mode, * the input has furthermore been sorted according to all the grouping * columns (ie, all the non-junk attributes). The SetOp node scans each * group of identical tuples to determine how many came from each input @@ -18,7 +18,7 @@ * relation is the left-hand one for EXCEPT, and tries to make the smaller * input relation come first for INTERSECT. We build a hash table in memory * with one entry for each group of identical tuples, and count the number of - * tuples in the group from each relation. After seeing all the input, we + * tuples in the group from each relation. After seeing all the input, we * scan the hashtable and generate the correct output using those counts. * We can avoid making hashtable entries for any tuples appearing only in the * second input relation, since they cannot result in any output. @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeSetOp.c,v 1.30 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeSetOp.c,v 1.31 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -266,15 +266,15 @@ setop_retrieve_direct(SetOpState *setopstate) } /* - * Store the copied first input tuple in the tuple table slot - * reserved for it. The tuple will be deleted when it is cleared - * from the slot. + * Store the copied first input tuple in the tuple table slot reserved + * for it. The tuple will be deleted when it is cleared from the + * slot. */ ExecStoreTuple(setopstate->grp_firstTuple, resultTupleSlot, InvalidBuffer, true); - setopstate->grp_firstTuple = NULL; /* don't keep two pointers */ + setopstate->grp_firstTuple = NULL; /* don't keep two pointers */ /* Initialize working state for a new input tuple group */ initialize_counts(pergroup); @@ -318,8 +318,8 @@ setop_retrieve_direct(SetOpState *setopstate) } /* - * Done scanning input tuple group. See if we should emit any - * copies of result tuple, and if so return the first copy. + * Done scanning input tuple group. See if we should emit any copies + * of result tuple, and if so return the first copy. */ set_output_count(setopstate, pergroup); @@ -533,8 +533,8 @@ ExecInitSetOp(SetOp *node, EState *estate, int eflags) /* * initialize child nodes * - * If we are hashing then the child plan does not need - * to handle REWIND efficiently; see ExecReScanSetOp. + * If we are hashing then the child plan does not need to handle REWIND + * efficiently; see ExecReScanSetOp. */ if (node->strategy == SETOP_HASHED) eflags &= ~EXEC_FLAG_REWIND; diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c index ed00ba33e7a..016dbc378b4 100644 --- a/src/backend/executor/nodeSubplan.c +++ b/src/backend/executor/nodeSubplan.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeSubplan.c,v 1.98 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeSubplan.c,v 1.99 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -34,9 +34,9 @@ static Datum ExecSubPlan(SubPlanState *node, bool *isNull, ExprDoneCond *isDone); static Datum ExecAlternativeSubPlan(AlternativeSubPlanState *node, - ExprContext *econtext, - bool *isNull, - ExprDoneCond *isDone); + ExprContext *econtext, + bool *isNull, + ExprDoneCond *isDone); static Datum ExecHashSubPlan(SubPlanState *node, ExprContext *econtext, bool *isNull); @@ -1073,8 +1073,8 @@ ExecReScanSetParamPlan(SubPlanState *node, PlanState *parent) * * CTE subplans are never executed via parameter recalculation; instead * they get run when called by nodeCtescan.c. So don't mark the output - * parameter of a CTE subplan as dirty, but do set the chgParam bit - * for it so that dependent plan nodes will get told to rescan. + * parameter of a CTE subplan as dirty, but do set the chgParam bit for it + * so that dependent plan nodes will get told to rescan. */ foreach(l, subplan->setParam) { @@ -1099,8 +1099,8 @@ ExecInitAlternativeSubPlan(AlternativeSubPlan *asplan, PlanState *parent) { AlternativeSubPlanState *asstate = makeNode(AlternativeSubPlanState); double num_calls; - SubPlan *subplan1; - SubPlan *subplan2; + SubPlan *subplan1; + SubPlan *subplan2; Cost cost1; Cost cost2; @@ -1108,18 +1108,18 @@ ExecInitAlternativeSubPlan(AlternativeSubPlan *asplan, PlanState *parent) asstate->xprstate.expr = (Expr *) asplan; /* - * Initialize subplans. (Can we get away with only initializing the - * one we're going to use?) + * Initialize subplans. (Can we get away with only initializing the one + * we're going to use?) */ asstate->subplans = (List *) ExecInitExpr((Expr *) asplan->subplans, parent); /* - * Select the one to be used. For this, we need an estimate of the - * number of executions of the subplan. We use the number of output - * rows expected from the parent plan node. This is a good estimate - * if we are in the parent's targetlist, and an underestimate (but - * probably not by more than a factor of 2) if we are in the qual. + * Select the one to be used. For this, we need an estimate of the number + * of executions of the subplan. We use the number of output rows + * expected from the parent plan node. This is a good estimate if we are + * in the parent's targetlist, and an underestimate (but probably not by + * more than a factor of 2) if we are in the qual. */ num_calls = parent->plan->plan_rows; @@ -1157,8 +1157,8 @@ ExecAlternativeSubPlan(AlternativeSubPlanState *node, ExprDoneCond *isDone) { /* Just pass control to the active subplan */ - SubPlanState *activesp = (SubPlanState *) list_nth(node->subplans, - node->active); + SubPlanState *activesp = (SubPlanState *) list_nth(node->subplans, + node->active); Assert(IsA(activesp, SubPlanState)); diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c index c0132c943f5..1a7c5a7aa7a 100644 --- a/src/backend/executor/nodeTidscan.c +++ b/src/backend/executor/nodeTidscan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeTidscan.c,v 1.61 2009/01/01 17:23:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeTidscan.c,v 1.62 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -63,10 +63,10 @@ TidListCreate(TidScanState *tidstate) ListCell *l; /* - * We silently discard any TIDs that are out of range at the time of - * scan start. (Since we hold at least AccessShareLock on the table, - * it won't be possible for someone to truncate away the blocks we - * intend to visit.) + * We silently discard any TIDs that are out of range at the time of scan + * start. (Since we hold at least AccessShareLock on the table, it won't + * be possible for someone to truncate away the blocks we intend to + * visit.) */ nblocks = RelationGetNumberOfBlocks(tidstate->ss.ss_currentRelation); diff --git a/src/backend/executor/nodeUnique.c b/src/backend/executor/nodeUnique.c index b3c256923d3..8878e6ede9e 100644 --- a/src/backend/executor/nodeUnique.c +++ b/src/backend/executor/nodeUnique.c @@ -4,7 +4,7 @@ * Routines to handle unique'ing of queries where appropriate * * Unique is a very simple node type that just filters out duplicate - * tuples from a stream of sorted tuples from its subplan. It's essentially + * tuples from a stream of sorted tuples from its subplan. It's essentially * a dumbed-down form of Group: the duplicate-removal functionality is * identical. However, Unique doesn't do projection nor qual checking, * so it's marginally more efficient for cases where neither is needed. @@ -16,7 +16,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeUnique.c,v 1.60 2009/04/02 20:59:10 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeUnique.c,v 1.61 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -58,8 +58,8 @@ ExecUnique(UniqueState *node) /* * now loop, returning only non-duplicate tuples. We assume that the - * tuples arrive in sorted order so we can detect duplicates easily. - * The first tuple of each group is returned. + * tuples arrive in sorted order so we can detect duplicates easily. The + * first tuple of each group is returned. */ for (;;) { diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c index 263cb0a78c1..0d9eb21a919 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -4,7 +4,7 @@ * routines to handle WindowAgg nodes. * * A WindowAgg node evaluates "window functions" across suitable partitions - * of the input tuple set. Any one WindowAgg works for just a single window + * of the input tuple set. Any one WindowAgg works for just a single window * specification, though it can evaluate multiple window functions sharing * identical window specifications. The input tuples are required to be * delivered in sorted order, with the PARTITION BY columns (if any) as @@ -14,7 +14,7 @@ * * Since window functions can require access to any or all of the rows in * the current partition, we accumulate rows of the partition into a - * tuplestore. The window functions are called using the WindowObject API + * tuplestore. The window functions are called using the WindowObject API * so that they can access those rows as needed. * * We also support using plain aggregate functions as window functions. @@ -27,7 +27,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeWindowAgg.c,v 1.4 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeWindowAgg.c,v 1.5 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -75,15 +75,15 @@ typedef struct WindowStatePerFuncData { /* Links to WindowFunc expr and state nodes this working state is for */ WindowFuncExprState *wfuncstate; - WindowFunc *wfunc; + WindowFunc *wfunc; int numArguments; /* number of arguments */ FmgrInfo flinfo; /* fmgr lookup data for window function */ /* - * We need the len and byval info for the result of each function - * in order to know how to copy/delete values. + * We need the len and byval info for the result of each function in order + * to know how to copy/delete values. */ int16 resulttypeLen; bool resulttypeByVal; @@ -91,7 +91,7 @@ typedef struct WindowStatePerFuncData bool plain_agg; /* is it just a plain aggregate function? */ int aggno; /* if so, index of its PerAggData */ - WindowObject winobj; /* object used in window function API */ + WindowObject winobj; /* object used in window function API */ } WindowStatePerFuncData; /* @@ -144,38 +144,38 @@ typedef struct WindowStatePerAggData } WindowStatePerAggData; static void initialize_windowaggregate(WindowAggState *winstate, - WindowStatePerFunc perfuncstate, - WindowStatePerAgg peraggstate); + WindowStatePerFunc perfuncstate, + WindowStatePerAgg peraggstate); static void advance_windowaggregate(WindowAggState *winstate, - WindowStatePerFunc perfuncstate, - WindowStatePerAgg peraggstate); + WindowStatePerFunc perfuncstate, + WindowStatePerAgg peraggstate); static void finalize_windowaggregate(WindowAggState *winstate, - WindowStatePerFunc perfuncstate, - WindowStatePerAgg peraggstate, - Datum *result, bool *isnull); + WindowStatePerFunc perfuncstate, + WindowStatePerAgg peraggstate, + Datum *result, bool *isnull); static void eval_windowaggregates(WindowAggState *winstate); static void eval_windowfunction(WindowAggState *winstate, - WindowStatePerFunc perfuncstate, - Datum *result, bool *isnull); + WindowStatePerFunc perfuncstate, + Datum *result, bool *isnull); static void begin_partition(WindowAggState *winstate); static void spool_tuples(WindowAggState *winstate, int64 pos); static void release_partition(WindowAggState *winstate); static bool row_is_in_frame(WindowAggState *winstate, int64 pos, - TupleTableSlot *slot); + TupleTableSlot *slot); static void update_frametailpos(WindowObject winobj, TupleTableSlot *slot); static WindowStatePerAggData *initialize_peragg(WindowAggState *winstate, - WindowFunc *wfunc, - WindowStatePerAgg peraggstate); + WindowFunc *wfunc, + WindowStatePerAgg peraggstate); static Datum GetAggInitVal(Datum textInitVal, Oid transtype); static bool are_peers(WindowAggState *winstate, TupleTableSlot *slot1, - TupleTableSlot *slot2); + TupleTableSlot *slot2); static bool window_gettupleslot(WindowObject winobj, int64 pos, - TupleTableSlot *slot); + TupleTableSlot *slot); /* @@ -187,7 +187,7 @@ initialize_windowaggregate(WindowAggState *winstate, WindowStatePerFunc perfuncstate, WindowStatePerAgg peraggstate) { - MemoryContext oldContext; + MemoryContext oldContext; if (peraggstate->initValueIsNull) peraggstate->transValue = peraggstate->initValue; @@ -213,14 +213,14 @@ advance_windowaggregate(WindowAggState *winstate, WindowStatePerFunc perfuncstate, WindowStatePerAgg peraggstate) { - WindowFuncExprState *wfuncstate = perfuncstate->wfuncstate; - int numArguments = perfuncstate->numArguments; - FunctionCallInfoData fcinfodata; - FunctionCallInfo fcinfo = &fcinfodata; - Datum newVal; - ListCell *arg; - int i; - MemoryContext oldContext; + WindowFuncExprState *wfuncstate = perfuncstate->wfuncstate; + int numArguments = perfuncstate->numArguments; + FunctionCallInfoData fcinfodata; + FunctionCallInfo fcinfo = &fcinfodata; + Datum newVal; + ListCell *arg; + int i; + MemoryContext oldContext; ExprContext *econtext = winstate->tmpcontext; oldContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory); @@ -229,7 +229,7 @@ advance_windowaggregate(WindowAggState *winstate, i = 1; foreach(arg, wfuncstate->args) { - ExprState *argstate = (ExprState *) lfirst(arg); + ExprState *argstate = (ExprState *) lfirst(arg); fcinfo->arg[i] = ExecEvalExpr(argstate, econtext, &fcinfo->argnull[i], NULL); @@ -263,8 +263,8 @@ advance_windowaggregate(WindowAggState *winstate, */ MemoryContextSwitchTo(winstate->wincontext); peraggstate->transValue = datumCopy(fcinfo->arg[1], - peraggstate->transtypeByVal, - peraggstate->transtypeLen); + peraggstate->transtypeByVal, + peraggstate->transtypeLen); peraggstate->transValueIsNull = false; peraggstate->noTransValue = false; MemoryContextSwitchTo(oldContext); @@ -327,7 +327,7 @@ finalize_windowaggregate(WindowAggState *winstate, WindowStatePerAgg peraggstate, Datum *result, bool *isnull) { - MemoryContext oldContext; + MemoryContext oldContext; oldContext = MemoryContextSwitchTo(winstate->ss.ps.ps_ExprContext->ecxt_per_tuple_memory); @@ -336,7 +336,7 @@ finalize_windowaggregate(WindowAggState *winstate, */ if (OidIsValid(peraggstate->finalfn_oid)) { - FunctionCallInfoData fcinfo; + FunctionCallInfoData fcinfo; InitFunctionCallInfoData(fcinfo, &(peraggstate->finalfn), 1, (void *) winstate, NULL); @@ -384,12 +384,13 @@ finalize_windowaggregate(WindowAggState *winstate, static void eval_windowaggregates(WindowAggState *winstate) { - WindowStatePerAgg peraggstate; - int wfuncno, numaggs; - int i; - MemoryContext oldContext; - ExprContext *econtext; - TupleTableSlot *agg_row_slot; + WindowStatePerAgg peraggstate; + int wfuncno, + numaggs; + int i; + MemoryContext oldContext; + ExprContext *econtext; + TupleTableSlot *agg_row_slot; numaggs = winstate->numaggs; if (numaggs == 0) @@ -400,44 +401,43 @@ eval_windowaggregates(WindowAggState *winstate) /* * Currently, we support only a subset of the SQL-standard window framing - * rules. In all the supported cases, the window frame always consists - * of a contiguous group of rows extending forward from the start of the - * partition, and rows only enter the frame, never exit it, as the - * current row advances forward. This makes it possible to use an - * incremental strategy for evaluating aggregates: we run the transition - * function for each row added to the frame, and run the final function - * whenever we need the current aggregate value. This is considerably - * more efficient than the naive approach of re-running the entire - * aggregate calculation for each current row. It does assume that the - * final function doesn't damage the running transition value. (Some - * C-coded aggregates do that for efficiency's sake --- but they are - * supposed to do so only when their fcinfo->context is an AggState, not - * a WindowAggState.) + * rules. In all the supported cases, the window frame always consists of + * a contiguous group of rows extending forward from the start of the + * partition, and rows only enter the frame, never exit it, as the current + * row advances forward. This makes it possible to use an incremental + * strategy for evaluating aggregates: we run the transition function for + * each row added to the frame, and run the final function whenever we + * need the current aggregate value. This is considerably more efficient + * than the naive approach of re-running the entire aggregate calculation + * for each current row. It does assume that the final function doesn't + * damage the running transition value. (Some C-coded aggregates do that + * for efficiency's sake --- but they are supposed to do so only when + * their fcinfo->context is an AggState, not a WindowAggState.) * - * In many common cases, multiple rows share the same frame and hence - * the same aggregate value. (In particular, if there's no ORDER BY in - * a RANGE window, then all rows are peers and so they all have window - * frame equal to the whole partition.) We optimize such cases by - * calculating the aggregate value once when we reach the first row of a - * peer group, and then returning the saved value for all subsequent rows. + * In many common cases, multiple rows share the same frame and hence the + * same aggregate value. (In particular, if there's no ORDER BY in a RANGE + * window, then all rows are peers and so they all have window frame equal + * to the whole partition.) We optimize such cases by calculating the + * aggregate value once when we reach the first row of a peer group, and + * then returning the saved value for all subsequent rows. * * 'aggregatedupto' keeps track of the first row that has not yet been * accumulated into the aggregate transition values. Whenever we start a * new peer group, we accumulate forward to the end of the peer group. * - * TODO: In the future, we should implement the full SQL-standard set - * of framing rules. We could implement the other cases by recalculating - * the aggregates whenever a row exits the frame. That would be pretty - * slow, though. For aggregates like SUM and COUNT we could implement a + * TODO: In the future, we should implement the full SQL-standard set of + * framing rules. We could implement the other cases by recalculating the + * aggregates whenever a row exits the frame. That would be pretty slow, + * though. For aggregates like SUM and COUNT we could implement a * "negative transition function" that would be called for each row as it * exits the frame. We'd have to think about avoiding recalculation of * volatile arguments of aggregate functions, too. */ /* - * If we've already aggregated up through current row, reuse the - * saved result values. NOTE: this test works for the currently - * supported framing rules, but will need fixing when more are added. + * If we've already aggregated up through current row, reuse the saved + * result values. NOTE: this test works for the currently supported + * framing rules, but will need fixing when more are added. */ if (winstate->aggregatedupto > winstate->currentpos) { @@ -467,9 +467,9 @@ eval_windowaggregates(WindowAggState *winstate) /* * Advance until we reach a row not in frame (or end of partition). * - * Note the loop invariant: agg_row_slot is either empty or holds the - * row at position aggregatedupto. The agg_ptr read pointer must always - * point to the next row to read into agg_row_slot. + * Note the loop invariant: agg_row_slot is either empty or holds the row + * at position aggregatedupto. The agg_ptr read pointer must always point + * to the next row to read into agg_row_slot. */ agg_row_slot = winstate->agg_row_slot; for (;;) @@ -530,16 +530,16 @@ eval_windowaggregates(WindowAggState *winstate) /* * save the result in case next row shares the same frame. * - * XXX in some framing modes, eg ROWS/END_CURRENT_ROW, we can know - * in advance that the next row can't possibly share the same frame. - * Is it worth detecting that and skipping this code? + * XXX in some framing modes, eg ROWS/END_CURRENT_ROW, we can know in + * advance that the next row can't possibly share the same frame. Is + * it worth detecting that and skipping this code? */ if (!peraggstate->resulttypeByVal) { /* - * clear old resultValue in order not to leak memory. (Note: - * the new result can't possibly be the same datum as old - * resultValue, because we never passed it to the trans function.) + * clear old resultValue in order not to leak memory. (Note: the + * new result can't possibly be the same datum as old resultValue, + * because we never passed it to the trans function.) */ if (!peraggstate->resultValueIsNull) pfree(DatumGetPointer(peraggstate->resultValue)); @@ -579,15 +579,15 @@ eval_windowfunction(WindowAggState *winstate, WindowStatePerFunc perfuncstate, Datum *result, bool *isnull) { FunctionCallInfoData fcinfo; - MemoryContext oldContext; + MemoryContext oldContext; oldContext = MemoryContextSwitchTo(winstate->ss.ps.ps_ExprContext->ecxt_per_tuple_memory); /* - * We don't pass any normal arguments to a window function, but we do - * pass it the number of arguments, in order to permit window function - * implementations to support varying numbers of arguments. The real - * info goes through the WindowObject, which is passed via fcinfo->context. + * We don't pass any normal arguments to a window function, but we do pass + * it the number of arguments, in order to permit window function + * implementations to support varying numbers of arguments. The real info + * goes through the WindowObject, which is passed via fcinfo->context. */ InitFunctionCallInfoData(fcinfo, &(perfuncstate->flinfo), perfuncstate->numArguments, @@ -599,9 +599,9 @@ eval_windowfunction(WindowAggState *winstate, WindowStatePerFunc perfuncstate, *isnull = fcinfo.isnull; /* - * Make sure pass-by-ref data is allocated in the appropriate context. - * (We need this in case the function returns a pointer into some - * short-lived tuple, as is entirely possible.) + * Make sure pass-by-ref data is allocated in the appropriate context. (We + * need this in case the function returns a pointer into some short-lived + * tuple, as is entirely possible.) */ if (!perfuncstate->resulttypeByVal && !fcinfo.isnull && !MemoryContextContains(CurrentMemoryContext, @@ -620,9 +620,9 @@ eval_windowfunction(WindowAggState *winstate, WindowStatePerFunc perfuncstate, static void begin_partition(WindowAggState *winstate) { - PlanState *outerPlan = outerPlanState(winstate); - int numfuncs = winstate->numfuncs; - int i; + PlanState *outerPlan = outerPlanState(winstate); + int numfuncs = winstate->numfuncs; + int i; winstate->partition_spooled = false; winstate->frametail_valid = false; @@ -633,15 +633,15 @@ begin_partition(WindowAggState *winstate) ExecClearTuple(winstate->agg_row_slot); /* - * If this is the very first partition, we need to fetch the first - * input row to store in first_part_slot. + * If this is the very first partition, we need to fetch the first input + * row to store in first_part_slot. */ if (TupIsNull(winstate->first_part_slot)) { TupleTableSlot *outerslot = ExecProcNode(outerPlan); if (!TupIsNull(outerslot)) - ExecCopySlot(winstate->first_part_slot, outerslot); + ExecCopySlot(winstate->first_part_slot, outerslot); else { /* outer plan is empty, so we have nothing to do */ @@ -671,16 +671,16 @@ begin_partition(WindowAggState *winstate) /* create mark and read pointers for each real window function */ for (i = 0; i < numfuncs; i++) { - WindowStatePerFunc perfuncstate = &(winstate->perfunc[i]); + WindowStatePerFunc perfuncstate = &(winstate->perfunc[i]); if (!perfuncstate->plain_agg) { - WindowObject winobj = perfuncstate->winobj; + WindowObject winobj = perfuncstate->winobj; winobj->markptr = tuplestore_alloc_read_pointer(winstate->buffer, 0); winobj->readptr = tuplestore_alloc_read_pointer(winstate->buffer, - EXEC_FLAG_BACKWARD); + EXEC_FLAG_BACKWARD); winobj->markpos = -1; winobj->seekpos = -1; } @@ -701,8 +701,8 @@ begin_partition(WindowAggState *winstate) static void spool_tuples(WindowAggState *winstate, int64 pos) { - WindowAgg *node = (WindowAgg *) winstate->ss.ps.plan; - PlanState *outerPlan; + WindowAgg *node = (WindowAgg *) winstate->ss.ps.plan; + PlanState *outerPlan; TupleTableSlot *outerslot; MemoryContext oldcontext; @@ -713,7 +713,7 @@ spool_tuples(WindowAggState *winstate, int64 pos) /* * If the tuplestore has spilled to disk, alternate reading and writing - * becomes quite expensive due to frequent buffer flushes. It's cheaper + * becomes quite expensive due to frequent buffer flushes. It's cheaper * to force the entire partition to get spooled in one go. * * XXX this is a horrid kluge --- it'd be better to fix the performance @@ -773,11 +773,11 @@ spool_tuples(WindowAggState *winstate, int64 pos) static void release_partition(WindowAggState *winstate) { - int i; + int i; for (i = 0; i < winstate->numfuncs; i++) { - WindowStatePerFunc perfuncstate = &(winstate->perfunc[i]); + WindowStatePerFunc perfuncstate = &(winstate->perfunc[i]); /* Release any partition-local state of this window function */ if (perfuncstate->winobj) @@ -804,7 +804,7 @@ release_partition(WindowAggState *winstate) * to our window framing rule * * The caller must have already determined that the row is in the partition - * and fetched it into a slot. This function just encapsulates the framing + * and fetched it into a slot. This function just encapsulates the framing * rules. */ static bool @@ -895,8 +895,8 @@ update_frametailpos(WindowObject winobj, TupleTableSlot *slot) } /* - * Else we have to search for the first non-peer of the current row. - * We assume the current value of frametailpos is a lower bound on the + * Else we have to search for the first non-peer of the current row. We + * assume the current value of frametailpos is a lower bound on the * possible frame tail location, ie, frame tail never goes backward, and * that currentpos is also a lower bound, ie, current row is always in * frame. @@ -929,18 +929,18 @@ TupleTableSlot * ExecWindowAgg(WindowAggState *winstate) { TupleTableSlot *result; - ExprDoneCond isDone; - ExprContext *econtext; - int i; - int numfuncs; + ExprDoneCond isDone; + ExprContext *econtext; + int i; + int numfuncs; if (winstate->all_done) return NULL; /* - * Check to see if we're still projecting out tuples from a previous output - * tuple (because there is a function-returning-set in the projection - * expressions). If so, try to project another one. + * Check to see if we're still projecting out tuples from a previous + * output tuple (because there is a function-returning-set in the + * projection expressions). If so, try to project another one. */ if (winstate->ss.ps.ps_TupFromTlist) { @@ -1003,8 +1003,8 @@ restart: * Read the current row from the tuplestore, and save in ScanTupleSlot. * (We can't rely on the outerplan's output slot because we may have to * read beyond the current row. Also, we have to actually copy the row - * out of the tuplestore, since window function evaluation might cause - * the tuplestore to dump its state to disk.) + * out of the tuplestore, since window function evaluation might cause the + * tuplestore to dump its state to disk.) * * Current row must be in the tuplestore, since we spooled it above. */ @@ -1019,13 +1019,13 @@ restart: numfuncs = winstate->numfuncs; for (i = 0; i < numfuncs; i++) { - WindowStatePerFunc perfuncstate = &(winstate->perfunc[i]); + WindowStatePerFunc perfuncstate = &(winstate->perfunc[i]); if (perfuncstate->plain_agg) continue; eval_windowfunction(winstate, perfuncstate, - &(econtext->ecxt_aggvalues[perfuncstate->wfuncstate->wfuncno]), - &(econtext->ecxt_aggnulls[perfuncstate->wfuncstate->wfuncno])); + &(econtext->ecxt_aggvalues[perfuncstate->wfuncstate->wfuncno]), + &(econtext->ecxt_aggnulls[perfuncstate->wfuncstate->wfuncno])); } /* @@ -1040,9 +1040,9 @@ restart: tuplestore_trim(winstate->buffer); /* - * Form and return a projection tuple using the windowfunc results - * and the current row. Setting ecxt_outertuple arranges that any - * Vars will be evaluated with respect to that row. + * Form and return a projection tuple using the windowfunc results and the + * current row. Setting ecxt_outertuple arranges that any Vars will be + * evaluated with respect to that row. */ econtext->ecxt_outertuple = winstate->ss.ss_ScanTupleSlot; result = ExecProject(winstate->ss.ps.ps_ProjInfo, &isDone); @@ -1072,8 +1072,8 @@ ExecInitWindowAgg(WindowAgg *node, EState *estate, int eflags) Plan *outerPlan; ExprContext *econtext; ExprContext *tmpcontext; - WindowStatePerFunc perfunc; - WindowStatePerAgg peragg; + WindowStatePerFunc perfunc; + WindowStatePerAgg peragg; int numfuncs, wfuncno, numaggs, @@ -1163,7 +1163,7 @@ ExecInitWindowAgg(WindowAgg *node, EState *estate, int eflags) /* Set up data for comparing tuples */ if (node->partNumCols > 0) winstate->partEqfunctions = execTuplesMatchPrepare(node->partNumCols, - node->partOperators); + node->partOperators); if (node->ordNumCols > 0) winstate->ordEqfunctions = execTuplesMatchPrepare(node->ordNumCols, node->ordOperators); @@ -1189,13 +1189,13 @@ ExecInitWindowAgg(WindowAgg *node, EState *estate, int eflags) aggno = -1; foreach(l, winstate->funcs) { - WindowFuncExprState *wfuncstate = (WindowFuncExprState *) lfirst(l); - WindowFunc *wfunc = (WindowFunc *) wfuncstate->xprstate.expr; + WindowFuncExprState *wfuncstate = (WindowFuncExprState *) lfirst(l); + WindowFunc *wfunc = (WindowFunc *) wfuncstate->xprstate.expr; WindowStatePerFunc perfuncstate; AclResult aclresult; int i; - if (wfunc->winref != node->winref) /* planner screwed up? */ + if (wfunc->winref != node->winref) /* planner screwed up? */ elog(ERROR, "WindowFunc with winref %u assigned to WindowAgg with winref %u", wfunc->winref, node->winref); @@ -1239,13 +1239,13 @@ ExecInitWindowAgg(WindowAgg *node, EState *estate, int eflags) &perfuncstate->resulttypeByVal); /* - * If it's really just a plain aggregate function, - * we'll emulate the Agg environment for it. + * If it's really just a plain aggregate function, we'll emulate the + * Agg environment for it. */ perfuncstate->plain_agg = wfunc->winagg; if (wfunc->winagg) { - WindowStatePerAgg peraggstate; + WindowStatePerAgg peraggstate; perfuncstate->aggno = ++aggno; peraggstate = &winstate->peragg[aggno]; @@ -1325,7 +1325,7 @@ ExecEndWindowAgg(WindowAggState *node) void ExecReScanWindowAgg(WindowAggState *node, ExprContext *exprCtxt) { - ExprContext *econtext = node->ss.ps.ps_ExprContext; + ExprContext *econtext = node->ss.ps.ps_ExprContext; node->all_done = false; @@ -1489,11 +1489,10 @@ initialize_peragg(WindowAggState *winstate, WindowFunc *wfunc, aggtranstype); /* - * If the transfn is strict and the initval is NULL, make sure input - * type and transtype are the same (or at least binary-compatible), so - * that it's OK to use the first input value as the initial - * transValue. This should have been checked at agg definition time, - * but just in case... + * If the transfn is strict and the initval is NULL, make sure input type + * and transtype are the same (or at least binary-compatible), so that + * it's OK to use the first input value as the initial transValue. This + * should have been checked at agg definition time, but just in case... */ if (peraggstate->transfn.fn_strict && peraggstate->initValueIsNull) { @@ -1579,10 +1578,10 @@ window_gettupleslot(WindowObject winobj, int64 pos, TupleTableSlot *slot) tuplestore_select_read_pointer(winstate->buffer, winobj->readptr); /* - * There's no API to refetch the tuple at the current position. We - * have to move one tuple forward, and then one backward. (We don't - * do it the other way because we might try to fetch the row before - * our mark, which isn't allowed.) + * There's no API to refetch the tuple at the current position. We have to + * move one tuple forward, and then one backward. (We don't do it the + * other way because we might try to fetch the row before our mark, which + * isn't allowed.) */ if (winobj->seekpos == pos) { @@ -1623,7 +1622,7 @@ window_gettupleslot(WindowObject winobj, int64 pos, TupleTableSlot *slot) * requested amount of space. Subsequent calls just return the same chunk. * * Memory obtained this way is normally used to hold state that should be - * automatically reset for each new partition. If a window function wants + * automatically reset for each new partition. If a window function wants * to hold state across the whole query, fcinfo->fn_extra can be used in the * usual way for that. */ @@ -1710,10 +1709,10 @@ bool WinRowsArePeers(WindowObject winobj, int64 pos1, int64 pos2) { WindowAggState *winstate; - WindowAgg *node; + WindowAgg *node; TupleTableSlot *slot1; TupleTableSlot *slot2; - bool res; + bool res; Assert(WindowObjectIsValid(winobj)); winstate = winobj->winstate; @@ -1789,7 +1788,7 @@ WinGetFuncArgInPartition(WindowObject winobj, int argno, break; default: elog(ERROR, "unrecognized window seek type: %d", seektype); - abs_pos = 0; /* keep compiler quiet */ + abs_pos = 0; /* keep compiler quiet */ break; } @@ -1862,7 +1861,7 @@ WinGetFuncArgInFrame(WindowObject winobj, int argno, break; default: elog(ERROR, "unrecognized window seek type: %d", seektype); - abs_pos = 0; /* keep compiler quiet */ + abs_pos = 0; /* keep compiler quiet */ break; } diff --git a/src/backend/executor/nodeWorktablescan.c b/src/backend/executor/nodeWorktablescan.c index 24fd2c5f736..87a0204525d 100644 --- a/src/backend/executor/nodeWorktablescan.c +++ b/src/backend/executor/nodeWorktablescan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeWorktablescan.c,v 1.6 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeWorktablescan.c,v 1.7 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -73,10 +73,10 @@ TupleTableSlot * ExecWorkTableScan(WorkTableScanState *node) { /* - * On the first call, find the ancestor RecursiveUnion's state - * via the Param slot reserved for it. (We can't do this during node - * init because there are corner cases where we'll get the init call - * before the RecursiveUnion does.) + * On the first call, find the ancestor RecursiveUnion's state via the + * Param slot reserved for it. (We can't do this during node init because + * there are corner cases where we'll get the init call before the + * RecursiveUnion does.) */ if (node->rustate == NULL) { @@ -100,8 +100,8 @@ ExecWorkTableScan(WorkTableScanState *node) ExecGetResultType(&node->rustate->ps)); /* - * Now we can initialize the projection info. This must be - * completed before we can call ExecScan(). + * Now we can initialize the projection info. This must be completed + * before we can call ExecScan(). */ ExecAssignScanProjectionInfo(&node->ss); } diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index f750560c6f4..40f43ee011b 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.207 2009/01/21 11:02:40 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.208 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -45,11 +45,11 @@ static int _SPI_connected = -1; static int _SPI_curid = -1; static Portal SPI_cursor_open_internal(const char *name, SPIPlanPtr plan, - Datum *Values, const char *Nulls, - bool read_only, int pflags); + Datum *Values, const char *Nulls, + bool read_only, int pflags); static void _SPI_prepare_plan(const char *src, SPIPlanPtr plan, - ParamListInfo boundParams); + ParamListInfo boundParams); static int _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, Snapshot snapshot, Snapshot crosscheck_snapshot, @@ -308,7 +308,7 @@ SPI_pop(void) bool SPI_push_conditional(void) { - bool pushed = (_SPI_curid != _SPI_connected); + bool pushed = (_SPI_curid != _SPI_connected); if (pushed) { @@ -962,7 +962,7 @@ SPI_cursor_open(const char *name, SPIPlanPtr plan, /* * SPI_cursor_open_with_args() * - * Parse and plan a query and open it as a portal. Like SPI_execute_with_args, + * Parse and plan a query and open it as a portal. Like SPI_execute_with_args, * we can tell the planner to rely on the parameter values as constants, * because the plan will only be used once. */ @@ -1212,8 +1212,8 @@ SPI_cursor_open_internal(const char *name, SPIPlanPtr plan, } /* - * Set up the snapshot to use. (PortalStart will do PushActiveSnapshot, so - * we skip that here.) + * Set up the snapshot to use. (PortalStart will do PushActiveSnapshot, + * so we skip that here.) */ if (read_only) snapshot = GetActiveSnapshot(); @@ -1767,13 +1767,13 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, if (read_only && !CommandIsReadOnly(stmt)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - /* translator: %s is a SQL statement name */ - errmsg("%s is not allowed in a non-volatile function", - CreateCommandTag(stmt)))); + /* translator: %s is a SQL statement name */ + errmsg("%s is not allowed in a non-volatile function", + CreateCommandTag(stmt)))); /* - * If not read-only mode, advance the command counter before - * each command. + * If not read-only mode, advance the command counter before each + * command. */ if (!read_only) CommandCounterIncrement(); @@ -1784,7 +1784,8 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, { /* * Default read_only behavior is to use the entry-time - * ActiveSnapshot, if any; if read-write, grab a full new snap. + * ActiveSnapshot, if any; if read-write, grab a full new + * snap. */ if (read_only) { @@ -1804,8 +1805,8 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, { /* * We interpret read_only with a specified snapshot to be - * exactly that snapshot, but read-write means use the - * snap with advancing of command ID. + * exactly that snapshot, but read-write means use the snap + * with advancing of command ID. */ if (read_only) PushActiveSnapshot(snapshot); @@ -1839,7 +1840,7 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, ProcessUtility(stmt, plansource->query_string, paramLI, - false, /* not top level */ + false, /* not top level */ dest, NULL); /* Update "processed" if stmt returned tuples */ @@ -1853,9 +1854,9 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, PopActiveSnapshot(); /* - * The last canSetTag query sets the status values returned to - * the caller. Be careful to free any tuptables not returned, - * to avoid intratransaction memory leak. + * The last canSetTag query sets the status values returned to the + * caller. Be careful to free any tuptables not returned, to + * avoid intratransaction memory leak. */ if (canSetTag) { @@ -1884,9 +1885,9 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI, cplan = NULL; /* - * If not read-only mode, advance the command counter after the - * last command. This ensures that its effects are visible, in - * case it was DDL that would affect the next CachedPlanSource. + * If not read-only mode, advance the command counter after the last + * command. This ensures that its effects are visible, in case it was + * DDL that would affect the next CachedPlanSource. */ if (!read_only) CommandCounterIncrement(); @@ -1912,9 +1913,9 @@ fail: _SPI_current->tuptable = NULL; /* - * If none of the queries had canSetTag, return SPI_OK_REWRITTEN. Prior - * to 8.4, we used return the last query's result code, but not its - * auxiliary results, but that's confusing. + * If none of the queries had canSetTag, return SPI_OK_REWRITTEN. Prior to + * 8.4, we used return the last query's result code, but not its auxiliary + * results, but that's confusing. */ if (my_res == 0) my_res = SPI_OK_REWRITTEN; @@ -1938,7 +1939,7 @@ _SPI_convert_params(int nargs, Oid *argtypes, /* sizeof(ParamListInfoData) includes the first array element */ paramLI = (ParamListInfo) palloc(sizeof(ParamListInfoData) + - (nargs - 1) *sizeof(ParamExternData)); + (nargs - 1) *sizeof(ParamExternData)); paramLI->numParams = nargs; for (i = 0; i < nargs; i++) diff --git a/src/backend/executor/tstoreReceiver.c b/src/backend/executor/tstoreReceiver.c index a8ad1dc3ff5..19f348f13f6 100644 --- a/src/backend/executor/tstoreReceiver.c +++ b/src/backend/executor/tstoreReceiver.c @@ -5,7 +5,7 @@ * a Tuplestore. * * Optionally, we can force detoasting (but not decompression) of out-of-line - * toasted values. This is to support cursors WITH HOLD, which must retain + * toasted values. This is to support cursors WITH HOLD, which must retain * data even if the underlying table is dropped. * * @@ -13,7 +13,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/tstoreReceiver.c,v 1.22 2009/01/01 17:23:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/tstoreReceiver.c,v 1.23 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -121,8 +121,8 @@ tstoreReceiveSlot_detoast(TupleTableSlot *slot, DestReceiver *self) /* * Fetch back any out-of-line datums. We build the new datums array in - * myState->outvalues[] (but we can re-use the slot's isnull array). - * Also, remember the fetched values to free afterwards. + * myState->outvalues[] (but we can re-use the slot's isnull array). Also, + * remember the fetched values to free afterwards. */ nfree = 0; for (i = 0; i < natts; i++) @@ -136,7 +136,7 @@ tstoreReceiveSlot_detoast(TupleTableSlot *slot, DestReceiver *self) if (VARATT_IS_EXTERNAL(DatumGetPointer(val))) { val = PointerGetDatum(heap_tuple_fetch_attr((struct varlena *) - DatumGetPointer(val))); + DatumGetPointer(val))); myState->tofree[nfree++] = val; } } diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c index 3ec42506777..4fb00328ca1 100644 --- a/src/backend/foreign/foreign.c +++ b/src/backend/foreign/foreign.c @@ -1,12 +1,12 @@ /*------------------------------------------------------------------------- * * foreign.c - * support for foreign-data wrappers, servers and user mappings. + * support for foreign-data wrappers, servers and user mappings. * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/foreign/foreign.c,v 1.3 2009/02/24 10:06:32 petere Exp $ + * $PostgreSQL: pgsql/src/backend/foreign/foreign.c,v 1.4 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -36,16 +36,16 @@ extern Datum postgresql_fdw_validator(PG_FUNCTION_ARGS); /* - * GetForeignDataWrapper - look up the foreign-data wrapper by OID. + * GetForeignDataWrapper - look up the foreign-data wrapper by OID. */ ForeignDataWrapper * GetForeignDataWrapper(Oid fdwid) { - Form_pg_foreign_data_wrapper fdwform; - ForeignDataWrapper *fdw; - Datum datum; - HeapTuple tp; - bool isnull; + Form_pg_foreign_data_wrapper fdwform; + ForeignDataWrapper *fdw; + Datum datum; + HeapTuple tp; + bool isnull; tp = SearchSysCache(FOREIGNDATAWRAPPEROID, ObjectIdGetDatum(fdwid), @@ -82,7 +82,7 @@ GetForeignDataWrapper(Oid fdwid) Oid GetForeignDataWrapperOidByName(const char *fdwname, bool missing_ok) { - Oid fdwId; + Oid fdwId; fdwId = GetSysCacheOid(FOREIGNDATAWRAPPERNAME, CStringGetDatum(fdwname), @@ -91,7 +91,7 @@ GetForeignDataWrapperOidByName(const char *fdwname, bool missing_ok) if (!OidIsValid(fdwId) && !missing_ok) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", fdwname))); + errmsg("foreign-data wrapper \"%s\" does not exist", fdwname))); return fdwId; } @@ -104,7 +104,7 @@ GetForeignDataWrapperOidByName(const char *fdwname, bool missing_ok) ForeignDataWrapper * GetForeignDataWrapperByName(const char *fdwname, bool missing_ok) { - Oid fdwId = GetForeignDataWrapperOidByName(fdwname, missing_ok); + Oid fdwId = GetForeignDataWrapperOidByName(fdwname, missing_ok); if (!OidIsValid(fdwId) && missing_ok) return NULL; @@ -119,11 +119,11 @@ GetForeignDataWrapperByName(const char *fdwname, bool missing_ok) ForeignServer * GetForeignServer(Oid serverid) { - Form_pg_foreign_server serverform; - ForeignServer *server; - HeapTuple tp; - Datum datum; - bool isnull; + Form_pg_foreign_server serverform; + ForeignServer *server; + HeapTuple tp; + Datum datum; + bool isnull; tp = SearchSysCache(FOREIGNSERVEROID, ObjectIdGetDatum(serverid), @@ -175,7 +175,7 @@ GetForeignServer(Oid serverid) Oid GetForeignServerOidByName(const char *srvname, bool missing_ok) { - Oid serverid; + Oid serverid; serverid = GetSysCacheOid(FOREIGNSERVERNAME, CStringGetDatum(srvname), @@ -184,7 +184,7 @@ GetForeignServerOidByName(const char *srvname, bool missing_ok) if (!OidIsValid(serverid) && !missing_ok) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", srvname))); + errmsg("server \"%s\" does not exist", srvname))); return serverid; } @@ -196,7 +196,7 @@ GetForeignServerOidByName(const char *srvname, bool missing_ok) ForeignServer * GetForeignServerByName(const char *srvname, bool missing_ok) { - Oid serverid = GetForeignServerOidByName(srvname, missing_ok); + Oid serverid = GetForeignServerOidByName(srvname, missing_ok); if (!OidIsValid(serverid) && missing_ok) return NULL; @@ -214,11 +214,11 @@ GetForeignServerByName(const char *srvname, bool missing_ok) UserMapping * GetUserMapping(Oid userid, Oid serverid) { - Form_pg_user_mapping umform; + Form_pg_user_mapping umform; Datum datum; - HeapTuple tp; + HeapTuple tp; bool isnull; - UserMapping *um; + UserMapping *um; tp = SearchSysCache(USERMAPPINGUSERSERVER, ObjectIdGetDatum(userid), @@ -237,8 +237,8 @@ GetUserMapping(Oid userid, Oid serverid) if (!HeapTupleIsValid(tp)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("user mapping not found for \"%s\"", - MappingUserName(userid)))); + errmsg("user mapping not found for \"%s\"", + MappingUserName(userid)))); umform = (Form_pg_user_mapping) GETSTRUCT(tp); @@ -270,7 +270,7 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options) TupleDesc tupdesc; Tuplestorestate *tupstore; Datum values[2]; - bool nulls[2] = { 0 }; + bool nulls[2] = {0}; MemoryContext per_query_ctx; MemoryContext oldcontext; @@ -296,12 +296,12 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options) rsinfo->setResult = tupstore; rsinfo->setDesc = tupdesc; - foreach (cell, options) + foreach(cell, options) { - DefElem *def = lfirst(cell); + DefElem *def = lfirst(cell); values[0] = CStringGetTextDatum(def->defname); - values[1] = CStringGetTextDatum(((Value *)def->arg)->val.str); + values[1] = CStringGetTextDatum(((Value *) def->arg)->val.str); tuplestore_putvalues(tupstore, tupdesc, values, nulls); } @@ -319,7 +319,7 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options) Datum pg_options_to_table(PG_FUNCTION_ARGS) { - Datum array = PG_GETARG_DATUM(0); + Datum array = PG_GETARG_DATUM(0); deflist_to_tuplestore((ReturnSetInfo *) fcinfo->resultinfo, untransformRelOptions(array)); @@ -330,9 +330,10 @@ pg_options_to_table(PG_FUNCTION_ARGS) /* * Describes the valid options for postgresql FDW, server, and user mapping. */ -struct ConnectionOption { - const char *optname; - Oid optcontext; /* Oid of catalog in which option may appear */ +struct ConnectionOption +{ + const char *optname; + Oid optcontext; /* Oid of catalog in which option may appear */ }; /* @@ -341,21 +342,21 @@ struct ConnectionOption { * The list is small - don't bother with bsearch if it stays so. */ static struct ConnectionOption libpq_conninfo_options[] = { - { "authtype", ForeignServerRelationId }, - { "service", ForeignServerRelationId }, - { "user", UserMappingRelationId }, - { "password", UserMappingRelationId }, - { "connect_timeout", ForeignServerRelationId }, - { "dbname", ForeignServerRelationId }, - { "host", ForeignServerRelationId }, - { "hostaddr", ForeignServerRelationId }, - { "port", ForeignServerRelationId }, - { "tty", ForeignServerRelationId }, - { "options", ForeignServerRelationId }, - { "requiressl", ForeignServerRelationId }, - { "sslmode", ForeignServerRelationId }, - { "gsslib", ForeignServerRelationId }, - { NULL, InvalidOid } + {"authtype", ForeignServerRelationId}, + {"service", ForeignServerRelationId}, + {"user", UserMappingRelationId}, + {"password", UserMappingRelationId}, + {"connect_timeout", ForeignServerRelationId}, + {"dbname", ForeignServerRelationId}, + {"host", ForeignServerRelationId}, + {"hostaddr", ForeignServerRelationId}, + {"port", ForeignServerRelationId}, + {"tty", ForeignServerRelationId}, + {"options", ForeignServerRelationId}, + {"requiressl", ForeignServerRelationId}, + {"sslmode", ForeignServerRelationId}, + {"gsslib", ForeignServerRelationId}, + {NULL, InvalidOid} }; @@ -387,19 +388,19 @@ is_conninfo_option(const char *option, Oid context) Datum postgresql_fdw_validator(PG_FUNCTION_ARGS) { - List* options_list = untransformRelOptions(PG_GETARG_DATUM(0)); - Oid catalog = PG_GETARG_OID(1); + List *options_list = untransformRelOptions(PG_GETARG_DATUM(0)); + Oid catalog = PG_GETARG_OID(1); - ListCell *cell; + ListCell *cell; - foreach (cell, options_list) + foreach(cell, options_list) { DefElem *def = lfirst(cell); if (!is_conninfo_option(def->defname, catalog)) { - struct ConnectionOption *opt; - StringInfoData buf; + struct ConnectionOption *opt; + StringInfoData buf; /* * Unknown option specified, complain about it. Provide a hint @@ -414,7 +415,7 @@ postgresql_fdw_validator(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("invalid option \"%s\"", def->defname), - errhint("Valid options in this context are: %s", buf.data))); + errhint("Valid options in this context are: %s", buf.data))); PG_RETURN_BOOL(false); } diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index fb51d8df04f..84d72cb2410 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/auth.c,v 1.181 2009/05/27 21:08:22 mha Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/auth.c,v 1.182 2009/06/11 14:48:57 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -22,7 +22,7 @@ #include <sys/ucred.h> #endif #ifdef HAVE_UCRED_H -# include <ucred.h> +#include <ucred.h> #endif #include <netinet/in.h> #include <arpa/inet.h> @@ -36,7 +36,7 @@ #include "storage/ipc.h" /*---------------------------------------------------------------- - * Global authentication functions + * Global authentication functions *---------------------------------------------------------------- */ static void sendAuthRequest(Port *port, AuthRequest areq); @@ -55,7 +55,7 @@ static int recv_and_check_password_packet(Port *port); /* Standard TCP port number for Ident service. Assigned by IANA */ #define IDENT_PORT 113 -static int authident(hbaPort *port); +static int authident(hbaPort *port); /*---------------------------------------------------------------- @@ -101,17 +101,17 @@ static Port *pam_port_cludge; /* Workaround for passing "Port *port" into /* Correct header from the Platform SDK */ typedef -ULONG(*__ldap_start_tls_sA) ( - IN PLDAP ExternalHandle, - OUT PULONG ServerReturnValue, - OUT LDAPMessage ** result, - IN PLDAPControlA * ServerControls, - IN PLDAPControlA * ClientControls +ULONG (*__ldap_start_tls_sA) ( + IN PLDAP ExternalHandle, + OUT PULONG ServerReturnValue, + OUT LDAPMessage **result, + IN PLDAPControlA * ServerControls, + IN PLDAPControlA * ClientControls ); #endif static int CheckLDAPAuth(Port *port); -#endif /* USE_LDAP */ +#endif /* USE_LDAP */ /*---------------------------------------------------------------- * Cert authentication @@ -136,7 +136,7 @@ bool pg_krb_caseins_users; *---------------------------------------------------------------- */ #ifdef KRB5 -static int pg_krb5_recvauth(Port *port); +static int pg_krb5_recvauth(Port *port); #include <krb5.h> /* Some old versions of Kerberos do not include <com_err.h> in <krb5.h> */ @@ -151,7 +151,7 @@ static int pg_krb5_initialised; static krb5_context pg_krb5_context; static krb5_keytab pg_krb5_keytab; static krb5_principal pg_krb5_server; -#endif /* KRB5 */ +#endif /* KRB5 */ /*---------------------------------------------------------------- @@ -165,8 +165,8 @@ static krb5_principal pg_krb5_server; #include <gssapi/gssapi.h> #endif -static int pg_GSS_recvauth(Port *port); -#endif /* ENABLE_GSS */ +static int pg_GSS_recvauth(Port *port); +#endif /* ENABLE_GSS */ /*---------------------------------------------------------------- @@ -174,10 +174,10 @@ static int pg_GSS_recvauth(Port *port); *---------------------------------------------------------------- */ #ifdef ENABLE_SSPI -typedef SECURITY_STATUS +typedef SECURITY_STATUS (WINAPI * QUERY_SECURITY_CONTEXT_TOKEN_FN) ( PCtxtHandle, void **); -static int pg_SSPI_recvauth(Port *port); +static int pg_SSPI_recvauth(Port *port); #endif @@ -282,10 +282,9 @@ ClientAuthentication(Port *port) errhint("See server log for details."))); /* - * This is the first point where we have access to the hba record for - * the current connection, so perform any verifications based on the - * hba options field that should be done *before* the authentication - * here. + * This is the first point where we have access to the hba record for the + * current connection, so perform any verifications based on the hba + * options field that should be done *before* the authentication here. */ if (port->hba->clientcert) { @@ -301,12 +300,13 @@ ClientAuthentication(Port *port) { ereport(FATAL, (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), - errmsg("connection requires a valid client certificate"))); + errmsg("connection requires a valid client certificate"))); } #else + /* - * hba.c makes sure hba->clientcert can't be set unless OpenSSL - * is present. + * hba.c makes sure hba->clientcert can't be set unless OpenSSL is + * present. */ Assert(false); #endif @@ -738,9 +738,9 @@ pg_krb5_recvauth(Port *port) if (cp) { /* - * If we are not going to include the realm in the username that is passed - * to the ident map, destructively modify it here to remove the realm. Then - * advance past the separator to check the realm. + * If we are not going to include the realm in the username that is + * passed to the ident map, destructively modify it here to remove the + * realm. Then advance past the separator to check the realm. */ if (!port->hba->include_realm) *cp = '\0'; @@ -766,7 +766,7 @@ pg_krb5_recvauth(Port *port) } } } - else if (port->hba->krb_realm&& strlen(port->hba->krb_realm)) + else if (port->hba->krb_realm && strlen(port->hba->krb_realm)) { elog(DEBUG2, "krb5 did not return realm but realm matching was requested"); @@ -867,8 +867,8 @@ pg_GSS_recvauth(Port *port) /* * GSS auth is not supported for protocol versions before 3, because it * relies on the overall message length word to determine the GSS payload - * size in AuthenticationGSSContinue and PasswordMessage messages. - * (This is, in fact, a design error in our GSS support, because protocol + * size in AuthenticationGSSContinue and PasswordMessage messages. (This + * is, in fact, a design error in our GSS support, because protocol * messages are supposed to be parsable without relying on the length * word; but it's not worth changing it now.) */ @@ -887,8 +887,8 @@ pg_GSS_recvauth(Port *port) */ if (getenv("KRB5_KTNAME") == NULL) { - size_t kt_len = strlen(pg_krb_server_keyfile) + 14; - char *kt_path = malloc(kt_len); + size_t kt_len = strlen(pg_krb_server_keyfile) + 14; + char *kt_path = malloc(kt_len); if (!kt_path) { @@ -1030,9 +1030,9 @@ pg_GSS_recvauth(Port *port) char *cp = strchr(gbuf.value, '@'); /* - * If we are not going to include the realm in the username that is passed - * to the ident map, destructively modify it here to remove the realm. Then - * advance past the separator to check the realm. + * If we are not going to include the realm in the username that is + * passed to the ident map, destructively modify it here to remove the + * realm. Then advance past the separator to check the realm. */ if (!port->hba->include_realm) *cp = '\0'; @@ -1128,8 +1128,8 @@ pg_SSPI_recvauth(Port *port) /* * SSPI auth is not supported for protocol versions before 3, because it * relies on the overall message length word to determine the SSPI payload - * size in AuthenticationGSSContinue and PasswordMessage messages. - * (This is, in fact, a design error in our SSPI support, because protocol + * size in AuthenticationGSSContinue and PasswordMessage messages. (This + * is, in fact, a design error in our SSPI support, because protocol * messages are supposed to be parsable without relying on the length * word; but it's not worth changing it now.) */ @@ -1355,8 +1355,8 @@ pg_SSPI_recvauth(Port *port) */ if (port->hba->include_realm) { - char *namebuf; - int retval; + char *namebuf; + int retval; namebuf = palloc(strlen(accountname) + strlen(domainname) + 2); sprintf(namebuf, "%s@%s", accountname, domainname); @@ -1697,9 +1697,9 @@ ident_unix(int sock, char *ident_user) /* Solaris > 10 */ uid_t uid; struct passwd *pass; - ucred_t *ucred; + ucred_t *ucred; - ucred = NULL; /* must be initialized to NULL */ + ucred = NULL; /* must be initialized to NULL */ if (getpeerucred(sock, &ucred) == -1) { ereport(LOG, @@ -1712,7 +1712,7 @@ ident_unix(int sock, char *ident_user) { ereport(LOG, (errcode_for_socket_access(), - errmsg("could not get effective UID from peer credentials: %m"))); + errmsg("could not get effective UID from peer credentials: %m"))); return false; } @@ -1722,8 +1722,8 @@ ident_unix(int sock, char *ident_user) if (pass == NULL) { ereport(LOG, - (errmsg("local user with ID %d does not exist", - (int) uid))); + (errmsg("local user with ID %d does not exist", + (int) uid))); return false; } @@ -2050,7 +2050,7 @@ CheckLDAPAuth(Port *port) int ldapversion = LDAP_VERSION3; char fulluser[NAMEDATALEN + 256 + 1]; - if (!port->hba->ldapserver|| port->hba->ldapserver[0] == '\0') + if (!port->hba->ldapserver || port->hba->ldapserver[0] == '\0') { ereport(LOG, (errmsg("LDAP server not specified"))); @@ -2188,4 +2188,5 @@ CheckCertAuth(Port *port) /* Just pass the certificate CN to the usermap check */ return check_usermap(port->hba->usermap, port->user_name, port->peer_cn, false); } + #endif diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c index ead962d6928..24605b5490d 100644 --- a/src/backend/libpq/be-fsstubs.c +++ b/src/backend/libpq/be-fsstubs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/be-fsstubs.c,v 1.90 2009/01/01 17:23:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/be-fsstubs.c,v 1.91 2009/06/11 14:48:58 momjian Exp $ * * NOTES * This should be moved to a more appropriate place. It is here @@ -80,7 +80,7 @@ static MemoryContext fscxt = NULL; static int newLOfd(LargeObjectDesc *lobjCookie); static void deleteLOfd(int fd); -static Oid lo_import_internal(text *filename, Oid lobjOid); +static Oid lo_import_internal(text *filename, Oid lobjOid); /***************************************************************************** @@ -334,7 +334,7 @@ Datum lo_import_with_oid(PG_FUNCTION_ARGS) { text *filename = PG_GETARG_TEXT_PP(0); - Oid oid = PG_GETARG_OID(1); + Oid oid = PG_GETARG_OID(1); PG_RETURN_OID(lo_import_internal(filename, oid)); } @@ -348,8 +348,8 @@ lo_import_internal(text *filename, Oid lobjOid) char buf[BUFSIZE]; char fnamebuf[MAXPGPATH]; LargeObjectDesc *lobj; - Oid oid; - + Oid oid; + #ifndef ALLOW_DANGEROUS_LO_FUNCTIONS if (!superuser()) ereport(ERROR, diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c index a6478b55237..ef2db7f1745 100644 --- a/src/backend/libpq/be-secure.c +++ b/src/backend/libpq/be-secure.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.91 2009/05/11 08:06:21 mha Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/be-secure.c,v 1.92 2009/06/11 14:48:58 momjian Exp $ * * Since the server static private key ($DataDir/server.key) * will normally be stored unencrypted so that the database @@ -730,7 +730,7 @@ initialize_SSL(void) * Load and verify certificate and private key */ if (SSL_CTX_use_certificate_chain_file(SSL_context, - SERVER_CERT_FILE) != 1) + SERVER_CERT_FILE) != 1) ereport(FATAL, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("could not load server certificate file \"%s\": %s", @@ -754,14 +754,14 @@ initialize_SSL(void) if (!S_ISREG(buf.st_mode) || buf.st_mode & (S_IRWXG | S_IRWXO)) ereport(FATAL, (errcode(ERRCODE_CONFIG_FILE_ERROR), - errmsg("private key file \"%s\" has group or world access", - SERVER_PRIVATE_KEY_FILE), - errdetail("Permissions should be u=rw (0600) or less."))); + errmsg("private key file \"%s\" has group or world access", + SERVER_PRIVATE_KEY_FILE), + errdetail("Permissions should be u=rw (0600) or less."))); #endif if (SSL_CTX_use_PrivateKey_file(SSL_context, - SERVER_PRIVATE_KEY_FILE, - SSL_FILETYPE_PEM) != 1) + SERVER_PRIVATE_KEY_FILE, + SSL_FILETYPE_PEM) != 1) ereport(FATAL, (errmsg("could not load private key file \"%s\": %s", SERVER_PRIVATE_KEY_FILE, SSLerrmessage()))); @@ -781,29 +781,32 @@ initialize_SSL(void) elog(FATAL, "could not set the cipher list (no valid ciphers available)"); /* - * Attempt to load CA store, so we can verify client certificates if needed. + * Attempt to load CA store, so we can verify client certificates if + * needed. */ if (access(ROOT_CERT_FILE, R_OK)) { ssl_loaded_verify_locations = false; /* - * If root certificate file simply not found. Don't log an error here, because - * it's quite likely the user isn't planning on using client certificates. - * If we can't access it for other reasons, it is an error. + * If root certificate file simply not found. Don't log an error here, + * because it's quite likely the user isn't planning on using client + * certificates. If we can't access it for other reasons, it is an + * error. */ if (errno != ENOENT) { ereport(FATAL, - (errmsg("could not access root certificate file \"%s\": %m", - ROOT_CERT_FILE))); + (errmsg("could not access root certificate file \"%s\": %m", + ROOT_CERT_FILE))); } } else if (SSL_CTX_load_verify_locations(SSL_context, ROOT_CERT_FILE, NULL) != 1) { /* - * File was there, but we could not load it. This means the file is somehow - * broken, and we cannot do verification at all - so abort here. + * File was there, but we could not load it. This means the file is + * somehow broken, and we cannot do verification at all - so abort + * here. */ ssl_loaded_verify_locations = false; ereport(FATAL, @@ -843,8 +846,9 @@ initialize_SSL(void) } /* - * Always ask for SSL client cert, but don't fail if it's not presented. We'll fail later in this case, - * based on what we find in pg_hba.conf. + * Always ask for SSL client cert, but don't fail if it's not + * presented. We'll fail later in this case, based on what we find + * in pg_hba.conf. */ SSL_CTX_set_verify(SSL_context, (SSL_VERIFY_PEER | diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c index 63cb204a8d4..0b9e0378a30 100644 --- a/src/backend/libpq/hba.c +++ b/src/backend/libpq/hba.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.185 2009/04/15 21:42:50 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/hba.c,v 1.186 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -568,12 +568,12 @@ check_db(const char *dbname, const char *role, char *param_str) /* * Macros used to check and report on invalid configuration options. * INVALID_AUTH_OPTION = reports when an option is specified for a method where it's - * not supported. + * not supported. * REQUIRE_AUTH_OPTION = same as INVALID_AUTH_OPTION, except it also checks if the - * method is actually the one specified. Used as a shortcut when - * the option is only valid for one authentication method. + * method is actually the one specified. Used as a shortcut when + * the option is only valid for one authentication method. * MANDATORY_AUTH_ARG = check if a required option is set for an authentication method, - * reporting error if it's not. + * reporting error if it's not. */ #define INVALID_AUTH_OPTION(optname, validmethods) do {\ ereport(LOG, \ @@ -642,9 +642,9 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) ereport(LOG, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("hostssl not supported on this platform"), - errhint("compile with --enable-ssl to use SSL connections"), + errhint("compile with --enable-ssl to use SSL connections"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; #endif } @@ -654,12 +654,12 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) parsedline->conntype = ctHostNoSSL; } #endif - else + else { /* "host", or "hostnossl" and SSL support not built in */ parsedline->conntype = ctHost; } - } /* record type */ + } /* record type */ else { ereport(LOG, @@ -667,7 +667,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) errmsg("invalid connection type \"%s\"", token), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } @@ -679,7 +679,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("end-of-line before database specification"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } parsedline->database = pstrdup(lfirst(line_item)); @@ -692,7 +692,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("end-of-line before role specification"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } parsedline->role = pstrdup(lfirst(line_item)); @@ -707,7 +707,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("end-of-line before ip address specification"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } token = pstrdup(lfirst(line_item)); @@ -735,7 +735,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) errmsg("invalid IP address \"%s\": %s", token, gai_strerror(ret)), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); if (cidr_slash) *cidr_slash = '/'; if (gai_result) @@ -760,7 +760,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) errmsg("invalid CIDR mask in address \"%s\"", token), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } } @@ -774,7 +774,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("end-of-line before netmask specification"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } token = lfirst(line_item); @@ -787,7 +787,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) errmsg("invalid IP mask \"%s\": %s", token, gai_strerror(ret)), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); if (gai_result) pg_freeaddrinfo_all(hints.ai_family, gai_result); return false; @@ -805,7 +805,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) return false; } } - } /* != ctLocal */ + } /* != ctLocal */ /* Get the authentication method */ line_item = lnext(line_item); @@ -815,7 +815,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("end-of-line before authentication method"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } token = lfirst(line_item); @@ -883,7 +883,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) errmsg("invalid authentication method \"%s\"", token), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } @@ -894,7 +894,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) errmsg("invalid authentication method \"%s\": not supported on this platform", token), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } @@ -904,9 +904,9 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) { ereport(LOG, (errcode(ERRCODE_CONFIG_FILE_ERROR), - errmsg("krb5 authentication is not supported on local sockets"), + errmsg("krb5 authentication is not supported on local sockets"), errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + line_num, HbaFileName))); return false; } @@ -924,7 +924,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) /* Parse remaining arguments */ while ((line_item = lnext(line_item)) != NULL) { - char *c; + char *c; token = lfirst(line_item); @@ -945,7 +945,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) } else { - *c++ = '\0'; /* token now holds "name", c holds "value" */ + *c++ = '\0'; /* token now holds "name", c holds "value" */ if (strcmp(token, "map") == 0) { if (parsedline->auth_method != uaIdent && @@ -959,16 +959,17 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) else if (strcmp(token, "clientcert") == 0) { /* - * Since we require ctHostSSL, this really can never happen on non-SSL-enabled - * builds, so don't bother checking for USE_SSL. + * Since we require ctHostSSL, this really can never happen on + * non-SSL-enabled builds, so don't bother checking for + * USE_SSL. */ if (parsedline->conntype != ctHostSSL) { ereport(LOG, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("clientcert can only be configured for \"hostssl\" rows"), - errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + errcontext("line %d of configuration file \"%s\"", + line_num, HbaFileName))); return false; } if (strcmp(c, "1") == 0) @@ -979,8 +980,8 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("client certificates can only be checked if a root certificate store is available"), errdetail("make sure the root certificate store is present and readable"), - errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + errcontext("line %d of configuration file \"%s\"", + line_num, HbaFileName))); return false; } parsedline->clientcert = true; @@ -992,8 +993,8 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) ereport(LOG, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("clientcert can not be set to 0 when using \"cert\" authentication"), - errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + errcontext("line %d of configuration file \"%s\"", + line_num, HbaFileName))); return false; } parsedline->clientcert = false; @@ -1026,8 +1027,8 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) ereport(LOG, (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("invalid LDAP port number: \"%s\"", c), - errcontext("line %d of configuration file \"%s\"", - line_num, HbaFileName))); + errcontext("line %d of configuration file \"%s\"", + line_num, HbaFileName))); return false; } } @@ -1069,7 +1070,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) { ereport(LOG, (errcode(ERRCODE_CONFIG_FILE_ERROR), - errmsg("unknown authentication option name: \"%s\"", token), + errmsg("unknown authentication option name: \"%s\"", token), errcontext("line %d of configuration file \"%s\"", line_num, HbaFileName))); return false; @@ -1078,8 +1079,8 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) } /* - * Check if the selected authentication method has any mandatory arguments that - * are not set. + * Check if the selected authentication method has any mandatory arguments + * that are not set. */ if (parsedline->auth_method == uaLDAP) { @@ -1093,7 +1094,7 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline) { parsedline->clientcert = true; } - + return true; } @@ -1106,7 +1107,7 @@ static bool check_hba(hbaPort *port) { ListCell *line; - HbaLine *hba; + HbaLine *hba; foreach(line, parsed_hba_lines) { @@ -1150,28 +1151,30 @@ check_hba(hbaPort *port) continue; } #ifdef HAVE_IPV6 - else if (hba->addr.ss_family == AF_INET && - port->raddr.addr.ss_family == AF_INET6) + else if (hba->addr.ss_family == AF_INET && + port->raddr.addr.ss_family == AF_INET6) { /* - * Wrong address family. We allow only one case: if the file has - * IPv4 and the port is IPv6, promote the file address to IPv6 and - * try to match that way. + * Wrong address family. We allow only one case: if the file + * has IPv4 and the port is IPv6, promote the file address to + * IPv6 and try to match that way. */ - struct sockaddr_storage addrcopy, maskcopy; + struct sockaddr_storage addrcopy, + maskcopy; + memcpy(&addrcopy, &hba->addr, sizeof(addrcopy)); memcpy(&maskcopy, &hba->mask, sizeof(maskcopy)); pg_promote_v4_to_v6_addr(&addrcopy); pg_promote_v4_to_v6_mask(&maskcopy); - + if (!pg_range_sockaddr(&port->raddr.addr, &addrcopy, &maskcopy)) continue; } -#endif /* HAVE_IPV6 */ +#endif /* HAVE_IPV6 */ else /* Wrong address family, no IPV6 */ continue; - } /* != ctLocal */ + } /* != ctLocal */ /* Check database and role */ if (!check_db(port->database_name, port->user_name, hba->database)) @@ -1191,8 +1194,8 @@ check_hba(hbaPort *port) port->hba = hba; return true; - /* XXX: - * Return false only happens if we have a parsing error, which we can + /* + * XXX: Return false only happens if we have a parsing error, which we can * no longer have (parsing now in postmaster). Consider changing API. */ } @@ -1279,11 +1282,12 @@ free_hba_record(HbaLine *record) static void clean_hba_list(List *lines) { - ListCell *line; + ListCell *line; foreach(line, lines) { - HbaLine *parsed = (HbaLine *)lfirst(line); + HbaLine *parsed = (HbaLine *) lfirst(line); + if (parsed) free_hba_record(parsed); } @@ -1301,11 +1305,12 @@ bool load_hba(void) { FILE *file; - List *hba_lines = NIL; - List *hba_line_nums = NIL; - ListCell *line, *line_num; - List *new_parsed_lines = NIL; - bool ok = true; + List *hba_lines = NIL; + List *hba_line_nums = NIL; + ListCell *line, + *line_num; + List *new_parsed_lines = NIL; + bool ok = true; file = AllocateFile(HbaFileName, "r"); if (file == NULL) @@ -1314,10 +1319,11 @@ load_hba(void) (errcode_for_file_access(), errmsg("could not open configuration file \"%s\": %m", HbaFileName))); + /* * Caller will take care of making this a FATAL error in case this is - * the initial startup. If it happens on reload, we just keep the - * old version around. + * the initial startup. If it happens on reload, we just keep the old + * version around. */ return false; } @@ -1328,7 +1334,7 @@ load_hba(void) /* Now parse all the lines */ forboth(line, hba_lines, line_num, hba_line_nums) { - HbaLine *newline; + HbaLine *newline; newline = palloc0(sizeof(HbaLine)); @@ -1339,9 +1345,9 @@ load_hba(void) pfree(newline); /* - * Keep parsing the rest of the file so we can report errors - * on more than the first row. Error has already been reported - * in the parsing function, so no need to log it here. + * Keep parsing the rest of the file so we can report errors on + * more than the first row. Error has already been reported in the + * parsing function, so no need to log it here. */ ok = false; continue; @@ -1461,10 +1467,10 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name, if (file_ident_user[0] == '/') { /* - * When system username starts with a slash, treat it as a regular expression. - * In this case, we process the system username as a regular expression that - * returns exactly one match. This is replaced for \1 in the database username - * string, if present. + * When system username starts with a slash, treat it as a regular + * expression. In this case, we process the system username as a + * regular expression that returns exactly one match. This is replaced + * for \1 in the database username string, if present. */ int r; regex_t re; @@ -1474,22 +1480,22 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name, char *ofs; char *regexp_pgrole; - wstr = palloc((strlen(file_ident_user+1) + 1) * sizeof(pg_wchar)); - wlen = pg_mb2wchar_with_len(file_ident_user+1, wstr, strlen(file_ident_user+1)); + wstr = palloc((strlen(file_ident_user + 1) + 1) * sizeof(pg_wchar)); + wlen = pg_mb2wchar_with_len(file_ident_user + 1, wstr, strlen(file_ident_user + 1)); /* - * XXX: Major room for optimization: regexps could be compiled when the file is loaded - * and then re-used in every connection. + * XXX: Major room for optimization: regexps could be compiled when + * the file is loaded and then re-used in every connection. */ r = pg_regcomp(&re, wstr, wlen, REG_ADVANCED); if (r) { - char errstr[100]; + char errstr[100]; pg_regerror(r, &re, errstr, sizeof(errstr)); ereport(ERROR, (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), - errmsg("invalid regular expression \"%s\": %s", file_ident_user+1, errstr))); + errmsg("invalid regular expression \"%s\": %s", file_ident_user + 1, errstr))); pfree(wstr); *error_p = true; @@ -1500,10 +1506,10 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name, wstr = palloc((strlen(ident_user) + 1) * sizeof(pg_wchar)); wlen = pg_mb2wchar_with_len(ident_user, wstr, strlen(ident_user)); - r = pg_regexec(&re, wstr, wlen, 0, NULL, 2, matches,0); + r = pg_regexec(&re, wstr, wlen, 0, NULL, 2, matches, 0); if (r) { - char errstr[100]; + char errstr[100]; if (r != REG_NOMATCH) { @@ -1511,7 +1517,7 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name, pg_regerror(r, &re, errstr, sizeof(errstr)); ereport(ERROR, (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), - errmsg("regular expression match for \"%s\" failed: %s", file_ident_user+1, errstr))); + errmsg("regular expression match for \"%s\" failed: %s", file_ident_user + 1, errstr))); *error_p = true; } @@ -1528,14 +1534,18 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name, ereport(ERROR, (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), errmsg("regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"", - file_ident_user+1, file_pgrole))); - /* length: original length minus length of \1 plus length of match plus null terminator */ - regexp_pgrole = palloc0(strlen(file_pgrole) - 2 + (matches[1].rm_eo-matches[1].rm_so) + 1); - strncpy(regexp_pgrole, file_pgrole, (ofs-file_pgrole)); - memcpy(regexp_pgrole+strlen(regexp_pgrole), - ident_user+matches[1].rm_so, - matches[1].rm_eo-matches[1].rm_so); - strcat(regexp_pgrole, ofs+2); + file_ident_user + 1, file_pgrole))); + + /* + * length: original length minus length of \1 plus length of match + * plus null terminator + */ + regexp_pgrole = palloc0(strlen(file_pgrole) - 2 + (matches[1].rm_eo - matches[1].rm_so) + 1); + strncpy(regexp_pgrole, file_pgrole, (ofs - file_pgrole)); + memcpy(regexp_pgrole + strlen(regexp_pgrole), + ident_user + matches[1].rm_so, + matches[1].rm_eo - matches[1].rm_so); + strcat(regexp_pgrole, ofs + 2); } else { @@ -1545,7 +1555,10 @@ parse_ident_usermap(List *line, int line_number, const char *usermap_name, pg_regfree(&re); - /* now check if the username actually matched what the user is trying to connect as */ + /* + * now check if the username actually matched what the user is trying + * to connect as + */ if (case_insensitive) { if (pg_strcasecmp(regexp_pgrole, pg_role) == 0) @@ -1594,8 +1607,8 @@ ident_syntax: * See if the user with ident username "ident_user" is allowed to act * as Postgres user "pgrole" according to usermap "usermap_name". * - * Special case: Usermap NULL, equivalent to what was previously called - * "sameuser" or "samerole", don't look in the usermap + * Special case: Usermap NULL, equivalent to what was previously called + * "sameuser" or "samerole", don't look in the usermap * file. That's an implied map where "pgrole" must be identical to * "ident_user" in order to be authorized. * @@ -1603,9 +1616,9 @@ ident_syntax: */ int check_usermap(const char *usermap_name, - const char *pg_role, - const char *auth_user, - bool case_insensitive) + const char *pg_role, + const char *auth_user, + bool case_insensitive) { bool found_entry = false, error = false; @@ -1617,7 +1630,8 @@ check_usermap(const char *usermap_name, if (pg_strcasecmp(pg_role, auth_user) == 0) return STATUS_OK; } - else { + else + { if (strcmp(pg_role, auth_user) == 0) return STATUS_OK; } @@ -1634,7 +1648,7 @@ check_usermap(const char *usermap_name, forboth(line_cell, ident_lines, num_cell, ident_line_nums) { parse_ident_usermap(lfirst(line_cell), lfirst_int(num_cell), - usermap_name, pg_role, auth_user, case_insensitive, + usermap_name, pg_role, auth_user, case_insensitive, &found_entry, &error); if (found_entry || error) break; @@ -1643,11 +1657,11 @@ check_usermap(const char *usermap_name, if (!found_entry && !error) { ereport(LOG, - (errmsg("no match in usermap for user \"%s\" authenticated as \"%s\"", - pg_role, auth_user), - errcontext("usermap \"%s\"", usermap_name))); + (errmsg("no match in usermap for user \"%s\" authenticated as \"%s\"", + pg_role, auth_user), + errcontext("usermap \"%s\"", usermap_name))); } - return found_entry?STATUS_OK:STATUS_ERROR; + return found_entry ? STATUS_OK : STATUS_ERROR; } diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c index 76f472b629c..80880b38070 100644 --- a/src/backend/libpq/ip.c +++ b/src/backend/libpq/ip.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.45 2009/04/23 23:25:13 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.46 2009/06/11 14:48:58 momjian Exp $ * * This file and the IPV6 implementation were initially provided by * Nigel Kukard <nkukard@lbsd.net>, Linux Based Systems Design @@ -78,8 +78,7 @@ pg_getaddrinfo_all(const char *hostname, const char *servname, /* NULL has special meaning to getaddrinfo(). */ rc = getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname, servname, hintp, result); - -#else /* _AIX */ +#else /* _AIX */ /* * Various versions of AIX have various bugs in getaddrinfo()'s handling @@ -113,7 +112,7 @@ pg_getaddrinfo_all(const char *hostname, const char *servname, } } } -#endif /* _AIX */ +#endif /* _AIX */ return rc; } diff --git a/src/backend/libpq/pqformat.c b/src/backend/libpq/pqformat.c index 83d7a2bbf76..7731d19eaf1 100644 --- a/src/backend/libpq/pqformat.c +++ b/src/backend/libpq/pqformat.c @@ -24,7 +24,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.49 2009/03/02 21:18:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.50 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -218,7 +218,7 @@ pq_send_ascii_string(StringInfo buf, const char *str) { while (*str) { - char ch = *str++; + char ch = *str++; if (IS_HIGHBIT_SET(ch)) ch = '?'; diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index a587ef5df5b..4917986e891 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -15,7 +15,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.430 2009/04/16 20:42:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.431 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -182,7 +182,7 @@ _copyAppend(Append *from) static RecursiveUnion * _copyRecursiveUnion(RecursiveUnion *from) { - RecursiveUnion *newnode = makeNode(RecursiveUnion); + RecursiveUnion *newnode = makeNode(RecursiveUnion); /* * copy node superclass fields @@ -455,7 +455,7 @@ _copyValuesScan(ValuesScan *from) static CteScan * _copyCteScan(CteScan *from) { - CteScan *newnode = makeNode(CteScan); + CteScan *newnode = makeNode(CteScan); /* * copy node superclass fields @@ -1916,7 +1916,7 @@ _copyFuncCall(FuncCall *from) static A_Star * _copyAStar(A_Star *from) { - A_Star *newnode = makeNode(A_Star); + A_Star *newnode = makeNode(A_Star); return newnode; } @@ -1946,7 +1946,7 @@ _copyA_Indirection(A_Indirection *from) static A_ArrayExpr * _copyA_ArrayExpr(A_ArrayExpr *from) { - A_ArrayExpr *newnode = makeNode(A_ArrayExpr); + A_ArrayExpr *newnode = makeNode(A_ArrayExpr); COPY_NODE_FIELD(elements); COPY_LOCATION_FIELD(location); @@ -2382,7 +2382,7 @@ _copyClusterStmt(ClusterStmt *from) COPY_NODE_FIELD(relation); COPY_STRING_FIELD(indexname); - COPY_SCALAR_FIELD(verbose) ; + COPY_SCALAR_FIELD(verbose); return newnode; } diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index d4c8b7262c1..78756e6e788 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -22,7 +22,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.353 2009/04/16 20:42:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/equalfuncs.c,v 1.354 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -773,9 +773,9 @@ static bool _equalPlaceHolderVar(PlaceHolderVar *a, PlaceHolderVar *b) { /* - * We intentionally do not compare phexpr. Two PlaceHolderVars with the + * We intentionally do not compare phexpr. Two PlaceHolderVars with the * same ID and levelsup should be considered equal even if the contained - * expressions have managed to mutate to different states. One way in + * expressions have managed to mutate to different states. One way in * which that can happen is that initplan sublinks would get replaced by * differently-numbered Params when sublink folding is done. (The end * result of such a situation would be some unreferenced initplans, which diff --git a/src/backend/nodes/list.c b/src/backend/nodes/list.c index 33adc0ff58a..04e17439e8c 100644 --- a/src/backend/nodes/list.c +++ b/src/backend/nodes/list.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/list.c,v 1.71 2009/01/01 17:23:43 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/list.c,v 1.72 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -793,7 +793,7 @@ list_union_oid(List *list1, List *list2) * "intersection" if list1 is known unique beforehand. * * This variant works on lists of pointers, and determines list - * membership via equal(). Note that the list1 member will be pointed + * membership via equal(). Note that the list1 member will be pointed * to in the result. */ List * diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index d0a34347830..0d21c9fcb0d 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/nodeFuncs.c,v 1.39 2009/03/10 22:09:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/nodeFuncs.c,v 1.40 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -231,7 +231,7 @@ exprType(Node *expr) /* * exprTypmod - * returns the type-specific modifier of the expression's result type, - * if it can be determined. In many cases, it can't and we return -1. + * if it can be determined. In many cases, it can't and we return -1. */ int32 exprTypmod(Node *expr) @@ -680,7 +680,7 @@ exprLocation(Node *expr) case T_DistinctExpr: /* struct-equivalent to OpExpr */ case T_NullIfExpr: /* struct-equivalent to OpExpr */ { - OpExpr *opexpr = (OpExpr *) expr; + OpExpr *opexpr = (OpExpr *) expr; /* consider both operator name and leftmost arg */ loc = leftmostLoc(opexpr->location, @@ -711,7 +711,7 @@ exprLocation(Node *expr) break; case T_SubLink: { - SubLink *sublink = (SubLink *) expr; + SubLink *sublink = (SubLink *) expr; /* check the testexpr, if any, and the operator/keyword */ loc = leftmostLoc(exprLocation(sublink->testexpr), @@ -792,7 +792,7 @@ exprLocation(Node *expr) break; case T_XmlExpr: { - XmlExpr *xexpr = (XmlExpr *) expr; + XmlExpr *xexpr = (XmlExpr *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(xexpr->location, @@ -846,7 +846,7 @@ exprLocation(Node *expr) break; case T_A_Expr: { - A_Expr *aexpr = (A_Expr *) expr; + A_Expr *aexpr = (A_Expr *) expr; /* use leftmost of operator or left operand (if any) */ /* we assume right operand can't be to left of operator */ @@ -865,7 +865,7 @@ exprLocation(Node *expr) break; case T_FuncCall: { - FuncCall *fc = (FuncCall *) expr; + FuncCall *fc = (FuncCall *) expr; /* consider both function name and leftmost arg */ loc = leftmostLoc(fc->location, @@ -882,11 +882,11 @@ exprLocation(Node *expr) break; case T_TypeCast: { - TypeCast *tc = (TypeCast *) expr; + TypeCast *tc = (TypeCast *) expr; /* - * This could represent CAST(), ::, or TypeName 'literal', - * so any of the components might be leftmost. + * This could represent CAST(), ::, or TypeName 'literal', so + * any of the components might be leftmost. */ loc = exprLocation(tc->arg); loc = leftmostLoc(loc, tc->typename->location); @@ -1265,7 +1265,7 @@ expression_tree_walker(Node *node, break; case T_WindowClause: { - WindowClause *wc = (WindowClause *) node; + WindowClause *wc = (WindowClause *) node; if (walker(wc->partitionClause, context)) return true; @@ -1278,8 +1278,8 @@ expression_tree_walker(Node *node, CommonTableExpr *cte = (CommonTableExpr *) node; /* - * Invoke the walker on the CTE's Query node, so it - * can recurse into the sub-query if it wants to. + * Invoke the walker on the CTE's Query node, so it can + * recurse into the sub-query if it wants to. */ return walker(cte->ctequery, context); } @@ -1423,7 +1423,7 @@ range_table_walker(List *rtable, { case RTE_RELATION: case RTE_SPECIAL: - case RTE_CTE: + case RTE_CTE: /* nothing to do */ break; case RTE_SUBQUERY: @@ -1904,8 +1904,8 @@ expression_tree_mutator(Node *node, return node; case T_WindowClause: { - WindowClause *wc = (WindowClause *) node; - WindowClause *newnode; + WindowClause *wc = (WindowClause *) node; + WindowClause *newnode; FLATCOPY(newnode, wc, WindowClause); MUTATE(newnode->partitionClause, wc->partitionClause, List *); @@ -1921,8 +1921,8 @@ expression_tree_mutator(Node *node, FLATCOPY(newnode, cte, CommonTableExpr); /* - * Also invoke the mutator on the CTE's Query node, so it - * can recurse into the sub-query if it wants to. + * Also invoke the mutator on the CTE's Query node, so it can + * recurse into the sub-query if it wants to. */ MUTATE(newnode->ctequery, cte->ctequery, Node *); return (Node *) newnode; @@ -2070,7 +2070,7 @@ query_tree_mutator(Query *query, MUTATE(query->limitCount, query->limitCount, Node *); if (!(flags & QTW_IGNORE_CTE_SUBQUERIES)) MUTATE(query->cteList, query->cteList, List *); - else /* else copy CTE list as-is */ + else /* else copy CTE list as-is */ query->cteList = copyObject(query->cteList); query->rtable = range_table_mutator(query->rtable, mutator, context, flags); @@ -2198,7 +2198,7 @@ query_or_expression_tree_mutator(Node *node, * that could appear under it, but not other statement types. */ bool -raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) + raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) { ListCell *temp; @@ -2356,7 +2356,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) break; case T_A_Expr: { - A_Expr *expr = (A_Expr *) node; + A_Expr *expr = (A_Expr *) node; if (walker(expr->lexpr, context)) return true; @@ -2370,7 +2370,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) break; case T_FuncCall: { - FuncCall *fcall = (FuncCall *) node; + FuncCall *fcall = (FuncCall *) node; if (walker(fcall->args, context)) return true; @@ -2381,7 +2381,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) break; case T_A_Indices: { - A_Indices *indices = (A_Indices *) node; + A_Indices *indices = (A_Indices *) node; if (walker(indices->lidx, context)) return true; @@ -2403,7 +2403,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) return walker(((A_ArrayExpr *) node)->elements, context); case T_ResTarget: { - ResTarget *rt = (ResTarget *) node; + ResTarget *rt = (ResTarget *) node; if (walker(rt->indirection, context)) return true; @@ -2413,7 +2413,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) break; case T_TypeCast: { - TypeCast *tc = (TypeCast *) node; + TypeCast *tc = (TypeCast *) node; if (walker(tc->arg, context)) return true; @@ -2425,7 +2425,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) return walker(((SortBy *) node)->node, context); case T_WindowDef: { - WindowDef *wd = (WindowDef *) node; + WindowDef *wd = (WindowDef *) node; if (walker(wd->partitionClause, context)) return true; @@ -2455,7 +2455,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) break; case T_TypeName: { - TypeName *tn = (TypeName *) node; + TypeName *tn = (TypeName *) node; if (walker(tn->typmods, context)) return true; @@ -2466,7 +2466,7 @@ raw_expression_tree_walker(Node *node, bool (*walker) (), void *context) break; case T_ColumnDef: { - ColumnDef *coldef = (ColumnDef *) node; + ColumnDef *coldef = (ColumnDef *) node; if (walker(coldef->typename, context)) return true; diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 18e9a5792fa..d79bd750d04 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.359 2009/04/16 20:42:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.360 2009/06/11 14:48:58 momjian Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -332,7 +332,7 @@ _outAppend(StringInfo str, Append *node) static void _outRecursiveUnion(StringInfo str, RecursiveUnion *node) { - int i; + int i; WRITE_NODE_TYPE("RECURSIVEUNION"); @@ -544,7 +544,7 @@ _outHashJoin(StringInfo str, HashJoin *node) static void _outAgg(StringInfo str, Agg *node) { - int i; + int i; WRITE_NODE_TYPE("AGG"); @@ -587,7 +587,7 @@ _outWindowAgg(StringInfo str, WindowAgg *node) WRITE_INT_FIELD(ordNumCols); appendStringInfo(str, " :ordColIdx"); - for (i = 0; i< node->ordNumCols; i++) + for (i = 0; i < node->ordNumCols; i++) appendStringInfo(str, " %d", node->ordColIdx[i]); appendStringInfo(str, " :ordOperations"); diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index de62e53d1df..b27cd513a59 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/readfuncs.c,v 1.221 2009/01/22 20:16:04 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/readfuncs.c,v 1.222 2009/06/11 14:48:58 momjian Exp $ * * NOTES * Path and Plan nodes do not have any readfuncs support, because we @@ -107,7 +107,7 @@ #define READ_LOCATION_FIELD(fldname) \ token = pg_strtok(&length); /* skip :fldname */ \ token = pg_strtok(&length); /* get field value */ \ - local_node->fldname = -1 /* set field to "unknown" */ + local_node->fldname = -1 /* set field to "unknown" */ /* Read a Node field */ #define READ_NODE_FIELD(fldname) \ @@ -148,7 +148,8 @@ static Datum readDatum(bool typbyval); static Bitmapset * _readBitmapset(void) { - Bitmapset *result = NULL; + Bitmapset *result = NULL; + READ_TEMP_LOCALS(); token = pg_strtok(&length); @@ -165,8 +166,8 @@ _readBitmapset(void) for (;;) { - int val; - char *endptr; + int val; + char *endptr; token = pg_strtok(&length); if (token == NULL) diff --git a/src/backend/nodes/tidbitmap.c b/src/backend/nodes/tidbitmap.c index e56b4696b4f..79e036e8bfe 100644 --- a/src/backend/nodes/tidbitmap.c +++ b/src/backend/nodes/tidbitmap.c @@ -19,7 +19,7 @@ * of lossiness. In theory we could fall back to page ranges at some * point, but for now that seems useless complexity. * - * We also support the notion of candidate matches, or rechecking. This + * We also support the notion of candidate matches, or rechecking. This * means we know that a search need visit only some tuples on a page, * but we are not certain that all of those tuples are real matches. * So the eventual heap scan must recheck the quals for these tuples only, @@ -32,7 +32,7 @@ * Copyright (c) 2003-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/tidbitmap.c,v 1.18 2009/03/24 20:17:14 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/tidbitmap.c,v 1.19 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -143,7 +143,7 @@ struct TIDBitmap /* * When iterating over a bitmap in sorted order, a TBMIterator is used to - * track our progress. There can be several iterators scanning the same + * track our progress. There can be several iterators scanning the same * bitmap concurrently. Note that the bitmap becomes read-only as soon as * any iterator is created. */ @@ -511,10 +511,10 @@ tbm_intersect_page(TIDBitmap *a, PagetableEntry *apage, const TIDBitmap *b) else if (tbm_page_is_lossy(b, apage->blockno)) { /* - * Some of the tuples in 'a' might not satisfy the quals for 'b', - * but because the page 'b' is lossy, we don't know which ones. - * Therefore we mark 'a' as requiring rechecks, to indicate that - * at most those tuples set in 'a' are matches. + * Some of the tuples in 'a' might not satisfy the quals for 'b', but + * because the page 'b' is lossy, we don't know which ones. Therefore + * we mark 'a' as requiring rechecks, to indicate that at most those + * tuples set in 'a' are matches. */ apage->recheck = true; return false; @@ -573,7 +573,7 @@ tbm_begin_iterate(TIDBitmap *tbm) * needs of the TBMIterateResult sub-struct. */ iterator = (TBMIterator *) palloc(sizeof(TBMIterator) + - MAX_TUPLES_PER_PAGE * sizeof(OffsetNumber)); + MAX_TUPLES_PER_PAGE * sizeof(OffsetNumber)); iterator->tbm = tbm; /* @@ -584,10 +584,10 @@ tbm_begin_iterate(TIDBitmap *tbm) iterator->schunkbit = 0; /* - * If we have a hashtable, create and fill the sorted page lists, - * unless we already did that for a previous iterator. Note that the - * lists are attached to the bitmap not the iterator, so they can be - * used by more than one iterator. + * If we have a hashtable, create and fill the sorted page lists, unless + * we already did that for a previous iterator. Note that the lists are + * attached to the bitmap not the iterator, so they can be used by more + * than one iterator. */ if (tbm->status == TBM_HASH && !tbm->iterating) { @@ -644,7 +644,7 @@ tbm_begin_iterate(TIDBitmap *tbm) TBMIterateResult * tbm_iterate(TBMIterator *iterator) { - TIDBitmap *tbm = iterator->tbm; + TIDBitmap *tbm = iterator->tbm; TBMIterateResult *output = &(iterator->output); Assert(tbm->iterating); diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index fee9b8fac86..4a0a1012c0a 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.182 2009/04/19 19:46:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/allpaths.c,v 1.183 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -58,9 +58,9 @@ static void set_function_pathlist(PlannerInfo *root, RelOptInfo *rel, static void set_values_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry *rte); static void set_cte_pathlist(PlannerInfo *root, RelOptInfo *rel, - RangeTblEntry *rte); + RangeTblEntry *rte); static void set_worktable_pathlist(PlannerInfo *root, RelOptInfo *rel, - RangeTblEntry *rte); + RangeTblEntry *rte); static RelOptInfo *make_rel_from_joinlist(PlannerInfo *root, List *joinlist); static bool subquery_is_pushdown_safe(Query *subquery, Query *topquery, bool *differentTypes); @@ -292,13 +292,13 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, /* * Initialize to compute size estimates for whole append relation. * - * We handle width estimates by weighting the widths of different - * child rels proportionally to their number of rows. This is sensible - * because the use of width estimates is mainly to compute the total - * relation "footprint" if we have to sort or hash it. To do this, - * we sum the total equivalent size (in "double" arithmetic) and then - * divide by the total rowcount estimate. This is done separately for - * the total rel width and each attribute. + * We handle width estimates by weighting the widths of different child + * rels proportionally to their number of rows. This is sensible because + * the use of width estimates is mainly to compute the total relation + * "footprint" if we have to sort or hash it. To do this, we sum the + * total equivalent size (in "double" arithmetic) and then divide by the + * total rowcount estimate. This is done separately for the total rel + * width and each attribute. * * Note: if you consider changing this logic, beware that child rels could * have zero rows and/or width, if they were excluded by constraints. @@ -377,11 +377,11 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, } /* - * Note: we could compute appropriate attr_needed data for the - * child's variables, by transforming the parent's attr_needed - * through the translated_vars mapping. However, currently there's - * no need because attr_needed is only examined for base relations - * not otherrels. So we just leave the child's attr_needed empty. + * Note: we could compute appropriate attr_needed data for the child's + * variables, by transforming the parent's attr_needed through the + * translated_vars mapping. However, currently there's no need + * because attr_needed is only examined for base relations not + * otherrels. So we just leave the child's attr_needed empty. */ /* @@ -438,7 +438,7 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, rel->rows = parent_rows; if (parent_rows > 0) { - int i; + int i; rel->width = rint(parent_size / parent_rows); for (i = 0; i < nattrs; i++) @@ -681,6 +681,7 @@ set_cte_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry *rte) if (!cteroot) /* shouldn't happen */ elog(ERROR, "bad levelsup for CTE \"%s\"", rte->ctename); } + /* * Note: cte_plan_ids can be shorter than cteList, if we are still working * on planning the CTEs (ie, this is a side-reference from another CTE). @@ -726,8 +727,8 @@ set_worktable_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry *rte) /* * We need to find the non-recursive term's plan, which is in the plan - * level that's processing the recursive UNION, which is one level - * *below* where the CTE comes from. + * level that's processing the recursive UNION, which is one level *below* + * where the CTE comes from. */ levelsup = rte->ctelevelsup; if (levelsup == 0) /* shouldn't happen */ @@ -1087,7 +1088,7 @@ compare_tlist_datatypes(List *tlist, List *colTypes, * of rows returned. (This condition is vacuous for DISTINCT, because then * there are no non-DISTINCT output columns, so we needn't check. But note * we are assuming that the qual can't distinguish values that the DISTINCT - * operator sees as equal. This is a bit shaky but we have no way to test + * operator sees as equal. This is a bit shaky but we have no way to test * for the case, and it's unlikely enough that we shouldn't refuse the * optimization just because it could theoretically happen.) * @@ -1113,8 +1114,8 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, return false; /* - * It would be unsafe to push down window function calls, but at least - * for the moment we could never see any in a qual anyhow. + * It would be unsafe to push down window function calls, but at least for + * the moment we could never see any in a qual anyhow. */ Assert(!contain_window_function(qual)); diff --git a/src/backend/optimizer/path/clausesel.c b/src/backend/optimizer/path/clausesel.c index ee02689d296..34407af6074 100644 --- a/src/backend/optimizer/path/clausesel.c +++ b/src/backend/optimizer/path/clausesel.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/clausesel.c,v 1.97 2009/02/06 23:43:23 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/clausesel.c,v 1.98 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -102,8 +102,8 @@ clauselist_selectivity(PlannerInfo *root, ListCell *l; /* - * If there's exactly one clause, then no use in trying to match up - * pairs, so just go directly to clause_selectivity(). + * If there's exactly one clause, then no use in trying to match up pairs, + * so just go directly to clause_selectivity(). */ if (list_length(clauses) == 1) return clause_selectivity(root, (Node *) linitial(clauses), @@ -410,30 +410,30 @@ treat_as_join_clause(Node *clause, RestrictInfo *rinfo, if (varRelid != 0) { /* - * Caller is forcing restriction mode (eg, because we are examining - * an inner indexscan qual). + * Caller is forcing restriction mode (eg, because we are examining an + * inner indexscan qual). */ return false; } else if (sjinfo == NULL) { /* - * It must be a restriction clause, since it's being evaluated at - * a scan node. + * It must be a restriction clause, since it's being evaluated at a + * scan node. */ return false; } else { /* - * Otherwise, it's a join if there's more than one relation used. - * We can optimize this calculation if an rinfo was passed. + * Otherwise, it's a join if there's more than one relation used. We + * can optimize this calculation if an rinfo was passed. * - * XXX Since we know the clause is being evaluated at a join, - * the only way it could be single-relation is if it was delayed - * by outer joins. Although we can make use of the restriction - * qual estimators anyway, it seems likely that we ought to account - * for the probability of injected nulls somehow. + * XXX Since we know the clause is being evaluated at a join, the + * only way it could be single-relation is if it was delayed by outer + * joins. Although we can make use of the restriction qual estimators + * anyway, it seems likely that we ought to account for the + * probability of injected nulls somehow. */ if (rinfo) return (bms_membership(rinfo->clause_relids) == BMS_MULTIPLE); @@ -467,7 +467,7 @@ treat_as_join_clause(Node *clause, RestrictInfo *rinfo, * if the clause isn't a join clause. * * sjinfo is NULL for a non-join clause, otherwise it provides additional - * context information about the join being performed. There are some + * context information about the join being performed. There are some * special cases: * 1. For a special (not INNER) join, sjinfo is always a member of * root->join_info_list. @@ -525,7 +525,7 @@ clause_selectivity(PlannerInfo *root, * contains only vars of that relid --- otherwise varRelid will affect * the result, so mustn't cache. Outer join quals might be examined * with either their join's actual jointype or JOIN_INNER, so we need - * two cache variables to remember both cases. Note: we assume the + * two cache variables to remember both cases. Note: we assume the * result won't change if we are switching the input relations or * considering a unique-ified case, so we only need one cache variable * for all non-JOIN_INNER cases. @@ -571,8 +571,8 @@ clause_selectivity(PlannerInfo *root, { /* * A Var at the top of a clause must be a bool Var. This is - * equivalent to the clause reln.attribute = 't', so we - * compute the selectivity as if that is what we have. + * equivalent to the clause reln.attribute = 't', so we compute + * the selectivity as if that is what we have. */ s1 = restriction_selectivity(root, BooleanEqualOperator, diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index eca0f80b8c1..08f1d361bae 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -54,7 +54,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.208 2009/05/09 22:51:41 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.209 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -126,7 +126,7 @@ static bool adjust_semi_join(PlannerInfo *root, JoinPath *path, Selectivity *match_count, bool *indexed_join_quals); static double approx_tuple_count(PlannerInfo *root, JoinPath *path, - List *quals); + List *quals); static void set_rel_width(PlannerInfo *root, RelOptInfo *rel); static double relation_byte_size(double tuples, int width); static double page_size(double tuples, int width); @@ -946,7 +946,7 @@ cost_valuesscan(Path *path, PlannerInfo *root, RelOptInfo *baserel) * * Note: this is used for both self-reference and regular CTEs; the * possible cost differences are below the threshold of what we could - * estimate accurately anyway. Note that the costs of evaluating the + * estimate accurately anyway. Note that the costs of evaluating the * referenced CTE query are added into the final plan as initplan costs, * and should NOT be counted here. */ @@ -998,9 +998,9 @@ cost_recursive_union(Plan *runion, Plan *nrterm, Plan *rterm) /* * We arbitrarily assume that about 10 recursive iterations will be - * needed, and that we've managed to get a good fix on the cost and - * output size of each one of them. These are mighty shaky assumptions - * but it's hard to see how to do better. + * needed, and that we've managed to get a good fix on the cost and output + * size of each one of them. These are mighty shaky assumptions but it's + * hard to see how to do better. */ total_cost += 10 * rterm->total_cost; total_rows += 10 * rterm->plan_rows; @@ -1406,8 +1406,8 @@ cost_nestloop(NestPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) double outer_path_rows = PATH_ROWS(outer_path); double inner_path_rows = nestloop_inner_path_rows(inner_path); double ntuples; - Selectivity outer_match_frac; - Selectivity match_count; + Selectivity outer_match_frac; + Selectivity match_count; bool indexed_join_quals; if (!enable_nestloop) @@ -1446,7 +1446,7 @@ cost_nestloop(NestPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) &indexed_join_quals)) { double outer_matched_rows; - Selectivity inner_scan_frac; + Selectivity inner_scan_frac; /* * SEMI or ANTI join: executor will stop after first match. @@ -1470,11 +1470,11 @@ cost_nestloop(NestPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) /* * For unmatched outer-rel rows, there are two cases. If the inner - * path is an indexscan using all the joinquals as indexquals, then - * an unmatched row results in an indexscan returning no rows, which - * is probably quite cheap. We estimate this case as the same cost - * to return the first tuple of a nonempty scan. Otherwise, the - * executor will have to scan the whole inner rel; not so cheap. + * path is an indexscan using all the joinquals as indexquals, then an + * unmatched row results in an indexscan returning no rows, which is + * probably quite cheap. We estimate this case as the same cost to + * return the first tuple of a nonempty scan. Otherwise, the executor + * will have to scan the whole inner rel; not so cheap. */ if (indexed_join_quals) { @@ -1569,7 +1569,7 @@ cost_mergejoin(MergePath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) qp_qual_cost.per_tuple -= merge_qual_cost.per_tuple; /* - * Get approx # tuples passing the mergequals. We use approx_tuple_count + * Get approx # tuples passing the mergequals. We use approx_tuple_count * here because we need an estimate done with JOIN_INNER semantics. */ mergejointuples = approx_tuple_count(root, &path->jpath, mergeclauses); @@ -1586,7 +1586,7 @@ cost_mergejoin(MergePath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) * estimated approximately as size of merge join output minus size of * inner relation. Assume that the distinct key values are 1, 2, ..., and * denote the number of values of each key in the outer relation as m1, - * m2, ...; in the inner relation, n1, n2, ... Then we have + * m2, ...; in the inner relation, n1, n2, ... Then we have * * size of join = m1 * n1 + m2 * n2 + ... * @@ -1620,11 +1620,11 @@ cost_mergejoin(MergePath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) * (unless it's an outer join, in which case the outer side has to be * scanned all the way anyway). Estimate fraction of the left and right * inputs that will actually need to be scanned. Likewise, we can - * estimate the number of rows that will be skipped before the first - * join pair is found, which should be factored into startup cost. - * We use only the first (most significant) merge clause for this purpose. - * Since mergejoinscansel() is a fairly expensive computation, we cache - * the results in the merge clause RestrictInfo. + * estimate the number of rows that will be skipped before the first join + * pair is found, which should be factored into startup cost. We use only + * the first (most significant) merge clause for this purpose. Since + * mergejoinscansel() is a fairly expensive computation, we cache the + * results in the merge clause RestrictInfo. */ if (mergeclauses && path->jpath.jointype != JOIN_FULL) { @@ -1795,8 +1795,8 @@ cost_mergejoin(MergePath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) * clauses that are to be applied at the join. (This is pessimistic since * not all of the quals may get evaluated at each tuple.) * - * Note: we could adjust for SEMI/ANTI joins skipping some qual evaluations - * here, but it's probably not worth the trouble. + * Note: we could adjust for SEMI/ANTI joins skipping some qual + * evaluations here, but it's probably not worth the trouble. */ startup_cost += qp_qual_cost.startup; cpu_per_tuple = cpu_tuple_cost + qp_qual_cost.per_tuple; @@ -1890,8 +1890,8 @@ cost_hashjoin(HashPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) int num_skew_mcvs; double virtualbuckets; Selectivity innerbucketsize; - Selectivity outer_match_frac; - Selectivity match_count; + Selectivity outer_match_frac; + Selectivity match_count; ListCell *hcl; if (!enable_hashjoin) @@ -1937,11 +1937,12 @@ cost_hashjoin(HashPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) */ ExecChooseHashTableSize(inner_path_rows, inner_path->parent->width, - true, /* useskew */ + true, /* useskew */ &numbuckets, &numbatches, &num_skew_mcvs); virtualbuckets = (double) numbuckets *(double) numbatches; + /* mark the path with estimated # of batches */ path->num_batches = numbatches; @@ -2038,7 +2039,7 @@ cost_hashjoin(HashPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) NULL)) { double outer_matched_rows; - Selectivity inner_scan_frac; + Selectivity inner_scan_frac; /* * SEMI or ANTI join: executor will stop after first match. @@ -2064,12 +2065,12 @@ cost_hashjoin(HashPath *path, PlannerInfo *root, SpecialJoinInfo *sjinfo) * preferentially hit heavily-populated buckets; instead assume they * are uncorrelated with the inner distribution and so they see an * average bucket size of inner_path_rows / virtualbuckets. In the - * second place, it seems likely that they will have few if any - * exact hash-code matches and so very few of the tuples in the - * bucket will actually require eval of the hash quals. We don't - * have any good way to estimate how many will, but for the moment - * assume that the effective cost per bucket entry is one-tenth what - * it is for matchable tuples. + * second place, it seems likely that they will have few if any exact + * hash-code matches and so very few of the tuples in the bucket will + * actually require eval of the hash quals. We don't have any good + * way to estimate how many will, but for the moment assume that the + * effective cost per bucket entry is one-tenth what it is for + * matchable tuples. */ run_cost += hash_qual_cost.per_tuple * (outer_path_rows - outer_matched_rows) * @@ -2151,18 +2152,17 @@ cost_subplan(PlannerInfo *root, SubPlan *subplan, Plan *plan) /* * The per-tuple costs include the cost of evaluating the lefthand * expressions, plus the cost of probing the hashtable. We already - * accounted for the lefthand expressions as part of the testexpr, - * and will also have counted one cpu_operator_cost for each - * comparison operator. That is probably too low for the probing - * cost, but it's hard to make a better estimate, so live with it for - * now. + * accounted for the lefthand expressions as part of the testexpr, and + * will also have counted one cpu_operator_cost for each comparison + * operator. That is probably too low for the probing cost, but it's + * hard to make a better estimate, so live with it for now. */ } else { /* * Otherwise we will be rescanning the subplan output on each - * evaluation. We need to estimate how much of the output we will + * evaluation. We need to estimate how much of the output we will * actually need to scan. NOTE: this logic should agree with the * tuple_fraction estimates used by make_subplan() in * plan/subselect.c. @@ -2315,9 +2315,9 @@ cost_qual_eval_walker(Node *node, cost_qual_eval_context *context) * Vars and Consts are charged zero, and so are boolean operators (AND, * OR, NOT). Simplistic, but a lot better than no model at all. * - * Note that Aggref and WindowFunc nodes are (and should be) treated - * like Vars --- whatever execution cost they have is absorbed into - * plan-node-specific costing. As far as expression evaluation is + * Note that Aggref and WindowFunc nodes are (and should be) treated like + * Vars --- whatever execution cost they have is absorbed into + * plan-node-specific costing. As far as expression evaluation is * concerned they're just like Vars. * * Should we try to account for the possibility of short-circuit @@ -2425,10 +2425,10 @@ cost_qual_eval_walker(Node *node, cost_qual_eval_context *context) else if (IsA(node, AlternativeSubPlan)) { /* - * Arbitrarily use the first alternative plan for costing. (We should + * Arbitrarily use the first alternative plan for costing. (We should * certainly only include one alternative, and we don't yet have - * enough information to know which one the executor is most likely - * to use.) + * enough information to know which one the executor is most likely to + * use.) */ AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; @@ -2495,8 +2495,8 @@ adjust_semi_join(PlannerInfo *root, JoinPath *path, SpecialJoinInfo *sjinfo, */ /* - * In an ANTI join, we must ignore clauses that are "pushed down", - * since those won't affect the match logic. In a SEMI join, we do not + * In an ANTI join, we must ignore clauses that are "pushed down", since + * those won't affect the match logic. In a SEMI join, we do not * distinguish joinquals from "pushed down" quals, so just use the whole * restrictinfo list. */ @@ -2550,15 +2550,15 @@ adjust_semi_join(PlannerInfo *root, JoinPath *path, SpecialJoinInfo *sjinfo, /* * jselec can be interpreted as the fraction of outer-rel rows that have - * any matches (this is true for both SEMI and ANTI cases). And nselec - * is the fraction of the Cartesian product that matches. So, the - * average number of matches for each outer-rel row that has at least - * one match is nselec * inner_rows / jselec. + * any matches (this is true for both SEMI and ANTI cases). And nselec is + * the fraction of the Cartesian product that matches. So, the average + * number of matches for each outer-rel row that has at least one match is + * nselec * inner_rows / jselec. * * Note: it is correct to use the inner rel's "rows" count here, not * PATH_ROWS(), even if the inner path under consideration is an inner - * indexscan. This is because we have included all the join clauses - * in the selectivity estimate, even ones used in an inner indexscan. + * indexscan. This is because we have included all the join clauses in + * the selectivity estimate, even ones used in an inner indexscan. */ if (jselec > 0) /* protect against zero divide */ { @@ -2573,10 +2573,9 @@ adjust_semi_join(PlannerInfo *root, JoinPath *path, SpecialJoinInfo *sjinfo, *match_count = avgmatch; /* - * If requested, check whether the inner path uses all the joinquals - * as indexquals. (If that's true, we can assume that an unmatched - * outer tuple is cheap to process, whereas otherwise it's probably - * expensive.) + * If requested, check whether the inner path uses all the joinquals as + * indexquals. (If that's true, we can assume that an unmatched outer + * tuple is cheap to process, whereas otherwise it's probably expensive.) */ if (indexed_join_quals) { @@ -2906,8 +2905,8 @@ set_cte_size_estimates(PlannerInfo *root, RelOptInfo *rel, Plan *cteplan) if (rte->self_reference) { /* - * In a self-reference, arbitrarily assume the average worktable - * size is about 10 times the nonrecursive term's size. + * In a self-reference, arbitrarily assume the average worktable size + * is about 10 times the nonrecursive term's size. */ rel->tuples = 10 * cteplan->plan_rows; } @@ -2959,7 +2958,8 @@ set_rel_width(PlannerInfo *root, RelOptInfo *rel) ndx = var->varattno - rel->min_attr; /* - * The width probably hasn't been cached yet, but may as well check + * The width probably hasn't been cached yet, but may as well + * check */ if (rel->attr_widths[ndx] > 0) { diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c index 17c95396797..17d24e400f8 100644 --- a/src/backend/optimizer/path/equivclass.c +++ b/src/backend/optimizer/path/equivclass.c @@ -10,7 +10,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/equivclass.c,v 1.18 2009/04/19 19:46:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/equivclass.c,v 1.19 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -438,9 +438,9 @@ get_eclass_for_sort_expr(PlannerInfo *root, /* * add_eq_member doesn't check for volatile functions, set-returning - * functions, aggregates, or window functions, but such could appear - * in sort expressions; so we have to check whether its const-marking - * was correct. + * functions, aggregates, or window functions, but such could appear in + * sort expressions; so we have to check whether its const-marking was + * correct. */ if (newec->ec_has_const) { @@ -563,11 +563,11 @@ generate_base_implied_equalities_const(PlannerInfo *root, ListCell *lc; /* - * In the trivial case where we just had one "var = const" clause, - * push the original clause back into the main planner machinery. There - * is nothing to be gained by doing it differently, and we save the - * effort to re-build and re-analyze an equality clause that will be - * exactly equivalent to the old one. + * In the trivial case where we just had one "var = const" clause, push + * the original clause back into the main planner machinery. There is + * nothing to be gained by doing it differently, and we save the effort to + * re-build and re-analyze an equality clause that will be exactly + * equivalent to the old one. */ if (list_length(ec->ec_members) == 2 && list_length(ec->ec_sources) == 1) @@ -1166,7 +1166,7 @@ create_join_clause(PlannerInfo *root, * * Outer join clauses that are marked outerjoin_delayed are special: this * condition means that one or both VARs might go to null due to a lower - * outer join. We can still push a constant through the clause, but only + * outer join. We can still push a constant through the clause, but only * if its operator is strict; and we *have to* throw the clause back into * regular joinclause processing. By keeping the strict join clause, * we ensure that any null-extended rows that are mistakenly generated due @@ -1816,11 +1816,11 @@ have_relevant_eclass_joinclause(PlannerInfo *root, * path to look through ec_sources. Checking the members anyway is OK * as a possibly-overoptimistic heuristic. * - * We don't test ec_has_const either, even though a const eclass - * won't generate real join clauses. This is because if we had - * "WHERE a.x = b.y and a.x = 42", it is worth considering a join - * between a and b, since the join result is likely to be small even - * though it'll end up being an unqualified nestloop. + * We don't test ec_has_const either, even though a const eclass won't + * generate real join clauses. This is because if we had "WHERE a.x = + * b.y and a.x = 42", it is worth considering a join between a and b, + * since the join result is likely to be small even though it'll end + * up being an unqualified nestloop. */ /* Needn't scan if it couldn't contain members from each rel */ @@ -1890,11 +1890,11 @@ has_relevant_eclass_joinclause(PlannerInfo *root, RelOptInfo *rel1) * path to look through ec_sources. Checking the members anyway is OK * as a possibly-overoptimistic heuristic. * - * We don't test ec_has_const either, even though a const eclass - * won't generate real join clauses. This is because if we had - * "WHERE a.x = b.y and a.x = 42", it is worth considering a join - * between a and b, since the join result is likely to be small even - * though it'll end up being an unqualified nestloop. + * We don't test ec_has_const either, even though a const eclass won't + * generate real join clauses. This is because if we had "WHERE a.x = + * b.y and a.x = 42", it is worth considering a join between a and b, + * since the join result is likely to be small even though it'll end + * up being an unqualified nestloop. */ /* Needn't scan if it couldn't contain members from each rel */ diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c index db271e4f1ee..b3f96eb773c 100644 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/indxpath.c,v 1.239 2009/04/16 20:42:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/indxpath.c,v 1.240 2009/06/11 14:48:58 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -179,14 +179,14 @@ create_index_paths(PlannerInfo *root, RelOptInfo *rel) true, NULL, SAOP_FORBID, ST_ANYSCAN); /* - * Submit all the ones that can form plain IndexScan plans to add_path. - * (A plain IndexPath always represents a plain IndexScan plan; however - * some of the indexes might support only bitmap scans, and those we - * mustn't submit to add_path here.) Also, pick out the ones that might - * be useful as bitmap scans. For that, we must discard indexes that - * don't support bitmap scans, and we also are only interested in paths - * that have some selectivity; we should discard anything that was - * generated solely for ordering purposes. + * Submit all the ones that can form plain IndexScan plans to add_path. (A + * plain IndexPath always represents a plain IndexScan plan; however some + * of the indexes might support only bitmap scans, and those we mustn't + * submit to add_path here.) Also, pick out the ones that might be useful + * as bitmap scans. For that, we must discard indexes that don't support + * bitmap scans, and we also are only interested in paths that have some + * selectivity; we should discard anything that was generated solely for + * ordering purposes. */ bitindexpaths = NIL; foreach(l, indexpaths) @@ -1628,13 +1628,13 @@ eclass_matches_any_index(EquivalenceClass *ec, EquivalenceMember *em, /* * If it's a btree index, we can reject it if its opfamily isn't - * compatible with the EC, since no clause generated from the - * EC could be used with the index. For non-btree indexes, - * we can't easily tell whether clauses generated from the EC - * could be used with the index, so only check for expression - * match. This might mean we return "true" for a useless index, - * but that will just cause some wasted planner cycles; it's - * better than ignoring useful indexes. + * compatible with the EC, since no clause generated from the EC + * could be used with the index. For non-btree indexes, we can't + * easily tell whether clauses generated from the EC could be used + * with the index, so only check for expression match. This might + * mean we return "true" for a useless index, but that will just + * cause some wasted planner cycles; it's better than ignoring + * useful indexes. */ if ((index->relam != BTREE_AM_OID || list_member_oid(ec->ec_opfamilies, curFamily)) && @@ -2223,9 +2223,9 @@ match_special_index_operator(Expr *clause, Oid opfamily, * want to apply. (A hash index, for example, will not support ">=".) * Currently, only btree supports the operators we need. * - * Note: actually, in the Pattern_Prefix_Exact case, we only need "=" - * so a hash index would work. Currently it doesn't seem worth checking - * for that, however. + * Note: actually, in the Pattern_Prefix_Exact case, we only need "=" so a + * hash index would work. Currently it doesn't seem worth checking for + * that, however. * * We insist on the opfamily being the specific one we expect, else we'd * do the wrong thing if someone were to make a reverse-sort opfamily with @@ -2460,7 +2460,7 @@ expand_indexqual_opclause(RestrictInfo *rinfo, Oid opfamily) /* * LIKE and regex operators are not members of any btree index opfamily, * but they can be members of opfamilies for more exotic index types such - * as GIN. Therefore, we should only do expansion if the operator is + * as GIN. Therefore, we should only do expansion if the operator is * actually not in the opfamily. But checking that requires a syscache * lookup, so it's best to first see if the operator is one we are * interested in. diff --git a/src/backend/optimizer/path/joinpath.c b/src/backend/optimizer/path/joinpath.c index e172c43c3c9..bc0831933e3 100644 --- a/src/backend/optimizer/path/joinpath.c +++ b/src/backend/optimizer/path/joinpath.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/joinpath.c,v 1.121 2009/02/05 01:24:55 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/joinpath.c,v 1.122 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1022,14 +1022,14 @@ select_mergejoin_clauses(PlannerInfo *root, * Note: it would be bad if this condition failed for an otherwise * mergejoinable FULL JOIN clause, since that would result in * undesirable planner failure. I believe that is not possible - * however; a variable involved in a full join could only appear - * in below_outer_join eclasses, which aren't considered redundant. + * however; a variable involved in a full join could only appear in + * below_outer_join eclasses, which aren't considered redundant. * - * This case *can* happen for left/right join clauses: the - * outer-side variable could be equated to a constant. Because we - * will propagate that constant across the join clause, the loss of - * ability to do a mergejoin is not really all that big a deal, and - * so it's not clear that improving this is important. + * This case *can* happen for left/right join clauses: the outer-side + * variable could be equated to a constant. Because we will propagate + * that constant across the join clause, the loss of ability to do a + * mergejoin is not really all that big a deal, and so it's not clear + * that improving this is important. */ cache_mergeclause_eclasses(root, restrictinfo); diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c index 7c38607db66..9e6f57f4c9e 100644 --- a/src/backend/optimizer/path/joinrels.c +++ b/src/backend/optimizer/path/joinrels.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/joinrels.c,v 1.99 2009/02/27 22:41:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/joinrels.c,v 1.100 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -353,7 +353,7 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, ListCell *l; /* - * Ensure output params are set on failure return. This is just to + * Ensure output params are set on failure return. This is just to * suppress uninitialized-variable warnings from overly anal compilers. */ *sjinfo_p = NULL; @@ -361,7 +361,7 @@ join_is_legal(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2, /* * If we have any special joins, the proposed join might be illegal; and - * in any case we have to determine its join type. Scan the join info + * in any case we have to determine its join type. Scan the join info * list for conflicts. */ match_sjinfo = NULL; @@ -569,7 +569,7 @@ make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2) /* * If it's a plain inner join, then we won't have found anything in - * join_info_list. Make up a SpecialJoinInfo so that selectivity + * join_info_list. Make up a SpecialJoinInfo so that selectivity * estimation functions will know what's being joined. */ if (sjinfo == NULL) @@ -595,8 +595,8 @@ make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2) &restrictlist); /* - * If we've already proven this join is empty, we needn't consider - * any more paths for it. + * If we've already proven this join is empty, we needn't consider any + * more paths for it. */ if (is_dummy_rel(joinrel)) { @@ -605,19 +605,19 @@ make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2) } /* - * Consider paths using each rel as both outer and inner. Depending - * on the join type, a provably empty outer or inner rel might mean - * the join is provably empty too; in which case throw away any - * previously computed paths and mark the join as dummy. (We do it - * this way since it's conceivable that dummy-ness of a multi-element - * join might only be noticeable for certain construction paths.) + * Consider paths using each rel as both outer and inner. Depending on + * the join type, a provably empty outer or inner rel might mean the join + * is provably empty too; in which case throw away any previously computed + * paths and mark the join as dummy. (We do it this way since it's + * conceivable that dummy-ness of a multi-element join might only be + * noticeable for certain construction paths.) * * Also, a provably constant-false join restriction typically means that - * we can skip evaluating one or both sides of the join. We do this - * by marking the appropriate rel as dummy. + * we can skip evaluating one or both sides of the join. We do this by + * marking the appropriate rel as dummy. * - * We need only consider the jointypes that appear in join_info_list, - * plus JOIN_INNER. + * We need only consider the jointypes that appear in join_info_list, plus + * JOIN_INNER. */ switch (sjinfo->jointype) { @@ -665,6 +665,7 @@ make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2) restrictlist); break; case JOIN_SEMI: + /* * We might have a normal semijoin, or a case where we don't have * enough rels to do the semijoin but can unique-ify the RHS and @@ -971,12 +972,12 @@ restriction_is_constant_false(List *restrictlist) */ foreach(lc, restrictlist) { - RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); + RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc); Assert(IsA(rinfo, RestrictInfo)); if (rinfo->clause && IsA(rinfo->clause, Const)) { - Const *con = (Const *) rinfo->clause; + Const *con = (Const *) rinfo->clause; /* constant NULL is as good as constant FALSE for our purposes */ if (con->constisnull) diff --git a/src/backend/optimizer/path/orindxpath.c b/src/backend/optimizer/path/orindxpath.c index c84591fe0ce..6a644f9a0fa 100644 --- a/src/backend/optimizer/path/orindxpath.c +++ b/src/backend/optimizer/path/orindxpath.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/orindxpath.c,v 1.89 2009/04/16 20:42:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/orindxpath.c,v 1.90 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -96,10 +96,10 @@ create_or_index_quals(PlannerInfo *root, RelOptInfo *rel) * enforced at the relation scan level. * * We must also ignore clauses that are marked !is_pushed_down (ie they - * are themselves outer-join clauses). It would be safe to extract an + * are themselves outer-join clauses). It would be safe to extract an * index condition from such a clause if we are within the nullable rather * than the non-nullable side of its join, but we haven't got enough - * context here to tell which applies. OR clauses in outer-join quals + * context here to tell which applies. OR clauses in outer-join quals * aren't exactly common, so we'll let that case go unoptimized for now. */ foreach(i, rel->joininfo) diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 2aabd880aaf..ab07a0dbeae 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.259 2009/05/09 22:51:41 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/createplan.c,v 1.260 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -63,9 +63,9 @@ static FunctionScan *create_functionscan_plan(PlannerInfo *root, Path *best_path static ValuesScan *create_valuesscan_plan(PlannerInfo *root, Path *best_path, List *tlist, List *scan_clauses); static CteScan *create_ctescan_plan(PlannerInfo *root, Path *best_path, - List *tlist, List *scan_clauses); + List *tlist, List *scan_clauses); static WorkTableScan *create_worktablescan_plan(PlannerInfo *root, Path *best_path, - List *tlist, List *scan_clauses); + List *tlist, List *scan_clauses); static NestLoop *create_nestloop_plan(PlannerInfo *root, NestPath *best_path, Plan *outer_plan, Plan *inner_plan); static MergeJoin *create_mergejoin_plan(PlannerInfo *root, MergePath *best_path, @@ -98,9 +98,9 @@ static FunctionScan *make_functionscan(List *qptlist, List *qpqual, static ValuesScan *make_valuesscan(List *qptlist, List *qpqual, Index scanrelid, List *values_lists); static CteScan *make_ctescan(List *qptlist, List *qpqual, - Index scanrelid, int ctePlanId, int cteParam); + Index scanrelid, int ctePlanId, int cteParam); static WorkTableScan *make_worktablescan(List *qptlist, List *qpqual, - Index scanrelid, int wtParam); + Index scanrelid, int wtParam); static BitmapAnd *make_bitmap_and(List *bitmapplans); static BitmapOr *make_bitmap_or(List *bitmapplans); static NestLoop *make_nestloop(List *tlist, @@ -113,10 +113,10 @@ static HashJoin *make_hashjoin(List *tlist, Plan *lefttree, Plan *righttree, JoinType jointype); static Hash *make_hash(Plan *lefttree, - Oid skewTable, - AttrNumber skewColumn, - Oid skewColType, - int32 skewColTypmod); + Oid skewTable, + AttrNumber skewColumn, + Oid skewColType, + int32 skewColTypmod); static MergeJoin *make_mergejoin(List *tlist, List *joinclauses, List *otherclauses, List *mergeclauses, @@ -329,7 +329,7 @@ build_relation_tlist(RelOptInfo *rel) foreach(v, rel->reltargetlist) { /* Do we really need to copy here? Not sure */ - Node *node = (Node *) copyObject(lfirst(v)); + Node *node = (Node *) copyObject(lfirst(v)); tlist = lappend(tlist, makeTargetEntry((Expr *) node, resno, @@ -657,20 +657,20 @@ create_unique_plan(PlannerInfo *root, UniquePath *best_path) return subplan; /* - * As constructed, the subplan has a "flat" tlist containing just the - * Vars needed here and at upper levels. The values we are supposed - * to unique-ify may be expressions in these variables. We have to - * add any such expressions to the subplan's tlist. + * As constructed, the subplan has a "flat" tlist containing just the Vars + * needed here and at upper levels. The values we are supposed to + * unique-ify may be expressions in these variables. We have to add any + * such expressions to the subplan's tlist. * - * The subplan may have a "physical" tlist if it is a simple scan plan. - * If we're going to sort, this should be reduced to the regular tlist, - * so that we don't sort more data than we need to. For hashing, the - * tlist should be left as-is if we don't need to add any expressions; - * but if we do have to add expressions, then a projection step will be - * needed at runtime anyway, so we may as well remove unneeded items. - * Therefore newtlist starts from build_relation_tlist() not just a - * copy of the subplan's tlist; and we don't install it into the subplan - * unless we are sorting or stuff has to be added. + * The subplan may have a "physical" tlist if it is a simple scan plan. If + * we're going to sort, this should be reduced to the regular tlist, so + * that we don't sort more data than we need to. For hashing, the tlist + * should be left as-is if we don't need to add any expressions; but if we + * do have to add expressions, then a projection step will be needed at + * runtime anyway, so we may as well remove unneeded items. Therefore + * newtlist starts from build_relation_tlist() not just a copy of the + * subplan's tlist; and we don't install it into the subplan unless we are + * sorting or stuff has to be added. */ in_operators = best_path->in_operators; uniq_exprs = best_path->uniq_exprs; @@ -1063,10 +1063,10 @@ create_bitmap_scan_plan(PlannerInfo *root, qpqual = order_qual_clauses(root, qpqual); /* - * When dealing with special operators, we will at this point - * have duplicate clauses in qpqual and bitmapqualorig. We may as well - * drop 'em from bitmapqualorig, since there's no point in making the - * tests twice. + * When dealing with special operators, we will at this point have + * duplicate clauses in qpqual and bitmapqualorig. We may as well drop + * 'em from bitmapqualorig, since there's no point in making the tests + * twice. */ bitmapqualorig = list_difference_ptr(bitmapqualorig, qpqual); @@ -1414,10 +1414,10 @@ static CteScan * create_ctescan_plan(PlannerInfo *root, Path *best_path, List *tlist, List *scan_clauses) { - CteScan *scan_plan; + CteScan *scan_plan; Index scan_relid = best_path->parent->relid; RangeTblEntry *rte; - SubPlan *ctesplan = NULL; + SubPlan *ctesplan = NULL; int plan_id; int cte_param_id; PlannerInfo *cteroot; @@ -1441,6 +1441,7 @@ create_ctescan_plan(PlannerInfo *root, Path *best_path, if (!cteroot) /* shouldn't happen */ elog(ERROR, "bad levelsup for CTE \"%s\"", rte->ctename); } + /* * Note: cte_plan_ids can be shorter than cteList, if we are still working * on planning the CTEs (ie, this is a side-reference from another CTE). @@ -1471,8 +1472,8 @@ create_ctescan_plan(PlannerInfo *root, Path *best_path, elog(ERROR, "could not find plan for CTE \"%s\"", rte->ctename); /* - * We need the CTE param ID, which is the sole member of the - * SubPlan's setParam list. + * We need the CTE param ID, which is the sole member of the SubPlan's + * setParam list. */ cte_param_id = linitial_int(ctesplan->setParam); @@ -1512,12 +1513,12 @@ create_worktablescan_plan(PlannerInfo *root, Path *best_path, /* * We need to find the worktable param ID, which is in the plan level - * that's processing the recursive UNION, which is one level *below* - * where the CTE comes from. + * that's processing the recursive UNION, which is one level *below* where + * the CTE comes from. */ levelsup = rte->ctelevelsup; if (levelsup == 0) /* shouldn't happen */ - elog(ERROR, "bad levelsup for CTE \"%s\"", rte->ctename); + elog(ERROR, "bad levelsup for CTE \"%s\"", rte->ctename); levelsup--; cteroot = root; while (levelsup-- > 0) @@ -1526,7 +1527,7 @@ create_worktablescan_plan(PlannerInfo *root, Path *best_path, if (!cteroot) /* shouldn't happen */ elog(ERROR, "bad levelsup for CTE \"%s\"", rte->ctename); } - if (cteroot->wt_param_id < 0) /* shouldn't happen */ + if (cteroot->wt_param_id < 0) /* shouldn't happen */ elog(ERROR, "could not find param ID for CTE \"%s\"", rte->ctename); /* Sort clauses into best execution order */ @@ -1563,10 +1564,9 @@ create_nestloop_plan(PlannerInfo *root, NestLoop *join_plan; /* - * If the inner path is a nestloop inner indexscan, it might be using - * some of the join quals as index quals, in which case we don't have - * to check them again at the join node. Remove any join quals that - * are redundant. + * If the inner path is a nestloop inner indexscan, it might be using some + * of the join quals as index quals, in which case we don't have to check + * them again at the join node. Remove any join quals that are redundant. */ joinrestrictclauses = select_nonredundant_join_clauses(root, @@ -1869,12 +1869,12 @@ create_hashjoin_plan(PlannerInfo *root, disuse_physical_tlist(outer_plan, best_path->jpath.outerjoinpath); /* - * If there is a single join clause and we can identify the outer - * variable as a simple column reference, supply its identity for - * possible use in skew optimization. (Note: in principle we could - * do skew optimization with multiple join clauses, but we'd have to - * be able to determine the most common combinations of outer values, - * which we don't currently have enough stats for.) + * If there is a single join clause and we can identify the outer variable + * as a simple column reference, supply its identity for possible use in + * skew optimization. (Note: in principle we could do skew optimization + * with multiple join clauses, but we'd have to be able to determine the + * most common combinations of outer values, which we don't currently have + * enough stats for.) */ if (list_length(hashclauses) == 1) { @@ -1887,7 +1887,7 @@ create_hashjoin_plan(PlannerInfo *root, node = (Node *) ((RelabelType *) node)->arg; if (IsA(node, Var)) { - Var *var = (Var *) node; + Var *var = (Var *) node; RangeTblEntry *rte; rte = root->simple_rte_array[var->varno]; @@ -2029,8 +2029,8 @@ fix_indexqual_references(List *indexquals, IndexPath *index_path) /* Never need to commute... */ /* - * Determine which index attribute this is and change the - * indexkey operand as needed. + * Determine which index attribute this is and change the indexkey + * operand as needed. */ linitial(saop->args) = fix_indexqual_operand(linitial(saop->args), index); @@ -2506,7 +2506,7 @@ make_ctescan(List *qptlist, int ctePlanId, int cteParam) { - CteScan *node = makeNode(CteScan); + CteScan *node = makeNode(CteScan); Plan *plan = &node->scan.plan; /* cost should be inserted by caller */ @@ -3282,7 +3282,7 @@ make_windowagg(PlannerInfo *root, List *tlist, { WindowAgg *node = makeNode(WindowAgg); Plan *plan = &node->plan; - Path windowagg_path; /* dummy for result of cost_windowagg */ + Path windowagg_path; /* dummy for result of cost_windowagg */ QualCost qual_cost; node->winref = winref; @@ -3294,7 +3294,7 @@ make_windowagg(PlannerInfo *root, List *tlist, node->ordOperators = ordOperators; node->frameOptions = frameOptions; - copy_plan_costsize(plan, lefttree); /* only care about copying size */ + copy_plan_costsize(plan, lefttree); /* only care about copying size */ cost_windowagg(&windowagg_path, root, numWindowFuncs, partNumCols, ordNumCols, lefttree->startup_cost, diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c index 56100ba6cc8..8a189d4443d 100644 --- a/src/backend/optimizer/plan/initsplan.c +++ b/src/backend/optimizer/plan/initsplan.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/initsplan.c,v 1.153 2009/05/07 20:13:09 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/initsplan.c,v 1.154 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -332,7 +332,7 @@ deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, */ foreach(l, (List *) f->quals) { - Node *qual = (Node *) lfirst(l); + Node *qual = (Node *) lfirst(l); distribute_qual_to_rels(root, qual, false, below_outer_join, JOIN_INNER, @@ -430,8 +430,8 @@ deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, * we mustn't add it to join_info_list just yet, because we don't want * distribute_qual_to_rels to think it is an outer join below us. * - * Semijoins are a bit of a hybrid: we build a SpecialJoinInfo, - * but we want ojscope = NULL for distribute_qual_to_rels. + * Semijoins are a bit of a hybrid: we build a SpecialJoinInfo, but we + * want ojscope = NULL for distribute_qual_to_rels. */ if (j->jointype != JOIN_INNER) { @@ -455,7 +455,7 @@ deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, /* Process the qual clauses */ foreach(l, (List *) j->quals) { - Node *qual = (Node *) lfirst(l); + Node *qual = (Node *) lfirst(l); distribute_qual_to_rels(root, qual, false, below_outer_join, j->jointype, @@ -629,9 +629,9 @@ make_outerjoininfo(PlannerInfo *root, * min_lefthand. (We must use its full syntactic relset, not just its * min_lefthand + min_righthand. This is because there might be other * OJs below this one that this one can commute with, but we cannot - * commute with them if we don't with this one.) Also, if the - * current join is an antijoin, we must preserve ordering regardless - * of strictness. + * commute with them if we don't with this one.) Also, if the current + * join is an antijoin, we must preserve ordering regardless of + * strictness. * * Note: I believe we have to insist on being strict for at least one * rel in the lower OJ's min_righthand, not its whole syn_righthand. @@ -882,7 +882,7 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, * We can't use such a clause to deduce equivalence (the left and * right sides might be unequal above the join because one of them has * gone to NULL) ... but we might be able to use it for more limited - * deductions, if it is mergejoinable. So consider adding it to the + * deductions, if it is mergejoinable. So consider adding it to the * lists of set-aside outer-join clauses. */ is_pushed_down = false; @@ -937,8 +937,8 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, /* * It's possible that this is an IS NULL clause that's redundant * with a lower antijoin; if so we can just discard it. We need - * not test in any of the other cases, because this will only - * be possible for pushed-down, delayed clauses. + * not test in any of the other cases, because this will only be + * possible for pushed-down, delayed clauses. */ if (check_redundant_nullability_qual(root, clause)) return; @@ -1122,8 +1122,8 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, */ static bool check_outerjoin_delay(PlannerInfo *root, - Relids *relids_p, /* in/out parameter */ - Relids *nullable_relids_p, /* output parameter */ + Relids *relids_p, /* in/out parameter */ + Relids *nullable_relids_p, /* output parameter */ bool is_pushed_down) { Relids relids; @@ -1215,8 +1215,8 @@ check_redundant_nullability_qual(PlannerInfo *root, Node *clause) forced_null_rel = forced_null_var->varno; /* - * If the Var comes from the nullable side of a lower antijoin, the - * IS NULL condition is necessarily true. + * If the Var comes from the nullable side of a lower antijoin, the IS + * NULL condition is necessarily true. */ foreach(lc, root->join_info_list) { @@ -1393,7 +1393,7 @@ build_implied_join_equality(Oid opno, true, /* is_pushed_down */ false, /* outerjoin_delayed */ false, /* pseudoconstant */ - qualscope, /* required_relids */ + qualscope, /* required_relids */ NULL); /* nullable_relids */ /* Set mergejoinability info always, and hashjoinability if enabled */ diff --git a/src/backend/optimizer/plan/planagg.c b/src/backend/optimizer/plan/planagg.c index 0cdcb74dfea..6bdbd2a913d 100644 --- a/src/backend/optimizer/plan/planagg.c +++ b/src/backend/optimizer/plan/planagg.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planagg.c,v 1.45 2009/01/01 17:23:44 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planagg.c,v 1.46 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -96,8 +96,8 @@ optimize_minmax_aggregates(PlannerInfo *root, List *tlist, Path *best_path) * Reject unoptimizable cases. * * We don't handle GROUP BY or windowing, because our current - * implementations of grouping require looking at all the rows anyway, - * and so there's not much point in optimizing MIN/MAX. + * implementations of grouping require looking at all the rows anyway, and + * so there's not much point in optimizing MIN/MAX. */ if (parse->groupClause || parse->hasWindowFuncs) return NULL; @@ -189,12 +189,12 @@ optimize_minmax_aggregates(PlannerInfo *root, List *tlist, Path *best_path) &aggs_list); /* - * We have to replace Aggrefs with Params in equivalence classes too, - * else ORDER BY or DISTINCT on an optimized aggregate will fail. + * We have to replace Aggrefs with Params in equivalence classes too, else + * ORDER BY or DISTINCT on an optimized aggregate will fail. * - * Note: at some point it might become necessary to mutate other - * data structures too, such as the query's sortClause or distinctClause. - * Right now, those won't be examined after this point. + * Note: at some point it might become necessary to mutate other data + * structures too, such as the query's sortClause or distinctClause. Right + * now, those won't be examined after this point. */ mutate_eclass_expressions(root, replace_aggs_with_params_mutator, diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c index c87da7a0718..0b75d150ab9 100644 --- a/src/backend/optimizer/plan/planmain.c +++ b/src/backend/optimizer/plan/planmain.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planmain.c,v 1.114 2009/01/01 17:23:44 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planmain.c,v 1.115 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -289,13 +289,13 @@ query_planner(PlannerInfo *root, List *tlist, /* * If both GROUP BY and ORDER BY are specified, we will need two * levels of sort --- and, therefore, certainly need to read all the - * tuples --- unless ORDER BY is a subset of GROUP BY. Likewise if - * we have both DISTINCT and GROUP BY, or if we have a window + * tuples --- unless ORDER BY is a subset of GROUP BY. Likewise if we + * have both DISTINCT and GROUP BY, or if we have a window * specification not compatible with the GROUP BY. */ if (!pathkeys_contained_in(root->sort_pathkeys, root->group_pathkeys) || !pathkeys_contained_in(root->distinct_pathkeys, root->group_pathkeys) || - !pathkeys_contained_in(root->window_pathkeys, root->group_pathkeys)) + !pathkeys_contained_in(root->window_pathkeys, root->group_pathkeys)) tuple_fraction = 0.0; } else if (parse->hasAggs || root->hasHavingQual) diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 7ad15d9da27..3f344b3a145 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.255 2009/04/28 21:31:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/planner.c,v 1.256 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -43,7 +43,7 @@ /* GUC parameter */ -double cursor_tuple_fraction = DEFAULT_CURSOR_TUPLE_FRACTION; +double cursor_tuple_fraction = DEFAULT_CURSOR_TUPLE_FRACTION; /* Hook for plugins to get control in planner() */ planner_hook_type planner_hook = NULL; @@ -84,18 +84,18 @@ static void locate_grouping_columns(PlannerInfo *root, static List *postprocess_setop_tlist(List *new_tlist, List *orig_tlist); static List *select_active_windows(PlannerInfo *root, WindowFuncLists *wflists); static List *add_volatile_sort_exprs(List *window_tlist, List *tlist, - List *activeWindows); + List *activeWindows); static List *make_pathkeys_for_window(PlannerInfo *root, WindowClause *wc, - List *tlist, bool canonicalize); + List *tlist, bool canonicalize); static void get_column_info_for_window(PlannerInfo *root, WindowClause *wc, - List *tlist, - int numSortCols, AttrNumber *sortColIdx, - int *partNumCols, - AttrNumber **partColIdx, - Oid **partOperators, - int *ordNumCols, - AttrNumber **ordColIdx, - Oid **ordOperators); + List *tlist, + int numSortCols, AttrNumber *sortColIdx, + int *partNumCols, + AttrNumber **partColIdx, + Oid **partOperators, + int *ordNumCols, + AttrNumber **ordColIdx, + Oid **ordOperators); /***************************************************************************** @@ -171,10 +171,9 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) tuple_fraction = cursor_tuple_fraction; /* - * We document cursor_tuple_fraction as simply being a fraction, - * which means the edge cases 0 and 1 have to be treated specially - * here. We convert 1 to 0 ("all the tuples") and 0 to a very small - * fraction. + * We document cursor_tuple_fraction as simply being a fraction, which + * means the edge cases 0 and 1 have to be treated specially here. We + * convert 1 to 0 ("all the tuples") and 0 to a very small fraction. */ if (tuple_fraction >= 1.0) tuple_fraction = 0.0; @@ -297,8 +296,8 @@ subquery_planner(PlannerGlobal *glob, Query *parse, root->non_recursive_plan = NULL; /* - * If there is a WITH list, process each WITH query and build an - * initplan SubPlan structure for it. + * If there is a WITH list, process each WITH query and build an initplan + * SubPlan structure for it. */ if (parse->cteList) SS_process_ctes(root); @@ -313,8 +312,8 @@ subquery_planner(PlannerGlobal *glob, Query *parse, pull_up_sublinks(root); /* - * Scan the rangetable for set-returning functions, and inline them - * if possible (producing subqueries that might get pulled up next). + * Scan the rangetable for set-returning functions, and inline them if + * possible (producing subqueries that might get pulled up next). * Recursion issues here are handled in the same way as for SubLinks. */ inline_set_returning_functions(root); @@ -329,8 +328,8 @@ subquery_planner(PlannerGlobal *glob, Query *parse, /* * Detect whether any rangetable entries are RTE_JOIN kind; if not, we can * avoid the expense of doing flatten_join_alias_vars(). Also check for - * outer joins --- if none, we can skip reduce_outer_joins(). - * This must be done after we have done pull_up_subqueries, of course. + * outer joins --- if none, we can skip reduce_outer_joins(). This must be + * done after we have done pull_up_subqueries, of course. */ root->hasJoinRTEs = false; hasOuterJoins = false; @@ -528,7 +527,7 @@ preprocess_expression(PlannerInfo *root, Node *expr, int kind) * Simplify constant expressions. * * Note: one essential effect here is to insert the current actual values - * of any default arguments for functions. To ensure that happens, we + * of any default arguments for functions. To ensure that happens, we * *must* process all expressions here. Previous PG versions sometimes * skipped const-simplification if it didn't seem worth the trouble, but * we can't do that anymore. @@ -797,8 +796,8 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) /* * If there's a top-level ORDER BY, assume we have to fetch all the * tuples. This might be too simplistic given all the hackery below - * to possibly avoid the sort; but the odds of accurate estimates - * here are pretty low anyway. + * to possibly avoid the sort; but the odds of accurate estimates here + * are pretty low anyway. */ if (parse->sortClause) tuple_fraction = 0.0; @@ -908,9 +907,9 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) /* * Calculate pathkeys that represent grouping/ordering requirements. * Stash them in PlannerInfo so that query_planner can canonicalize - * them after EquivalenceClasses have been formed. The sortClause - * is certainly sort-able, but GROUP BY and DISTINCT might not be, - * in which case we just leave their pathkeys empty. + * them after EquivalenceClasses have been formed. The sortClause is + * certainly sort-able, but GROUP BY and DISTINCT might not be, in + * which case we just leave their pathkeys empty. */ if (parse->groupClause && grouping_is_sortable(parse->groupClause)) @@ -982,7 +981,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) * Note: if we have both ORDER BY and GROUP BY, and ORDER BY is a * superset of GROUP BY, it would be tempting to request sort by ORDER * BY --- but that might just leave us failing to exploit an available - * sort order at all. Needs more thought. The choice for DISTINCT + * sort order at all. Needs more thought. The choice for DISTINCT * versus ORDER BY is much easier, since we know that the parser * ensured that one is a superset of the other. */ @@ -1012,12 +1011,12 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) */ if (parse->groupClause) { - bool can_hash; - bool can_sort; + bool can_hash; + bool can_sort; /* * Executor doesn't support hashed aggregation with DISTINCT - * aggregates. (Doing so would imply storing *all* the input + * aggregates. (Doing so would imply storing *all* the input * values in the hash table, which seems like a certain loser.) */ can_hash = (agg_counts.numDistinctAggs == 0 && @@ -1079,16 +1078,17 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) * Normal case --- create a plan according to query_planner's * results. */ - bool need_sort_for_grouping = false; + bool need_sort_for_grouping = false; result_plan = create_plan(root, best_path); current_pathkeys = best_path->pathkeys; /* Detect if we'll need an explicit sort for grouping */ if (parse->groupClause && !use_hashed_grouping && - !pathkeys_contained_in(root->group_pathkeys, current_pathkeys)) + !pathkeys_contained_in(root->group_pathkeys, current_pathkeys)) { need_sort_for_grouping = true; + /* * Always override query_planner's tlist, so that we don't * sort useless data from a "physical" tlist. @@ -1275,9 +1275,9 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) } /* end of non-minmax-aggregate case */ /* - * Since each window function could require a different sort order, - * we stack up a WindowAgg node for each window, with sort steps - * between them as needed. + * Since each window function could require a different sort order, we + * stack up a WindowAgg node for each window, with sort steps between + * them as needed. */ if (activeWindows) { @@ -1286,12 +1286,12 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) /* * If the top-level plan node is one that cannot do expression - * evaluation, we must insert a Result node to project the - * desired tlist. (In some cases this might not really be - * required, but it's not worth trying to avoid it.) Note that - * on second and subsequent passes through the following loop, - * the top-level node will be a WindowAgg which we know can - * project; so we only need to check once. + * evaluation, we must insert a Result node to project the desired + * tlist. (In some cases this might not really be required, but + * it's not worth trying to avoid it.) Note that on second and + * subsequent passes through the following loop, the top-level + * node will be a WindowAgg which we know can project; so we only + * need to check once. */ if (!is_projection_capable_plan(result_plan)) { @@ -1302,21 +1302,20 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) } /* - * The "base" targetlist for all steps of the windowing process - * is a flat tlist of all Vars and Aggs needed in the result. - * (In some cases we wouldn't need to propagate all of these - * all the way to the top, since they might only be needed as - * inputs to WindowFuncs. It's probably not worth trying to - * optimize that though.) We also need any volatile sort - * expressions, because make_sort_from_pathkeys won't add those - * on its own, and anyway we want them evaluated only once at - * the bottom of the stack. As we climb up the stack, we add - * outputs for the WindowFuncs computed at each level. Also, - * each input tlist has to present all the columns needed to - * sort the data for the next WindowAgg step. That's handled - * internally by make_sort_from_pathkeys, but we need the - * copyObject steps here to ensure that each plan node has - * a separately modifiable tlist. + * The "base" targetlist for all steps of the windowing process is + * a flat tlist of all Vars and Aggs needed in the result. (In + * some cases we wouldn't need to propagate all of these all the + * way to the top, since they might only be needed as inputs to + * WindowFuncs. It's probably not worth trying to optimize that + * though.) We also need any volatile sort expressions, because + * make_sort_from_pathkeys won't add those on its own, and anyway + * we want them evaluated only once at the bottom of the stack. + * As we climb up the stack, we add outputs for the WindowFuncs + * computed at each level. Also, each input tlist has to present + * all the columns needed to sort the data for the next WindowAgg + * step. That's handled internally by make_sort_from_pathkeys, + * but we need the copyObject steps here to ensure that each plan + * node has a separately modifiable tlist. */ window_tlist = flatten_tlist(tlist); if (parse->hasAggs) @@ -1392,7 +1391,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) { /* Add the current WindowFuncs to the running tlist */ window_tlist = add_to_flat_tlist(window_tlist, - wflists->windowFuncs[wc->winref]); + wflists->windowFuncs[wc->winref]); } else { @@ -1404,7 +1403,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) result_plan = (Plan *) make_windowagg(root, (List *) copyObject(window_tlist), - list_length(wflists->windowFuncs[wc->winref]), + list_length(wflists->windowFuncs[wc->winref]), wc->winref, partNumCols, partColIdx, @@ -1423,11 +1422,11 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) */ if (parse->distinctClause) { - double dNumDistinctRows; - long numDistinctRows; - bool use_hashed_distinct; - bool can_sort; - bool can_hash; + double dNumDistinctRows; + long numDistinctRows; + bool use_hashed_distinct; + bool can_sort; + bool can_hash; /* * If there was grouping or aggregation, use the current number of @@ -1472,7 +1471,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("could not implement DISTINCT"), errdetail("Some of the datatypes only support hashing, while others only support sorting."))); - use_hashed_distinct = false; /* keep compiler quiet */ + use_hashed_distinct = false; /* keep compiler quiet */ } } @@ -1483,10 +1482,10 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) result_plan->targetlist, NIL, AGG_HASHED, - list_length(parse->distinctClause), - extract_grouping_cols(parse->distinctClause, - result_plan->targetlist), - extract_grouping_ops(parse->distinctClause), + list_length(parse->distinctClause), + extract_grouping_cols(parse->distinctClause, + result_plan->targetlist), + extract_grouping_ops(parse->distinctClause), numDistinctRows, 0, result_plan); @@ -1502,11 +1501,11 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) * rigorous of DISTINCT and ORDER BY, to avoid a second sort * below. However, for regular DISTINCT, don't sort now if we * don't have to --- sorting afterwards will likely be cheaper, - * and also has the possibility of optimizing via LIMIT. But - * for DISTINCT ON, we *must* force the final sort now, else - * it won't have the desired behavior. + * and also has the possibility of optimizing via LIMIT. But for + * DISTINCT ON, we *must* force the final sort now, else it won't + * have the desired behavior. */ - List *needed_pathkeys; + List *needed_pathkeys; if (parse->hasDistinctOn && list_length(root->distinct_pathkeys) < @@ -1530,7 +1529,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) result_plan = (Plan *) make_sort_from_pathkeys(root, result_plan, - current_pathkeys, + current_pathkeys, -1.0); } @@ -1551,7 +1550,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) { result_plan = (Plan *) make_sort_from_pathkeys(root, result_plan, - root->sort_pathkeys, + root->sort_pathkeys, limit_tuples); current_pathkeys = root->sort_pathkeys; } @@ -1883,12 +1882,12 @@ preprocess_groupclause(PlannerInfo *root) return; /* - * Add any remaining GROUP BY items to the new list, but only if we - * were able to make a complete match. In other words, we only - * rearrange the GROUP BY list if the result is that one list is a - * prefix of the other --- otherwise there's no possibility of a - * common sort. Also, give up if there are any non-sortable GROUP BY - * items, since then there's no hope anyway. + * Add any remaining GROUP BY items to the new list, but only if we were + * able to make a complete match. In other words, we only rearrange the + * GROUP BY list if the result is that one list is a prefix of the other + * --- otherwise there's no possibility of a common sort. Also, give up + * if there are any non-sortable GROUP BY items, since then there's no + * hope anyway. */ foreach(gl, parse->groupClause) { @@ -1962,11 +1961,10 @@ choose_hashed_grouping(PlannerInfo *root, /* * When we have both GROUP BY and DISTINCT, use the more-rigorous of - * DISTINCT and ORDER BY as the assumed required output sort order. - * This is an oversimplification because the DISTINCT might get - * implemented via hashing, but it's not clear that the case is common - * enough (or that our estimates are good enough) to justify trying to - * solve it exactly. + * DISTINCT and ORDER BY as the assumed required output sort order. This + * is an oversimplification because the DISTINCT might get implemented via + * hashing, but it's not clear that the case is common enough (or that our + * estimates are good enough) to justify trying to solve it exactly. */ if (list_length(root->distinct_pathkeys) > list_length(root->sort_pathkeys)) @@ -2056,7 +2054,7 @@ choose_hashed_grouping(PlannerInfo *root, * differences that it doesn't seem worth trying to unify the two functions. * * But note that making the two choices independently is a bit bogus in - * itself. If the two could be combined into a single choice operation + * itself. If the two could be combined into a single choice operation * it'd probably be better, but that seems far too unwieldy to be practical, * especially considering that the combination of GROUP BY and DISTINCT * isn't very common in real queries. By separating them, we are giving @@ -2098,8 +2096,8 @@ choose_hashed_distinct(PlannerInfo *root, * comparison. * * We need to consider input_plan + hashagg [+ final sort] versus - * input_plan [+ sort] + group [+ final sort] where brackets indicate - * a step that may not be needed. + * input_plan [+ sort] + group [+ final sort] where brackets indicate a + * step that may not be needed. * * These path variables are dummies that just hold cost fields; we don't * make actual Paths for these steps. @@ -2108,16 +2106,17 @@ choose_hashed_distinct(PlannerInfo *root, numDistinctCols, dNumDistinctRows, input_plan->startup_cost, input_plan->total_cost, input_plan->plan_rows); + /* - * Result of hashed agg is always unsorted, so if ORDER BY is present - * we need to charge for the final sort. + * Result of hashed agg is always unsorted, so if ORDER BY is present we + * need to charge for the final sort. */ if (root->parse->sortClause) cost_sort(&hashed_p, root, root->sort_pathkeys, hashed_p.total_cost, dNumDistinctRows, input_plan->plan_width, limit_tuples); /* - * Now for the GROUP case. See comments in grouping_planner about the + * Now for the GROUP case. See comments in grouping_planner about the * sorting choices here --- this code should match that code. */ sorted_p.startup_cost = input_plan->startup_cost; @@ -2398,10 +2397,10 @@ select_active_windows(PlannerInfo *root, WindowFuncLists *wflists) * are otherwise distinct (eg, different names or framing clauses). * * There is room to be much smarter here, for example detecting whether - * one window's sort keys are a prefix of another's (so that sorting - * for the latter would do for the former), or putting windows first - * that match a sort order available for the underlying query. For the - * moment we are content with meeting the spec. + * one window's sort keys are a prefix of another's (so that sorting for + * the latter would do for the former), or putting windows first that + * match a sort order available for the underlying query. For the moment + * we are content with meeting the spec. */ result = NIL; while (actives != NIL) @@ -2469,12 +2468,12 @@ add_volatile_sort_exprs(List *window_tlist, List *tlist, List *activeWindows) } /* - * Now scan the original tlist to find the referenced expressions. - * Any that are volatile must be added to window_tlist. + * Now scan the original tlist to find the referenced expressions. Any + * that are volatile must be added to window_tlist. * - * Note: we know that the input window_tlist contains no items marked - * with ressortgrouprefs, so we don't have to worry about collisions - * of the reference numbers. + * Note: we know that the input window_tlist contains no items marked with + * ressortgrouprefs, so we don't have to worry about collisions of the + * reference numbers. */ foreach(lc, tlist) { @@ -2524,7 +2523,7 @@ make_pathkeys_for_window(PlannerInfo *root, WindowClause *wc, ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("could not implement window ORDER BY"), - errdetail("Window ordering columns must be of sortable datatypes."))); + errdetail("Window ordering columns must be of sortable datatypes."))); /* Okay, make the combined pathkeys */ window_sortclauses = list_concat(list_copy(wc->partitionClause), @@ -2545,7 +2544,7 @@ make_pathkeys_for_window(PlannerInfo *root, WindowClause *wc, * This depends on the behavior of make_pathkeys_for_window()! * * We are given the target WindowClause and an array of the input column - * numbers associated with the resulting pathkeys. In the easy case, there + * numbers associated with the resulting pathkeys. In the easy case, there * are the same number of pathkey columns as partitioning + ordering columns * and we just have to copy some data around. However, it's possible that * some of the original partitioning + ordering columns were eliminated as @@ -2553,11 +2552,11 @@ make_pathkeys_for_window(PlannerInfo *root, WindowClause *wc, * though the parser gets rid of obvious duplicates. A typical scenario is a * window specification "PARTITION BY x ORDER BY y" coupled with a clause * "WHERE x = y" that causes the two sort columns to be recognized as - * redundant.) In that unusual case, we have to work a lot harder to + * redundant.) In that unusual case, we have to work a lot harder to * determine which keys are significant. * * The method used here is a bit brute-force: add the sort columns to a list - * one at a time and note when the resulting pathkey list gets longer. But + * one at a time and note when the resulting pathkey list gets longer. But * it's a sufficiently uncommon case that a faster way doesn't seem worth * the amount of code refactoring that'd be needed. *---------- @@ -2659,7 +2658,7 @@ get_column_info_for_window(PlannerInfo *root, WindowClause *wc, List *tlist, * Currently, we disallow sublinks in standalone expressions, so there's no * real "planning" involved here. (That might not always be true though.) * What we must do is run eval_const_expressions to ensure that any function - * default arguments get inserted. The fact that constant subexpressions + * default arguments get inserted. The fact that constant subexpressions * get simplified is a side-effect that is useful when the expression will * get evaluated more than once. Also, we must fix operator function IDs. * diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index 17016d5f3bf..11e14f96c55 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.149 2009/01/22 20:16:04 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.150 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -116,7 +116,7 @@ static Node *fix_upper_expr_mutator(Node *node, fix_upper_expr_context *context); static bool fix_opfuncids_walker(Node *node, void *context); static bool extract_query_dependencies_walker(Node *node, - PlannerGlobal *context); + PlannerGlobal *context); /***************************************************************************** @@ -349,7 +349,7 @@ set_plan_refs(PlannerGlobal *glob, Plan *plan, int rtoffset) break; case T_CteScan: { - CteScan *splan = (CteScan *) plan; + CteScan *splan = (CteScan *) plan; splan->scan.scanrelid += rtoffset; splan->scan.plan.targetlist = @@ -713,13 +713,13 @@ fix_expr_common(PlannerGlobal *glob, Node *node) { set_sa_opfuncid((ScalarArrayOpExpr *) node); record_plan_function_dependency(glob, - ((ScalarArrayOpExpr *) node)->opfuncid); + ((ScalarArrayOpExpr *) node)->opfuncid); } else if (IsA(node, ArrayCoerceExpr)) { if (OidIsValid(((ArrayCoerceExpr *) node)->elemfuncid)) record_plan_function_dependency(glob, - ((ArrayCoerceExpr *) node)->elemfuncid); + ((ArrayCoerceExpr *) node)->elemfuncid); } else if (IsA(node, Const)) { @@ -759,8 +759,8 @@ fix_scan_expr(PlannerGlobal *glob, Node *node, int rtoffset) * If rtoffset == 0, we don't need to change any Vars, and if there * are no placeholders anywhere we won't need to remove them. Then * it's OK to just scribble on the input node tree instead of copying - * (since the only change, filling in any unset opfuncid fields, - * is harmless). This saves just enough cycles to be noticeable on + * (since the only change, filling in any unset opfuncid fields, is + * harmless). This saves just enough cycles to be noticeable on * trivial queries. */ (void) fix_scan_expr_walker(node, &context); @@ -1633,11 +1633,11 @@ set_returning_clause_references(PlannerGlobal *glob, * entries, while leaving result-rel Vars as-is. * * PlaceHolderVars will also be sought in the targetlist, but no - * more-complex expressions will be. Note that it is not possible for - * a PlaceHolderVar to refer to the result relation, since the result - * is never below an outer join. If that case could happen, we'd have - * to be prepared to pick apart the PlaceHolderVar and evaluate its - * contained expression instead. + * more-complex expressions will be. Note that it is not possible for a + * PlaceHolderVar to refer to the result relation, since the result is + * never below an outer join. If that case could happen, we'd have to be + * prepared to pick apart the PlaceHolderVar and evaluate its contained + * expression instead. */ itlist = build_tlist_index_other_vars(topplan->targetlist, resultRelation); @@ -1734,8 +1734,8 @@ record_plan_function_dependency(PlannerGlobal *glob, Oid funcid) * we just assume they'll never change (or at least not in ways that'd * invalidate plans using them). For this purpose we can consider a * built-in function to be one with OID less than FirstBootstrapObjectId. - * Note that the OID generator guarantees never to generate such an - * OID after startup, even at OID wraparound. + * Note that the OID generator guarantees never to generate such an OID + * after startup, even at OID wraparound. */ if (funcid >= (Oid) FirstBootstrapObjectId) { diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c index 6839e5d99ba..cdff1238281 100644 --- a/src/backend/optimizer/plan/subselect.c +++ b/src/backend/optimizer/plan/subselect.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/plan/subselect.c,v 1.149 2009/04/25 16:44:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/plan/subselect.c,v 1.150 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -56,9 +56,9 @@ static Node *build_subplan(PlannerInfo *root, Plan *plan, List *rtable, SubLinkType subLinkType, Node *testexpr, bool adjust_testexpr, bool unknownEqFalse); static List *generate_subquery_params(PlannerInfo *root, List *tlist, - List **paramIds); + List **paramIds); static List *generate_subquery_vars(PlannerInfo *root, List *tlist, - Index varno); + Index varno); static Node *convert_testexpr(PlannerInfo *root, Node *testexpr, List *subst_nodes); @@ -308,7 +308,7 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, * path/costsize.c. * * XXX If an ANY subplan is uncorrelated, build_subplan may decide to hash - * its output. In that case it would've been better to specify full + * its output. In that case it would've been better to specify full * retrieval. At present, however, we can only check hashability after * we've made the subplan :-(. (Determining whether it'll fit in work_mem * is the really hard part.) Therefore, we don't want to be too @@ -338,11 +338,11 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, /* * If it's a correlated EXISTS with an unimportant targetlist, we might be * able to transform it to the equivalent of an IN and then implement it - * by hashing. We don't have enough information yet to tell which way - * is likely to be better (it depends on the expected number of executions - * of the EXISTS qual, and we are much too early in planning the outer - * query to be able to guess that). So we generate both plans, if - * possible, and leave it to the executor to decide which to use. + * by hashing. We don't have enough information yet to tell which way is + * likely to be better (it depends on the expected number of executions of + * the EXISTS qual, and we are much too early in planning the outer query + * to be able to guess that). So we generate both plans, if possible, and + * leave it to the executor to decide which to use. */ if (simple_exists && IsA(result, SubPlan)) { @@ -368,7 +368,7 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, /* Now we can check if it'll fit in work_mem */ if (subplan_is_hashable(plan)) { - SubPlan *hashplan; + SubPlan *hashplan; AlternativeSubPlan *asplan; /* OK, convert to SubPlan format. */ @@ -437,7 +437,7 @@ build_subplan(PlannerInfo *root, Plan *plan, List *rtable, if (pitem->abslevel == root->query_level) { - Node *arg; + Node *arg; /* * The Var or Aggref has already been adjusted to have the correct @@ -447,8 +447,8 @@ build_subplan(PlannerInfo *root, Plan *plan, List *rtable, arg = copyObject(pitem->item); /* - * If it's an Aggref, its arguments might contain SubLinks, - * which have not yet been processed. Do that now. + * If it's an Aggref, its arguments might contain SubLinks, which + * have not yet been processed. Do that now. */ if (IsA(arg, Aggref)) arg = SS_process_sublinks(root, arg, false); @@ -714,7 +714,7 @@ generate_subquery_vars(PlannerInfo *root, List *tlist, Index varno) /* * convert_testexpr: convert the testexpr given by the parser into * actually executable form. This entails replacing PARAM_SUBLINK Params - * with Params or Vars representing the results of the sub-select. The + * with Params or Vars representing the results of the sub-select. The * nodes to be substituted are passed in as the List result from * generate_subquery_params or generate_subquery_vars. * @@ -794,8 +794,8 @@ static bool testexpr_is_hashable(Node *testexpr) { /* - * The testexpr must be a single OpExpr, or an AND-clause containing - * only OpExprs. + * The testexpr must be a single OpExpr, or an AND-clause containing only + * OpExprs. * * The combining operators must be hashable and strict. The need for * hashability is obvious, since we want to use hashing. Without @@ -892,8 +892,8 @@ SS_process_ctes(PlannerInfo *root) } /* - * Copy the source Query node. Probably not necessary, but let's - * keep this similar to make_subplan. + * Copy the source Query node. Probably not necessary, but let's keep + * this similar to make_subplan. */ subquery = (Query *) copyObject(cte->ctequery); @@ -907,7 +907,7 @@ SS_process_ctes(PlannerInfo *root) &subroot); /* - * Make a SubPlan node for it. This is just enough unlike + * Make a SubPlan node for it. This is just enough unlike * build_subplan that we can't share code. * * Note plan_id, plan_name, and cost fields are set further down. @@ -925,8 +925,8 @@ SS_process_ctes(PlannerInfo *root) /* * Make parParam and args lists of param IDs and expressions that - * current query level will pass to this child plan. Even though - * this is an initplan, there could be side-references to earlier + * current query level will pass to this child plan. Even though this + * is an initplan, there could be side-references to earlier * initplan's outputs, specifically their CTE output parameters. */ tmpset = bms_copy(plan->extParam); @@ -948,8 +948,8 @@ SS_process_ctes(PlannerInfo *root) bms_free(tmpset); /* - * Assign a param to represent the query output. We only really - * care about reserving a parameter ID number. + * Assign a param to represent the query output. We only really care + * about reserving a parameter ID number. */ prm = generate_new_param(root, INTERNALOID, -1); splan->setParam = list_make1_int(prm->paramid); @@ -1028,9 +1028,9 @@ convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink, return NULL; /* - * The test expression must contain some Vars of the parent query, - * else it's not gonna be a join. (Note that it won't have Vars - * referring to the subquery, rather Params.) + * The test expression must contain some Vars of the parent query, else + * it's not gonna be a join. (Note that it won't have Vars referring to + * the subquery, rather Params.) */ upper_varnos = pull_varnos(sublink->testexpr); if (bms_is_empty(upper_varnos)) @@ -1126,10 +1126,10 @@ convert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink *sublink, subselect = (Query *) copyObject(subselect); /* - * See if the subquery can be simplified based on the knowledge that - * it's being used in EXISTS(). If we aren't able to get rid of its - * targetlist, we have to fail, because the pullup operation leaves - * us with noplace to evaluate the targetlist. + * See if the subquery can be simplified based on the knowledge that it's + * being used in EXISTS(). If we aren't able to get rid of its + * targetlist, we have to fail, because the pullup operation leaves us + * with noplace to evaluate the targetlist. */ if (!simplify_EXISTS_query(subselect)) return NULL; @@ -1175,13 +1175,13 @@ convert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink *sublink, * to the inner (necessarily true). Therefore this is a lot easier than * what pull_up_subqueries has to go through. * - * In fact, it's even easier than what convert_ANY_sublink_to_join has - * to do. The machinations of simplify_EXISTS_query ensured that there - * is nothing interesting in the subquery except an rtable and jointree, - * and even the jointree FromExpr no longer has quals. So we can just - * append the rtable to our own and use the FromExpr in our jointree. - * But first, adjust all level-zero varnos in the subquery to account - * for the rtable merger. + * In fact, it's even easier than what convert_ANY_sublink_to_join has to + * do. The machinations of simplify_EXISTS_query ensured that there is + * nothing interesting in the subquery except an rtable and jointree, and + * even the jointree FromExpr no longer has quals. So we can just append + * the rtable to our own and use the FromExpr in our jointree. But first, + * adjust all level-zero varnos in the subquery to account for the rtable + * merger. */ rtoffset = list_length(parse->rtable); OffsetVarNodes((Node *) subselect, rtoffset, 0); @@ -1198,8 +1198,8 @@ convert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink *sublink, /* * Now that the WHERE clause is adjusted to match the parent query * environment, we can easily identify all the level-zero rels it uses. - * The ones <= rtoffset belong to the upper query; the ones > rtoffset - * do not. + * The ones <= rtoffset belong to the upper query; the ones > rtoffset do + * not. */ clause_varnos = pull_varnos(whereClause); upper_varnos = NULL; @@ -1212,8 +1212,8 @@ convert_EXISTS_sublink_to_join(PlannerInfo *root, SubLink *sublink, Assert(!bms_is_empty(upper_varnos)); /* - * Now that we've got the set of upper-level varnos, we can make the - * last check: only available_rels can be referenced. + * Now that we've got the set of upper-level varnos, we can make the last + * check: only available_rels can be referenced. */ if (!bms_is_subset(upper_varnos, available_rels)) return NULL; @@ -1308,7 +1308,7 @@ simplify_EXISTS_query(Query *query) * * On success, the modified subselect is returned, and we store a suitable * upper-level test expression at *testexpr, plus a list of the subselect's - * output Params at *paramIds. (The test expression is already Param-ified + * output Params at *paramIds. (The test expression is already Param-ified * and hence need not go through convert_testexpr, which is why we have to * deal with the Param IDs specially.) * @@ -1365,32 +1365,32 @@ convert_EXISTS_to_ANY(PlannerInfo *root, Query *subselect, /* * Clean up the WHERE clause by doing const-simplification etc on it. * Aside from simplifying the processing we're about to do, this is - * important for being able to pull chunks of the WHERE clause up into - * the parent query. Since we are invoked partway through the parent's + * important for being able to pull chunks of the WHERE clause up into the + * parent query. Since we are invoked partway through the parent's * preprocess_expression() work, earlier steps of preprocess_expression() - * wouldn't get applied to the pulled-up stuff unless we do them here. - * For the parts of the WHERE clause that get put back into the child - * query, this work is partially duplicative, but it shouldn't hurt. + * wouldn't get applied to the pulled-up stuff unless we do them here. For + * the parts of the WHERE clause that get put back into the child query, + * this work is partially duplicative, but it shouldn't hurt. * - * Note: we do not run flatten_join_alias_vars. This is OK because - * any parent aliases were flattened already, and we're not going to - * pull any child Vars (of any description) into the parent. + * Note: we do not run flatten_join_alias_vars. This is OK because any + * parent aliases were flattened already, and we're not going to pull any + * child Vars (of any description) into the parent. * - * Note: passing the parent's root to eval_const_expressions is technically - * wrong, but we can get away with it since only the boundParams (if any) - * are used, and those would be the same in a subroot. + * Note: passing the parent's root to eval_const_expressions is + * technically wrong, but we can get away with it since only the + * boundParams (if any) are used, and those would be the same in a + * subroot. */ whereClause = eval_const_expressions(root, whereClause); whereClause = (Node *) canonicalize_qual((Expr *) whereClause); whereClause = (Node *) make_ands_implicit((Expr *) whereClause); /* - * We now have a flattened implicit-AND list of clauses, which we - * try to break apart into "outervar = innervar" hash clauses. - * Anything that can't be broken apart just goes back into the - * newWhere list. Note that we aren't trying hard yet to ensure - * that we have only outer or only inner on each side; we'll check - * that if we get to the end. + * We now have a flattened implicit-AND list of clauses, which we try to + * break apart into "outervar = innervar" hash clauses. Anything that + * can't be broken apart just goes back into the newWhere list. Note that + * we aren't trying hard yet to ensure that we have only outer or only + * inner on each side; we'll check that if we get to the end. */ leftargs = rightargs = opids = newWhere = NIL; foreach(lc, (List *) whereClause) @@ -1400,8 +1400,8 @@ convert_EXISTS_to_ANY(PlannerInfo *root, Query *subselect, if (IsA(expr, OpExpr) && hash_ok_operator(expr)) { - Node *leftarg = (Node *) linitial(expr->args); - Node *rightarg = (Node *) lsecond(expr->args); + Node *leftarg = (Node *) linitial(expr->args); + Node *rightarg = (Node *) lsecond(expr->args); if (contain_vars_of_level(leftarg, 1)) { @@ -1459,15 +1459,15 @@ convert_EXISTS_to_ANY(PlannerInfo *root, Query *subselect, /* * And there can't be any child Vars in the stuff we intend to pull up. - * (Note: we'd need to check for child Aggs too, except we know the - * child has no aggs at all because of simplify_EXISTS_query's check. - * The same goes for window functions.) + * (Note: we'd need to check for child Aggs too, except we know the child + * has no aggs at all because of simplify_EXISTS_query's check. The same + * goes for window functions.) */ if (contain_vars_of_level((Node *) leftargs, 0)) return NULL; /* - * Also reject sublinks in the stuff we intend to pull up. (It might be + * Also reject sublinks in the stuff we intend to pull up. (It might be * possible to support this, but doesn't seem worth the complication.) */ if (contain_subplans((Node *) leftargs)) @@ -1485,11 +1485,10 @@ convert_EXISTS_to_ANY(PlannerInfo *root, Query *subselect, subselect->jointree->quals = (Node *) make_ands_explicit(newWhere); /* - * Build a new targetlist for the child that emits the expressions - * we need. Concurrently, build a testexpr for the parent using - * Params to reference the child outputs. (Since we generate Params - * directly here, there will be no need to convert the testexpr in - * build_subplan.) + * Build a new targetlist for the child that emits the expressions we + * need. Concurrently, build a testexpr for the parent using Params to + * reference the child outputs. (Since we generate Params directly here, + * there will be no need to convert the testexpr in build_subplan.) */ tlist = testlist = paramids = NIL; resno = 1; @@ -1625,10 +1624,10 @@ process_sublinks_mutator(Node *node, process_sublinks_context *context) } /* - * Don't recurse into the arguments of an outer aggregate here. - * Any SubLinks in the arguments have to be dealt with at the outer - * query level; they'll be handled when build_subplan collects the - * Aggref into the arguments to be passed down to the current subplan. + * Don't recurse into the arguments of an outer aggregate here. Any + * SubLinks in the arguments have to be dealt with at the outer query + * level; they'll be handled when build_subplan collects the Aggref into + * the arguments to be passed down to the current subplan. */ if (IsA(node, Aggref)) { @@ -1655,7 +1654,7 @@ process_sublinks_mutator(Node *node, process_sublinks_context *context) * is needed for a bare List.) * * Anywhere within the top-level AND/OR clause structure, we can tell - * make_subplan() that NULL and FALSE are interchangeable. So isTopQual + * make_subplan() that NULL and FALSE are interchangeable. So isTopQual * propagates down in both cases. (Note that this is unlike the meaning * of "top level qual" used in most other places in Postgres.) */ @@ -1702,8 +1701,8 @@ process_sublinks_mutator(Node *node, process_sublinks_context *context) } /* - * If we recurse down through anything other than an AND or OR node, - * we are definitely not at top qual level anymore. + * If we recurse down through anything other than an AND or OR node, we + * are definitely not at top qual level anymore. */ locContext.isTopQual = false; @@ -1759,8 +1758,8 @@ SS_finalize_plan(PlannerInfo *root, Plan *plan, bool attach_initplans) /* * Now determine the set of params that are validly referenceable in this * query level; to wit, those available from outer query levels plus the - * output parameters of any initPlans. (We do not include output - * parameters of regular subplans. Those should only appear within the + * output parameters of any initPlans. (We do not include output + * parameters of regular subplans. Those should only appear within the * testexpr of SubPlan nodes, and are taken care of locally within * finalize_primnode.) * @@ -1809,7 +1808,7 @@ SS_finalize_plan(PlannerInfo *root, Plan *plan, bool attach_initplans) if (attach_initplans) { plan->initPlan = root->init_plans; - root->init_plans = NIL; /* make sure they're not attached twice */ + root->init_plans = NIL; /* make sure they're not attached twice */ /* allParam must include all these params */ plan->allParam = bms_add_members(plan->allParam, initExtParam); @@ -2043,9 +2042,9 @@ finalize_plan(PlannerInfo *root, Plan *plan, Bitmapset *valid_params) /* * Note: by definition, extParam and allParam should have the same value - * in any plan node that doesn't have child initPlans. We set them - * equal here, and later SS_finalize_plan will update them properly - * in node(s) that it attaches initPlans to. + * in any plan node that doesn't have child initPlans. We set them equal + * here, and later SS_finalize_plan will update them properly in node(s) + * that it attaches initPlans to. * * For speed at execution time, make sure extParam/allParam are actually * NULL if they are empty sets. @@ -2095,7 +2094,7 @@ finalize_primnode(Node *node, finalize_primnode_context *context) /* * Remove any param IDs of output parameters of the subplan that were - * referenced in the testexpr. These are not interesting for + * referenced in the testexpr. These are not interesting for * parameter change signaling since we always re-evaluate the subplan. * Note that this wouldn't work too well if there might be uses of the * same param IDs elsewhere in the plan, but that can't happen because @@ -2167,9 +2166,9 @@ SS_make_initplan_from_plan(PlannerInfo *root, Plan *plan, root->parse->rtable); /* - * Create a SubPlan node and add it to the outer list of InitPlans. - * Note it has to appear after any other InitPlans it might depend on - * (see comments in ExecReScan). + * Create a SubPlan node and add it to the outer list of InitPlans. Note + * it has to appear after any other InitPlans it might depend on (see + * comments in ExecReScan). */ node = makeNode(SubPlan); node->subLinkType = EXPR_SUBLINK; diff --git a/src/backend/optimizer/prep/prepjointree.c b/src/backend/optimizer/prep/prepjointree.c index 3df9d57c1d2..fd451b338bf 100644 --- a/src/backend/optimizer/prep/prepjointree.c +++ b/src/backend/optimizer/prep/prepjointree.c @@ -16,7 +16,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/prep/prepjointree.c,v 1.65 2009/04/28 21:31:16 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/prep/prepjointree.c,v 1.66 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -52,16 +52,16 @@ static Node *pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, static Node *pull_up_simple_union_all(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte); static void pull_up_union_leaf_queries(Node *setOp, PlannerInfo *root, - int parentRTindex, Query *setOpQuery, - int childRToffset); + int parentRTindex, Query *setOpQuery, + int childRToffset); static void make_setop_translation_list(Query *query, Index newvarno, - List **translated_vars); + List **translated_vars); static bool is_simple_subquery(Query *subquery); static bool is_simple_union_all(Query *subquery); static bool is_simple_union_all_recurse(Node *setOp, Query *setOpQuery, List *colTypes); static List *insert_targetlist_placeholders(PlannerInfo *root, List *tlist, - int varno, bool wrap_non_vars); + int varno, bool wrap_non_vars); static bool is_safe_append_member(Query *subquery); static void resolvenew_in_jointree(Node *jtnode, int varno, RangeTblEntry *rte, List *subtlist, List *subtlist_with_phvs, @@ -74,7 +74,7 @@ static void reduce_outer_joins_pass2(Node *jtnode, List *nonnullable_vars, List *forced_null_vars); static void substitute_multiple_relids(Node *node, - int varno, Relids subrelids); + int varno, Relids subrelids); static void fix_append_rel_relids(List *append_rel_list, int varno, Relids subrelids); static Node *find_jointree_node_for_rel(Node *jtnode, int relid); @@ -87,7 +87,7 @@ static Node *find_jointree_node_for_rel(Node *jtnode, int relid); * * A clause "foo op ANY (sub-SELECT)" can be processed by pulling the * sub-SELECT up to become a rangetable entry and treating the implied - * comparisons as quals of a semijoin. However, this optimization *only* + * comparisons as quals of a semijoin. However, this optimization *only* * works at the top level of WHERE or a JOIN/ON clause, because we cannot * distinguish whether the ANY ought to return FALSE or NULL in cases * involving NULL inputs. Also, in an outer join's ON clause we can only @@ -104,7 +104,7 @@ static Node *find_jointree_node_for_rel(Node *jtnode, int relid); * transformations if any are found. * * This routine has to run before preprocess_expression(), so the quals - * clauses are not yet reduced to implicit-AND format. That means we need + * clauses are not yet reduced to implicit-AND format. That means we need * to recursively search through explicit AND clauses, which are * probably only binary ANDs. We stop as soon as we hit a non-AND item. */ @@ -162,8 +162,8 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, /* First, recurse to process children and collect their relids */ foreach(l, f->fromlist) { - Node *newchild; - Relids childrelids; + Node *newchild; + Relids childrelids; newchild = pull_up_sublinks_jointree_recurse(root, lfirst(l), @@ -181,8 +181,8 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, /* * Note that the result will be either newf, or a stack of JoinExprs - * with newf at the base. We rely on subsequent optimization steps - * to flatten this and rearrange the joins as needed. + * with newf at the base. We rely on subsequent optimization steps to + * flatten this and rearrange the joins as needed. * * Although we could include the pulled-up subqueries in the returned * relids, there's no need since upper quals couldn't refer to their @@ -199,8 +199,8 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, Node *jtlink; /* - * Make a modifiable copy of join node, but don't bother copying - * its subnodes (yet). + * Make a modifiable copy of join node, but don't bother copying its + * subnodes (yet). */ j = (JoinExpr *) palloc(sizeof(JoinExpr)); memcpy(j, jtnode, sizeof(JoinExpr)); @@ -214,19 +214,19 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, /* * Now process qual, showing appropriate child relids as available, - * and attach any pulled-up jointree items at the right place. - * In the inner-join case we put new JoinExprs above the existing one - * (much as for a FromExpr-style join). In outer-join cases the - * new JoinExprs must go into the nullable side of the outer join. - * The point of the available_rels machinations is to ensure that we - * only pull up quals for which that's okay. + * and attach any pulled-up jointree items at the right place. In the + * inner-join case we put new JoinExprs above the existing one (much + * as for a FromExpr-style join). In outer-join cases the new + * JoinExprs must go into the nullable side of the outer join. The + * point of the available_rels machinations is to ensure that we only + * pull up quals for which that's okay. * * XXX for the moment, we refrain from pulling up IN/EXISTS clauses - * appearing in LEFT or RIGHT join conditions. Although it is + * appearing in LEFT or RIGHT join conditions. Although it is * semantically valid to do so under the above conditions, we end up * with a query in which the semijoin or antijoin must be evaluated - * below the outer join, which could perform far worse than leaving - * it as a sublink that is executed only for row pairs that meet the + * below the outer join, which could perform far worse than leaving it + * as a sublink that is executed only for row pairs that meet the * other join conditions. Fixing this seems to require considerable * restructuring of the executor, but maybe someday it can happen. * @@ -238,7 +238,7 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, case JOIN_INNER: j->quals = pull_up_sublinks_qual_recurse(root, j->quals, bms_union(leftrelids, - rightrelids), + rightrelids), &jtlink); break; case JOIN_LEFT: @@ -267,7 +267,7 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, /* * Although we could include the pulled-up subqueries in the returned * relids, there's no need since upper quals couldn't refer to their - * outputs anyway. But we *do* need to include the join's own rtindex + * outputs anyway. But we *do* need to include the join's own rtindex * because we haven't yet collapsed join alias variables, so upper * levels would mistakenly think they couldn't use references to this * join. @@ -416,7 +416,7 @@ inline_set_returning_functions(PlannerInfo *root) if (rte->rtekind == RTE_FUNCTION) { - Query *funcquery; + Query *funcquery; /* Check safety of expansion, and expand if possible */ funcquery = inline_set_returning_function(root, rte); @@ -495,10 +495,10 @@ pull_up_subqueries(PlannerInfo *root, Node *jtnode, * Alternatively, is it a simple UNION ALL subquery? If so, flatten * into an "append relation". * - * It's safe to do this regardless of whether this query is - * itself an appendrel member. (If you're thinking we should try to - * flatten the two levels of appendrel together, you're right; but we - * handle that in set_append_rel_pathlist, not here.) + * It's safe to do this regardless of whether this query is itself an + * appendrel member. (If you're thinking we should try to flatten the + * two levels of appendrel together, you're right; but we handle that + * in set_append_rel_pathlist, not here.) */ if (rte->rtekind == RTE_SUBQUERY && is_simple_union_all(rte->subquery)) @@ -637,10 +637,10 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, * pull_up_subqueries' processing is complete for its jointree and * rangetable. * - * Note: we should pass NULL for containing-join info even if we are within - * an outer join in the upper query; the lower query starts with a clean - * slate for outer-join semantics. Likewise, we say we aren't handling an - * appendrel member. + * Note: we should pass NULL for containing-join info even if we are + * within an outer join in the upper query; the lower query starts with a + * clean slate for outer-join semantics. Likewise, we say we aren't + * handling an appendrel member. */ subquery->jointree = (FromExpr *) pull_up_subqueries(subroot, (Node *) subquery->jointree, NULL, NULL); @@ -673,8 +673,8 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, /* * Adjust level-0 varnos in subquery so that we can append its rangetable - * to upper query's. We have to fix the subquery's append_rel_list - * as well. + * to upper query's. We have to fix the subquery's append_rel_list as + * well. */ rtoffset = list_length(parse->rtable); OffsetVarNodes((Node *) subquery, rtoffset, 0); @@ -691,15 +691,15 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, * The subquery's targetlist items are now in the appropriate form to * insert into the top query, but if we are under an outer join then * non-nullable items may have to be turned into PlaceHolderVars. If we - * are dealing with an appendrel member then anything that's not a - * simple Var has to be turned into a PlaceHolderVar. + * are dealing with an appendrel member then anything that's not a simple + * Var has to be turned into a PlaceHolderVar. */ subtlist = subquery->targetList; if (lowest_outer_join != NULL || containing_appendrel != NULL) subtlist_with_phvs = insert_targetlist_placeholders(root, subtlist, varno, - containing_appendrel != NULL); + containing_appendrel != NULL); else subtlist_with_phvs = subtlist; @@ -709,7 +709,7 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, * replace any of the jointree structure. (This'd be a lot cleaner if we * could use query_tree_mutator.) We have to use PHVs in the targetList, * returningList, and havingQual, since those are certainly above any - * outer join. resolvenew_in_jointree tracks its location in the jointree + * outer join. resolvenew_in_jointree tracks its location in the jointree * and uses PHVs or not appropriately. */ parse->targetList = (List *) @@ -730,11 +730,11 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, subtlist_with_phvs, CMD_SELECT, 0); /* - * Replace references in the translated_vars lists of appendrels. - * When pulling up an appendrel member, we do not need PHVs in the list - * of the parent appendrel --- there isn't any outer join between. - * Elsewhere, use PHVs for safety. (This analysis could be made tighter - * but it seems unlikely to be worth much trouble.) + * Replace references in the translated_vars lists of appendrels. When + * pulling up an appendrel member, we do not need PHVs in the list of the + * parent appendrel --- there isn't any outer join between. Elsewhere, use + * PHVs for safety. (This analysis could be made tighter but it seems + * unlikely to be worth much trouble.) */ foreach(lc, root->append_rel_list) { @@ -753,9 +753,9 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, * * You might think that we could avoid using PHVs for alias vars of joins * below lowest_outer_join, but that doesn't work because the alias vars - * could be referenced above that join; we need the PHVs to be present - * in such references after the alias vars get flattened. (It might be - * worth trying to be smarter here, someday.) + * could be referenced above that join; we need the PHVs to be present in + * such references after the alias vars get flattened. (It might be worth + * trying to be smarter here, someday.) */ foreach(lc, parse->rtable) { @@ -789,9 +789,9 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, * will be adjusted, so having created them with the subquery's varno is * correct. * - * Likewise, relids appearing in AppendRelInfo nodes have to be fixed. - * We already checked that this won't require introducing multiple - * subrelids into the single-slot AppendRelInfo structs. + * Likewise, relids appearing in AppendRelInfo nodes have to be fixed. We + * already checked that this won't require introducing multiple subrelids + * into the single-slot AppendRelInfo structs. */ if (parse->hasSubLinks || root->glob->lastPHId != 0 || root->append_rel_list) @@ -822,9 +822,10 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, * Miscellaneous housekeeping. */ parse->hasSubLinks |= subquery->hasSubLinks; + /* - * subquery won't be pulled up if it hasAggs or hasWindowFuncs, so no - * work needed on those flags + * subquery won't be pulled up if it hasAggs or hasWindowFuncs, so no work + * needed on those flags */ /* @@ -859,10 +860,10 @@ pull_up_simple_union_all(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte) /* * Append child RTEs to parent rtable. * - * Upper-level vars in subquery are now one level closer to their - * parent than before. We don't have to worry about offsetting - * varnos, though, because any such vars must refer to stuff above the - * level of the query we are pulling into. + * Upper-level vars in subquery are now one level closer to their parent + * than before. We don't have to worry about offsetting varnos, though, + * because any such vars must refer to stuff above the level of the query + * we are pulling into. */ rtable = copyObject(subquery->rtable); IncrementVarSublevelsUp_rtable(rtable, -1, 1); @@ -1049,11 +1050,11 @@ is_simple_subquery(Query *subquery) * query_planner() will correctly generate a Result plan for a jointree * that's totally empty, but I don't think the right things happen if an * empty FromExpr appears lower down in a jointree. It would pose a - * problem for the PlaceHolderVar mechanism too, since we'd have no - * way to identify where to evaluate a PHV coming out of the subquery. - * Not worth working hard on this, just to collapse SubqueryScan/Result - * into Result; especially since the SubqueryScan can often be optimized - * away by setrefs.c anyway. + * problem for the PlaceHolderVar mechanism too, since we'd have no way to + * identify where to evaluate a PHV coming out of the subquery. Not worth + * working hard on this, just to collapse SubqueryScan/Result into Result; + * especially since the SubqueryScan can often be optimized away by + * setrefs.c anyway. */ if (subquery->jointree->fromlist == NIL) return false; @@ -1167,8 +1168,8 @@ insert_targetlist_placeholders(PlannerInfo *root, List *tlist, } /* - * Simple Vars always escape being wrapped. This is common enough - * to deserve a fast path even if we aren't doing wrap_non_vars. + * Simple Vars always escape being wrapped. This is common enough to + * deserve a fast path even if we aren't doing wrap_non_vars. */ if (tle->expr && IsA(tle->expr, Var) && ((Var *) tle->expr)->varlevelsup == 0) @@ -1180,8 +1181,8 @@ insert_targetlist_placeholders(PlannerInfo *root, List *tlist, if (!wrap_non_vars) { /* - * If it contains a Var of current level, and does not contain - * any non-strict constructs, then it's certainly nullable and we + * If it contains a Var of current level, and does not contain any + * non-strict constructs, then it's certainly nullable and we * don't need to insert a PlaceHolderVar. (Note: in future maybe * we should insert PlaceHolderVars anyway, when a tlist item is * expensive to evaluate? @@ -1248,7 +1249,7 @@ is_safe_append_member(Query *subquery) * but there's no other way... * * If we are above lowest_outer_join then use subtlist_with_phvs; at or - * below it, use subtlist. (When no outer joins are in the picture, + * below it, use subtlist. (When no outer joins are in the picture, * these will be the same list.) */ static void @@ -1328,7 +1329,7 @@ resolvenew_in_jointree(Node *jtnode, int varno, RangeTblEntry *rte, * SELECT ... FROM a LEFT JOIN b ON (a.x = b.y) WHERE b.y IS NULL; * If the join clause is strict for b.y, then only null-extended rows could * pass the upper WHERE, and we can conclude that what the query is really - * specifying is an anti-semijoin. We change the join type from JOIN_LEFT + * specifying is an anti-semijoin. We change the join type from JOIN_LEFT * to JOIN_ANTI. The IS NULL clause then becomes redundant, and must be * removed to prevent bogus selectivity calculations, but we leave it to * distribute_qual_to_rels to get rid of such clauses. @@ -1533,6 +1534,7 @@ reduce_outer_joins_pass2(Node *jtnode, break; case JOIN_SEMI: case JOIN_ANTI: + /* * These could only have been introduced by pull_up_sublinks, * so there's no way that upper quals could refer to their @@ -1565,14 +1567,14 @@ reduce_outer_joins_pass2(Node *jtnode, } /* - * See if we can reduce JOIN_LEFT to JOIN_ANTI. This is the case - * if the join's own quals are strict for any var that was forced - * null by higher qual levels. NOTE: there are other ways that we - * could detect an anti-join, in particular if we were to check - * whether Vars coming from the RHS must be non-null because of - * table constraints. That seems complicated and expensive though - * (in particular, one would have to be wary of lower outer joins). - * For the moment this seems sufficient. + * See if we can reduce JOIN_LEFT to JOIN_ANTI. This is the case if + * the join's own quals are strict for any var that was forced null by + * higher qual levels. NOTE: there are other ways that we could + * detect an anti-join, in particular if we were to check whether Vars + * coming from the RHS must be non-null because of table constraints. + * That seems complicated and expensive though (in particular, one + * would have to be wary of lower outer joins). For the moment this + * seems sufficient. */ if (jointype == JOIN_LEFT) { @@ -1582,8 +1584,8 @@ reduce_outer_joins_pass2(Node *jtnode, computed_local_nonnullable_vars = true; /* - * It's not sufficient to check whether local_nonnullable_vars - * and forced_null_vars overlap: we need to know if the overlap + * It's not sufficient to check whether local_nonnullable_vars and + * forced_null_vars overlap: we need to know if the overlap * includes any RHS variables. */ overlap = list_intersection(local_nonnullable_vars, @@ -1621,11 +1623,11 @@ reduce_outer_joins_pass2(Node *jtnode, * side, because an outer join never eliminates any rows from its * non-nullable side. Also, there is no point in passing upper * constraints into the nullable side, since if there were any - * we'd have been able to reduce the join. (In the case of - * upper forced-null constraints, we *must not* pass them into - * the nullable side --- they either applied here, or not.) - * The upshot is that we pass either the local or the upper - * constraints, never both, to the children of an outer join. + * we'd have been able to reduce the join. (In the case of upper + * forced-null constraints, we *must not* pass them into the + * nullable side --- they either applied here, or not.) The upshot + * is that we pass either the local or the upper constraints, + * never both, to the children of an outer join. * * At a FULL join we just punt and pass nothing down --- is it * possible to be smarter? @@ -1640,7 +1642,7 @@ reduce_outer_joins_pass2(Node *jtnode, { /* OK to merge upper and local constraints */ local_nonnullable_rels = bms_add_members(local_nonnullable_rels, - nonnullable_rels); + nonnullable_rels); local_nonnullable_vars = list_concat(local_nonnullable_vars, nonnullable_vars); local_forced_null_vars = list_concat(local_forced_null_vars, @@ -1663,7 +1665,7 @@ reduce_outer_joins_pass2(Node *jtnode, pass_nonnullable_vars = local_nonnullable_vars; pass_forced_null_vars = local_forced_null_vars; } - else if (jointype != JOIN_FULL) /* ie, LEFT/SEMI/ANTI */ + else if (jointype != JOIN_FULL) /* ie, LEFT/SEMI/ANTI */ { /* can't pass local constraints to non-nullable side */ pass_nonnullable_rels = nonnullable_rels; @@ -1722,7 +1724,7 @@ reduce_outer_joins_pass2(Node *jtnode, * top query could (yet) contain such a reference. * * NOTE: although this has the form of a walker, we cheat and modify the - * nodes in-place. This should be OK since the tree was copied by ResolveNew + * nodes in-place. This should be OK since the tree was copied by ResolveNew * earlier. Avoid scribbling on the original values of the bitmapsets, though, * because expression_tree_mutator doesn't copy those. */ diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c index 09acdaca65e..b5e10a91801 100644 --- a/src/backend/optimizer/prep/prepunion.c +++ b/src/backend/optimizer/prep/prepunion.c @@ -22,7 +22,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.170 2009/05/12 03:11:01 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.171 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -97,7 +97,7 @@ static void make_inh_translation_list(Relation oldrelation, Index newvarno, List **translated_vars); static Bitmapset *translate_col_privs(const Bitmapset *parent_privs, - List *translated_vars); + List *translated_vars); static Node *adjust_appendrel_attrs_mutator(Node *node, AppendRelInfo *context); static Relids adjust_relid_set(Relids relids, Index oldrelid, Index newrelid); @@ -220,9 +220,9 @@ recurse_set_operations(Node *setOp, PlannerInfo *root, &subroot); /* - * Estimate number of groups if caller wants it. If the subquery - * used grouping or aggregation, its output is probably mostly - * unique anyway; otherwise do statistical estimation. + * Estimate number of groups if caller wants it. If the subquery used + * grouping or aggregation, its output is probably mostly unique + * anyway; otherwise do statistical estimation. */ if (pNumGroups) { @@ -231,7 +231,7 @@ recurse_set_operations(Node *setOp, PlannerInfo *root, *pNumGroups = subplan->plan_rows; else *pNumGroups = estimate_num_groups(subroot, - get_tlist_exprs(subquery->targetList, false), + get_tlist_exprs(subquery->targetList, false), subplan->plan_rows); } @@ -361,7 +361,7 @@ generate_recursion_plan(SetOperationStmt *setOp, PlannerInfo *root, } else { - double dNumGroups; + double dNumGroups; /* Identify the grouping semantics */ groupList = generate_setop_grouplist(setOp, tlist); @@ -374,8 +374,8 @@ generate_recursion_plan(SetOperationStmt *setOp, PlannerInfo *root, errdetail("All column datatypes must be hashable."))); /* - * For the moment, take the number of distinct groups as equal to - * the total input size, ie, the worst case. + * For the moment, take the number of distinct groups as equal to the + * total input size, ie, the worst case. */ dNumGroups = lplan->plan_rows + rplan->plan_rows * 10; @@ -460,9 +460,9 @@ generate_union_plan(SetOperationStmt *op, PlannerInfo *root, plan = make_union_unique(op, plan, root, tuple_fraction, sortClauses); /* - * Estimate number of groups if caller wants it. For now we just - * assume the output is unique --- this is certainly true for the - * UNION case, and we want worst-case estimates anyway. + * Estimate number of groups if caller wants it. For now we just assume + * the output is unique --- this is certainly true for the UNION case, and + * we want worst-case estimates anyway. */ if (pNumGroups) *pNumGroups = plan->plan_rows; @@ -555,8 +555,8 @@ generate_nonunion_plan(SetOperationStmt *op, PlannerInfo *root, * Estimate number of distinct groups that we'll need hashtable entries * for; this is the size of the left-hand input for EXCEPT, or the smaller * input for INTERSECT. Also estimate the number of eventual output rows. - * In non-ALL cases, we estimate each group produces one output row; - * in ALL cases use the relevant relation size. These are worst-case + * In non-ALL cases, we estimate each group produces one output row; in + * ALL cases use the relevant relation size. These are worst-case * estimates, of course, but we need to be conservative. */ if (op->op == SETOP_EXCEPT) @@ -578,7 +578,7 @@ generate_nonunion_plan(SetOperationStmt *op, PlannerInfo *root, */ use_hash = choose_hashed_setop(root, groupList, plan, dNumGroups, dNumOutputRows, tuple_fraction, - (op->op == SETOP_INTERSECT) ? "INTERSECT" : "EXCEPT"); + (op->op == SETOP_INTERSECT) ? "INTERSECT" : "EXCEPT"); if (!use_hash) plan = (Plan *) make_sort_from_sortclauses(root, groupList, plan); @@ -687,12 +687,12 @@ make_union_unique(SetOperationStmt *op, Plan *plan, } /* - * XXX for the moment, take the number of distinct groups as equal to - * the total input size, ie, the worst case. This is too conservative, - * but we don't want to risk having the hashtable overrun memory; also, - * it's not clear how to get a decent estimate of the true size. One - * should note as well the propensity of novices to write UNION rather - * than UNION ALL even when they don't expect any duplicates... + * XXX for the moment, take the number of distinct groups as equal to the + * total input size, ie, the worst case. This is too conservative, but we + * don't want to risk having the hashtable overrun memory; also, it's not + * clear how to get a decent estimate of the true size. One should note + * as well the propensity of novices to write UNION rather than UNION ALL + * even when they don't expect any duplicates... */ dNumGroups = plan->plan_rows; @@ -763,7 +763,7 @@ choose_hashed_setop(PlannerInfo *root, List *groupClauses, else ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - /* translator: %s is UNION, INTERSECT, or EXCEPT */ + /* translator: %s is UNION, INTERSECT, or EXCEPT */ errmsg("could not implement %s", construct), errdetail("Some of the datatypes only support hashing, while others only support sorting."))); @@ -1260,16 +1260,16 @@ expand_inherited_rtentry(PlannerInfo *root, RangeTblEntry *rte, Index rti) appinfos = lappend(appinfos, appinfo); /* - * Translate the column permissions bitmaps to the child's attnums - * (we have to build the translated_vars list before we can do this). - * But if this is the parent table, leave copyObject's result alone. + * Translate the column permissions bitmaps to the child's attnums (we + * have to build the translated_vars list before we can do this). But + * if this is the parent table, leave copyObject's result alone. */ if (childOID != parentOID) { childrte->selectedCols = translate_col_privs(rte->selectedCols, - appinfo->translated_vars); + appinfo->translated_vars); childrte->modifiedCols = translate_col_privs(rte->modifiedCols, - appinfo->translated_vars); + appinfo->translated_vars); } /* @@ -1420,7 +1420,7 @@ make_inh_translation_list(Relation oldrelation, Relation newrelation, * parent rel's attribute numbering to the child's. * * The only surprise here is that we don't translate a parent whole-row - * reference into a child whole-row reference. That would mean requiring + * reference into a child whole-row reference. That would mean requiring * permissions on all child columns, which is overly strict, since the * query is really only going to reference the inherited columns. Instead * we set the per-column bits for all inherited columns. @@ -1435,12 +1435,12 @@ translate_col_privs(const Bitmapset *parent_privs, ListCell *lc; /* System attributes have the same numbers in all tables */ - for (attno = FirstLowInvalidHeapAttributeNumber+1; attno < 0; attno++) + for (attno = FirstLowInvalidHeapAttributeNumber + 1; attno < 0; attno++) { if (bms_is_member(attno - FirstLowInvalidHeapAttributeNumber, parent_privs)) child_privs = bms_add_member(child_privs, - attno - FirstLowInvalidHeapAttributeNumber); + attno - FirstLowInvalidHeapAttributeNumber); } /* Check if parent has whole-row reference */ @@ -1451,7 +1451,7 @@ translate_col_privs(const Bitmapset *parent_privs, attno = InvalidAttrNumber; foreach(lc, translated_vars) { - Var *var = (Var *) lfirst(lc); + Var *var = (Var *) lfirst(lc); attno++; if (var == NULL) /* ignore dropped columns */ @@ -1461,7 +1461,7 @@ translate_col_privs(const Bitmapset *parent_privs, bms_is_member(attno - FirstLowInvalidHeapAttributeNumber, parent_privs)) child_privs = bms_add_member(child_privs, - var->varattno - FirstLowInvalidHeapAttributeNumber); + var->varattno - FirstLowInvalidHeapAttributeNumber); } return child_privs; diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index c9c7270d2b8..75c5d0c94d0 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/clauses.c,v 1.276 2009/02/25 03:30:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/clauses.c,v 1.277 2009/06/11 14:48:59 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -98,8 +98,8 @@ static Expr *simplify_function(Oid funcid, bool allow_inline, eval_const_expressions_context *context); static List *add_function_defaults(List *args, Oid result_type, - HeapTuple func_tuple, - eval_const_expressions_context *context); + HeapTuple func_tuple, + eval_const_expressions_context *context); static Expr *evaluate_function(Oid funcid, Oid result_type, int32 result_typmod, List *args, HeapTuple func_tuple, @@ -114,9 +114,9 @@ static Node *substitute_actual_parameters_mutator(Node *node, static void sql_inline_error_callback(void *arg); static Expr *evaluate_expr(Expr *expr, Oid result_type, int32 result_typmod); static Query *substitute_actual_srf_parameters(Query *expr, - int nargs, List *args); + int nargs, List *args); static Node *substitute_actual_srf_parameters_mutator(Node *node, - substitute_actual_srf_parameters_context *context); + substitute_actual_srf_parameters_context *context); static bool tlist_matches_coltypelist(List *tlist, List *coltypelist); @@ -612,7 +612,8 @@ find_window_functions_walker(Node *node, WindowFuncLists *lists) lists->numWindowFuncs++; /* - * Complain if the window function's arguments contain window functions + * Complain if the window function's arguments contain window + * functions */ if (contain_window_function((Node *) wfunc->args)) ereport(ERROR, @@ -1557,8 +1558,8 @@ find_forced_null_vars(Node *node) /* * We don't bother considering the OR case, because it's fairly - * unlikely anyone would write "v1 IS NULL OR v1 IS NULL". - * Likewise, the NOT case isn't worth expending code on. + * unlikely anyone would write "v1 IS NULL OR v1 IS NULL". Likewise, + * the NOT case isn't worth expending code on. */ if (expr->boolop == AND_EXPR) { @@ -1594,7 +1595,7 @@ find_forced_null_var(Node *node) if (expr->nulltesttype == IS_NULL) { - Var *var = (Var *) expr->arg; + Var *var = (Var *) expr->arg; if (var && IsA(var, Var) && var->varlevelsup == 0) @@ -1608,7 +1609,7 @@ find_forced_null_var(Node *node) if (expr->booltesttype == IS_UNKNOWN) { - Var *var = (Var *) expr->arg; + Var *var = (Var *) expr->arg; if (var && IsA(var, Var) && var->varlevelsup == 0) @@ -2013,7 +2014,7 @@ eval_const_expressions(PlannerInfo *root, Node *node) if (root) { context.boundParams = root->glob->boundParams; /* bound Params */ - context.glob = root->glob; /* for inlined-function dependencies */ + context.glob = root->glob; /* for inlined-function dependencies */ } else { @@ -2453,9 +2454,9 @@ eval_const_expressions_mutator(Node *node, /* * CoerceViaIO represents calling the source type's output function - * then the result type's input function. So, try to simplify it - * as though it were a stack of two such function calls. First we - * need to know what the functions are. + * then the result type's input function. So, try to simplify it as + * though it were a stack of two such function calls. First we need + * to know what the functions are. */ getTypeOutputInfo(exprType((Node *) arg), &outfunc, &outtypisvarlena); getTypeInputInfo(expr->resulttype, &infunc, &intypioparam); @@ -2505,8 +2506,8 @@ eval_const_expressions_mutator(Node *node, ArrayCoerceExpr *newexpr; /* - * Reduce constants in the ArrayCoerceExpr's argument, then build - * a new ArrayCoerceExpr. + * Reduce constants in the ArrayCoerceExpr's argument, then build a + * new ArrayCoerceExpr. */ arg = (Expr *) eval_const_expressions_mutator((Node *) expr->arg, context); @@ -2925,7 +2926,7 @@ eval_const_expressions_mutator(Node *node, newbtest->booltesttype = btest->booltesttype; return (Node *) newbtest; } - if (IsA(node, PlaceHolderVar) && context->estimate) + if (IsA(node, PlaceHolderVar) &&context->estimate) { /* * In estimation mode, just strip the PlaceHolderVar node altogether; @@ -3266,7 +3267,7 @@ simplify_function(Oid funcid, Oid result_type, int32 result_typmod, * * It is possible for some of the defaulted arguments to be polymorphic; * therefore we can't assume that the default expressions have the correct - * data types already. We have to re-resolve polymorphics and do coercion + * data types already. We have to re-resolve polymorphics and do coercion * just like the parser did. */ static List * @@ -3594,7 +3595,7 @@ inline_function(Oid funcid, Oid result_type, List *args, /* * Make sure the function (still) returns what it's declared to. This * will raise an error if wrong, but that's okay since the function would - * fail at runtime anyway. Note that check_sql_fn_retval will also insert + * fail at runtime anyway. Note that check_sql_fn_retval will also insert * a RelabelType if needed to make the tlist expression match the declared * type of the function. * @@ -3695,8 +3696,8 @@ inline_function(Oid funcid, Oid result_type, List *args, MemoryContextDelete(mycxt); /* - * Since there is now no trace of the function in the plan tree, we - * must explicitly record the plan's dependency on the function. + * Since there is now no trace of the function in the plan tree, we must + * explicitly record the plan's dependency on the function. */ if (context->glob) record_plan_function_dependency(context->glob, funcid); @@ -3825,7 +3826,7 @@ evaluate_expr(Expr *expr, Oid result_type, int32 result_typmod) fix_opfuncids((Node *) expr); /* - * Prepare expr for execution. (Note: we can't use ExecPrepareExpr + * Prepare expr for execution. (Note: we can't use ExecPrepareExpr * because it'd result in recursively invoking eval_const_expressions.) */ exprstate = ExecInitExpr(expr, NULL); @@ -3908,10 +3909,10 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) Assert(rte->rtekind == RTE_FUNCTION); /* - * It doesn't make a lot of sense for a SQL SRF to refer to itself - * in its own FROM clause, since that must cause infinite recursion - * at runtime. It will cause this code to recurse too, so check - * for stack overflow. (There's no need to do more.) + * It doesn't make a lot of sense for a SQL SRF to refer to itself in its + * own FROM clause, since that must cause infinite recursion at runtime. + * It will cause this code to recurse too, so check for stack overflow. + * (There's no need to do more.) */ check_stack_depth(); @@ -3922,8 +3923,8 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) /* * The function must be declared to return a set, else inlining would - * change the results if the contained SELECT didn't return exactly - * one row. + * change the results if the contained SELECT didn't return exactly one + * row. */ if (!fexpr->funcretset) return NULL; @@ -3932,7 +3933,7 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) * Refuse to inline if the arguments contain any volatile functions or * sub-selects. Volatile functions are rejected because inlining may * result in the arguments being evaluated multiple times, risking a - * change in behavior. Sub-selects are rejected partly for implementation + * change in behavior. Sub-selects are rejected partly for implementation * reasons (pushing them down another level might change their behavior) * and partly because they're likely to be expensive and so multiple * evaluation would be bad. @@ -3957,7 +3958,7 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) /* * Forget it if the function is not SQL-language or has other showstopper - * properties. In particular it mustn't be declared STRICT, since we + * properties. In particular it mustn't be declared STRICT, since we * couldn't enforce that. It also mustn't be VOLATILE, because that is * supposed to cause it to be executed with its own snapshot, rather than * sharing the snapshot of the calling query. (The nargs check is just @@ -4017,16 +4018,16 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) src = TextDatumGetCString(tmp); /* - * Parse, analyze, and rewrite (unlike inline_function(), we can't - * skip rewriting here). We can fail as soon as we find more than - * one query, though. + * Parse, analyze, and rewrite (unlike inline_function(), we can't skip + * rewriting here). We can fail as soon as we find more than one query, + * though. */ raw_parsetree_list = pg_parse_query(src); if (list_length(raw_parsetree_list) != 1) goto fail; querytree_list = pg_analyze_and_rewrite(linitial(raw_parsetree_list), src, - argtypes, funcform->pronargs); + argtypes, funcform->pronargs); if (list_length(querytree_list) != 1) goto fail; querytree = linitial(querytree_list); @@ -4043,13 +4044,13 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) /* * Make sure the function (still) returns what it's declared to. This * will raise an error if wrong, but that's okay since the function would - * fail at runtime anyway. Note that check_sql_fn_retval will also insert + * fail at runtime anyway. Note that check_sql_fn_retval will also insert * RelabelType(s) if needed to make the tlist expression(s) match the * declared type of the function. * - * If the function returns a composite type, don't inline unless the - * check shows it's returning a whole tuple result; otherwise what - * it's returning is a single composite column which is not what we need. + * If the function returns a composite type, don't inline unless the check + * shows it's returning a whole tuple result; otherwise what it's + * returning is a single composite column which is not what we need. */ if (!check_sql_fn_retval(fexpr->funcid, fexpr->funcresulttype, querytree_list, @@ -4076,8 +4077,8 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) fexpr->args); /* - * Copy the modified query out of the temporary memory context, - * and clean up. + * Copy the modified query out of the temporary memory context, and clean + * up. */ MemoryContextSwitchTo(oldcxt); @@ -4088,8 +4089,8 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) ReleaseSysCache(func_tuple); /* - * Since there is now no trace of the function in the plan tree, we - * must explicitly record the plan's dependency on the function. + * Since there is now no trace of the function in the plan tree, we must + * explicitly record the plan's dependency on the function. */ record_plan_function_dependency(root->glob, fexpr->funcid); @@ -4128,9 +4129,9 @@ substitute_actual_srf_parameters(Query *expr, int nargs, List *args) static Node * substitute_actual_srf_parameters_mutator(Node *node, - substitute_actual_srf_parameters_context *context) + substitute_actual_srf_parameters_context *context) { - Node *result; + Node *result; if (node == NULL) return NULL; @@ -4138,7 +4139,7 @@ substitute_actual_srf_parameters_mutator(Node *node, { context->sublevels_up++; result = (Node *) query_tree_mutator((Query *) node, - substitute_actual_srf_parameters_mutator, + substitute_actual_srf_parameters_mutator, (void *) context, 0); context->sublevels_up--; @@ -4154,8 +4155,8 @@ substitute_actual_srf_parameters_mutator(Node *node, elog(ERROR, "invalid paramid: %d", param->paramid); /* - * Since the parameter is being inserted into a subquery, - * we must adjust levels. + * Since the parameter is being inserted into a subquery, we must + * adjust levels. */ result = copyObject(list_nth(context->args, param->paramid - 1)); IncrementVarSublevelsUp(result, context->sublevels_up, 0); diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index 5ba413bb1ad..b0358cb112e 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/pathnode.c,v 1.151 2009/03/26 17:15:35 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/pathnode.c,v 1.152 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -797,7 +797,7 @@ create_unique_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath, in_operators = NIL; uniq_exprs = NIL; all_btree = true; - all_hash = enable_hashagg; /* don't consider hash if not enabled */ + all_hash = enable_hashagg; /* don't consider hash if not enabled */ foreach(lc, sjinfo->join_quals) { OpExpr *op = (OpExpr *) lfirst(lc); @@ -904,8 +904,8 @@ create_unique_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath, goto no_unique_path; /* - * If we get here, we can unique-ify using at least one of sorting - * and hashing. Start building the result Path object. + * If we get here, we can unique-ify using at least one of sorting and + * hashing. Start building the result Path object. */ pathnode = makeNode(UniquePath); @@ -972,8 +972,8 @@ create_unique_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath, -1.0); /* - * Charge one cpu_operator_cost per comparison per input tuple. - * We assume all columns get compared at most of the tuples. (XXX + * Charge one cpu_operator_cost per comparison per input tuple. We + * assume all columns get compared at most of the tuples. (XXX * probably this is an overestimate.) This should agree with * make_unique. */ @@ -1030,7 +1030,7 @@ create_unique_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath, return pathnode; -no_unique_path: /* failure exit */ +no_unique_path: /* failure exit */ /* Mark the SpecialJoinInfo as not unique-able */ sjinfo->join_quals = NIL; @@ -1404,27 +1404,27 @@ create_mergejoin_path(PlannerInfo *root, * selected as the input of a mergejoin, and they don't support * mark/restore at present. * - * Note: Sort supports mark/restore, so no materialize is really needed - * in that case; but one may be desirable anyway to optimize the sort. - * However, since we aren't representing the sort step separately in - * the Path tree, we can't explicitly represent the materialize either. - * So that case is not handled here. Instead, cost_mergejoin has to - * factor in the cost and create_mergejoin_plan has to add the plan node. + * Note: Sort supports mark/restore, so no materialize is really needed in + * that case; but one may be desirable anyway to optimize the sort. + * However, since we aren't representing the sort step separately in the + * Path tree, we can't explicitly represent the materialize either. So + * that case is not handled here. Instead, cost_mergejoin has to factor + * in the cost and create_mergejoin_plan has to add the plan node. */ if (innersortkeys == NIL && !ExecSupportsMarkRestore(inner_path->pathtype)) { - Path *mpath; + Path *mpath; mpath = (Path *) create_material_path(inner_path->parent, inner_path); /* - * We expect the materialize won't spill to disk (it could only do - * so if there were a whole lot of duplicate tuples, which is a case - * cost_mergejoin will avoid choosing anyway). Therefore - * cost_material's cost estimate is bogus and we should charge - * just cpu_tuple_cost per tuple. (Keep this estimate in sync with - * similar ones in cost_mergejoin and create_mergejoin_plan.) + * We expect the materialize won't spill to disk (it could only do so + * if there were a whole lot of duplicate tuples, which is a case + * cost_mergejoin will avoid choosing anyway). Therefore + * cost_material's cost estimate is bogus and we should charge just + * cpu_tuple_cost per tuple. (Keep this estimate in sync with similar + * ones in cost_mergejoin and create_mergejoin_plan.) */ mpath->startup_cost = inner_path->startup_cost; mpath->total_cost = inner_path->total_cost; @@ -1480,16 +1480,17 @@ create_hashjoin_path(PlannerInfo *root, pathnode->jpath.outerjoinpath = outer_path; pathnode->jpath.innerjoinpath = inner_path; pathnode->jpath.joinrestrictinfo = restrict_clauses; + /* * A hashjoin never has pathkeys, since its output ordering is - * unpredictable due to possible batching. XXX If the inner relation is + * unpredictable due to possible batching. XXX If the inner relation is * small enough, we could instruct the executor that it must not batch, * and then we could assume that the output inherits the outer relation's - * ordering, which might save a sort step. However there is considerable - * downside if our estimate of the inner relation size is badly off. - * For the moment we don't risk it. (Note also that if we wanted to take - * this seriously, joinpath.c would have to consider many more paths for - * the outer rel than it does now.) + * ordering, which might save a sort step. However there is considerable + * downside if our estimate of the inner relation size is badly off. For + * the moment we don't risk it. (Note also that if we wanted to take this + * seriously, joinpath.c would have to consider many more paths for the + * outer rel than it does now.) */ pathnode->jpath.path.pathkeys = NIL; pathnode->path_hashclauses = hashclauses; diff --git a/src/backend/optimizer/util/placeholder.c b/src/backend/optimizer/util/placeholder.c index 019352158d2..b06c48c1e46 100644 --- a/src/backend/optimizer/util/placeholder.c +++ b/src/backend/optimizer/util/placeholder.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/placeholder.c,v 1.4 2009/04/19 19:46:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/placeholder.c,v 1.5 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -72,7 +72,7 @@ find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv) phinfo->ph_var = copyObject(phv); phinfo->ph_eval_at = pull_varnos((Node *) phv); /* ph_eval_at may change later, see fix_placeholder_eval_levels */ - phinfo->ph_needed = NULL; /* initially it's unused */ + phinfo->ph_needed = NULL; /* initially it's unused */ /* for the moment, estimate width using just the datatype info */ phinfo->ph_width = get_typavgwidth(exprType((Node *) phv->phexpr), exprTypmod((Node *) phv->phexpr)); @@ -88,7 +88,7 @@ find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv) * * The initial eval_at level set by find_placeholder_info was the set of * rels used in the placeholder's expression (or the whole subselect if - * the expr is variable-free). If the subselect contains any outer joins + * the expr is variable-free). If the subselect contains any outer joins * that can null any of those rels, we must delay evaluation to above those * joins. * @@ -153,11 +153,11 @@ fix_placeholder_eval_levels(PlannerInfo *root) /* * Now that we know where to evaluate the placeholder, make sure that * any vars or placeholders it uses will be available at that join - * level. NOTE: this could cause more PlaceHolderInfos to be added - * to placeholder_list. That is okay because we'll process them - * before falling out of the foreach loop. Also, it could cause - * the ph_needed sets of existing list entries to expand, which - * is also okay because this loop doesn't examine those. + * level. NOTE: this could cause more PlaceHolderInfos to be added to + * placeholder_list. That is okay because we'll process them before + * falling out of the foreach loop. Also, it could cause the + * ph_needed sets of existing list entries to expand, which is also + * okay because this loop doesn't examine those. */ if (bms_membership(eval_at) == BMS_MULTIPLE) { @@ -173,7 +173,7 @@ fix_placeholder_eval_levels(PlannerInfo *root) * Now, if any placeholder can be computed at a base rel and is needed * above it, add it to that rel's targetlist. (This is essentially the * same logic as in add_placeholders_to_joinrel, but we can't do that part - * until joinrels are formed.) We have to do this as a separate step + * until joinrels are formed.) We have to do this as a separate step * because the ph_needed values aren't stable until the previous loop * finishes. */ diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 0479e93ec82..4f07cade68b 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.157 2009/05/12 00:56:05 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.158 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -525,7 +525,7 @@ get_relation_constraints(PlannerInfo *root, /* Add NOT NULL constraints in expression form, if requested */ if (include_notnull && constr->has_not_null) { - int natts = relation->rd_att->natts; + int natts = relation->rd_att->natts; for (i = 1; i <= natts; i++) { @@ -533,7 +533,7 @@ get_relation_constraints(PlannerInfo *root, if (att->attnotnull && !att->attisdropped) { - NullTest *ntest = makeNode(NullTest); + NullTest *ntest = makeNode(NullTest); ntest->arg = (Expr *) makeVar(varno, i, @@ -604,7 +604,7 @@ relation_excluded_by_constraints(PlannerInfo *root, return false; /* - * OK to fetch the constraint expressions. Include "col IS NOT NULL" + * OK to fetch the constraint expressions. Include "col IS NOT NULL" * expressions for attnotnull columns, in case we can refute those. */ constraint_pred = get_relation_constraints(root, rte->relid, rel, true); @@ -865,10 +865,10 @@ has_unique_index(RelOptInfo *rel, AttrNumber attno) /* * Note: ignore partial indexes, since they don't allow us to conclude * that all attr values are distinct, *unless* they are marked predOK - * which means we know the index's predicate is satisfied by the query. - * We don't take any interest in expressional indexes either. Also, a - * multicolumn unique index doesn't allow us to conclude that just the - * specified attr is unique. + * which means we know the index's predicate is satisfied by the + * query. We don't take any interest in expressional indexes either. + * Also, a multicolumn unique index doesn't allow us to conclude that + * just the specified attr is unique. */ if (index->unique && index->ncolumns == 1 && diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c index 3249b2726ee..2b9f7727d82 100644 --- a/src/backend/optimizer/util/predtest.c +++ b/src/backend/optimizer/util/predtest.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/predtest.c,v 1.26 2009/05/11 17:56:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/predtest.c,v 1.27 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -98,7 +98,7 @@ static Node *extract_not_arg(Node *clause); static bool list_member_strip(List *list, Expr *datum); static bool btree_predicate_proof(Expr *predicate, Node *clause, bool refute_it); -static Oid get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it); +static Oid get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it); static void InvalidateOprProofCacheCallBack(Datum arg, int cacheid, ItemPointer tuplePtr); @@ -134,7 +134,7 @@ predicate_implied_by(List *predicate_list, List *restrictinfo_list) /* * If either input is a single-element list, replace it with its lone - * member; this avoids one useless level of AND-recursion. We only need + * member; this avoids one useless level of AND-recursion. We only need * to worry about this at top level, since eval_const_expressions should * have gotten rid of any trivial ANDs or ORs below that. */ @@ -192,7 +192,7 @@ predicate_refuted_by(List *predicate_list, List *restrictinfo_list) /* * If either input is a single-element list, replace it with its lone - * member; this avoids one useless level of AND-recursion. We only need + * member; this avoids one useless level of AND-recursion. We only need * to worry about this at top level, since eval_const_expressions should * have gotten rid of any trivial ANDs or ORs below that. */ @@ -652,13 +652,14 @@ predicate_refuted_by_recurse(Node *clause, Node *predicate) case CLASS_ATOM: #ifdef NOT_USED + /* * If A is a NOT-clause, A R=> B if B => A's arg * * Unfortunately not: this would only prove that B is not-TRUE, * not that it's not NULL either. Keep this code as a comment - * because it would be useful if we ever had a need for the - * weak form of refutation. + * because it would be useful if we ever had a need for the weak + * form of refutation. */ not_arg = extract_not_arg(clause); if (not_arg && @@ -738,7 +739,7 @@ predicate_refuted_by_recurse(Node *clause, Node *predicate) * This function also implements enforcement of MAX_SAOP_ARRAY_SIZE: if a * ScalarArrayOpExpr's array has too many elements, we just classify it as an * atom. (This will result in its being passed as-is to the simple_clause - * functions, which will fail to prove anything about it.) Note that we + * functions, which will fail to prove anything about it.) Note that we * cannot just stop after considering MAX_SAOP_ARRAY_SIZE elements; in general * that would result in wrong proofs, rather than failing to prove anything. */ @@ -1484,8 +1485,8 @@ typedef struct OprProofCacheEntry bool have_implic; /* do we know the implication result? */ bool have_refute; /* do we know the refutation result? */ - Oid implic_test_op; /* OID of the operator, or 0 if none */ - Oid refute_test_op; /* OID of the operator, or 0 if none */ + Oid implic_test_op; /* OID of the operator, or 0 if none */ + Oid refute_test_op; /* OID of the operator, or 0 if none */ } OprProofCacheEntry; static HTAB *OprProofCacheHash = NULL; diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index 2d289cae713..4ca3eeaaf28 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.93 2009/01/01 17:23:45 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.94 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -430,8 +430,8 @@ build_joinrel_tlist(PlannerInfo *root, RelOptInfo *joinrel, int ndx; /* - * Ignore PlaceHolderVars in the input tlists; we'll make our - * own decisions about whether to copy them. + * Ignore PlaceHolderVars in the input tlists; we'll make our own + * decisions about whether to copy them. */ if (IsA(origvar, PlaceHolderVar)) continue; diff --git a/src/backend/optimizer/util/restrictinfo.c b/src/backend/optimizer/util/restrictinfo.c index 5b75d2de3bd..47086a4bfca 100644 --- a/src/backend/optimizer/util/restrictinfo.c +++ b/src/backend/optimizer/util/restrictinfo.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/restrictinfo.c,v 1.59 2009/05/09 22:51:41 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/restrictinfo.c,v 1.60 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -593,9 +593,9 @@ select_nonredundant_join_clauses(PlannerInfo *root, * OK because we're only trying to prove we can dispense with some * join quals; failing to prove that doesn't result in an incorrect * plan. It's quite unlikely that a join qual could be proven - * redundant by an index predicate anyway. (Also, if we did manage - * to prove it, we'd have to have a special case for update targets; - * see notes about EvalPlanQual testing in create_indexscan_plan().) + * redundant by an index predicate anyway. (Also, if we did manage to + * prove it, we'd have to have a special case for update targets; see + * notes about EvalPlanQual testing in create_indexscan_plan().) */ BitmapHeapPath *innerpath = (BitmapHeapPath *) inner_path; @@ -614,10 +614,10 @@ select_nonredundant_join_clauses(PlannerInfo *root, } /* - * XXX the inner path of a nestloop could also be an append relation - * whose elements use join quals. However, they might each use different - * quals; we could only remove join quals that are enforced by all the - * appendrel members. For the moment we don't bother to try. + * XXX the inner path of a nestloop could also be an append relation whose + * elements use join quals. However, they might each use different quals; + * we could only remove join quals that are enforced by all the appendrel + * members. For the moment we don't bother to try. */ return restrictinfo_list; diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index cd88c337f1a..deb9ef8ebd1 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/var.c,v 1.85 2009/04/19 19:46:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/var.c,v 1.86 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -71,9 +71,9 @@ static bool pull_varattnos_walker(Node *node, Bitmapset **varattnos); static bool contain_var_clause_walker(Node *node, void *context); static bool contain_vars_of_level_walker(Node *node, int *sublevels_up); static bool locate_var_of_level_walker(Node *node, - locate_var_of_level_context *context); + locate_var_of_level_context *context); static bool locate_var_of_relation_walker(Node *node, - locate_var_of_relation_context *context); + locate_var_of_relation_context *context); static bool find_minimum_var_level_walker(Node *node, find_minimum_var_level_context *context); static bool pull_var_clause_walker(Node *node, @@ -318,7 +318,7 @@ contain_vars_of_level_walker(Node *node, int *sublevels_up) * Find the parse location of any Var of the specified query level. * * Returns -1 if no such Var is in the querytree, or if they all have - * unknown parse location. (The former case is probably caller error, + * unknown parse location. (The former case is probably caller error, * but we don't bother to distinguish it from the latter case.) * * Will recurse into sublinks. Also, may be invoked directly on a Query. @@ -333,7 +333,7 @@ locate_var_of_level(Node *node, int levelsup) { locate_var_of_level_context context; - context.var_location = -1; /* in case we find nothing */ + context.var_location = -1; /* in case we find nothing */ context.sublevels_up = levelsup; (void) query_or_expression_tree_walker(node, @@ -352,7 +352,7 @@ locate_var_of_level_walker(Node *node, return false; if (IsA(node, Var)) { - Var *var = (Var *) node; + Var *var = (Var *) node; if (var->varlevelsup == context->sublevels_up && var->location >= 0) @@ -401,7 +401,7 @@ locate_var_of_relation(Node *node, int relid, int levelsup) { locate_var_of_relation_context context; - context.var_location = -1; /* in case we find nothing */ + context.var_location = -1; /* in case we find nothing */ context.relid = relid; context.sublevels_up = levelsup; @@ -421,7 +421,7 @@ locate_var_of_relation_walker(Node *node, return false; if (IsA(node, Var)) { - Var *var = (Var *) node; + Var *var = (Var *) node; if (var->varno == context->relid && var->varlevelsup == context->sublevels_up && @@ -625,7 +625,7 @@ find_minimum_var_level_walker(Node *node, * Upper-level vars (with varlevelsup > 0) are not included. * (These probably represent errors too, but we don't complain.) * - * Returns list of nodes found. Note the nodes themselves are not + * Returns list of nodes found. Note the nodes themselves are not * copied, only referenced. * * Does not examine subqueries, therefore must only be used after reduction diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 397e951c71b..97c560b3095 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -17,7 +17,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.388 2009/01/22 20:16:04 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.389 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -50,7 +50,7 @@ static Query *transformSelectStmt(ParseState *pstate, SelectStmt *stmt); static Query *transformValuesClause(ParseState *pstate, SelectStmt *stmt); static Query *transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt); static Node *transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, - List **colInfo); + List **colInfo); static void applyColumnNames(List *dst, List *src); static Query *transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt); static List *transformReturningList(ParseState *pstate, List *returningList); @@ -59,7 +59,7 @@ static Query *transformDeclareCursorStmt(ParseState *pstate, static Query *transformExplainStmt(ParseState *pstate, ExplainStmt *stmt); static void transformLockingClause(ParseState *pstate, - Query *qry, LockingClause *lc); + Query *qry, LockingClause *lc); static bool check_parameter_resolution_walker(Node *node, ParseState *pstate); @@ -81,7 +81,7 @@ parse_analyze(Node *parseTree, const char *sourceText, ParseState *pstate = make_parsestate(NULL); Query *query; - Assert(sourceText != NULL); /* required as of 8.4 */ + Assert(sourceText != NULL); /* required as of 8.4 */ pstate->p_sourcetext = sourceText; pstate->p_paramtypes = paramTypes; @@ -109,7 +109,7 @@ parse_analyze_varparams(Node *parseTree, const char *sourceText, ParseState *pstate = make_parsestate(NULL); Query *query; - Assert(sourceText != NULL); /* required as of 8.4 */ + Assert(sourceText != NULL); /* required as of 8.4 */ pstate->p_sourcetext = sourceText; pstate->p_paramtypes = *paramTypes; @@ -255,6 +255,7 @@ analyze_requires_snapshot(Node *parseTree) break; case T_ExplainStmt: + /* * We only need a snapshot in varparams case, but it doesn't seem * worth complicating this function's API to distinguish that. @@ -423,7 +424,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) * bugs of just that nature...) */ sub_pstate->p_rtable = sub_rtable; - sub_pstate->p_joinexprs = NIL; /* sub_rtable has no joins */ + sub_pstate->p_joinexprs = NIL; /* sub_rtable has no joins */ sub_pstate->p_relnamespace = sub_relnamespace; sub_pstate->p_varnamespace = sub_varnamespace; @@ -441,7 +442,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("INSERT ... SELECT cannot specify INTO"), parser_errposition(pstate, - exprLocation((Node *) selectQuery->intoClause)))); + exprLocation((Node *) selectQuery->intoClause)))); /* * Make the source be a subquery in the INSERT's rangetable, and add @@ -485,11 +486,12 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) expr = tle->expr; else { - Var *var = makeVar(rtr->rtindex, - tle->resno, - exprType((Node *) tle->expr), - exprTypmod((Node *) tle->expr), - 0); + Var *var = makeVar(rtr->rtindex, + tle->resno, + exprType((Node *) tle->expr), + exprTypmod((Node *) tle->expr), + 0); + var->location = exprLocation((Node *) tle->expr); expr = (Expr *) var; } @@ -563,7 +565,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("VALUES must not contain table references"), parser_errposition(pstate, - locate_var_of_level((Node *) exprsLists, 0)))); + locate_var_of_level((Node *) exprsLists, 0)))); /* * Another thing we can't currently support is NEW/OLD references in @@ -578,7 +580,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) errmsg("VALUES must not contain OLD or NEW references"), errhint("Use SELECT ... UNION ALL ... instead."), parser_errposition(pstate, - locate_var_of_level((Node *) exprsLists, 0)))); + locate_var_of_level((Node *) exprsLists, 0)))); /* * Generate the VALUES RTE @@ -655,7 +657,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) qry->targetList = lappend(qry->targetList, tle); rte->modifiedCols = bms_add_member(rte->modifiedCols, - attr_num - FirstLowInvalidHeapAttributeNumber); + attr_num - FirstLowInvalidHeapAttributeNumber); icols = lnext(icols); attnos = lnext(attnos); @@ -727,7 +729,7 @@ transformInsertRow(ParseState *pstate, List *exprlist, errmsg("INSERT has more expressions than target columns"), parser_errposition(pstate, exprLocation(list_nth(exprlist, - list_length(icolumns)))))); + list_length(icolumns)))))); if (stmtcols != NIL && list_length(exprlist) < list_length(icolumns)) ereport(ERROR, @@ -735,7 +737,7 @@ transformInsertRow(ParseState *pstate, List *exprlist, errmsg("INSERT has more target columns than expressions"), parser_errposition(pstate, exprLocation(list_nth(icolumns, - list_length(exprlist)))))); + list_length(exprlist)))))); /* * Prepare columns for assignment to target table. @@ -816,9 +818,9 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt) /* * Transform sorting/grouping stuff. Do ORDER BY first because both - * transformGroupClause and transformDistinctClause need the results. - * Note that these functions can also change the targetList, so it's - * passed to them by reference. + * transformGroupClause and transformDistinctClause need the results. Note + * that these functions can also change the targetList, so it's passed to + * them by reference. */ qry->sortClause = transformSortClause(pstate, stmt->sortClause, @@ -1068,7 +1070,7 @@ transformValuesClause(ParseState *pstate, SelectStmt *stmt) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("VALUES must not contain table references"), parser_errposition(pstate, - locate_var_of_level((Node *) newExprsLists, 0)))); + locate_var_of_level((Node *) newExprsLists, 0)))); /* * Another thing we can't currently support is NEW/OLD references in rules @@ -1083,7 +1085,7 @@ transformValuesClause(ParseState *pstate, SelectStmt *stmt) errmsg("VALUES must not contain OLD or NEW references"), errhint("Use SELECT ... UNION ALL ... instead."), parser_errposition(pstate, - locate_var_of_level((Node *) newExprsLists, 0)))); + locate_var_of_level((Node *) newExprsLists, 0)))); qry->rtable = pstate->p_rtable; qry->jointree = makeFromExpr(pstate->p_joinlist, NULL); @@ -1095,13 +1097,13 @@ transformValuesClause(ParseState *pstate, SelectStmt *stmt) (errcode(ERRCODE_GROUPING_ERROR), errmsg("cannot use aggregate function in VALUES"), parser_errposition(pstate, - locate_agg_of_level((Node *) newExprsLists, 0)))); + locate_agg_of_level((Node *) newExprsLists, 0)))); if (pstate->p_hasWindowFuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("cannot use window function in VALUES"), parser_errposition(pstate, - locate_windowfunc((Node *) newExprsLists)))); + locate_windowfunc((Node *) newExprsLists)))); return qry; } @@ -1302,7 +1304,7 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) errdetail("Only result column names can be used, not expressions or functions."), errhint("Add the expression/function to every SELECT, or move the UNION into a FROM clause."), parser_errposition(pstate, - exprLocation(list_nth(qry->targetList, tllen))))); + exprLocation(list_nth(qry->targetList, tllen))))); qry->limitOffset = transformLimitClause(pstate, limitOffset, "OFFSET"); @@ -1368,7 +1370,7 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT"), parser_errposition(pstate, - exprLocation((Node *) stmt->intoClause)))); + exprLocation((Node *) stmt->intoClause)))); /* We don't support FOR UPDATE/SHARE with set ops at the moment. */ if (stmt->lockingClause) @@ -1428,7 +1430,7 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, (errcode(ERRCODE_INVALID_COLUMN_REFERENCE), errmsg("UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level"), parser_errposition(pstate, - locate_var_of_level((Node *) selectQuery, 1)))); + locate_var_of_level((Node *) selectQuery, 1)))); } /* @@ -1790,8 +1792,8 @@ transformReturningList(ParseState *pstate, List *returningList) /* no new relation references please */ if (list_length(pstate->p_rtable) != length_rtable) { - int vlocation = -1; - int relid; + int vlocation = -1; + int relid; /* try to locate such a reference to point to */ for (relid = length_rtable + 1; relid <= list_length(pstate->p_rtable); relid++) @@ -1802,7 +1804,7 @@ transformReturningList(ParseState *pstate, List *returningList) } ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("RETURNING cannot contain references to other relations"), + errmsg("RETURNING cannot contain references to other relations"), parser_errposition(pstate, vlocation))); } @@ -1857,7 +1859,7 @@ transformDeclareCursorStmt(ParseState *pstate, DeclareCursorStmt *stmt) (errcode(ERRCODE_INVALID_CURSOR_DEFINITION), errmsg("DECLARE CURSOR cannot specify INTO"), parser_errposition(pstate, - exprLocation((Node *) result->intoClause)))); + exprLocation((Node *) result->intoClause)))); /* FOR UPDATE and WITH HOLD are not compatible */ if (result->rowMarks != NIL && (stmt->options & CURSOR_OPT_HOLD)) @@ -2006,10 +2008,10 @@ transformLockingClause(ParseState *pstate, Query *qry, LockingClause *lc) { /* * We allow FOR UPDATE/SHARE of a WITH query to be - * propagated into the WITH, but it doesn't seem - * very sane to allow this for a reference to an - * outer-level WITH. And it definitely wouldn't - * work for a self-reference, since we're not done + * propagated into the WITH, but it doesn't seem very + * sane to allow this for a reference to an + * outer-level WITH. And it definitely wouldn't work + * for a self-reference, since we're not done * analyzing the CTE anyway. */ CommonTableExpr *cte; @@ -2073,25 +2075,25 @@ transformLockingClause(ParseState *pstate, Query *qry, LockingClause *lc) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("SELECT FOR UPDATE/SHARE cannot be applied to a join"), - parser_errposition(pstate, thisrel->location))); + parser_errposition(pstate, thisrel->location))); break; case RTE_SPECIAL: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD"), - parser_errposition(pstate, thisrel->location))); + parser_errposition(pstate, thisrel->location))); break; case RTE_FUNCTION: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("SELECT FOR UPDATE/SHARE cannot be applied to a function"), - parser_errposition(pstate, thisrel->location))); + parser_errposition(pstate, thisrel->location))); break; case RTE_VALUES: ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("SELECT FOR UPDATE/SHARE cannot be applied to VALUES"), - parser_errposition(pstate, thisrel->location))); + parser_errposition(pstate, thisrel->location))); break; case RTE_CTE: { @@ -2108,14 +2110,14 @@ transformLockingClause(ParseState *pstate, Query *qry, LockingClause *lc) if (rte->ctelevelsup > 0 || rte->self_reference) ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("SELECT FOR UPDATE/SHARE cannot be applied to an outer-level WITH query"), - parser_errposition(pstate, thisrel->location))); + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("SELECT FOR UPDATE/SHARE cannot be applied to an outer-level WITH query"), + parser_errposition(pstate, thisrel->location))); cte = GetCTEForRTE(pstate, rte, -1); /* should be analyzed by now */ Assert(IsA(cte->ctequery, Query)); transformLockingClause(pstate, - (Query *) cte->ctequery, + (Query *) cte->ctequery, allrels); } break; diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index dea9c546931..05943969215 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_agg.c,v 1.87 2009/01/01 17:23:45 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_agg.c,v 1.88 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -73,7 +73,7 @@ transformAggregateCall(ParseState *pstate, Aggref *agg) (errcode(ERRCODE_GROUPING_ERROR), errmsg("aggregate function calls cannot be nested"), parser_errposition(pstate, - locate_agg_of_level((Node *) agg->args, 0)))); + locate_agg_of_level((Node *) agg->args, 0)))); } /* It can't contain window functions either */ @@ -111,8 +111,8 @@ transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, WindowDef *windef) { /* - * A window function call can't contain another one (but aggs are OK). - * XXX is this required by spec, or just an unimplemented feature? + * A window function call can't contain another one (but aggs are OK). XXX + * is this required by spec, or just an unimplemented feature? */ if (pstate->p_hasWindowFuncs && checkExprHasWindowFuncs((Node *) wfunc->args)) @@ -120,13 +120,13 @@ transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("window function calls cannot be nested"), parser_errposition(pstate, - locate_windowfunc((Node *) wfunc->args)))); + locate_windowfunc((Node *) wfunc->args)))); /* - * If the OVER clause just specifies a window name, find that - * WINDOW clause (which had better be present). Otherwise, try to - * match all the properties of the OVER clause, and make a new entry - * in the p_windowdefs list if no luck. + * If the OVER clause just specifies a window name, find that WINDOW + * clause (which had better be present). Otherwise, try to match all the + * properties of the OVER clause, and make a new entry in the p_windowdefs + * list if no luck. */ if (windef->name) { @@ -140,7 +140,7 @@ transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, foreach(lc, pstate->p_windowdefs) { - WindowDef *refwin = (WindowDef *) lfirst(lc); + WindowDef *refwin = (WindowDef *) lfirst(lc); winref++; if (refwin->name && strcmp(refwin->name, windef->name) == 0) @@ -162,14 +162,14 @@ transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, foreach(lc, pstate->p_windowdefs) { - WindowDef *refwin = (WindowDef *) lfirst(lc); + WindowDef *refwin = (WindowDef *) lfirst(lc); winref++; if (refwin->refname && windef->refname && strcmp(refwin->refname, windef->refname) == 0) - /* matched on refname */ ; + /* matched on refname */ ; else if (!refwin->refname && !windef->refname) - /* matched, no refname */ ; + /* matched, no refname */ ; else continue; if (equal(refwin->partitionClause, windef->partitionClause) && @@ -242,13 +242,13 @@ parseCheckAggregates(ParseState *pstate, Query *qry) (errcode(ERRCODE_GROUPING_ERROR), errmsg("aggregates not allowed in WHERE clause"), parser_errposition(pstate, - locate_agg_of_level(qry->jointree->quals, 0)))); + locate_agg_of_level(qry->jointree->quals, 0)))); if (checkExprHasAggs((Node *) qry->jointree->fromlist)) ereport(ERROR, (errcode(ERRCODE_GROUPING_ERROR), errmsg("aggregates not allowed in JOIN conditions"), parser_errposition(pstate, - locate_agg_of_level((Node *) qry->jointree->fromlist, 0)))); + locate_agg_of_level((Node *) qry->jointree->fromlist, 0)))); /* * No aggregates allowed in GROUP BY clauses, either. @@ -277,10 +277,9 @@ parseCheckAggregates(ParseState *pstate, Query *qry) * If there are join alias vars involved, we have to flatten them to the * underlying vars, so that aliased and unaliased vars will be correctly * taken as equal. We can skip the expense of doing this if no rangetable - * entries are RTE_JOIN kind. - * We use the planner's flatten_join_alias_vars routine to do the - * flattening; it wants a PlannerInfo root node, which fortunately can be - * mostly dummy. + * entries are RTE_JOIN kind. We use the planner's flatten_join_alias_vars + * routine to do the flattening; it wants a PlannerInfo root node, which + * fortunately can be mostly dummy. */ if (hasJoinRTEs) { @@ -315,7 +314,7 @@ parseCheckAggregates(ParseState *pstate, Query *qry) * * Note: because we check resjunk tlist elements as well as regular ones, * this will also find ungrouped variables that came from ORDER BY and - * WINDOW clauses. For that matter, it's also going to examine the + * WINDOW clauses. For that matter, it's also going to examine the * grouping expressions themselves --- but they'll all pass the test ... */ clause = (Node *) qry->targetList; @@ -346,14 +345,14 @@ parseCheckAggregates(ParseState *pstate, Query *qry) * Check for window functions where they shouldn't be. * * We have to forbid window functions in WHERE, JOIN/ON, HAVING, GROUP BY, - * and window specifications. (Other clauses, such as RETURNING and LIMIT, + * and window specifications. (Other clauses, such as RETURNING and LIMIT, * have already been checked.) Transformation of all these clauses must * be completed already. */ void parseCheckWindowFuncs(ParseState *pstate, Query *qry) { - ListCell *l; + ListCell *l; /* This should only be called if we found window functions */ Assert(pstate->p_hasWindowFuncs); @@ -363,13 +362,13 @@ parseCheckWindowFuncs(ParseState *pstate, Query *qry) (errcode(ERRCODE_WINDOWING_ERROR), errmsg("window functions not allowed in WHERE clause"), parser_errposition(pstate, - locate_windowfunc(qry->jointree->quals)))); + locate_windowfunc(qry->jointree->quals)))); if (checkExprHasWindowFuncs((Node *) qry->jointree->fromlist)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), errmsg("window functions not allowed in JOIN conditions"), parser_errposition(pstate, - locate_windowfunc((Node *) qry->jointree->fromlist)))); + locate_windowfunc((Node *) qry->jointree->fromlist)))); if (checkExprHasWindowFuncs(qry->havingQual)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), @@ -386,14 +385,14 @@ parseCheckWindowFuncs(ParseState *pstate, Query *qry) if (checkExprHasWindowFuncs(expr)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("window functions not allowed in GROUP BY clause"), + errmsg("window functions not allowed in GROUP BY clause"), parser_errposition(pstate, locate_windowfunc(expr)))); } foreach(l, qry->windowClause) { - WindowClause *wc = (WindowClause *) lfirst(l); + WindowClause *wc = (WindowClause *) lfirst(l); ListCell *l2; foreach(l2, wc->partitionClause) @@ -405,7 +404,7 @@ parseCheckWindowFuncs(ParseState *pstate, Query *qry) if (checkExprHasWindowFuncs(expr)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("window functions not allowed in window definition"), + errmsg("window functions not allowed in window definition"), parser_errposition(pstate, locate_windowfunc(expr)))); } @@ -418,7 +417,7 @@ parseCheckWindowFuncs(ParseState *pstate, Query *qry) if (checkExprHasWindowFuncs(expr)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("window functions not allowed in window definition"), + errmsg("window functions not allowed in window definition"), parser_errposition(pstate, locate_windowfunc(expr)))); } diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index 2deffa91399..8a42f5bf0a3 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_clause.c,v 1.188 2009/04/04 21:12:31 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_clause.c,v 1.189 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -42,7 +42,7 @@ #define DISTINCT_ON_CLAUSE 2 #define PARTITION_CLAUSE 3 -static const char * const clauseText[] = { +static const char *const clauseText[] = { "ORDER BY", "GROUP BY", "DISTINCT ON", @@ -75,8 +75,8 @@ static Node *buildMergedJoinVar(ParseState *pstate, JoinType jointype, Var *l_colvar, Var *r_colvar); static TargetEntry *findTargetlistEntry(ParseState *pstate, Node *node, List **tlist, int clause); -static int get_matching_location(int sortgroupref, - List *sortgrouprefs, List *exprs); +static int get_matching_location(int sortgroupref, + List *sortgrouprefs, List *exprs); static List *addTargetToSortList(ParseState *pstate, TargetEntry *tle, List *sortlist, List *targetlist, SortBy *sortby, bool resolveUnknown); @@ -414,7 +414,7 @@ transformJoinOnClause(ParseState *pstate, JoinExpr *j, errmsg("JOIN/ON clause refers to \"%s\", which is not part of JOIN", rt_fetch(varno, pstate->p_rtable)->eref->aliasname), parser_errposition(pstate, - locate_var_of_relation(result, varno, 0)))); + locate_var_of_relation(result, varno, 0)))); } bms_free(clause_varnos); @@ -493,7 +493,7 @@ transformRangeSubselect(ParseState *pstate, RangeSubselect *r) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in FROM cannot have SELECT INTO"), parser_errposition(pstate, - exprLocation((Node *) query->intoClause)))); + exprLocation((Node *) query->intoClause)))); /* * The subquery cannot make use of any variables from FROM items created @@ -515,7 +515,7 @@ transformRangeSubselect(ParseState *pstate, RangeSubselect *r) (errcode(ERRCODE_INVALID_COLUMN_REFERENCE), errmsg("subquery in FROM cannot refer to other relations of same query level"), parser_errposition(pstate, - locate_var_of_level((Node *) query, 1)))); + locate_var_of_level((Node *) query, 1)))); } /* @@ -584,7 +584,7 @@ transformRangeFunction(ParseState *pstate, RangeFunction *r) checkExprHasWindowFuncs(funcexpr)) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot use window function in function expression in FROM"), + errmsg("cannot use window function in function expression in FROM"), parser_errposition(pstate, locate_windowfunc(funcexpr)))); @@ -649,7 +649,7 @@ transformFromClauseItem(ParseState *pstate, Node *n, if (IsA(n, RangeVar)) { /* Plain relation reference, or perhaps a CTE reference */ - RangeVar *rv = (RangeVar *) n; + RangeVar *rv = (RangeVar *) n; RangeTblRef *rtr; RangeTblEntry *rte = NULL; int rtindex; @@ -658,7 +658,7 @@ transformFromClauseItem(ParseState *pstate, Node *n, if (!rv->schemaname) { CommonTableExpr *cte; - Index levelsup; + Index levelsup; cte = scanNameSpaceForCTE(pstate, rv->relname, &levelsup); if (cte) @@ -1432,11 +1432,11 @@ transformGroupClause(ParseState *pstate, List *grouplist, * info from the (first) matching ORDER BY item. This means that if * you write something like "GROUP BY foo ORDER BY foo USING <<<", the * GROUP BY operation silently takes on the equality semantics implied - * by the ORDER BY. There are two reasons to do this: it improves - * the odds that we can implement both GROUP BY and ORDER BY with a - * single sort step, and it allows the user to choose the equality - * semantics used by GROUP BY, should she be working with a datatype - * that has more than one equality operator. + * by the ORDER BY. There are two reasons to do this: it improves the + * odds that we can implement both GROUP BY and ORDER BY with a single + * sort step, and it allows the user to choose the equality semantics + * used by GROUP BY, should she be working with a datatype that has + * more than one equality operator. */ if (tle->ressortgroupref > 0) { @@ -1456,8 +1456,8 @@ transformGroupClause(ParseState *pstate, List *grouplist, } /* - * If no match in ORDER BY, just add it to the result using - * default sort/group semantics. + * If no match in ORDER BY, just add it to the result using default + * sort/group semantics. */ if (!found) result = addTargetToGroupList(pstate, tle, @@ -1516,10 +1516,10 @@ transformWindowDefinitions(ParseState *pstate, foreach(lc, windowdefs) { - WindowDef *windef = (WindowDef *) lfirst(lc); + WindowDef *windef = (WindowDef *) lfirst(lc); WindowClause *refwc = NULL; - List *partitionClause; - List *orderClause; + List *partitionClause; + List *orderClause; WindowClause *wc; winref++; @@ -1550,8 +1550,8 @@ transformWindowDefinitions(ParseState *pstate, /* * Transform PARTITION and ORDER specs, if any. These are treated - * exactly like top-level GROUP BY and ORDER BY clauses, including - * the special handling of nondefault operator semantics. + * exactly like top-level GROUP BY and ORDER BY clauses, including the + * special handling of nondefault operator semantics. */ orderClause = transformSortClause(pstate, windef->orderClause, @@ -1573,19 +1573,19 @@ transformWindowDefinitions(ParseState *pstate, /* * Per spec, a windowdef that references a previous one copies the * previous partition clause (and mustn't specify its own). It can - * specify its own ordering clause. but only if the previous one - * had none. It always specifies its own frame clause, and the - * previous one must not have a frame clause. (Yeah, it's bizarre - * that each of these cases works differently, but SQL:2008 says so; - * see 7.11 <window clause> syntax rule 10 and general rule 1.) + * specify its own ordering clause. but only if the previous one had + * none. It always specifies its own frame clause, and the previous + * one must not have a frame clause. (Yeah, it's bizarre that each of + * these cases works differently, but SQL:2008 says so; see 7.11 + * <window clause> syntax rule 10 and general rule 1.) */ if (refwc) { if (partitionClause) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot override PARTITION BY clause of window \"%s\"", - windef->refname), + errmsg("cannot override PARTITION BY clause of window \"%s\"", + windef->refname), parser_errposition(pstate, windef->location))); wc->partitionClause = copyObject(refwc->partitionClause); } @@ -1596,8 +1596,8 @@ transformWindowDefinitions(ParseState *pstate, if (orderClause && refwc->orderClause) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot override ORDER BY clause of window \"%s\"", - windef->refname), + errmsg("cannot override ORDER BY clause of window \"%s\"", + windef->refname), parser_errposition(pstate, windef->location))); if (orderClause) { @@ -1652,19 +1652,19 @@ transformDistinctClause(ParseState *pstate, ListCell *tlitem; /* - * The distinctClause should consist of all ORDER BY items followed - * by all other non-resjunk targetlist items. There must not be any - * resjunk ORDER BY items --- that would imply that we are sorting - * by a value that isn't necessarily unique within a DISTINCT group, - * so the results wouldn't be well-defined. This construction - * ensures we follow the rule that sortClause and distinctClause match; - * in fact the sortClause will always be a prefix of distinctClause. + * The distinctClause should consist of all ORDER BY items followed by all + * other non-resjunk targetlist items. There must not be any resjunk + * ORDER BY items --- that would imply that we are sorting by a value that + * isn't necessarily unique within a DISTINCT group, so the results + * wouldn't be well-defined. This construction ensures we follow the rule + * that sortClause and distinctClause match; in fact the sortClause will + * always be a prefix of distinctClause. * - * Note a corner case: the same TLE could be in the ORDER BY list - * multiple times with different sortops. We have to include it in - * the distinctClause the same way to preserve the prefix property. - * The net effect will be that the TLE value will be made unique - * according to both sortops. + * Note a corner case: the same TLE could be in the ORDER BY list multiple + * times with different sortops. We have to include it in the + * distinctClause the same way to preserve the prefix property. The net + * effect will be that the TLE value will be made unique according to both + * sortops. */ foreach(slitem, sortClause) { @@ -1681,8 +1681,8 @@ transformDistinctClause(ParseState *pstate, } /* - * Now add any remaining non-resjunk tlist items, using default - * sort/group semantics for their data types. + * Now add any remaining non-resjunk tlist items, using default sort/group + * semantics for their data types. */ foreach(tlitem, *targetlist) { @@ -1724,11 +1724,11 @@ transformDistinctOnClause(ParseState *pstate, List *distinctlist, /* * Add all the DISTINCT ON expressions to the tlist (if not already - * present, they are added as resjunk items). Assign sortgroupref - * numbers to them, and make a list of these numbers. (NB: we rely - * below on the sortgrouprefs list being one-for-one with the original - * distinctlist. Also notice that we could have duplicate DISTINCT ON - * expressions and hence duplicate entries in sortgrouprefs.) + * present, they are added as resjunk items). Assign sortgroupref numbers + * to them, and make a list of these numbers. (NB: we rely below on the + * sortgrouprefs list being one-for-one with the original distinctlist. + * Also notice that we could have duplicate DISTINCT ON expressions and + * hence duplicate entries in sortgrouprefs.) */ foreach(lc, distinctlist) { @@ -1743,12 +1743,12 @@ transformDistinctOnClause(ParseState *pstate, List *distinctlist, } /* - * If the user writes both DISTINCT ON and ORDER BY, adopt the - * sorting semantics from ORDER BY items that match DISTINCT ON - * items, and also adopt their column sort order. We insist that - * the distinctClause and sortClause match, so throw error if we - * find the need to add any more distinctClause items after we've - * skipped an ORDER BY item that wasn't in DISTINCT ON. + * If the user writes both DISTINCT ON and ORDER BY, adopt the sorting + * semantics from ORDER BY items that match DISTINCT ON items, and also + * adopt their column sort order. We insist that the distinctClause and + * sortClause match, so throw error if we find the need to add any more + * distinctClause items after we've skipped an ORDER BY item that wasn't + * in DISTINCT ON. */ skipped_sortitem = false; foreach(lc, sortClause) @@ -1762,9 +1762,9 @@ transformDistinctOnClause(ParseState *pstate, List *distinctlist, (errcode(ERRCODE_INVALID_COLUMN_REFERENCE), errmsg("SELECT DISTINCT ON expressions must match initial ORDER BY expressions"), parser_errposition(pstate, - get_matching_location(scl->tleSortGroupRef, - sortgrouprefs, - distinctlist)))); + get_matching_location(scl->tleSortGroupRef, + sortgrouprefs, + distinctlist)))); else result = lappend(result, copyObject(scl)); } @@ -1774,8 +1774,8 @@ transformDistinctOnClause(ParseState *pstate, List *distinctlist, /* * Now add any remaining DISTINCT ON items, using default sort/group - * semantics for their data types. (Note: this is pretty questionable; - * if the ORDER BY list doesn't include all the DISTINCT ON items and more + * semantics for their data types. (Note: this is pretty questionable; if + * the ORDER BY list doesn't include all the DISTINCT ON items and more * besides, you certainly aren't using DISTINCT ON in the intended way, * and you probably aren't going to get consistent results. It might be * better to throw an error or warning here. But historically we've @@ -1870,9 +1870,9 @@ addTargetToSortList(ParseState *pstate, TargetEntry *tle, * Rather than clutter the API of get_sort_group_operators and the other * functions we're about to use, make use of error context callback to * mark any error reports with a parse position. We point to the operator - * location if present, else to the expression being sorted. (NB: use - * the original untransformed expression here; the TLE entry might well - * point at a duplicate expression in the regular SELECT list.) + * location if present, else to the expression being sorted. (NB: use the + * original untransformed expression here; the TLE entry might well point + * at a duplicate expression in the regular SELECT list.) */ location = sortby->location; if (location < 0) diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c index 8513741fa45..0aec4a850e2 100644 --- a/src/backend/parser/parse_coerce.c +++ b/src/backend/parser/parse_coerce.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_coerce.c,v 2.176 2009/05/12 03:11:02 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_coerce.c,v 2.177 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -200,10 +200,10 @@ coerce_type(ParseState *pstate, Node *node, * For most types we pass typmod -1 to the input routine, because * existing input routines follow implicit-coercion semantics for * length checks, which is not always what we want here. Any length - * constraint will be applied later by our caller. An exception + * constraint will be applied later by our caller. An exception * however is the INTERVAL type, for which we *must* pass the typmod - * or it won't be able to obey the bizarre SQL-spec input rules. - * (Ugly as sin, but so is this part of the spec...) + * or it won't be able to obey the bizarre SQL-spec input rules. (Ugly + * as sin, but so is this part of the spec...) */ if (baseTypeId == INTERVALOID) inputTypeMod = baseTypeMod; @@ -226,8 +226,8 @@ coerce_type(ParseState *pstate, Node *node, newcon->location = location; /* - * Set up to point at the constant's text if the input routine - * throws an error. + * Set up to point at the constant's text if the input routine throws + * an error. */ setup_parser_errposition_callback(&pcbstate, pstate, con->location); @@ -510,9 +510,10 @@ can_coerce_type(int nargs, Oid *input_typeids, Oid *target_typeids, continue; #ifdef NOT_USED /* not implemented yet */ + /* - * If input is record[] and target is a composite array type, - * assume we can coerce (may need tighter checking here) + * If input is record[] and target is a composite array type, assume + * we can coerce (may need tighter checking here) */ if (inputTypeId == RECORDARRAYOID && is_complex_array(targetTypeId)) @@ -984,7 +985,7 @@ coerce_to_boolean(ParseState *pstate, Node *node, if (inputTypeId != BOOLOID) { - Node *newnode; + Node *newnode; newnode = coerce_to_target_type(pstate, node, inputTypeId, BOOLOID, -1, @@ -995,8 +996,8 @@ coerce_to_boolean(ParseState *pstate, Node *node, ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), /* translator: first %s is name of a SQL construct, eg WHERE */ - errmsg("argument of %s must be type boolean, not type %s", - constructName, format_type_be(inputTypeId)), + errmsg("argument of %s must be type boolean, not type %s", + constructName, format_type_be(inputTypeId)), parser_errposition(pstate, exprLocation(node)))); node = newnode; } @@ -1031,7 +1032,7 @@ coerce_to_specific_type(ParseState *pstate, Node *node, if (inputTypeId != targetTypeId) { - Node *newnode; + Node *newnode; newnode = coerce_to_target_type(pstate, node, inputTypeId, targetTypeId, -1, @@ -1104,7 +1105,7 @@ select_common_type(ParseState *pstate, List *exprs, const char *context, { Node *pexpr; Oid ptype; - TYPCATEGORY pcategory; + TYPCATEGORY pcategory; bool pispreferred; ListCell *lc; @@ -1122,8 +1123,8 @@ select_common_type(ParseState *pstate, List *exprs, const char *context, { for_each_cell(lc, lc) { - Node *nexpr = (Node *) lfirst(lc); - Oid ntype = exprType(nexpr); + Node *nexpr = (Node *) lfirst(lc); + Oid ntype = exprType(nexpr); if (ntype != ptype) break; @@ -1137,9 +1138,9 @@ select_common_type(ParseState *pstate, List *exprs, const char *context, } /* - * Nope, so set up for the full algorithm. Note that at this point, - * lc points to the first list item with type different from pexpr's; - * we need not re-examine any items the previous loop advanced over. + * Nope, so set up for the full algorithm. Note that at this point, lc + * points to the first list item with type different from pexpr's; we need + * not re-examine any items the previous loop advanced over. */ ptype = getBaseType(ptype); get_type_category_preferred(ptype, &pcategory, &pispreferred); @@ -1152,7 +1153,7 @@ select_common_type(ParseState *pstate, List *exprs, const char *context, /* move on to next one if no new information... */ if (ntype != UNKNOWNOID && ntype != ptype) { - TYPCATEGORY ncategory; + TYPCATEGORY ncategory; bool nispreferred; get_type_category_preferred(ntype, &ncategory, &nispreferred); @@ -1422,14 +1423,14 @@ check_generic_type_consistency(Oid *actual_arg_types, * * When allow_poly is false, we are not expecting any of the actual_arg_types * to be polymorphic, and we should not return a polymorphic result type - * either. When allow_poly is true, it is okay to have polymorphic "actual" + * either. When allow_poly is true, it is okay to have polymorphic "actual" * arg types, and we can return ANYARRAY or ANYELEMENT as the result. (This * case is currently used only to check compatibility of an aggregate's * declaration with the underlying transfn.) * * A special case is that we could see ANYARRAY as an actual_arg_type even * when allow_poly is false (this is possible only because pg_statistic has - * columns shown as anyarray in the catalogs). We allow this to match a + * columns shown as anyarray in the catalogs). We allow this to match a * declared ANYARRAY argument, but only if there is no ANYELEMENT argument * or result (since we can't determine a specific element type to match to * ANYELEMENT). Note this means that functions taking ANYARRAY had better @@ -1995,8 +1996,8 @@ find_coercion_pathway(Oid targetTypeId, Oid sourceTypeId, /* * If we still haven't found a possibility, consider automatic casting - * using I/O functions. We allow assignment casts to string types - * and explicit casts from string types to be handled this way. (The + * using I/O functions. We allow assignment casts to string types and + * explicit casts from string types to be handled this way. (The * CoerceViaIO mechanism is a lot more general than that, but this is * all we want to allow in the absence of a pg_cast entry.) It would * probably be better to insist on explicit casts in both directions, diff --git a/src/backend/parser/parse_cte.c b/src/backend/parser/parse_cte.c index 7da578c22f6..c18b4336adc 100644 --- a/src/backend/parser/parse_cte.c +++ b/src/backend/parser/parse_cte.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_cte.c,v 2.5 2009/01/01 17:23:45 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_cte.c,v 2.6 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -25,7 +25,7 @@ typedef enum { RECURSION_OK, - RECURSION_NONRECURSIVETERM, /* inside the left-hand term */ + RECURSION_NONRECURSIVETERM, /* inside the left-hand term */ RECURSION_SUBLINK, /* inside a sublink */ RECURSION_OUTERJOIN, /* inside nullable side of an outer join */ RECURSION_INTERSECT, /* underneath INTERSECT (ALL) */ @@ -33,7 +33,7 @@ typedef enum } RecursionContext; /* Associated error messages --- each must have one %s for CTE name */ -static const char * const recursion_errormsgs[] = { +static const char *const recursion_errormsgs[] = { /* RECURSION_OK */ NULL, /* RECURSION_NONRECURSIVETERM */ @@ -56,10 +56,11 @@ static const char * const recursion_errormsgs[] = { */ typedef struct CteItem { - CommonTableExpr *cte; /* One CTE to examine */ - int id; /* Its ID number for dependencies */ - Node *non_recursive_term; /* Its nonrecursive part, if identified */ - Bitmapset *depends_on; /* CTEs depended on (not including self) */ + CommonTableExpr *cte; /* One CTE to examine */ + int id; /* Its ID number for dependencies */ + Node *non_recursive_term; /* Its nonrecursive part, if + * identified */ + Bitmapset *depends_on; /* CTEs depended on (not including self) */ } CteItem; /* CteState is what we need to pass around in the tree walkers */ @@ -67,7 +68,7 @@ typedef struct CteState { /* global state: */ ParseState *pstate; /* global parse state */ - CteItem *items; /* array of CTEs and extra data */ + CteItem *items; /* array of CTEs and extra data */ int numitems; /* number of CTEs */ /* working state during a tree walk: */ int curitem; /* index of item currently being examined */ @@ -94,8 +95,8 @@ static void checkWellFormedSelectStmt(SelectStmt *stmt, CteState *cstate); /* * transformWithClause - - * Transform the list of WITH clause "common table expressions" into - * Query nodes. + * Transform the list of WITH clause "common table expressions" into + * Query nodes. * * The result is the list of transformed CTEs to be put into the output * Query. (This is in fact the same as the ending value of p_ctenamespace, @@ -111,11 +112,11 @@ transformWithClause(ParseState *pstate, WithClause *withClause) Assert(pstate->p_future_ctes == NIL); /* - * For either type of WITH, there must not be duplicate CTE names in - * the list. Check this right away so we needn't worry later. + * For either type of WITH, there must not be duplicate CTE names in the + * list. Check this right away so we needn't worry later. * - * Also, tentatively mark each CTE as non-recursive, and initialize - * its reference count to zero. + * Also, tentatively mark each CTE as non-recursive, and initialize its + * reference count to zero. */ foreach(lc, withClause->ctes) { @@ -129,8 +130,8 @@ transformWithClause(ParseState *pstate, WithClause *withClause) if (strcmp(cte->ctename, cte2->ctename) == 0) ereport(ERROR, (errcode(ERRCODE_DUPLICATE_ALIAS), - errmsg("WITH query name \"%s\" specified more than once", - cte2->ctename), + errmsg("WITH query name \"%s\" specified more than once", + cte2->ctename), parser_errposition(pstate, cte2->location))); } @@ -141,12 +142,12 @@ transformWithClause(ParseState *pstate, WithClause *withClause) if (withClause->recursive) { /* - * For WITH RECURSIVE, we rearrange the list elements if needed - * to eliminate forward references. First, build a work array - * and set up the data structure needed by the tree walkers. + * For WITH RECURSIVE, we rearrange the list elements if needed to + * eliminate forward references. First, build a work array and set up + * the data structure needed by the tree walkers. */ - CteState cstate; - int i; + CteState cstate; + int i; cstate.pstate = pstate; cstate.numitems = list_length(withClause->ctes); @@ -171,10 +172,10 @@ transformWithClause(ParseState *pstate, WithClause *withClause) checkWellFormedRecursion(&cstate); /* - * Set up the ctenamespace for parse analysis. Per spec, all - * the WITH items are visible to all others, so stuff them all in - * before parse analysis. We build the list in safe processing - * order so that the planner can process the queries in sequence. + * Set up the ctenamespace for parse analysis. Per spec, all the WITH + * items are visible to all others, so stuff them all in before parse + * analysis. We build the list in safe processing order so that the + * planner can process the queries in sequence. */ for (i = 0; i < cstate.numitems; i++) { @@ -191,14 +192,14 @@ transformWithClause(ParseState *pstate, WithClause *withClause) CommonTableExpr *cte = cstate.items[i].cte; /* - * If it's recursive, we have to do a throwaway parse analysis - * of the non-recursive term in order to determine the set of - * output columns for the recursive CTE. + * If it's recursive, we have to do a throwaway parse analysis of + * the non-recursive term in order to determine the set of output + * columns for the recursive CTE. */ if (cte->cterecursive) { - Node *nrt; - Query *nrq; + Node *nrt; + Query *nrq; if (!cstate.items[i].non_recursive_term) elog(ERROR, "could not find non-recursive term for %s", @@ -216,11 +217,10 @@ transformWithClause(ParseState *pstate, WithClause *withClause) { /* * For non-recursive WITH, just analyze each CTE in sequence and then - * add it to the ctenamespace. This corresponds to the spec's - * definition of the scope of each WITH name. However, to allow - * error reports to be aware of the possibility of an erroneous - * reference, we maintain a list in p_future_ctes of the - * not-yet-visible CTEs. + * add it to the ctenamespace. This corresponds to the spec's + * definition of the scope of each WITH name. However, to allow error + * reports to be aware of the possibility of an erroneous reference, + * we maintain a list in p_future_ctes of the not-yet-visible CTEs. */ pstate->p_future_ctes = list_copy(withClause->ctes); @@ -232,7 +232,7 @@ transformWithClause(ParseState *pstate, WithClause *withClause) pstate->p_ctenamespace = lappend(pstate->p_ctenamespace, cte); pstate->p_future_ctes = list_delete_first(pstate->p_future_ctes); } - } + } return pstate->p_ctenamespace; } @@ -246,7 +246,7 @@ transformWithClause(ParseState *pstate, WithClause *withClause) static void analyzeCTE(ParseState *pstate, CommonTableExpr *cte) { - Query *query; + Query *query; /* Analysis not done already */ Assert(IsA(cte->ctequery, SelectStmt)); @@ -268,7 +268,7 @@ analyzeCTE(ParseState *pstate, CommonTableExpr *cte) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery in WITH cannot have SELECT INTO"), parser_errposition(pstate, - exprLocation((Node *) query->intoClause)))); + exprLocation((Node *) query->intoClause)))); if (!cte->cterecursive) { @@ -279,9 +279,9 @@ analyzeCTE(ParseState *pstate, CommonTableExpr *cte) { /* * Verify that the previously determined output column types match - * what the query really produced. We have to check this because - * the recursive term could have overridden the non-recursive term, - * and we don't have any easy way to fix that. + * what the query really produced. We have to check this because the + * recursive term could have overridden the non-recursive term, and we + * don't have any easy way to fix that. */ ListCell *lctlist, *lctyp, @@ -294,7 +294,7 @@ analyzeCTE(ParseState *pstate, CommonTableExpr *cte) foreach(lctlist, query->targetList) { TargetEntry *te = (TargetEntry *) lfirst(lctlist); - Node *texpr; + Node *texpr; if (te->resjunk) continue; @@ -310,7 +310,7 @@ analyzeCTE(ParseState *pstate, CommonTableExpr *cte) errmsg("recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall", cte->ctename, varattno, format_type_with_typemod(lfirst_oid(lctyp), - lfirst_int(lctypmod)), + lfirst_int(lctypmod)), format_type_with_typemod(exprType(texpr), exprTypmod(texpr))), errhint("Cast the output of the non-recursive term to the correct type."), @@ -318,7 +318,7 @@ analyzeCTE(ParseState *pstate, CommonTableExpr *cte) lctyp = lnext(lctyp); lctypmod = lnext(lctypmod); } - if (lctyp != NULL || lctypmod != NULL) /* shouldn't happen */ + if (lctyp != NULL || lctypmod != NULL) /* shouldn't happen */ elog(ERROR, "wrong number of output columns in WITH"); } } @@ -335,10 +335,10 @@ analyzeCTETargetList(ParseState *pstate, CommonTableExpr *cte, List *tlist) /* * We need to determine column names and types. The alias column names - * override anything coming from the query itself. (Note: the SQL spec - * says that the alias list must be empty or exactly as long as the - * output column set; but we allow it to be shorter for consistency - * with Alias handling.) + * override anything coming from the query itself. (Note: the SQL spec + * says that the alias list must be empty or exactly as long as the output + * column set; but we allow it to be shorter for consistency with Alias + * handling.) */ cte->ctecolnames = copyObject(cte->aliascolnames); cte->ctecoltypes = cte->ctecoltypmods = NIL; @@ -363,13 +363,14 @@ analyzeCTETargetList(ParseState *pstate, CommonTableExpr *cte, List *tlist) } coltype = exprType((Node *) te->expr); coltypmod = exprTypmod((Node *) te->expr); + /* * If the CTE is recursive, force the exposed column type of any - * "unknown" column to "text". This corresponds to the fact that - * SELECT 'foo' UNION SELECT 'bar' will ultimately produce text. - * We might see "unknown" as a result of an untyped literal in - * the non-recursive term's select list, and if we don't convert - * to text then we'll have a mismatch against the UNION result. + * "unknown" column to "text". This corresponds to the fact that + * SELECT 'foo' UNION SELECT 'bar' will ultimately produce text. We + * might see "unknown" as a result of an untyped literal in the + * non-recursive term's select list, and if we don't convert to text + * then we'll have a mismatch against the UNION result. */ if (cte->cterecursive && coltype == UNKNOWNOID) { @@ -426,21 +427,21 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) /* If unqualified name, might be a CTE reference */ if (!rv->schemaname) { - ListCell *lc; - int i; + ListCell *lc; + int i; /* ... but first see if it's captured by an inner WITH */ foreach(lc, cstate->innerwiths) { - List *withlist = (List *) lfirst(lc); - ListCell *lc2; + List *withlist = (List *) lfirst(lc); + ListCell *lc2; foreach(lc2, withlist) { CommonTableExpr *cte = (CommonTableExpr *) lfirst(lc2); if (strcmp(rv->relname, cte->ctename) == 0) - return false; /* yes, so bail out */ + return false; /* yes, so bail out */ } } @@ -451,7 +452,7 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) if (strcmp(rv->relname, cte->ctename) == 0) { - int myindex = cstate->curitem; + int myindex = cstate->curitem; if (i != myindex) { @@ -474,7 +475,7 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) if (IsA(node, SelectStmt)) { SelectStmt *stmt = (SelectStmt *) node; - ListCell *lc; + ListCell *lc; if (stmt->withClause) { @@ -482,8 +483,8 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) { /* * In the RECURSIVE case, all query names of the WITH are - * visible to all WITH items as well as the main query. - * So push them all on, process, pop them all off. + * visible to all WITH items as well as the main query. So + * push them all on, process, pop them all off. */ cstate->innerwiths = lcons(stmt->withClause->ctes, cstate->innerwiths); @@ -501,8 +502,8 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) else { /* - * In the non-RECURSIVE case, query names are visible to - * the WITH items after them and to the main query. + * In the non-RECURSIVE case, query names are visible to the + * WITH items after them and to the main query. */ ListCell *cell1; @@ -528,9 +529,9 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) if (IsA(node, WithClause)) { /* - * Prevent raw_expression_tree_walker from recursing directly into - * a WITH clause. We need that to happen only under the control - * of the code above. + * Prevent raw_expression_tree_walker from recursing directly into a + * WITH clause. We need that to happen only under the control of the + * code above. */ return false; } @@ -545,7 +546,8 @@ makeDependencyGraphWalker(Node *node, CteState *cstate) static void TopologicalSort(ParseState *pstate, CteItem *items, int numitems) { - int i, j; + int i, + j; /* for each position in sequence ... */ for (i = 0; i < numitems; i++) @@ -561,24 +563,25 @@ TopologicalSort(ParseState *pstate, CteItem *items, int numitems) if (j >= numitems) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("mutual recursion between WITH items is not implemented"), + errmsg("mutual recursion between WITH items is not implemented"), parser_errposition(pstate, items[i].cte->location))); /* - * Found one. Move it to front and remove it from every other - * item's dependencies. + * Found one. Move it to front and remove it from every other item's + * dependencies. */ if (i != j) { - CteItem tmp; - + CteItem tmp; + tmp = items[i]; items[i] = items[j]; items[j] = tmp; } + /* - * Items up through i are known to have no dependencies left, - * so we can skip them in this loop. + * Items up through i are known to have no dependencies left, so we + * can skip them in this loop. */ for (j = i + 1; j < numitems; j++) { @@ -600,9 +603,9 @@ checkWellFormedRecursion(CteState *cstate) for (i = 0; i < cstate->numitems; i++) { CommonTableExpr *cte = cstate->items[i].cte; - SelectStmt *stmt = (SelectStmt *) cte->ctequery; + SelectStmt *stmt = (SelectStmt *) cte->ctequery; - Assert(IsA(stmt, SelectStmt)); /* not analyzed yet */ + Assert(IsA(stmt, SelectStmt)); /* not analyzed yet */ /* Ignore items that weren't found to be recursive */ if (!cte->cterecursive) @@ -631,22 +634,22 @@ checkWellFormedRecursion(CteState *cstate) cstate->context = RECURSION_OK; checkWellFormedRecursionWalker((Node *) stmt->rarg, cstate); Assert(cstate->innerwiths == NIL); - if (cstate->selfrefcount != 1) /* shouldn't happen */ + if (cstate->selfrefcount != 1) /* shouldn't happen */ elog(ERROR, "missing recursive reference"); /* - * Disallow ORDER BY and similar decoration atop the UNION. - * These don't make sense because it's impossible to figure out what - * they mean when we have only part of the recursive query's results. - * (If we did allow them, we'd have to check for recursive references + * Disallow ORDER BY and similar decoration atop the UNION. These + * don't make sense because it's impossible to figure out what they + * mean when we have only part of the recursive query's results. (If + * we did allow them, we'd have to check for recursive references * inside these subtrees.) */ if (stmt->sortClause) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("ORDER BY in a recursive query is not implemented"), + errmsg("ORDER BY in a recursive query is not implemented"), parser_errposition(cstate->pstate, - exprLocation((Node *) stmt->sortClause)))); + exprLocation((Node *) stmt->sortClause)))); if (stmt->limitOffset) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -664,7 +667,7 @@ checkWellFormedRecursion(CteState *cstate) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("FOR UPDATE/SHARE in a recursive query is not implemented"), parser_errposition(cstate->pstate, - exprLocation((Node *) stmt->lockingClause)))); + exprLocation((Node *) stmt->lockingClause)))); /* * Save non_recursive_term. @@ -690,21 +693,21 @@ checkWellFormedRecursionWalker(Node *node, CteState *cstate) /* If unqualified name, might be a CTE reference */ if (!rv->schemaname) { - ListCell *lc; + ListCell *lc; CommonTableExpr *mycte; /* ... but first see if it's captured by an inner WITH */ foreach(lc, cstate->innerwiths) { - List *withlist = (List *) lfirst(lc); - ListCell *lc2; + List *withlist = (List *) lfirst(lc); + ListCell *lc2; foreach(lc2, withlist) { CommonTableExpr *cte = (CommonTableExpr *) lfirst(lc2); if (strcmp(rv->relname, cte->ctename) == 0) - return false; /* yes, so bail out */ + return false; /* yes, so bail out */ } } @@ -735,7 +738,7 @@ checkWellFormedRecursionWalker(Node *node, CteState *cstate) if (IsA(node, SelectStmt)) { SelectStmt *stmt = (SelectStmt *) node; - ListCell *lc; + ListCell *lc; if (stmt->withClause) { @@ -743,8 +746,8 @@ checkWellFormedRecursionWalker(Node *node, CteState *cstate) { /* * In the RECURSIVE case, all query names of the WITH are - * visible to all WITH items as well as the main query. - * So push them all on, process, pop them all off. + * visible to all WITH items as well as the main query. So + * push them all on, process, pop them all off. */ cstate->innerwiths = lcons(stmt->withClause->ctes, cstate->innerwiths); @@ -760,8 +763,8 @@ checkWellFormedRecursionWalker(Node *node, CteState *cstate) else { /* - * In the non-RECURSIVE case, query names are visible to - * the WITH items after them and to the main query. + * In the non-RECURSIVE case, query names are visible to the + * WITH items after them and to the main query. */ ListCell *cell1; @@ -779,22 +782,22 @@ checkWellFormedRecursionWalker(Node *node, CteState *cstate) } } else - checkWellFormedSelectStmt(stmt, cstate); + checkWellFormedSelectStmt(stmt, cstate); /* We're done examining the SelectStmt */ return false; } if (IsA(node, WithClause)) { /* - * Prevent raw_expression_tree_walker from recursing directly into - * a WITH clause. We need that to happen only under the control - * of the code above. + * Prevent raw_expression_tree_walker from recursing directly into a + * WITH clause. We need that to happen only under the control of the + * code above. */ return false; } if (IsA(node, JoinExpr)) { - JoinExpr *j = (JoinExpr *) node; + JoinExpr *j = (JoinExpr *) node; switch (j->jointype) { @@ -835,7 +838,7 @@ checkWellFormedRecursionWalker(Node *node, CteState *cstate) } if (IsA(node, SubLink)) { - SubLink *sl = (SubLink *) node; + SubLink *sl = (SubLink *) node; /* * we intentionally override outer context, since subquery is diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 2bf6174866c..08e062d311e 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_expr.c,v 1.240 2009/01/22 20:16:05 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_expr.c,v 1.241 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -147,10 +147,10 @@ transformExpr(ParseState *pstate, Node *expr) TypeCast *tc = (TypeCast *) expr; /* - * If the subject of the typecast is an ARRAY[] construct - * and the target type is an array type, we invoke - * transformArrayExpr() directly so that we can pass down - * the type information. This avoids some cases where + * If the subject of the typecast is an ARRAY[] construct and + * the target type is an array type, we invoke + * transformArrayExpr() directly so that we can pass down the + * type information. This avoids some cases where * transformArrayExpr() might not infer the correct type. */ if (IsA(tc->arg, A_ArrayExpr)) @@ -173,8 +173,8 @@ transformExpr(ParseState *pstate, Node *expr) } /* - * Corner case: ARRAY[] cast to a non-array type. - * Fall through to do it the standard way. + * Corner case: ARRAY[] cast to a non-array type. Fall + * through to do it the standard way. */ } @@ -961,10 +961,10 @@ transformAExprIn(ParseState *pstate, A_Expr *a) * We try to generate a ScalarArrayOpExpr from IN/NOT IN, but this is only * possible if the inputs are all scalars (no RowExprs) and there is a * suitable array type available. If not, we fall back to a boolean - * condition tree with multiple copies of the lefthand expression. - * Also, any IN-list items that contain Vars are handled as separate - * boolean conditions, because that gives the planner more scope for - * optimization on such clauses. + * condition tree with multiple copies of the lefthand expression. Also, + * any IN-list items that contain Vars are handled as separate boolean + * conditions, because that gives the planner more scope for optimization + * on such clauses. * * First step: transform all the inputs, and detect whether any are * RowExprs or contain Vars. @@ -985,8 +985,8 @@ transformAExprIn(ParseState *pstate, A_Expr *a) } /* - * ScalarArrayOpExpr is only going to be useful if there's more than - * one non-Var righthand item. Also, it won't work for RowExprs. + * ScalarArrayOpExpr is only going to be useful if there's more than one + * non-Var righthand item. Also, it won't work for RowExprs. */ if (!haveRowExpr && list_length(rnonvars) > 1) { @@ -995,7 +995,7 @@ transformAExprIn(ParseState *pstate, A_Expr *a) Oid array_type; /* - * Try to select a common type for the array elements. Note that + * Try to select a common type for the array elements. Note that * since the LHS' type is first in the list, it will be preferred when * there is doubt (eg, when all the RHS items are unknown literals). * @@ -1266,7 +1266,7 @@ transformSubLink(ParseState *pstate, SubLink *sublink) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("subquery cannot have SELECT INTO"), parser_errposition(pstate, - exprLocation((Node *) qtree->intoClause)))); + exprLocation((Node *) qtree->intoClause)))); sublink->subselect = (Node *) qtree; @@ -1398,12 +1398,12 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, Oid coerce_type; bool coerce_hard; - /* - * Transform the element expressions + /* + * Transform the element expressions * - * Assume that the array is one-dimensional unless we find an - * array-type element expression. - */ + * Assume that the array is one-dimensional unless we find an array-type + * element expression. + */ newa->multidims = false; foreach(element, a->elements) { @@ -1411,8 +1411,8 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, Node *newe; /* - * If an element is itself an A_ArrayExpr, recurse directly so that - * we can pass down any target type we were given. + * If an element is itself an A_ArrayExpr, recurse directly so that we + * can pass down any target type we were given. */ if (IsA(e, A_ArrayExpr)) { @@ -1428,9 +1428,10 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, else { newe = transformExpr(pstate, e); + /* - * Check for sub-array expressions, if we haven't already - * found one. + * Check for sub-array expressions, if we haven't already found + * one. */ if (!newa->multidims && type_is_array(exprType(newe))) newa->multidims = true; @@ -1439,7 +1440,7 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, newelems = lappend(newelems, newe); } - /* + /* * Select a target type for the elements. * * If we haven't been given a target array type, we must try to deduce a @@ -1473,8 +1474,8 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, if (!OidIsValid(element_type)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("could not find element type for data type %s", - format_type_be(array_type)), + errmsg("could not find element type for data type %s", + format_type_be(array_type)), parser_errposition(pstate, a->location))); } else @@ -1492,7 +1493,7 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, } /* - * Coerce elements to target type + * Coerce elements to target type * * If the array has been explicitly cast, then the elements are in turn * explicitly coerced. @@ -1500,7 +1501,7 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, * If the array's type was merely derived from the common type of its * elements, then the elements are implicitly coerced to the common type. * This is consistent with other uses of select_common_type(). - */ + */ foreach(element, newelems) { Node *e = (Node *) lfirst(element); @@ -1508,9 +1509,9 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, if (coerce_hard) { - newe = coerce_to_target_type(pstate, e, + newe = coerce_to_target_type(pstate, e, exprType(e), - coerce_type, + coerce_type, typmod, COERCION_EXPLICIT, COERCE_EXPLICIT_CAST, @@ -1671,8 +1672,8 @@ transformXmlExpr(ParseState *pstate, XmlExpr *x) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), x->op == IS_XMLELEMENT - ? errmsg("unnamed XML attribute value must be a column reference") - : errmsg("unnamed XML element value must be a column reference"), + ? errmsg("unnamed XML attribute value must be a column reference") + : errmsg("unnamed XML element value must be a column reference"), parser_errposition(pstate, r->location))); argname = NULL; /* keep compiler quiet */ } @@ -1687,8 +1688,8 @@ transformXmlExpr(ParseState *pstate, XmlExpr *x) if (strcmp(argname, strVal(lfirst(lc2))) == 0) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("XML attribute name \"%s\" appears more than once", - argname), + errmsg("XML attribute name \"%s\" appears more than once", + argname), parser_errposition(pstate, r->location))); } } diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c index 260f74d5957..fd0706e9608 100644 --- a/src/backend/parser/parse_func.c +++ b/src/backend/parser/parse_func.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_func.c,v 1.215 2009/06/04 18:33:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_func.c,v 1.216 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -85,10 +85,10 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, if (list_length(fargs) > FUNC_MAX_ARGS) ereport(ERROR, (errcode(ERRCODE_TOO_MANY_ARGUMENTS), - errmsg_plural("cannot pass more than %d argument to a function", - "cannot pass more than %d arguments to a function", - FUNC_MAX_ARGS, - FUNC_MAX_ARGS), + errmsg_plural("cannot pass more than %d argument to a function", + "cannot pass more than %d arguments to a function", + FUNC_MAX_ARGS, + FUNC_MAX_ARGS), parser_errposition(pstate, location))); /* @@ -198,7 +198,7 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("OVER specified, but %s is not a window function nor an aggregate function", - NameListToString(funcname)), + NameListToString(funcname)), parser_errposition(pstate, location))); } else if (!(fdresult == FUNCDETAIL_AGGREGATE || @@ -245,22 +245,22 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, * If there are default arguments, we have to include their types in * actual_arg_types for the purpose of checking generic type consistency. * However, we do NOT put them into the generated parse node, because - * their actual values might change before the query gets run. The + * their actual values might change before the query gets run. The * planner has to insert the up-to-date values at plan time. */ nargsplusdefs = nargs; foreach(l, argdefaults) { - Node *expr = (Node *) lfirst(l); + Node *expr = (Node *) lfirst(l); /* probably shouldn't happen ... */ if (nargsplusdefs >= FUNC_MAX_ARGS) ereport(ERROR, (errcode(ERRCODE_TOO_MANY_ARGUMENTS), - errmsg_plural("cannot pass more than %d argument to a function", - "cannot pass more than %d arguments to a function", - FUNC_MAX_ARGS, - FUNC_MAX_ARGS), + errmsg_plural("cannot pass more than %d argument to a function", + "cannot pass more than %d arguments to a function", + FUNC_MAX_ARGS, + FUNC_MAX_ARGS), parser_errposition(pstate, location))); actual_arg_types[nargsplusdefs++] = exprType(expr); @@ -286,9 +286,9 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, */ if (nvargs > 0 && declared_arg_types[nargs - 1] != ANYOID) { - ArrayExpr *newa = makeNode(ArrayExpr); - int non_var_args = nargs - nvargs; - List *vargs; + ArrayExpr *newa = makeNode(ArrayExpr); + int non_var_args = nargs - nvargs; + List *vargs; Assert(non_var_args >= 0); vargs = list_copy_tail(fargs, non_var_args); @@ -303,7 +303,7 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("could not find array type for data type %s", format_type_be(newa->element_typeid)), - parser_errposition(pstate, exprLocation((Node *) vargs)))); + parser_errposition(pstate, exprLocation((Node *) vargs)))); newa->multidims = false; newa->location = exprLocation((Node *) vargs); @@ -386,7 +386,7 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs, if (agg_distinct) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("DISTINCT is not implemented for window functions"), + errmsg("DISTINCT is not implemented for window functions"), parser_errposition(pstate, location))); /* @@ -528,7 +528,7 @@ func_select_candidate(int nargs, int nbestMatch, nmatch; Oid input_base_typeids[FUNC_MAX_ARGS]; - TYPCATEGORY slot_category[FUNC_MAX_ARGS], + TYPCATEGORY slot_category[FUNC_MAX_ARGS], current_category; bool current_is_preferred; bool slot_has_preferred_type[FUNC_MAX_ARGS]; @@ -538,10 +538,10 @@ func_select_candidate(int nargs, if (nargs > FUNC_MAX_ARGS) ereport(ERROR, (errcode(ERRCODE_TOO_MANY_ARGUMENTS), - errmsg_plural("cannot pass more than %d argument to a function", - "cannot pass more than %d arguments to a function", - FUNC_MAX_ARGS, - FUNC_MAX_ARGS))); + errmsg_plural("cannot pass more than %d argument to a function", + "cannot pass more than %d arguments to a function", + FUNC_MAX_ARGS, + FUNC_MAX_ARGS))); /* * If any input types are domains, reduce them to their base types. This @@ -830,7 +830,7 @@ func_get_detail(List *funcname, *nvargs = 0; *true_typeids = NULL; if (argdefaults) - *argdefaults = NIL; + *argdefaults = NIL; /* Get list of possible candidates from namespace search */ raw_candidates = FuncnameGetCandidates(funcname, nargs, @@ -968,8 +968,8 @@ func_get_detail(List *funcname, /* * If expanding variadics or defaults, the "best candidate" might - * represent multiple equivalently good functions; treat this case - * as ambiguous. + * represent multiple equivalently good functions; treat this case as + * ambiguous. */ if (!OidIsValid(best_candidate->oid)) return FUNCDETAIL_MULTIPLE; diff --git a/src/backend/parser/parse_node.c b/src/backend/parser/parse_node.c index 17500f5545a..f775850e049 100644 --- a/src/backend/parser/parse_node.c +++ b/src/backend/parser/parse_node.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_node.c,v 1.104 2009/01/01 17:23:45 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_node.c,v 1.105 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -122,7 +122,7 @@ parser_errposition(ParseState *pstate, int location) * Sometimes the parser calls functions that aren't part of the parser * subsystem and can't reasonably be passed a ParseState; yet we would * like any errors thrown in those functions to be tagged with a parse - * error location. Use this function to set up an error context stack + * error location. Use this function to set up an error context stack * entry that will accomplish that. Usage pattern: * * declare a local variable "ParseCallbackState pcbstate" @@ -311,7 +311,7 @@ transformArraySubscripts(ParseState *pstate, ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("array subscript must have type integer"), - parser_errposition(pstate, exprLocation(ai->lidx)))); + parser_errposition(pstate, exprLocation(ai->lidx)))); } else { @@ -364,7 +364,7 @@ transformArraySubscripts(ParseState *pstate, " but expression is of type %s", format_type_be(typeneeded), format_type_be(typesource)), - errhint("You will need to rewrite or cast the expression."), + errhint("You will need to rewrite or cast the expression."), parser_errposition(pstate, exprLocation(assignFrom)))); assignFrom = newFrom; } @@ -447,7 +447,7 @@ make_const(ParseState *pstate, Value *value, int location) typeid = INT8OID; typelen = sizeof(int64); - typebyval = FLOAT8PASSBYVAL; /* int8 and float8 alike */ + typebyval = FLOAT8PASSBYVAL; /* int8 and float8 alike */ } } else diff --git a/src/backend/parser/parse_oper.c b/src/backend/parser/parse_oper.c index 871a6b9f23c..b8555c46153 100644 --- a/src/backend/parser/parse_oper.c +++ b/src/backend/parser/parse_oper.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_oper.c,v 1.107 2009/01/01 17:23:45 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_oper.c,v 1.108 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -59,7 +59,7 @@ typedef struct OprCacheKey typedef struct OprCacheEntry { /* the hash lookup key MUST BE FIRST */ - OprCacheKey key; + OprCacheKey key; Oid opr_oid; /* OID of the resolved operator */ } OprCacheEntry; @@ -76,7 +76,7 @@ static void op_error(ParseState *pstate, List *op, char oprkind, Oid arg1, Oid arg2, FuncDetailCode fdresult, int location); static bool make_oper_cache_key(OprCacheKey *key, List *opname, - Oid ltypeId, Oid rtypeId); + Oid ltypeId, Oid rtypeId); static Oid find_oper_cache_entry(OprCacheKey *key); static void make_oper_cache_entry(OprCacheKey *key, Oid opr_oid); static void InvalidateOprCacheCallBack(Datum arg, int cacheid, ItemPointer tuplePtr); @@ -194,7 +194,7 @@ get_sort_group_operators(Oid argtype, * are consistent, ie all from the same opclass. */ typentry = lookup_type_cache(argtype, - TYPECACHE_LT_OPR | TYPECACHE_EQ_OPR | TYPECACHE_GT_OPR); + TYPECACHE_LT_OPR | TYPECACHE_EQ_OPR | TYPECACHE_GT_OPR); lt_opr = typentry->lt_opr; eq_opr = typentry->eq_opr; gt_opr = typentry->gt_opr; @@ -202,8 +202,8 @@ get_sort_group_operators(Oid argtype, /* * If the datatype is an array, then we can use array_lt and friends ... * but only if there are suitable operators for the element type. (This - * check is not in the raw typcache.c code ... should it be?) Testing - * all three operator IDs here should be redundant. + * check is not in the raw typcache.c code ... should it be?) Testing all + * three operator IDs here should be redundant. */ if (lt_opr == ARRAY_LT_OP || eq_opr == ARRAY_EQ_OP || @@ -214,7 +214,7 @@ get_sort_group_operators(Oid argtype, if (OidIsValid(elem_type)) { typentry = lookup_type_cache(elem_type, - TYPECACHE_LT_OPR | TYPECACHE_EQ_OPR | TYPECACHE_GT_OPR); + TYPECACHE_LT_OPR | TYPECACHE_EQ_OPR | TYPECACHE_GT_OPR); if (!OidIsValid(typentry->lt_opr)) lt_opr = InvalidOid; /* element type has no "<" */ if (!OidIsValid(typentry->eq_opr)) @@ -223,7 +223,7 @@ get_sort_group_operators(Oid argtype, gt_opr = InvalidOid; /* element type has no ">" */ } else - lt_opr = eq_opr = gt_opr = InvalidOid; /* bogus array type? */ + lt_opr = eq_opr = gt_opr = InvalidOid; /* bogus array type? */ } /* Report errors if needed */ @@ -388,7 +388,7 @@ oper(ParseState *pstate, List *opname, Oid ltypeId, Oid rtypeId, bool noError, int location) { Oid operOid; - OprCacheKey key; + OprCacheKey key; bool key_ok; FuncDetailCode fdresult = FUNCDETAIL_NOTFOUND; HeapTuple tup = NULL; @@ -538,7 +538,7 @@ Operator right_oper(ParseState *pstate, List *op, Oid arg, bool noError, int location) { Oid operOid; - OprCacheKey key; + OprCacheKey key; bool key_ok; FuncDetailCode fdresult = FUNCDETAIL_NOTFOUND; HeapTuple tup = NULL; @@ -620,7 +620,7 @@ Operator left_oper(ParseState *pstate, List *op, Oid arg, bool noError, int location) { Oid operOid; - OprCacheKey key; + OprCacheKey key; bool key_ok; FuncDetailCode fdresult = FUNCDETAIL_NOTFOUND; HeapTuple tup = NULL; @@ -1003,7 +1003,7 @@ make_scalar_array_op(ParseState *pstate, List *opname, * mapping is pretty expensive to compute, especially for ambiguous operators; * this is mainly because there are a *lot* of instances of popular operator * names such as "=", and we have to check each one to see which is the - * best match. So once we have identified the correct mapping, we save it + * best match. So once we have identified the correct mapping, we save it * in a cache that need only be flushed on pg_operator or pg_cast change. * (pg_cast must be considered because changes in the set of implicit casts * affect the set of applicable operators for any given input datatype.) @@ -1056,7 +1056,7 @@ make_oper_cache_key(OprCacheKey *key, List *opname, Oid ltypeId, Oid rtypeId) { /* get the active search path */ if (fetch_search_path_array(key->search_path, - MAX_CACHED_PATH_LEN) > MAX_CACHED_PATH_LEN) + MAX_CACHED_PATH_LEN) > MAX_CACHED_PATH_LEN) return false; /* oops, didn't fit */ } @@ -1087,7 +1087,7 @@ find_oper_cache_entry(OprCacheKey *key) ctl.entrysize = sizeof(OprCacheEntry); ctl.hash = tag_hash; OprCacheHash = hash_create("Operator lookup cache", 256, - &ctl, HASH_ELEM | HASH_FUNCTION); + &ctl, HASH_ELEM | HASH_FUNCTION); /* Arrange to flush cache on pg_operator and pg_cast changes */ CacheRegisterSyscacheCallback(OPERNAMENSP, diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index eb98f470ee3..b506c042c54 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_relation.c,v 1.141 2009/01/22 20:16:05 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_relation.c,v 1.142 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -38,9 +38,9 @@ bool add_missing_from; static RangeTblEntry *scanNameSpaceForRefname(ParseState *pstate, const char *refname, int location); static RangeTblEntry *scanNameSpaceForRelid(ParseState *pstate, Oid relid, - int location); + int location); static void markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, - int rtindex, AttrNumber col); + int rtindex, AttrNumber col); static bool isLockedRel(ParseState *pstate, char *refname); static void expandRelation(Oid relid, Alias *eref, int rtindex, int sublevels_up, @@ -194,13 +194,13 @@ CommonTableExpr * scanNameSpaceForCTE(ParseState *pstate, const char *refname, Index *ctelevelsup) { - Index levelsup; + Index levelsup; for (levelsup = 0; pstate != NULL; pstate = pstate->parentParseState, levelsup++) { - ListCell *lc; + ListCell *lc; foreach(lc, pstate->p_ctenamespace) { @@ -226,7 +226,7 @@ isFutureCTE(ParseState *pstate, const char *refname) { for (; pstate != NULL; pstate = pstate->parentParseState) { - ListCell *lc; + ListCell *lc; foreach(lc, pstate->p_future_ctes) { @@ -264,9 +264,9 @@ searchRangeTable(ParseState *pstate, RangeVar *relation) Index levelsup; /* - * If it's an unqualified name, check for possible CTE matches. - * A CTE hides any real relation matches. If no CTE, look for - * a matching relation. + * If it's an unqualified name, check for possible CTE matches. A CTE + * hides any real relation matches. If no CTE, look for a matching + * relation. */ if (!relation->schemaname) cte = scanNameSpaceForCTE(pstate, refname, &ctelevelsup); @@ -616,15 +616,15 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, rte->requiredPerms |= ACL_SELECT; /* Must offset the attnum to fit in a bitmapset */ rte->selectedCols = bms_add_member(rte->selectedCols, - col - FirstLowInvalidHeapAttributeNumber); + col - FirstLowInvalidHeapAttributeNumber); } else if (rte->rtekind == RTE_JOIN) { if (col == InvalidAttrNumber) { /* - * A whole-row reference to a join has to be treated as - * whole-row references to the two inputs. + * A whole-row reference to a join has to be treated as whole-row + * references to the two inputs. */ JoinExpr *j; @@ -639,13 +639,13 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, /* Note: we can't see FromExpr here */ if (IsA(j->larg, RangeTblRef)) { - int varno = ((RangeTblRef *) j->larg)->rtindex; + int varno = ((RangeTblRef *) j->larg)->rtindex; markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber); } else if (IsA(j->larg, JoinExpr)) { - int varno = ((JoinExpr *) j->larg)->rtindex; + int varno = ((JoinExpr *) j->larg)->rtindex; markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber); } @@ -654,13 +654,13 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, (int) nodeTag(j->larg)); if (IsA(j->rarg, RangeTblRef)) { - int varno = ((RangeTblRef *) j->rarg)->rtindex; + int varno = ((RangeTblRef *) j->rarg)->rtindex; markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber); } else if (IsA(j->rarg, JoinExpr)) { - int varno = ((JoinExpr *) j->rarg)->rtindex; + int varno = ((JoinExpr *) j->rarg)->rtindex; markRTEForSelectPriv(pstate, NULL, varno, InvalidAttrNumber); } @@ -676,10 +676,10 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, * The aliasvar could be either a Var or a COALESCE expression, * but in the latter case we should already have marked the two * referent variables as being selected, due to their use in the - * JOIN clause. So we need only be concerned with the simple - * Var case. + * JOIN clause. So we need only be concerned with the simple Var + * case. */ - Var *aliasvar; + Var *aliasvar; Assert(col > 0 && col <= list_length(rte->joinaliasvars)); aliasvar = (Var *) list_nth(rte->joinaliasvars, col - 1); @@ -700,7 +700,7 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, void markVarForSelectPriv(ParseState *pstate, Var *var, RangeTblEntry *rte) { - Index lv; + Index lv; Assert(IsA(var, Var)); /* Find the appropriate pstate if it's an uplevel Var */ @@ -1325,8 +1325,8 @@ addRangeTableEntryForJoin(ParseState *pstate, int numaliases; /* - * Fail if join has too many columns --- we must be able to reference - * any of the columns with an AttrNumber. + * Fail if join has too many columns --- we must be able to reference any + * of the columns with an AttrNumber. */ if (list_length(aliasvars) > MaxAttrNumber) ereport(ERROR, @@ -1816,8 +1816,8 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, varattno = 0; forboth(lct, rte->ctecoltypes, lcm, rte->ctecoltypmods) { - Oid coltype = lfirst_oid(lct); - int32 coltypmod = lfirst_int(lcm); + Oid coltype = lfirst_oid(lct); + int32 coltypmod = lfirst_int(lcm); varattno++; @@ -1971,7 +1971,7 @@ expandRelAttrs(ParseState *pstate, RangeTblEntry *rte, markVarForSelectPriv(pstate, varnode, rte); } - Assert(name == NULL && var == NULL); /* lists not the same length? */ + Assert(name == NULL && var == NULL); /* lists not the same length? */ return te_list; } @@ -2457,8 +2457,8 @@ warnAutoRange(ParseState *pstate, RangeVar *relation) if (rte) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_TABLE), - errmsg("invalid reference to FROM-clause entry for table \"%s\"", - relation->relname), + errmsg("invalid reference to FROM-clause entry for table \"%s\"", + relation->relname), (badAlias ? errhint("Perhaps you meant to reference the table alias \"%s\".", badAlias) : diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c index 3f804472c77..c9ec7c33e26 100644 --- a/src/backend/parser/parse_target.c +++ b/src/backend/parser/parse_target.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_target.c,v 1.170 2009/01/22 20:16:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_target.c,v 1.171 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -297,14 +297,14 @@ markTargetListOrigin(ParseState *pstate, TargetEntry *tle, /* not a simple relation, leave it unmarked */ break; case RTE_CTE: + /* - * CTE reference: copy up from the subquery, if possible. - * If the RTE is a recursive self-reference then we can't do - * anything because we haven't finished analyzing it yet. - * However, it's no big loss because we must be down inside - * the recursive term of a recursive CTE, and so any markings - * on the current targetlist are not going to affect the results - * anyway. + * CTE reference: copy up from the subquery, if possible. If the + * RTE is a recursive self-reference then we can't do anything + * because we haven't finished analyzing it yet. However, it's no + * big loss because we must be down inside the recursive term of a + * recursive CTE, and so any markings on the current targetlist + * are not going to affect the results anyway. */ if (attnum != InvalidAttrNumber && !rte->self_reference) { @@ -346,7 +346,7 @@ markTargetListOrigin(ParseState *pstate, TargetEntry *tle, * * Note: location points at the target column name (SET target or INSERT * column name list entry), and must therefore be -1 in an INSERT that - * omits the column name list. So we should usually prefer to use + * omits the column name list. So we should usually prefer to use * exprLocation(expr) for errors that can happen in a default INSERT. */ Expr * @@ -451,7 +451,7 @@ transformAssignedExpr(ParseState *pstate, * For normal non-qualified target column, do type checking and * coercion. */ - Node *orig_expr = (Node *) expr; + Node *orig_expr = (Node *) expr; expr = (Expr *) coerce_to_target_type(pstate, @@ -957,7 +957,7 @@ ExpandColumnRefStar(ParseState *pstate, ColumnRef *cref, /* Require read access to each column */ foreach(l, vars) { - Var *var = (Var *) lfirst(l); + Var *var = (Var *) lfirst(l); markVarForSelectPriv(pstate, var, rte); } diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c index a74f5972598..295763fc48a 100644 --- a/src/backend/parser/parse_type.c +++ b/src/backend/parser/parse_type.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_type.c,v 1.102 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_type.c,v 1.103 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -498,15 +498,16 @@ stringTypeDatum(Type tp, char *string, int32 atttypmod) typioparam, atttypmod); #ifdef RANDOMIZE_ALLOCATED_MEMORY + /* * For pass-by-reference data types, repeat the conversion to see if the * input function leaves any uninitialized bytes in the result. We can - * only detect that reliably if RANDOMIZE_ALLOCATED_MEMORY is enabled, - * so we don't bother testing otherwise. The reason we don't want any + * only detect that reliably if RANDOMIZE_ALLOCATED_MEMORY is enabled, so + * we don't bother testing otherwise. The reason we don't want any * instability in the input function is that comparison of Const nodes * relies on bytewise comparison of the datums, so if the input function * leaves garbage then subexpressions that should be identical may not get - * recognized as such. See pgsql-hackers discussion of 2008-04-04. + * recognized as such. See pgsql-hackers discussion of 2008-04-04. */ if (string && !typform->typbyval) { diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index e011208ad86..e5a3621cce6 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -19,7 +19,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/parser/parse_utilcmd.c,v 2.20 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_utilcmd.c,v 2.21 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -287,9 +287,9 @@ transformColumnDefinition(ParseState *pstate, CreateStmtContext *cxt, } /* - * We have to reject "serial[]" explicitly, because once we've - * set typeid, LookupTypeName won't notice arrayBounds. We don't - * need any special coding for serial(typmod) though. + * We have to reject "serial[]" explicitly, because once we've set + * typeid, LookupTypeName won't notice arrayBounds. We don't need any + * special coding for serial(typmod) though. */ if (is_serial && column->typename->arrayBounds != NIL) ereport(ERROR, @@ -800,9 +800,9 @@ generateClonedIndexStmt(CreateStmtContext *cxt, Relation source_idx, index->idxname = NULL; /* - * If the index is marked PRIMARY, it's certainly from a constraint; - * else, if it's not marked UNIQUE, it certainly isn't; else, we have - * to search pg_depend to see if there's an associated unique constraint. + * If the index is marked PRIMARY, it's certainly from a constraint; else, + * if it's not marked UNIQUE, it certainly isn't; else, we have to search + * pg_depend to see if there's an associated unique constraint. */ if (index->primary) index->isconstraint = true; @@ -876,10 +876,10 @@ generateClonedIndexStmt(CreateStmtContext *cxt, Relation source_idx, if (amrec->amcanorder) { /* - * If it supports sort ordering, copy DESC and NULLS opts. - * Don't set non-default settings unnecessarily, though, - * so as to improve the chance of recognizing equivalence - * to constraint indexes. + * If it supports sort ordering, copy DESC and NULLS opts. Don't + * set non-default settings unnecessarily, though, so as to + * improve the chance of recognizing equivalence to constraint + * indexes. */ if (opt & INDOPTION_DESC) { @@ -1042,6 +1042,7 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt) strcmp(index->accessMethod, priorindex->accessMethod) == 0) { priorindex->unique |= index->unique; + /* * If the prior index is as yet unnamed, and this one is * named, then transfer the name to the prior index. This @@ -1475,7 +1476,7 @@ transformRuleStmt(RuleStmt *stmt, const char *queryString, if (pstate->p_hasWindowFuncs) ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot use window function in rule WHERE condition"))); + errmsg("cannot use window function in rule WHERE condition"))); /* * 'instead nothing' rules with a qualification need a query rangetable so diff --git a/src/backend/parser/parser.c b/src/backend/parser/parser.c index 2e42b6f6687..ee77c38f86e 100644 --- a/src/backend/parser/parser.c +++ b/src/backend/parser/parser.c @@ -14,7 +14,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parser.c,v 1.77 2009/04/19 21:50:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parser.c,v 1.78 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -77,7 +77,7 @@ raw_parser(const char *str) char * pg_parse_string_token(const char *token) { - int ctoken; + int ctoken; scanner_init(token); diff --git a/src/backend/port/darwin/system.c b/src/backend/port/darwin/system.c index f6586505ba5..9cdcbddae5c 100644 --- a/src/backend/port/darwin/system.c +++ b/src/backend/port/darwin/system.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/darwin/system.c,v 1.7 2008/05/17 01:28:22 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/darwin/system.c,v 1.8 2009/06/11 14:49:00 momjian Exp $ * * only needed in OS X 10.1 and possibly early 10.2 releases */ #include <AvailabilityMacros.h> diff --git a/src/backend/port/dynloader/sco.c b/src/backend/port/dynloader/sco.c index da09a255916..0d108cbff5d 100644 --- a/src/backend/port/dynloader/sco.c +++ b/src/backend/port/dynloader/sco.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/sco.c,v 1.2 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/sco.c,v 1.3 2009/06/11 14:49:00 momjian Exp $ * * Dummy file used for nothing at this point * diff --git a/src/backend/port/dynloader/solaris.c b/src/backend/port/dynloader/solaris.c index 27f555e1b44..9f5b5cfbdeb 100644 --- a/src/backend/port/dynloader/solaris.c +++ b/src/backend/port/dynloader/solaris.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/solaris.c,v 1.2 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/solaris.c,v 1.3 2009/06/11 14:49:00 momjian Exp $ * * Dummy file used for nothing at this point * diff --git a/src/backend/port/dynloader/sunos4.c b/src/backend/port/dynloader/sunos4.c index 659964cdca5..a354b0dad49 100644 --- a/src/backend/port/dynloader/sunos4.c +++ b/src/backend/port/dynloader/sunos4.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/sunos4.c,v 1.2 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/sunos4.c,v 1.3 2009/06/11 14:49:00 momjian Exp $ * * Dummy file used for nothing at this point * diff --git a/src/backend/port/dynloader/svr4.c b/src/backend/port/dynloader/svr4.c index 2cafa40e55c..290367060e3 100644 --- a/src/backend/port/dynloader/svr4.c +++ b/src/backend/port/dynloader/svr4.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/svr4.c,v 1.2 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/svr4.c,v 1.3 2009/06/11 14:49:00 momjian Exp $ * * Dummy file used for nothing at this point * diff --git a/src/backend/port/dynloader/univel.c b/src/backend/port/dynloader/univel.c index 0f6cc80fe11..95d40f015d0 100644 --- a/src/backend/port/dynloader/univel.c +++ b/src/backend/port/dynloader/univel.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/univel.c,v 1.4 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/univel.c,v 1.5 2009/06/11 14:49:00 momjian Exp $ * * Dummy file used for nothing at this point * diff --git a/src/backend/port/dynloader/univel.h b/src/backend/port/dynloader/univel.h index 0c72aef1b8c..f5ca7205df2 100644 --- a/src/backend/port/dynloader/univel.h +++ b/src/backend/port/dynloader/univel.h @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/univel.h,v 1.23 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/univel.h,v 1.24 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- * diff --git a/src/backend/port/dynloader/unixware.c b/src/backend/port/dynloader/unixware.c index 2db3fa9367b..682340c6945 100644 --- a/src/backend/port/dynloader/unixware.c +++ b/src/backend/port/dynloader/unixware.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/unixware.c,v 1.2 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/unixware.c,v 1.3 2009/06/11 14:49:00 momjian Exp $ * * Dummy file used for nothing at this point * diff --git a/src/backend/port/dynloader/unixware.h b/src/backend/port/dynloader/unixware.h index 53baa47bf93..259fca3e95e 100644 --- a/src/backend/port/dynloader/unixware.h +++ b/src/backend/port/dynloader/unixware.h @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/unixware.h,v 1.21 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/unixware.h,v 1.22 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- * diff --git a/src/backend/port/dynloader/win32.h b/src/backend/port/dynloader/win32.h index fa44b7f54e2..c6952dfda3f 100644 --- a/src/backend/port/dynloader/win32.h +++ b/src/backend/port/dynloader/win32.h @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/dynloader/win32.h,v 1.4 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/dynloader/win32.h,v 1.5 2009/06/11 14:49:00 momjian Exp $ */ #ifndef PORT_PROTOS_H #define PORT_PROTOS_H diff --git a/src/backend/port/nextstep/port.c b/src/backend/port/nextstep/port.c index abeb70546d5..fd5461c3215 100644 --- a/src/backend/port/nextstep/port.c +++ b/src/backend/port/nextstep/port.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/port/nextstep/port.c,v 1.11 2008/05/17 01:28:23 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/port/nextstep/port.c,v 1.12 2009/06/11 14:49:00 momjian Exp $ */ #include "postgres.h" diff --git a/src/backend/port/posix_sema.c b/src/backend/port/posix_sema.c index e6f3ce80b44..5b829149ed0 100644 --- a/src/backend/port/posix_sema.c +++ b/src/backend/port/posix_sema.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/posix_sema.c,v 1.21 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/posix_sema.c,v 1.22 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -241,10 +241,10 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) int errStatus; /* - * See notes in sysv_sema.c's implementation of PGSemaphoreLock. - * Just as that code does for semop(), we handle both the case where - * sem_wait() returns errno == EINTR after a signal, and the case - * where it just keeps waiting. + * See notes in sysv_sema.c's implementation of PGSemaphoreLock. Just as + * that code does for semop(), we handle both the case where sem_wait() + * returns errno == EINTR after a signal, and the case where it just keeps + * waiting. */ do { diff --git a/src/backend/port/sysv_sema.c b/src/backend/port/sysv_sema.c index 41ac4329a9f..3cb31baa692 100644 --- a/src/backend/port/sysv_sema.c +++ b/src/backend/port/sysv_sema.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/sysv_sema.c,v 1.24 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/sysv_sema.c,v 1.25 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -377,11 +377,11 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) * from the operation prematurely because we were sent a signal. So we * try and lock the semaphore again. * - * Each time around the loop, we check for a cancel/die interrupt. On - * some platforms, if such an interrupt comes in while we are waiting, - * it will cause the semop() call to exit with errno == EINTR, allowing - * us to service the interrupt (if not in a critical section already) - * during the next loop iteration. + * Each time around the loop, we check for a cancel/die interrupt. On + * some platforms, if such an interrupt comes in while we are waiting, it + * will cause the semop() call to exit with errno == EINTR, allowing us to + * service the interrupt (if not in a critical section already) during the + * next loop iteration. * * Once we acquire the lock, we do NOT check for an interrupt before * returning. The caller needs to be able to record ownership of the lock @@ -407,10 +407,10 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) * * On some platforms, signals marked SA_RESTART (which is most, for us) * will not interrupt the semop(); it will just keep waiting. Therefore - * it's necessary for cancel/die interrupts to be serviced directly by - * the signal handler. On these platforms the behavior is really the same + * it's necessary for cancel/die interrupts to be serviced directly by the + * signal handler. On these platforms the behavior is really the same * whether the signal arrives just before the semop() begins, or while it - * is waiting. The loop on EINTR is thus important only for other types + * is waiting. The loop on EINTR is thus important only for other types * of interrupts. */ do diff --git a/src/backend/port/win32/mingwcompat.c b/src/backend/port/win32/mingwcompat.c index fe185f8f6c1..a9b38d5320e 100644 --- a/src/backend/port/win32/mingwcompat.c +++ b/src/backend/port/win32/mingwcompat.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32/mingwcompat.c,v 1.5 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32/mingwcompat.c,v 1.6 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -45,8 +45,8 @@ LoadKernel32() * kernel32.dll· */ typedef -BOOL(WINAPI * __RegisterWaitForSingleObject) -(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, ULONG, ULONG); +BOOL (WINAPI * __RegisterWaitForSingleObject) + (PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, ULONG, ULONG); static __RegisterWaitForSingleObject _RegisterWaitForSingleObject = NULL; BOOL WINAPI diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c index 49631fa793f..a8fa0e08065 100644 --- a/src/backend/port/win32/socket.c +++ b/src/backend/port/win32/socket.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.21 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32/socket.c,v 1.22 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -434,7 +434,8 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c r = WSASend(writefds->fd_array[i], &buf, 1, &sent, 0, NULL, NULL); if (r == 0) /* Completed - means things are fine! */ - FD_SET(writefds->fd_array[i], &outwritefds); + FD_SET (writefds->fd_array[i], &outwritefds); + else { /* Not completed */ if (WSAGetLastError() != WSAEWOULDBLOCK) @@ -443,7 +444,7 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c * Not completed, and not just "would block", so an error * occured */ - FD_SET(writefds->fd_array[i], &outwritefds); + FD_SET (writefds->fd_array[i], &outwritefds); } } if (outwritefds.fd_count > 0) @@ -530,7 +531,8 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c (resEvents.lNetworkEvents & FD_ACCEPT) || (resEvents.lNetworkEvents & FD_CLOSE)) { - FD_SET(sockets[i], &outreadfds); + FD_SET (sockets[i], &outreadfds); + nummatches++; } } @@ -540,7 +542,8 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c if ((resEvents.lNetworkEvents & FD_WRITE) || (resEvents.lNetworkEvents & FD_CLOSE)) { - FD_SET(sockets[i], &outwritefds); + FD_SET (sockets[i], &outwritefds); + nummatches++; } } diff --git a/src/backend/port/win32/timer.c b/src/backend/port/win32/timer.c index bf315bd6523..8dd0e91a23f 100644 --- a/src/backend/port/win32/timer.c +++ b/src/backend/port/win32/timer.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.16 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32/timer.c,v 1.17 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -27,7 +27,7 @@ typedef struct timerCA struct itimerval value; HANDLE event; CRITICAL_SECTION crit_sec; -} timerCA; +} timerCA; static timerCA timerCommArea; static HANDLE timerThreadHandle = INVALID_HANDLE_VALUE; diff --git a/src/backend/port/win32_sema.c b/src/backend/port/win32_sema.c index bf68b4c60e1..2942ff138bb 100644 --- a/src/backend/port/win32_sema.c +++ b/src/backend/port/win32_sema.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32_sema.c,v 1.8 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32_sema.c,v 1.9 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -125,10 +125,10 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) wh[1] = pgwin32_signal_event; /* - * As in other implementations of PGSemaphoreLock, we need to check - * for cancel/die interrupts each time through the loop. But here, - * there is no hidden magic about whether the syscall will internally - * service a signal --- we do that ourselves. + * As in other implementations of PGSemaphoreLock, we need to check for + * cancel/die interrupts each time through the loop. But here, there is + * no hidden magic about whether the syscall will internally service a + * signal --- we do that ourselves. */ do { diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c index 5651a31e44c..4e819d0c65b 100644 --- a/src/backend/port/win32_shmem.c +++ b/src/backend/port/win32_shmem.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.10 2009/05/05 21:51:46 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.11 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -57,11 +57,11 @@ GetSharedMemName(void) elog(FATAL, "could not generate full pathname for datadir %s: %lu", DataDir, GetLastError()); - /* + /* * XXX: Intentionally overwriting the Global\ part here. This was not the * original approach, but putting it in the actual Global\ namespace - * causes permission errors in a lot of cases, so we leave it in - * the default namespace for now. + * causes permission errors in a lot of cases, so we leave it in the + * default namespace for now. */ for (cp = retptr; *cp; cp++) if (*cp == '\\') @@ -135,19 +135,22 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port) /* * When recycling a shared memory segment, it may take a short while * before it gets dropped from the global namespace. So re-try after - * sleeping for a second, and continue retrying 10 times. - * (both the 1 second time and the 10 retries are completely arbitrary) + * sleeping for a second, and continue retrying 10 times. (both the 1 + * second time and the 10 retries are completely arbitrary) */ for (i = 0; i < 10; i++) { - /* In case CreateFileMapping() doesn't set the error code to 0 on success */ + /* + * In case CreateFileMapping() doesn't set the error code to 0 on + * success + */ SetLastError(0); - hmap = CreateFileMapping((HANDLE) 0xFFFFFFFF, /* Use the pagefile */ - NULL, /* Default security attrs */ - PAGE_READWRITE, /* Memory is Read/Write */ + hmap = CreateFileMapping((HANDLE) 0xFFFFFFFF, /* Use the pagefile */ + NULL, /* Default security attrs */ + PAGE_READWRITE, /* Memory is Read/Write */ 0L, /* Size Upper 32 Bits */ - (DWORD) size, /* Size Lower 32 bits */ + (DWORD) size, /* Size Lower 32 bits */ szShareMem); if (!hmap) @@ -162,8 +165,8 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port) */ if (GetLastError() == ERROR_ALREADY_EXISTS) { - CloseHandle(hmap); /* Close the handle, since we got a valid - * one to the previous segment. */ + CloseHandle(hmap); /* Close the handle, since we got a valid one + * to the previous segment. */ hmap = NULL; Sleep(1000); continue; @@ -177,8 +180,8 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port) */ if (!hmap) ereport(FATAL, - (errmsg("pre-existing shared memory block is still in use"), - errhint("Check if there are any old server processes still running, and terminate them."))); + (errmsg("pre-existing shared memory block is still in use"), + errhint("Check if there are any old server processes still running, and terminate them."))); free(szShareMem); diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 2e63e9bbfae..7584dc39060 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -55,7 +55,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.97 2009/06/09 19:36:28 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.98 2009/06/11 14:49:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -124,7 +124,7 @@ int Log_autovacuum_min_duration = -1; #define STATS_READ_DELAY 1000 /* the minimum allowed time between two awakenings of the launcher */ -#define MIN_AUTOVAC_SLEEPTIME 100.0 /* milliseconds */ +#define MIN_AUTOVAC_SLEEPTIME 100.0 /* milliseconds */ /* Flags to tell if we are in an autovacuum process */ static bool am_autovacuum_launcher = false; @@ -168,8 +168,8 @@ typedef struct av_relation Oid ar_toastrelid; /* hash key - must be first */ Oid ar_relid; bool ar_hasrelopts; - AutoVacOpts ar_reloptions; /* copy of AutoVacOpts from the main table's - reloptions, or NULL if none */ + AutoVacOpts ar_reloptions; /* copy of AutoVacOpts from the main table's + * reloptions, or NULL if none */ } av_relation; /* struct to keep track of tables to vacuum and/or analyze, after rechecking */ @@ -362,7 +362,7 @@ StartAutoVacLauncher(void) { case -1: ereport(LOG, - (errmsg("could not fork autovacuum launcher process: %m"))); + (errmsg("could not fork autovacuum launcher process: %m"))); return 0; #ifndef EXEC_BACKEND @@ -1000,8 +1000,8 @@ rebuild_database_list(Oid newdb) qsort(dbary, nelems, sizeof(avl_dbase), db_comparator); /* - * Determine the time interval between databases in the schedule. - * If we see that the configured naptime would take us to sleep times + * Determine the time interval between databases in the schedule. If + * we see that the configured naptime would take us to sleep times * lower than our min sleep time (which launcher_determine_sleep is * coded not to allow), silently use a larger naptime (but don't touch * the GUC variable). @@ -1362,8 +1362,8 @@ avl_quickdie(SIGNAL_ARGS) * system reset cycle if some idiot DBA sends a manual SIGQUIT to a random * backend. This is necessary precisely because we don't clean up our * shared memory state. (The "dead man switch" mechanism in pmsignal.c - * should ensure the postmaster sees this as a crash, too, but no harm - * in being doubly sure.) + * should ensure the postmaster sees this as a crash, too, but no harm in + * being doubly sure.) */ exit(2); } @@ -1849,7 +1849,7 @@ do_autovacuum(void) PgStat_StatDBEntry *shared; PgStat_StatDBEntry *dbentry; BufferAccessStrategy bstrategy; - ScanKeyData key; + ScanKeyData key; TupleDesc pg_class_desc; /* @@ -1881,8 +1881,8 @@ do_autovacuum(void) pgstat_vacuum_stat(); /* - * Find the pg_database entry and select the default freeze ages. We - * use zero in template and nonconnectable databases, else the system-wide + * Find the pg_database entry and select the default freeze ages. We use + * zero in template and nonconnectable databases, else the system-wide * default. */ tuple = SearchSysCache(DATABASEOID, @@ -1930,12 +1930,12 @@ do_autovacuum(void) /* * Scan pg_class to determine which tables to vacuum. * - * We do this in two passes: on the first one we collect the list of - * plain relations, and on the second one we collect TOAST tables. - * The reason for doing the second pass is that during it we want to use - * the main relation's pg_class.reloptions entry if the TOAST table does - * not have any, and we cannot obtain it unless we know beforehand what's - * the main table OID. + * We do this in two passes: on the first one we collect the list of plain + * relations, and on the second one we collect TOAST tables. The reason + * for doing the second pass is that during it we want to use the main + * relation's pg_class.reloptions entry if the TOAST table does not have + * any, and we cannot obtain it unless we know beforehand what's the main + * table OID. * * We need to check TOAST tables separately because in cases with short, * wide tables there might be proportionally much more activity in the @@ -1949,8 +1949,8 @@ do_autovacuum(void) relScan = heap_beginscan(classRel, SnapshotNow, 1, &key); /* - * On the first pass, we collect main tables to vacuum, and also the - * main table relid to TOAST relid mapping. + * On the first pass, we collect main tables to vacuum, and also the main + * table relid to TOAST relid mapping. */ while ((tuple = heap_getnext(relScan, ForwardScanDirection)) != NULL) { @@ -1998,7 +1998,7 @@ do_autovacuum(void) ereport(LOG, (errmsg("autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"", - get_namespace_name(classForm->relnamespace), + get_namespace_name(classForm->relnamespace), NameStr(classForm->relname), get_database_name(MyDatabaseId)))); object.classId = RelationRelationId; @@ -2010,7 +2010,7 @@ do_autovacuum(void) { ereport(LOG, (errmsg("autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"", - get_namespace_name(classForm->relnamespace), + get_namespace_name(classForm->relnamespace), NameStr(classForm->relname), get_database_name(MyDatabaseId)))); } @@ -2065,7 +2065,7 @@ do_autovacuum(void) { Form_pg_class classForm = (Form_pg_class) GETSTRUCT(tuple); PgStat_StatTabEntry *tabentry; - Oid relid; + Oid relid; AutoVacOpts *relopts = NULL; bool dovacuum; bool doanalyze; @@ -2080,14 +2080,14 @@ do_autovacuum(void) relid = HeapTupleGetOid(tuple); /* - * fetch reloptions -- if this toast table does not have them, - * try the main rel + * fetch reloptions -- if this toast table does not have them, try the + * main rel */ relopts = extract_autovac_opts(tuple, pg_class_desc); if (relopts == NULL) { - av_relation *hentry; - bool found; + av_relation *hentry; + bool found; hentry = hash_search(table_toast_map, &relid, HASH_FIND, &found); if (found && hentry->ar_hasrelopts) @@ -2187,10 +2187,10 @@ do_autovacuum(void) * It could have changed if something else processed the table while * we weren't looking. * - * Note: we have a special case in pgstat code to ensure that the stats - * we read are as up-to-date as possible, to avoid the problem that - * somebody just finished vacuuming this table. The window to the race - * condition is not closed but it is very small. + * Note: we have a special case in pgstat code to ensure that the + * stats we read are as up-to-date as possible, to avoid the problem + * that somebody just finished vacuuming this table. The window to + * the race condition is not closed but it is very small. */ MemoryContextSwitchTo(AutovacMemCxt); tab = table_recheck_autovac(relid, table_toast_map, pg_class_desc); @@ -2231,7 +2231,7 @@ do_autovacuum(void) /* * Save the relation name for a possible error message, to avoid a - * catalog lookup in case of an error. If any of these return NULL, + * catalog lookup in case of an error. If any of these return NULL, * then the relation has been dropped since last we checked; skip it. * Note: they must live in a long-lived memory context because we call * vacuum and analyze in different transactions. @@ -2307,8 +2307,8 @@ deleted: } /* - * We leak table_toast_map here (among other things), but since we're going - * away soon, it's not a problem. + * We leak table_toast_map here (among other things), but since we're + * going away soon, it's not a problem. */ /* @@ -2339,7 +2339,7 @@ extract_autovac_opts(HeapTuple tup, TupleDesc pg_class_desc) relopts = extractRelOptions(tup, pg_class_desc, InvalidOid); if (relopts == NULL) return NULL; - + av = palloc(sizeof(AutoVacOpts)); memcpy(av, &(((StdRdOptions *) relopts)->autovacuum), sizeof(AutoVacOpts)); pfree(relopts); @@ -2392,7 +2392,7 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map, PgStat_StatDBEntry *shared; PgStat_StatDBEntry *dbentry; bool wraparound; - AutoVacOpts *avopts; + AutoVacOpts *avopts; /* use fresh stats */ autovac_refresh_stats(); @@ -2408,16 +2408,16 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map, return NULL; classForm = (Form_pg_class) GETSTRUCT(classTup); - /* + /* * Get the applicable reloptions. If it is a TOAST table, try to get the * main table reloptions if the toast table itself doesn't have. */ avopts = extract_autovac_opts(classTup, pg_class_desc); - if (classForm->relkind == RELKIND_TOASTVALUE && + if (classForm->relkind == RELKIND_TOASTVALUE && avopts == NULL && table_toast_map != NULL) { - av_relation *hentry; - bool found; + av_relation *hentry; + bool found; hentry = hash_search(table_toast_map, &relid, HASH_FIND, &found); if (found && hentry->ar_hasrelopts) @@ -2516,7 +2516,7 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map, * * A table whose autovacuum_enabled option is false is * automatically skipped (unless we have to vacuum it due to freeze_max_age). - * Thus autovacuum can be disabled for specific tables. Also, when the stats + * Thus autovacuum can be disabled for specific tables. Also, when the stats * collector does not have data about a table, it will be skipped. * * A table whose vac_base_thresh value is < 0 takes the base value from the @@ -2684,8 +2684,8 @@ static void autovac_report_activity(autovac_table *tab) { #define MAX_AUTOVAC_ACTIV_LEN (NAMEDATALEN * 2 + 56) - char activity[MAX_AUTOVAC_ACTIV_LEN]; - int len; + char activity[MAX_AUTOVAC_ACTIV_LEN]; + int len; /* Report the command and possible options */ if (tab->at_dovacuum) @@ -2703,7 +2703,7 @@ autovac_report_activity(autovac_table *tab) snprintf(activity + len, MAX_AUTOVAC_ACTIV_LEN - len, " %s.%s%s", tab->at_nspname, tab->at_relname, - tab->at_wraparound ? " (to prevent wraparound)" : ""); + tab->at_wraparound ? " (to prevent wraparound)" : ""); /* Set statement_timestamp() to current time for pg_stat_activity */ SetCurrentStatementStartTimestamp(); diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index b2a90528b65..629565a8104 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.59 2009/06/04 18:33:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/bgwriter.c,v 1.60 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -113,7 +113,7 @@ typedef struct { RelFileNode rnode; - ForkNumber forknum; + ForkNumber forknum; BlockNumber segno; /* see md.c for special values */ /* might add a real request-type field later; not needed yet */ } BgWriterRequest; @@ -424,16 +424,16 @@ BackgroundWriterMain(void) */ if (do_checkpoint) { - bool ckpt_performed = false; - bool do_restartpoint; + bool ckpt_performed = false; + bool do_restartpoint; /* use volatile pointer to prevent code rearrangement */ volatile BgWriterShmemStruct *bgs = BgWriterShmem; /* - * Check if we should perform a checkpoint or a restartpoint. - * As a side-effect, RecoveryInProgress() initializes - * TimeLineID if it's not set yet. + * Check if we should perform a checkpoint or a restartpoint. As a + * side-effect, RecoveryInProgress() initializes TimeLineID if + * it's not set yet. */ do_restartpoint = RecoveryInProgress(); @@ -460,7 +460,7 @@ BackgroundWriterMain(void) elapsed_secs < CheckPointWarning) ereport(LOG, (errmsg_plural("checkpoints are occurring too frequently (%d second apart)", - "checkpoints are occurring too frequently (%d seconds apart)", + "checkpoints are occurring too frequently (%d seconds apart)", elapsed_secs, elapsed_secs), errhint("Consider increasing the configuration parameter \"checkpoint_segments\"."))); @@ -812,8 +812,8 @@ bg_quickdie(SIGNAL_ARGS) * system reset cycle if some idiot DBA sends a manual SIGQUIT to a random * backend. This is necessary precisely because we don't clean up our * shared memory state. (The "dead man switch" mechanism in pmsignal.c - * should ensure the postmaster sees this as a crash, too, but no harm - * in being doubly sure.) + * should ensure the postmaster sees this as a crash, too, but no harm in + * being doubly sure.) */ exit(2); } @@ -952,25 +952,25 @@ RequestCheckpoint(int flags) /* * Send signal to request checkpoint. It's possible that the bgwriter - * hasn't started yet, or is in process of restarting, so we will retry - * a few times if needed. Also, if not told to wait for the checkpoint - * to occur, we consider failure to send the signal to be nonfatal and - * merely LOG it. + * hasn't started yet, or is in process of restarting, so we will retry a + * few times if needed. Also, if not told to wait for the checkpoint to + * occur, we consider failure to send the signal to be nonfatal and merely + * LOG it. */ - for (ntries = 0; ; ntries++) + for (ntries = 0;; ntries++) { if (BgWriterShmem->bgwriter_pid == 0) { - if (ntries >= 20) /* max wait 2.0 sec */ + if (ntries >= 20) /* max wait 2.0 sec */ { elog((flags & CHECKPOINT_WAIT) ? ERROR : LOG, - "could not request checkpoint because bgwriter not running"); + "could not request checkpoint because bgwriter not running"); break; } } else if (kill(BgWriterShmem->bgwriter_pid, SIGINT) != 0) { - if (ntries >= 20) /* max wait 2.0 sec */ + if (ntries >= 20) /* max wait 2.0 sec */ { elog((flags & CHECKPOINT_WAIT) ? ERROR : LOG, "could not signal for checkpoint: %m"); diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 5ed6c02cb75..28306729acd 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -19,7 +19,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.39 2009/01/01 17:23:46 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/pgarch.c,v 1.40 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -348,8 +348,8 @@ pgarch_MainLoop(void) * If we've gotten SIGTERM, we normally just sit and do nothing until * SIGUSR2 arrives. However, that means a random SIGTERM would * disable archiving indefinitely, which doesn't seem like a good - * idea. If more than 60 seconds pass since SIGTERM, exit anyway, - * so that the postmaster can start a new archiver if needed. + * idea. If more than 60 seconds pass since SIGTERM, exit anyway, so + * that the postmaster can start a new archiver if needed. */ if (got_SIGTERM) { @@ -432,10 +432,10 @@ pgarch_ArchiverCopyLoop(void) { /* * Do not initiate any more archive commands after receiving - * SIGTERM, nor after the postmaster has died unexpectedly. - * The first condition is to try to keep from having init - * SIGKILL the command, and the second is to avoid conflicts - * with another archiver spawned by a newer postmaster. + * SIGTERM, nor after the postmaster has died unexpectedly. The + * first condition is to try to keep from having init SIGKILL the + * command, and the second is to avoid conflicts with another + * archiver spawned by a newer postmaster. */ if (got_SIGTERM || !PostmasterIsAlive(true)) return; @@ -549,7 +549,7 @@ pgarch_archiveXlog(char *xlog) * Per the Single Unix Spec, shells report exit status > 128 when a * called command died on a signal. */ - int lev = (WIFSIGNALED(rc) || WEXITSTATUS(rc) > 128) ? FATAL : LOG; + int lev = (WIFSIGNALED(rc) || WEXITSTATUS(rc) > 128) ? FATAL : LOG; if (WIFEXITED(rc)) { @@ -563,16 +563,16 @@ pgarch_archiveXlog(char *xlog) { #if defined(WIN32) ereport(lev, - (errmsg("archive command was terminated by exception 0x%X", - WTERMSIG(rc)), - errhint("See C include file \"ntstatus.h\" for a description of the hexadecimal value."), - errdetail("The failed archive command was: %s", - xlogarchcmd))); + (errmsg("archive command was terminated by exception 0x%X", + WTERMSIG(rc)), + errhint("See C include file \"ntstatus.h\" for a description of the hexadecimal value."), + errdetail("The failed archive command was: %s", + xlogarchcmd))); #elif defined(HAVE_DECL_SYS_SIGLIST) && HAVE_DECL_SYS_SIGLIST ereport(lev, (errmsg("archive command was terminated by signal %d: %s", WTERMSIG(rc), - WTERMSIG(rc) < NSIG ? sys_siglist[WTERMSIG(rc)] : "(unknown)"), + WTERMSIG(rc) < NSIG ? sys_siglist[WTERMSIG(rc)] : "(unknown)"), errdetail("The failed archive command was: %s", xlogarchcmd))); #else @@ -586,10 +586,10 @@ pgarch_archiveXlog(char *xlog) else { ereport(lev, - (errmsg("archive command exited with unrecognized status %d", - rc), - errdetail("The failed archive command was: %s", - xlogarchcmd))); + (errmsg("archive command exited with unrecognized status %d", + rc), + errdetail("The failed archive command was: %s", + xlogarchcmd))); } snprintf(activitymsg, sizeof(activitymsg), "failed on %s", xlog); diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 4925e6b3b85..37808735c9d 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -13,7 +13,7 @@ * * Copyright (c) 2001-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.188 2009/06/06 22:13:51 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.189 2009/06/11 14:49:01 momjian Exp $ * ---------- */ #include "postgres.h" @@ -217,6 +217,7 @@ static PgStat_GlobalStats globalStats; /* Last time the collector successfully wrote the stats file */ static TimestampTz last_statwrite; + /* Latest statistics request time from backends */ static TimestampTz last_statrequest; @@ -425,7 +426,8 @@ retry1: for (;;) /* need a loop to handle EINTR */ { FD_ZERO(&rset); - FD_SET(pgStatSock, &rset); + FD_SET (pgStatSock, &rset); + tv.tv_sec = 0; tv.tv_usec = 500000; sel_res = select(pgStatSock + 1, &rset, NULL, NULL, &tv); @@ -1213,14 +1215,14 @@ pgstat_report_analyze(Relation rel, PgStat_Counter livetuples, return; /* - * Unlike VACUUM, ANALYZE might be running inside a transaction that - * has already inserted and/or deleted rows in the target table. - * ANALYZE will have counted such rows as live or dead respectively. - * Because we will report our counts of such rows at transaction end, - * we should subtract off these counts from what we send to the collector - * now, else they'll be double-counted after commit. (This approach also - * ensures that the collector ends up with the right numbers if we abort - * instead of committing.) + * Unlike VACUUM, ANALYZE might be running inside a transaction that has + * already inserted and/or deleted rows in the target table. ANALYZE will + * have counted such rows as live or dead respectively. Because we will + * report our counts of such rows at transaction end, we should subtract + * off these counts from what we send to the collector now, else they'll + * be double-counted after commit. (This approach also ensures that the + * collector ends up with the right numbers if we abort instead of + * committing.) */ if (rel->pgstat_info != NULL) { @@ -1241,7 +1243,7 @@ pgstat_report_analyze(Relation rel, PgStat_Counter livetuples, pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_ANALYZE); msg.m_databaseid = rel->rd_rel->relisshared ? InvalidOid : MyDatabaseId; msg.m_tableoid = RelationGetRelid(rel); - msg.m_autovacuum = IsAutoVacuumWorkerProcess(); /* is this autovacuum? */ + msg.m_autovacuum = IsAutoVacuumWorkerProcess(); /* is this autovacuum? */ msg.m_analyzetime = GetCurrentTimestamp(); msg.m_live_tuples = livetuples; msg.m_dead_tuples = deadtuples; @@ -1294,7 +1296,7 @@ pgstat_init_function_usage(FunctionCallInfoData *fcinfo, PgStat_FunctionCallUsage *fcu) { PgStat_BackendFunctionEntry *htabent; - bool found; + bool found; if (pgstat_track_functions <= fcinfo->flinfo->fn_stats) { @@ -1374,8 +1376,8 @@ pgstat_end_function_usage(PgStat_FunctionCallUsage *fcu, bool finalize) * Compute the new total f_time as the total elapsed time added to the * pre-call value of f_time. This is necessary to avoid double-counting * any time taken by recursive calls of myself. (We do not need any - * similar kluge for self time, since that already excludes any - * recursive calls.) + * similar kluge for self time, since that already excludes any recursive + * calls.) */ INSTR_TIME_ADD(f_total, fcu->save_f_time); @@ -2068,7 +2070,7 @@ pgstat_fetch_global(void) static PgBackendStatus *BackendStatusArray = NULL; static PgBackendStatus *MyBEEntry = NULL; -static char *BackendActivityBuffer = NULL; +static char *BackendActivityBuffer = NULL; /* @@ -2111,7 +2113,7 @@ CreateSharedBackendStatus(void) /* Create or attach to the shared activity buffer */ size = mul_size(pgstat_track_activity_query_size, MaxBackends); - BackendActivityBuffer = (char*) + BackendActivityBuffer = (char *) ShmemInitStruct("Backend Activity Buffer", size, &found); if (!found) @@ -2120,7 +2122,8 @@ CreateSharedBackendStatus(void) /* Initialize st_activity pointers. */ buffer = BackendActivityBuffer; - for (i = 0; i < MaxBackends; i++) { + for (i = 0; i < MaxBackends; i++) + { BackendStatusArray[i].st_activity = buffer; buffer += pgstat_track_activity_query_size; } @@ -2350,7 +2353,7 @@ pgstat_read_current_status(void) volatile PgBackendStatus *beentry; PgBackendStatus *localtable; PgBackendStatus *localentry; - char *localactivity; + char *localactivity; int i; Assert(!pgStatRunningInCollector); @@ -2386,6 +2389,7 @@ pgstat_read_current_status(void) if (localentry->st_procpid > 0) { memcpy(localentry, (char *) beentry, sizeof(PgBackendStatus)); + /* * strcpy is safe even if the string is modified concurrently, * because there's always a \0 at the end of the buffer. @@ -2421,12 +2425,12 @@ pgstat_read_current_status(void) * pgstat_get_backend_current_activity() - * * Return a string representing the current activity of the backend with - * the specified PID. This looks directly at the BackendStatusArray, + * the specified PID. This looks directly at the BackendStatusArray, * and so will provide current information regardless of the age of our * transaction's snapshot of the status array. * * It is the caller's responsibility to invoke this only for backends whose - * state is expected to remain stable while the result is in use. The + * state is expected to remain stable while the result is in use. The * only current use is in deadlock reporting, where we can expect that * the target backend is blocked on a lock. (There are corner cases * where the target's wait could get aborted while we are looking at it, @@ -2452,11 +2456,11 @@ pgstat_get_backend_current_activity(int pid, bool checkUser) * must follow the protocol of retrying if st_changecount changes * while we examine the entry, or if it's odd. (This might be * unnecessary, since fetching or storing an int is almost certainly - * atomic, but let's play it safe.) We use a volatile pointer here - * to ensure the compiler doesn't try to get cute. + * atomic, but let's play it safe.) We use a volatile pointer here to + * ensure the compiler doesn't try to get cute. */ volatile PgBackendStatus *vbeentry = beentry; - bool found; + bool found; for (;;) { @@ -2664,7 +2668,7 @@ PgstatCollectorMain(int argc, char *argv[]) * * For performance reasons, we don't want to do a PostmasterIsAlive() test * after every message; instead, do it only when select()/poll() is - * interrupted by timeout. In essence, we'll stay alive as long as + * interrupted by timeout. In essence, we'll stay alive as long as * backends keep sending us stuff often, even if the postmaster is gone. */ for (;;) @@ -2722,7 +2726,7 @@ PgstatCollectorMain(int argc, char *argv[]) got_data = (input_fd.revents != 0); #else /* !HAVE_POLL */ - FD_SET(pgStatSock, &rfds); + FD_SET (pgStatSock, &rfds); /* * timeout struct is modified by select() on some operating systems, @@ -2821,9 +2825,9 @@ PgstatCollectorMain(int argc, char *argv[]) pgstat_recv_bgwriter((PgStat_MsgBgWriter *) &msg, len); break; - case PGSTAT_MTYPE_FUNCSTAT: - pgstat_recv_funcstat((PgStat_MsgFuncstat *) &msg, len); - break; + case PGSTAT_MTYPE_FUNCSTAT: + pgstat_recv_funcstat((PgStat_MsgFuncstat *) &msg, len); + break; case PGSTAT_MTYPE_FUNCPURGE: pgstat_recv_funcpurge((PgStat_MsgFuncpurge *) &msg, len); @@ -2949,8 +2953,8 @@ pgstat_write_statsfile(bool permanent) PgStat_StatFuncEntry *funcentry; FILE *fpout; int32 format_id; - const char *tmpfile = permanent?PGSTAT_STAT_PERMANENT_TMPFILE:pgstat_stat_tmpname; - const char *statfile = permanent?PGSTAT_STAT_PERMANENT_FILENAME:pgstat_stat_filename; + const char *tmpfile = permanent ? PGSTAT_STAT_PERMANENT_TMPFILE : pgstat_stat_tmpname; + const char *statfile = permanent ? PGSTAT_STAT_PERMANENT_FILENAME : pgstat_stat_filename; /* * Open the statistics temp file to write out the current values. @@ -2989,8 +2993,8 @@ pgstat_write_statsfile(bool permanent) { /* * Write out the DB entry including the number of live backends. We - * don't write the tables or functions pointers, since they're of - * no use to any other process. + * don't write the tables or functions pointers, since they're of no + * use to any other process. */ fputc('D', fpout); fwrite(dbentry, offsetof(PgStat_StatDBEntry, tables), 1, fpout); @@ -3098,7 +3102,7 @@ pgstat_read_statsfile(Oid onlydb, bool permanent) FILE *fpin; int32 format_id; bool found; - const char *statfile = permanent?PGSTAT_STAT_PERMANENT_FILENAME:pgstat_stat_filename; + const char *statfile = permanent ? PGSTAT_STAT_PERMANENT_FILENAME : pgstat_stat_filename; /* * The tables will live in pgStatLocalContext. @@ -3220,6 +3224,7 @@ pgstat_read_statsfile(Oid onlydb, bool permanent) PGSTAT_FUNCTION_HASH_SIZE, &hash_ctl, HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); + /* * Arrange that following records add entries to this * database's hash tables. @@ -3287,7 +3292,7 @@ pgstat_read_statsfile(Oid onlydb, bool permanent) break; funcentry = (PgStat_StatFuncEntry *) hash_search(funchash, - (void *) &funcbuf.functionid, + (void *) &funcbuf.functionid, HASH_ENTER, &found); if (found) @@ -3335,7 +3340,7 @@ pgstat_read_statsfile_timestamp(bool permanent, TimestampTz *ts) PgStat_GlobalStats myGlobalStats; FILE *fpin; int32 format_id; - const char *statfile = permanent?PGSTAT_STAT_PERMANENT_FILENAME:pgstat_stat_filename; + const char *statfile = permanent ? PGSTAT_STAT_PERMANENT_FILENAME : pgstat_stat_filename; /* * Try to open the status file. @@ -3386,14 +3391,14 @@ backend_read_statsfile(void) /* * We set the minimum acceptable timestamp to PGSTAT_STAT_INTERVAL msec - * before now. This indirectly ensures that the collector needn't write + * before now. This indirectly ensures that the collector needn't write * the file more often than PGSTAT_STAT_INTERVAL. In an autovacuum * worker, however, we want a lower delay to avoid using stale data, so we * use PGSTAT_RETRY_DELAY (since the number of worker is low, this * shouldn't be a problem). * * Note that we don't recompute min_ts after sleeping; so we might end up - * accepting a file a bit older than PGSTAT_STAT_INTERVAL. In practice + * accepting a file a bit older than PGSTAT_STAT_INTERVAL. In practice * that shouldn't happen, though, as long as the sleep time is less than * PGSTAT_STAT_INTERVAL; and we don't want to lie to the collector about * what our cutoff time really is. @@ -3407,7 +3412,8 @@ backend_read_statsfile(void) /* * Loop until fresh enough stats file is available or we ran out of time. - * The stats inquiry message is sent repeatedly in case collector drops it. + * The stats inquiry message is sent repeatedly in case collector drops + * it. */ for (count = 0; count < PGSTAT_POLL_LOOP_COUNT; count++) { @@ -3871,8 +3877,8 @@ pgstat_recv_funcstat(PgStat_MsgFuncstat *msg, int len) for (i = 0; i < msg->m_nentries; i++, funcmsg++) { funcentry = (PgStat_StatFuncEntry *) hash_search(dbentry->functions, - (void *) &(funcmsg->f_id), - HASH_ENTER, &found); + (void *) &(funcmsg->f_id), + HASH_ENTER, &found); if (!found) { diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index fbeb342a907..c9b0e0ab2ec 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.581 2009/05/05 19:59:00 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.582 2009/06/11 14:49:01 momjian Exp $ * * NOTES * @@ -219,7 +219,7 @@ static pid_t StartupPID = 0, static int Shutdown = NoShutdown; static bool FatalError = false; /* T if recovering from backend crash */ -static bool RecoveryError = false; /* T if WAL recovery failed */ +static bool RecoveryError = false; /* T if WAL recovery failed */ /* * We use a simple state machine to control startup, shutdown, and @@ -230,8 +230,8 @@ static bool RecoveryError = false; /* T if WAL recovery failed */ * reading the control file and other preliminary initialization steps. When * it's ready to start WAL redo, it signals postmaster, and we switch to * PM_RECOVERY phase. The background writer is launched, while the startup - * process continues applying WAL. - * + * process continues applying WAL. + * * After reaching a consistent point in WAL redo, startup process signals * us again, and we switch to PM_RECOVERY_CONSISTENT phase. There's currently * no difference between PM_RECOVERY and PM_RECOVERY_CONSISTENT, but we @@ -365,7 +365,7 @@ typedef struct HANDLE waitHandle; HANDLE procHandle; DWORD procId; -} win32_deadchild_waitinfo; +} win32_deadchild_waitinfo; HANDLE PostmasterHandle; #endif @@ -380,7 +380,7 @@ typedef struct SOCKET origsocket; /* Original socket value, or -1 if not a * socket */ WSAPROTOCOL_INFO wsainfo; -} InheritableSocket; +} InheritableSocket; #else typedef int InheritableSocket; #endif @@ -425,15 +425,15 @@ typedef struct char ExtraOptions[MAXPGPATH]; char lc_collate[NAMEDATALEN]; char lc_ctype[NAMEDATALEN]; -} BackendParameters; +} BackendParameters; static void read_backend_variables(char *id, Port *port); -static void restore_backend_variables(BackendParameters * param, Port *port); +static void restore_backend_variables(BackendParameters *param, Port *port); #ifndef WIN32 -static bool save_backend_variables(BackendParameters * param, Port *port); +static bool save_backend_variables(BackendParameters *param, Port *port); #else -static bool save_backend_variables(BackendParameters * param, Port *port, +static bool save_backend_variables(BackendParameters *param, Port *port, HANDLE childProcess, pid_t childPid); #endif @@ -898,8 +898,8 @@ PostmasterMain(int argc, char *argv[]) */ if (!load_hba()) { - /* - * It makes no sense continue if we fail to load the HBA file, since + /* + * It makes no sense continue if we fail to load the HBA file, since * there is no way to connect to the database in this case. */ ereport(FATAL, @@ -1076,11 +1076,11 @@ getInstallationPaths(const char *argv0) get_pkglib_path(my_exec_path, pkglib_path); /* - * Verify that there's a readable directory there; otherwise the - * Postgres installation is incomplete or corrupt. (A typical cause - * of this failure is that the postgres executable has been moved or - * hardlinked to some directory that's not a sibling of the installation - * lib/ directory.) + * Verify that there's a readable directory there; otherwise the Postgres + * installation is incomplete or corrupt. (A typical cause of this + * failure is that the postgres executable has been moved or hardlinked to + * some directory that's not a sibling of the installation lib/ + * directory.) */ pdir = AllocateDir(pkglib_path); if (pdir == NULL) @@ -1093,8 +1093,8 @@ getInstallationPaths(const char *argv0) FreeDir(pdir); /* - * XXX is it worth similarly checking the share/ directory? If the - * lib/ directory is there, then share/ probably is too. + * XXX is it worth similarly checking the share/ directory? If the lib/ + * directory is there, then share/ probably is too. */ } @@ -1363,7 +1363,7 @@ ServerLoop(void) * fails, we'll just try again later. */ if (BgWriterPID == 0 && - (pmState == PM_RUN || pmState == PM_RECOVERY || + (pmState == PM_RUN || pmState == PM_RECOVERY || pmState == PM_RECOVERY_CONSISTENT)) BgWriterPID = StartBackgroundWriter(); @@ -1426,7 +1426,8 @@ initMasks(fd_set *rmask) if (fd == -1) break; - FD_SET(fd, rmask); + FD_SET (fd, rmask); + if (fd > maxsock) maxsock = fd; } @@ -1811,7 +1812,7 @@ canAcceptConnections(void) if (pmState != PM_RUN) { if (pmState == PM_WAIT_BACKUP) - return CAC_WAITBACKUP; /* allow superusers only */ + return CAC_WAITBACKUP; /* allow superusers only */ if (Shutdown > NoShutdown) return CAC_SHUTDOWN; /* shutdown is pending */ if (!FatalError && @@ -2064,9 +2065,9 @@ pmdie(SIGNAL_ARGS) } /* - * Now wait for online backup mode to end and - * backends to exit. If that is already the case, - * PostmasterStateMachine will take the next step. + * Now wait for online backup mode to end and backends to exit. + * If that is already the case, PostmasterStateMachine will take + * the next step. */ PostmasterStateMachine(); break; @@ -2194,8 +2195,8 @@ reaper(SIGNAL_ARGS) /* * Unexpected exit of startup process (including FATAL exit) - * during PM_STARTUP is treated as catastrophic. There is no - * other processes running yet, so we can just exit. + * during PM_STARTUP is treated as catastrophic. There is no other + * processes running yet, so we can just exit. */ if (pmState == PM_STARTUP && !EXIT_STATUS_0(exitstatus)) { @@ -2205,9 +2206,10 @@ reaper(SIGNAL_ARGS) (errmsg("aborting startup due to startup process failure"))); ExitPostmaster(1); } + /* - * Startup process exited in response to a shutdown request (or - * it completed normally regardless of the shutdown request). + * Startup process exited in response to a shutdown request (or it + * completed normally regardless of the shutdown request). */ if (Shutdown > NoShutdown && (EXIT_STATUS_0(exitstatus) || EXIT_STATUS_1(exitstatus))) @@ -2216,10 +2218,11 @@ reaper(SIGNAL_ARGS) /* PostmasterStateMachine logic does the rest */ continue; } + /* * Any unexpected exit (including FATAL exit) of the startup - * process is treated as a crash, except that we don't want - * to reinitialize. + * process is treated as a crash, except that we don't want to + * reinitialize. */ if (!EXIT_STATUS_0(exitstatus)) { @@ -2454,8 +2457,8 @@ CleanupBackend(int pid, if (!ReleasePostmasterChildSlot(bp->child_slot)) { /* - * Uh-oh, the child failed to clean itself up. Treat - * as a crash after all. + * Uh-oh, the child failed to clean itself up. Treat as a + * crash after all. */ HandleChildCrash(pid, exitstatus, _("server process")); return; @@ -2733,8 +2736,8 @@ PostmasterStateMachine(void) pmState = PM_WAIT_DEAD_END; /* - * We already SIGQUIT'd the archiver and stats processes, - * if any, when we entered FatalError state. + * We already SIGQUIT'd the archiver and stats processes, if + * any, when we entered FatalError state. */ } else @@ -2825,8 +2828,8 @@ PostmasterStateMachine(void) else { /* - * Terminate backup mode to avoid recovery after a - * clean fast shutdown. + * Terminate backup mode to avoid recovery after a clean fast + * shutdown. */ CancelBackup(); @@ -2836,17 +2839,17 @@ PostmasterStateMachine(void) } /* - * If recovery failed, wait for all non-syslogger children to exit, - * and then exit postmaster. We don't try to reinitialize when recovery - * fails, because more than likely it will just fail again and we will - * keep trying forever. + * If recovery failed, wait for all non-syslogger children to exit, and + * then exit postmaster. We don't try to reinitialize when recovery fails, + * because more than likely it will just fail again and we will keep + * trying forever. */ if (RecoveryError && pmState == PM_NO_CHILDREN) - ExitPostmaster(1); + ExitPostmaster(1); /* - * If we need to recover from a crash, wait for all non-syslogger - * children to exit, then reset shmem and StartupDataBase. + * If we need to recover from a crash, wait for all non-syslogger children + * to exit, then reset shmem and StartupDataBase. */ if (FatalError && pmState == PM_NO_CHILDREN) { @@ -2940,8 +2943,8 @@ BackendStartup(Port *port) pid_t pid; /* - * Create backend data structure. Better before the fork() so we - * can handle failure cleanly. + * Create backend data structure. Better before the fork() so we can + * handle failure cleanly. */ bn = (Backend *) malloc(sizeof(Backend)); if (!bn) @@ -3225,8 +3228,8 @@ BackendInitialize(Port *port) if (!load_hba()) { - /* - * It makes no sense continue if we fail to load the HBA file, since + /* + * It makes no sense continue if we fail to load the HBA file, since * there is no way to connect to the database in this case. */ ereport(FATAL, @@ -3800,10 +3803,10 @@ SubPostmasterMain(int argc, char *argv[]) read_nondefault_variables(); /* - * Reload any libraries that were preloaded by the postmaster. Since - * we exec'd this process, those libraries didn't come along with us; - * but we should load them into all child processes to be consistent - * with the non-EXEC_BACKEND behavior. + * Reload any libraries that were preloaded by the postmaster. Since we + * exec'd this process, those libraries didn't come along with us; but we + * should load them into all child processes to be consistent with the + * non-EXEC_BACKEND behavior. */ process_shared_preload_libraries(); @@ -3991,8 +3994,8 @@ sigusr1_handler(SIGNAL_ARGS) FatalError = false; /* - * Crank up the background writer. It doesn't matter if this - * fails, we'll just try again later. + * Crank up the background writer. It doesn't matter if this fails, + * we'll just try again later. */ Assert(BgWriterPID == 0); BgWriterPID = StartBackgroundWriter(); @@ -4005,7 +4008,7 @@ sigusr1_handler(SIGNAL_ARGS) /* * Load the flat authorization file into postmaster's cache. The * startup process won't have recomputed this from the database yet, - * so we it may change following recovery. + * so we it may change following recovery. */ load_role(); @@ -4292,10 +4295,10 @@ StartAutovacuumWorker(void) if (bn) { /* - * Compute the cancel key that will be assigned to this session. We - * probably don't need cancel keys for autovac workers, but we'd - * better have something random in the field to prevent unfriendly - * people from sending cancels to them. + * Compute the cancel key that will be assigned to this session. + * We probably don't need cancel keys for autovac workers, but + * we'd better have something random in the field to prevent + * unfriendly people from sending cancels to them. */ MyCancelKey = PostmasterRandom(); bn->cancel_key = MyCancelKey; @@ -4379,9 +4382,9 @@ CreateOptsFile(int argc, char *argv[], char *fullprogname) * This reports the number of entries needed in per-child-process arrays * (the PMChildFlags array, and if EXEC_BACKEND the ShmemBackendArray). * These arrays include regular backends and autovac workers, but not special - * children nor dead_end children. This allows the arrays to have a fixed + * children nor dead_end children. This allows the arrays to have a fixed * maximum size, to wit the same too-many-children limit enforced by - * canAcceptConnections(). The exact value isn't too critical as long as + * canAcceptConnections(). The exact value isn't too critical as long as * it's more than MaxBackends. */ int @@ -4409,20 +4412,20 @@ extern int pgStatSock; #define write_inheritable_socket(dest, src, childpid) (*(dest) = (src)) #define read_inheritable_socket(dest, src) (*(dest) = *(src)) #else -static void write_duplicated_handle(HANDLE * dest, HANDLE src, HANDLE child); -static void write_inheritable_socket(InheritableSocket * dest, SOCKET src, +static void write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE child); +static void write_inheritable_socket(InheritableSocket *dest, SOCKET src, pid_t childPid); -static void read_inheritable_socket(SOCKET * dest, InheritableSocket * src); +static void read_inheritable_socket(SOCKET *dest, InheritableSocket *src); #endif /* Save critical backend variables into the BackendParameters struct */ #ifndef WIN32 static bool -save_backend_variables(BackendParameters * param, Port *port) +save_backend_variables(BackendParameters *param, Port *port) #else static bool -save_backend_variables(BackendParameters * param, Port *port, +save_backend_variables(BackendParameters *param, Port *port, HANDLE childProcess, pid_t childPid) #endif { @@ -4484,7 +4487,7 @@ save_backend_variables(BackendParameters * param, Port *port, * process instance of the handle to the parameter file. */ static void -write_duplicated_handle(HANDLE * dest, HANDLE src, HANDLE childProcess) +write_duplicated_handle(HANDLE *dest, HANDLE src, HANDLE childProcess) { HANDLE hChild = INVALID_HANDLE_VALUE; @@ -4510,7 +4513,7 @@ write_duplicated_handle(HANDLE * dest, HANDLE src, HANDLE childProcess) * straight socket inheritance. */ static void -write_inheritable_socket(InheritableSocket * dest, SOCKET src, pid_t childpid) +write_inheritable_socket(InheritableSocket *dest, SOCKET src, pid_t childpid) { dest->origsocket = src; if (src != 0 && src != -1) @@ -4527,7 +4530,7 @@ write_inheritable_socket(InheritableSocket * dest, SOCKET src, pid_t childpid) * Read a duplicate socket structure back, and get the socket descriptor. */ static void -read_inheritable_socket(SOCKET * dest, InheritableSocket * src) +read_inheritable_socket(SOCKET *dest, InheritableSocket *src) { SOCKET s; @@ -4632,7 +4635,7 @@ read_backend_variables(char *id, Port *port) /* Restore critical backend variables from the BackendParameters struct */ static void -restore_backend_variables(BackendParameters * param, Port *port) +restore_backend_variables(BackendParameters *param, Port *port) { memcpy(port, ¶m->port, sizeof(Port)); read_inheritable_socket(&port->sock, ¶m->portsocket); @@ -4717,7 +4720,6 @@ ShmemBackendArrayRemove(Backend *bn) /* Mark the slot as empty */ ShmemBackendArray[i].pid = 0; } - #endif /* EXEC_BACKEND */ diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index 8475bdbd88a..e6577c944df 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -18,7 +18,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.50 2009/03/18 08:44:49 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/syslogger.c,v 1.51 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -368,7 +368,8 @@ SysLoggerMain(int argc, char *argv[]) * Wait for some data, timing out after 1 second */ FD_ZERO(&rfds); - FD_SET(syslogPipe[0], &rfds); + FD_SET (syslogPipe[0], &rfds); + timeout.tv_sec = 1; timeout.tv_usec = 0; @@ -1194,7 +1195,7 @@ logfile_getname(pg_time_t timestamp, char *suffix) /* treat it as a strftime pattern */ pg_strftime(filename + len, MAXPGPATH - len, Log_filename, - pg_localtime(×tamp, log_timezone)); + pg_localtime(×tamp, log_timezone)); if (suffix != NULL) { diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index 414731ebc5a..9e08a5b710e 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -34,7 +34,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/walwriter.c,v 1.6 2009/05/15 15:56:39 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/walwriter.c,v 1.7 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -302,8 +302,8 @@ wal_quickdie(SIGNAL_ARGS) * system reset cycle if some idiot DBA sends a manual SIGQUIT to a random * backend. This is necessary precisely because we don't clean up our * shared memory state. (The "dead man switch" mechanism in pmsignal.c - * should ensure the postmaster sees this as a crash, too, but no harm - * in being doubly sure.) + * should ensure the postmaster sees this as a crash, too, but no harm in + * being doubly sure.) */ exit(2); } diff --git a/src/backend/regex/regc_lex.c b/src/backend/regex/regc_lex.c index d2fc591ed8a..782c0085c28 100644 --- a/src/backend/regex/regc_lex.c +++ b/src/backend/regex/regc_lex.c @@ -28,7 +28,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $PostgreSQL: pgsql/src/backend/regex/regc_lex.c,v 1.8 2008/02/14 17:33:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/regex/regc_lex.c,v 1.9 2009/06/11 14:49:01 momjian Exp $ * */ @@ -214,47 +214,47 @@ lexnest(struct vars * v, /* * string constants to interpolate as expansions of things like \d */ -static const chr backd[] = { /* \d */ +static const chr backd[] = { /* \d */ CHR('['), CHR('['), CHR(':'), CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'), CHR(':'), CHR(']'), CHR(']') }; -static const chr backD[] = { /* \D */ +static const chr backD[] = { /* \D */ CHR('['), CHR('^'), CHR('['), CHR(':'), CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'), CHR(':'), CHR(']'), CHR(']') }; -static const chr brbackd[] = { /* \d within brackets */ +static const chr brbackd[] = { /* \d within brackets */ CHR('['), CHR(':'), CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'), CHR(':'), CHR(']') }; -static const chr backs[] = { /* \s */ +static const chr backs[] = { /* \s */ CHR('['), CHR('['), CHR(':'), CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'), CHR(':'), CHR(']'), CHR(']') }; -static const chr backS[] = { /* \S */ +static const chr backS[] = { /* \S */ CHR('['), CHR('^'), CHR('['), CHR(':'), CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'), CHR(':'), CHR(']'), CHR(']') }; -static const chr brbacks[] = { /* \s within brackets */ +static const chr brbacks[] = { /* \s within brackets */ CHR('['), CHR(':'), CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'), CHR(':'), CHR(']') }; -static const chr backw[] = { /* \w */ +static const chr backw[] = { /* \w */ CHR('['), CHR('['), CHR(':'), CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'), CHR(':'), CHR(']'), CHR('_'), CHR(']') }; -static const chr backW[] = { /* \W */ +static const chr backW[] = { /* \W */ CHR('['), CHR('^'), CHR('['), CHR(':'), CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'), CHR(':'), CHR(']'), CHR('_'), CHR(']') }; -static const chr brbackw[] = { /* \w within brackets */ +static const chr brbackw[] = { /* \w within brackets */ CHR('['), CHR(':'), CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'), CHR(':'), CHR(']'), CHR('_') diff --git a/src/backend/regex/regc_nfa.c b/src/backend/regex/regc_nfa.c index 4e307f5c152..ef56630173a 100644 --- a/src/backend/regex/regc_nfa.c +++ b/src/backend/regex/regc_nfa.c @@ -28,7 +28,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $PostgreSQL: pgsql/src/backend/regex/regc_nfa.c,v 1.6 2008/02/14 17:33:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/regex/regc_nfa.c,v 1.7 2009/06/11 14:49:01 momjian Exp $ * * * One or two things that technically ought to be in here @@ -93,7 +93,7 @@ newnfa(struct vars * v, * TooManyStates - checks if the max states exceeds the compile-time value */ static int -TooManyStates(struct nfa *nfa) +TooManyStates(struct nfa * nfa) { struct nfa *parent = nfa->parent; size_t sz = nfa->size; @@ -112,7 +112,7 @@ TooManyStates(struct nfa *nfa) * IncrementSize - increases the tracked size of the NFA and its parents. */ static void -IncrementSize(struct nfa *nfa) +IncrementSize(struct nfa * nfa) { struct nfa *parent = nfa->parent; @@ -128,7 +128,7 @@ IncrementSize(struct nfa *nfa) * DecrementSize - decreases the tracked size of the NFA and its parents. */ static void -DecrementSize(struct nfa *nfa) +DecrementSize(struct nfa * nfa) { struct nfa *parent = nfa->parent; @@ -856,7 +856,8 @@ pull(struct nfa * nfa, /* * DGP 2007-11-15: Cloning a state with a circular constraint on its list - * of outs can lead to trouble [Tcl Bug 1810038], so get rid of them first. + * of outs can lead to trouble [Tcl Bug 1810038], so get rid of them + * first. */ for (a = from->outs; a != NULL; a = nexta) { @@ -998,12 +999,12 @@ push(struct nfa * nfa, } /* - * DGP 2007-11-15: Here we duplicate the same protections as appear - * in pull() above to avoid troubles with cloning a state with a - * circular constraint on its list of ins. It is not clear whether - * this is necessary, or is protecting against a "can't happen". - * Any test case that actually leads to a freearc() call here would - * be a welcome addition to the test suite. + * DGP 2007-11-15: Here we duplicate the same protections as appear in + * pull() above to avoid troubles with cloning a state with a circular + * constraint on its list of ins. It is not clear whether this is + * necessary, or is protecting against a "can't happen". Any test case + * that actually leads to a freearc() call here would be a welcome + * addition to the test suite. */ for (a = to->ins; a != NULL; a = nexta) { @@ -1143,7 +1144,7 @@ fixempties(struct nfa * nfa, { progress = 0; for (s = nfa->states; s != NULL && !NISERR() && - s->no != FREESTATE; s = nexts) + s->no != FREESTATE; s = nexts) { nexts = s->next; for (a = s->outs; a != NULL && !NISERR(); a = nexta) diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index b1f8c6e3ff7..77a889412f4 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.137 2009/05/13 22:32:55 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.138 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -120,7 +120,7 @@ InsertRule(char *rulname, replaces[Anum_pg_rewrite_ev_action - 1] = true; tup = heap_modify_tuple(oldtup, RelationGetDescr(pg_rewrite_desc), - values, nulls, replaces); + values, nulls, replaces); simple_heap_update(pg_rewrite_desc, &tup->t_self, tup); @@ -388,9 +388,9 @@ DefineQueryRewrite(char *rulename, * * If so, check that the relation is empty because the storage for the * relation is going to be deleted. Also insist that the rel not have - * any triggers, indexes, or child tables. (Note: these tests are - * too strict, because they will reject relations that once had such - * but don't anymore. But we don't really care, because this whole + * any triggers, indexes, or child tables. (Note: these tests are too + * strict, because they will reject relations that once had such but + * don't anymore. But we don't really care, because this whole * business of converting relations to views is just a kluge to allow * loading ancient pg_dump files.) */ diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index 336ae829ce2..c1233b63570 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.185 2009/01/27 12:40:15 petere Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.186 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -381,7 +381,7 @@ rewriteRuleAction(Query *parsetree, break; } if (sub_action->hasSubLinks) - break; /* no need to keep scanning rtable */ + break; /* no need to keep scanning rtable */ } } @@ -501,7 +501,7 @@ rewriteRuleAction(Query *parsetree, */ if (parsetree->hasSubLinks && !rule_action->hasSubLinks) rule_action->hasSubLinks = - checkExprHasSubLink((Node *) rule_action->returningList); + checkExprHasSubLink((Node *) rule_action->returningList); } return rule_action; @@ -1261,7 +1261,7 @@ markQueryForLocking(Query *qry, Node *jtnode, bool forUpdate, bool noWait) if (strcmp(cte->ctename, rte->ctename) == 0) break; } - if (lc == NULL) /* shouldn't happen */ + if (lc == NULL) /* shouldn't happen */ elog(ERROR, "could not find CTE \"%s\"", rte->ctename); /* should be analyzed by now */ Assert(IsA(cte->ctequery, Query)); diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c index 72cddaaa34c..570434ed83e 100644 --- a/src/backend/rewrite/rewriteManip.c +++ b/src/backend/rewrite/rewriteManip.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.121 2009/02/25 03:30:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.122 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -40,12 +40,12 @@ typedef struct } locate_windowfunc_context; static bool contain_aggs_of_level_walker(Node *node, - contain_aggs_of_level_context *context); + contain_aggs_of_level_context *context); static bool locate_agg_of_level_walker(Node *node, - locate_agg_of_level_context *context); + locate_agg_of_level_context *context); static bool contain_windowfuncs_walker(Node *node, void *context); static bool locate_windowfunc_walker(Node *node, - locate_windowfunc_context *context); + locate_windowfunc_context *context); static bool checkExprHasSubLink_walker(Node *node, void *context); static Relids offset_relid_set(Relids relids, int offset); static Relids adjust_relid_set(Relids relids, int oldrelid, int newrelid); @@ -68,7 +68,7 @@ checkExprHasAggs(Node *node) * specified query level. * * The objective of this routine is to detect whether there are aggregates - * belonging to the given query level. Aggregates belonging to subqueries + * belonging to the given query level. Aggregates belonging to subqueries * or outer queries do NOT cause a true result. We must recurse into * subqueries to detect outer-reference aggregates that logically belong to * the specified query level. @@ -123,7 +123,7 @@ contain_aggs_of_level_walker(Node *node, * Find the parse location of any aggregate of the specified query level. * * Returns -1 if no such agg is in the querytree, or if they all have - * unknown parse location. (The former case is probably caller error, + * unknown parse location. (The former case is probably caller error, * but we don't bother to distinguish it from the latter case.) * * Note: it might seem appropriate to merge this functionality into @@ -136,7 +136,7 @@ locate_agg_of_level(Node *node, int levelsup) { locate_agg_of_level_context context; - context.agg_location = -1; /* in case we find nothing */ + context.agg_location = -1; /* in case we find nothing */ context.sublevels_up = levelsup; /* @@ -207,7 +207,7 @@ contain_windowfuncs_walker(Node *node, void *context) if (node == NULL) return false; if (IsA(node, WindowFunc)) - return true; /* abort the tree traversal and return true */ + return true; /* abort the tree traversal and return true */ /* Mustn't recurse into subselects */ return expression_tree_walker(node, contain_windowfuncs_walker, (void *) context); @@ -218,7 +218,7 @@ contain_windowfuncs_walker(Node *node, void *context) * Find the parse location of any windowfunc of the current query level. * * Returns -1 if no such windowfunc is in the querytree, or if they all have - * unknown parse location. (The former case is probably caller error, + * unknown parse location. (The former case is probably caller error, * but we don't bother to distinguish it from the latter case.) * * Note: it might seem appropriate to merge this functionality into @@ -231,7 +231,7 @@ locate_windowfunc(Node *node) { locate_windowfunc_context context; - context.win_location = -1; /* in case we find nothing */ + context.win_location = -1; /* in case we find nothing */ /* * Must be prepared to start with a Query or a bare expression tree; if @@ -1169,7 +1169,7 @@ ResolveNew_mutator(Node *node, ResolveNew_context *context) * If generating an expansion for a var of a named rowtype * (ie, this is a plain relation RTE), then we must include * dummy items for dropped columns. If the var is RECORD (ie, - * this is a JOIN), then omit dropped columns. Either way, + * this is a JOIN), then omit dropped columns. Either way, * attach column names to the RowExpr for use of ruleutils.c. */ expandRTE(context->target_rte, diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c index a7b4413e3e4..f40b2077181 100644 --- a/src/backend/rewrite/rewriteRemove.c +++ b/src/backend/rewrite/rewriteRemove.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteRemove.c,v 1.77 2009/01/27 12:40:15 petere Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteRemove.c,v 1.78 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -126,9 +126,9 @@ RemoveRewriteRuleById(Oid ruleOid) elog(ERROR, "could not find tuple for rule %u", ruleOid); /* - * We had better grab AccessExclusiveLock to ensure that no queries - * are going on that might depend on this rule. (Note: a weaker lock - * would suffice if it's not an ON SELECT rule.) + * We had better grab AccessExclusiveLock to ensure that no queries are + * going on that might depend on this rule. (Note: a weaker lock would + * suffice if it's not an ON SELECT rule.) */ eventRelationOid = ((Form_pg_rewrite) GETSTRUCT(tuple))->ev_class; event_relation = heap_open(eventRelationOid, AccessExclusiveLock); diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index da5f8a74146..be4c86bd382 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.251 2009/04/03 18:17:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/bufmgr.c,v 1.252 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -81,9 +81,9 @@ static volatile BufferDesc *PinCountWaitBuf = NULL; static Buffer ReadBuffer_common(SMgrRelation reln, bool isLocalBuf, - ForkNumber forkNum, BlockNumber blockNum, - ReadBufferMode mode , BufferAccessStrategy strategy, - bool *hit); + ForkNumber forkNum, BlockNumber blockNum, + ReadBufferMode mode, BufferAccessStrategy strategy, + bool *hit); static bool PinBuffer(volatile BufferDesc *buf, BufferAccessStrategy strategy); static void PinBuffer_Locked(volatile BufferDesc *buf); static void UnpinBuffer(volatile BufferDesc *buf, bool fixOwner); @@ -106,7 +106,7 @@ static void AtProcExit_Buffers(int code, Datum arg); * PrefetchBuffer -- initiate asynchronous read of a block of a relation * * This is named by analogy to ReadBuffer but doesn't actually allocate a - * buffer. Instead it tries to ensure that a future ReadBuffer for the given + * buffer. Instead it tries to ensure that a future ReadBuffer for the given * block will not be delayed by the I/O. Prefetching is optional. * No-op if prefetching isn't compiled in. */ @@ -126,16 +126,16 @@ PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum) if (RELATION_IS_OTHER_TEMP(reln)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot access temporary tables of other sessions"))); + errmsg("cannot access temporary tables of other sessions"))); /* pass it off to localbuf.c */ LocalPrefetchBuffer(reln->rd_smgr, forkNum, blockNum); } else { - BufferTag newTag; /* identity of requested block */ - uint32 newHash; /* hash value for newTag */ - LWLockId newPartitionLock; /* buffer partition lock for it */ + BufferTag newTag; /* identity of requested block */ + uint32 newHash; /* hash value for newTag */ + LWLockId newPartitionLock; /* buffer partition lock for it */ int buf_id; /* create a tag so we can lookup the buffer */ @@ -156,17 +156,17 @@ PrefetchBuffer(Relation reln, ForkNumber forkNum, BlockNumber blockNum) /* * If the block *is* in buffers, we do nothing. This is not really - * ideal: the block might be just about to be evicted, which would - * be stupid since we know we are going to need it soon. But the - * only easy answer is to bump the usage_count, which does not seem - * like a great solution: when the caller does ultimately touch the - * block, usage_count would get bumped again, resulting in too much - * favoritism for blocks that are involved in a prefetch sequence. - * A real fix would involve some additional per-buffer state, and - * it's not clear that there's enough of a problem to justify that. + * ideal: the block might be just about to be evicted, which would be + * stupid since we know we are going to need it soon. But the only + * easy answer is to bump the usage_count, which does not seem like a + * great solution: when the caller does ultimately touch the block, + * usage_count would get bumped again, resulting in too much + * favoritism for blocks that are involved in a prefetch sequence. A + * real fix would involve some additional per-buffer state, and it's + * not clear that there's enough of a problem to justify that. */ } -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } @@ -202,7 +202,7 @@ ReadBuffer(Relation reln, BlockNumber blockNum) * for non-critical data, where the caller is prepared to repair errors. * * In RBM_ZERO mode, if the page isn't in buffer cache already, it's filled - * with zeros instead of reading it from disk. Useful when the caller is + * with zeros instead of reading it from disk. Useful when the caller is * going to fill the page from scratch, since this saves I/O and avoids * unnecessary failure if the page-on-disk has corrupt page headers. * Caution: do not use this mode to read a page that is beyond the relation's @@ -216,16 +216,16 @@ Buffer ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy) { - bool hit; - Buffer buf; + bool hit; + Buffer buf; /* Open it at the smgr level if not already done */ RelationOpenSmgr(reln); /* - * Reject attempts to read non-local temporary relations; we would - * be likely to get wrong data since we have no visibility into the - * owning session's local buffers. + * Reject attempts to read non-local temporary relations; we would be + * likely to get wrong data since we have no visibility into the owning + * session's local buffers. */ if (RELATION_IS_OTHER_TEMP(reln)) ereport(ERROR, @@ -233,8 +233,8 @@ ReadBufferExtended(Relation reln, ForkNumber forkNum, BlockNumber blockNum, errmsg("cannot access temporary tables of other sessions"))); /* - * Read the buffer, and update pgstat counters to reflect a cache - * hit or miss. + * Read the buffer, and update pgstat counters to reflect a cache hit or + * miss. */ pgstat_count_buffer_read(reln); buf = ReadBuffer_common(reln->rd_smgr, reln->rd_istemp, forkNum, blockNum, @@ -256,9 +256,10 @@ ReadBufferWithoutRelcache(RelFileNode rnode, bool isTemp, ForkNumber forkNum, BlockNumber blockNum, ReadBufferMode mode, BufferAccessStrategy strategy) { - bool hit; + bool hit; SMgrRelation smgr = smgropen(rnode); + return ReadBuffer_common(smgr, isTemp, forkNum, blockNum, mode, strategy, &hit); } @@ -357,9 +358,9 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum, bufBlock = isLocalBuf ? LocalBufHdrGetBlock(bufHdr) : BufHdrGetBlock(bufHdr); if (!PageIsNew((Page) bufBlock)) ereport(ERROR, - (errmsg("unexpected data beyond EOF in block %u of relation %s", - blockNum, relpath(smgr->smgr_rnode, forkNum)), - errhint("This has been seen to occur with buggy kernels; consider updating your system."))); + (errmsg("unexpected data beyond EOF in block %u of relation %s", + blockNum, relpath(smgr->smgr_rnode, forkNum)), + errhint("This has been seen to occur with buggy kernels; consider updating your system."))); /* * We *must* do smgrextend before succeeding, else the page will not @@ -439,9 +440,9 @@ ReadBuffer_common(SMgrRelation smgr, bool isLocalBuf, ForkNumber forkNum, else ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("invalid page header in block %u of relation %s", - blockNum, - relpath(smgr->smgr_rnode, forkNum)))); + errmsg("invalid page header in block %u of relation %s", + blockNum, + relpath(smgr->smgr_rnode, forkNum)))); } } } @@ -631,17 +632,17 @@ BufferAlloc(SMgrRelation smgr, ForkNumber forkNum, /* OK, do the I/O */ TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_START(forkNum, blockNum, - smgr->smgr_rnode.spcNode, - smgr->smgr_rnode.dbNode, - smgr->smgr_rnode.relNode); + smgr->smgr_rnode.spcNode, + smgr->smgr_rnode.dbNode, + smgr->smgr_rnode.relNode); FlushBuffer(buf, NULL); LWLockRelease(buf->content_lock); TRACE_POSTGRESQL_BUFFER_WRITE_DIRTY_DONE(forkNum, blockNum, - smgr->smgr_rnode.spcNode, + smgr->smgr_rnode.spcNode, smgr->smgr_rnode.dbNode, - smgr->smgr_rnode.relNode); + smgr->smgr_rnode.relNode); } else { @@ -983,7 +984,7 @@ ReleaseAndReadBuffer(Buffer buffer, Relation relation, BlockNumber blockNum) { - ForkNumber forkNum = MAIN_FORKNUM; + ForkNumber forkNum = MAIN_FORKNUM; volatile BufferDesc *bufHdr; if (BufferIsValid(buffer)) @@ -2708,7 +2709,8 @@ AbortBufferIO(void) if (sv_flags & BM_IO_ERROR) { /* Buffer is pinned, so we can read tag without spinlock */ - char *path = relpath(buf->tag.rnode, buf->tag.forkNum); + char *path = relpath(buf->tag.rnode, buf->tag.forkNum); + ereport(WARNING, (errcode(ERRCODE_IO_ERROR), errmsg("could not write block %u of %s", @@ -2732,7 +2734,8 @@ buffer_write_error_callback(void *arg) /* Buffer is pinned, so we can read the tag without locking the spinlock */ if (bufHdr != NULL) { - char *path = relpath(bufHdr->tag.rnode, bufHdr->tag.forkNum); + char *path = relpath(bufHdr->tag.rnode, bufHdr->tag.forkNum); + errcontext("writing block %u of relation %s", bufHdr->tag.blockNum, path); pfree(path); diff --git a/src/backend/storage/buffer/localbuf.c b/src/backend/storage/buffer/localbuf.c index 5431419cfe6..3caa42a1a68 100644 --- a/src/backend/storage/buffer/localbuf.c +++ b/src/backend/storage/buffer/localbuf.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/localbuf.c,v 1.86 2009/01/12 05:10:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/localbuf.c,v 1.87 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -85,7 +85,7 @@ LocalPrefetchBuffer(SMgrRelation smgr, ForkNumber forkNum, /* Not in buffers, so initiate prefetch */ smgrprefetch(smgr, forkNum, blockNum); -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } @@ -149,7 +149,7 @@ LocalBufferAlloc(SMgrRelation smgr, ForkNumber forkNum, BlockNumber blockNum, #ifdef LBDEBUG fprintf(stderr, "LB ALLOC (%u,%d,%d) %d\n", - smgr->smgr_rnode.relNode, forkNum, blockNum, -nextFreeLocalBuf - 1); + smgr->smgr_rnode.relNode, forkNum, blockNum, -nextFreeLocalBuf - 1); #endif /* diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c index 3779a28d3d2..9516c88acdb 100644 --- a/src/backend/storage/file/buffile.c +++ b/src/backend/storage/file/buffile.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/file/buffile.c,v 1.33 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/file/buffile.c,v 1.34 2009/06/11 14:49:01 momjian Exp $ * * NOTES: * @@ -125,7 +125,7 @@ extendBufFile(BufFile *file) file->files = (File *) repalloc(file->files, (file->numFiles + 1) * sizeof(File)); file->offsets = (off_t *) repalloc(file->offsets, - (file->numFiles + 1) * sizeof(off_t)); + (file->numFiles + 1) * sizeof(off_t)); file->files[file->numFiles] = pfile; file->offsets[file->numFiles] = 0L; file->numFiles++; diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index 7749d5a4052..e0742701f1e 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.148 2009/03/04 09:12:49 petere Exp $ + * $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.149 2009/06/11 14:49:01 momjian Exp $ * * NOTES: * @@ -128,13 +128,13 @@ static int max_safe_fds = 32; /* default if not changed */ * Flag to tell whether it's worth scanning VfdCache looking for temp files to * close */ -static bool have_xact_temporary_files = false; +static bool have_xact_temporary_files = false; typedef struct vfd { int fd; /* current FD, or VFD_CLOSED if none */ unsigned short fdstate; /* bitflags for VFD's state */ - SubTransactionId create_subid; /* for TEMPORARY fds, creating subxact */ + SubTransactionId create_subid; /* for TEMPORARY fds, creating subxact */ File nextFree; /* link to next free VFD, if in freelist */ File lruMoreRecently; /* doubly linked recency-of-use list */ File lruLessRecently; @@ -364,6 +364,7 @@ count_usable_fds(int max_to_probe, int *usable_fds, int *already_open) int used = 0; int highestfd = 0; int j; + #ifdef HAVE_GETRLIMIT struct rlimit rlim; int getrlimit_status; @@ -373,14 +374,14 @@ count_usable_fds(int max_to_probe, int *usable_fds, int *already_open) fd = (int *) palloc(size * sizeof(int)); #ifdef HAVE_GETRLIMIT -# ifdef RLIMIT_NOFILE /* most platforms use RLIMIT_NOFILE */ +#ifdef RLIMIT_NOFILE /* most platforms use RLIMIT_NOFILE */ getrlimit_status = getrlimit(RLIMIT_NOFILE, &rlim); -# else /* but BSD doesn't ... */ +#else /* but BSD doesn't ... */ getrlimit_status = getrlimit(RLIMIT_OFILE, &rlim); -# endif /* RLIMIT_NOFILE */ +#endif /* RLIMIT_NOFILE */ if (getrlimit_status != 0) ereport(WARNING, (errmsg("getrlimit failed: %m"))); -#endif /* HAVE_GETRLIMIT */ +#endif /* HAVE_GETRLIMIT */ /* dup until failure or probe limit reached */ for (;;) @@ -388,7 +389,11 @@ count_usable_fds(int max_to_probe, int *usable_fds, int *already_open) int thisfd; #ifdef HAVE_GETRLIMIT - /* don't go beyond RLIMIT_NOFILE; causes irritating kernel logs on some platforms */ + + /* + * don't go beyond RLIMIT_NOFILE; causes irritating kernel logs on + * some platforms + */ if (getrlimit_status == 0 && highestfd >= rlim.rlim_cur - 1) break; #endif @@ -1069,7 +1074,7 @@ FilePrefetch(File file, off_t offset, int amount) int returnCode; Assert(FileIsValid(file)); - + DO_DB(elog(LOG, "FilePrefetch: %d (%s) " INT64_FORMAT " %d", file, VfdCache[file].fileName, (int64) offset, amount)); diff --git a/src/backend/storage/freespace/freespace.c b/src/backend/storage/freespace/freespace.c index 558c56f80d5..f61c5143ba6 100644 --- a/src/backend/storage/freespace/freespace.c +++ b/src/backend/storage/freespace/freespace.c @@ -8,16 +8,16 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/freespace/freespace.c,v 1.72 2009/01/20 18:59:37 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/storage/freespace/freespace.c,v 1.73 2009/06/11 14:49:01 momjian Exp $ * * * NOTES: * - * Free Space Map keeps track of the amount of free space on pages, and - * allows quickly searching for a page with enough free space. The FSM is - * stored in a dedicated relation fork of all heap relations, and those - * index access methods that need it (see also indexfsm.c). See README for - * more information. + * Free Space Map keeps track of the amount of free space on pages, and + * allows quickly searching for a page with enough free space. The FSM is + * stored in a dedicated relation fork of all heap relations, and those + * index access methods that need it (see also indexfsm.c). See README for + * more information. * *------------------------------------------------------------------------- */ @@ -49,10 +49,10 @@ * look like this * * - * Range Category - * 0 - 31 0 - * 32 - 63 1 - * ... ... ... + * Range Category + * 0 - 31 0 + * 32 - 63 1 + * ... ... ... * 8096 - 8127 253 * 8128 - 8163 254 * 8164 - 8192 255 @@ -86,12 +86,12 @@ */ typedef struct { - int level; /* level */ - int logpageno; /* page number within the level */ + int level; /* level */ + int logpageno; /* page number within the level */ } FSMAddress; /* Address of the root page. */ -static const FSMAddress FSM_ROOT_ADDRESS = { FSM_ROOT_LEVEL, 0 }; +static const FSMAddress FSM_ROOT_ADDRESS = {FSM_ROOT_LEVEL, 0}; /* functions to navigate the tree */ static FSMAddress fsm_get_child(FSMAddress parent, uint16 slot); @@ -106,11 +106,11 @@ static void fsm_extend(Relation rel, BlockNumber fsm_nblocks); /* functions to convert amount of free space to a FSM category */ static uint8 fsm_space_avail_to_cat(Size avail); static uint8 fsm_space_needed_to_cat(Size needed); -static Size fsm_space_cat_to_avail(uint8 cat); +static Size fsm_space_cat_to_avail(uint8 cat); /* workhorse functions for various operations */ static int fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, - uint8 newValue, uint8 minValue); + uint8 newValue, uint8 minValue); static BlockNumber fsm_search(Relation rel, uint8 min_cat); static uint8 fsm_vacuum_page(Relation rel, FSMAddress addr, bool *eof); @@ -133,7 +133,8 @@ static uint8 fsm_vacuum_page(Relation rel, FSMAddress addr, bool *eof); BlockNumber GetPageWithFreeSpace(Relation rel, Size spaceNeeded) { - uint8 min_cat = fsm_space_needed_to_cat(spaceNeeded); + uint8 min_cat = fsm_space_needed_to_cat(spaceNeeded); + return fsm_search(rel, min_cat); } @@ -259,7 +260,7 @@ GetRecordedFreeSpace(Relation rel, BlockNumber heapBlk) void FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks) { - BlockNumber new_nfsmblocks; + BlockNumber new_nfsmblocks; FSMAddress first_removed_address; uint16 first_removed_slot; Buffer buf; @@ -278,15 +279,15 @@ FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks) /* * Zero out the tail of the last remaining FSM page. If the slot - * representing the first removed heap block is at a page boundary, as - * the first slot on the FSM page that first_removed_address points to, - * we can just truncate that page altogether. + * representing the first removed heap block is at a page boundary, as the + * first slot on the FSM page that first_removed_address points to, we can + * just truncate that page altogether. */ if (first_removed_slot > 0) { buf = fsm_readbuf(rel, first_removed_address, false); if (!BufferIsValid(buf)) - return; /* nothing to do; the FSM was already smaller */ + return; /* nothing to do; the FSM was already smaller */ LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE); fsm_truncate_avail(BufferGetPage(buf), first_removed_slot); MarkBufferDirty(buf); @@ -298,15 +299,15 @@ FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks) { new_nfsmblocks = fsm_logical_to_physical(first_removed_address); if (smgrnblocks(rel->rd_smgr, FSM_FORKNUM) <= new_nfsmblocks) - return; /* nothing to do; the FSM was already smaller */ + return; /* nothing to do; the FSM was already smaller */ } /* Truncate the unused FSM pages */ smgrtruncate(rel->rd_smgr, FSM_FORKNUM, new_nfsmblocks, rel->rd_istemp); /* - * Need to invalidate the relcache entry, because rd_fsm_nblocks - * seen by other backends is no longer valid. + * Need to invalidate the relcache entry, because rd_fsm_nblocks seen by + * other backends is no longer valid. */ if (!InRecovery) CacheInvalidateRelcache(rel); @@ -320,7 +321,7 @@ FreeSpaceMapTruncateRel(Relation rel, BlockNumber nblocks) void FreeSpaceMapVacuum(Relation rel) { - bool dummy; + bool dummy; /* * Traverse the tree in depth-first order. The tree is stored physically @@ -337,7 +338,7 @@ FreeSpaceMapVacuum(Relation rel) static uint8 fsm_space_avail_to_cat(Size avail) { - int cat; + int cat; Assert(avail < BLCKSZ); @@ -377,12 +378,12 @@ fsm_space_cat_to_avail(uint8 cat) static uint8 fsm_space_needed_to_cat(Size needed) { - int cat; + int cat; /* Can't ask for more space than the highest category represents */ if (needed > MaxFSMRequestSize) - elog(ERROR, "invalid FSM request size %lu", - (unsigned long) needed); + elog(ERROR, "invalid FSM request size %lu", + (unsigned long) needed); if (needed == 0) return 1; @@ -402,8 +403,8 @@ static BlockNumber fsm_logical_to_physical(FSMAddress addr) { BlockNumber pages; - int leafno; - int l; + int leafno; + int l; /* * Calculate the logical page number of the first leaf page below the @@ -422,8 +423,8 @@ fsm_logical_to_physical(FSMAddress addr) } /* - * If the page we were asked for wasn't at the bottom level, subtract - * the additional lower level pages we counted above. + * If the page we were asked for wasn't at the bottom level, subtract the + * additional lower level pages we counted above. */ pages -= addr.level; @@ -437,7 +438,7 @@ fsm_logical_to_physical(FSMAddress addr) static FSMAddress fsm_get_location(BlockNumber heapblk, uint16 *slot) { - FSMAddress addr; + FSMAddress addr; addr.level = FSM_BOTTOM_LEVEL; addr.logpageno = heapblk / SlotsPerFSMPage; @@ -463,7 +464,7 @@ fsm_get_heap_blk(FSMAddress addr, uint16 slot) static FSMAddress fsm_get_parent(FSMAddress child, uint16 *slot) { - FSMAddress parent; + FSMAddress parent; Assert(child.level < FSM_ROOT_LEVEL); @@ -481,7 +482,7 @@ fsm_get_parent(FSMAddress child, uint16 *slot) static FSMAddress fsm_get_child(FSMAddress parent, uint16 slot) { - FSMAddress child; + FSMAddress child; Assert(parent.level > FSM_BOTTOM_LEVEL); @@ -501,7 +502,7 @@ static Buffer fsm_readbuf(Relation rel, FSMAddress addr, bool extend) { BlockNumber blkno = fsm_logical_to_physical(addr); - Buffer buf; + Buffer buf; RelationOpenSmgr(rel); @@ -545,20 +546,20 @@ static void fsm_extend(Relation rel, BlockNumber fsm_nblocks) { BlockNumber fsm_nblocks_now; - Page pg; + Page pg; pg = (Page) palloc(BLCKSZ); PageInit(pg, BLCKSZ, 0); /* - * We use the relation extension lock to lock out other backends - * trying to extend the FSM at the same time. It also locks out - * extension of the main fork, unnecessarily, but extending the - * FSM happens seldom enough that it doesn't seem worthwhile to - * have a separate lock tag type for it. + * We use the relation extension lock to lock out other backends trying to + * extend the FSM at the same time. It also locks out extension of the + * main fork, unnecessarily, but extending the FSM happens seldom enough + * that it doesn't seem worthwhile to have a separate lock tag type for + * it. * - * Note that another backend might have extended or created the - * relation before we get the lock. + * Note that another backend might have extended or created the relation + * before we get the lock. */ LockRelationForExtension(rel, ExclusiveLock); @@ -631,14 +632,14 @@ fsm_set_and_search(Relation rel, FSMAddress addr, uint16 slot, static BlockNumber fsm_search(Relation rel, uint8 min_cat) { - int restarts = 0; - FSMAddress addr = FSM_ROOT_ADDRESS; + int restarts = 0; + FSMAddress addr = FSM_ROOT_ADDRESS; for (;;) { - int slot; - Buffer buf; - uint8 max_avail = 0; + int slot; + Buffer buf; + uint8 max_avail = 0; /* Read the FSM page. */ buf = fsm_readbuf(rel, addr, false); @@ -678,8 +679,8 @@ fsm_search(Relation rel, uint8 min_cat) } else { - uint16 parentslot; - FSMAddress parent; + uint16 parentslot; + FSMAddress parent; /* * At lower level, failure can happen if the value in the upper- @@ -697,11 +698,11 @@ fsm_search(Relation rel, uint8 min_cat) fsm_set_and_search(rel, parent, parentslot, max_avail, 0); /* - * If the upper pages are badly out of date, we might need to - * loop quite a few times, updating them as we go. Any - * inconsistencies should eventually be corrected and the loop - * should end. Looping indefinitely is nevertheless scary, so - * provide an emergency valve. + * If the upper pages are badly out of date, we might need to loop + * quite a few times, updating them as we go. Any inconsistencies + * should eventually be corrected and the loop should end. Looping + * indefinitely is nevertheless scary, so provide an emergency + * valve. */ if (restarts++ > 10000) return InvalidBlockNumber; @@ -719,9 +720,9 @@ fsm_search(Relation rel, uint8 min_cat) static uint8 fsm_vacuum_page(Relation rel, FSMAddress addr, bool *eof_p) { - Buffer buf; - Page page; - uint8 max_avail; + Buffer buf; + Page page; + uint8 max_avail; /* Read the page if it exists, or return EOF */ buf = fsm_readbuf(rel, addr, false); @@ -736,17 +737,17 @@ fsm_vacuum_page(Relation rel, FSMAddress addr, bool *eof_p) page = BufferGetPage(buf); /* - * Recurse into children, and fix the information stored about them - * at this level. + * Recurse into children, and fix the information stored about them at + * this level. */ if (addr.level > FSM_BOTTOM_LEVEL) { - int slot; - bool eof = false; + int slot; + bool eof = false; for (slot = 0; slot < SlotsPerFSMPage; slot++) { - int child_avail; + int child_avail; /* After we hit end-of-file, just clear the rest of the slots */ if (!eof) diff --git a/src/backend/storage/freespace/fsmpage.c b/src/backend/storage/freespace/fsmpage.c index 13fe0015a1c..e8feaf0aa28 100644 --- a/src/backend/storage/freespace/fsmpage.c +++ b/src/backend/storage/freespace/fsmpage.c @@ -8,15 +8,15 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/freespace/fsmpage.c,v 1.4 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/freespace/fsmpage.c,v 1.5 2009/06/11 14:49:01 momjian Exp $ * * NOTES: * - * The public functions in this file form an API that hides the internal - * structure of a FSM page. This allows freespace.c to treat each FSM page - * as a black box with SlotsPerPage "slots". fsm_set_avail() and - * fsm_get_avail() let you get/set the value of a slot, and - * fsm_search_avail() lets you search for a slot with value >= X. + * The public functions in this file form an API that hides the internal + * structure of a FSM page. This allows freespace.c to treat each FSM page + * as a black box with SlotsPerPage "slots". fsm_set_avail() and + * fsm_get_avail() let you get/set the value of a slot, and + * fsm_search_avail() lets you search for a slot with value >= X. * *------------------------------------------------------------------------- */ @@ -43,9 +43,9 @@ rightneighbor(int x) x++; /* - * Check if we stepped to the leftmost node at next level, and correct - * if so. The leftmost nodes at each level are numbered x = 2^level - 1, - * so check if (x + 1) is a power of two, using a standard + * Check if we stepped to the leftmost node at next level, and correct if + * so. The leftmost nodes at each level are numbered x = 2^level - 1, so + * check if (x + 1) is a power of two, using a standard * twos-complement-arithmetic trick. */ if (((x + 1) & x) == 0) @@ -62,9 +62,9 @@ rightneighbor(int x) bool fsm_set_avail(Page page, int slot, uint8 value) { - int nodeno = NonLeafNodesPerPage + slot; - FSMPage fsmpage = (FSMPage) PageGetContents(page); - uint8 oldvalue; + int nodeno = NonLeafNodesPerPage + slot; + FSMPage fsmpage = (FSMPage) PageGetContents(page); + uint8 oldvalue; Assert(slot < LeafNodesPerPage); @@ -77,14 +77,14 @@ fsm_set_avail(Page page, int slot, uint8 value) fsmpage->fp_nodes[nodeno] = value; /* - * Propagate up, until we hit the root or a node that doesn't - * need to be updated. + * Propagate up, until we hit the root or a node that doesn't need to be + * updated. */ do { - uint8 newvalue = 0; - int lchild; - int rchild; + uint8 newvalue = 0; + int lchild; + int rchild; nodeno = parentof(nodeno); lchild = leftchild(nodeno); @@ -103,8 +103,8 @@ fsm_set_avail(Page page, int slot, uint8 value) } while (nodeno > 0); /* - * sanity check: if the new value is (still) higher than the value - * at the top, the tree is corrupt. If so, rebuild. + * sanity check: if the new value is (still) higher than the value at the + * top, the tree is corrupt. If so, rebuild. */ if (value > fsmpage->fp_nodes[0]) fsm_rebuild_page(page); @@ -121,7 +121,7 @@ fsm_set_avail(Page page, int slot, uint8 value) uint8 fsm_get_avail(Page page, int slot) { - FSMPage fsmpage = (FSMPage) PageGetContents(page); + FSMPage fsmpage = (FSMPage) PageGetContents(page); Assert(slot < LeafNodesPerPage); @@ -137,7 +137,7 @@ fsm_get_avail(Page page, int slot) uint8 fsm_get_max_avail(Page page) { - FSMPage fsmpage = (FSMPage) PageGetContents(page); + FSMPage fsmpage = (FSMPage) PageGetContents(page); return fsmpage->fp_nodes[0]; } @@ -158,16 +158,17 @@ int fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, bool exclusive_lock_held) { - Page page = BufferGetPage(buf); - FSMPage fsmpage = (FSMPage) PageGetContents(page); - int nodeno; - int target; - uint16 slot; + Page page = BufferGetPage(buf); + FSMPage fsmpage = (FSMPage) PageGetContents(page); + int nodeno; + int target; + uint16 slot; + +restart: - restart: /* - * Check the root first, and exit quickly if there's no leaf with - * enough free space + * Check the root first, and exit quickly if there's no leaf with enough + * free space */ if (fsmpage->fp_nodes[0] < minvalue) return -1; @@ -184,13 +185,13 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, /*---------- * Start the search from the target slot. At every step, move one - * node to the right, then climb up to the parent. Stop when we reach + * node to the right, then climb up to the parent. Stop when we reach * a node with enough free space (as we must, since the root has enough * space). * * The idea is to gradually expand our "search triangle", that is, all * nodes covered by the current node, and to be sure we search to the - * right from the start point. At the first step, only the target slot + * right from the start point. At the first step, only the target slot * is examined. When we move up from a left child to its parent, we are * adding the right-hand subtree of that parent to the search triangle. * When we move right then up from a right child, we are dropping the @@ -207,11 +208,11 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, * * For example, consider this tree: * - * 7 - * 7 6 - * 5 7 6 5 - * 4 5 5 7 2 6 5 2 - * T + * 7 + * 7 6 + * 5 7 6 5 + * 4 5 5 7 2 6 5 2 + * T * * Assume that the target node is the node indicated by the letter T, * and we're searching for a node with value of 6 or higher. The search @@ -230,8 +231,8 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, break; /* - * Move to the right, wrapping around on same level if necessary, - * then climb up. + * Move to the right, wrapping around on same level if necessary, then + * climb up. */ nodeno = parentof(rightneighbor(nodeno)); } @@ -243,7 +244,7 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, */ while (nodeno < NonLeafNodesPerPage) { - int childnodeno = leftchild(nodeno); + int childnodeno = leftchild(nodeno); if (childnodeno < NodesPerPage && fsmpage->fp_nodes[childnodeno] >= minvalue) @@ -260,17 +261,16 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, else { /* - * Oops. The parent node promised that either left or right - * child has enough space, but neither actually did. This can - * happen in case of a "torn page", IOW if we crashed earlier - * while writing the page to disk, and only part of the page - * made it to disk. + * Oops. The parent node promised that either left or right child + * has enough space, but neither actually did. This can happen in + * case of a "torn page", IOW if we crashed earlier while writing + * the page to disk, and only part of the page made it to disk. * * Fix the corruption and restart. */ - RelFileNode rnode; + RelFileNode rnode; ForkNumber forknum; - BlockNumber blknum; + BlockNumber blknum; BufferGetTag(buf, &rnode, &forknum, &blknum); elog(DEBUG1, "fixing corrupt FSM block %u, relation %u/%u/%u", @@ -312,9 +312,9 @@ fsm_search_avail(Buffer buf, uint8 minvalue, bool advancenext, bool fsm_truncate_avail(Page page, int nslots) { - FSMPage fsmpage = (FSMPage) PageGetContents(page); - uint8 *ptr; - bool changed = false; + FSMPage fsmpage = (FSMPage) PageGetContents(page); + uint8 *ptr; + bool changed = false; Assert(nslots >= 0 && nslots < LeafNodesPerPage); @@ -341,9 +341,9 @@ fsm_truncate_avail(Page page, int nslots) bool fsm_rebuild_page(Page page) { - FSMPage fsmpage = (FSMPage) PageGetContents(page); - bool changed = false; - int nodeno; + FSMPage fsmpage = (FSMPage) PageGetContents(page); + bool changed = false; + int nodeno; /* * Start from the lowest non-leaf level, at last node, working our way @@ -351,9 +351,9 @@ fsm_rebuild_page(Page page) */ for (nodeno = NonLeafNodesPerPage - 1; nodeno >= 0; nodeno--) { - int lchild = leftchild(nodeno); - int rchild = lchild + 1; - uint8 newvalue = 0; + int lchild = leftchild(nodeno); + int rchild = lchild + 1; + uint8 newvalue = 0; /* The first few nodes we examine might have zero or one child. */ if (lchild < NodesPerPage) diff --git a/src/backend/storage/freespace/indexfsm.c b/src/backend/storage/freespace/indexfsm.c index ef396a00e73..616e6b1ffca 100644 --- a/src/backend/storage/freespace/indexfsm.c +++ b/src/backend/storage/freespace/indexfsm.c @@ -8,15 +8,15 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/freespace/indexfsm.c,v 1.4 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/freespace/indexfsm.c,v 1.5 2009/06/11 14:49:01 momjian Exp $ * * * NOTES: * - * This is similar to the FSM used for heap, in freespace.c, but instead - * of tracking the amount of free space on pages, we only track whether - * pages are completely free or in-use. We use the same FSM implementation - * as for heaps, using BLCKSZ - 1 to denote used pages, and 0 for unused. + * This is similar to the FSM used for heap, in freespace.c, but instead + * of tracking the amount of free space on pages, we only track whether + * pages are completely free or in-use. We use the same FSM implementation + * as for heaps, using BLCKSZ - 1 to denote used pages, and 0 for unused. * *------------------------------------------------------------------------- */ @@ -38,7 +38,7 @@ BlockNumber GetFreeIndexPage(Relation rel) { - BlockNumber blkno = GetPageWithFreeSpace(rel, BLCKSZ/2); + BlockNumber blkno = GetPageWithFreeSpace(rel, BLCKSZ / 2); if (blkno != InvalidBlockNumber) RecordUsedIndexPage(rel, blkno); diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c index 5fa2d5d37ca..2616ffb817a 100644 --- a/src/backend/storage/ipc/ipc.c +++ b/src/backend/storage/ipc/ipc.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/ipc.c,v 1.104 2009/05/15 15:56:39 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/ipc.c,v 1.105 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -83,7 +83,7 @@ static int on_proc_exit_index, * -cim 2/6/90 * * Unfortunately, we can't really guarantee that add-on code - * obeys the rule of not calling exit() directly. So, while + * obeys the rule of not calling exit() directly. So, while * this is the preferred way out of the system, we also register * an atexit callback that will make sure cleanup happens. * ---------------------------------------------------------------- @@ -113,10 +113,10 @@ proc_exit(int code) * * Note that we do this here instead of in an on_proc_exit() callback * because we want to ensure that this code executes last - we don't - * want to interfere with any other on_proc_exit() callback. For - * the same reason, we do not include it in proc_exit_prepare ... - * so if you are exiting in the "wrong way" you won't drop your profile - * in a nice place. + * want to interfere with any other on_proc_exit() callback. For the + * same reason, we do not include it in proc_exit_prepare ... so if + * you are exiting in the "wrong way" you won't drop your profile in a + * nice place. */ char gprofDirName[32]; @@ -229,8 +229,7 @@ atexit_callback(void) /* ... too bad we don't know the real exit code ... */ proc_exit_prepare(-1); } - -#else /* assume we have on_exit instead */ +#else /* assume we have on_exit instead */ static void atexit_callback(int exitstatus, void *arg) @@ -238,8 +237,7 @@ atexit_callback(int exitstatus, void *arg) /* Clean up everything that must be cleaned up */ proc_exit_prepare(exitstatus); } - -#endif /* HAVE_ATEXIT */ +#endif /* HAVE_ATEXIT */ /* ---------------------------------------------------------------- * on_proc_exit diff --git a/src/backend/storage/ipc/pmsignal.c b/src/backend/storage/ipc/pmsignal.c index c77831dd25c..1b77f463b60 100644 --- a/src/backend/storage/ipc/pmsignal.c +++ b/src/backend/storage/ipc/pmsignal.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/pmsignal.c,v 1.27 2009/05/05 19:59:00 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/pmsignal.c,v 1.28 2009/06/11 14:49:01 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ * have three possible states: UNUSED, ASSIGNED, ACTIVE. An UNUSED slot is * available for assignment. An ASSIGNED slot is associated with a postmaster * child process, but either the process has not touched shared memory yet, - * or it has successfully cleaned up after itself. A ACTIVE slot means the + * or it has successfully cleaned up after itself. A ACTIVE slot means the * process is actively using shared memory. The slots are assigned to * child processes at random, and postmaster.c is responsible for tracking * which one goes with which PID. @@ -57,8 +57,8 @@ struct PMSignalData /* per-reason flags */ sig_atomic_t PMSignalFlags[NUM_PMSIGNALS]; /* per-child-process flags */ - int num_child_flags; /* # of entries in PMChildFlags[] */ - int next_child_flag; /* next slot to try to assign */ + int num_child_flags; /* # of entries in PMChildFlags[] */ + int next_child_flag; /* next slot to try to assign */ sig_atomic_t PMChildFlags[1]; /* VARIABLE LENGTH ARRAY */ }; @@ -181,6 +181,7 @@ ReleasePostmasterChildSlot(int slot) Assert(slot > 0 && slot <= PMSignalState->num_child_flags); slot--; + /* * Note: the slot state might already be unused, because the logic in * postmaster.c is such that this might get called twice when a child diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 30f66c089c6..e71b95c8269 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -23,7 +23,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.49 2009/04/04 17:40:36 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/procarray.c,v 1.50 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -829,8 +829,8 @@ GetSnapshotData(Snapshot snapshot) snapshot->curcid = GetCurrentCommandId(false); /* - * This is a new snapshot, so set both refcounts are zero, and mark it - * as not copied in persistent memory. + * This is a new snapshot, so set both refcounts are zero, and mark it as + * not copied in persistent memory. */ snapshot->active_count = 0; snapshot->regd_count = 0; @@ -1038,7 +1038,7 @@ IsBackendPid(int pid) * some snapshot we have. Since we examine the procarray with only shared * lock, there are race conditions: a backend could set its xmin just after * we look. Indeed, on multiprocessors with weak memory ordering, the - * other backend could have set its xmin *before* we look. We know however + * other backend could have set its xmin *before* we look. We know however * that such a backend must have held shared ProcArrayLock overlapping our * own hold of ProcArrayLock, else we would see its xmin update. Therefore, * any snapshot the other backend is taking concurrently with our scan cannot @@ -1133,9 +1133,9 @@ CountActiveBackends(void) * * If someone just decremented numProcs, 'proc' could also point to a * PGPROC entry that's no longer in the array. It still points to a - * PGPROC struct, though, because freed PGPPROC entries just go to - * the free list and are recycled. Its contents are nonsense in that - * case, but that's acceptable for this function. + * PGPROC struct, though, because freed PGPPROC entries just go to the + * free list and are recycled. Its contents are nonsense in that case, + * but that's acceptable for this function. */ if (proc != NULL) continue; @@ -1235,7 +1235,8 @@ bool CountOtherDBBackends(Oid databaseId, int *nbackends, int *nprepared) { ProcArrayStruct *arrayP = procArray; -#define MAXAUTOVACPIDS 10 /* max autovacs to SIGTERM per iteration */ + +#define MAXAUTOVACPIDS 10 /* max autovacs to SIGTERM per iteration */ int autovac_pids[MAXAUTOVACPIDS]; int tries; @@ -1280,10 +1281,10 @@ CountOtherDBBackends(Oid databaseId, int *nbackends, int *nprepared) return false; /* no conflicting backends, so done */ /* - * Send SIGTERM to any conflicting autovacuums before sleeping. - * We postpone this step until after the loop because we don't - * want to hold ProcArrayLock while issuing kill(). - * We have no idea what might block kill() inside the kernel... + * Send SIGTERM to any conflicting autovacuums before sleeping. We + * postpone this step until after the loop because we don't want to + * hold ProcArrayLock while issuing kill(). We have no idea what might + * block kill() inside the kernel... */ for (index = 0; index < nautovacs; index++) (void) kill(autovac_pids[index], SIGTERM); /* ignore any error */ diff --git a/src/backend/storage/ipc/sinval.c b/src/backend/storage/ipc/sinval.c index 2cd3530092f..3f063989e0c 100644 --- a/src/backend/storage/ipc/sinval.c +++ b/src/backend/storage/ipc/sinval.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/sinval.c,v 1.89 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/sinval.c,v 1.90 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -65,7 +65,7 @@ SendSharedInvalidMessages(const SharedInvalidationMessage *msgs, int n) * NOTE: it is entirely possible for this routine to be invoked recursively * as a consequence of processing inside the invalFunction or resetFunction. * Furthermore, such a recursive call must guarantee that all outstanding - * inval messages have been processed before it exits. This is the reason + * inval messages have been processed before it exits. This is the reason * for the strange-looking choice to use a statically allocated buffer array * and counters; it's so that a recursive call can process messages already * sucked out of sinvaladt.c. @@ -77,9 +77,10 @@ ReceiveSharedInvalidMessages( { #define MAXINVALMSGS 32 static SharedInvalidationMessage messages[MAXINVALMSGS]; + /* - * We use volatile here to prevent bugs if a compiler doesn't realize - * that recursion is a possibility ... + * We use volatile here to prevent bugs if a compiler doesn't realize that + * recursion is a possibility ... */ static volatile int nextmsg = 0; static volatile int nummsgs = 0; @@ -121,18 +122,18 @@ ReceiveSharedInvalidMessages( } /* - * We only need to loop if the last SIGetDataEntries call (which - * might have been within a recursive call) returned a full buffer. + * We only need to loop if the last SIGetDataEntries call (which might + * have been within a recursive call) returned a full buffer. */ } while (nummsgs == MAXINVALMSGS); /* * We are now caught up. If we received a catchup signal, reset that - * flag, and call SICleanupQueue(). This is not so much because we - * need to flush dead messages right now, as that we want to pass on - * the catchup signal to the next slowest backend. "Daisy chaining" the - * catchup signal this way avoids creating spikes in system load for - * what should be just a background maintenance activity. + * flag, and call SICleanupQueue(). This is not so much because we need + * to flush dead messages right now, as that we want to pass on the + * catchup signal to the next slowest backend. "Daisy chaining" the + * catchup signal this way avoids creating spikes in system load for what + * should be just a background maintenance activity. */ if (catchupInterruptOccurred) { diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c index cb911c468dd..fcd1e42a7f6 100644 --- a/src/backend/storage/ipc/sinvaladt.c +++ b/src/backend/storage/ipc/sinvaladt.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.77 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.78 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -57,7 +57,7 @@ * normal behavior is that at most one such interrupt is in flight at a time; * when a backend completes processing a catchup interrupt, it executes * SICleanupQueue, which will signal the next-furthest-behind backend if - * needed. This avoids undue contention from multiple backends all trying + * needed. This avoids undue contention from multiple backends all trying * to catch up at once. However, the furthest-back backend might be stuck * in a state where it can't catch up. Eventually it will get reset, so it * won't cause any more problems for anyone but itself. But we don't want @@ -88,7 +88,7 @@ * the writer wants to change maxMsgNum while readers need to read it. * We deal with that by having a spinlock that readers must take for just * long enough to read maxMsgNum, while writers take it for just long enough - * to write maxMsgNum. (The exact rule is that you need the spinlock to + * to write maxMsgNum. (The exact rule is that you need the spinlock to * read maxMsgNum if you are not holding SInvalWriteLock, and you need the * spinlock to write maxMsgNum unless you are holding both locks.) * @@ -146,8 +146,8 @@ typedef struct ProcState /* * Next LocalTransactionId to use for each idle backend slot. We keep * this here because it is indexed by BackendId and it is convenient to - * copy the value to and from local memory when MyBackendId is set. - * It's meaningless in an active ProcState entry. + * copy the value to and from local memory when MyBackendId is set. It's + * meaningless in an active ProcState entry. */ LocalTransactionId nextLXID; } ProcState; @@ -235,8 +235,8 @@ CreateSharedInvalidationState(void) /* Mark all backends inactive, and initialize nextLXID */ for (i = 0; i < shmInvalBuffer->maxBackends; i++) { - shmInvalBuffer->procState[i].procPid = 0; /* inactive */ - shmInvalBuffer->procState[i].nextMsgNum = 0; /* meaningless */ + shmInvalBuffer->procState[i].procPid = 0; /* inactive */ + shmInvalBuffer->procState[i].nextMsgNum = 0; /* meaningless */ shmInvalBuffer->procState[i].resetState = false; shmInvalBuffer->procState[i].signaled = false; shmInvalBuffer->procState[i].nextLXID = InvalidLocalTransactionId; @@ -255,11 +255,11 @@ SharedInvalBackendInit(void) SISeg *segP = shmInvalBuffer; /* - * This can run in parallel with read operations, and for that matter - * with write operations; but not in parallel with additions and removals - * of backends, nor in parallel with SICleanupQueue. It doesn't seem - * worth having a third lock, so we choose to use SInvalWriteLock to - * serialize additions/removals. + * This can run in parallel with read operations, and for that matter with + * write operations; but not in parallel with additions and removals of + * backends, nor in parallel with SICleanupQueue. It doesn't seem worth + * having a third lock, so we choose to use SInvalWriteLock to serialize + * additions/removals. */ LWLockAcquire(SInvalWriteLock, LW_EXCLUSIVE); @@ -394,7 +394,7 @@ SIInsertDataEntries(const SharedInvalidationMessage *data, int n) SISeg *segP = shmInvalBuffer; /* - * N can be arbitrarily large. We divide the work into groups of no more + * N can be arbitrarily large. We divide the work into groups of no more * than WRITE_QUANTUM messages, to be sure that we don't hold the lock for * an unreasonably long time. (This is not so much because we care about * letting in other writers, as that some just-caught-up backend might be @@ -404,9 +404,9 @@ SIInsertDataEntries(const SharedInvalidationMessage *data, int n) */ while (n > 0) { - int nthistime = Min(n, WRITE_QUANTUM); - int numMsgs; - int max; + int nthistime = Min(n, WRITE_QUANTUM); + int numMsgs; + int max; n -= nthistime; @@ -416,7 +416,7 @@ SIInsertDataEntries(const SharedInvalidationMessage *data, int n) * If the buffer is full, we *must* acquire some space. Clean the * queue and reset anyone who is preventing space from being freed. * Otherwise, clean the queue only when it's exceeded the next - * fullness threshold. We have to loop and recheck the buffer state + * fullness threshold. We have to loop and recheck the buffer state * after any call of SICleanupQueue. */ for (;;) @@ -458,9 +458,9 @@ SIInsertDataEntries(const SharedInvalidationMessage *data, int n) * get next SI message(s) for current backend, if there are any * * Possible return values: - * 0: no SI message available + * 0: no SI message available * n>0: next n SI messages have been extracted into data[] - * -1: SI reset message extracted + * -1: SI reset message extracted * * If the return value is less than the array size "datasize", the caller * can assume that there are no more SI messages after the one(s) returned. @@ -470,11 +470,11 @@ SIInsertDataEntries(const SharedInvalidationMessage *data, int n) * executing on behalf of other backends, since each instance will modify only * fields of its own backend's ProcState, and no instance will look at fields * of other backends' ProcStates. We express this by grabbing SInvalReadLock - * in shared mode. Note that this is not exactly the normal (read-only) + * in shared mode. Note that this is not exactly the normal (read-only) * interpretation of a shared lock! Look closely at the interactions before * allowing SInvalReadLock to be grabbed in shared mode for any other reason! * - * NB: this can also run in parallel with SIInsertDataEntries. It is not + * NB: this can also run in parallel with SIInsertDataEntries. It is not * guaranteed that we will return any messages added after the routine is * entered. * @@ -488,7 +488,7 @@ SIGetDataEntries(SharedInvalidationMessage *data, int datasize) ProcState *stateP; int max; int n; - + LWLockAcquire(SInvalReadLock, LW_SHARED); segP = shmInvalBuffer; @@ -557,7 +557,7 @@ SIGetDataEntries(SharedInvalidationMessage *data, int datasize) * * Caution: because we transiently release write lock when we have to signal * some other backend, it is NOT guaranteed that there are still minFree - * free message slots at exit. Caller must recheck and perhaps retry. + * free message slots at exit. Caller must recheck and perhaps retry. */ void SICleanupQueue(bool callerHasWriteLock, int minFree) @@ -576,9 +576,9 @@ SICleanupQueue(bool callerHasWriteLock, int minFree) LWLockAcquire(SInvalReadLock, LW_EXCLUSIVE); /* - * Recompute minMsgNum = minimum of all backends' nextMsgNum, identify - * the furthest-back backend that needs signaling (if any), and reset - * any backends that are too far back. + * Recompute minMsgNum = minimum of all backends' nextMsgNum, identify the + * furthest-back backend that needs signaling (if any), and reset any + * backends that are too far back. */ min = segP->maxMsgNum; minsig = min - SIG_THRESHOLD; @@ -587,15 +587,15 @@ SICleanupQueue(bool callerHasWriteLock, int minFree) for (i = 0; i < segP->lastBackend; i++) { ProcState *stateP = &segP->procState[i]; - int n = stateP->nextMsgNum; + int n = stateP->nextMsgNum; /* Ignore if inactive or already in reset state */ if (stateP->procPid == 0 || stateP->resetState) continue; /* - * If we must free some space and this backend is preventing it, - * force him into reset state and then ignore until he catches up. + * If we must free some space and this backend is preventing it, force + * him into reset state and then ignore until he catches up. */ if (n < lowbound) { @@ -619,8 +619,8 @@ SICleanupQueue(bool callerHasWriteLock, int minFree) /* * When minMsgNum gets really large, decrement all message counters so as - * to forestall overflow of the counters. This happens seldom enough - * that folding it into the previous loop would be a loser. + * to forestall overflow of the counters. This happens seldom enough that + * folding it into the previous loop would be a loser. */ if (min >= MSGNUMWRAPAROUND) { @@ -649,7 +649,7 @@ SICleanupQueue(bool callerHasWriteLock, int minFree) */ if (needSig) { - pid_t his_pid = needSig->procPid; + pid_t his_pid = needSig->procPid; needSig->signaled = true; LWLockRelease(SInvalReadLock); diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c index 56a10d762ba..0def1decd0d 100644 --- a/src/backend/storage/large_object/inv_api.c +++ b/src/backend/storage/large_object/inv_api.c @@ -24,7 +24,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/large_object/inv_api.c,v 1.137 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/large_object/inv_api.c,v 1.138 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -248,12 +248,12 @@ inv_open(Oid lobjId, int flags, MemoryContext mcxt) else if (flags & INV_READ) { /* - * We must register the snapshot in TopTransaction's resowner, - * because it must stay alive until the LO is closed rather than until - * the current portal shuts down. + * We must register the snapshot in TopTransaction's resowner, because + * it must stay alive until the LO is closed rather than until the + * current portal shuts down. */ retval->snapshot = RegisterSnapshotOnOwner(GetActiveSnapshot(), - TopTransactionResourceOwner); + TopTransactionResourceOwner); retval->flags = IFS_RDLOCK; } else @@ -641,7 +641,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes) values[Anum_pg_largeobject_data - 1] = PointerGetDatum(&workbuf); replace[Anum_pg_largeobject_data - 1] = true; newtup = heap_modify_tuple(oldtuple, RelationGetDescr(lo_heap_r), - values, nulls, replace); + values, nulls, replace); simple_heap_update(lo_heap_r, &newtup->t_self, newtup); CatalogIndexInsert(indstate, newtup); heap_freetuple(newtup); @@ -810,7 +810,7 @@ inv_truncate(LargeObjectDesc *obj_desc, int len) values[Anum_pg_largeobject_data - 1] = PointerGetDatum(&workbuf); replace[Anum_pg_largeobject_data - 1] = true; newtup = heap_modify_tuple(oldtuple, RelationGetDescr(lo_heap_r), - values, nulls, replace); + values, nulls, replace); simple_heap_update(lo_heap_r, &newtup->t_self, newtup); CatalogIndexInsert(indstate, newtup); heap_freetuple(newtup); diff --git a/src/backend/storage/lmgr/deadlock.c b/src/backend/storage/lmgr/deadlock.c index 25a329f2848..590e732f22c 100644 --- a/src/backend/storage/lmgr/deadlock.c +++ b/src/backend/storage/lmgr/deadlock.c @@ -12,7 +12,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/lmgr/deadlock.c,v 1.56 2009/01/01 17:23:47 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/lmgr/deadlock.c,v 1.57 2009/06/11 14:49:02 momjian Exp $ * * Interface: * @@ -933,7 +933,7 @@ DeadLockReport(void) appendStringInfo(&logbuf, _("Process %d: %s"), info->pid, - pgstat_get_backend_current_activity(info->pid, false)); + pgstat_get_backend_current_activity(info->pid, false)); } ereport(ERROR, diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index 97c525d17a8..6a292104960 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/lmgr/lock.c,v 1.187 2009/03/23 01:52:38 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/lmgr/lock.c,v 1.188 2009/06/11 14:49:02 momjian Exp $ * * NOTES * A lock table is a shared memory hash table. When @@ -1112,7 +1112,7 @@ WaitOnLock(LOCALLOCK *locallock, ResourceOwner owner) { LOCKMETHODID lockmethodid = LOCALLOCK_LOCKMETHOD(*locallock); LockMethod lockMethodTable = LockMethods[lockmethodid]; - char * volatile new_status = NULL; + char *volatile new_status = NULL; LOCK_PRINT("WaitOnLock: sleeping on lock", locallock->lock, locallock->tag.mode); @@ -1145,20 +1145,20 @@ WaitOnLock(LOCALLOCK *locallock, ResourceOwner owner) * the locktable state must fully reflect the fact that we own the lock; * we can't do additional work on return. * - * We can and do use a PG_TRY block to try to clean up after failure, - * but this still has a major limitation: elog(FATAL) can occur while - * waiting (eg, a "die" interrupt), and then control won't come back here. - * So all cleanup of essential state should happen in LockWaitCancel, - * not here. We can use PG_TRY to clear the "waiting" status flags, - * since doing that is unimportant if the process exits. + * We can and do use a PG_TRY block to try to clean up after failure, but + * this still has a major limitation: elog(FATAL) can occur while waiting + * (eg, a "die" interrupt), and then control won't come back here. So all + * cleanup of essential state should happen in LockWaitCancel, not here. + * We can use PG_TRY to clear the "waiting" status flags, since doing that + * is unimportant if the process exits. */ PG_TRY(); { if (ProcSleep(locallock, lockMethodTable) != STATUS_OK) { /* - * We failed as a result of a deadlock, see CheckDeadLock(). - * Quit now. + * We failed as a result of a deadlock, see CheckDeadLock(). Quit + * now. */ awaitedLock = NULL; LOCK_PRINT("WaitOnLock: aborting on lock", diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index 8f5b4e33047..4ae977154ac 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/lmgr/proc.c,v 1.206 2009/05/05 19:59:00 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/lmgr/proc.c,v 1.207 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -277,8 +277,8 @@ InitProcess(void) /* * Now that we have a PGPROC, mark ourselves as an active postmaster - * child; this is so that the postmaster can detect it if we exit - * without cleaning up. + * child; this is so that the postmaster can detect it if we exit without + * cleaning up. */ if (IsUnderPostmaster) MarkPostmasterChildActive(); @@ -1184,8 +1184,8 @@ CheckDeadLock(void) * Check to see if we've been awoken by anyone in the interim. * * If we have, we can return and resume our transaction -- happy day. - * Before we are awoken the process releasing the lock grants it to us - * so we know that we don't have to wait anymore. + * Before we are awoken the process releasing the lock grants it to us so + * we know that we don't have to wait anymore. * * We check by looking to see if we've been unlinked from the wait queue. * This is quicker than checking our semaphore's state, since no kernel diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index 361d0206797..8655e90d29f 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.145 2009/03/11 23:19:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/smgr/md.c,v 1.146 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -120,7 +120,7 @@ static MemoryContext MdCxt; /* context for all md.c allocations */ typedef struct { RelFileNode rnode; /* the targeted relation */ - ForkNumber forknum; + ForkNumber forknum; BlockNumber segno; /* which segment */ } PendingOperationTag; @@ -154,18 +154,18 @@ typedef enum /* behavior for mdopen & _mdfd_getseg */ } ExtensionBehavior; /* local routines */ -static MdfdVec *mdopen(SMgrRelation reln, ForkNumber forknum, - ExtensionBehavior behavior); +static MdfdVec *mdopen(SMgrRelation reln, ForkNumber forknum, + ExtensionBehavior behavior); static void register_dirty_segment(SMgrRelation reln, ForkNumber forknum, - MdfdVec *seg); + MdfdVec *seg); static void register_unlink(RelFileNode rnode); static MdfdVec *_fdvec_alloc(void); static MdfdVec *_mdfd_openseg(SMgrRelation reln, ForkNumber forkno, - BlockNumber segno, int oflags); + BlockNumber segno, int oflags); static MdfdVec *_mdfd_getseg(SMgrRelation reln, ForkNumber forkno, BlockNumber blkno, bool isTemp, ExtensionBehavior behavior); static BlockNumber _mdnblocks(SMgrRelation reln, ForkNumber forknum, - MdfdVec *seg); + MdfdVec *seg); /* @@ -204,7 +204,7 @@ mdinit(void) } /* - * mdexists() -- Does the physical file exist? + * mdexists() -- Does the physical file exist? * * Note: this will return true for lingering files, with pending deletions */ @@ -212,8 +212,8 @@ bool mdexists(SMgrRelation reln, ForkNumber forkNum) { /* - * Close it first, to ensure that we notice if the fork has been - * unlinked since we opened it. + * Close it first, to ensure that we notice if the fork has been unlinked + * since we opened it. */ mdclose(reln, forkNum); @@ -369,8 +369,8 @@ mdunlink(RelFileNode rnode, ForkNumber forkNum, bool isRedo) if (errno != ENOENT) ereport(WARNING, (errcode_for_file_access(), - errmsg("could not remove segment %u of relation %s: %m", - segno, path))); + errmsg("could not remove segment %u of relation %s: %m", + segno, path))); break; } } @@ -420,7 +420,8 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, v = _mdfd_getseg(reln, forknum, blocknum, isTemp, EXTENSION_CREATE); - seekpos = (off_t) BLCKSZ * (blocknum % ((BlockNumber) RELSEG_SIZE)); + seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); + Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); /* @@ -535,7 +536,7 @@ mdclose(SMgrRelation reln, ForkNumber forknum) if (v == NULL) return; - reln->md_fd[forknum] = NULL; /* prevent dangling pointer after error */ + reln->md_fd[forknum] = NULL; /* prevent dangling pointer after error */ while (v != NULL) { @@ -562,11 +563,12 @@ mdprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); - seekpos = (off_t) BLCKSZ * (blocknum % ((BlockNumber) RELSEG_SIZE)); + seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); + Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); (void) FilePrefetch(v->mdfd_vfd, seekpos, BLCKSZ); -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } @@ -588,7 +590,8 @@ mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, v = _mdfd_getseg(reln, forknum, blocknum, false, EXTENSION_FAIL); - seekpos = (off_t) BLCKSZ * (blocknum % ((BlockNumber) RELSEG_SIZE)); + seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); + Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) @@ -611,8 +614,8 @@ mdread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, if (nbytes < 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not read block %u of relation %s: %m", - blocknum, relpath(reln->smgr_rnode, forknum)))); + errmsg("could not read block %u of relation %s: %m", + blocknum, relpath(reln->smgr_rnode, forknum)))); /* * Short read: we are at or past EOF, or we read a partial block at @@ -660,7 +663,8 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, v = _mdfd_getseg(reln, forknum, blocknum, isTemp, EXTENSION_FAIL); - seekpos = (off_t) BLCKSZ * (blocknum % ((BlockNumber) RELSEG_SIZE)); + seekpos = (off_t) BLCKSZ *(blocknum % ((BlockNumber) RELSEG_SIZE)); + Assert(seekpos < (off_t) BLCKSZ * RELSEG_SIZE); if (FileSeek(v->mdfd_vfd, seekpos, SEEK_SET) != seekpos) @@ -683,8 +687,8 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, if (nbytes < 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not write block %u of relation %s: %m", - blocknum, relpath(reln->smgr_rnode, forknum)))); + errmsg("could not write block %u of relation %s: %m", + blocknum, relpath(reln->smgr_rnode, forknum)))); /* short write: complain appropriately */ ereport(ERROR, (errcode(ERRCODE_DISK_FULL), @@ -757,9 +761,9 @@ mdnblocks(SMgrRelation reln, ForkNumber forknum) if (v->mdfd_chain == NULL) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not open segment %u of relation %s: %m", - segno, - relpath(reln->smgr_rnode, forknum)))); + errmsg("could not open segment %u of relation %s: %m", + segno, + relpath(reln->smgr_rnode, forknum)))); } v = v->mdfd_chain; @@ -812,13 +816,14 @@ mdtruncate(SMgrRelation reln, ForkNumber forknum, BlockNumber nblocks, if (FileTruncate(v->mdfd_vfd, 0) < 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not truncate relation %s to %u blocks: %m", - relpath(reln->smgr_rnode, forknum), - nblocks))); + errmsg("could not truncate relation %s to %u blocks: %m", + relpath(reln->smgr_rnode, forknum), + nblocks))); if (!isTemp) register_dirty_segment(reln, forknum, v); v = v->mdfd_chain; - Assert(ov != reln->md_fd[forknum]); /* we never drop the 1st segment */ + Assert(ov != reln->md_fd[forknum]); /* we never drop the 1st + * segment */ pfree(ov); } else if (priorblocks + ((BlockNumber) RELSEG_SIZE) > nblocks) @@ -836,9 +841,9 @@ mdtruncate(SMgrRelation reln, ForkNumber forknum, BlockNumber nblocks, if (FileTruncate(v->mdfd_vfd, (off_t) lastsegblocks * BLCKSZ) < 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not truncate relation %s to %u blocks: %m", - relpath(reln->smgr_rnode, forknum), - nblocks))); + errmsg("could not truncate relation %s to %u blocks: %m", + relpath(reln->smgr_rnode, forknum), + nblocks))); if (!isTemp) register_dirty_segment(reln, forknum, v); v = v->mdfd_chain; @@ -1055,8 +1060,8 @@ mdsync(void) failures > 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not fsync segment %u of relation %s: %m", - entry->tag.segno, path))); + errmsg("could not fsync segment %u of relation %s: %m", + entry->tag.segno, path))); else ereport(DEBUG1, (errcode_for_file_access(), @@ -1268,7 +1273,7 @@ RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) hash_seq_init(&hstat, pendingOpsTable); while ((entry = (PendingOperationEntry *) hash_seq_search(&hstat)) != NULL) { - if (RelFileNodeEquals(entry->tag.rnode, rnode) && + if (RelFileNodeEquals(entry->tag.rnode, rnode) && entry->tag.forknum == forknum) { /* Okay, cancel this entry */ @@ -1281,7 +1286,7 @@ RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) /* Remove any pending requests for the entire database */ HASH_SEQ_STATUS hstat; PendingOperationEntry *entry; - ListCell *cell, + ListCell *cell, *prev, *next; @@ -1295,7 +1300,7 @@ RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) entry->canceled = true; } } - + /* Remove unlink requests */ prev = NULL; for (cell = list_head(pendingUnlinks); cell; cell = next) @@ -1303,7 +1308,7 @@ RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); next = lnext(cell); - if (entry->rnode.dbNode == rnode.dbNode) + if (entry->rnode.dbNode == rnode.dbNode) { pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); pfree(entry); @@ -1569,8 +1574,8 @@ _mdnblocks(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) if (len < 0) ereport(ERROR, (errcode_for_file_access(), - errmsg("could not seek to end of segment %u of relation %s: %m", - seg->mdfd_segno, relpath(reln->smgr_rnode, forknum)))); + errmsg("could not seek to end of segment %u of relation %s: %m", + seg->mdfd_segno, relpath(reln->smgr_rnode, forknum)))); /* note that this calculation will ignore any partial block at EOF */ return (BlockNumber) (len / BLCKSZ); } diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index f2cc449f175..7d1cd5af168 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/smgr/smgr.c,v 1.116 2009/01/12 05:10:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/smgr/smgr.c,v 1.117 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -42,21 +42,21 @@ typedef struct f_smgr void (*smgr_shutdown) (void); /* may be NULL */ void (*smgr_close) (SMgrRelation reln, ForkNumber forknum); void (*smgr_create) (SMgrRelation reln, ForkNumber forknum, - bool isRedo); + bool isRedo); bool (*smgr_exists) (SMgrRelation reln, ForkNumber forknum); void (*smgr_unlink) (RelFileNode rnode, ForkNumber forknum, - bool isRedo); + bool isRedo); void (*smgr_extend) (SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool isTemp); void (*smgr_prefetch) (SMgrRelation reln, ForkNumber forknum, - BlockNumber blocknum); + BlockNumber blocknum); void (*smgr_read) (SMgrRelation reln, ForkNumber forknum, - BlockNumber blocknum, char *buffer); - void (*smgr_write) (SMgrRelation reln, ForkNumber forknum, - BlockNumber blocknum, char *buffer, bool isTemp); + BlockNumber blocknum, char *buffer); + void (*smgr_write) (SMgrRelation reln, ForkNumber forknum, + BlockNumber blocknum, char *buffer, bool isTemp); BlockNumber (*smgr_nblocks) (SMgrRelation reln, ForkNumber forknum); void (*smgr_truncate) (SMgrRelation reln, ForkNumber forknum, - BlockNumber nblocks, bool isTemp); + BlockNumber nblocks, bool isTemp); void (*smgr_immedsync) (SMgrRelation reln, ForkNumber forknum); void (*smgr_pre_ckpt) (void); /* may be NULL */ void (*smgr_sync) (void); /* may be NULL */ @@ -82,8 +82,8 @@ static HTAB *SMgrRelationHash = NULL; /* local function prototypes */ static void smgrshutdown(int code, Datum arg); -static void smgr_internal_unlink(RelFileNode rnode, ForkNumber forknum, - int which, bool isTemp, bool isRedo); +static void smgr_internal_unlink(RelFileNode rnode, ForkNumber forknum, + int which, bool isTemp, bool isRedo); /* @@ -156,14 +156,14 @@ smgropen(RelFileNode rnode) /* Initialize it if not present before */ if (!found) { - int forknum; + int forknum; /* hash_search already filled in the lookup key */ reln->smgr_owner = NULL; reln->smgr_which = 0; /* we only have md.c at present */ /* mark it not open */ - for(forknum = 0; forknum <= MAX_FORKNUM; forknum++) + for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) reln->md_fd[forknum] = NULL; } @@ -209,7 +209,7 @@ void smgrclose(SMgrRelation reln) { SMgrRelation *owner; - ForkNumber forknum; + ForkNumber forknum; for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) (*(smgrsw[reln->smgr_which].smgr_close)) (reln, forknum); @@ -286,9 +286,9 @@ void smgrcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo) { /* - * Exit quickly in WAL replay mode if we've already opened the file. - * If it's open, it surely must exist. - */ + * Exit quickly in WAL replay mode if we've already opened the file. If + * it's open, it surely must exist. + */ if (isRedo && reln->md_fd[forknum] != NULL) return; @@ -334,7 +334,7 @@ smgrdounlink(SMgrRelation reln, ForkNumber forknum, bool isTemp, bool isRedo) * Shared subroutine that actually does the unlink ... */ static void -smgr_internal_unlink(RelFileNode rnode, ForkNumber forknum, +smgr_internal_unlink(RelFileNode rnode, ForkNumber forknum, int which, bool isTemp, bool isRedo) { /* @@ -370,7 +370,7 @@ smgr_internal_unlink(RelFileNode rnode, ForkNumber forknum, * causes intervening file space to become filled with zeroes. */ void -smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, +smgrextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool isTemp) { (*(smgrsw[reln->smgr_which].smgr_extend)) (reln, forknum, blocknum, @@ -395,7 +395,7 @@ smgrprefetch(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum) * return pages in the format that POSTGRES expects. */ void -smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, +smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer) { (*(smgrsw[reln->smgr_which].smgr_read)) (reln, forknum, blocknum, buffer); @@ -417,7 +417,7 @@ smgrread(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, * made to fsync the write before checkpointing. */ void -smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, +smgrwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum, char *buffer, bool isTemp) { (*(smgrsw[reln->smgr_which].smgr_write)) (reln, forknum, blocknum, @@ -527,4 +527,3 @@ smgrpostckpt(void) (*(smgrsw[i].smgr_post_ckpt)) (); } } - diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index c84fea522a8..2ed386a2226 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.566 2009/05/15 15:56:39 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.567 2009/06/11 14:49:02 momjian Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -2509,8 +2509,8 @@ quickdie(SIGNAL_ARGS) * system reset cycle if some idiot DBA sends a manual SIGQUIT to a random * backend. This is necessary precisely because we don't clean up our * shared memory state. (The "dead man switch" mechanism in pmsignal.c - * should ensure the postmaster sees this as a crash, too, but no harm - * in being doubly sure.) + * should ensure the postmaster sees this as a crash, too, but no harm in + * being doubly sure.) */ exit(2); } diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c index 2521ee010af..98716830cd6 100644 --- a/src/backend/tcop/pquery.c +++ b/src/backend/tcop/pquery.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/pquery.c,v 1.130 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/pquery.c,v 1.131 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -74,7 +74,7 @@ CreateQueryDesc(PlannedStmt *plannedstmt, qd->operation = plannedstmt->commandType; /* operation */ qd->plannedstmt = plannedstmt; /* plan */ qd->utilitystmt = plannedstmt->utilityStmt; /* in case DECLARE CURSOR */ - qd->sourceText = sourceText; /* query text */ + qd->sourceText = sourceText; /* query text */ qd->snapshot = RegisterSnapshot(snapshot); /* snapshot */ /* RI check snapshot */ qd->crosscheck_snapshot = RegisterSnapshot(crosscheck_snapshot); @@ -106,7 +106,7 @@ CreateUtilityQueryDesc(Node *utilitystmt, qd->operation = CMD_UTILITY; /* operation */ qd->plannedstmt = NULL; qd->utilitystmt = utilitystmt; /* utility command */ - qd->sourceText = sourceText; /* query text */ + qd->sourceText = sourceText; /* query text */ qd->snapshot = RegisterSnapshot(snapshot); /* snapshot */ qd->crosscheck_snapshot = InvalidSnapshot; /* RI check snapshot */ qd->dest = dest; /* output dest */ @@ -871,7 +871,7 @@ PortalRun(Portal portal, long count, bool isTopLevel, if (log_executor_stats && portal->strategy != PORTAL_MULTI_QUERY) ShowUsage("EXECUTOR STATISTICS"); - + TRACE_POSTGRESQL_QUERY_EXECUTE_DONE(); return result; @@ -1156,7 +1156,7 @@ static void PortalRunUtility(Portal portal, Node *utilityStmt, bool isTopLevel, DestReceiver *dest, char *completionTag) { - bool active_snapshot_set; + bool active_snapshot_set; elog(DEBUG3, "ProcessUtility"); @@ -1201,7 +1201,7 @@ PortalRunUtility(Portal portal, Node *utilityStmt, bool isTopLevel, /* * Some utility commands may pop the ActiveSnapshot stack from under us, - * so we only pop the stack if we actually see a snapshot set. Note that + * so we only pop the stack if we actually see a snapshot set. Note that * the set of utility commands that do this must be the same set * disallowed to run inside a transaction; otherwise, we could be popping * a snapshot that belongs to some other operation. diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 63aca25ebdf..84b357665dd 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.307 2009/05/07 22:58:28 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.308 2009/06/11 14:49:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -148,8 +148,8 @@ check_xact_readonly(Node *parsetree) /* * Note: Commands that need to do more complicated checking are handled - * elsewhere, in particular COPY and plannable statements do their - * own checking. + * elsewhere, in particular COPY and plannable statements do their own + * checking. */ switch (nodeTag(parsetree)) @@ -252,7 +252,7 @@ ProcessUtility(Node *parsetree, DestReceiver *dest, char *completionTag) { - Assert(queryString != NULL); /* required as of 8.4 */ + Assert(queryString != NULL); /* required as of 8.4 */ check_xact_readonly(parsetree); @@ -423,8 +423,8 @@ ProcessUtility(Node *parsetree, if (IsA(stmt, CreateStmt)) { - Datum toast_options; - static char *validnsps[] = HEAP_RELOPT_NAMESPACES; + Datum toast_options; + static char *validnsps[] = HEAP_RELOPT_NAMESPACES; /* Create the table itself */ relOid = DefineRelation((CreateStmt *) stmt, @@ -438,7 +438,7 @@ ProcessUtility(Node *parsetree, /* parse and validate reloptions for the toast table */ toast_options = transformRelOptions((Datum) 0, - ((CreateStmt *)stmt)->options, + ((CreateStmt *) stmt)->options, "toast", validnsps, true, false); @@ -1000,6 +1000,7 @@ ProcessUtility(Node *parsetree, break; case T_LockStmt: + /* * Since the lock would just get dropped immediately, LOCK TABLE * outside a transaction block is presumed to be user error. diff --git a/src/backend/tsearch/regis.c b/src/backend/tsearch/regis.c index dbeb039bded..4b71872dcf3 100644 --- a/src/backend/tsearch/regis.c +++ b/src/backend/tsearch/regis.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/regis.c,v 1.6 2009/01/01 17:23:48 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/regis.c,v 1.7 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -38,7 +38,7 @@ RS_isRegis(const char *str) if (state == RS_IN_WAIT) { if (t_isalpha(c)) - /* okay */ ; + /* okay */ ; else if (t_iseq(c, '[')) state = RS_IN_ONEOF; else @@ -56,7 +56,7 @@ RS_isRegis(const char *str) else if (state == RS_IN_ONEOF_IN || state == RS_IN_NONEOF) { if (t_isalpha(c)) - /* okay */ ; + /* okay */ ; else if (t_iseq(c, ']')) state = RS_IN_WAIT; else @@ -115,7 +115,7 @@ RS_compile(Regis *r, bool issuffix, const char *str) ptr->type = RSF_ONEOF; state = RS_IN_ONEOF; } - else /* shouldn't get here */ + else /* shouldn't get here */ elog(ERROR, "invalid regis pattern: \"%s\"", str); } else if (state == RS_IN_ONEOF) @@ -131,7 +131,7 @@ RS_compile(Regis *r, bool issuffix, const char *str) ptr->len = pg_mblen(c); state = RS_IN_ONEOF_IN; } - else /* shouldn't get here */ + else /* shouldn't get here */ elog(ERROR, "invalid regis pattern: \"%s\"", str); } else if (state == RS_IN_ONEOF_IN || state == RS_IN_NONEOF) @@ -143,7 +143,7 @@ RS_compile(Regis *r, bool issuffix, const char *str) } else if (t_iseq(c, ']')) state = RS_IN_WAIT; - else /* shouldn't get here */ + else /* shouldn't get here */ elog(ERROR, "invalid regis pattern: \"%s\"", str); } else @@ -151,7 +151,7 @@ RS_compile(Regis *r, bool issuffix, const char *str) c += pg_mblen(c); } - if (state != RS_IN_WAIT) /* shouldn't get here */ + if (state != RS_IN_WAIT) /* shouldn't get here */ elog(ERROR, "invalid regis pattern: \"%s\"", str); ptr = r->node; diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c index 71a77a1dcc2..71a3d94001f 100644 --- a/src/backend/tsearch/spell.c +++ b/src/backend/tsearch/spell.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/spell.c,v 1.15 2009/01/29 16:22:10 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/spell.c,v 1.16 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -521,7 +521,7 @@ addFlagValue(IspellDict *Conf, char *s, uint32 val) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("multibyte flag character is not allowed"))); - Conf->flagval[*(unsigned char*) s] = (unsigned char) val; + Conf->flagval[*(unsigned char *) s] = (unsigned char) val; Conf->usecompound = true; } @@ -654,7 +654,7 @@ NIImportOOAffixes(IspellDict *Conf, const char *filename) ptr = repl + (ptr - prepl) + 1; while (*ptr) { - aflg |= Conf->flagval[*(unsigned char*) ptr]; + aflg |= Conf->flagval[*(unsigned char *) ptr]; ptr++; } } @@ -735,7 +735,7 @@ NIImportAffixes(IspellDict *Conf, const char *filename) if (*s && pg_mblen(s) == 1) { - Conf->flagval[*(unsigned char*) s] = FF_COMPOUNDFLAG; + Conf->flagval[*(unsigned char *) s] = FF_COMPOUNDFLAG; Conf->usecompound = true; } oldformat = true; @@ -791,7 +791,7 @@ NIImportAffixes(IspellDict *Conf, const char *filename) (errcode(ERRCODE_CONFIG_FILE_ERROR), errmsg("multibyte flag character is not allowed"))); - flag = *(unsigned char*) s; + flag = *(unsigned char *) s; goto nextline; } if (STRNCMP(recoded, "COMPOUNDFLAG") == 0 || STRNCMP(recoded, "COMPOUNDMIN") == 0 || @@ -851,7 +851,7 @@ makeCompoundFlags(IspellDict *Conf, int affix) while (str && *str) { - flag |= Conf->flagval[*(unsigned char*) str]; + flag |= Conf->flagval[*(unsigned char *) str]; str++; } @@ -1306,7 +1306,7 @@ addToResult(char **forms, char **cur, char *word) if (forms == cur || strcmp(word, *(cur - 1)) != 0) { *cur = pstrdup(word); - *(cur+1) = NULL; + *(cur + 1) = NULL; return 1; } @@ -1497,7 +1497,7 @@ CopyVar(SplitVar *s, int makedup) static void AddStem(SplitVar *v, char *word) { - if ( v->nstem >= v->lenstem ) + if (v->nstem >= v->lenstem) { v->lenstem *= 2; v->stem = (char **) repalloc(v->stem, sizeof(char *) * v->lenstem); @@ -1546,8 +1546,8 @@ SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, char *word, int if (level + lenaff - 1 <= minpos) continue; - if ( lenaff >= MAXNORMLEN ) - continue; /* skip too big value */ + if (lenaff >= MAXNORMLEN) + continue; /* skip too big value */ if (lenaff > 0) memcpy(buf, word + startpos, lenaff); buf[lenaff] = '\0'; @@ -1570,7 +1570,7 @@ SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, char *word, int while (*sptr) { - AddStem( new, *sptr ); + AddStem(new, *sptr); sptr++; } pfree(subres); @@ -1621,7 +1621,7 @@ SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, char *word, int if (wordlen == level + 1) { /* well, it was last word */ - AddStem( var, pnstrdup(word + startpos, wordlen - startpos) ); + AddStem(var, pnstrdup(word + startpos, wordlen - startpos)); pfree(notprobed); return var; } @@ -1635,7 +1635,7 @@ SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, char *word, int ptr->next = SplitToVariants(Conf, node, var, word, wordlen, startpos, level); /* we can find next word */ level++; - AddStem( var, pnstrdup(word + startpos, level - startpos) ); + AddStem(var, pnstrdup(word + startpos, level - startpos)); node = Conf->Dictionary; startpos = level; continue; @@ -1649,18 +1649,19 @@ SplitToVariants(IspellDict *Conf, SPNode *snode, SplitVar *orig, char *word, int level++; } - AddStem( var, pnstrdup(word + startpos, wordlen - startpos) ); + AddStem(var, pnstrdup(word + startpos, wordlen - startpos)); pfree(notprobed); return var; } static void -addNorm( TSLexeme **lres, TSLexeme **lcur, char *word, int flags, uint16 NVariant) +addNorm(TSLexeme **lres, TSLexeme **lcur, char *word, int flags, uint16 NVariant) { - if ( *lres == NULL ) + if (*lres == NULL) *lcur = *lres = (TSLexeme *) palloc(MAX_NORM * sizeof(TSLexeme)); - if ( *lcur - *lres < MAX_NORM-1 ) { + if (*lcur - *lres < MAX_NORM - 1) + { (*lcur)->lexeme = word; (*lcur)->flags = flags; (*lcur)->nvariant = NVariant; @@ -1683,9 +1684,9 @@ NINormalizeWord(IspellDict *Conf, char *word) { char **ptr = res; - while (*ptr && (lcur-lres) < MAX_NORM) + while (*ptr && (lcur - lres) < MAX_NORM) { - addNorm( &lres, &lcur, *ptr, 0, NVariant++); + addNorm(&lres, &lcur, *ptr, 0, NVariant++); ptr++; } pfree(res); @@ -1712,10 +1713,10 @@ NINormalizeWord(IspellDict *Conf, char *word) { for (i = 0; i < var->nstem - 1; i++) { - addNorm( &lres, &lcur, (subptr == subres) ? var->stem[i] : pstrdup(var->stem[i]), 0, NVariant); + addNorm(&lres, &lcur, (subptr == subres) ? var->stem[i] : pstrdup(var->stem[i]), 0, NVariant); } - addNorm( &lres, &lcur, *subptr, 0, NVariant); + addNorm(&lres, &lcur, *subptr, 0, NVariant); subptr++; NVariant++; } diff --git a/src/backend/tsearch/to_tsany.c b/src/backend/tsearch/to_tsany.c index dcf6dfa241c..a71120fb5e2 100644 --- a/src/backend/tsearch/to_tsany.c +++ b/src/backend/tsearch/to_tsany.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/to_tsany.c,v 1.13 2009/01/01 17:23:48 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/to_tsany.c,v 1.14 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -32,13 +32,13 @@ get_current_ts_config(PG_FUNCTION_ARGS) static int compareWORD(const void *a, const void *b) { - int res; + int res; res = tsCompareString( - ((ParsedWord *) a)->word, ((ParsedWord *) a)->len, - ((ParsedWord *) b)->word, ((ParsedWord *) b)->len, - false ); - + ((ParsedWord *) a)->word, ((ParsedWord *) a)->len, + ((ParsedWord *) b)->word, ((ParsedWord *) b)->len, + false); + if (res == 0) { if (((ParsedWord *) a)->pos.pos == ((ParsedWord *) b)->pos.pos) @@ -162,7 +162,7 @@ make_tsvector(ParsedText *prs) if (lenstr > MAXSTRPOS) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("string is too long for tsvector (%d bytes, max %d bytes)", lenstr, MAXSTRPOS))); + errmsg("string is too long for tsvector (%d bytes, max %d bytes)", lenstr, MAXSTRPOS))); totallen = CALCDATASIZE(prs->curwords, lenstr); in = (TSVector) palloc0(totallen); @@ -301,8 +301,8 @@ pushval_morph(Datum opaque, TSQueryParserState state, char *strval, int lenval, while (count < prs.curwords && pos == prs.words[count].pos.pos && variant == prs.words[count].nvariant) { - pushValue(state, prs.words[count].word, prs.words[count].len, weight, - ( (prs.words[count].flags & TSL_PREFIX) || prefix ) ? true : false ); + pushValue(state, prs.words[count].word, prs.words[count].len, weight, + ((prs.words[count].flags & TSL_PREFIX) || prefix) ? true : false); pfree(prs.words[count].word); if (cnt) pushOperator(state, OP_AND); @@ -351,15 +351,16 @@ to_tsquery_byid(PG_FUNCTION_ARGS) } memcpy((void *) GETQUERY(query), (void *) res, len * sizeof(QueryItem)); - if ( len != query->size ) { - char *oldoperand = GETOPERAND(query); - int4 lenoperand = VARSIZE(query) - (oldoperand - (char*)query); + if (len != query->size) + { + char *oldoperand = GETOPERAND(query); + int4 lenoperand = VARSIZE(query) - (oldoperand - (char *) query); - Assert( len < query->size ); + Assert(len < query->size); query->size = len; - memcpy((void *) GETOPERAND(query), oldoperand, VARSIZE(query) - (oldoperand - (char*)query) ); - SET_VARSIZE(query, COMPUTESIZE( len, lenoperand )); + memcpy((void *) GETOPERAND(query), oldoperand, VARSIZE(query) - (oldoperand - (char *) query)); + SET_VARSIZE(query, COMPUTESIZE(len, lenoperand)); } pfree(res); @@ -401,15 +402,16 @@ plainto_tsquery_byid(PG_FUNCTION_ARGS) } memcpy((void *) GETQUERY(query), (void *) res, len * sizeof(QueryItem)); - if ( len != query->size ) { - char *oldoperand = GETOPERAND(query); - int4 lenoperand = VARSIZE(query) - (oldoperand - (char*)query); + if (len != query->size) + { + char *oldoperand = GETOPERAND(query); + int4 lenoperand = VARSIZE(query) - (oldoperand - (char *) query); - Assert( len < query->size ); + Assert(len < query->size); query->size = len; - memcpy((void *) GETOPERAND(query), oldoperand, lenoperand ); - SET_VARSIZE(query, COMPUTESIZE( len, lenoperand )); + memcpy((void *) GETOPERAND(query), oldoperand, lenoperand); + SET_VARSIZE(query, COMPUTESIZE(len, lenoperand)); } pfree(res); diff --git a/src/backend/tsearch/ts_locale.c b/src/backend/tsearch/ts_locale.c index 75702694dd1..cc1500dedf8 100644 --- a/src/backend/tsearch/ts_locale.c +++ b/src/backend/tsearch/ts_locale.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/ts_locale.c,v 1.12 2009/01/01 17:23:48 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/ts_locale.c,v 1.13 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -81,7 +81,7 @@ t_isprint(const char *ptr) /* - * Set up to read a file using tsearch_readline(). This facility is + * Set up to read a file using tsearch_readline(). This facility is * better than just reading the file directly because it provides error * context pointing to the specific line where a problem is detected. * @@ -159,10 +159,10 @@ tsearch_readline_callback(void *arg) /* * We can't include the text of the config line for errors that occur - * during t_readline() itself. This is only partly a consequence of - * our arms-length use of that routine: the major cause of such - * errors is encoding violations, and we daren't try to print error - * messages containing badly-encoded data. + * during t_readline() itself. This is only partly a consequence of our + * arms-length use of that routine: the major cause of such errors is + * encoding violations, and we daren't try to print error messages + * containing badly-encoded data. */ if (stp->curline) errcontext("line %d of configuration file \"%s\": \"%s\"", @@ -285,7 +285,7 @@ lowerstr_with_len(const char *str, int len) if (wlen < 0) ereport(ERROR, (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE), - errmsg("conversion from wchar_t to server encoding failed: %m"))); + errmsg("conversion from wchar_t to server encoding failed: %m"))); Assert(wlen < len); } else diff --git a/src/backend/tsearch/ts_parse.c b/src/backend/tsearch/ts_parse.c index 21b723385db..ccafe5f804e 100644 --- a/src/backend/tsearch/ts_parse.c +++ b/src/backend/tsearch/ts_parse.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/ts_parse.c,v 1.11 2009/01/15 16:33:59 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/ts_parse.c,v 1.12 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -464,8 +464,8 @@ hlfinditem(HeadlineParsedText *prs, TSQuery query, char *buf, int buflen) for (i = 0; i < query->size; i++) { if (item->type == QI_VAL && - tsCompareString( GETOPERAND(query) + item->operand.distance, item->operand.length, - buf, buflen, item->operand.prefix ) == 0 ) + tsCompareString(GETOPERAND(query) + item->operand.distance, item->operand.length, + buf, buflen, item->operand.prefix) == 0) { if (word->item) { @@ -584,9 +584,9 @@ generateHeadline(HeadlineParsedText *prs) { text *out; char *ptr; - int len = 128; - int numfragments = 0; - int2 infrag = 0; + int len = 128; + int numfragments = 0; + int2 infrag = 0; HeadlineWordEntry *wrd = prs->words; @@ -611,15 +611,15 @@ generateHeadline(HeadlineParsedText *prs) /* start of a new fragment */ infrag = 1; - numfragments ++; - /* add a fragment delimitor if this is after the first one */ + numfragments++; + /* add a fragment delimitor if this is after the first one */ if (numfragments > 1) { memcpy(ptr, prs->fragdelim, prs->fragdelimlen); ptr += prs->fragdelimlen; - } + } - } + } if (wrd->replace) { *ptr = ' '; @@ -646,7 +646,7 @@ generateHeadline(HeadlineParsedText *prs) if (infrag) infrag = 0; pfree(wrd->word); - } + } wrd++; } diff --git a/src/backend/tsearch/ts_selfuncs.c b/src/backend/tsearch/ts_selfuncs.c index 890019c0589..d0ffb0c773e 100644 --- a/src/backend/tsearch/ts_selfuncs.c +++ b/src/backend/tsearch/ts_selfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/ts_selfuncs.c,v 1.3 2009/06/03 18:42:13 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/ts_selfuncs.c,v 1.4 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -33,23 +33,23 @@ /* lookup table type for binary searching through MCELEMs */ typedef struct { - text *element; - float4 frequency; + text *element; + float4 frequency; } TextFreq; /* type of keys for bsearch'ing through an array of TextFreqs */ typedef struct { - char *lexeme; - int length; + char *lexeme; + int length; } LexemeKey; static Selectivity tsquerysel(VariableStatData *vardata, Datum constval); static Selectivity mcelem_tsquery_selec(TSQuery query, - Datum *mcelem, int nmcelem, - float4 *numbers, int nnumbers); + Datum *mcelem, int nmcelem, + float4 *numbers, int nnumbers); static Selectivity tsquery_opr_selec(QueryItem *item, char *operand, - TextFreq *lookup, int length, float4 minfreq); + TextFreq *lookup, int length, float4 minfreq); static int compare_lexeme_textfreq(const void *e1, const void *e2); @@ -63,6 +63,7 @@ Datum tsmatchsel(PG_FUNCTION_ARGS) { PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); + #ifdef NOT_USED Oid operator = PG_GETARG_OID(1); #endif @@ -71,7 +72,7 @@ tsmatchsel(PG_FUNCTION_ARGS) VariableStatData vardata; Node *other; bool varonleft; - Selectivity selec; + Selectivity selec; /* * If expression is not variable = something or something = variable, then @@ -145,8 +146,8 @@ tsmatchjoinsel(PG_FUNCTION_ARGS) static Selectivity tsquerysel(VariableStatData *vardata, Datum constval) { - Selectivity selec; - TSQuery query; + Selectivity selec; + TSQuery query; /* The caller made sure the const is a TSQuery, so get it now */ query = DatumGetTSQuery(constval); @@ -157,11 +158,11 @@ tsquerysel(VariableStatData *vardata, Datum constval) if (HeapTupleIsValid(vardata->statsTuple)) { - Form_pg_statistic stats; - Datum *values; - int nvalues; - float4 *numbers; - int nnumbers; + Form_pg_statistic stats; + Datum *values; + int nvalues; + float4 *numbers; + int nnumbers; stats = (Form_pg_statistic) GETSTRUCT(vardata->statsTuple); @@ -202,10 +203,10 @@ static Selectivity mcelem_tsquery_selec(TSQuery query, Datum *mcelem, int nmcelem, float4 *numbers, int nnumbers) { - float4 minfreq; - TextFreq *lookup; - Selectivity selec; - int i; + float4 minfreq; + TextFreq *lookup; + Selectivity selec; + int i; /* * There should be two more Numbers than Values, because the last two @@ -221,8 +222,8 @@ mcelem_tsquery_selec(TSQuery query, Datum *mcelem, int nmcelem, for (i = 0; i < nmcelem; i++) { /* - * The text Datums came from an array, so it cannot be compressed - * or stored out-of-line -- it's safe to use VARSIZE_ANY*. + * The text Datums came from an array, so it cannot be compressed or + * stored out-of-line -- it's safe to use VARSIZE_ANY*. */ Assert(!VARATT_IS_COMPRESSED(mcelem[i]) && !VARATT_IS_EXTERNAL(mcelem[i])); lookup[i].element = (text *) DatumGetPointer(mcelem[i]); @@ -246,15 +247,15 @@ mcelem_tsquery_selec(TSQuery query, Datum *mcelem, int nmcelem, /* * Traverse the tsquery in preorder, calculating selectivity as: * - * selec(left_oper) * selec(right_oper) in AND nodes, + * selec(left_oper) * selec(right_oper) in AND nodes, * - * selec(left_oper) + selec(right_oper) - - * selec(left_oper) * selec(right_oper) in OR nodes, + * selec(left_oper) + selec(right_oper) - + * selec(left_oper) * selec(right_oper) in OR nodes, * - * 1 - select(oper) in NOT nodes + * 1 - select(oper) in NOT nodes * - * freq[val] in VAL nodes, if the value is in MCELEM - * min(freq[MCELEM]) / 2 in VAL nodes, if it is not + * freq[val] in VAL nodes, if the value is in MCELEM + * min(freq[MCELEM]) / 2 in VAL nodes, if it is not * * * The MCELEM array is already sorted (see ts_typanalyze.c), so we can use @@ -265,8 +266,10 @@ tsquery_opr_selec(QueryItem *item, char *operand, TextFreq *lookup, int length, float4 minfreq) { LexemeKey key; - TextFreq *searchres; - Selectivity selec, s1, s2; + TextFreq *searchres; + Selectivity selec, + s1, + s2; /* since this function recurses, it could be driven to stack overflow */ check_stack_depth(); @@ -307,13 +310,13 @@ tsquery_opr_selec(QueryItem *item, char *operand, switch (item->operator.oper) { case OP_NOT: - selec = 1.0 - tsquery_opr_selec(item + 1, operand, - lookup, length, minfreq); + selec = 1.0 - tsquery_opr_selec(item + 1, operand, + lookup, length, minfreq); break; case OP_AND: s1 = tsquery_opr_selec(item + 1, operand, - lookup, length, minfreq); + lookup, length, minfreq); s2 = tsquery_opr_selec(item + item->operator.left, operand, lookup, length, minfreq); selec = s1 * s2; @@ -348,10 +351,10 @@ tsquery_opr_selec(QueryItem *item, char *operand, static int compare_lexeme_textfreq(const void *e1, const void *e2) { - const LexemeKey *key = (const LexemeKey *) e1; - const TextFreq *t = (const TextFreq *) e2; - int len1, - len2; + const LexemeKey *key = (const LexemeKey *) e1; + const TextFreq *t = (const TextFreq *) e2; + int len1, + len2; len1 = key->length; len2 = VARSIZE_ANY_EXHDR(t->element); diff --git a/src/backend/tsearch/ts_typanalyze.c b/src/backend/tsearch/ts_typanalyze.c index 37fe82a8b8f..11359c25ccc 100644 --- a/src/backend/tsearch/ts_typanalyze.c +++ b/src/backend/tsearch/ts_typanalyze.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/ts_typanalyze.c,v 1.6 2009/01/01 17:23:48 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/ts_typanalyze.c,v 1.7 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -31,21 +31,21 @@ typedef struct /* A hash table entry for the Lossy Counting algorithm */ typedef struct { - LexemeHashKey key; /* This is 'e' from the LC algorithm. */ - int frequency; /* This is 'f'. */ - int delta; /* And this is 'delta'. */ + LexemeHashKey key; /* This is 'e' from the LC algorithm. */ + int frequency; /* This is 'f'. */ + int delta; /* And this is 'delta'. */ } TrackItem; static void compute_tsvector_stats(VacAttrStats *stats, - AnalyzeAttrFetchFunc fetchfunc, - int samplerows, - double totalrows); + AnalyzeAttrFetchFunc fetchfunc, + int samplerows, + double totalrows); static void prune_lexemes_hashtable(HTAB *lexemes_tab, int b_current); static uint32 lexeme_hash(const void *key, Size keysize); -static int lexeme_match(const void *key1, const void *key2, Size keysize); -static int lexeme_compare(const void *key1, const void *key2); -static int trackitem_compare_frequencies_desc(const void *e1, const void *e2); -static int trackitem_compare_lexemes(const void *e1, const void *e2); +static int lexeme_match(const void *key1, const void *key2, Size keysize); +static int lexeme_compare(const void *key1, const void *key2); +static int trackitem_compare_frequencies_desc(const void *e1, const void *e2); +static int trackitem_compare_lexemes(const void *e1, const void *e2); /* @@ -94,7 +94,7 @@ ts_typanalyze(PG_FUNCTION_ARGS) * The Lossy Counting (aka LC) algorithm goes like this: * Let D be a set of triples (e, f, d), where e is an element value, f is * that element's frequency (occurrence count) and d is the maximum error in - * f. We start with D empty and process the elements in batches of size + * f. We start with D empty and process the elements in batches of size * w. (The batch size is also known as "bucket size".) Let the current batch * number be b_current, starting with 1. For each element e we either * increment its f count, if it's already in D, or insert a new triple into D @@ -114,29 +114,32 @@ compute_tsvector_stats(VacAttrStats *stats, int samplerows, double totalrows) { - int num_mcelem; - int null_cnt = 0; - double total_width = 0; + int num_mcelem; + int null_cnt = 0; + double total_width = 0; + /* This is D from the LC algorithm. */ - HTAB *lexemes_tab; - HASHCTL hash_ctl; - HASH_SEQ_STATUS scan_status; + HTAB *lexemes_tab; + HASHCTL hash_ctl; + HASH_SEQ_STATUS scan_status; + /* This is the current bucket number from the LC algorithm */ - int b_current; + int b_current; + /* This is 'w' from the LC algorithm */ - int bucket_width; - int vector_no, - lexeme_no; - LexemeHashKey hash_key; - TrackItem *item; + int bucket_width; + int vector_no, + lexeme_no; + LexemeHashKey hash_key; + TrackItem *item; /* We want statistics_target * 10 lexemes in the MCELEM array */ num_mcelem = stats->attr->attstattarget * 10; /* - * We set bucket width equal to the target number of result lexemes. - * This is probably about right but perhaps might need to be scaled - * up or down a bit? + * We set bucket width equal to the target number of result lexemes. This + * is probably about right but perhaps might need to be scaled up or down + * a bit? */ bucket_width = num_mcelem; @@ -154,7 +157,7 @@ compute_tsvector_stats(VacAttrStats *stats, lexemes_tab = hash_create("Analyzed lexemes table", bucket_width * 4, &hash_ctl, - HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT); + HASH_ELEM | HASH_FUNCTION | HASH_COMPARE | HASH_CONTEXT); /* Initialize counters. */ b_current = 1; @@ -165,9 +168,9 @@ compute_tsvector_stats(VacAttrStats *stats, { Datum value; bool isnull; - TSVector vector; - WordEntry *curentryptr; - char *lexemesptr; + TSVector vector; + WordEntry *curentryptr; + char *lexemesptr; int j; vacuum_delay_point(); @@ -198,7 +201,7 @@ compute_tsvector_stats(VacAttrStats *stats, /* * We loop through the lexemes in the tsvector and add them to our - * tracking hashtable. Note: the hashtable entries will point into + * tracking hashtable. Note: the hashtable entries will point into * the (detoasted) tsvector value, therefore we cannot free that * storage until we're done. */ @@ -206,7 +209,7 @@ compute_tsvector_stats(VacAttrStats *stats, curentryptr = ARRPTR(vector); for (j = 0; j < vector->size; j++) { - bool found; + bool found; /* Construct a hash key */ hash_key.lexeme = lexemesptr + curentryptr->pos; @@ -247,9 +250,10 @@ compute_tsvector_stats(VacAttrStats *stats, { int nonnull_cnt = samplerows - null_cnt; int i; - TrackItem **sort_table; + TrackItem **sort_table; int track_len; - int minfreq, maxfreq; + int minfreq, + maxfreq; stats->stats_valid = true; /* Do the simple null-frac and average width stats */ @@ -281,7 +285,7 @@ compute_tsvector_stats(VacAttrStats *stats, /* Suppress any single-occurrence items */ while (track_len > 0) { - if (sort_table[track_len-1]->frequency > 1) + if (sort_table[track_len - 1]->frequency > 1) break; track_len--; } @@ -293,9 +297,9 @@ compute_tsvector_stats(VacAttrStats *stats, /* Generate MCELEM slot entry */ if (num_mcelem > 0) { - MemoryContext old_context; - Datum *mcelem_values; - float4 *mcelem_freqs; + MemoryContext old_context; + Datum *mcelem_values; + float4 *mcelem_freqs; /* Grab the minimal and maximal frequencies that will get stored */ minfreq = sort_table[num_mcelem - 1]->frequency; @@ -305,15 +309,15 @@ compute_tsvector_stats(VacAttrStats *stats, * We want to store statistics sorted on the lexeme value using * first length, then byte-for-byte comparison. The reason for * doing length comparison first is that we don't care about the - * ordering so long as it's consistent, and comparing lengths first - * gives us a chance to avoid a strncmp() call. + * ordering so long as it's consistent, and comparing lengths + * first gives us a chance to avoid a strncmp() call. * - * This is different from what we do with scalar statistics -- they - * get sorted on frequencies. The rationale is that we usually - * search through most common elements looking for a specific - * value, so we can grab its frequency. When values are presorted - * we can employ binary search for that. See ts_selfuncs.c for a - * real usage scenario. + * This is different from what we do with scalar statistics -- + * they get sorted on frequencies. The rationale is that we + * usually search through most common elements looking for a + * specific value, so we can grab its frequency. When values are + * presorted we can employ binary search for that. See + * ts_selfuncs.c for a real usage scenario. */ qsort(sort_table, num_mcelem, sizeof(TrackItem *), trackitem_compare_lexemes); @@ -332,11 +336,11 @@ compute_tsvector_stats(VacAttrStats *stats, for (i = 0; i < num_mcelem; i++) { - TrackItem *item = sort_table[i]; + TrackItem *item = sort_table[i]; mcelem_values[i] = PointerGetDatum(cstring_to_text_with_len(item->key.lexeme, - item->key.length)); + item->key.length)); mcelem_freqs[i] = (double) item->frequency / (double) nonnull_cnt; } mcelem_freqs[i++] = (double) minfreq / (double) nonnull_cnt; @@ -352,7 +356,7 @@ compute_tsvector_stats(VacAttrStats *stats, stats->numvalues[0] = num_mcelem; /* We are storing text values */ stats->statypid[0] = TEXTOID; - stats->statyplen[0] = -1; /* typlen, -1 for varlena */ + stats->statyplen[0] = -1; /* typlen, -1 for varlena */ stats->statypbyval[0] = false; stats->statypalign[0] = 'i'; } @@ -362,13 +366,13 @@ compute_tsvector_stats(VacAttrStats *stats, /* We found only nulls; assume the column is entirely null */ stats->stats_valid = true; stats->stanullfrac = 1.0; - stats->stawidth = 0; /* "unknown" */ - stats->stadistinct = 0.0; /* "unknown" */ + stats->stawidth = 0; /* "unknown" */ + stats->stadistinct = 0.0; /* "unknown" */ } /* - * We don't need to bother cleaning up any of our temporary palloc's. - * The hashtable should also go away, as it used a child memory context. + * We don't need to bother cleaning up any of our temporary palloc's. The + * hashtable should also go away, as it used a child memory context. */ } @@ -379,8 +383,8 @@ compute_tsvector_stats(VacAttrStats *stats, static void prune_lexemes_hashtable(HTAB *lexemes_tab, int b_current) { - HASH_SEQ_STATUS scan_status; - TrackItem *item; + HASH_SEQ_STATUS scan_status; + TrackItem *item; hash_seq_init(&scan_status, lexemes_tab); while ((item = (TrackItem *) hash_seq_search(&scan_status)) != NULL) @@ -423,8 +427,8 @@ lexeme_match(const void *key1, const void *key2, Size keysize) static int lexeme_compare(const void *key1, const void *key2) { - const LexemeHashKey *d1 = (const LexemeHashKey *) key1; - const LexemeHashKey *d2 = (const LexemeHashKey *) key2; + const LexemeHashKey *d1 = (const LexemeHashKey *) key1; + const LexemeHashKey *d2 = (const LexemeHashKey *) key2; /* First, compare by length */ if (d1->length > d2->length) @@ -441,8 +445,8 @@ lexeme_compare(const void *key1, const void *key2) static int trackitem_compare_frequencies_desc(const void *e1, const void *e2) { - const TrackItem * const *t1 = (const TrackItem * const *) e1; - const TrackItem * const *t2 = (const TrackItem * const *) e2; + const TrackItem *const * t1 = (const TrackItem *const *) e1; + const TrackItem *const * t2 = (const TrackItem *const *) e2; return (*t2)->frequency - (*t1)->frequency; } @@ -453,8 +457,8 @@ trackitem_compare_frequencies_desc(const void *e1, const void *e2) static int trackitem_compare_lexemes(const void *e1, const void *e2) { - const TrackItem * const *t1 = (const TrackItem * const *) e1; - const TrackItem * const *t2 = (const TrackItem * const *) e2; + const TrackItem *const * t1 = (const TrackItem *const *) e1; + const TrackItem *const * t2 = (const TrackItem *const *) e2; return lexeme_compare(&(*t1)->key, &(*t2)->key); } diff --git a/src/backend/tsearch/wparser.c b/src/backend/tsearch/wparser.c index f21484dfd80..da70d14cea6 100644 --- a/src/backend/tsearch/wparser.c +++ b/src/backend/tsearch/wparser.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tsearch/wparser.c,v 1.10 2009/01/01 17:23:48 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/tsearch/wparser.c,v 1.11 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -309,9 +309,9 @@ ts_headline_byid_opt(PG_FUNCTION_ARGS) prsobj = lookup_ts_parser_cache(cfg->prsId); if (!OidIsValid(prsobj->headlineOid)) - ereport(ERROR, + ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("text search parser does not support headline creation"))); + errmsg("text search parser does not support headline creation"))); memset(&prs, 0, sizeof(HeadlineParsedText)); prs.lenwords = 32; diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index 64d55b6b1ce..67c4ea36e36 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.147 2009/02/06 21:15:11 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.148 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -84,7 +84,7 @@ static int oidComparator(const void *arg1, const void *arg2); static AclMode convert_priv_string(text *priv_type_text); static AclMode convert_any_priv_string(text *priv_type_text, - const priv_map *privileges); + const priv_map *privileges); static Oid convert_table_name(text *tablename); static AclMode convert_table_priv_string(text *priv_type_text); @@ -386,7 +386,7 @@ allocacl(int n) Acl * aclcopy(const Acl *orig_acl) { - Acl *result_acl; + Acl *result_acl; result_acl = allocacl(ACL_NUM(orig_acl)); @@ -406,7 +406,7 @@ aclcopy(const Acl *orig_acl) Acl * aclconcat(const Acl *left_acl, const Acl *right_acl) { - Acl *result_acl; + Acl *result_acl; result_acl = allocacl(ACL_NUM(left_acl) + ACL_NUM(right_acl)); @@ -1682,23 +1682,23 @@ static AclMode convert_table_priv_string(text *priv_type_text) { static const priv_map table_priv_map[] = { - { "SELECT", ACL_SELECT }, - { "SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT) }, - { "INSERT", ACL_INSERT }, - { "INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT) }, - { "UPDATE", ACL_UPDATE }, - { "UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE) }, - { "DELETE", ACL_DELETE }, - { "DELETE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_DELETE) }, - { "TRUNCATE", ACL_TRUNCATE }, - { "TRUNCATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRUNCATE) }, - { "REFERENCES", ACL_REFERENCES }, - { "REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES) }, - { "TRIGGER", ACL_TRIGGER }, - { "TRIGGER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRIGGER) }, - { "RULE", 0 }, /* ignore old RULE privileges */ - { "RULE WITH GRANT OPTION", 0 }, - { NULL, 0 } + {"SELECT", ACL_SELECT}, + {"SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT)}, + {"INSERT", ACL_INSERT}, + {"INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT)}, + {"UPDATE", ACL_UPDATE}, + {"UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE)}, + {"DELETE", ACL_DELETE}, + {"DELETE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_DELETE)}, + {"TRUNCATE", ACL_TRUNCATE}, + {"TRUNCATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRUNCATE)}, + {"REFERENCES", ACL_REFERENCES}, + {"REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES)}, + {"TRIGGER", ACL_TRIGGER}, + {"TRIGGER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRIGGER)}, + {"RULE", 0}, /* ignore old RULE privileges */ + {"RULE WITH GRANT OPTION", 0}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, table_priv_map); @@ -1928,7 +1928,7 @@ column_privilege_check(Oid tableoid, AttrNumber attnum, * existence of the pg_class row before risking calling pg_class_aclcheck. * Note: it might seem there's a race condition against concurrent DROP, * but really it's safe because there will be no syscache flush between - * here and there. So if we see the row in the syscache, so will + * here and there. So if we see the row in the syscache, so will * pg_class_aclcheck. */ if (!SearchSysCacheExists(RELOID, @@ -2314,15 +2314,15 @@ static AclMode convert_column_priv_string(text *priv_type_text) { static const priv_map column_priv_map[] = { - { "SELECT", ACL_SELECT }, - { "SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT) }, - { "INSERT", ACL_INSERT }, - { "INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT) }, - { "UPDATE", ACL_UPDATE }, - { "UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE) }, - { "REFERENCES", ACL_REFERENCES }, - { "REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES) }, - { NULL, 0 } + {"SELECT", ACL_SELECT}, + {"SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT)}, + {"INSERT", ACL_INSERT}, + {"INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT)}, + {"UPDATE", ACL_UPDATE}, + {"UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE)}, + {"REFERENCES", ACL_REFERENCES}, + {"REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, column_priv_map); @@ -2524,15 +2524,15 @@ static AclMode convert_database_priv_string(text *priv_type_text) { static const priv_map database_priv_map[] = { - { "CREATE", ACL_CREATE }, - { "CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { "TEMPORARY", ACL_CREATE_TEMP }, - { "TEMPORARY WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP) }, - { "TEMP", ACL_CREATE_TEMP }, - { "TEMP WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP) }, - { "CONNECT", ACL_CONNECT }, - { "CONNECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CONNECT) }, - { NULL, 0 } + {"CREATE", ACL_CREATE}, + {"CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {"TEMPORARY", ACL_CREATE_TEMP}, + {"TEMPORARY WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP)}, + {"TEMP", ACL_CREATE_TEMP}, + {"TEMP WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP)}, + {"CONNECT", ACL_CONNECT}, + {"CONNECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CONNECT)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, database_priv_map); @@ -2713,9 +2713,9 @@ static AclMode convert_foreign_data_wrapper_priv_string(text *priv_type_text) { static const priv_map foreign_data_wrapper_priv_map[] = { - { "USAGE", ACL_USAGE }, - { "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE) }, - { NULL, 0 } + {"USAGE", ACL_USAGE}, + {"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, foreign_data_wrapper_priv_map); @@ -2919,9 +2919,9 @@ static AclMode convert_function_priv_string(text *priv_type_text) { static const priv_map function_priv_map[] = { - { "EXECUTE", ACL_EXECUTE }, - { "EXECUTE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_EXECUTE) }, - { NULL, 0 } + {"EXECUTE", ACL_EXECUTE}, + {"EXECUTE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_EXECUTE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, function_priv_map); @@ -3125,9 +3125,9 @@ static AclMode convert_language_priv_string(text *priv_type_text) { static const priv_map language_priv_map[] = { - { "USAGE", ACL_USAGE }, - { "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE) }, - { NULL, 0 } + {"USAGE", ACL_USAGE}, + {"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, language_priv_map); @@ -3331,11 +3331,11 @@ static AclMode convert_schema_priv_string(text *priv_type_text) { static const priv_map schema_priv_map[] = { - { "CREATE", ACL_CREATE }, - { "CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { "USAGE", ACL_USAGE }, - { "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE) }, - { NULL, 0 } + {"CREATE", ACL_CREATE}, + {"CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {"USAGE", ACL_USAGE}, + {"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, schema_priv_map); @@ -3515,9 +3515,9 @@ static AclMode convert_server_priv_string(text *priv_type_text) { static const priv_map server_priv_map[] = { - { "USAGE", ACL_USAGE }, - { "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE) }, - { NULL, 0 } + {"USAGE", ACL_USAGE}, + {"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, server_priv_map); @@ -3705,9 +3705,9 @@ static AclMode convert_tablespace_priv_string(text *priv_type_text) { static const priv_map tablespace_priv_map[] = { - { "CREATE", ACL_CREATE }, - { "CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { NULL, 0 } + {"CREATE", ACL_CREATE}, + {"CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, tablespace_priv_map); @@ -3881,13 +3881,13 @@ static AclMode convert_role_priv_string(text *priv_type_text) { static const priv_map role_priv_map[] = { - { "USAGE", ACL_USAGE }, - { "MEMBER", ACL_CREATE }, - { "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { "USAGE WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { "MEMBER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { "MEMBER WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) }, - { NULL, 0 } + {"USAGE", ACL_USAGE}, + {"MEMBER", ACL_CREATE}, + {"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {"USAGE WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {"MEMBER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {"MEMBER WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)}, + {NULL, 0} }; return convert_any_priv_string(priv_type_text, role_priv_map); diff --git a/src/backend/utils/adt/array_userfuncs.c b/src/backend/utils/adt/array_userfuncs.c index b43ad389937..c30d6b42b07 100644 --- a/src/backend/utils/adt/array_userfuncs.c +++ b/src/backend/utils/adt/array_userfuncs.c @@ -6,7 +6,7 @@ * Copyright (c) 2003-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.29 2009/06/09 18:15:04 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.30 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -474,7 +474,7 @@ create_singleton_array(FunctionCallInfo fcinfo, Datum array_agg_transfn(PG_FUNCTION_ARGS) { - Oid arg1_typeid = get_fn_expr_argtype(fcinfo->flinfo, 1); + Oid arg1_typeid = get_fn_expr_argtype(fcinfo->flinfo, 1); MemoryContext aggcontext; ArrayBuildState *state; Datum elem; @@ -504,10 +504,9 @@ array_agg_transfn(PG_FUNCTION_ARGS) aggcontext); /* - * The transition type for array_agg() is declared to be "internal", - * which is a pass-by-value type the same size as a pointer. So we - * can safely pass the ArrayBuildState pointer through nodeAgg.c's - * machinations. + * The transition type for array_agg() is declared to be "internal", which + * is a pass-by-value type the same size as a pointer. So we can safely + * pass the ArrayBuildState pointer through nodeAgg.c's machinations. */ PG_RETURN_POINTER(state); } @@ -521,12 +520,12 @@ array_agg_finalfn(PG_FUNCTION_ARGS) int lbs[1]; /* - * Test for null before Asserting we are in right context. This is - * to avoid possible Assert failure in 8.4beta installations, where - * it is possible for users to create NULL constants of type internal. + * Test for null before Asserting we are in right context. This is to + * avoid possible Assert failure in 8.4beta installations, where it is + * possible for users to create NULL constants of type internal. */ if (PG_ARGISNULL(0)) - PG_RETURN_NULL(); /* returns null iff no input values */ + PG_RETURN_NULL(); /* returns null iff no input values */ /* cannot be called directly because of internal-type argument */ Assert(fcinfo->context && diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c index 4f0da19d23d..b3973fbccb9 100644 --- a/src/backend/utils/adt/arrayfuncs.c +++ b/src/backend/utils/adt/arrayfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.156 2009/04/15 23:30:33 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.157 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -96,10 +96,10 @@ static void array_insert_slice(ArrayType *destArray, ArrayType *origArray, int typlen, bool typbyval, char typalign); static int array_cmp(FunctionCallInfo fcinfo); static ArrayType *create_array_envelope(int ndims, int *dimv, int *lbv, int nbytes, - Oid elmtype, int dataoffset); + Oid elmtype, int dataoffset); static ArrayType *array_fill_internal(ArrayType *dims, ArrayType *lbs, - Datum value, bool isnull, Oid elmtype, - FunctionCallInfo fcinfo); + Datum value, bool isnull, Oid elmtype, + FunctionCallInfo fcinfo); /* @@ -1532,7 +1532,7 @@ array_send(PG_FUNCTION_ARGS) /* * array_ndims : - * returns the number of dimensions of the array pointed to by "v" + * returns the number of dimensions of the array pointed to by "v" */ Datum array_ndims(PG_FUNCTION_ARGS) @@ -4287,9 +4287,9 @@ array_smaller(PG_FUNCTION_ARGS) typedef struct generate_subscripts_fctx { - int4 lower; - int4 upper; - bool reverse; + int4 lower; + int4 upper; + bool reverse; } generate_subscripts_fctx; /* @@ -4306,10 +4306,10 @@ generate_subscripts(PG_FUNCTION_ARGS) /* stuff done only on the first call of the function */ if (SRF_IS_FIRSTCALL()) { - ArrayType *v = PG_GETARG_ARRAYTYPE_P(0); - int reqdim = PG_GETARG_INT32(1); - int *lb, - *dimv; + ArrayType *v = PG_GETARG_ARRAYTYPE_P(0); + int reqdim = PG_GETARG_INT32(1); + int *lb, + *dimv; /* create a function context for cross-call persistence */ funcctx = SRF_FIRSTCALL_INIT(); @@ -4374,20 +4374,20 @@ generate_subscripts_nodir(PG_FUNCTION_ARGS) Datum array_fill_with_lower_bounds(PG_FUNCTION_ARGS) { - ArrayType *dims; - ArrayType *lbs; - ArrayType *result; + ArrayType *dims; + ArrayType *lbs; + ArrayType *result; Oid elmtype; - Datum value; - bool isnull; + Datum value; + bool isnull; if (PG_ARGISNULL(1) || PG_ARGISNULL(2)) ereport(ERROR, - (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), - errmsg("dimension array or low bound array cannot be NULL"))); + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("dimension array or low bound array cannot be NULL"))); dims = PG_GETARG_ARRAYTYPE_P(1); - lbs = PG_GETARG_ARRAYTYPE_P(2); + lbs = PG_GETARG_ARRAYTYPE_P(2); if (!PG_ARGISNULL(0)) { @@ -4415,16 +4415,16 @@ array_fill_with_lower_bounds(PG_FUNCTION_ARGS) Datum array_fill(PG_FUNCTION_ARGS) { - ArrayType *dims; - ArrayType *result; + ArrayType *dims; + ArrayType *result; Oid elmtype; - Datum value; - bool isnull; + Datum value; + bool isnull; if (PG_ARGISNULL(1)) ereport(ERROR, - (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), - errmsg("dimension array or low bound array cannot be NULL"))); + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("dimension array or low bound array cannot be NULL"))); dims = PG_GETARG_ARRAYTYPE_P(1); @@ -4451,7 +4451,7 @@ static ArrayType * create_array_envelope(int ndims, int *dimv, int *lbsv, int nbytes, Oid elmtype, int dataoffset) { - ArrayType *result; + ArrayType *result; result = (ArrayType *) palloc0(nbytes); SET_VARSIZE(result, nbytes); @@ -4469,36 +4469,36 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, Datum value, bool isnull, Oid elmtype, FunctionCallInfo fcinfo) { - ArrayType *result; - int *dimv; - int *lbsv; - int ndims; - int nitems; - int deflbs[MAXDIM]; - int16 elmlen; - bool elmbyval; - char elmalign; - ArrayMetaState *my_extra; + ArrayType *result; + int *dimv; + int *lbsv; + int ndims; + int nitems; + int deflbs[MAXDIM]; + int16 elmlen; + bool elmbyval; + char elmalign; + ArrayMetaState *my_extra; /* * Params checks */ if (ARR_NDIM(dims) != 1) ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong number of array subscripts"), - errdetail("Dimension array must be one dimensional."))); + (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), + errmsg("wrong number of array subscripts"), + errdetail("Dimension array must be one dimensional."))); if (ARR_LBOUND(dims)[0] != 1) ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong range of array subscripts"), - errdetail("Lower bound of dimension array must be one."))); + (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), + errmsg("wrong range of array subscripts"), + errdetail("Lower bound of dimension array must be one."))); if (ARR_HASNULL(dims)) ereport(ERROR, - (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), - errmsg("dimension values cannot be null"))); + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("dimension values cannot be null"))); dimv = (int *) ARR_DATA_PTR(dims); ndims = ARR_DIMS(dims)[0]; @@ -4517,32 +4517,32 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, { if (ARR_NDIM(lbs) != 1) ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong number of array subscripts"), - errdetail("Dimension array must be one dimensional."))); + (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), + errmsg("wrong number of array subscripts"), + errdetail("Dimension array must be one dimensional."))); if (ARR_LBOUND(lbs)[0] != 1) ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong range of array subscripts"), - errdetail("Lower bound of dimension array must be one."))); + (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), + errmsg("wrong range of array subscripts"), + errdetail("Lower bound of dimension array must be one."))); if (ARR_HASNULL(lbs)) ereport(ERROR, - (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), - errmsg("dimension values cannot be null"))); + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("dimension values cannot be null"))); if (ARR_DIMS(lbs)[0] != ndims) ereport(ERROR, - (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), - errmsg("wrong number of array subscripts"), - errdetail("Low bound array has different size than dimensions array."))); + (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR), + errmsg("wrong number of array subscripts"), + errdetail("Low bound array has different size than dimensions array."))); lbsv = (int *) ARR_DATA_PTR(lbs); } else { - int i; + int i; for (i = 0; i < MAXDIM; i++) deflbs[i] = 1; @@ -4586,8 +4586,8 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, /* compute required space */ if (!isnull) { - int i; - char *p; + int i; + char *p; int nbytes; int totbytes; @@ -4624,8 +4624,8 @@ array_fill_internal(ArrayType *dims, ArrayType *lbs, } else { - int nbytes; - int dataoffset; + int nbytes; + int dataoffset; dataoffset = ARR_OVERHEAD_WITHNULLS(ndims, nitems); nbytes = dataoffset; @@ -4648,14 +4648,14 @@ array_unnest(PG_FUNCTION_ARGS) { typedef struct { - ArrayType *arr; - int nextelem; - int numelems; - char *elemdataptr; /* this moves with nextelem */ - bits8 *arraynullsptr; /* this does not */ - int16 elmlen; - bool elmbyval; - char elmalign; + ArrayType *arr; + int nextelem; + int numelems; + char *elemdataptr; /* this moves with nextelem */ + bits8 *arraynullsptr; /* this does not */ + int16 elmlen; + bool elmbyval; + char elmalign; } array_unnest_fctx; FuncCallContext *funcctx; @@ -4677,10 +4677,10 @@ array_unnest(PG_FUNCTION_ARGS) /* * Get the array value and detoast if needed. We can't do this - * earlier because if we have to detoast, we want the detoasted - * copy to be in multi_call_memory_ctx, so it will go away when - * we're done and not before. (If no detoast happens, we assume - * the originally passed array will stick around till then.) + * earlier because if we have to detoast, we want the detoasted copy + * to be in multi_call_memory_ctx, so it will go away when we're done + * and not before. (If no detoast happens, we assume the originally + * passed array will stick around till then.) */ arr = PG_GETARG_ARRAYTYPE_P(0); @@ -4710,8 +4710,8 @@ array_unnest(PG_FUNCTION_ARGS) if (fctx->nextelem < fctx->numelems) { - int offset = fctx->nextelem++; - Datum elem; + int offset = fctx->nextelem++; + Datum elem; /* * Check for NULL array element @@ -4727,7 +4727,7 @@ array_unnest(PG_FUNCTION_ARGS) /* * OK, get the element */ - char *ptr = fctx->elemdataptr; + char *ptr = fctx->elemdataptr; fcinfo->isnull = false; elem = ArrayCast(ptr, fctx->elmbyval, fctx->elmlen); diff --git a/src/backend/utils/adt/bool.c b/src/backend/utils/adt/bool.c index a9f9c5b2078..848827a81a9 100644 --- a/src/backend/utils/adt/bool.c +++ b/src/backend/utils/adt/bool.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/bool.c,v 1.47 2009/03/09 16:49:12 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/bool.c,v 1.48 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -110,7 +110,7 @@ parse_bool_with_len(const char *value, size_t len, bool *result) } if (result) - *result = false; /* suppress compiler warning */ + *result = false; /* suppress compiler warning */ return false; } diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c index 73d55c5b54f..784947e4405 100644 --- a/src/backend/utils/adt/cash.c +++ b/src/backend/utils/adt/cash.c @@ -13,7 +13,7 @@ * this version handles 64 bit numbers and so can hold values up to * $92,233,720,368,547,758.07. * - * $PostgreSQL: pgsql/src/backend/utils/adt/cash.c,v 1.81 2009/06/10 16:31:32 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/cash.c,v 1.82 2009/06/11 14:49:03 momjian Exp $ */ #include "postgres.h" @@ -320,9 +320,8 @@ cash_out(PG_FUNCTION_ARGS) count -= strlen(csymbol) - 1; /* - * If points == 0 and the number of digits % mon_group == 0, - * the code above adds a trailing ssymbol on the far right, - * so remove it. + * If points == 0 and the number of digits % mon_group == 0, the code + * above adds a trailing ssymbol on the far right, so remove it. */ if (buf[LAST_DIGIT] == ssymbol) buf[LAST_DIGIT] = '\0'; @@ -792,13 +791,13 @@ cash_words(PG_FUNCTION_ARGS) /* Now treat as unsigned, to avoid trouble at INT_MIN */ val = (uint64) value; - m0 = val % INT64CONST(100); /* cents */ - m1 = (val / INT64CONST(100)) % 1000; /* hundreds */ - m2 = (val / INT64CONST(100000)) % 1000; /* thousands */ - m3 = (val / INT64CONST(100000000)) % 1000; /* millions */ + m0 = val % INT64CONST(100); /* cents */ + m1 = (val / INT64CONST(100)) % 1000; /* hundreds */ + m2 = (val / INT64CONST(100000)) % 1000; /* thousands */ + m3 = (val / INT64CONST(100000000)) % 1000; /* millions */ m4 = (val / INT64CONST(100000000000)) % 1000; /* billions */ m5 = (val / INT64CONST(100000000000000)) % 1000; /* trillions */ - m6 = (val / INT64CONST(100000000000000000)) % 1000; /* quadrillions */ + m6 = (val / INT64CONST(100000000000000000)) % 1000; /* quadrillions */ if (m6) { diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index 5d84d6447d6..43148bec90d 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.145 2009/05/26 01:29:09 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.146 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -231,7 +231,7 @@ EncodeSpecialDate(DateADT dt, char *str) strcpy(str, EARLY); else if (DATE_IS_NOEND(dt)) strcpy(str, LATE); - else /* shouldn't happen */ + else /* shouldn't happen */ elog(ERROR, "invalid argument for EncodeSpecialDate"); } @@ -2552,7 +2552,7 @@ timetz_zone(PG_FUNCTION_ARGS) pg_tz *tzp; /* - * Look up the requested timezone. First we look in the date token table + * Look up the requested timezone. First we look in the date token table * (to handle cases like "EST"), and if that fails, we look in the * timezone database (to handle cases like "America/New_York"). (This * matches the order in which timestamp input checks the cases; it's diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index e6f4689a59f..186522148d5 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.207 2009/06/10 05:05:03 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.208 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -40,17 +40,17 @@ static int DecodeTime(char *str, int fmask, int range, int *tmask, struct pg_tm * tm, fsec_t *fsec); static int DecodeTimezone(char *str, int *tzp); static const datetkn *datebsearch(const char *key, const datetkn *base, int nel); -static int DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, - struct pg_tm * tm); -static int ValidateDate(int fmask, bool is2digits, bool bc, - struct pg_tm * tm); +static int DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, + struct pg_tm * tm); +static int ValidateDate(int fmask, bool is2digits, bool bc, + struct pg_tm * tm); static void TrimTrailingZeros(char *str); static void AppendSeconds(char *cp, int sec, fsec_t fsec, - int precision, bool fillzeros); + int precision, bool fillzeros); static void AdjustFractSeconds(double frac, struct pg_tm * tm, fsec_t *fsec, - int scale); + int scale); static void AdjustFractDays(double frac, struct pg_tm * tm, fsec_t *fsec, - int scale); + int scale); const int day_tab[2][13] = @@ -266,7 +266,7 @@ static const datetkn *deltacache[MAXDATEFIELDS] = {NULL}; static int strtoi(const char *nptr, char **endptr, int base) { - long val; + long val; val = strtol(nptr, endptr, base); #ifdef HAVE_LONG_INT_64 @@ -461,8 +461,8 @@ static void AppendTimestampSeconds(char *cp, struct pg_tm * tm, fsec_t fsec) { /* - * In float mode, don't print fractional seconds before 1 AD, - * since it's unlikely there's any precision left ... + * In float mode, don't print fractional seconds before 1 AD, since it's + * unlikely there's any precision left ... */ #ifndef HAVE_INT64_TIMESTAMP if (tm->tm_year <= 0) @@ -478,18 +478,18 @@ AppendTimestampSeconds(char *cp, struct pg_tm * tm, fsec_t fsec) static void AdjustFractSeconds(double frac, struct pg_tm * tm, fsec_t *fsec, int scale) { - int sec; + int sec; if (frac == 0) return; - frac *= scale; - sec = (int) frac; + frac *= scale; + sec = (int) frac; tm->tm_sec += sec; - frac -= sec; + frac -= sec; #ifdef HAVE_INT64_TIMESTAMP - *fsec += rint(frac * 1000000); + *fsec += rint(frac * 1000000); #else - *fsec += frac; + *fsec += frac; #endif } @@ -497,14 +497,14 @@ AdjustFractSeconds(double frac, struct pg_tm * tm, fsec_t *fsec, int scale) static void AdjustFractDays(double frac, struct pg_tm * tm, fsec_t *fsec, int scale) { - int extra_days; + int extra_days; if (frac == 0) return; - frac *= scale; - extra_days = (int) frac; + frac *= scale; + extra_days = (int) frac; tm->tm_mday += extra_days; - frac -= extra_days; + frac -= extra_days; AdjustFractSeconds(frac, tm, fsec, SECS_PER_DAY); } @@ -1358,7 +1358,7 @@ DecodeDateTime(char **field, int *ftype, int nf, if (tmask & fmask) return DTERR_BAD_FORMAT; fmask |= tmask; - } /* end loop over fields */ + } /* end loop over fields */ /* do final checking/adjustment of Y/M/D fields */ dterr = ValidateDate(fmask, is2digits, bc, tm); @@ -2042,7 +2042,7 @@ DecodeTimeOnly(char **field, int *ftype, int nf, if (tmask & fmask) return DTERR_BAD_FORMAT; fmask |= tmask; - } /* end loop over fields */ + } /* end loop over fields */ /* do final checking/adjustment of Y/M/D fields */ dterr = ValidateDate(fmask, is2digits, bc, tm); @@ -2059,7 +2059,7 @@ DecodeTimeOnly(char **field, int *ftype, int nf, if (tm->tm_hour < 0 || tm->tm_min < 0 || tm->tm_min > 59 || tm->tm_sec < 0 || tm->tm_sec > 60 || tm->tm_hour > 24 || - /* test for > 24:00:00 */ + /* test for > 24:00:00 */ (tm->tm_hour == 24 && (tm->tm_min > 0 || tm->tm_sec > 0 || *fsec > 0)) || #ifdef HAVE_INT64_TIMESTAMP @@ -2262,7 +2262,7 @@ ValidateDate(int fmask, bool is2digits, bool bc, struct pg_tm * tm) else if (is2digits) { /* process 1 or 2-digit input as 1970-2069 AD, allow '0' and '00' */ - if (tm->tm_year < 0) /* just paranoia */ + if (tm->tm_year < 0) /* just paranoia */ return DTERR_FIELD_OVERFLOW; if (tm->tm_year < 70) tm->tm_year += 2000; @@ -2599,8 +2599,8 @@ DecodeNumberField(int len, char *str, int fmask, if ((cp = strchr(str, '.')) != NULL) { /* - * Can we use ParseFractionalSecond here? Not clear whether - * trailing junk should be rejected ... + * Can we use ParseFractionalSecond here? Not clear whether trailing + * junk should be rejected ... */ double frac; @@ -2805,16 +2805,16 @@ DecodeSpecial(int field, char *lowtoken, int *val) * * Zero out a pg_tm and associated fsec_t */ -static inline void -ClearPgTm(struct pg_tm *tm, fsec_t *fsec) +static inline void +ClearPgTm(struct pg_tm * tm, fsec_t *fsec) { tm->tm_year = 0; - tm->tm_mon = 0; + tm->tm_mon = 0; tm->tm_mday = 0; tm->tm_hour = 0; - tm->tm_min = 0; - tm->tm_sec = 0; - *fsec = 0; + tm->tm_min = 0; + tm->tm_sec = 0; + *fsec = 0; } @@ -2845,7 +2845,7 @@ DecodeInterval(char **field, int *ftype, int nf, int range, *dtype = DTK_DELTA; type = IGNORE_DTF; - ClearPgTm(tm,fsec); + ClearPgTm(tm, fsec); /* read through list backwards to pick up units before values */ for (i = nf - 1; i >= 0; i--) @@ -2863,16 +2863,16 @@ DecodeInterval(char **field, int *ftype, int nf, int range, case DTK_TZ: /* - * Timezone is a token with a leading sign character and - * at least one digit; there could be ':', '.', '-' - * embedded in it as well. + * Timezone is a token with a leading sign character and at + * least one digit; there could be ':', '.', '-' embedded in + * it as well. */ Assert(*field[i] == '-' || *field[i] == '+'); /* * Try for hh:mm or hh:mm:ss. If not, fall through to - * DTK_NUMBER case, which can handle signed float numbers - * and signed year-month values. + * DTK_NUMBER case, which can handle signed float numbers and + * signed year-month values. */ if (strchr(field[i] + 1, ':') != NULL && DecodeTime(field[i] + 1, fmask, INTERVAL_FULL_RANGE, @@ -2944,7 +2944,7 @@ DecodeInterval(char **field, int *ftype, int nf, int range, if (*cp == '-') { /* SQL "years-months" syntax */ - int val2; + int val2; val2 = strtoi(cp + 1, &cp, 10); if (errno == ERANGE || val2 < 0 || val2 >= MONTHS_PER_YEAR) @@ -3022,7 +3022,7 @@ DecodeInterval(char **field, int *ftype, int nf, int range, tm->tm_hour += val; AdjustFractSeconds(fval, tm, fsec, SECS_PER_HOUR); tmask = DTK_M(HOUR); - type = DTK_DAY; /* set for next field */ + type = DTK_DAY; /* set for next field */ break; case DTK_DAY: @@ -3133,7 +3133,7 @@ DecodeInterval(char **field, int *ftype, int nf, int range, /*---------- * The SQL standard defines the interval literal - * '-1 1:00:00' + * '-1 1:00:00' * to mean "negative 1 days and negative 1 hours", while Postgres * traditionally treats this as meaning "negative 1 days and positive * 1 hours". In SQL_STANDARD intervalstyle, we apply the leading sign @@ -3143,14 +3143,14 @@ DecodeInterval(char **field, int *ftype, int nf, int range, * This protects us against misinterpreting postgres-style dump output, * since the postgres-style output code has always put an explicit sign on * all fields following a negative field. But note that SQL-spec output - * is ambiguous and can be misinterpreted on load! (So it's best practice + * is ambiguous and can be misinterpreted on load! (So it's best practice * to dump in postgres style, not SQL style.) *---------- */ if (IntervalStyle == INTSTYLE_SQL_STANDARD && *field[0] == '-') { /* Check for additional explicit signs */ - bool more_signs = false; + bool more_signs = false; for (i = 1; i < nf; i++) { @@ -3164,8 +3164,8 @@ DecodeInterval(char **field, int *ftype, int nf, int range, if (!more_signs) { /* - * Rather than re-determining which field was field[0], just - * force 'em all negative. + * Rather than re-determining which field was field[0], just force + * 'em all negative. */ if (*fsec > 0) *fsec = -(*fsec); @@ -3245,28 +3245,28 @@ ISO8601IntegerWidth(char *fieldstart) /* 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 - * PT1H for 1 hour - * P2Y6M7DT1H30M for 2 years, 6 months, 7 days 1 hour 30 min - * P0002-06-07T01:30:00 the same value in alternative format + * 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 + * PT1H for 1 hour + * P2Y6M7DT1H30M for 2 years, 6 months, 7 days 1 hour 30 min + * P0002-06-07T01:30:00 the same value in alternative format * * Returns 0 if successful, DTERR code if bogus input detected. * Note: error code should be DTERR_BAD_FORMAT if input doesn't look like * ISO8601, otherwise this could cause unexpected error messages. * dtype, tm, fsec are output parameters. * - * A couple exceptions from the spec: - * - a week field ('W') may coexist with other units - * - allows decimals in fields other than the least significant unit. + * A couple exceptions from the spec: + * - a week field ('W') may coexist with other units + * - allows decimals in fields other than the least significant unit. */ int DecodeISO8601Interval(char *str, int *dtype, struct pg_tm * tm, fsec_t *fsec) { - bool datepart = true; - bool havefield = false; + bool datepart = true; + bool havefield = false; *dtype = DTK_DELTA; ClearPgTm(tm, fsec); @@ -3277,13 +3277,13 @@ DecodeISO8601Interval(char *str, str++; while (*str) { - char *fieldstart; - int val; - double fval; - char unit; - int dterr; + char *fieldstart; + int val; + double fval; + char unit; + int dterr; - if (*str == 'T') /* T indicates the beginning of the time part */ + if (*str == 'T') /* T indicates the beginning of the time part */ { datepart = false; havefield = false; @@ -3297,14 +3297,14 @@ DecodeISO8601Interval(char *str, return dterr; /* - * Note: we could step off the end of the string here. Code below + * Note: we could step off the end of the string here. Code below * *must* exit the loop if unit == '\0'. */ unit = *str++; if (datepart) { - switch (unit) /* before T: Y M W D */ + switch (unit) /* before T: Y M W D */ { case 'Y': tm->tm_year += val; @@ -3322,12 +3322,12 @@ DecodeISO8601Interval(char *str, tm->tm_mday += val; AdjustFractSeconds(fval, tm, fsec, SECS_PER_DAY); break; - case 'T': /* ISO 8601 4.4.3.3 Alternative Format / Basic */ + case 'T': /* ISO 8601 4.4.3.3 Alternative Format / Basic */ case '\0': if (ISO8601IntegerWidth(fieldstart) == 8 && !havefield) { tm->tm_year += val / 10000; - tm->tm_mon += (val / 100) % 100; + tm->tm_mon += (val / 100) % 100; tm->tm_mday += val % 100; AdjustFractSeconds(fval, tm, fsec, SECS_PER_DAY); if (unit == '\0') @@ -3337,12 +3337,13 @@ DecodeISO8601Interval(char *str, continue; } /* Else fall through to extended alternative format */ - case '-': /* ISO 8601 4.4.3.3 Alternative Format, Extended */ + case '-': /* ISO 8601 4.4.3.3 Alternative Format, + * Extended */ if (havefield) return DTERR_BAD_FORMAT; tm->tm_year += val; - tm->tm_mon += (fval * 12); + tm->tm_mon += (fval * 12); if (unit == '\0') return 0; if (unit == 'T') @@ -3355,7 +3356,7 @@ DecodeISO8601Interval(char *str, dterr = ParseISO8601Number(str, &str, &val, &fval); if (dterr) return dterr; - tm->tm_mon += val; + tm->tm_mon += val; AdjustFractDays(fval, tm, fsec, DAYS_PER_MONTH); if (*str == '\0') return 0; @@ -3368,7 +3369,7 @@ DecodeISO8601Interval(char *str, if (*str != '-') return DTERR_BAD_FORMAT; str++; - + dterr = ParseISO8601Number(str, &str, &val, &fval); if (dterr) return dterr; @@ -3390,7 +3391,7 @@ DecodeISO8601Interval(char *str, } else { - switch (unit) /* after T: H M S */ + switch (unit) /* after T: H M S */ { case 'H': tm->tm_hour += val; @@ -3404,17 +3405,18 @@ DecodeISO8601Interval(char *str, tm->tm_sec += val; AdjustFractSeconds(fval, tm, fsec, 1); break; - case '\0': /* ISO 8601 4.4.3.3 Alternative Format */ - if (ISO8601IntegerWidth(fieldstart) == 6 && !havefield) + case '\0': /* ISO 8601 4.4.3.3 Alternative Format */ + if (ISO8601IntegerWidth(fieldstart) == 6 && !havefield) { tm->tm_hour += val / 10000; - tm->tm_min += (val / 100) % 100; - tm->tm_sec += val % 100; + tm->tm_min += (val / 100) % 100; + tm->tm_sec += val % 100; AdjustFractSeconds(fval, tm, fsec, 1); return 0; } /* Else fall through to extended alternative format */ - case ':': /* ISO 8601 4.4.3.3 Alternative Format, Extended */ + case ':': /* ISO 8601 4.4.3.3 Alternative Format, + * Extended */ if (havefield) return DTERR_BAD_FORMAT; @@ -3422,22 +3424,22 @@ DecodeISO8601Interval(char *str, AdjustFractSeconds(fval, tm, fsec, SECS_PER_HOUR); if (unit == '\0') return 0; - + dterr = ParseISO8601Number(str, &str, &val, &fval); if (dterr) return dterr; - tm->tm_min += val; + tm->tm_min += val; AdjustFractSeconds(fval, tm, fsec, SECS_PER_MINUTE); if (*str == '\0') return 0; if (*str != ':') return DTERR_BAD_FORMAT; str++; - + dterr = ParseISO8601Number(str, &str, &val, &fval); if (dterr) return dterr; - tm->tm_sec += val; + tm->tm_sec += val; AdjustFractSeconds(fval, tm, fsec, 1); if (*str == '\0') return 0; @@ -3843,9 +3845,10 @@ AddPostgresIntPart(char *cp, int value, const char *units, value, units, (value != 1) ? "s" : ""); + /* - * Each nonzero field sets is_before for (only) the next one. This is - * a tad bizarre but it's how it worked before... + * Each nonzero field sets is_before for (only) the next one. This is a + * tad bizarre but it's how it worked before... */ *is_before = (value < 0); *is_zero = FALSE; @@ -3884,7 +3887,7 @@ AddVerboseIntPart(char *cp, int value, const char *units, * Actually, afaik, ISO 8601 does specify formats for "time * intervals...[of the]...format with time-unit designators", which * are pretty ugly. The format looks something like - * P1Y1M1DT1H1M1.12345S + * P1Y1M1DT1H1M1.12345S * but useful for exchanging data with computers instead of humans. * - ron 2003-07-14 * @@ -3897,11 +3900,11 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) { char *cp = str; int year = tm->tm_year; - int mon = tm->tm_mon; + int mon = tm->tm_mon; int mday = tm->tm_mday; int hour = tm->tm_hour; - int min = tm->tm_min; - int sec = tm->tm_sec; + int min = tm->tm_min; + int sec = tm->tm_sec; bool is_before = FALSE; bool is_zero = TRUE; @@ -3913,21 +3916,21 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) */ switch (style) { - /* SQL Standard interval format */ + /* SQL Standard interval format */ case INTSTYLE_SQL_STANDARD: { - bool has_negative = year < 0 || mon < 0 || - mday < 0 || hour < 0 || - min < 0 || sec < 0 || fsec < 0; - bool has_positive = year > 0 || mon > 0 || - mday > 0 || hour > 0 || - min > 0 || sec > 0 || fsec > 0; - bool has_year_month = year != 0 || mon != 0; - bool has_day_time = mday != 0 || hour != 0 || - min != 0 || sec != 0 || fsec != 0; - bool has_day = mday != 0; - bool sql_standard_value = !(has_negative && has_positive) && - !(has_year_month && has_day_time); + bool has_negative = year < 0 || mon < 0 || + mday < 0 || hour < 0 || + min < 0 || sec < 0 || fsec < 0; + bool has_positive = year > 0 || mon > 0 || + mday > 0 || hour > 0 || + min > 0 || sec > 0 || fsec > 0; + bool has_year_month = year != 0 || mon != 0; + bool has_day_time = mday != 0 || hour != 0 || + min != 0 || sec != 0 || fsec != 0; + bool has_day = mday != 0; + bool sql_standard_value = !(has_negative && has_positive) && + !(has_year_month && has_day_time); /* * SQL Standard wants only 1 "<sign>" preceding the whole @@ -3937,11 +3940,11 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) { *cp++ = '-'; year = -year; - mon = -mon; + mon = -mon; mday = -mday; hour = -hour; - min = -min; - sec = -sec; + min = -min; + sec = -sec; fsec = -fsec; } @@ -3952,15 +3955,14 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) else if (!sql_standard_value) { /* - * For non sql-standard interval values, - * force outputting the signs to avoid - * ambiguities with intervals with mixed - * sign components. + * For non sql-standard interval values, force outputting + * the signs to avoid ambiguities with intervals with + * mixed sign components. */ - char year_sign = (year < 0 || mon < 0) ? '-' : '+'; - char day_sign = (mday < 0) ? '-' : '+'; - char sec_sign = (hour < 0 || min < 0 || - sec < 0 || fsec < 0) ? '-' : '+'; + char year_sign = (year < 0 || mon < 0) ? '-' : '+'; + char day_sign = (mday < 0) ? '-' : '+'; + char sec_sign = (hour < 0 || min < 0 || + sec < 0 || fsec < 0) ? '-' : '+'; sprintf(cp, "%c%d-%d %c%d %c%d:%02d:", year_sign, abs(year), abs(mon), @@ -3988,23 +3990,23 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) } break; - /* ISO 8601 "time-intervals by duration only" */ + /* ISO 8601 "time-intervals by duration only" */ case INTSTYLE_ISO_8601: /* special-case zero to avoid printing nothing */ if (year == 0 && mon == 0 && mday == 0 && - hour == 0 && min == 0 && sec == 0 && fsec == 0) + hour == 0 && min == 0 && sec == 0 && fsec == 0) { sprintf(cp, "PT0S"); break; } *cp++ = 'P'; cp = AddISO8601IntPart(cp, year, 'Y'); - cp = AddISO8601IntPart(cp, mon , 'M'); + cp = AddISO8601IntPart(cp, mon, 'M'); cp = AddISO8601IntPart(cp, mday, 'D'); if (hour != 0 || min != 0 || sec != 0 || fsec != 0) *cp++ = 'T'; cp = AddISO8601IntPart(cp, hour, 'H'); - cp = AddISO8601IntPart(cp, min , 'M'); + cp = AddISO8601IntPart(cp, min, 'M'); if (sec != 0 || fsec != 0) { if (sec < 0 || fsec < 0) @@ -4016,14 +4018,14 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) } break; - /* Compatible with postgresql < 8.4 when DateStyle = 'iso' */ + /* Compatible with postgresql < 8.4 when DateStyle = 'iso' */ case INTSTYLE_POSTGRES: cp = AddPostgresIntPart(cp, year, "year", &is_zero, &is_before); cp = AddPostgresIntPart(cp, mon, "mon", &is_zero, &is_before); cp = AddPostgresIntPart(cp, mday, "day", &is_zero, &is_before); if (is_zero || hour != 0 || min != 0 || sec != 0 || fsec != 0) { - bool minus = (hour < 0 || min < 0 || sec < 0 || fsec < 0); + bool minus = (hour < 0 || min < 0 || sec < 0 || fsec < 0); sprintf(cp, "%s%s%02d:%02d:", is_zero ? "" : " ", @@ -4034,7 +4036,7 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) } break; - /* Compatible with postgresql < 8.4 when DateStyle != 'iso' */ + /* Compatible with postgresql < 8.4 when DateStyle != 'iso' */ case INTSTYLE_POSTGRES_VERBOSE: default: strcpy(cp, "@"); diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index a8b3eb22148..9b97751524b 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -5,7 +5,7 @@ * Copyright (c) 2002-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.23 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.24 2009/06/11 14:49:03 momjian Exp $ * */ @@ -294,7 +294,7 @@ pg_relation_size(PG_FUNCTION_ARGS) rel = relation_open(relOid, AccessShareLock); size = calculate_relation_size(&(rel->rd_node), - forkname_to_number(text_to_cstring(forkName))); + forkname_to_number(text_to_cstring(forkName))); relation_close(rel, AccessShareLock); diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index 82447385151..4547240be1f 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.161 2009/03/04 22:08:20 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/float.c,v 1.162 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1335,8 +1335,8 @@ dpow(PG_FUNCTION_ARGS) /* * The SQL spec requires that we emit a particular SQLSTATE error code for - * certain error conditions. Specifically, we don't return a divide-by-zero - * error code for 0 ^ -1. + * certain error conditions. Specifically, we don't return a + * divide-by-zero error code for 0 ^ -1. */ if (arg1 == 0 && arg2 < 0) ereport(ERROR, diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 3498e2c503f..064993bd87b 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- * formatting.c * - * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.156 2009/03/15 20:31:19 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.157 2009/06/11 14:49:03 momjian Exp $ * * * Portions Copyright (c) 1999-2009, PostgreSQL Global Development Group @@ -148,9 +148,9 @@ typedef struct */ typedef enum { - FROM_CHAR_DATE_NONE = 0, /* Value does not affect date mode. */ - FROM_CHAR_DATE_GREGORIAN, /* Gregorian (day, month, year) style date */ - FROM_CHAR_DATE_ISOWEEK /* ISO 8601 week date */ + FROM_CHAR_DATE_NONE = 0, /* Value does not affect date mode. */ + FROM_CHAR_DATE_GREGORIAN, /* Gregorian (day, month, year) style date */ + FROM_CHAR_DATE_ISOWEEK /* ISO 8601 week date */ } FromCharDateMode; typedef struct FormatNode FormatNode; @@ -286,9 +286,9 @@ static char *numth[] = {"st", "nd", "rd", "th", NULL}; * Flags & Options: * ---------- */ -#define ONE_UPPER 1 /* Name */ -#define ALL_UPPER 2 /* NAME */ -#define ALL_LOWER 3 /* name */ +#define ONE_UPPER 1 /* Name */ +#define ALL_UPPER 2 /* NAME */ +#define ALL_LOWER 3 /* name */ #define FULL_SIZ 0 @@ -421,8 +421,8 @@ typedef struct cc, j, us, - yysz, /* is it YY or YYYY ? */ - clock; /* 12 or 24 hour clock? */ + yysz, /* is it YY or YYYY ? */ + clock; /* 12 or 24 hour clock? */ } TmFromChar; #define ZERO_tmfc(_X) memset(_X, 0, sizeof(TmFromChar)) @@ -709,94 +709,94 @@ typedef enum */ static const KeyWord DCH_keywords[] = { /* name, len, id, is_digit, date_mode */ - {"A.D.", 4, DCH_A_D, FALSE, FROM_CHAR_DATE_NONE}, /* A */ + {"A.D.", 4, DCH_A_D, FALSE, FROM_CHAR_DATE_NONE}, /* A */ {"A.M.", 4, DCH_A_M, FALSE, FROM_CHAR_DATE_NONE}, {"AD", 2, DCH_AD, FALSE, FROM_CHAR_DATE_NONE}, {"AM", 2, DCH_AM, FALSE, FROM_CHAR_DATE_NONE}, - {"B.C.", 4, DCH_B_C, FALSE, FROM_CHAR_DATE_NONE}, /* B */ + {"B.C.", 4, DCH_B_C, FALSE, FROM_CHAR_DATE_NONE}, /* B */ {"BC", 2, DCH_BC, FALSE, FROM_CHAR_DATE_NONE}, - {"CC", 2, DCH_CC, TRUE, FROM_CHAR_DATE_NONE}, /* C */ - {"DAY", 3, DCH_DAY, FALSE, FROM_CHAR_DATE_NONE}, /* D */ + {"CC", 2, DCH_CC, TRUE, FROM_CHAR_DATE_NONE}, /* C */ + {"DAY", 3, DCH_DAY, FALSE, FROM_CHAR_DATE_NONE}, /* D */ {"DDD", 3, DCH_DDD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"DD", 2, DCH_DD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"DY", 2, DCH_DY, FALSE, FROM_CHAR_DATE_NONE}, {"Day", 3, DCH_Day, FALSE, FROM_CHAR_DATE_NONE}, {"Dy", 2, DCH_Dy, FALSE, FROM_CHAR_DATE_NONE}, {"D", 1, DCH_D, TRUE, FROM_CHAR_DATE_GREGORIAN}, - {"FX", 2, DCH_FX, FALSE, FROM_CHAR_DATE_NONE}, /* F */ - {"HH24", 4, DCH_HH24, TRUE, FROM_CHAR_DATE_NONE}, /* H */ + {"FX", 2, DCH_FX, FALSE, FROM_CHAR_DATE_NONE}, /* F */ + {"HH24", 4, DCH_HH24, TRUE, FROM_CHAR_DATE_NONE}, /* H */ {"HH12", 4, DCH_HH12, TRUE, FROM_CHAR_DATE_NONE}, {"HH", 2, DCH_HH, TRUE, FROM_CHAR_DATE_NONE}, - {"IDDD", 4, DCH_IDDD, TRUE, FROM_CHAR_DATE_ISOWEEK}, /* I */ + {"IDDD", 4, DCH_IDDD, TRUE, FROM_CHAR_DATE_ISOWEEK}, /* I */ {"ID", 2, DCH_ID, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"IW", 2, DCH_IW, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"IYYY", 4, DCH_IYYY, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"IYY", 3, DCH_IYY, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"IY", 2, DCH_IY, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"I", 1, DCH_I, TRUE, FROM_CHAR_DATE_ISOWEEK}, - {"J", 1, DCH_J, TRUE, FROM_CHAR_DATE_NONE}, /* J */ - {"MI", 2, DCH_MI, TRUE, FROM_CHAR_DATE_NONE}, /* M */ + {"J", 1, DCH_J, TRUE, FROM_CHAR_DATE_NONE}, /* J */ + {"MI", 2, DCH_MI, TRUE, FROM_CHAR_DATE_NONE}, /* M */ {"MM", 2, DCH_MM, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"MONTH", 5, DCH_MONTH, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"MON", 3, DCH_MON, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"MS", 2, DCH_MS, TRUE, FROM_CHAR_DATE_NONE}, {"Month", 5, DCH_Month, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"Mon", 3, DCH_Mon, FALSE, FROM_CHAR_DATE_GREGORIAN}, - {"P.M.", 4, DCH_P_M, FALSE, FROM_CHAR_DATE_NONE}, /* P */ + {"P.M.", 4, DCH_P_M, FALSE, FROM_CHAR_DATE_NONE}, /* P */ {"PM", 2, DCH_PM, FALSE, FROM_CHAR_DATE_NONE}, - {"Q", 1, DCH_Q, TRUE, FROM_CHAR_DATE_NONE}, /* Q */ - {"RM", 2, DCH_RM, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* R */ - {"SSSS", 4, DCH_SSSS, TRUE, FROM_CHAR_DATE_NONE}, /* S */ + {"Q", 1, DCH_Q, TRUE, FROM_CHAR_DATE_NONE}, /* Q */ + {"RM", 2, DCH_RM, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* R */ + {"SSSS", 4, DCH_SSSS, TRUE, FROM_CHAR_DATE_NONE}, /* S */ {"SS", 2, DCH_SS, TRUE, FROM_CHAR_DATE_NONE}, - {"TZ", 2, DCH_TZ, FALSE, FROM_CHAR_DATE_NONE}, /* T */ - {"US", 2, DCH_US, TRUE, FROM_CHAR_DATE_NONE}, /* U */ - {"WW", 2, DCH_WW, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* W */ + {"TZ", 2, DCH_TZ, FALSE, FROM_CHAR_DATE_NONE}, /* T */ + {"US", 2, DCH_US, TRUE, FROM_CHAR_DATE_NONE}, /* U */ + {"WW", 2, DCH_WW, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* W */ {"W", 1, DCH_W, TRUE, FROM_CHAR_DATE_GREGORIAN}, - {"Y,YYY", 5, DCH_Y_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN},/* Y */ + {"Y,YYY", 5, DCH_Y_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* Y */ {"YYYY", 4, DCH_YYYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"YYY", 3, DCH_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"YY", 2, DCH_YY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"Y", 1, DCH_Y, TRUE, FROM_CHAR_DATE_GREGORIAN}, - {"a.d.", 4, DCH_a_d, FALSE, FROM_CHAR_DATE_NONE}, /* a */ + {"a.d.", 4, DCH_a_d, FALSE, FROM_CHAR_DATE_NONE}, /* a */ {"a.m.", 4, DCH_a_m, FALSE, FROM_CHAR_DATE_NONE}, {"ad", 2, DCH_ad, FALSE, FROM_CHAR_DATE_NONE}, {"am", 2, DCH_am, FALSE, FROM_CHAR_DATE_NONE}, - {"b.c.", 4, DCH_b_c, FALSE, FROM_CHAR_DATE_NONE}, /* b */ + {"b.c.", 4, DCH_b_c, FALSE, FROM_CHAR_DATE_NONE}, /* b */ {"bc", 2, DCH_bc, FALSE, FROM_CHAR_DATE_NONE}, - {"cc", 2, DCH_CC, TRUE, FROM_CHAR_DATE_NONE}, /* c */ - {"day", 3, DCH_day, FALSE, FROM_CHAR_DATE_NONE}, /* d */ + {"cc", 2, DCH_CC, TRUE, FROM_CHAR_DATE_NONE}, /* c */ + {"day", 3, DCH_day, FALSE, FROM_CHAR_DATE_NONE}, /* d */ {"ddd", 3, DCH_DDD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"dd", 2, DCH_DD, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"dy", 2, DCH_dy, FALSE, FROM_CHAR_DATE_NONE}, {"d", 1, DCH_D, TRUE, FROM_CHAR_DATE_GREGORIAN}, - {"fx", 2, DCH_FX, FALSE, FROM_CHAR_DATE_NONE}, /* f */ - {"hh24", 4, DCH_HH24, TRUE, FROM_CHAR_DATE_NONE}, /* h */ + {"fx", 2, DCH_FX, FALSE, FROM_CHAR_DATE_NONE}, /* f */ + {"hh24", 4, DCH_HH24, TRUE, FROM_CHAR_DATE_NONE}, /* h */ {"hh12", 4, DCH_HH12, TRUE, FROM_CHAR_DATE_NONE}, {"hh", 2, DCH_HH, TRUE, FROM_CHAR_DATE_NONE}, - {"iddd", 4, DCH_IDDD, TRUE, FROM_CHAR_DATE_ISOWEEK}, /* i */ + {"iddd", 4, DCH_IDDD, TRUE, FROM_CHAR_DATE_ISOWEEK}, /* i */ {"id", 2, DCH_ID, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"iw", 2, DCH_IW, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"iyyy", 4, DCH_IYYY, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"iyy", 3, DCH_IYY, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"iy", 2, DCH_IY, TRUE, FROM_CHAR_DATE_ISOWEEK}, {"i", 1, DCH_I, TRUE, FROM_CHAR_DATE_ISOWEEK}, - {"j", 1, DCH_J, TRUE, FROM_CHAR_DATE_NONE}, /* j */ - {"mi", 2, DCH_MI, TRUE, FROM_CHAR_DATE_NONE}, /* m */ + {"j", 1, DCH_J, TRUE, FROM_CHAR_DATE_NONE}, /* j */ + {"mi", 2, DCH_MI, TRUE, FROM_CHAR_DATE_NONE}, /* m */ {"mm", 2, DCH_MM, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"month", 5, DCH_month, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"mon", 3, DCH_mon, FALSE, FROM_CHAR_DATE_GREGORIAN}, {"ms", 2, DCH_MS, TRUE, FROM_CHAR_DATE_NONE}, - {"p.m.", 4, DCH_p_m, FALSE, FROM_CHAR_DATE_NONE}, /* p */ + {"p.m.", 4, DCH_p_m, FALSE, FROM_CHAR_DATE_NONE}, /* p */ {"pm", 2, DCH_pm, FALSE, FROM_CHAR_DATE_NONE}, - {"q", 1, DCH_Q, TRUE, FROM_CHAR_DATE_NONE}, /* q */ - {"rm", 2, DCH_rm, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* r */ - {"ssss", 4, DCH_SSSS, TRUE, FROM_CHAR_DATE_NONE}, /* s */ + {"q", 1, DCH_Q, TRUE, FROM_CHAR_DATE_NONE}, /* q */ + {"rm", 2, DCH_rm, FALSE, FROM_CHAR_DATE_GREGORIAN}, /* r */ + {"ssss", 4, DCH_SSSS, TRUE, FROM_CHAR_DATE_NONE}, /* s */ {"ss", 2, DCH_SS, TRUE, FROM_CHAR_DATE_NONE}, - {"tz", 2, DCH_tz, FALSE, FROM_CHAR_DATE_NONE}, /* t */ - {"us", 2, DCH_US, TRUE, FROM_CHAR_DATE_NONE}, /* u */ - {"ww", 2, DCH_WW, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* w */ + {"tz", 2, DCH_tz, FALSE, FROM_CHAR_DATE_NONE}, /* t */ + {"us", 2, DCH_US, TRUE, FROM_CHAR_DATE_NONE}, /* u */ + {"ww", 2, DCH_WW, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* w */ {"w", 1, DCH_W, TRUE, FROM_CHAR_DATE_GREGORIAN}, - {"y,yyy", 5, DCH_Y_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN},/* y */ + {"y,yyy", 5, DCH_Y_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, /* y */ {"yyyy", 4, DCH_YYYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"yyy", 3, DCH_YYY, TRUE, FROM_CHAR_DATE_GREGORIAN}, {"yy", 2, DCH_YY, TRUE, FROM_CHAR_DATE_GREGORIAN}, @@ -814,42 +814,42 @@ static const KeyWord DCH_keywords[] = { */ static const KeyWord NUM_keywords[] = { /* name, len, id is in Index */ - {",", 1, NUM_COMMA}, /* , */ - {".", 1, NUM_DEC}, /* . */ - {"0", 1, NUM_0}, /* 0 */ - {"9", 1, NUM_9}, /* 9 */ - {"B", 1, NUM_B}, /* B */ - {"C", 1, NUM_C}, /* C */ - {"D", 1, NUM_D}, /* D */ - {"E", 1, NUM_E}, /* E */ - {"FM", 2, NUM_FM}, /* F */ - {"G", 1, NUM_G}, /* G */ - {"L", 1, NUM_L}, /* L */ - {"MI", 2, NUM_MI}, /* M */ - {"PL", 2, NUM_PL}, /* P */ + {",", 1, NUM_COMMA}, /* , */ + {".", 1, NUM_DEC}, /* . */ + {"0", 1, NUM_0}, /* 0 */ + {"9", 1, NUM_9}, /* 9 */ + {"B", 1, NUM_B}, /* B */ + {"C", 1, NUM_C}, /* C */ + {"D", 1, NUM_D}, /* D */ + {"E", 1, NUM_E}, /* E */ + {"FM", 2, NUM_FM}, /* F */ + {"G", 1, NUM_G}, /* G */ + {"L", 1, NUM_L}, /* L */ + {"MI", 2, NUM_MI}, /* M */ + {"PL", 2, NUM_PL}, /* P */ {"PR", 2, NUM_PR}, - {"RN", 2, NUM_RN}, /* R */ - {"SG", 2, NUM_SG}, /* S */ + {"RN", 2, NUM_RN}, /* R */ + {"SG", 2, NUM_SG}, /* S */ {"SP", 2, NUM_SP}, {"S", 1, NUM_S}, - {"TH", 2, NUM_TH}, /* T */ - {"V", 1, NUM_V}, /* V */ - {"b", 1, NUM_B}, /* b */ - {"c", 1, NUM_C}, /* c */ - {"d", 1, NUM_D}, /* d */ - {"e", 1, NUM_E}, /* e */ - {"fm", 2, NUM_FM}, /* f */ - {"g", 1, NUM_G}, /* g */ - {"l", 1, NUM_L}, /* l */ - {"mi", 2, NUM_MI}, /* m */ - {"pl", 2, NUM_PL}, /* p */ + {"TH", 2, NUM_TH}, /* T */ + {"V", 1, NUM_V}, /* V */ + {"b", 1, NUM_B}, /* b */ + {"c", 1, NUM_C}, /* c */ + {"d", 1, NUM_D}, /* d */ + {"e", 1, NUM_E}, /* e */ + {"fm", 2, NUM_FM}, /* f */ + {"g", 1, NUM_G}, /* g */ + {"l", 1, NUM_L}, /* l */ + {"mi", 2, NUM_MI}, /* m */ + {"pl", 2, NUM_PL}, /* p */ {"pr", 2, NUM_PR}, - {"rn", 2, NUM_rn}, /* r */ - {"sg", 2, NUM_SG}, /* s */ + {"rn", 2, NUM_rn}, /* r */ + {"sg", 2, NUM_SG}, /* s */ {"sp", 2, NUM_SP}, {"s", 1, NUM_S}, - {"th", 2, NUM_th}, /* t */ - {"v", 1, NUM_V}, /* v */ + {"th", 2, NUM_th}, /* t */ + {"v", 1, NUM_V}, /* v */ /* last */ {NULL, 0, 0} @@ -950,7 +950,7 @@ static void parse_format(FormatNode *node, char *str, const KeyWord *kw, KeySuffix *suf, const int *index, int ver, NUMDesc *Num); static void DCH_to_char(FormatNode *node, bool is_interval, - TmToChar *in, char *out); + TmToChar *in, char *out); static void DCH_from_char(FormatNode *node, char *in, TmFromChar *out); #ifdef DEBUG_TO_FROM_CHAR @@ -1474,7 +1474,7 @@ str_numth(char *dest, char *num, int type) char * str_tolower(const char *buff, size_t nbytes) { - char *result; + char *result; if (!buff) return NULL; @@ -1482,7 +1482,7 @@ str_tolower(const char *buff, size_t nbytes) #ifdef USE_WIDE_UPPER_LOWER if (pg_database_encoding_max_length() > 1 && !lc_ctype_is_c()) { - wchar_t *workspace; + wchar_t *workspace; size_t curr_char; size_t result_size; @@ -1508,9 +1508,9 @@ str_tolower(const char *buff, size_t nbytes) pfree(workspace); } else -#endif /* USE_WIDE_UPPER_LOWER */ +#endif /* USE_WIDE_UPPER_LOWER */ { - char *p; + char *p; result = pnstrdup(buff, nbytes); @@ -1530,7 +1530,7 @@ str_tolower(const char *buff, size_t nbytes) char * str_toupper(const char *buff, size_t nbytes) { - char *result; + char *result; if (!buff) return NULL; @@ -1538,7 +1538,7 @@ str_toupper(const char *buff, size_t nbytes) #ifdef USE_WIDE_UPPER_LOWER if (pg_database_encoding_max_length() > 1 && !lc_ctype_is_c()) { - wchar_t *workspace; + wchar_t *workspace; size_t curr_char; size_t result_size; @@ -1564,9 +1564,9 @@ str_toupper(const char *buff, size_t nbytes) pfree(workspace); } else -#endif /* USE_WIDE_UPPER_LOWER */ +#endif /* USE_WIDE_UPPER_LOWER */ { - char *p; + char *p; result = pnstrdup(buff, nbytes); @@ -1586,7 +1586,7 @@ str_toupper(const char *buff, size_t nbytes) char * str_initcap(const char *buff, size_t nbytes) { - char *result; + char *result; int wasalnum = false; if (!buff) @@ -1595,7 +1595,7 @@ str_initcap(const char *buff, size_t nbytes) #ifdef USE_WIDE_UPPER_LOWER if (pg_database_encoding_max_length() > 1 && !lc_ctype_is_c()) { - wchar_t *workspace; + wchar_t *workspace; size_t curr_char; size_t result_size; @@ -1627,9 +1627,9 @@ str_initcap(const char *buff, size_t nbytes) pfree(workspace); } else -#endif /* USE_WIDE_UPPER_LOWER */ +#endif /* USE_WIDE_UPPER_LOWER */ { - char *p; + char *p; result = pnstrdup(buff, nbytes); @@ -1805,8 +1805,8 @@ from_char_set_int(int *dest, const int value, const FormatNode *node) if (*dest != 0 && *dest != value) ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), - errmsg("conflicting values for \"%s\" field in formatting string", - node->key->name), + errmsg("conflicting values for \"%s\" field in formatting string", + node->key->name), errdetail("This value contradicts a previous setting for " "the same field type."))); *dest = value; @@ -1847,8 +1847,7 @@ from_char_parse_int_len(int *dest, char **src, const int len, FormatNode *node) { /* * This node is in Fill Mode, or the next node is known to be a - * non-digit value, so we just slurp as many characters as we - * can get. + * non-digit value, so we just slurp as many characters as we can get. */ errno = 0; result = strtol(init, src, 10); @@ -1859,13 +1858,13 @@ from_char_parse_int_len(int *dest, char **src, const int len, FormatNode *node) * We need to pull exactly the number of characters given in 'len' out * of the string, and convert those. */ - char *last; + char *last; if (used < len) ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), - errmsg("source string too short for \"%s\" formatting field", - node->key->name), + errmsg("source string too short for \"%s\" formatting field", + node->key->name), errdetail("Field requires %d characters, but only %d " "remain.", len, used), @@ -1879,12 +1878,12 @@ from_char_parse_int_len(int *dest, char **src, const int len, FormatNode *node) if (used > 0 && used < len) ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), - errmsg("invalid value \"%s\" for \"%s\"", - copy, node->key->name), + errmsg("invalid value \"%s\" for \"%s\"", + copy, node->key->name), errdetail("Field requires %d characters, but only %d " - "could be parsed.", len, used), + "could be parsed.", len, used), errhint("If your source string is not fixed-width, try " - "using the \"FM\" modifier."))); + "using the \"FM\" modifier."))); *src += used; } @@ -1893,14 +1892,14 @@ from_char_parse_int_len(int *dest, char **src, const int len, FormatNode *node) ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), errmsg("invalid value \"%s\" for \"%s\"", - copy, node->key->name), + copy, node->key->name), errdetail("Value must be an integer."))); if (errno == ERANGE || result < INT_MIN || result > INT_MAX) ereport(ERROR, (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), errmsg("value for \"%s\" in source string is out of range", - node->key->name), + node->key->name), errdetail("Value must be in the range %d to %d.", INT_MIN, INT_MAX))); @@ -1998,7 +1997,7 @@ seq_search(char *name, char **array, int type, int max, int *len) /* * Perform a sequential search in 'array' for text matching the first 'max' - * characters of the source string. + * characters of the source string. * * If a match is found, copy the array index of the match into the integer * pointed to by 'dest', advance 'src' to the end of the part of the string @@ -2007,15 +2006,15 @@ seq_search(char *name, char **array, int type, int max, int *len) * If the string doesn't match, throw an error. */ static int -from_char_seq_search(int *dest, char **src, char **array, int type, int max, +from_char_seq_search(int *dest, char **src, char **array, int type, int max, FormatNode *node) { - int len; + int len; *dest = seq_search(*src, array, type, max, &len); if (len <= 0) { - char copy[DCH_MAX_ITEM_SIZ + 1]; + char copy[DCH_MAX_ITEM_SIZ + 1]; Assert(max <= DCH_MAX_ITEM_SIZ); strlcpy(copy, *src, max + 1); @@ -2023,9 +2022,9 @@ from_char_seq_search(int *dest, char **src, char **array, int type, int max, ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), errmsg("invalid value \"%s\" for \"%s\"", - copy, node->key->name), + copy, node->key->name), errdetail("The given value did not match any of the allowed " - "values for this field."))); + "values for this field."))); } *src += len; return len; @@ -2111,7 +2110,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out) str_numth(s, s, S_TH_TYPE(n->suffix)); s += strlen(s); break; - case DCH_MS: /* millisecond */ + case DCH_MS: /* millisecond */ #ifdef HAVE_INT64_TIMESTAMP sprintf(s, "%03d", (int) (in->fsec / INT64CONST(1000))); #else @@ -2122,7 +2121,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out) str_numth(s, s, S_TH_TYPE(n->suffix)); s += strlen(s); break; - case DCH_US: /* microsecond */ + case DCH_US: /* microsecond */ #ifdef HAVE_INT64_TIMESTAMP sprintf(s, "%06d", (int) in->fsec); #else @@ -2263,7 +2262,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out) strcpy(s, str_toupper_z(localized_full_days[tm->tm_wday])); else sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, - str_toupper_z(days[tm->tm_wday])); + str_toupper_z(days[tm->tm_wday])); s += strlen(s); break; case DCH_Day: @@ -2317,7 +2316,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out) sprintf(s, "%0*d", S_FM(n->suffix) ? 0 : 3, (n->key->id == DCH_DDD) ? tm->tm_yday : - date2isoyearday(tm->tm_year, tm->tm_mon, tm->tm_mday)); + date2isoyearday(tm->tm_year, tm->tm_mon, tm->tm_mday)); if (S_THth(n->suffix)) str_numth(s, s, S_TH_TYPE(n->suffix)); s += strlen(s); @@ -2365,9 +2364,9 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out) s += strlen(s); break; case DCH_CC: - if (is_interval) /* straight calculation */ + if (is_interval) /* straight calculation */ i = tm->tm_year / 100; - else /* century 21 starts in 2001 */ + else /* century 21 starts in 2001 */ i = (tm->tm_year - 1) / 100 + 1; if (i <= 99 && i >= -99) sprintf(s, "%0*d", S_FM(n->suffix) ? 0 : 2, i); @@ -2556,7 +2555,7 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out) from_char_parse_int(&out->ss, &s, n); s += SKIP_THth(n->suffix); break; - case DCH_MS: /* millisecond */ + case DCH_MS: /* millisecond */ len = from_char_parse_int_len(&out->ms, &s, 3, n); /* @@ -2567,7 +2566,7 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out) s += SKIP_THth(n->suffix); break; - case DCH_US: /* microsecond */ + case DCH_US: /* microsecond */ len = from_char_parse_int_len(&out->us, &s, 6, n); out->us *= len == 1 ? 100000 : @@ -2662,6 +2661,7 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out) s += SKIP_THth(n->suffix); break; case DCH_Q: + /* * We ignore Q when converting to date because it is not * normative. @@ -2678,13 +2678,15 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out) break; case DCH_Y_YYY: { - int matched, years, millenia; + int matched, + years, + millenia; matched = sscanf(s, "%d,%03d", &millenia, &years); if (matched != 2) ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), - errmsg("invalid input string for \"Y,YYY\""))); + errmsg("invalid input string for \"Y,YYY\""))); years += (millenia * 1000); from_char_set_int(&out->year, years, n); out->yysz = 4; @@ -2739,12 +2741,12 @@ DCH_from_char(FormatNode *node, char *in, TmFromChar *out) s += SKIP_THth(n->suffix); break; case DCH_RM: - from_char_seq_search(&value, &s, rm_months_upper, + from_char_seq_search(&value, &s, rm_months_upper, ALL_UPPER, MAX_RM_LEN, n); from_char_set_int(&out->mm, 12 - value, n); break; case DCH_rm: - from_char_seq_search(&value, &s, rm_months_lower, + from_char_seq_search(&value, &s, rm_months_lower, ALL_LOWER, MAX_RM_LEN, n); from_char_set_int(&out->mm, 12 - value, n); break; @@ -3276,16 +3278,16 @@ do_to_timestamp(text *date_txt, text *fmt, if (tmfc.ddd && (tm->tm_mon <= 1 || tm->tm_mday <= 1)) { /* - * The month and day field have not been set, so we use the day-of-year - * field to populate them. Depending on the date mode, this field may - * be interpreted as a Gregorian day-of-year, or an ISO week date - * day-of-year. + * The month and day field have not been set, so we use the + * day-of-year field to populate them. Depending on the date mode, + * this field may be interpreted as a Gregorian day-of-year, or an ISO + * week date day-of-year. */ if (!tm->tm_year && !tmfc.bc) ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), - errmsg("cannot calculate day of year without year information"))); + errmsg("cannot calculate day of year without year information"))); if (tmfc.mode == FROM_CHAR_DATE_ISOWEEK) { @@ -3302,7 +3304,7 @@ do_to_timestamp(text *date_txt, text *fmt, static const int ysum[2][13] = { {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}, - {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}}; + {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}}; y = ysum[isleap(tm->tm_year)]; @@ -3388,8 +3390,8 @@ NUM_cache_getnew(char *str) for (ent = NUMCache; ent <= (NUMCache + NUM_CACHE_FIELDS); ent++) { /* - * entry removed via NUM_cache_remove() can be used here, - * which is why it's worth scanning first entry again + * entry removed via NUM_cache_remove() can be used here, which is + * why it's worth scanning first entry again */ if (ent->str[0] == '\0') { @@ -3621,6 +3623,7 @@ NUM_prepare_locale(NUMProc *Np) */ if (lconv->decimal_point && *lconv->decimal_point) Np->decimal = lconv->decimal_point; + else Np->decimal = "."; @@ -3637,7 +3640,7 @@ NUM_prepare_locale(NUMProc *Np) if (lconv->thousands_sep && *lconv->thousands_sep) Np->L_thousands_sep = lconv->thousands_sep; /* Make sure thousands separator doesn't match decimal point symbol. */ - else if (strcmp(Np->decimal, ",") != 0) + else if (strcmp(Np->decimal, ",") !=0) Np->L_thousands_sep = ","; else Np->L_thousands_sep = "."; diff --git a/src/backend/utils/adt/int8.c b/src/backend/utils/adt/int8.c index b636f8e82d3..89162f080ec 100644 --- a/src/backend/utils/adt/int8.c +++ b/src/backend/utils/adt/int8.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/int8.c,v 1.73 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/int8.c,v 1.74 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -608,7 +608,7 @@ int8div(PG_FUNCTION_ARGS) /* * Overflow check. The only possible overflow case is for arg1 = * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which - * can't be represented on a two's-complement machine. Most machines + * can't be represented on a two's-complement machine. Most machines * produce INT64_MIN but it seems some produce zero. */ if (arg2 == -1 && arg1 < 0 && result <= 0) @@ -661,9 +661,9 @@ int8inc(PG_FUNCTION_ARGS) /* * When int8 is pass-by-reference, we provide this special case to avoid * palloc overhead for COUNT(): when called from nodeAgg, we know that the - * argument is modifiable local storage, so just update it in-place. - * (If int8 is pass-by-value, then of course this is useless as well - * as incorrect, so just ifdef it out.) + * argument is modifiable local storage, so just update it in-place. (If + * int8 is pass-by-value, then of course this is useless as well as + * incorrect, so just ifdef it out.) */ #ifndef USE_FLOAT8_BYVAL /* controls int8 too */ if (fcinfo->context && @@ -833,7 +833,7 @@ int84div(PG_FUNCTION_ARGS) /* * Overflow check. The only possible overflow case is for arg1 = * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which - * can't be represented on a two's-complement machine. Most machines + * can't be represented on a two's-complement machine. Most machines * produce INT64_MIN but it seems some produce zero. */ if (arg2 == -1 && arg1 < 0 && result <= 0) @@ -1012,7 +1012,7 @@ int82div(PG_FUNCTION_ARGS) /* * Overflow check. The only possible overflow case is for arg1 = * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which - * can't be represented on a two's-complement machine. Most machines + * can't be represented on a two's-complement machine. Most machines * produce INT64_MIN but it seems some produce zero. */ if (arg2 == -1 && arg1 < 0 && result <= 0) diff --git a/src/backend/utils/adt/like_match.c b/src/backend/utils/adt/like_match.c index d72113b66b3..06eedb659b3 100644 --- a/src/backend/utils/adt/like_match.c +++ b/src/backend/utils/adt/like_match.c @@ -19,7 +19,7 @@ * Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/like_match.c,v 1.25 2009/05/24 18:10:37 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/like_match.c,v 1.26 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -100,8 +100,8 @@ MatchText(char *t, int tlen, char *p, int plen) if (plen <= 0) ereport(ERROR, (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE), - errmsg("LIKE pattern must not end with escape character"))); - if (TCHAR(*p) != TCHAR(*t)) + errmsg("LIKE pattern must not end with escape character"))); + if (TCHAR (*p) != TCHAR (*t)) return LIKE_FALSE; } else if (*p == '%') @@ -135,9 +135,9 @@ MatchText(char *t, int tlen, char *p, int plen) } while (tlen > 0 && plen > 0 && *p == '_'); /* - * If we are at the end of the pattern, succeed: % followed - * by n _'s matches any string of at least n characters, and - * we have now found there are at least n characters. + * If we are at the end of the pattern, succeed: % followed by + * n _'s matches any string of at least n characters, and we + * have now found there are at least n characters. */ if (plen <= 0) return LIKE_TRUE; @@ -155,13 +155,13 @@ MatchText(char *t, int tlen, char *p, int plen) } else { - char firstpat = TCHAR(*p); + char firstpat = TCHAR (*p); if (*p == '\\') { if (plen < 2) return LIKE_FALSE; - firstpat = TCHAR(p[1]); + firstpat = TCHAR (p[1]); } while (tlen > 0) @@ -170,7 +170,7 @@ MatchText(char *t, int tlen, char *p, int plen) * Optimization to prevent most recursion: don't recurse * unless first pattern byte matches first text byte. */ - if (TCHAR(*t) == firstpat) + if (TCHAR (*t) == firstpat) { int matched = MatchText(t, tlen, p, plen); @@ -195,7 +195,7 @@ MatchText(char *t, int tlen, char *p, int plen) NextByte(p, plen); continue; } - else if (TCHAR(*p) != TCHAR(*t)) + else if (TCHAR (*p) != TCHAR (*t)) { /* non-wildcard pattern char fails to match text char */ return LIKE_FALSE; @@ -220,8 +220,9 @@ MatchText(char *t, int tlen, char *p, int plen) if (tlen > 0) return LIKE_FALSE; /* end of pattern, but not of text */ - /* End of text string. Do we have matching pattern remaining? */ - while (plen > 0 && *p == '%') /* allow multiple %'s at end of pattern */ + /* End of text string. Do we have matching pattern remaining? */ + while (plen > 0 && *p == '%') /* allow multiple %'s at end of + * pattern */ NextByte(p, plen); if (plen <= 0) @@ -351,4 +352,5 @@ do_like_escape(text *pat, text *esc) #ifdef MATCH_LOWER #undef MATCH_LOWER + #endif diff --git a/src/backend/utils/adt/misc.c b/src/backend/utils/adt/misc.c index 904abb911b1..f78fc7363d4 100644 --- a/src/backend/utils/adt/misc.c +++ b/src/backend/utils/adt/misc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/misc.c,v 1.70 2009/01/08 00:13:22 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/misc.c,v 1.71 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -54,8 +54,8 @@ current_database(PG_FUNCTION_ARGS) /* * current_query() - * Expose the current query to the user (useful in stored procedures) - * We might want to use ActivePortal->sourceText someday. + * Expose the current query to the user (useful in stored procedures) + * We might want to use ActivePortal->sourceText someday. */ Datum current_query(PG_FUNCTION_ARGS) @@ -322,7 +322,7 @@ pg_get_keywords(PG_FUNCTION_ARGS) tupdesc = CreateTemplateTupleDesc(3, false); TupleDescInitEntry(tupdesc, (AttrNumber) 1, "word", TEXTOID, -1, 0); - TupleDescInitEntry(tupdesc, (AttrNumber) 2, "catcode", + TupleDescInitEntry(tupdesc, (AttrNumber) 2, "catcode", CHAROID, -1, 0); TupleDescInitEntry(tupdesc, (AttrNumber) 3, "catdesc", TEXTOID, -1, 0); diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c index b25938a205d..d1c41e138fe 100644 --- a/src/backend/utils/adt/nabstime.c +++ b/src/backend/utils/adt/nabstime.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.160 2009/03/22 01:12:32 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.161 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -631,7 +631,7 @@ reltimein(PG_FUNCTION_ARGS) /* if those functions think it's a bad format, try ISO8601 style */ if (dterr == DTERR_BAD_FORMAT) - dterr = DecodeISO8601Interval(str, + dterr = DecodeISO8601Interval(str, &dtype, tm, &fsec); if (dterr != 0) diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 8e58374e9b1..f4fc67a8439 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -1,7 +1,7 @@ /* * PostgreSQL type definitions for the INET and CIDR types. * - * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.73 2008/03/25 22:42:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.74 2009/06/11 14:49:03 momjian Exp $ * * Jon Postel RIP 16 Oct 1998 */ @@ -319,7 +319,7 @@ inet_to_cidr(PG_FUNCTION_ARGS) inet *src = PG_GETARG_INET_P(0); inet *dst; int bits; - int byte; + int byte; int nbits; int maxbytes; @@ -335,19 +335,20 @@ inet_to_cidr(PG_FUNCTION_ARGS) /* zero out any bits to the right of the netmask */ byte = bits / 8; + nbits = bits % 8; /* clear the first byte, this might be a partial byte */ if (nbits != 0) { - ip_addr(dst)[byte] &= ~(0xFF >> nbits); - byte++; + ip_addr(dst)[byte] &=~(0xFF >> nbits); + byte ++; } /* clear remaining bytes */ maxbytes = ip_addrsize(dst); - while (byte < maxbytes) + while (byte <maxbytes) { ip_addr(dst)[byte] = 0; - byte++; + byte ++; } PG_RETURN_INET_P(dst); @@ -383,7 +384,7 @@ cidr_set_masklen(PG_FUNCTION_ARGS) inet *src = PG_GETARG_INET_P(0); int bits = PG_GETARG_INT32(1); inet *dst; - int byte; + int byte; int nbits; int maxbytes; @@ -403,19 +404,20 @@ cidr_set_masklen(PG_FUNCTION_ARGS) /* zero out any bits to the right of the new netmask */ byte = bits / 8; + nbits = bits % 8; /* clear the first byte, this might be a partial byte */ if (nbits != 0) { - ip_addr(dst)[byte] &= ~(0xFF >> nbits); - byte++; + ip_addr(dst)[byte] &=~(0xFF >> nbits); + byte ++; } /* clear remaining bytes */ maxbytes = ip_addrsize(dst); - while (byte < maxbytes) + while (byte <maxbytes) { ip_addr(dst)[byte] = 0; - byte++; + byte ++; } PG_RETURN_INET_P(dst); @@ -714,7 +716,7 @@ network_broadcast(PG_FUNCTION_ARGS) { inet *ip = PG_GETARG_INET_P(0); inet *dst; - int byte; + int byte; int bits; int maxbytes; unsigned char mask; @@ -733,7 +735,7 @@ network_broadcast(PG_FUNCTION_ARGS) a = ip_addr(ip); b = ip_addr(dst); - for (byte = 0; byte < maxbytes; byte++) + for (byte = 0; byte <maxbytes; byte ++) { if (bits >= 8) { @@ -748,7 +750,7 @@ network_broadcast(PG_FUNCTION_ARGS) bits = 0; } - b[byte] = a[byte] | mask; + b[byte] = a[byte] |mask; } ip_family(dst) = ip_family(ip); @@ -763,7 +765,7 @@ network_network(PG_FUNCTION_ARGS) { inet *ip = PG_GETARG_INET_P(0); inet *dst; - int byte; + int byte; int bits; unsigned char mask; unsigned char *a, @@ -777,6 +779,7 @@ network_network(PG_FUNCTION_ARGS) b = ip_addr(dst); byte = 0; + while (bits) { if (bits >= 8) @@ -790,8 +793,8 @@ network_network(PG_FUNCTION_ARGS) bits = 0; } - b[byte] = a[byte] & mask; - byte++; + b[byte] = a[byte] &mask; + byte ++; } ip_family(dst) = ip_family(ip); @@ -806,7 +809,7 @@ network_netmask(PG_FUNCTION_ARGS) { inet *ip = PG_GETARG_INET_P(0); inet *dst; - int byte; + int byte; int bits; unsigned char mask; unsigned char *b; @@ -818,6 +821,7 @@ network_netmask(PG_FUNCTION_ARGS) b = ip_addr(dst); byte = 0; + while (bits) { if (bits >= 8) @@ -832,7 +836,7 @@ network_netmask(PG_FUNCTION_ARGS) } b[byte] = mask; - byte++; + byte ++; } ip_family(dst) = ip_family(ip); @@ -847,7 +851,7 @@ network_hostmask(PG_FUNCTION_ARGS) { inet *ip = PG_GETARG_INET_P(0); inet *dst; - int byte; + int byte; int bits; int maxbytes; unsigned char mask; @@ -865,6 +869,7 @@ network_hostmask(PG_FUNCTION_ARGS) b = ip_addr(dst); byte = maxbytes - 1; + while (bits) { if (bits >= 8) @@ -879,7 +884,7 @@ network_hostmask(PG_FUNCTION_ARGS) } b[byte] = mask; - byte--; + byte --; } ip_family(dst) = ip_family(ip); @@ -989,7 +994,7 @@ bitncmp(void *l, void *r, int n) static bool addressOK(unsigned char *a, int bits, int family) { - int byte; + int byte; int nbits; int maxbits; int maxbytes; @@ -1011,17 +1016,18 @@ addressOK(unsigned char *a, int bits, int family) return true; byte = bits / 8; + nbits = bits % 8; mask = 0xff; if (bits != 0) mask >>= nbits; - while (byte < maxbytes) + while (byte <maxbytes) { - if ((a[byte] & mask) != 0) + if ((a[byte] &mask) != 0) return false; mask = 0xff; - byte++; + byte ++; } return true; @@ -1390,7 +1396,7 @@ inetmi(PG_FUNCTION_ARGS) * two's complement, too bad. */ int nb = ip_addrsize(ip); - int byte = 0; + int byte = 0; unsigned char *pip = ip_addr(ip); unsigned char *pip2 = ip_addr(ip2); int carry = 1; @@ -1401,9 +1407,9 @@ inetmi(PG_FUNCTION_ARGS) carry = pip[nb] + (~pip2[nb] & 0xFF) + carry; lobyte = carry & 0xFF; - if (byte < sizeof(int64)) + if (byte <sizeof(int64)) { - res |= ((int64) lobyte) << (byte * 8); + res |= ((int64) lobyte) << (byte *8); } else { @@ -1418,15 +1424,15 @@ inetmi(PG_FUNCTION_ARGS) errmsg("result is out of range"))); } carry >>= 8; - byte++; + byte ++; } /* * If input is narrower than int64, overflow is not possible, but we * have to do proper sign extension. */ - if (carry == 0 && byte < sizeof(int64)) - res |= ((int64) -1) << (byte * 8); + if (carry == 0 && byte <sizeof(int64)) + res |= ((int64) -1) << (byte *8); } PG_RETURN_INT64(res); diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 0fbca231756..ba3721b12b3 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -14,7 +14,7 @@ * Copyright (c) 1998-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.117 2009/04/08 22:08:40 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/numeric.c,v 1.118 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -90,7 +90,7 @@ typedef int16 NumericDigit; /* ---------- - * NumericVar is the format we use for arithmetic. The digit-array part + * NumericVar is the format we use for arithmetic. The digit-array part * is the same as the NumericData storage format, but the header is more * complex. * @@ -243,7 +243,7 @@ static void free_var(NumericVar *var); static void zero_var(NumericVar *var); static const char *set_var_from_str(const char *str, const char *cp, - NumericVar *dest); + NumericVar *dest); static void set_var_from_num(Numeric value, NumericVar *dest); static void set_var_from_var(NumericVar *value, NumericVar *dest); static char *get_str_from_var(NumericVar *var, int dscale); @@ -271,7 +271,7 @@ static void mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result, static void div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, int rscale, bool round); static void div_var_fast(NumericVar *var1, NumericVar *var2, NumericVar *result, - int rscale, bool round); + int rscale, bool round); static int select_div_scale(NumericVar *var1, NumericVar *var2); static void mod_var(NumericVar *var1, NumericVar *var2, NumericVar *result); static void ceil_var(NumericVar *var, NumericVar *result); @@ -348,8 +348,8 @@ numeric_in(PG_FUNCTION_ARGS) if (!isspace((unsigned char) *cp)) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), - errmsg("invalid input syntax for type numeric: \"%s\"", - str))); + errmsg("invalid input syntax for type numeric: \"%s\"", + str))); cp++; } } @@ -367,16 +367,16 @@ numeric_in(PG_FUNCTION_ARGS) /* * We duplicate a few lines of code here because we would like to * throw any trailing-junk syntax error before any semantic error - * resulting from apply_typmod. We can't easily fold the two - * cases together because we mustn't apply apply_typmod to a NaN. + * resulting from apply_typmod. We can't easily fold the two cases + * together because we mustn't apply apply_typmod to a NaN. */ while (*cp) { if (!isspace((unsigned char) *cp)) ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), - errmsg("invalid input syntax for type numeric: \"%s\"", - str))); + errmsg("invalid input syntax for type numeric: \"%s\"", + str))); cp++; } @@ -1938,8 +1938,8 @@ numeric_power(PG_FUNCTION_ARGS) /* * The SQL spec requires that we emit a particular SQLSTATE error code for - * certain error conditions. Specifically, we don't return a divide-by-zero - * error code for 0 ^ -1. + * certain error conditions. Specifically, we don't return a + * divide-by-zero error code for 0 ^ -1. */ if (cmp_var(&arg1, &const_zero) == 0 && cmp_var(&arg2, &const_zero) < 0) @@ -2654,9 +2654,9 @@ int2_sum(PG_FUNCTION_ARGS) /* * If we're invoked by nodeAgg, we can cheat and modify our first * parameter in-place to avoid palloc overhead. If not, we need to return - * the new value of the transition variable. - * (If int8 is pass-by-value, then of course this is useless as well - * as incorrect, so just ifdef it out.) + * the new value of the transition variable. (If int8 is pass-by-value, + * then of course this is useless as well as incorrect, so just ifdef it + * out.) */ #ifndef USE_FLOAT8_BYVAL /* controls int8 too */ if (fcinfo->context && @@ -2705,9 +2705,9 @@ int4_sum(PG_FUNCTION_ARGS) /* * If we're invoked by nodeAgg, we can cheat and modify our first * parameter in-place to avoid palloc overhead. If not, we need to return - * the new value of the transition variable. - * (If int8 is pass-by-value, then of course this is useless as well - * as incorrect, so just ifdef it out.) + * the new value of the transition variable. (If int8 is pass-by-value, + * then of course this is useless as well as incorrect, so just ifdef it + * out.) */ #ifndef USE_FLOAT8_BYVAL /* controls int8 too */ if (fcinfo->context && @@ -4209,6 +4209,7 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, /* If rounding needed, figure one more digit to ensure correct result */ if (round) res_ndigits++; + /* * The working dividend normally requires res_ndigits + var2ndigits * digits, but make it at least var1ndigits so we can load all of var1 @@ -4222,8 +4223,8 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, /* * We need a workspace with room for the working dividend (div_ndigits+1 * digits) plus room for the possibly-normalized divisor (var2ndigits - * digits). It is convenient also to have a zero at divisor[0] with - * the actual divisor data in divisor[1 .. var2ndigits]. Transferring the + * digits). It is convenient also to have a zero at divisor[0] with the + * actual divisor data in divisor[1 .. var2ndigits]. Transferring the * digits into the workspace also allows us to realloc the result (which * might be the same as either input var) before we begin the main loop. * Note that we use palloc0 to ensure that divisor[0], dividend[0], and @@ -4244,8 +4245,8 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, if (var2ndigits == 1) { /* - * If there's only a single divisor digit, we can use a fast path - * (cf. Knuth section 4.3.1 exercise 16). + * If there's only a single divisor digit, we can use a fast path (cf. + * Knuth section 4.3.1 exercise 16). */ divisor1 = divisor[1]; carry = 0; @@ -4264,12 +4265,12 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, * * We need the first divisor digit to be >= NBASE/2. If it isn't, * make it so by scaling up both the divisor and dividend by the - * factor "d". (The reason for allocating dividend[0] above is to + * factor "d". (The reason for allocating dividend[0] above is to * leave room for possible carry here.) */ if (divisor[1] < HALF_NBASE) { - int d = NBASE / (divisor[1] + 1); + int d = NBASE / (divisor[1] + 1); carry = 0; for (i = var2ndigits; i > 0; i--) @@ -4295,22 +4296,22 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, divisor2 = divisor[2]; /* - * Begin the main loop. Each iteration of this loop produces the - * j'th quotient digit by dividing dividend[j .. j + var2ndigits] - * by the divisor; this is essentially the same as the common manual + * Begin the main loop. Each iteration of this loop produces the j'th + * quotient digit by dividing dividend[j .. j + var2ndigits] by the + * divisor; this is essentially the same as the common manual * procedure for long division. */ for (j = 0; j < res_ndigits; j++) { /* Estimate quotient digit from the first two dividend digits */ - int next2digits = dividend[j] * NBASE + dividend[j+1]; - int qhat; + int next2digits = dividend[j] * NBASE + dividend[j + 1]; + int qhat; /* * If next2digits are 0, then quotient digit must be 0 and there's - * no need to adjust the working dividend. It's worth testing - * here to fall out ASAP when processing trailing zeroes in - * a dividend. + * no need to adjust the working dividend. It's worth testing + * here to fall out ASAP when processing trailing zeroes in a + * dividend. */ if (next2digits == 0) { @@ -4322,14 +4323,15 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result, qhat = NBASE - 1; else qhat = next2digits / divisor1; + /* * Adjust quotient digit if it's too large. Knuth proves that - * after this step, the quotient digit will be either correct - * or just one too large. (Note: it's OK to use dividend[j+2] - * here because we know the divisor length is at least 2.) + * after this step, the quotient digit will be either correct or + * just one too large. (Note: it's OK to use dividend[j+2] here + * because we know the divisor length is at least 2.) */ while (divisor2 * qhat > - (next2digits - qhat * divisor1) * NBASE + dividend[j+2]) + (next2digits - qhat * divisor1) * NBASE + dividend[j + 2]) qhat--; /* As above, need do nothing more when quotient digit is 0 */ @@ -5253,16 +5255,16 @@ power_var(NumericVar *base, NumericVar *exp, NumericVar *result) } /* - * This avoids log(0) for cases of 0 raised to a non-integer. - * 0 ^ 0 handled by power_var_int(). + * This avoids log(0) for cases of 0 raised to a non-integer. 0 ^ 0 + * handled by power_var_int(). */ if (cmp_var(base, &const_zero) == 0) { set_var_from_var(&const_zero, result); - result->dscale = NUMERIC_MIN_SIG_DIGITS; /* no need to round */ + result->dscale = NUMERIC_MIN_SIG_DIGITS; /* no need to round */ return; } - + init_var(&ln_base); init_var(&ln_num); @@ -5330,11 +5332,13 @@ power_var_int(NumericVar *base, int exp, NumericVar *result, int rscale) switch (exp) { case 0: + /* - * While 0 ^ 0 can be either 1 or indeterminate (error), we - * treat it as 1 because most programming languages do this. - * SQL:2003 also requires a return value of 1. - * http://en.wikipedia.org/wiki/Exponentiation#Zero_to_the_zero_power + * While 0 ^ 0 can be either 1 or indeterminate (error), we treat + * it as 1 because most programming languages do this. SQL:2003 + * also requires a return value of 1. + * http://en.wikipedia.org/wiki/Exponentiation#Zero_to_the_zero_pow + * er */ set_var_from_var(&const_one, result); result->dscale = rscale; /* no need to round */ diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c index 4b9e53868dd..106671b7d5c 100644 --- a/src/backend/utils/adt/oracle_compat.c +++ b/src/backend/utils/adt/oracle_compat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/oracle_compat.c,v 1.83 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/oracle_compat.c,v 1.84 2009/06/11 14:49:03 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -42,9 +42,9 @@ static text *dotrim(const char *string, int stringlen, Datum lower(PG_FUNCTION_ARGS) { - text *in_string = PG_GETARG_TEXT_PP(0); - char *out_string; - text *result; + text *in_string = PG_GETARG_TEXT_PP(0); + char *out_string; + text *result; out_string = str_tolower(VARDATA_ANY(in_string), VARSIZE_ANY_EXHDR(in_string)); @@ -72,9 +72,9 @@ lower(PG_FUNCTION_ARGS) Datum upper(PG_FUNCTION_ARGS) { - text *in_string = PG_GETARG_TEXT_PP(0); - char *out_string; - text *result; + text *in_string = PG_GETARG_TEXT_PP(0); + char *out_string; + text *result; out_string = str_toupper(VARDATA_ANY(in_string), VARSIZE_ANY_EXHDR(in_string)); @@ -105,9 +105,9 @@ upper(PG_FUNCTION_ARGS) Datum initcap(PG_FUNCTION_ARGS) { - text *in_string = PG_GETARG_TEXT_PP(0); - char *out_string; - text *result; + text *in_string = PG_GETARG_TEXT_PP(0); + char *out_string; + text *result; out_string = str_initcap(VARDATA_ANY(in_string), VARSIZE_ANY_EXHDR(in_string)); diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index 7472a8ef79d..03b6fad3ef5 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -4,14 +4,14 @@ * * Portions Copyright (c) 2002-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/utils/adt/pg_locale.c,v 1.49 2009/04/01 09:17:32 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/pg_locale.c,v 1.50 2009/06/11 14:49:03 momjian Exp $ * *----------------------------------------------------------------------- */ /*---------- * Here is how the locale stuff is handled: LC_COLLATE and LC_CTYPE - * are fixed at CREATE DATABASE time, stored in pg_database, and cannot + * are fixed at CREATE DATABASE time, stored in pg_database, and cannot * be changed. Thus, the effects of strcoll(), strxfrm(), isupper(), * toupper(), etc. are always in the same fixed locale. * @@ -93,7 +93,7 @@ static char lc_numeric_envbuf[LC_ENV_BUFSIZE]; static char lc_time_envbuf[LC_ENV_BUFSIZE]; #if defined(WIN32) && defined(LC_MESSAGES) -static char *IsoLocaleName(const char *); /* MSVC specific */ +static char *IsoLocaleName(const char *); /* MSVC specific */ #endif @@ -159,9 +159,9 @@ pg_perm_setlocale(int category, const char *locale) result = IsoLocaleName(locale); if (result == NULL) result = (char *) locale; -#endif /* WIN32 */ +#endif /* WIN32 */ break; -#endif /* LC_MESSAGES */ +#endif /* LC_MESSAGES */ case LC_MONETARY: envvar = "LC_MONETARY"; envbuf = lc_monetary_envbuf; @@ -468,28 +468,33 @@ PGLC_localeconv(void) * pg_strftime(), which isn't locale-aware and does not need to be replaced. */ static size_t -strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm *tm) +strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm * tm) { - size_t len; - wchar_t wbuf[MAX_L10N_DATA]; - int encoding; + size_t len; + wchar_t wbuf[MAX_L10N_DATA]; + int encoding; encoding = GetDatabaseEncoding(); len = wcsftime(wbuf, MAX_L10N_DATA, format, tm); if (len == 0) - /* strftime call failed - return 0 with the contents of dst unspecified */ + + /* + * strftime call failed - return 0 with the contents of dst + * unspecified + */ return 0; len = WideCharToMultiByte(CP_UTF8, 0, wbuf, len, dst, dstlen, NULL, NULL); if (len == 0) elog(ERROR, - "could not convert string to UTF-8:error %lu", GetLastError()); + "could not convert string to UTF-8:error %lu", GetLastError()); dst[len] = '\0'; if (encoding != PG_UTF8) { - char *convstr = pg_do_encoding_conversion(dst, len, PG_UTF8, encoding); + char *convstr = pg_do_encoding_conversion(dst, len, PG_UTF8, encoding); + if (dst != convstr) { strlcpy(dst, convstr, dstlen); @@ -501,8 +506,7 @@ strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm } #define strftime(a,b,c,d) strftime_win32(a,b,L##c,d) - -#endif /* WIN32 */ +#endif /* WIN32 */ /* @@ -511,12 +515,13 @@ strftime_win32(char *dst, size_t dstlen, const wchar_t *format, const struct tm void cache_locale_time(void) { - char *save_lc_time; + char *save_lc_time; time_t timenow; - struct tm *timeinfo; + struct tm *timeinfo; char buf[MAX_L10N_DATA]; char *ptr; int i; + #ifdef WIN32 char *save_lc_ctype; #endif @@ -611,10 +616,11 @@ cache_locale_time(void) * contains the iso formatted locale name. */ static -char *IsoLocaleName(const char *winlocname) +char * +IsoLocaleName(const char *winlocname) { -#if (_MSC_VER >= 1400) /* VC8.0 or later */ - static char iso_lc_messages[32]; +#if (_MSC_VER >= 1400) /* VC8.0 or later */ + static char iso_lc_messages[32]; _locale_t loct = NULL; if (pg_strcasecmp("c", winlocname) == 0 || @@ -627,8 +633,9 @@ char *IsoLocaleName(const char *winlocname) loct = _create_locale(LC_CTYPE, winlocname); if (loct != NULL) { - char isolang[32], isocrty[32]; - LCID lcid; + char isolang[32], + isocrty[32]; + LCID lcid; lcid = loct->locinfo->lc_handle[LC_CTYPE]; if (lcid == 0) @@ -644,8 +651,8 @@ char *IsoLocaleName(const char *winlocname) } return NULL; #else - return NULL; /* Not supported on this version of msvc/mingw */ -#endif /* _MSC_VER >= 1400 */ + return NULL; /* Not supported on this version of msvc/mingw */ +#endif /* _MSC_VER >= 1400 */ } -#endif /* WIN32 && LC_MESSAGES */ +#endif /* WIN32 && LC_MESSAGES */ diff --git a/src/backend/utils/adt/pg_lzcompress.c b/src/backend/utils/adt/pg_lzcompress.c index 20244ae3fc5..3978e9581c5 100644 --- a/src/backend/utils/adt/pg_lzcompress.c +++ b/src/backend/utils/adt/pg_lzcompress.c @@ -166,7 +166,7 @@ * * Copyright (c) 1999-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.33 2009/01/06 15:51:38 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/pg_lzcompress.c,v 1.34 2009/06/11 14:49:03 momjian Exp $ * ---------- */ #include "postgres.h" @@ -210,23 +210,29 @@ typedef struct PGLZ_HistEntry * ---------- */ static const PGLZ_Strategy strategy_default_data = { - 32, /* Data chunks less than 32 bytes are not compressed */ - INT_MAX, /* No upper limit on what we'll try to compress */ - 25, /* Require 25% compression rate, or not worth it */ - 1024, /* Give up if no compression in the first 1KB */ - 128, /* Stop history lookup if a match of 128 bytes is found */ - 10 /* Lower good match size by 10% at every loop iteration */ + 32, /* Data chunks less than 32 bytes are not + * compressed */ + INT_MAX, /* No upper limit on what we'll try to + * compress */ + 25, /* Require 25% compression rate, or not worth + * it */ + 1024, /* Give up if no compression in the first 1KB */ + 128, /* Stop history lookup if a match of 128 bytes + * is found */ + 10 /* Lower good match size by 10% at every loop + * iteration */ }; const PGLZ_Strategy *const PGLZ_strategy_default = &strategy_default_data; static const PGLZ_Strategy strategy_always_data = { - 0, /* Chunks of any size are compressed */ + 0, /* Chunks of any size are compressed */ INT_MAX, - 0, /* It's enough to save one single byte */ - INT_MAX, /* Never give up early */ - 128, /* Stop history lookup if a match of 128 bytes is found */ - 6 /* Look harder for a good match */ + 0, /* It's enough to save one single byte */ + INT_MAX, /* Never give up early */ + 128, /* Stop history lookup if a match of 128 bytes + * is found */ + 6 /* Look harder for a good match */ }; const PGLZ_Strategy *const PGLZ_strategy_always = &strategy_always_data; @@ -502,8 +508,8 @@ pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, strategy = PGLZ_strategy_default; /* - * If the strategy forbids compression (at all or if source chunk size - * out of range), fail. + * If the strategy forbids compression (at all or if source chunk size out + * of range), fail. */ if (strategy->match_size_good <= 0 || slen < strategy->min_input_size || @@ -537,11 +543,11 @@ pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, need_rate = 99; /* - * Compute the maximum result size allowed by the strategy, namely - * the input size minus the minimum wanted compression rate. This had - * better be <= slen, else we might overrun the provided output buffer. + * Compute the maximum result size allowed by the strategy, namely the + * input size minus the minimum wanted compression rate. This had better + * be <= slen, else we might overrun the provided output buffer. */ - if (slen > (INT_MAX/100)) + if (slen > (INT_MAX / 100)) { /* Approximate to avoid overflow */ result_max = (slen / 100) * (100 - need_rate); @@ -572,7 +578,7 @@ pglz_compress(const char *source, int32 slen, PGLZ_Header *dest, /* * If we've emitted more than first_success_by bytes without finding - * anything compressible at all, fail. This lets us fall out + * anything compressible at all, fail. This lets us fall out * reasonably quickly when looking at incompressible input (such as * pre-compressed data). */ @@ -654,11 +660,11 @@ pglz_decompress(const PGLZ_Header *source, char *dest) while (sp < srcend && dp < destend) { /* - * Read one control byte and process the next 8 items (or as many - * as remain in the compressed input). + * Read one control byte and process the next 8 items (or as many as + * remain in the compressed input). */ unsigned char ctrl = *sp++; - int ctrlc; + int ctrlc; for (ctrlc = 0; ctrlc < 8 && sp < srcend; ctrlc++) { @@ -681,11 +687,11 @@ pglz_decompress(const PGLZ_Header *source, char *dest) len += *sp++; /* - * Check for output buffer overrun, to ensure we don't - * clobber memory in case of corrupt input. Note: we must - * advance dp here to ensure the error is detected below - * the loop. We don't simply put the elog inside the loop - * since that will probably interfere with optimization. + * Check for output buffer overrun, to ensure we don't clobber + * memory in case of corrupt input. Note: we must advance dp + * here to ensure the error is detected below the loop. We + * don't simply put the elog inside the loop since that will + * probably interfere with optimization. */ if (dp + len > destend) { @@ -711,8 +717,8 @@ pglz_decompress(const PGLZ_Header *source, char *dest) * An unset control bit means LITERAL BYTE. So we just copy * one from INPUT to OUTPUT. */ - if (dp >= destend) /* check for buffer overrun */ - break; /* do not clobber memory */ + if (dp >= destend) /* check for buffer overrun */ + break; /* do not clobber memory */ *dp++ = *sp++; } diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index b56761d60c2..89fb28a402b 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/pgstatfuncs.c,v 1.53 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/pgstatfuncs.c,v 1.54 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -332,7 +332,7 @@ pg_stat_get_last_autoanalyze_time(PG_FUNCTION_ARGS) Datum pg_stat_get_function_calls(PG_FUNCTION_ARGS) { - Oid funcid = PG_GETARG_OID(0); + Oid funcid = PG_GETARG_OID(0); PgStat_StatFuncEntry *funcentry; if ((funcentry = pgstat_fetch_stat_funcentry(funcid)) == NULL) @@ -343,7 +343,7 @@ pg_stat_get_function_calls(PG_FUNCTION_ARGS) Datum pg_stat_get_function_time(PG_FUNCTION_ARGS) { - Oid funcid = PG_GETARG_OID(0); + Oid funcid = PG_GETARG_OID(0); PgStat_StatFuncEntry *funcentry; if ((funcentry = pgstat_fetch_stat_funcentry(funcid)) == NULL) @@ -354,7 +354,7 @@ pg_stat_get_function_time(PG_FUNCTION_ARGS) Datum pg_stat_get_function_self_time(PG_FUNCTION_ARGS) { - Oid funcid = PG_GETARG_OID(0); + Oid funcid = PG_GETARG_OID(0); PgStat_StatFuncEntry *funcentry; if ((funcentry = pgstat_fetch_stat_funcentry(funcid)) == NULL) @@ -410,10 +410,10 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) if (SRF_IS_FIRSTCALL()) { MemoryContext oldcontext; - TupleDesc tupdesc; - + TupleDesc tupdesc; + funcctx = SRF_FIRSTCALL_INIT(); - + oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); tupdesc = CreateTemplateTupleDesc(10, false); @@ -441,33 +441,34 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) /* * Get one backend - locate by pid. * - * We lookup the backend early, so we can return zero rows if it doesn't - * exist, instead of returning a single row full of NULLs. + * We lookup the backend early, so we can return zero rows if it + * doesn't exist, instead of returning a single row full of NULLs. */ - int pid = PG_GETARG_INT32(0); - int i; - int n = pgstat_fetch_stat_numbackends(); - + int pid = PG_GETARG_INT32(0); + int i; + int n = pgstat_fetch_stat_numbackends(); + for (i = 1; i <= n; i++) { PgBackendStatus *be = pgstat_fetch_stat_beentry(i); + if (be) { if (be->st_procpid == pid) { - *(int *)(funcctx->user_fctx) = i; + *(int *) (funcctx->user_fctx) = i; break; } } } - if (*(int *)(funcctx->user_fctx) == 0) + if (*(int *) (funcctx->user_fctx) == 0) /* Pid not found, return zero rows */ funcctx->max_calls = 0; else funcctx->max_calls = 1; } - + MemoryContextSwitchTo(oldcontext); } @@ -477,26 +478,26 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) if (funcctx->call_cntr < funcctx->max_calls) { /* for each row */ - Datum values[10]; - bool nulls[10]; - HeapTuple tuple; + Datum values[10]; + bool nulls[10]; + HeapTuple tuple; PgBackendStatus *beentry; - SockAddr zero_clientaddr; + SockAddr zero_clientaddr; MemSet(values, 0, sizeof(values)); MemSet(nulls, 0, sizeof(nulls)); - - if (*(int *)(funcctx->user_fctx) > 0) + + if (*(int *) (funcctx->user_fctx) > 0) /* Get specific pid slot */ - beentry = pgstat_fetch_stat_beentry(*(int *)(funcctx->user_fctx)); + beentry = pgstat_fetch_stat_beentry(*(int *) (funcctx->user_fctx)); else /* Get the next one in the list */ - beentry = pgstat_fetch_stat_beentry(funcctx->call_cntr+1); /* 1-based index */ + beentry = pgstat_fetch_stat_beentry(funcctx->call_cntr + 1); /* 1-based index */ if (!beentry) { - int i; + int i; - for (i = 0; i < sizeof(nulls)/sizeof(nulls[0]); i++) + for (i = 0; i < sizeof(nulls) / sizeof(nulls[0]); i++) nulls[i] = true; nulls[3] = false; @@ -543,7 +544,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) /* A zeroed client addr means we don't know */ memset(&zero_clientaddr, 0, sizeof(zero_clientaddr)); if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, - sizeof(zero_clientaddr) == 0)) + sizeof(zero_clientaddr) == 0)) { nulls[8] = true; nulls[9] = true; @@ -554,9 +555,9 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) #ifdef HAVE_IPV6 || beentry->st_clientaddr.addr.ss_family == AF_INET6 #endif - ) + ) { - char remote_host[NI_MAXHOST]; + char remote_host[NI_MAXHOST]; char remote_port[NI_MAXSERV]; int ret; @@ -576,16 +577,17 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) { clean_ipv6_addr(beentry->st_clientaddr.addr.ss_family, remote_host); values[8] = DirectFunctionCall1(inet_in, - CStringGetDatum(remote_host)); + CStringGetDatum(remote_host)); values[9] = Int32GetDatum(atoi(remote_port)); } } else if (beentry->st_clientaddr.addr.ss_family == AF_UNIX) { /* - * Unix sockets always reports NULL for host and -1 for port, so it's - * possible to tell the difference to connections we have no - * permissions to view, or with errors. + * Unix sockets always reports NULL for host and -1 for + * port, so it's possible to tell the difference to + * connections we have no permissions to view, or with + * errors. */ nulls[8] = true; values[9] = DatumGetInt32(-1); diff --git a/src/backend/utils/adt/quote.c b/src/backend/utils/adt/quote.c index d7553afc973..c9419081d73 100644 --- a/src/backend/utils/adt/quote.c +++ b/src/backend/utils/adt/quote.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.26 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/quote.c,v 1.27 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -86,8 +86,8 @@ quote_literal(PG_FUNCTION_ARGS) /* * quote_nullable - - * Returns a properly quoted literal, with null values returned - * as the text string 'NULL'. + * Returns a properly quoted literal, with null values returned + * as the text string 'NULL'. */ Datum quote_nullable(PG_FUNCTION_ARGS) diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index f9ccf6352d6..e4e3c776658 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.81 2009/01/01 17:23:49 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.82 2009/06/11 14:49:04 momjian Exp $ * * Alistair Crooks added the code for the regex caching * agc - cached the regular expressions used - there's a good chance @@ -40,7 +40,7 @@ /* GUC-settable flavor parameter */ -int regex_flavor = REG_ADVANCED; +int regex_flavor = REG_ADVANCED; /* all the options of interest for regex functions */ @@ -582,10 +582,10 @@ textregexsubstr(PG_FUNCTION_ARGS) } /* - * It is possible to have a match to the whole pattern but no match - * for a subexpression; for example 'foo(bar)?' is considered to match - * 'foo' but there is no subexpression match. So this extra test for - * match failure is not redundant. + * It is possible to have a match to the whole pattern but no match for a + * subexpression; for example 'foo(bar)?' is considered to match 'foo' but + * there is no subexpression match. So this extra test for match failure + * is not redundant. */ if (so < 0 || eo < 0) PG_RETURN_NULL(); diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index 53b9c43f081..5bcbd633043 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -15,7 +15,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/utils/adt/ri_triggers.c,v 1.112 2009/01/07 13:44:36 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ri_triggers.c,v 1.113 2009/06/11 14:49:04 momjian Exp $ * * ---------- */ @@ -3620,7 +3620,7 @@ static SPIPlanPtr ri_FetchPreparedPlan(RI_QueryKey *key) { RI_QueryHashEntry *entry; - SPIPlanPtr plan; + SPIPlanPtr plan; /* * On the first call initialize the hashtable @@ -3638,11 +3638,11 @@ ri_FetchPreparedPlan(RI_QueryKey *key) return NULL; /* - * Check whether the plan is still valid. If it isn't, we don't want - * to simply rely on plancache.c to regenerate it; rather we should - * start from scratch and rebuild the query text too. This is to cover - * cases such as table/column renames. We depend on the plancache - * machinery to detect possible invalidations, though. + * Check whether the plan is still valid. If it isn't, we don't want to + * simply rely on plancache.c to regenerate it; rather we should start + * from scratch and rebuild the query text too. This is to cover cases + * such as table/column renames. We depend on the plancache machinery to + * detect possible invalidations, though. * * CAUTION: this check is only trustworthy if the caller has already * locked both FK and PK rels. @@ -3652,8 +3652,8 @@ ri_FetchPreparedPlan(RI_QueryKey *key) return plan; /* - * Otherwise we might as well flush the cached plan now, to free a - * little memory space before we make a new one. + * Otherwise we might as well flush the cached plan now, to free a little + * memory space before we make a new one. */ entry->plan = NULL; if (plan) @@ -3682,8 +3682,8 @@ ri_HashPreparedPlan(RI_QueryKey *key, SPIPlanPtr plan) ri_InitHashTables(); /* - * Add the new plan. We might be overwriting an entry previously - * found invalid by ri_FetchPreparedPlan. + * Add the new plan. We might be overwriting an entry previously found + * invalid by ri_FetchPreparedPlan. */ entry = (RI_QueryHashEntry *) hash_search(ri_query_cache, (void *) key, diff --git a/src/backend/utils/adt/rowtypes.c b/src/backend/utils/adt/rowtypes.c index c2a030baac7..9ea8a2d80fa 100644 --- a/src/backend/utils/adt/rowtypes.c +++ b/src/backend/utils/adt/rowtypes.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/rowtypes.c,v 1.24 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/rowtypes.c,v 1.25 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -57,7 +57,7 @@ typedef struct RecordCompareData int32 record1_typmod; Oid record2_type; int32 record2_typmod; - ColumnCompareData columns[1]; /* VARIABLE LENGTH ARRAY */ + ColumnCompareData columns[1]; /* VARIABLE LENGTH ARRAY */ } RecordCompareData; @@ -822,7 +822,7 @@ record_cmp(FunctionCallInfo fcinfo) { fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt, - sizeof(RecordCompareData) - sizeof(ColumnCompareData) + sizeof(RecordCompareData) - sizeof(ColumnCompareData) + ncols * sizeof(ColumnCompareData)); my_extra = (RecordCompareData *) fcinfo->flinfo->fn_extra; my_extra->ncolumns = ncols; @@ -854,8 +854,8 @@ record_cmp(FunctionCallInfo fcinfo) /* * Scan corresponding columns, allowing for dropped columns in different - * places in the two rows. i1 and i2 are physical column indexes, - * j is the logical column index. + * places in the two rows. i1 and i2 are physical column indexes, j is + * the logical column index. */ i1 = i2 = j = 0; while (i1 < ncolumns1 || i2 < ncolumns2) @@ -890,7 +890,7 @@ record_cmp(FunctionCallInfo fcinfo) errmsg("cannot compare dissimilar column types %s and %s at record column %d", format_type_be(tupdesc1->attrs[i1]->atttypid), format_type_be(tupdesc2->attrs[i2]->atttypid), - j+1))); + j + 1))); /* * Lookup the comparison function if not done already @@ -904,8 +904,8 @@ record_cmp(FunctionCallInfo fcinfo) if (!OidIsValid(typentry->cmp_proc_finfo.fn_oid)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_FUNCTION), - errmsg("could not identify a comparison function for type %s", - format_type_be(typentry->type_id)))); + errmsg("could not identify a comparison function for type %s", + format_type_be(typentry->type_id)))); my_extra->columns[j].typentry = typentry; } @@ -957,8 +957,8 @@ record_cmp(FunctionCallInfo fcinfo) /* * If we didn't break out of the loop early, check for column count - * mismatch. (We do not report such mismatch if we found unequal - * column values; is that a feature or a bug?) + * mismatch. (We do not report such mismatch if we found unequal column + * values; is that a feature or a bug?) */ if (result == 0) { @@ -1048,7 +1048,7 @@ record_eq(PG_FUNCTION_ARGS) { fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt, - sizeof(RecordCompareData) - sizeof(ColumnCompareData) + sizeof(RecordCompareData) - sizeof(ColumnCompareData) + ncols * sizeof(ColumnCompareData)); my_extra = (RecordCompareData *) fcinfo->flinfo->fn_extra; my_extra->ncolumns = ncols; @@ -1080,8 +1080,8 @@ record_eq(PG_FUNCTION_ARGS) /* * Scan corresponding columns, allowing for dropped columns in different - * places in the two rows. i1 and i2 are physical column indexes, - * j is the logical column index. + * places in the two rows. i1 and i2 are physical column indexes, j is + * the logical column index. */ i1 = i2 = j = 0; while (i1 < ncolumns1 || i2 < ncolumns2) @@ -1116,7 +1116,7 @@ record_eq(PG_FUNCTION_ARGS) errmsg("cannot compare dissimilar column types %s and %s at record column %d", format_type_be(tupdesc1->attrs[i1]->atttypid), format_type_be(tupdesc2->attrs[i2]->atttypid), - j+1))); + j + 1))); /* * Lookup the equality function if not done already @@ -1130,8 +1130,8 @@ record_eq(PG_FUNCTION_ARGS) if (!OidIsValid(typentry->eq_opr_finfo.fn_oid)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_FUNCTION), - errmsg("could not identify an equality operator for type %s", - format_type_be(typentry->type_id)))); + errmsg("could not identify an equality operator for type %s", + format_type_be(typentry->type_id)))); my_extra->columns[j].typentry = typentry; } @@ -1168,8 +1168,8 @@ record_eq(PG_FUNCTION_ARGS) /* * If we didn't break out of the loop early, check for column count - * mismatch. (We do not report such mismatch if we found unequal - * column values; is that a feature or a bug?) + * mismatch. (We do not report such mismatch if we found unequal column + * values; is that a feature or a bug?) */ if (result) { diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 058899bcc6f..f52bf8b5a12 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.299 2009/06/09 14:36:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.300 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -176,10 +176,10 @@ static Node *get_rule_sortgroupclause(SortGroupClause *srt, List *tlist, bool force_colno, deparse_context *context); static void get_rule_orderby(List *orderList, List *targetList, - bool force_colno, deparse_context *context); + bool force_colno, deparse_context *context); static void get_rule_windowclause(Query *query, deparse_context *context); static void get_rule_windowspec(WindowClause *wc, List *targetList, - deparse_context *context); + deparse_context *context); static void push_plan(deparse_namespace *dpns, Plan *subplan); static char *get_variable(Var *var, int levelsup, bool showstar, deparse_context *context); @@ -219,7 +219,7 @@ static Node *processIndirection(Node *node, deparse_context *context, static void printSubscripts(ArrayRef *aref, deparse_context *context); static char *generate_relation_name(Oid relid, List *namespaces); static char *generate_function_name(Oid funcid, int nargs, Oid *argtypes, - bool *is_variadic); + bool *is_variadic); static char *generate_operator_name(Oid operid, Oid arg1, Oid arg2); static text *string_to_text(char *str); static char *flatten_reloptions(Oid relid); @@ -1435,8 +1435,8 @@ pg_get_serial_sequence(PG_FUNCTION_ARGS) /* * pg_get_functiondef - * Returns the complete "CREATE OR REPLACE FUNCTION ..." statement for - * the specified function. + * Returns the complete "CREATE OR REPLACE FUNCTION ..." statement for + * the specified function. */ Datum pg_get_functiondef(PG_FUNCTION_ARGS) @@ -1481,8 +1481,8 @@ pg_get_functiondef(PG_FUNCTION_ARGS) lang = (Form_pg_language) GETSTRUCT(langtup); /* - * We always qualify the function name, to ensure the right function - * gets replaced. + * We always qualify the function name, to ensure the right function gets + * replaced. */ nsp = get_namespace_name(proc->pronamespace); appendStringInfo(&buf, "CREATE OR REPLACE FUNCTION %s(", @@ -1533,7 +1533,7 @@ pg_get_functiondef(PG_FUNCTION_ARGS) tmp = SysCacheGetAttr(PROCOID, proctup, Anum_pg_proc_proconfig, &isnull); if (!isnull) { - ArrayType *a = DatumGetArrayTypeP(tmp); + ArrayType *a = DatumGetArrayTypeP(tmp); int i; Assert(ARR_ELEMTYPE(a) == TEXTOID); @@ -1542,7 +1542,7 @@ pg_get_functiondef(PG_FUNCTION_ARGS) for (i = 1; i <= ARR_DIMS(a)[0]; i++) { - Datum d; + Datum d; d = array_ref(a, 1, &i, -1 /* varlenarray */ , @@ -1595,9 +1595,9 @@ pg_get_functiondef(PG_FUNCTION_ARGS) /* * We always use dollar quoting. Figure out a suitable delimiter. * - * Since the user is likely to be editing the function body string, - * we shouldn't use a short delimiter that he might easily create a - * conflict with. Hence prefer "$function$", but extend if needed. + * Since the user is likely to be editing the function body string, we + * shouldn't use a short delimiter that he might easily create a conflict + * with. Hence prefer "$function$", but extend if needed. */ initStringInfo(&dq); appendStringInfoString(&dq, "$function"); @@ -1771,8 +1771,8 @@ print_function_arguments(StringInfo buf, HeapTuple proctup, &isnull); if (!isnull) { - char *str; - List *argdefaults; + char *str; + List *argdefaults; str = TextDatumGetCString(proargdefaults); argdefaults = (List *) stringToNode(str); @@ -1788,11 +1788,11 @@ print_function_arguments(StringInfo buf, HeapTuple proctup, inputargno = 0; for (i = 0; i < numargs; i++) { - Oid argtype = argtypes[i]; - char *argname = argnames ? argnames[i] : NULL; - char argmode = argmodes ? argmodes[i] : PROARGMODE_IN; + Oid argtype = argtypes[i]; + char *argname = argnames ? argnames[i] : NULL; + char argmode = argmodes ? argmodes[i] : PROARGMODE_IN; const char *modename; - bool isinput; + bool isinput; switch (argmode) { @@ -1818,7 +1818,7 @@ print_function_arguments(StringInfo buf, HeapTuple proctup, break; default: elog(ERROR, "invalid parameter mode '%c'", argmode); - modename = NULL; /* keep compiler quiet */ + modename = NULL; /* keep compiler quiet */ isinput = false; break; } @@ -1836,7 +1836,7 @@ print_function_arguments(StringInfo buf, HeapTuple proctup, appendStringInfoString(buf, format_type_be(argtype)); if (print_defaults && isinput && inputargno > nlackdefaults) { - Node *expr; + Node *expr; Assert(nextargdefault != NULL); expr = (Node *) lfirst(nextargdefault); @@ -1949,7 +1949,7 @@ deparse_context_for(const char *aliasname, Oid relid) * right child plans. A special case is that a nestloop inner indexscan * might have OUTER Vars, but the outer side of the join is not a child * plan node. To handle such cases the outer plan node must be passed - * separately. (Pass NULL for outer_plan otherwise.) + * separately. (Pass NULL for outer_plan otherwise.) * * Note: plan and outer_plan really ought to be declared as "Plan *", but * we use "Node *" to avoid having to include plannodes.h in builtins.h. @@ -2370,8 +2370,8 @@ static void get_with_clause(Query *query, deparse_context *context) { StringInfo buf = context->buf; - const char *sep; - ListCell *l; + const char *sep; + ListCell *l; if (query->cteList == NIL) return; @@ -2808,11 +2808,11 @@ get_rule_sortgroupclause(SortGroupClause *srt, List *tlist, bool force_colno, /* * Use column-number form if requested by caller. Otherwise, if - * expression is a constant, force it to be dumped with an explicit - * cast as decoration --- this is because a simple integer constant - * is ambiguous (and will be misinterpreted by findTargetlistEntry()) - * if we dump it without any decoration. Otherwise, just dump the - * expression normally. + * expression is a constant, force it to be dumped with an explicit cast + * as decoration --- this is because a simple integer constant is + * ambiguous (and will be misinterpreted by findTargetlistEntry()) if we + * dump it without any decoration. Otherwise, just dump the expression + * normally. */ if (force_colno) { @@ -3328,7 +3328,7 @@ push_plan(deparse_namespace *dpns, Plan *subplan) dpns->inner_plan = ((SubqueryScan *) subplan)->subplan; else if (IsA(subplan, CteScan)) { - int ctePlanId = ((CteScan *) subplan)->ctePlanId; + int ctePlanId = ((CteScan *) subplan)->ctePlanId; if (ctePlanId > 0 && ctePlanId <= list_length(dpns->subplans)) dpns->inner_plan = list_nth(dpns->subplans, ctePlanId - 1); @@ -3555,7 +3555,7 @@ get_name_for_var_field(Var *var, int fieldno, */ if (IsA(var, RowExpr)) { - RowExpr *r = (RowExpr *) var; + RowExpr *r = (RowExpr *) var; if (fieldno > 0 && fieldno <= list_length(r->colnames)) return strVal(list_nth(r->colnames, fieldno - 1)); @@ -3659,8 +3659,8 @@ get_name_for_var_field(Var *var, int fieldno, * This part has essentially the same logic as the parser's * expandRecordVariable() function, but we are dealing with a different * representation of the input context, and we only need one field name - * not a TupleDesc. Also, we need special cases for finding subquery - * and CTE subplans when deparsing Plan trees. + * not a TupleDesc. Also, we need special cases for finding subquery and + * CTE subplans when deparsing Plan trees. */ expr = (Node *) var; /* default if we can't drill down */ @@ -3721,10 +3721,10 @@ get_name_for_var_field(Var *var, int fieldno, { /* * We're deparsing a Plan tree so we don't have complete - * RTE entries (in particular, rte->subquery is NULL). - * But the only place we'd see a Var directly referencing - * a SUBQUERY RTE is in a SubqueryScan plan node, and we - * can look into the child plan's tlist instead. + * RTE entries (in particular, rte->subquery is NULL). But + * the only place we'd see a Var directly referencing a + * SUBQUERY RTE is in a SubqueryScan plan node, and we can + * look into the child plan's tlist instead. */ TargetEntry *tle; Plan *save_outer; @@ -3811,11 +3811,11 @@ get_name_for_var_field(Var *var, int fieldno, if (IsA(expr, Var)) { /* - * Recurse into the CTE to see what its Var refers - * to. We have to build an additional level of - * namespace to keep in step with varlevelsup in the - * CTE. Furthermore it could be an outer CTE, so - * we may have to delete some levels of namespace. + * Recurse into the CTE to see what its Var refers to. + * We have to build an additional level of namespace + * to keep in step with varlevelsup in the CTE. + * Furthermore it could be an outer CTE, so we may + * have to delete some levels of namespace. */ List *save_nslist = context->namespaces; List *new_nslist; @@ -3845,8 +3845,8 @@ get_name_for_var_field(Var *var, int fieldno, /* * We're deparsing a Plan tree so we don't have a CTE * list. But the only place we'd see a Var directly - * referencing a CTE RTE is in a CteScan plan node, and - * we can look into the subplan's tlist instead. + * referencing a CTE RTE is in a CteScan plan node, and we + * can look into the subplan's tlist instead. */ TargetEntry *tle; Plan *save_outer; @@ -4428,11 +4428,11 @@ get_rule_expr(Node *node, deparse_context *context, case T_SubPlan: { - SubPlan *subplan = (SubPlan *) node; + SubPlan *subplan = (SubPlan *) node; /* * We cannot see an already-planned subplan in rule deparsing, - * only while EXPLAINing a query plan. We don't try to + * only while EXPLAINing a query plan. We don't try to * reconstruct the original SQL, just reference the subplan * that appears elsewhere in EXPLAIN's result. */ @@ -4452,7 +4452,7 @@ get_rule_expr(Node *node, deparse_context *context, appendStringInfo(buf, "(alternatives: "); foreach(lc, asplan->subplans) { - SubPlan *splan = (SubPlan *) lfirst(lc); + SubPlan *splan = (SubPlan *) lfirst(lc); Assert(IsA(splan, SubPlan)); if (splan->useHashTable) @@ -4675,6 +4675,7 @@ get_rule_expr(Node *node, deparse_context *context, appendStringInfo(buf, "ARRAY["); get_rule_expr((Node *) arrayexpr->elements, context, true); appendStringInfoChar(buf, ']'); + /* * If the array isn't empty, we assume its elements are * coerced to the desired type. If it's empty, though, we @@ -4682,7 +4683,7 @@ get_rule_expr(Node *node, deparse_context *context, */ if (arrayexpr->elements == NIL) appendStringInfo(buf, "::%s", - format_type_with_typemod(arrayexpr->array_typeid, -1)); + format_type_with_typemod(arrayexpr->array_typeid, -1)); } break; @@ -5333,9 +5334,10 @@ get_windowfunc_expr(WindowFunc *wfunc, deparse_context *context) if (context->windowClause) elog(ERROR, "could not find window clause for winref %u", wfunc->winref); + /* - * In EXPLAIN, we don't have window context information available, - * so we have to settle for this: + * In EXPLAIN, we don't have window context information available, so + * we have to settle for this: */ appendStringInfoString(buf, "(?)"); } @@ -5523,9 +5525,9 @@ simple_quote_literal(StringInfo buf, const char *val) const char *valptr; /* - * We form the string literal according to the prevailing setting - * of standard_conforming_strings; we never use E''. User is - * responsible for making sure result is used correctly. + * We form the string literal according to the prevailing setting of + * standard_conforming_strings; we never use E''. User is responsible for + * making sure result is used correctly. */ appendStringInfoChar(buf, '\''); for (valptr = val; *valptr; valptr++) @@ -6335,7 +6337,7 @@ generate_relation_name(Oid relid, List *namespaces) * given that it is being called with the specified actual arg types. * (Arg types matter because of ambiguous-function resolution rules.) * - * The result includes all necessary quoting and schema-prefixing. We can + * The result includes all necessary quoting and schema-prefixing. We can * also pass back an indication of whether the function is variadic. */ static char * diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index 3f07db6857f..3d60885a795 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.260 2009/04/19 19:46:33 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/selfuncs.c,v 1.261 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -72,7 +72,7 @@ * float8 oprjoin (internal, oid, internal, int2, internal); * * (Before Postgres 8.4, join estimators had only the first four of these - * parameters. That signature is still allowed, but deprecated.) The + * parameters. That signature is still allowed, but deprecated.) The * relationship between jointype and sjinfo is explained in the comments for * clause_selectivity() --- the short version is that jointype is usually * best ignored in favor of examining sjinfo. @@ -135,7 +135,7 @@ static double ineq_histogram_selectivity(VariableStatData *vardata, static double eqjoinsel_inner(Oid operator, VariableStatData *vardata1, VariableStatData *vardata2); static double eqjoinsel_semi(Oid operator, - VariableStatData *vardata1, VariableStatData *vardata2); + VariableStatData *vardata1, VariableStatData *vardata2); static bool convert_to_scalar(Datum value, Oid valuetypid, double *scaledvalue, Datum lobound, Datum hibound, Oid boundstypid, double *scaledlobound, double *scaledhibound); @@ -159,7 +159,7 @@ static double convert_one_bytea_to_scalar(unsigned char *value, int valuelen, static char *convert_string_datum(Datum value, Oid typid); static double convert_timevalue_to_scalar(Datum value, Oid typid); static bool get_variable_range(PlannerInfo *root, VariableStatData *vardata, - Oid sortop, Datum *min, Datum *max); + Oid sortop, Datum *min, Datum *max); static Selectivity prefix_selectivity(VariableStatData *vardata, Oid vartype, Oid opfamily, Const *prefixcon); static Selectivity pattern_selectivity(Const *patt, Pattern_Type ptype); @@ -228,17 +228,17 @@ var_eq_const(VariableStatData *vardata, Oid operator, double selec; /* - * If the constant is NULL, assume operator is strict and - * return zero, ie, operator will never return TRUE. + * If the constant is NULL, assume operator is strict and return zero, ie, + * operator will never return TRUE. */ if (constisnull) return 0.0; /* * If we matched the var to a unique index, assume there is exactly one - * match regardless of anything else. (This is slightly bogus, since - * the index's equality operator might be different from ours, but it's - * more likely to be right than ignoring the information.) + * match regardless of anything else. (This is slightly bogus, since the + * index's equality operator might be different from ours, but it's more + * likely to be right than ignoring the information.) */ if (vardata->isunique && vardata->rel && vardata->rel->tuples >= 1.0) return 1.0 / vardata->rel->tuples; @@ -257,10 +257,10 @@ var_eq_const(VariableStatData *vardata, Oid operator, /* * Is the constant "=" to any of the column's most common values? - * (Although the given operator may not really be "=", we will - * assume that seeing whether it returns TRUE is an appropriate - * test. If you don't like this, maybe you shouldn't be using - * eqsel for your operator...) + * (Although the given operator may not really be "=", we will assume + * that seeing whether it returns TRUE is an appropriate test. If you + * don't like this, maybe you shouldn't be using eqsel for your + * operator...) */ if (get_attstatsslot(vardata->statsTuple, vardata->atttype, vardata->atttypmod, @@ -299,17 +299,16 @@ var_eq_const(VariableStatData *vardata, Oid operator, { /* * Constant is "=" to this common value. We know selectivity - * exactly (or as exactly as ANALYZE could calculate it, - * anyway). + * exactly (or as exactly as ANALYZE could calculate it, anyway). */ selec = numbers[i]; } else { /* - * Comparison is against a constant that is neither NULL nor - * any of the common values. Its selectivity cannot be more - * than this: + * Comparison is against a constant that is neither NULL nor any + * of the common values. Its selectivity cannot be more than + * this: */ double sumcommon = 0.0; double otherdistinct; @@ -320,18 +319,17 @@ var_eq_const(VariableStatData *vardata, Oid operator, CLAMP_PROBABILITY(selec); /* - * and in fact it's probably a good deal less. We approximate - * that all the not-common values share this remaining - * fraction equally, so we divide by the number of other - * distinct values. + * and in fact it's probably a good deal less. We approximate that + * all the not-common values share this remaining fraction + * equally, so we divide by the number of other distinct values. */ otherdistinct = get_variable_numdistinct(vardata) - nnumbers; if (otherdistinct > 1) selec /= otherdistinct; /* - * Another cross-check: selectivity shouldn't be estimated as - * more than the least common "most common value". + * Another cross-check: selectivity shouldn't be estimated as more + * than the least common "most common value". */ if (nnumbers > 0 && selec > numbers[nnumbers - 1]) selec = numbers[nnumbers - 1]; @@ -368,9 +366,9 @@ var_eq_non_const(VariableStatData *vardata, Oid operator, /* * If we matched the var to a unique index, assume there is exactly one - * match regardless of anything else. (This is slightly bogus, since - * the index's equality operator might be different from ours, but it's - * more likely to be right than ignoring the information.) + * match regardless of anything else. (This is slightly bogus, since the + * index's equality operator might be different from ours, but it's more + * likely to be right than ignoring the information.) */ if (vardata->isunique && vardata->rel && vardata->rel->tuples >= 1.0) return 1.0 / vardata->rel->tuples; @@ -391,8 +389,8 @@ var_eq_non_const(VariableStatData *vardata, Oid operator, * result averaged over all possible values whether common or * uncommon. (Essentially, we are assuming that the not-yet-known * comparison value is equally likely to be any of the possible - * values, regardless of their frequency in the table. Is that a - * good idea?) + * values, regardless of their frequency in the table. Is that a good + * idea?) */ selec = 1.0 - stats->stanullfrac; ndistinct = get_variable_numdistinct(vardata); @@ -400,8 +398,8 @@ var_eq_non_const(VariableStatData *vardata, Oid operator, selec /= ndistinct; /* - * Cross-check: selectivity should never be estimated as more than - * the most common value's. + * Cross-check: selectivity should never be estimated as more than the + * most common value's. */ if (get_attstatsslot(vardata->statsTuple, vardata->atttype, vardata->atttypmod, @@ -610,7 +608,7 @@ mcv_selectivity(VariableStatData *vardata, FmgrInfo *opproc, * essentially using the histogram just as a representative sample. However, * small histograms are unlikely to be all that representative, so the caller * should be prepared to fall back on some other estimation approach when the - * histogram is missing or very small. It may also be prudent to combine this + * histogram is missing or very small. It may also be prudent to combine this * approach with another one when the histogram is small. * * If the actual histogram size is not at least min_hist_size, we won't bother @@ -1169,7 +1167,8 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) * selectivity of the fixed prefix and remainder of pattern * separately, then combine the two to get an estimate of the * selectivity for the part of the column population represented by - * the histogram. (For small histograms, we combine these approaches.) + * the histogram. (For small histograms, we combine these + * approaches.) * * We then add up data for any most-common-values values; these are * not in the histogram population, and we can get exact answers for @@ -1205,7 +1204,7 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) restsel = pattern_selectivity(rest, ptype); heursel = prefixsel * restsel; - if (selec < 0) /* fewer than 10 histogram entries? */ + if (selec < 0) /* fewer than 10 histogram entries? */ selec = heursel; else { @@ -1214,7 +1213,7 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) * histogram and heuristic selectivities, putting increasingly * more trust in the histogram for larger sizes. */ - double hist_weight = hist_size / 100.0; + double hist_weight = hist_size / 100.0; selec = selec * hist_weight + heursel * (1.0 - hist_weight); } @@ -1863,22 +1862,22 @@ rowcomparesel(PlannerInfo *root, /* * Decide if it's a join clause. This should match clausesel.c's - * treat_as_join_clause(), except that we intentionally consider only - * the leading columns and not the rest of the clause. + * treat_as_join_clause(), except that we intentionally consider only the + * leading columns and not the rest of the clause. */ if (varRelid != 0) { /* - * Caller is forcing restriction mode (eg, because we are examining - * an inner indexscan qual). + * Caller is forcing restriction mode (eg, because we are examining an + * inner indexscan qual). */ is_join_clause = false; } else if (sjinfo == NULL) { /* - * It must be a restriction clause, since it's being evaluated at - * a scan node. + * It must be a restriction clause, since it's being evaluated at a + * scan node. */ is_join_clause = false; } @@ -1918,6 +1917,7 @@ eqjoinsel(PG_FUNCTION_ARGS) PlannerInfo *root = (PlannerInfo *) PG_GETARG_POINTER(0); Oid operator = PG_GETARG_OID(1); List *args = (List *) PG_GETARG_POINTER(2); + #ifdef NOT_USED JoinType jointype = (JoinType) PG_GETARG_INT16(3); #endif @@ -2163,11 +2163,11 @@ eqjoinsel_inner(Oid operator, * end up with the same answer anyway. * * An additional hack we use here is to clamp the nd1 and nd2 values - * to not more than what we are estimating the input relation sizes - * to be, providing a crude correction for the selectivity of - * restriction clauses on those relations. (We don't do that in the - * other path since there we are comparing the nd values to stats for - * the whole relations.) + * to not more than what we are estimating the input relation sizes to + * be, providing a crude correction for the selectivity of restriction + * clauses on those relations. (We don't do that in the other path + * since there we are comparing the nd values to stats for the whole + * relations.) */ double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; double nullfrac2 = stats2 ? stats2->stanullfrac : 0.0; @@ -2307,13 +2307,13 @@ eqjoinsel_semi(Oid operator, /* * Now we need to estimate the fraction of relation 1 that has at - * least one join partner. We know for certain that the matched - * MCVs do, so that gives us a lower bound, but we're really in the - * dark about everything else. Our crude approach is: if nd1 <= nd2 - * then assume all non-null rel1 rows have join partners, else assume - * for the uncertain rows that a fraction nd2/nd1 have join partners. - * We can discount the known-matched MCVs from the distinct-values - * counts before doing the division. + * least one join partner. We know for certain that the matched MCVs + * do, so that gives us a lower bound, but we're really in the dark + * about everything else. Our crude approach is: if nd1 <= nd2 then + * assume all non-null rel1 rows have join partners, else assume for + * the uncertain rows that a fraction nd2/nd1 have join partners. We + * can discount the known-matched MCVs from the distinct-values counts + * before doing the division. */ nd1 -= nmatches; nd2 -= nmatches; @@ -2321,10 +2321,10 @@ eqjoinsel_semi(Oid operator, selec = Max(matchfreq1, 1.0 - nullfrac1); else { - double uncertain = 1.0 - matchfreq1 - nullfrac1; + double uncertain = 1.0 - matchfreq1 - nullfrac1; CLAMP_PROBABILITY(uncertain); - selec = matchfreq1 + (nd2/nd1) * uncertain; + selec = matchfreq1 + (nd2 / nd1) * uncertain; } } else @@ -2343,7 +2343,7 @@ eqjoinsel_semi(Oid operator, if (nd1 <= nd2 || nd2 <= 0) selec = 1.0 - nullfrac1; else - selec = (nd2/nd1) * (1.0 - nullfrac1); + selec = (nd2 / nd1) * (1.0 - nullfrac1); } if (have_mcvs1) @@ -2572,8 +2572,8 @@ mergejoinscansel(PlannerInfo *root, Node *clause, * Look up the various operators we need. If we don't find them all, it * probably means the opfamily is broken, but we just fail silently. * - * Note: we expect that pg_statistic histograms will be sorted by the - * '<' operator, regardless of which sort direction we are considering. + * Note: we expect that pg_statistic histograms will be sorted by the '<' + * operator, regardless of which sort direction we are considering. */ switch (strategy) { @@ -2721,9 +2721,9 @@ mergejoinscansel(PlannerInfo *root, Node *clause, /* * Only one of the two "end" fractions can really be less than 1.0; - * believe the smaller estimate and reset the other one to exactly 1.0. - * If we get exactly equal estimates (as can easily happen with - * self-joins), believe neither. + * believe the smaller estimate and reset the other one to exactly 1.0. If + * we get exactly equal estimates (as can easily happen with self-joins), + * believe neither. */ if (*leftend > *rightend) *leftend = 1.0; @@ -2733,8 +2733,8 @@ mergejoinscansel(PlannerInfo *root, Node *clause, *leftend = *rightend = 1.0; /* - * Also, the fraction of the left variable that will be scanned before - * the first join pair is found is the fraction that's < the right-side + * Also, the fraction of the left variable that will be scanned before the + * first join pair is found is the fraction that's < the right-side * minimum value. But only believe non-default estimates, else stick with * our own default. */ @@ -2751,9 +2751,9 @@ mergejoinscansel(PlannerInfo *root, Node *clause, /* * Only one of the two "start" fractions can really be more than zero; - * believe the larger estimate and reset the other one to exactly 0.0. - * If we get exactly equal estimates (as can easily happen with - * self-joins), believe neither. + * believe the larger estimate and reset the other one to exactly 0.0. If + * we get exactly equal estimates (as can easily happen with self-joins), + * believe neither. */ if (*leftstart < *rightstart) *leftstart = 0.0; @@ -2764,8 +2764,8 @@ mergejoinscansel(PlannerInfo *root, Node *clause, /* * If the sort order is nulls-first, we're going to have to skip over any - * nulls too. These would not have been counted by scalarineqsel, and - * we can safely add in this fraction regardless of whether we believe + * nulls too. These would not have been counted by scalarineqsel, and we + * can safely add in this fraction regardless of whether we believe * scalarineqsel's results or not. But be sure to clamp the sum to 1.0! */ if (nulls_first) @@ -2898,7 +2898,7 @@ add_unique_group_var(PlannerInfo *root, List *varinfos, * is as follows: * 1. Expressions yielding boolean are assumed to contribute two groups, * independently of their content, and are ignored in the subsequent - * steps. This is mainly because tests like "col IS NULL" break the + * steps. This is mainly because tests like "col IS NULL" break the * heuristic used in step 2 especially badly. * 2. Reduce the given expressions to a list of unique Vars used. For * example, GROUP BY a, a + b is treated the same as GROUP BY a, b. @@ -2946,7 +2946,7 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows) Assert(groupExprs != NIL); /* - * Count groups derived from boolean grouping expressions. For other + * Count groups derived from boolean grouping expressions. For other * expressions, find the unique Vars used, treating an expression as a Var * if we can find stats for it. For each one, record the statistical * estimate of number of distinct values (total in its table, without @@ -3655,7 +3655,9 @@ convert_string_datum(Datum value, Oid typid) #if _MSC_VER == 1400 /* VS.Net 2005 */ /* - * http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=99694 + * + * http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx? + * FeedbackID=99694 */ { char x[1]; @@ -3958,10 +3960,10 @@ get_join_variables(PlannerInfo *root, List *args, SpecialJoinInfo *sjinfo, if (vardata1->rel && bms_is_subset(vardata1->rel->relids, sjinfo->syn_righthand)) - *join_is_reversed = true; /* var1 is on RHS */ + *join_is_reversed = true; /* var1 is on RHS */ else if (vardata2->rel && bms_is_subset(vardata2->rel->relids, sjinfo->syn_lefthand)) - *join_is_reversed = true; /* var2 is on LHS */ + *join_is_reversed = true; /* var2 is on LHS */ else *join_is_reversed = false; } @@ -4036,8 +4038,8 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid, (*get_relation_stats_hook) (root, rte, var->varattno, vardata)) { /* - * The hook took control of acquiring a stats tuple. If it - * did supply a tuple, it'd better have supplied a freefunc. + * The hook took control of acquiring a stats tuple. If it did + * supply a tuple, it'd better have supplied a freefunc. */ if (HeapTupleIsValid(vardata->statsTuple) && !vardata->freefunc) @@ -4169,10 +4171,10 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid, /* * Has it got stats? We only consider stats for - * non-partial indexes, since partial indexes - * probably don't reflect whole-relation statistics; - * the above check for uniqueness is the only info - * we take from a partial index. + * non-partial indexes, since partial indexes probably + * don't reflect whole-relation statistics; the above + * check for uniqueness is the only info we take from + * a partial index. * * An index stats hook, however, must make its own * decisions about what to do with partial indexes. @@ -4194,7 +4196,7 @@ examine_variable(PlannerInfo *root, Node *node, int varRelid, { vardata->statsTuple = SearchSysCache(STATRELATT, - ObjectIdGetDatum(index->indexoid), + ObjectIdGetDatum(index->indexoid), Int16GetDatum(pos + 1), 0, 0); vardata->freefunc = ReleaseSysCache; @@ -4281,9 +4283,9 @@ get_variable_numdistinct(VariableStatData *vardata) /* * If there is a unique index for the variable, assume it is unique no - * matter what pg_statistic says; the statistics could be out of date, - * or we might have found a partial unique index that proves the var - * is unique for this query. + * matter what pg_statistic says; the statistics could be out of date, or + * we might have found a partial unique index that proves the var is + * unique for this query. */ if (vardata->isunique) stadistinct = -1.0; @@ -4817,7 +4819,7 @@ prefix_selectivity(VariableStatData *vardata, Oid cmpopr; FmgrInfo opproc; Const *greaterstrcon; - Selectivity eq_sel; + Selectivity eq_sel; cmpopr = get_opfamily_member(opfamily, vartype, vartype, BTGreaterEqualStrategyNumber); @@ -4868,17 +4870,17 @@ prefix_selectivity(VariableStatData *vardata, } /* - * If the prefix is long then the two bounding values might be too - * close together for the histogram to distinguish them usefully, - * resulting in a zero estimate (plus or minus roundoff error). - * To avoid returning a ridiculously small estimate, compute the - * estimated selectivity for "variable = 'foo'", and clamp to that. - * (Obviously, the resultant estimate should be at least that.) + * If the prefix is long then the two bounding values might be too close + * together for the histogram to distinguish them usefully, resulting in a + * zero estimate (plus or minus roundoff error). To avoid returning a + * ridiculously small estimate, compute the estimated selectivity for + * "variable = 'foo'", and clamp to that. (Obviously, the resultant + * estimate should be at least that.) * * We apply this even if we couldn't make a greater string. That case * suggests that the prefix is near the maximum possible, and thus - * probably off the end of the histogram, and thus we probably got a - * very small estimate from the >= condition; so we still need to clamp. + * probably off the end of the histogram, and thus we probably got a very + * small estimate from the >= condition; so we still need to clamp. */ cmpopr = get_opfamily_member(opfamily, vartype, vartype, BTEqualStrategyNumber); diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 3fb4ebe2857..f4687d4ea9c 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.200 2009/06/01 23:55:15 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.201 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -43,6 +43,7 @@ /* Set at postmaster start */ TimestampTz PgStartTime; + /* Set at configuration reload */ TimestampTz PgReloadTime; @@ -56,8 +57,8 @@ typedef struct typedef struct { - TimestampTz current; - TimestampTz finish; + TimestampTz current; + TimestampTz finish; Interval step; int step_sign; } generate_series_timestamptz_fctx; @@ -631,7 +632,7 @@ interval_in(PG_FUNCTION_ARGS) /* if those functions think it's a bad format, try ISO8601 style */ if (dterr == DTERR_BAD_FORMAT) - dterr = DecodeISO8601Interval(str, + dterr = DecodeISO8601Interval(str, &dtype, tm, &fsec); if (dterr != 0) @@ -750,7 +751,7 @@ intervaltypmodin(PG_FUNCTION_ARGS) tl = ArrayGetIntegerTypmods(ta, &n); /* - * tl[0] - interval range (fields bitmask) tl[1] - precision (optional) + * tl[0] - interval range (fields bitmask) tl[1] - precision (optional) * * Note we must validate tl[0] even though it's normally guaranteed * correct by the grammar --- consider SELECT 'foo'::"interval"(1000). @@ -963,22 +964,22 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod) int precision = INTERVAL_PRECISION(typmod); /* - * Our interpretation of intervals with a limited set of fields - * is that fields to the right of the last one specified are zeroed - * out, but those to the left of it remain valid. Thus for example - * there is no operational difference between INTERVAL YEAR TO MONTH - * and INTERVAL MONTH. In some cases we could meaningfully enforce - * that higher-order fields are zero; for example INTERVAL DAY could - * reject nonzero "month" field. However that seems a bit pointless - * when we can't do it consistently. (We cannot enforce a range limit - * on the highest expected field, since we do not have any equivalent - * of SQL's <interval leading field precision>.) + * Our interpretation of intervals with a limited set of fields is + * that fields to the right of the last one specified are zeroed out, + * but those to the left of it remain valid. Thus for example there + * is no operational difference between INTERVAL YEAR TO MONTH and + * INTERVAL MONTH. In some cases we could meaningfully enforce that + * higher-order fields are zero; for example INTERVAL DAY could reject + * nonzero "month" field. However that seems a bit pointless when we + * can't do it consistently. (We cannot enforce a range limit on the + * highest expected field, since we do not have any equivalent of + * SQL's <interval leading field precision>.) * * Note: before PG 8.4 we interpreted a limited set of fields as * actually causing a "modulo" operation on a given value, potentially - * losing high-order as well as low-order information. But there is + * losing high-order as well as low-order information. But there is * no support for such behavior in the standard, and it seems fairly - * undesirable on data consistency grounds anyway. Now we only + * undesirable on data consistency grounds anyway. Now we only * perform truncation or rounding of low-order fields. */ if (range == INTERVAL_FULL_RANGE) @@ -1137,7 +1138,7 @@ EncodeSpecialTimestamp(Timestamp dt, char *str) strcpy(str, EARLY); else if (TIMESTAMP_IS_NOEND(dt)) strcpy(str, LATE); - else /* shouldn't happen */ + else /* shouldn't happen */ elog(ERROR, "invalid argument for EncodeSpecialTimestamp"); } @@ -4394,7 +4395,7 @@ timestamp_zone(PG_FUNCTION_ARGS) PG_RETURN_TIMESTAMPTZ(timestamp); /* - * Look up the requested timezone. First we look in the date token table + * Look up the requested timezone. First we look in the date token table * (to handle cases like "EST"), and if that fails, we look in the * timezone database (to handle cases like "America/New_York"). (This * matches the order in which timestamp input checks the cases; it's @@ -4438,7 +4439,7 @@ timestamp_zone(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("time zone \"%s\" not recognized", tzname))); - result = 0; /* keep compiler quiet */ + result = 0; /* keep compiler quiet */ } } @@ -4568,7 +4569,7 @@ timestamptz_zone(PG_FUNCTION_ARGS) PG_RETURN_TIMESTAMP(timestamp); /* - * Look up the requested timezone. First we look in the date token table + * Look up the requested timezone. First we look in the date token table * (to handle cases like "EST"), and if that fails, we look in the * timezone database (to handle cases like "America/New_York"). (This * matches the order in which timestamp input checks the cases; it's @@ -4611,7 +4612,7 @@ timestamptz_zone(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("time zone \"%s\" not recognized", tzname))); - result = 0; /* keep compiler quiet */ + result = 0; /* keep compiler quiet */ } } @@ -4659,16 +4660,16 @@ generate_series_timestamp(PG_FUNCTION_ARGS) { FuncCallContext *funcctx; generate_series_timestamp_fctx *fctx; - Timestamp result; + Timestamp result; /* stuff done only on the first call of the function */ if (SRF_IS_FIRSTCALL()) { - Timestamp start = PG_GETARG_TIMESTAMP(0); - Timestamp finish = PG_GETARG_TIMESTAMP(1); - Interval *step = PG_GETARG_INTERVAL_P(2); + Timestamp start = PG_GETARG_TIMESTAMP(0); + Timestamp finish = PG_GETARG_TIMESTAMP(1); + Interval *step = PG_GETARG_INTERVAL_P(2); MemoryContext oldcontext; - Interval interval_zero; + Interval interval_zero; /* create a function context for cross-call persistence */ funcctx = SRF_FIRSTCALL_INIT(); @@ -4718,9 +4719,9 @@ generate_series_timestamp(PG_FUNCTION_ARGS) { /* increment current in preparation for next iteration */ fctx->current = DatumGetTimestamp( - DirectFunctionCall2(timestamp_pl_interval, - TimestampGetDatum(fctx->current), - PointerGetDatum(&fctx->step))); + DirectFunctionCall2(timestamp_pl_interval, + TimestampGetDatum(fctx->current), + PointerGetDatum(&fctx->step))); /* do when there is more left to send */ SRF_RETURN_NEXT(funcctx, TimestampGetDatum(result)); @@ -4747,9 +4748,9 @@ generate_series_timestamptz(PG_FUNCTION_ARGS) { TimestampTz start = PG_GETARG_TIMESTAMPTZ(0); TimestampTz finish = PG_GETARG_TIMESTAMPTZ(1); - Interval *step = PG_GETARG_INTERVAL_P(2); + Interval *step = PG_GETARG_INTERVAL_P(2); MemoryContext oldcontext; - Interval interval_zero; + Interval interval_zero; /* create a function context for cross-call persistence */ funcctx = SRF_FIRSTCALL_INIT(); @@ -4799,9 +4800,9 @@ generate_series_timestamptz(PG_FUNCTION_ARGS) { /* increment current in preparation for next iteration */ fctx->current = DatumGetTimestampTz( - DirectFunctionCall2(timestamptz_pl_interval, - TimestampTzGetDatum(fctx->current), - PointerGetDatum(&fctx->step))); + DirectFunctionCall2(timestamptz_pl_interval, + TimestampTzGetDatum(fctx->current), + PointerGetDatum(&fctx->step))); /* do when there is more left to send */ SRF_RETURN_NEXT(funcctx, TimestampTzGetDatum(result)); diff --git a/src/backend/utils/adt/trigfuncs.c b/src/backend/utils/adt/trigfuncs.c index b34046a7c35..380d174a6a3 100644 --- a/src/backend/utils/adt/trigfuncs.c +++ b/src/backend/utils/adt/trigfuncs.c @@ -1,13 +1,13 @@ /*------------------------------------------------------------------------- * * trigfuncs.c - * Builtin functions for useful trigger support. + * Builtin functions for useful trigger support. * * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/utils/adt/trigfuncs.c,v 1.6 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/trigfuncs.c,v 1.7 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -27,61 +27,64 @@ Datum suppress_redundant_updates_trigger(PG_FUNCTION_ARGS) { - TriggerData *trigdata = (TriggerData *) fcinfo->context; - HeapTuple newtuple, oldtuple, rettuple; - HeapTupleHeader newheader, oldheader; + TriggerData *trigdata = (TriggerData *) fcinfo->context; + HeapTuple newtuple, + oldtuple, + rettuple; + HeapTupleHeader newheader, + oldheader; - /* make sure it's called as a trigger */ - if (!CALLED_AS_TRIGGER(fcinfo)) - ereport(ERROR, + /* make sure it's called as a trigger */ + if (!CALLED_AS_TRIGGER(fcinfo)) + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), errmsg("suppress_redundant_updates_trigger: must be called as trigger"))); - - /* and that it's called on update */ - if (! TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) - ereport(ERROR, + + /* and that it's called on update */ + if (!TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), errmsg("suppress_redundant_updates_trigger: must be called on update"))); - /* and that it's called before update */ - if (! TRIGGER_FIRED_BEFORE(trigdata->tg_event)) - ereport(ERROR, + /* and that it's called before update */ + if (!TRIGGER_FIRED_BEFORE(trigdata->tg_event)) + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), errmsg("suppress_redundant_updates_trigger: must be called before update"))); - /* and that it's called for each row */ - if (! TRIGGER_FIRED_FOR_ROW(trigdata->tg_event)) - ereport(ERROR, + /* and that it's called for each row */ + if (!TRIGGER_FIRED_FOR_ROW(trigdata->tg_event)) + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), errmsg("suppress_redundant_updates_trigger: must be called for each row"))); /* get tuple data, set default result */ - rettuple = newtuple = trigdata->tg_newtuple; + rettuple = newtuple = trigdata->tg_newtuple; oldtuple = trigdata->tg_trigtuple; newheader = newtuple->t_data; oldheader = oldtuple->t_data; /* - * We are called before the OID, if any, has been transcribed from the - * old tuple to the new (in heap_update). To avoid a bogus compare - * failure, copy the OID now. But check that someone didn't already put - * another OID value into newtuple. (That's not actually possible at - * present, but maybe someday.) + * We are called before the OID, if any, has been transcribed from the old + * tuple to the new (in heap_update). To avoid a bogus compare failure, + * copy the OID now. But check that someone didn't already put another + * OID value into newtuple. (That's not actually possible at present, but + * maybe someday.) */ - if (trigdata->tg_relation->rd_rel->relhasoids && + if (trigdata->tg_relation->rd_rel->relhasoids && !OidIsValid(HeapTupleHeaderGetOid(newheader))) HeapTupleHeaderSetOid(newheader, HeapTupleHeaderGetOid(oldheader)); /* if the tuple payload is the same ... */ - if (newtuple->t_len == oldtuple->t_len && + if (newtuple->t_len == oldtuple->t_len && newheader->t_hoff == oldheader->t_hoff && - (HeapTupleHeaderGetNatts(newheader) == + (HeapTupleHeaderGetNatts(newheader) == HeapTupleHeaderGetNatts(oldheader)) && - ((newheader->t_infomask & ~HEAP_XACT_MASK) == + ((newheader->t_infomask & ~HEAP_XACT_MASK) == (oldheader->t_infomask & ~HEAP_XACT_MASK)) && - memcmp(((char *)newheader) + offsetof(HeapTupleHeaderData, t_bits), - ((char *)oldheader) + offsetof(HeapTupleHeaderData, t_bits), + memcmp(((char *) newheader) + offsetof(HeapTupleHeaderData, t_bits), + ((char *) oldheader) + offsetof(HeapTupleHeaderData, t_bits), newtuple->t_len - offsetof(HeapTupleHeaderData, t_bits)) == 0) { /* ... then suppress the update */ diff --git a/src/backend/utils/adt/tsginidx.c b/src/backend/utils/adt/tsginidx.c index 262a604ded1..6b43585965b 100644 --- a/src/backend/utils/adt/tsginidx.c +++ b/src/backend/utils/adt/tsginidx.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsginidx.c,v 1.15 2009/03/25 22:19:01 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsginidx.c,v 1.16 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -22,42 +22,43 @@ Datum gin_cmp_tslexeme(PG_FUNCTION_ARGS) { - text *a = PG_GETARG_TEXT_PP(0); - text *b = PG_GETARG_TEXT_PP(1); - int cmp; + text *a = PG_GETARG_TEXT_PP(0); + text *b = PG_GETARG_TEXT_PP(1); + int cmp; cmp = tsCompareString( - VARDATA_ANY(a), VARSIZE_ANY_EXHDR(a), - VARDATA_ANY(b), VARSIZE_ANY_EXHDR(b), - false ); + VARDATA_ANY(a), VARSIZE_ANY_EXHDR(a), + VARDATA_ANY(b), VARSIZE_ANY_EXHDR(b), + false); - PG_FREE_IF_COPY(a,0); - PG_FREE_IF_COPY(b,1); - PG_RETURN_INT32( cmp ); + PG_FREE_IF_COPY(a, 0); + PG_FREE_IF_COPY(b, 1); + PG_RETURN_INT32(cmp); } Datum gin_cmp_prefix(PG_FUNCTION_ARGS) { - text *a = PG_GETARG_TEXT_PP(0); - text *b = PG_GETARG_TEXT_PP(1); + text *a = PG_GETARG_TEXT_PP(0); + text *b = PG_GETARG_TEXT_PP(1); + #ifdef NOT_USED StrategyNumber strategy = PG_GETARG_UINT16(2); - Pointer extra_data = PG_GETARG_POINTER(3); + Pointer extra_data = PG_GETARG_POINTER(3); #endif - int cmp; + int cmp; cmp = tsCompareString( - VARDATA_ANY(a), VARSIZE_ANY_EXHDR(a), - VARDATA_ANY(b), VARSIZE_ANY_EXHDR(b), - true ); + VARDATA_ANY(a), VARSIZE_ANY_EXHDR(a), + VARDATA_ANY(b), VARSIZE_ANY_EXHDR(b), + true); - if ( cmp < 0 ) - cmp = 1; /* prevent continue scan */ + if (cmp < 0) + cmp = 1; /* prevent continue scan */ - PG_FREE_IF_COPY(a,0); - PG_FREE_IF_COPY(b,1); - PG_RETURN_INT32( cmp ); + PG_FREE_IF_COPY(a, 0); + PG_FREE_IF_COPY(b, 1); + PG_RETURN_INT32(cmp); } Datum @@ -95,11 +96,12 @@ gin_extract_tsquery(PG_FUNCTION_ARGS) { TSQuery query = PG_GETARG_TSQUERY(0); int32 *nentries = (int32 *) PG_GETARG_POINTER(1); + /* StrategyNumber strategy = PG_GETARG_UINT16(2); */ - bool **ptr_partialmatch = (bool**) PG_GETARG_POINTER(3); - Pointer **extra_data = (Pointer **) PG_GETARG_POINTER(4); + bool **ptr_partialmatch = (bool **) PG_GETARG_POINTER(3); + Pointer **extra_data = (Pointer **) PG_GETARG_POINTER(4); Datum *entries = NULL; - bool *partialmatch; + bool *partialmatch; *nentries = 0; @@ -109,7 +111,7 @@ gin_extract_tsquery(PG_FUNCTION_ARGS) j = 0, len; QueryItem *item; - bool use_fullscan=false; + bool use_fullscan = false; int *map_item_operand; item = clean_NOT(GETQUERY(query), &len); @@ -126,15 +128,14 @@ gin_extract_tsquery(PG_FUNCTION_ARGS) (*nentries)++; entries = (Datum *) palloc(sizeof(Datum) * (*nentries)); - partialmatch = *ptr_partialmatch = (bool*) palloc(sizeof(bool) * (*nentries)); + partialmatch = *ptr_partialmatch = (bool *) palloc(sizeof(bool) * (*nentries)); /* - * Make map to convert item's number to corresponding - * operand's (the same, entry's) number. Entry's number - * is used in check array in consistent method. We use - * the same map for each entry. + * Make map to convert item's number to corresponding operand's (the + * same, entry's) number. Entry's number is used in check array in + * consistent method. We use the same map for each entry. */ - *extra_data = (Pointer*) palloc0(sizeof(Pointer)*(*nentries)); + *extra_data = (Pointer *) palloc0(sizeof(Pointer) * (*nentries)); map_item_operand = palloc0(sizeof(int) * (query->size + 1)); for (i = 0; i < query->size; i++) @@ -145,15 +146,15 @@ gin_extract_tsquery(PG_FUNCTION_ARGS) txt = cstring_to_text_with_len(GETOPERAND(query) + val->distance, val->length); - (*extra_data)[j] = (Pointer)map_item_operand; + (*extra_data)[j] = (Pointer) map_item_operand; map_item_operand[i] = j; partialmatch[j] = val->prefix; entries[j++] = PointerGetDatum(txt); } - if ( use_fullscan ) + if (use_fullscan) { - (*extra_data)[j] = (Pointer)map_item_operand; + (*extra_data)[j] = (Pointer) map_item_operand; map_item_operand[i] = j; entries[j++] = PointerGetDatum(cstring_to_text_with_len("", 0)); } @@ -185,7 +186,7 @@ checkcondition_gin(void *checkval, QueryOperand *val) *(gcv->need_recheck) = true; /* convert item's number to corresponding entry's (operand's) number */ - j = gcv->map_item_operand[ ((QueryItem *) val) - gcv->first_item ]; + j = gcv->map_item_operand[((QueryItem *) val) - gcv->first_item]; /* return presence of current entry in indexed value */ return gcv->check[j]; @@ -195,10 +196,12 @@ Datum gin_tsquery_consistent(PG_FUNCTION_ARGS) { bool *check = (bool *) PG_GETARG_POINTER(0); + /* StrategyNumber strategy = PG_GETARG_UINT16(1); */ TSQuery query = PG_GETARG_TSQUERY(2); + /* int32 nkeys = PG_GETARG_INT32(3); */ - Pointer *extra_data = (Pointer *) PG_GETARG_POINTER(4); + Pointer *extra_data = (Pointer *) PG_GETARG_POINTER(4); bool *recheck = (bool *) PG_GETARG_POINTER(5); bool res = FALSE; @@ -216,7 +219,7 @@ gin_tsquery_consistent(PG_FUNCTION_ARGS) */ gcv.first_item = item = GETQUERY(query); gcv.check = check; - gcv.map_item_operand = (int*)(extra_data[0]); + gcv.map_item_operand = (int *) (extra_data[0]); gcv.need_recheck = recheck; res = TS_execute( diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c index 3f1c84d14b6..72e45dcf0b5 100644 --- a/src/backend/utils/adt/tsgistidx.c +++ b/src/backend/utils/adt/tsgistidx.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsgistidx.c,v 1.10 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsgistidx.c,v 1.11 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -307,10 +307,10 @@ checkcondition_arr(void *checkval, QueryOperand *val) /* Loop invariant: StopLow <= val < StopHigh */ - /* - * we are not able to find a a prefix by hash value + /* + * we are not able to find a a prefix by hash value */ - if ( val->prefix ) + if (val->prefix) return true; while (StopLow < StopHigh) @@ -330,11 +330,11 @@ checkcondition_arr(void *checkval, QueryOperand *val) static bool checkcondition_bit(void *checkval, QueryOperand *val) { - /* - * we are not able to find a a prefix in signature tree + /* + * we are not able to find a a prefix in signature tree */ - if ( val->prefix ) - return true; + if (val->prefix) + return true; return GETBIT(checkval, HASHVAL(val->valcrc)); } @@ -343,6 +343,7 @@ gtsvector_consistent(PG_FUNCTION_ARGS) { GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); TSQuery query = PG_GETARG_TSQUERY(1); + /* StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); */ /* Oid subtype = PG_GETARG_OID(3); */ bool *recheck = (bool *) PG_GETARG_POINTER(4); diff --git a/src/backend/utils/adt/tsquery.c b/src/backend/utils/adt/tsquery.c index 8b9c3d485de..7ca84678337 100644 --- a/src/backend/utils/adt/tsquery.c +++ b/src/backend/utils/adt/tsquery.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery.c,v 1.19 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery.c,v 1.20 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -56,7 +56,7 @@ struct TSQueryParserStateData #define WAITSINGLEOPERAND 4 /* - * subroutine to parse the modifiers (weight and prefix flag currently) + * subroutine to parse the modifiers (weight and prefix flag currently) * part, like ':1AB' of a query. */ static char * @@ -642,7 +642,7 @@ infix(INFIX *in, bool first) { *(in->cur) = ':'; in->cur++; - if ( curpol->prefix ) + if (curpol->prefix) { *(in->cur) = '*'; in->cur++; diff --git a/src/backend/utils/adt/tsquery_gist.c b/src/backend/utils/adt/tsquery_gist.c index 10d9fd01ec6..be0b39bf1e2 100644 --- a/src/backend/utils/adt/tsquery_gist.c +++ b/src/backend/utils/adt/tsquery_gist.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_gist.c,v 1.8 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_gist.c,v 1.9 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -55,9 +55,10 @@ gtsquery_consistent(PG_FUNCTION_ARGS) GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0); TSQuery query = PG_GETARG_TSQUERY(1); StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2); + /* Oid subtype = PG_GETARG_OID(3); */ bool *recheck = (bool *) PG_GETARG_POINTER(4); - TSQuerySign key = DatumGetTSQuerySign(entry->key); + TSQuerySign key = DatumGetTSQuerySign(entry->key); TSQuerySign sq = makeTSQuerySign(query); bool retval; diff --git a/src/backend/utils/adt/tsquery_op.c b/src/backend/utils/adt/tsquery_op.c index d3fc3687690..6b7e976a431 100644 --- a/src/backend/utils/adt/tsquery_op.c +++ b/src/backend/utils/adt/tsquery_op.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_op.c,v 1.5 2009/05/27 19:41:58 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_op.c,v 1.6 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -188,7 +188,7 @@ NAME(PG_FUNCTION_ARGS) { \ PG_FREE_IF_COPY(b,1); \ \ PG_RETURN_BOOL( CONDITION ); \ -} \ +} \ /* keep compiler quiet - no extra ; */ \ extern int no_such_variable diff --git a/src/backend/utils/adt/tsquery_util.c b/src/backend/utils/adt/tsquery_util.c index 78814feca61..9efd5fa8d3b 100644 --- a/src/backend/utils/adt/tsquery_util.c +++ b/src/backend/utils/adt/tsquery_util.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_util.c,v 1.10 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsquery_util.c,v 1.11 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -125,7 +125,7 @@ QTNodeCompare(QTNode *an, QTNode *bn) return (ao->valcrc > bo->valcrc) ? -1 : 1; } - return tsCompareString( an->word, ao->length, bn->word, bo->length, false); + return tsCompareString(an->word, ao->length, bn->word, bo->length, false); } } diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c index f1b7b8ea563..3dac5ce0cdb 100644 --- a/src/backend/utils/adt/tsrank.c +++ b/src/backend/utils/adt/tsrank.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsrank.c,v 1.14 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsrank.c,v 1.15 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -72,9 +72,9 @@ cnt_length(TSVector t) } -#define WordECompareQueryItem(e,q,p,i,m) \ +#define WordECompareQueryItem(e,q,p,i,m) \ tsCompareString((q) + (i)->distance, (i)->length, \ - (e) + (p)->pos, (p)->len, (m)) + (e) + (p)->pos, (p)->len, (m)) /* @@ -90,7 +90,7 @@ find_wordentry(TSVector t, TSQuery q, QueryOperand *item, int32 *nitem) WordEntry *StopMiddle = StopHigh; int difference; - *nitem=0; + *nitem = 0; /* Loop invariant: StopLow <= item < StopHigh */ while (StopLow < StopHigh) @@ -100,7 +100,7 @@ find_wordentry(TSVector t, TSQuery q, QueryOperand *item, int32 *nitem) if (difference == 0) { StopHigh = StopMiddle; - *nitem=1; + *nitem = 1; break; } else if (difference > 0) @@ -109,22 +109,22 @@ find_wordentry(TSVector t, TSQuery q, QueryOperand *item, int32 *nitem) StopHigh = StopMiddle; } - if ( item->prefix == true ) + if (item->prefix == true) { - if ( StopLow >= StopHigh ) + if (StopLow >= StopHigh) StopMiddle = StopHigh; - *nitem=0; + *nitem = 0; - while( StopMiddle < (WordEntry *) STRPTR(t) && - WordECompareQueryItem(STRPTR(t), GETOPERAND(q), StopMiddle, item, true) == 0 ) + while (StopMiddle < (WordEntry *) STRPTR(t) && + WordECompareQueryItem(STRPTR(t), GETOPERAND(q), StopMiddle, item, true) == 0) { (*nitem)++; StopMiddle++; } } - return ( *nitem > 0 ) ? StopHigh : NULL; + return (*nitem > 0) ? StopHigh : NULL; } @@ -237,7 +237,7 @@ calc_rank_and(float *w, TSVector t, TSQuery q) if (!entry) continue; - while( entry - firstentry < nitem ) + while (entry - firstentry < nitem) { if (entry->haspos) pos[i] = _POSVECPTR(t, entry); @@ -260,7 +260,7 @@ calc_rank_and(float *w, TSVector t, TSQuery q) if (dist || (dist == 0 && (pos[i] == &POSNULL || pos[k] == &POSNULL))) { float curw; - + if (!dist) dist = MAXENTRYPOS; curw = sqrt(wpos(post[l]) * wpos(ct[p]) * word_distance(dist)); @@ -304,7 +304,7 @@ calc_rank_or(float *w, TSVector t, TSQuery q) if (!entry) continue; - while( entry - firstentry < nitem ) + while (entry - firstentry < nitem) { if (entry->haspos) { @@ -650,7 +650,7 @@ get_docrep(TSVector txt, QueryRepresentation *qr, int *doclen) if (!entry) continue; - while( entry - firstentry < nitem ) + while (entry - firstentry < nitem) { if (entry->haspos) { @@ -674,22 +674,22 @@ get_docrep(TSVector txt, QueryRepresentation *qr, int *doclen) if (j == 0) { int k; - + doc[cur].nitem = 0; doc[cur].item = (QueryItem **) palloc(sizeof(QueryItem *) * qr->query->size); - + for (k = 0; k < qr->query->size; k++) { QueryOperand *kptr = &item[k].operand; QueryOperand *iptr = &item[i].operand; - + if (k == i || (item[k].type == QI_VAL && compareQueryOperand(&kptr, &iptr, operand) == 0)) { /* - * if k == i, we've already checked above that it's - * type == Q_VAL + * if k == i, we've already checked above that + * it's type == Q_VAL */ doc[cur].item[doc[cur].nitem] = item + k; doc[cur].nitem++; diff --git a/src/backend/utils/adt/tsvector.c b/src/backend/utils/adt/tsvector.c index f4496957251..397e6c780bf 100644 --- a/src/backend/utils/adt/tsvector.c +++ b/src/backend/utils/adt/tsvector.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsvector.c,v 1.17 2009/05/21 20:09:36 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsvector.c,v 1.18 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -85,9 +85,9 @@ compareentry(const void *va, const void *vb, void *arg) const WordEntryIN *b = (const WordEntryIN *) vb; char *BufferStr = (char *) arg; - return tsCompareString( &BufferStr[a->entry.pos], a->entry.len, - &BufferStr[b->entry.pos], b->entry.len, - false ); + return tsCompareString(&BufferStr[a->entry.pos], a->entry.len, + &BufferStr[b->entry.pos], b->entry.len, + false); } /* @@ -219,7 +219,7 @@ tsvectorin(PG_FUNCTION_ARGS) if (cur - tmpbuf > MAXSTRPOS) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("string is too long for tsvector (%ld bytes, max %ld bytes)", + errmsg("string is too long for tsvector (%ld bytes, max %ld bytes)", (long) (cur - tmpbuf), (long) MAXSTRPOS))); /* @@ -544,8 +544,8 @@ tsvectorrecv(PG_FUNCTION_ARGS) SET_VARSIZE(vec, hdrlen + datalen); if (needSort) - qsort_arg((void *) ARRPTR(vec), vec->size, sizeof(WordEntry), - compareentry, (void*)STRPTR(vec)); + qsort_arg((void *) ARRPTR(vec), vec->size, sizeof(WordEntry), + compareentry, (void *) STRPTR(vec)); PG_RETURN_TSVECTOR(vec); } diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c index e7bce9a707b..093f2a348ad 100644 --- a/src/backend/utils/adt/tsvector_op.c +++ b/src/backend/utils/adt/tsvector_op.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/tsvector_op.c,v 1.22 2009/05/27 19:41:58 petere Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/tsvector_op.c,v 1.23 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -38,8 +38,8 @@ typedef struct typedef struct StatEntry { - uint32 ndoc; /* zero indicates that we already was here while - walking throug the tree */ + uint32 ndoc; /* zero indicates that we already was here + * while walking throug the tree */ uint32 nentry; struct StatEntry *left; struct StatEntry *right; @@ -54,11 +54,11 @@ typedef struct int4 weight; uint32 maxdepth; - - StatEntry **stack; + + StatEntry **stack; uint32 stackpos; - StatEntry* root; + StatEntry *root; } TSVectorStat; #define STATHDRSIZE (offsetof(TSVectorStat, data)) @@ -127,7 +127,7 @@ silly_cmp_tsvector(const TSVector a, const TSVector b) { return (aptr->haspos > bptr->haspos) ? -1 : 1; } - else if ( (res=tsCompareString( STRPTR(a) + aptr->pos, aptr->len, STRPTR(b) + bptr->pos, bptr->len, false)) !=0 ) + else if ((res = tsCompareString(STRPTR(a) + aptr->pos, aptr->len, STRPTR(b) + bptr->pos, bptr->len, false)) != 0) { return res; } @@ -172,7 +172,7 @@ tsvector_##type(PG_FUNCTION_ARGS) \ PG_FREE_IF_COPY(a,0); \ PG_FREE_IF_COPY(b,1); \ PG_RETURN_##ret( res action 0 ); \ -} \ +} \ /* keep compiler quiet - no extra ; */ \ extern int no_such_variable @@ -524,40 +524,41 @@ tsvector_concat(PG_FUNCTION_ARGS) } /* - * Compare two strings by tsvector rules. + * Compare two strings by tsvector rules. * if isPrefix = true then it returns not-zero value if b has prefix a */ int4 tsCompareString(char *a, int lena, char *b, int lenb, bool prefix) { - int cmp; + int cmp; - if ( lena == 0 ) + if (lena == 0) { - if ( prefix ) - cmp = 0; /* emtry string is equal to any if a prefix match */ + if (prefix) + cmp = 0; /* emtry string is equal to any if a prefix + * match */ else - cmp = (lenb>0) ? -1 : 0; + cmp = (lenb > 0) ? -1 : 0; } - else if ( lenb == 0 ) + else if (lenb == 0) { - cmp = (lena>0) ? 1 : 0; + cmp = (lena > 0) ? 1 : 0; } else { cmp = memcmp(a, b, Min(lena, lenb)); - if ( prefix ) + if (prefix) { - if ( cmp == 0 && lena > lenb ) + if (cmp == 0 && lena > lenb) { /* * b argument is not beginning with argument a */ - cmp=1; + cmp = 1; } } - else if ( (cmp == 0) && (lena != lenb) ) + else if ((cmp == 0) && (lena != lenb)) { cmp = (lena < lenb) ? -1 : 1; } @@ -601,16 +602,16 @@ checkcondition_str(void *checkval, QueryOperand *val) WordEntry *StopLow = chkval->arrb; WordEntry *StopHigh = chkval->arre; WordEntry *StopMiddle = StopHigh; - int difference = -1; - bool res=false; + int difference = -1; + bool res = false; /* Loop invariant: StopLow <= val < StopHigh */ while (StopLow < StopHigh) { StopMiddle = StopLow + (StopHigh - StopLow) / 2; - difference = tsCompareString( chkval->operand + val->distance, val->length, - chkval->values + StopMiddle->pos, StopMiddle->len, - false); + difference = tsCompareString(chkval->operand + val->distance, val->length, + chkval->values + StopMiddle->pos, StopMiddle->len, + false); if (difference == 0) { @@ -624,19 +625,19 @@ checkcondition_str(void *checkval, QueryOperand *val) StopHigh = StopMiddle; } - if ( res == false && val->prefix == true ) + if (res == false && val->prefix == true) { /* * there was a failed exact search, so we should scan further to find * a prefix match. */ - if ( StopLow >= StopHigh ) + if (StopLow >= StopHigh) StopMiddle = StopHigh; - while( res == false && StopMiddle < chkval->arre && - tsCompareString( chkval->operand + val->distance, val->length, - chkval->values + StopMiddle->pos, StopMiddle->len, - true) == 0 ) + while (res == false && StopMiddle < chkval->arre && + tsCompareString(chkval->operand + val->distance, val->length, + chkval->values + StopMiddle->pos, StopMiddle->len, + true) == 0) { res = (val->weight && StopMiddle->haspos) ? checkclass_str(chkval, StopMiddle, val) : true; @@ -645,7 +646,7 @@ checkcondition_str(void *checkval, QueryOperand *val) } } - return res; + return res; } /* @@ -803,7 +804,7 @@ check_weight(TSVector txt, WordEntry *wptr, int8 weight) return num; } -#define compareStatWord(a,e,t) \ +#define compareStatWord(a,e,t) \ tsCompareString((a)->lexeme, (a)->lenlexeme, \ STRPTR(t) + (e)->pos, (e)->len, \ false) @@ -811,22 +812,22 @@ check_weight(TSVector txt, WordEntry *wptr, int8 weight) static void insertStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector txt, uint32 off) { - WordEntry *we = ARRPTR(txt) + off; - StatEntry *node = stat->root, - *pnode=NULL; + WordEntry *we = ARRPTR(txt) + off; + StatEntry *node = stat->root, + *pnode = NULL; int n, res = 0; - uint32 depth=1; + uint32 depth = 1; - if (stat->weight == 0) + if (stat->weight == 0) n = (we->haspos) ? POSDATALEN(txt, we) : 1; else n = (we->haspos) ? check_weight(txt, we, stat->weight) : 0; - if ( n == 0 ) - return; /* nothing to insert */ + if (n == 0) + return; /* nothing to insert */ - while( node ) + while (node) { res = compareStatWord(node, we, txt); @@ -837,7 +838,7 @@ insertStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector tx else { pnode = node; - node = ( res < 0 ) ? node->left : node->right; + node = (res < 0) ? node->left : node->right; } depth++; } @@ -847,14 +848,14 @@ insertStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector tx if (node == NULL) { - node = MemoryContextAlloc(persistentContext, STATENTRYHDRSZ + we->len ); + node = MemoryContextAlloc(persistentContext, STATENTRYHDRSZ + we->len); node->left = node->right = NULL; node->ndoc = 1; node->nentry = n; node->lenlexeme = we->len; memcpy(node->lexeme, STRPTR(txt) + we->pos, node->lenlexeme); - if ( pnode==NULL ) + if (pnode == NULL) { stat->root = node; } @@ -865,7 +866,7 @@ insertStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector tx else pnode->right = node; } - + } else { @@ -875,18 +876,18 @@ insertStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector tx } static void -chooseNextStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector txt, - uint32 low, uint32 high, uint32 offset) +chooseNextStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVector txt, + uint32 low, uint32 high, uint32 offset) { - uint32 pos; - uint32 middle = (low + high) >> 1; + uint32 pos; + uint32 middle = (low + high) >> 1; pos = (low + middle) >> 1; if (low != middle && pos >= offset && pos - offset < txt->size) - insertStatEntry( persistentContext, stat, txt, pos - offset ); + insertStatEntry(persistentContext, stat, txt, pos - offset); pos = (high + middle + 1) >> 1; if (middle + 1 != high && pos >= offset && pos - offset < txt->size) - insertStatEntry( persistentContext, stat, txt, pos - offset ); + insertStatEntry(persistentContext, stat, txt, pos - offset); if (low != middle) chooseNextStatEntry(persistentContext, stat, txt, low, middle, offset); @@ -909,13 +910,13 @@ chooseNextStatEntry(MemoryContext persistentContext, TSVectorStat *stat, TSVecto static TSVectorStat * ts_accum(MemoryContext persistentContext, TSVectorStat *stat, Datum data) { - TSVector txt = DatumGetTSVector(data); - uint32 i, - nbit = 0, - offset; + TSVector txt = DatumGetTSVector(data); + uint32 i, + nbit = 0, + offset; if (stat == NULL) - { /* Init in first */ + { /* Init in first */ stat = MemoryContextAllocZero(persistentContext, sizeof(TSVectorStat)); stat->maxdepth = 1; } @@ -935,7 +936,7 @@ ts_accum(MemoryContext persistentContext, TSVectorStat *stat, Datum data) nbit = 1 << nbit; offset = (nbit - txt->size) / 2; - insertStatEntry( persistentContext, stat, txt, (nbit >> 1) - offset ); + insertStatEntry(persistentContext, stat, txt, (nbit >> 1) - offset); chooseNextStatEntry(persistentContext, stat, txt, 0, nbit, offset); return stat; @@ -945,22 +946,22 @@ static void ts_setup_firstcall(FunctionCallInfo fcinfo, FuncCallContext *funcctx, TSVectorStat *stat) { - TupleDesc tupdesc; - MemoryContext oldcontext; - StatEntry *node; + TupleDesc tupdesc; + MemoryContext oldcontext; + StatEntry *node; funcctx->user_fctx = (void *) stat; oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx); stat->stack = palloc0(sizeof(StatEntry *) * (stat->maxdepth + 1)); - stat->stackpos = 0; + stat->stackpos = 0; node = stat->root; /* find leftmost value */ for (;;) { - stat->stack[ stat->stackpos ] = node; + stat->stack[stat->stackpos] = node; if (node->left) { stat->stackpos++; @@ -984,14 +985,14 @@ ts_setup_firstcall(FunctionCallInfo fcinfo, FuncCallContext *funcctx, } static StatEntry * -walkStatEntryTree(TSVectorStat *stat) +walkStatEntryTree(TSVectorStat *stat) { - StatEntry *node = stat->stack[ stat->stackpos ]; + StatEntry *node = stat->stack[stat->stackpos]; - if ( node == NULL ) + if (node == NULL) return NULL; - if ( node->ndoc != 0 ) + if (node->ndoc != 0) { /* return entry itself: we already was at left sublink */ return node; @@ -1031,8 +1032,8 @@ walkStatEntryTree(TSVectorStat *stat) static Datum ts_process_call(FuncCallContext *funcctx) { - TSVectorStat *st; - StatEntry *entry; + TSVectorStat *st; + StatEntry *entry; st = (TSVectorStat *) funcctx->user_fctx; @@ -1164,7 +1165,7 @@ ts_stat1(PG_FUNCTION_ARGS) if (SRF_IS_FIRSTCALL()) { - TSVectorStat *stat; + TSVectorStat *stat; text *txt = PG_GETARG_TEXT_P(0); funcctx = SRF_FIRSTCALL_INIT(); @@ -1189,7 +1190,7 @@ ts_stat2(PG_FUNCTION_ARGS) if (SRF_IS_FIRSTCALL()) { - TSVectorStat *stat; + TSVectorStat *stat; text *txt = PG_GETARG_TEXT_P(0); text *ws = PG_GETARG_TEXT_P(1); diff --git a/src/backend/utils/adt/uuid.c b/src/backend/utils/adt/uuid.c index cd11c22c5e7..3c95bef6b5c 100644 --- a/src/backend/utils/adt/uuid.c +++ b/src/backend/utils/adt/uuid.c @@ -6,7 +6,7 @@ * Copyright (c) 2007-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/uuid.c,v 1.10 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/uuid.c,v 1.11 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -84,7 +84,7 @@ string_to_uuid(const char *source, pg_uuid_t *uuid) { const char *src = source; bool braces = false; - int i; + int i; if (src[0] == '{') { diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index 673dacbf457..c25385dee77 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.130 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varchar.c,v 1.131 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -595,7 +595,7 @@ varchar(PG_FUNCTION_ARGS) maxlen))); } - PG_RETURN_VARCHAR_P((VarChar *) cstring_to_text_with_len(s_data, + PG_RETURN_VARCHAR_P((VarChar *) cstring_to_text_with_len(s_data, maxmblen)); } diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 052d0578ac7..b9b54e6db63 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.170 2009/04/23 07:19:09 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.171 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -41,7 +41,7 @@ typedef struct int len2; /* Skip table for Boyer-Moore-Horspool search algorithm: */ int skiptablemask; /* mask for ANDing with skiptable subscripts */ - int skiptable[256]; /* skip distance for given mismatched char */ + int skiptable[256]; /* skip distance for given mismatched char */ } TextPositionState; #define DatumGetUnknownP(X) ((unknown *) PG_DETOAST_DATUM(X)) @@ -121,7 +121,7 @@ text_to_cstring(const text *t) if (tunpacked != t) pfree(tunpacked); - + return result; } @@ -150,7 +150,7 @@ text_to_cstring_buffer(const text *src, char *dst, size_t dst_len) dst_len--; if (dst_len >= src_len) dst_len = src_len; - else /* ensure truncation is encoding-safe */ + else /* ensure truncation is encoding-safe */ dst_len = pg_mbcliplen(VARDATA_ANY(srcunpacked), src_len, dst_len); memcpy(dst, VARDATA_ANY(srcunpacked), dst_len); dst[dst_len] = '\0'; @@ -186,10 +186,10 @@ byteain(PG_FUNCTION_ARGS) char *inputText = PG_GETARG_CSTRING(0); char *tp; char *rp; - int byte; + int byte; bytea *result; - for (byte = 0, tp = inputText; *tp != '\0'; byte++) + for (byte = 0, tp = inputText; *tp != '\0'; byte ++) { if (tp[0] != '\\') tp++; @@ -212,7 +212,8 @@ byteain(PG_FUNCTION_ARGS) } } - byte += VARHDRSZ; + byte +=VARHDRSZ; + result = (bytea *) palloc(byte); SET_VARSIZE(result, byte); @@ -228,10 +229,11 @@ byteain(PG_FUNCTION_ARGS) (tp[3] >= '0' && tp[3] <= '7')) { byte = VAL(tp[1]); - byte <<= 3; - byte += VAL(tp[2]); - byte <<= 3; - *rp++ = byte + VAL(tp[3]); + byte <<=3; + byte +=VAL(tp[2]); + byte <<=3; + *rp++ = byte +VAL(tp[3]); + tp += 4; } else if ((tp[0] == '\\') && @@ -920,23 +922,23 @@ text_position_setup(text *t1, text *t2, TextPositionState *state) * searched (t1) and the "needle" is the pattern being sought (t2). * * If the needle is empty or bigger than the haystack then there is no - * point in wasting cycles initializing the table. We also choose not - * to use B-M-H for needles of length 1, since the skip table can't - * possibly save anything in that case. + * point in wasting cycles initializing the table. We also choose not to + * use B-M-H for needles of length 1, since the skip table can't possibly + * save anything in that case. */ if (len1 >= len2 && len2 > 1) { - int searchlength = len1 - len2; - int skiptablemask; - int last; - int i; + int searchlength = len1 - len2; + int skiptablemask; + int last; + int i; /* * First we must determine how much of the skip table to use. The * declaration of TextPositionState allows up to 256 elements, but for * short search problems we don't really want to have to initialize so * many elements --- it would take too long in comparison to the - * actual search time. So we choose a useful skip table size based on + * actual search time. So we choose a useful skip table size based on * the haystack length minus the needle length. The closer the needle * length is to the haystack length the less useful skipping becomes. * @@ -968,10 +970,11 @@ text_position_setup(text *t1, text *t2, TextPositionState *state) state->skiptable[i] = len2; /* - * Now examine the needle. For each character except the last one, + * Now examine the needle. For each character except the last one, * set the corresponding table element to the appropriate skip * distance. Note that when two characters share the same skip table - * entry, the one later in the needle must determine the skip distance. + * entry, the one later in the needle must determine the skip + * distance. */ last = len2 - 1; @@ -1021,7 +1024,7 @@ text_position_next(int start_pos, TextPositionState *state) if (needle_len == 1) { /* No point in using B-M-H for a one-character needle */ - char nchar = *needle; + char nchar = *needle; hptr = &haystack[start_pos]; while (hptr < haystack_end) @@ -1047,18 +1050,19 @@ text_position_next(int start_pos, TextPositionState *state) p = hptr; while (*nptr == *p) { - /* Matched it all? If so, return 1-based position */ + /* Matched it all? If so, return 1-based position */ if (nptr == needle) return p - haystack + 1; nptr--, p--; } + /* * No match, so use the haystack char at hptr to decide how - * far to advance. If the needle had any occurrence of that + * far to advance. If the needle had any occurrence of that * character (or more precisely, one sharing the same * skiptable entry) before its last character, then we advance * far enough to align the last such needle character with - * that haystack position. Otherwise we can advance by the + * that haystack position. Otherwise we can advance by the * whole needle length. */ hptr += state->skiptable[(unsigned char) *hptr & skiptablemask]; @@ -1102,18 +1106,19 @@ text_position_next(int start_pos, TextPositionState *state) p = hptr; while (*nptr == *p) { - /* Matched it all? If so, return 1-based position */ + /* Matched it all? If so, return 1-based position */ if (nptr == needle) return p - haystack + 1; nptr--, p--; } + /* * No match, so use the haystack char at hptr to decide how - * far to advance. If the needle had any occurrence of that + * far to advance. If the needle had any occurrence of that * character (or more precisely, one sharing the same * skiptable entry) before its last character, then we advance * far enough to align the last such needle character with - * that haystack position. Otherwise we can advance by the + * that haystack position. Otherwise we can advance by the * whole needle length. */ hptr += state->skiptable[*hptr & skiptablemask]; @@ -1764,7 +1769,7 @@ byteaGetByte(PG_FUNCTION_ARGS) bytea *v = PG_GETARG_BYTEA_PP(0); int32 n = PG_GETARG_INT32(1); int len; - int byte; + int byte; len = VARSIZE_ANY_EXHDR(v); @@ -1795,7 +1800,7 @@ byteaGetBit(PG_FUNCTION_ARGS) int byteNo, bitNo; int len; - int byte; + int byte; len = VARSIZE_ANY_EXHDR(v); @@ -1810,7 +1815,7 @@ byteaGetBit(PG_FUNCTION_ARGS) byte = ((unsigned char *) VARDATA_ANY(v))[byteNo]; - if (byte & (1 << bitNo)) + if (byte &(1 << bitNo)) PG_RETURN_INT32(1); else PG_RETURN_INT32(0); diff --git a/src/backend/utils/adt/windowfuncs.c b/src/backend/utils/adt/windowfuncs.c index a7d890577c3..28a78475061 100644 --- a/src/backend/utils/adt/windowfuncs.c +++ b/src/backend/utils/adt/windowfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/windowfuncs.c,v 1.2 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/windowfuncs.c,v 1.3 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -21,7 +21,7 @@ */ typedef struct rank_context { - int64 rank; /* current rank */ + int64 rank; /* current rank */ } rank_context; /* @@ -29,15 +29,15 @@ typedef struct rank_context */ typedef struct { - int32 ntile; /* current result */ + int32 ntile; /* current result */ int64 rows_per_bucket; /* row number of current bucket */ - int64 boundary; /* how many rows should be in the bucket */ - int64 remainder; /* (total rows) % (bucket num) */ + int64 boundary; /* how many rows should be in the bucket */ + int64 remainder; /* (total rows) % (bucket num) */ } ntile_context; static bool rank_up(WindowObject winobj); static Datum leadlag_common(FunctionCallInfo fcinfo, - bool forward, bool withoffset, bool withdefault); + bool forward, bool withoffset, bool withdefault); /* @@ -81,7 +81,7 @@ rank_up(WindowObject winobj) Datum window_row_number(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); + WindowObject winobj = PG_WINDOW_OBJECT(); int64 curpos = WinGetCurrentPosition(winobj); WinSetMarkPosition(winobj, curpos); @@ -97,9 +97,9 @@ window_row_number(PG_FUNCTION_ARGS) Datum window_rank(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - rank_context *context; - bool up; + WindowObject winobj = PG_WINDOW_OBJECT(); + rank_context *context; + bool up; up = rank_up(winobj); context = (rank_context *) @@ -117,9 +117,9 @@ window_rank(PG_FUNCTION_ARGS) Datum window_dense_rank(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - rank_context *context; - bool up; + WindowObject winobj = PG_WINDOW_OBJECT(); + rank_context *context; + bool up; up = rank_up(winobj); context = (rank_context *) @@ -139,10 +139,10 @@ window_dense_rank(PG_FUNCTION_ARGS) Datum window_percent_rank(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - rank_context *context; - bool up; - int64 totalrows = WinGetPartitionRowCount(winobj); + WindowObject winobj = PG_WINDOW_OBJECT(); + rank_context *context; + bool up; + int64 totalrows = WinGetPartitionRowCount(winobj); Assert(totalrows > 0); @@ -168,10 +168,10 @@ window_percent_rank(PG_FUNCTION_ARGS) Datum window_cume_dist(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - rank_context *context; - bool up; - int64 totalrows = WinGetPartitionRowCount(winobj); + WindowObject winobj = PG_WINDOW_OBJECT(); + rank_context *context; + bool up; + int64 totalrows = WinGetPartitionRowCount(winobj); Assert(totalrows > 0); @@ -181,10 +181,10 @@ window_cume_dist(PG_FUNCTION_ARGS) if (up || context->rank == 1) { /* - * The current row is not peer to prior row or is just the first, - * so count up the number of rows that are peer to the current. + * The current row is not peer to prior row or is just the first, so + * count up the number of rows that are peer to the current. */ - int64 row; + int64 row; context->rank = WinGetCurrentPosition(winobj) + 1; @@ -210,8 +210,8 @@ window_cume_dist(PG_FUNCTION_ARGS) Datum window_ntile(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - ntile_context *context; + WindowObject winobj = PG_WINDOW_OBJECT(); + ntile_context *context; context = (ntile_context *) WinGetPartitionLocalMemory(winobj, sizeof(ntile_context)); @@ -227,16 +227,15 @@ window_ntile(PG_FUNCTION_ARGS) nbuckets = DatumGetInt32(WinGetFuncArgCurrent(winobj, 0, &isnull)); /* - * per spec: - * If NT is the null value, then the result is the null value. + * per spec: If NT is the null value, then the result is the null + * value. */ if (isnull) PG_RETURN_NULL(); /* - * per spec: - * If NT is less than or equal to 0 (zero), then an exception - * condition is raised. + * per spec: If NT is less than or equal to 0 (zero), then an + * exception condition is raised. */ if (nbuckets <= 0) ereport(ERROR, @@ -251,8 +250,8 @@ window_ntile(PG_FUNCTION_ARGS) else { /* - * If the total number is not divisible, add 1 row to - * leading buckets. + * If the total number is not divisible, add 1 row to leading + * buckets. */ context->remainder = total % nbuckets; if (context->remainder != 0) @@ -287,12 +286,12 @@ static Datum leadlag_common(FunctionCallInfo fcinfo, bool forward, bool withoffset, bool withdefault) { - WindowObject winobj = PG_WINDOW_OBJECT(); - int32 offset; - bool const_offset; - Datum result; - bool isnull; - bool isout; + WindowObject winobj = PG_WINDOW_OBJECT(); + int32 offset; + bool const_offset; + Datum result; + bool isnull; + bool isout; if (withoffset) { @@ -407,9 +406,9 @@ window_lead_with_offset_and_default(PG_FUNCTION_ARGS) Datum window_first_value(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - Datum result; - bool isnull; + WindowObject winobj = PG_WINDOW_OBJECT(); + Datum result; + bool isnull; result = WinGetFuncArgInFrame(winobj, 0, 0, WINDOW_SEEK_HEAD, true, @@ -428,9 +427,9 @@ window_first_value(PG_FUNCTION_ARGS) Datum window_last_value(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - Datum result; - bool isnull; + WindowObject winobj = PG_WINDOW_OBJECT(); + Datum result; + bool isnull; result = WinGetFuncArgInFrame(winobj, 0, 0, WINDOW_SEEK_TAIL, true, @@ -449,11 +448,11 @@ window_last_value(PG_FUNCTION_ARGS) Datum window_nth_value(PG_FUNCTION_ARGS) { - WindowObject winobj = PG_WINDOW_OBJECT(); - bool const_offset; - Datum result; - bool isnull; - int32 nth; + WindowObject winobj = PG_WINDOW_OBJECT(); + bool const_offset; + Datum result; + bool isnull; + int32 nth; nth = DatumGetInt32(WinGetFuncArgCurrent(winobj, 1, &isnull)); if (isnull) diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 18f209489ea..b92d41b93cc 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.91 2009/06/10 03:44:35 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/xml.c,v 1.92 2009/06/11 14:49:04 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -79,8 +79,8 @@ /* GUC variables */ -int xmlbinary; -int xmloption; +int xmlbinary; +int xmloption; #ifdef USE_LIBXML @@ -100,17 +100,16 @@ static void *xml_palloc(size_t size); static void *xml_repalloc(void *ptr, size_t size); static void xml_pfree(void *ptr); static char *xml_pstrdup(const char *string); - -#endif /* USE_LIBXMLCONTEXT */ +#endif /* USE_LIBXMLCONTEXT */ static void xml_init(void); static xmlChar *xml_text2xmlChar(text *in); -static int parse_xml_decl(const xmlChar * str, size_t *lenp, - xmlChar ** version, xmlChar ** encoding, int *standalone); -static bool print_xml_decl(StringInfo buf, const xmlChar * version, +static int parse_xml_decl(const xmlChar *str, size_t *lenp, + xmlChar **version, xmlChar **encoding, int *standalone); +static bool print_xml_decl(StringInfo buf, const xmlChar *version, pg_enc encoding, int standalone); static xmlDocPtr xml_parse(text *data, XmlOptionType xmloption_arg, - bool preserve_whitespace, xmlChar * encoding); + bool preserve_whitespace, xmlChar *encoding); static text *xml_xmlnodetoxmltype(xmlNodePtr cur); #endif /* USE_LIBXML */ @@ -587,7 +586,7 @@ xmlelement(XmlExprState *xmlExpr, ExprContext *econtext) if (!isnull) { str = map_sql_value_to_xml_value(value, - exprType((Node *) e->expr), true); + exprType((Node *) e->expr), true); arg_strings = lappend(arg_strings, str); } } @@ -597,42 +596,42 @@ xmlelement(XmlExprState *xmlExpr, ExprContext *econtext) PG_TRY(); { - buf = xmlBufferCreate(); - if (!buf) - xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, - "could not allocate xmlBuffer"); - writer = xmlNewTextWriterMemory(buf, 0); - if (!writer) - xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, - "could not allocate xmlTextWriter"); + buf = xmlBufferCreate(); + if (!buf) + xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, + "could not allocate xmlBuffer"); + writer = xmlNewTextWriterMemory(buf, 0); + if (!writer) + xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, + "could not allocate xmlTextWriter"); - xmlTextWriterStartElement(writer, (xmlChar *) xexpr->name); + xmlTextWriterStartElement(writer, (xmlChar *) xexpr->name); - forboth(arg, named_arg_strings, narg, xexpr->arg_names) - { - char *str = (char *) lfirst(arg); - char *argname = strVal(lfirst(narg)); + forboth(arg, named_arg_strings, narg, xexpr->arg_names) + { + char *str = (char *) lfirst(arg); + char *argname = strVal(lfirst(narg)); - if (str) - xmlTextWriterWriteAttribute(writer, - (xmlChar *) argname, - (xmlChar *) str); - } + if (str) + xmlTextWriterWriteAttribute(writer, + (xmlChar *) argname, + (xmlChar *) str); + } - foreach(arg, arg_strings) - { - char *str = (char *) lfirst(arg); + foreach(arg, arg_strings) + { + char *str = (char *) lfirst(arg); - xmlTextWriterWriteRaw(writer, (xmlChar *) str); - } + xmlTextWriterWriteRaw(writer, (xmlChar *) str); + } - xmlTextWriterEndElement(writer); + xmlTextWriterEndElement(writer); - /* we MUST do this now to flush data out to the buffer ... */ - xmlFreeTextWriter(writer); - writer = NULL; + /* we MUST do this now to flush data out to the buffer ... */ + xmlFreeTextWriter(writer); + writer = NULL; - result = xmlBuffer_to_xmltype(buf); + result = xmlBuffer_to_xmltype(buf); } PG_CATCH(); { @@ -888,7 +887,7 @@ xml_init(void) resetStringInfo(xml_err_buf); /* - * We re-establish the error callback function every time. This makes + * We re-establish the error callback function every time. This makes * it safe for other subsystems (PL/Perl, say) to also use libxml with * their own callbacks ... so long as they likewise set up the * callbacks on every use. It's cheap enough to not be worth worrying @@ -930,7 +929,7 @@ xml_init(void) static xmlChar * xml_pnstrdup(const xmlChar *str, size_t len) { - xmlChar *result; + xmlChar *result; result = (xmlChar *) palloc((len + 1) * sizeof(xmlChar)); memcpy(result, str, len * sizeof(xmlChar)); @@ -945,8 +944,8 @@ xml_pnstrdup(const xmlChar *str, size_t len) * Result is 0 if OK, an error code if not. */ static int -parse_xml_decl(const xmlChar * str, size_t *lenp, - xmlChar ** version, xmlChar ** encoding, int *standalone) +parse_xml_decl(const xmlChar *str, size_t *lenp, + xmlChar **version, xmlChar **encoding, int *standalone) { const xmlChar *p; const xmlChar *save_p; @@ -1103,7 +1102,7 @@ finished: * which is the default version specified in SQL:2003. */ static bool -print_xml_decl(StringInfo buf, const xmlChar * version, +print_xml_decl(StringInfo buf, const xmlChar *version, pg_enc encoding, int standalone) { xml_init(); /* why is this here? */ @@ -1153,7 +1152,7 @@ print_xml_decl(StringInfo buf, const xmlChar * version, */ static xmlDocPtr xml_parse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace, - xmlChar * encoding) + xmlChar *encoding) { int32 len; xmlChar *string; @@ -1183,51 +1182,51 @@ xml_parse(text *data, XmlOptionType xmloption_arg, bool preserve_whitespace, /* Use a TRY block to ensure the ctxt is released */ PG_TRY(); { - if (xmloption_arg == XMLOPTION_DOCUMENT) - { - /* - * Note, that here we try to apply DTD defaults - * (XML_PARSE_DTDATTR) according to SQL/XML:10.16.7.d: 'Default - * values defined by internal DTD are applied'. As for external - * DTDs, we try to support them too, (see SQL/XML:10.16.7.e) - */ - doc = xmlCtxtReadDoc(ctxt, utf8string, - NULL, - "UTF-8", - XML_PARSE_NOENT | XML_PARSE_DTDATTR - | (preserve_whitespace ? 0 : XML_PARSE_NOBLANKS)); - if (doc == NULL) - xml_ereport(ERROR, ERRCODE_INVALID_XML_DOCUMENT, - "invalid XML document"); - } - else - { - int res_code; - size_t count; - xmlChar *version = NULL; - int standalone = -1; - - res_code = parse_xml_decl(utf8string, - &count, &version, NULL, &standalone); - if (res_code != 0) - xml_ereport_by_code(ERROR, ERRCODE_INVALID_XML_CONTENT, - "invalid XML content: invalid XML declaration", - res_code); - - doc = xmlNewDoc(version); - Assert(doc->encoding == NULL); - doc->encoding = xmlStrdup((const xmlChar *) "UTF-8"); - doc->standalone = standalone; - - res_code = xmlParseBalancedChunkMemory(doc, NULL, NULL, 0, - utf8string + count, NULL); - if (res_code != 0) + if (xmloption_arg == XMLOPTION_DOCUMENT) { - xmlFreeDoc(doc); - xml_ereport(ERROR, ERRCODE_INVALID_XML_CONTENT, - "invalid XML content"); + /* + * Note, that here we try to apply DTD defaults + * (XML_PARSE_DTDATTR) according to SQL/XML:10.16.7.d: 'Default + * values defined by internal DTD are applied'. As for external + * DTDs, we try to support them too, (see SQL/XML:10.16.7.e) + */ + doc = xmlCtxtReadDoc(ctxt, utf8string, + NULL, + "UTF-8", + XML_PARSE_NOENT | XML_PARSE_DTDATTR + | (preserve_whitespace ? 0 : XML_PARSE_NOBLANKS)); + if (doc == NULL) + xml_ereport(ERROR, ERRCODE_INVALID_XML_DOCUMENT, + "invalid XML document"); + } + else + { + int res_code; + size_t count; + xmlChar *version = NULL; + int standalone = -1; + + res_code = parse_xml_decl(utf8string, + &count, &version, NULL, &standalone); + if (res_code != 0) + xml_ereport_by_code(ERROR, ERRCODE_INVALID_XML_CONTENT, + "invalid XML content: invalid XML declaration", + res_code); + + doc = xmlNewDoc(version); + Assert(doc->encoding == NULL); + doc->encoding = xmlStrdup((const xmlChar *) "UTF-8"); + doc->standalone = standalone; + + res_code = xmlParseBalancedChunkMemory(doc, NULL, NULL, 0, + utf8string + count, NULL); + if (res_code != 0) + { + xmlFreeDoc(doc); + xml_ereport(ERROR, ERRCODE_INVALID_XML_CONTENT, + "invalid XML content"); + } } - } } PG_CATCH(); { @@ -1304,8 +1303,7 @@ xml_pstrdup(const char *string) { return MemoryContextStrdup(LibxmlContext, string); } - -#endif /* USE_LIBXMLCONTEXT */ +#endif /* USE_LIBXMLCONTEXT */ /* @@ -1529,7 +1527,7 @@ map_sql_identifier_to_xml_name(char *ident, bool fully_escaped, static char * unicode_to_sqlchar(pg_wchar c) { - unsigned char utf8string[5]; /* need room for trailing zero */ + unsigned char utf8string[5]; /* need room for trailing zero */ char *result; memset(utf8string, 0, sizeof(utf8string)); @@ -1537,7 +1535,7 @@ unicode_to_sqlchar(pg_wchar c) result = (char *) pg_do_encoding_conversion(utf8string, pg_encoding_mblen(PG_UTF8, - (char *) utf8string), + (char *) utf8string), PG_UTF8, GetDatabaseEncoding()); /* if pg_do_encoding_conversion didn't strdup, we must */ @@ -1585,8 +1583,8 @@ map_xml_name_to_sql_identifier(char *name) * * When xml_escape_strings is true, then certain characters in string * values are replaced by entity references (< etc.), as specified - * in SQL/XML:2003 section 9.16 GR 8) ii). This is normally what is - * wanted. The false case is mainly useful when the resulting value + * in SQL/XML:2003 section 9.16 GR 8) ii). This is normally what is + * wanted. The false case is mainly useful when the resulting value * is used with xmlTextWriterWriteAttribute() to write out an * attribute, because that function does the escaping itself. The SQL * standard of 2003 is somewhat buggy in this regard, so we do our @@ -1750,10 +1748,10 @@ map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings) if (xmlbinary == XMLBINARY_BASE64) xmlTextWriterWriteBase64(writer, VARDATA_ANY(bstr), - 0, VARSIZE_ANY_EXHDR(bstr)); + 0, VARSIZE_ANY_EXHDR(bstr)); else xmlTextWriterWriteBinHex(writer, VARDATA_ANY(bstr), - 0, VARSIZE_ANY_EXHDR(bstr)); + 0, VARSIZE_ANY_EXHDR(bstr)); /* we MUST do this now to flush data out to the buffer */ xmlFreeTextWriter(writer); @@ -3194,7 +3192,7 @@ SPI_sql_row_to_xmlelement(int rownum, StringInfo result, char *tablename, appendStringInfo(result, " <%s>%s</%s>\n", colname, map_sql_value_to_xml_value(colval, - SPI_gettypeid(SPI_tuptable->tupdesc, i), true), + SPI_gettypeid(SPI_tuptable->tupdesc, i), true), colname); } @@ -3349,7 +3347,7 @@ xpath(PG_FUNCTION_ARGS) memcpy(string, datastr, len); string[len] = '\0'; - xpath_expr = (xmlChar *) palloc((xpath_len +1) * sizeof(xmlChar)); + xpath_expr = (xmlChar *) palloc((xpath_len + 1) * sizeof(xmlChar)); memcpy(xpath_expr, VARDATA(xpath_expr_text), xpath_len); xpath_expr[xpath_len] = '\0'; @@ -3358,81 +3356,81 @@ xpath(PG_FUNCTION_ARGS) PG_TRY(); { - /* - * redundant XML parsing (two parsings for the same value during one - * command execution are possible) - */ - ctxt = xmlNewParserCtxt(); - if (ctxt == NULL) - xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, - "could not allocate parser context"); - doc = xmlCtxtReadMemory(ctxt, (char *) string, len, NULL, NULL, 0); - if (doc == NULL) - xml_ereport(ERROR, ERRCODE_INVALID_XML_DOCUMENT, - "could not parse XML document"); - xpathctx = xmlXPathNewContext(doc); - if (xpathctx == NULL) - xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, - "could not allocate XPath context"); - xpathctx->node = xmlDocGetRootElement(doc); - if (xpathctx->node == NULL) - xml_ereport(ERROR, ERRCODE_INTERNAL_ERROR, - "could not find root XML element"); - - /* register namespaces, if any */ - if (ns_count > 0) - { - for (i = 0; i < ns_count; i++) + /* + * redundant XML parsing (two parsings for the same value during one + * command execution are possible) + */ + ctxt = xmlNewParserCtxt(); + if (ctxt == NULL) + xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, + "could not allocate parser context"); + doc = xmlCtxtReadMemory(ctxt, (char *) string, len, NULL, NULL, 0); + if (doc == NULL) + xml_ereport(ERROR, ERRCODE_INVALID_XML_DOCUMENT, + "could not parse XML document"); + xpathctx = xmlXPathNewContext(doc); + if (xpathctx == NULL) + xml_ereport(ERROR, ERRCODE_OUT_OF_MEMORY, + "could not allocate XPath context"); + xpathctx->node = xmlDocGetRootElement(doc); + if (xpathctx->node == NULL) + xml_ereport(ERROR, ERRCODE_INTERNAL_ERROR, + "could not find root XML element"); + + /* register namespaces, if any */ + if (ns_count > 0) { - char *ns_name; - char *ns_uri; - - if (ns_names_uris_nulls[i * 2] || - ns_names_uris_nulls[i * 2 + 1]) - ereport(ERROR, - (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), - errmsg("neither namespace name nor URI may be null"))); - ns_name = TextDatumGetCString(ns_names_uris[i * 2]); - ns_uri = TextDatumGetCString(ns_names_uris[i * 2 + 1]); - if (xmlXPathRegisterNs(xpathctx, - (xmlChar *) ns_name, - (xmlChar *) ns_uri) != 0) - ereport(ERROR, /* is this an internal error??? */ - (errmsg("could not register XML namespace with name \"%s\" and URI \"%s\"", - ns_name, ns_uri))); + for (i = 0; i < ns_count; i++) + { + char *ns_name; + char *ns_uri; + + if (ns_names_uris_nulls[i * 2] || + ns_names_uris_nulls[i * 2 + 1]) + ereport(ERROR, + (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), + errmsg("neither namespace name nor URI may be null"))); + ns_name = TextDatumGetCString(ns_names_uris[i * 2]); + ns_uri = TextDatumGetCString(ns_names_uris[i * 2 + 1]); + if (xmlXPathRegisterNs(xpathctx, + (xmlChar *) ns_name, + (xmlChar *) ns_uri) != 0) + ereport(ERROR, /* is this an internal error??? */ + (errmsg("could not register XML namespace with name \"%s\" and URI \"%s\"", + ns_name, ns_uri))); + } } - } - xpathcomp = xmlXPathCompile(xpath_expr); - if (xpathcomp == NULL) /* TODO: show proper XPath error details */ - xml_ereport(ERROR, ERRCODE_INTERNAL_ERROR, - "invalid XPath expression"); + xpathcomp = xmlXPathCompile(xpath_expr); + if (xpathcomp == NULL) /* TODO: show proper XPath error details */ + xml_ereport(ERROR, ERRCODE_INTERNAL_ERROR, + "invalid XPath expression"); - xpathobj = xmlXPathCompiledEval(xpathcomp, xpathctx); - if (xpathobj == NULL) /* TODO: reason? */ - xml_ereport(ERROR, ERRCODE_INTERNAL_ERROR, - "could not create XPath object"); + xpathobj = xmlXPathCompiledEval(xpathcomp, xpathctx); + if (xpathobj == NULL) /* TODO: reason? */ + xml_ereport(ERROR, ERRCODE_INTERNAL_ERROR, + "could not create XPath object"); - /* return empty array in cases when nothing is found */ - if (xpathobj->nodesetval == NULL) - res_nitems = 0; - else - res_nitems = xpathobj->nodesetval->nodeNr; + /* return empty array in cases when nothing is found */ + if (xpathobj->nodesetval == NULL) + res_nitems = 0; + else + res_nitems = xpathobj->nodesetval->nodeNr; - if (res_nitems) - { - for (i = 0; i < xpathobj->nodesetval->nodeNr; i++) + if (res_nitems) { - Datum elem; - bool elemisnull = false; + for (i = 0; i < xpathobj->nodesetval->nodeNr; i++) + { + Datum elem; + bool elemisnull = false; - elem = PointerGetDatum(xml_xmlnodetoxmltype(xpathobj->nodesetval->nodeTab[i])); - astate = accumArrayResult(astate, elem, - elemisnull, XMLOID, - CurrentMemoryContext); + elem = PointerGetDatum(xml_xmlnodetoxmltype(xpathobj->nodesetval->nodeTab[i])); + astate = accumArrayResult(astate, elem, + elemisnull, XMLOID, + CurrentMemoryContext); + } } } - } PG_CATCH(); { if (xpathobj) diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index a29c5c91aa9..6fd672435fe 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/catcache.c,v 1.146 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/catcache.c,v 1.147 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -104,30 +104,37 @@ GetCCHashEqFuncs(Oid keytype, PGFunction *hashfunc, RegProcedure *eqfunc) { case BOOLOID: *hashfunc = hashchar; + *eqfunc = F_BOOLEQ; break; case CHAROID: *hashfunc = hashchar; + *eqfunc = F_CHAREQ; break; case NAMEOID: *hashfunc = hashname; + *eqfunc = F_NAMEEQ; break; case INT2OID: *hashfunc = hashint2; + *eqfunc = F_INT2EQ; break; case INT2VECTOROID: *hashfunc = hashint2vector; + *eqfunc = F_INT2VECTOREQ; break; case INT4OID: *hashfunc = hashint4; + *eqfunc = F_INT4EQ; break; case TEXTOID: *hashfunc = hashtext; + *eqfunc = F_TEXTEQ; break; case OIDOID: @@ -140,15 +147,18 @@ GetCCHashEqFuncs(Oid keytype, PGFunction *hashfunc, RegProcedure *eqfunc) case REGCONFIGOID: case REGDICTIONARYOID: *hashfunc = hashoid; + *eqfunc = F_OIDEQ; break; case OIDVECTOROID: *hashfunc = hashoidvector; + *eqfunc = F_OIDVECTOREQ; break; default: elog(FATAL, "type %u not supported as catcache key", keytype); *hashfunc = NULL; /* keep compiler quiet */ + *eqfunc = InvalidOid; break; } diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index 398eb39dc58..5fac924207d 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -80,7 +80,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.88 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.89 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -403,7 +403,7 @@ ProcessInvalidationMessages(InvalidationListHeader *hdr, */ static void ProcessInvalidationMessagesMulti(InvalidationListHeader *hdr, - void (*func) (const SharedInvalidationMessage *msgs, int n)) + void (*func) (const SharedInvalidationMessage *msgs, int n)) { ProcessMessageListMulti(hdr->cclist, func(msgs, n)); ProcessMessageListMulti(hdr->rclist, func(msgs, n)); @@ -442,9 +442,9 @@ RegisterRelcacheInvalidation(Oid dbId, Oid relId) /* * Most of the time, relcache invalidation is associated with system - * catalog updates, but there are a few cases where it isn't. Quick - * hack to ensure that the next CommandCounterIncrement() will think - * that we need to do CommandEndInvalidationMessages(). + * catalog updates, but there are a few cases where it isn't. Quick hack + * to ensure that the next CommandCounterIncrement() will think that we + * need to do CommandEndInvalidationMessages(). */ (void) GetCurrentCommandId(true); @@ -1015,7 +1015,7 @@ CommandEndInvalidationMessages(void) * Prepare for invalidation messages for nontransactional updates. * * A nontransactional invalidation is one that must be sent whether or not - * the current transaction eventually commits. We arrange for all invals + * the current transaction eventually commits. We arrange for all invals * queued between this call and EndNonTransactionalInvalidation() to be sent * immediately when the latter is called. * @@ -1069,10 +1069,10 @@ EndNonTransactionalInvalidation(void) Assert(transInvalInfo->PriorCmdInvalidMsgs.rclist == NULL); /* - * At present, this function is only used for CTID-changing updates; - * since the relcache init file doesn't store any tuple CTIDs, we - * don't have to invalidate it. That might not be true forever - * though, in which case we'd need code similar to AtEOXact_Inval. + * At present, this function is only used for CTID-changing updates; since + * the relcache init file doesn't store any tuple CTIDs, we don't have to + * invalidate it. That might not be true forever though, in which case + * we'd need code similar to AtEOXact_Inval. */ /* Send out the invals */ diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index b3ec6ad3410..8247516bd14 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.161 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/lsyscache.c,v 1.162 2009/06/11 14:49:05 momjian Exp $ * * NOTES * Eventually, the index information should go through here, too. @@ -239,6 +239,7 @@ get_compare_function_for_ordering_op(Oid opno, Oid *cmpfunc, bool *reverse) opcintype, opcintype, BTORDER_PROC); + if (!OidIsValid(*cmpfunc)) /* should not happen */ elog(ERROR, "missing support function %d(%u,%u) in opfamily %u", BTORDER_PROC, opcintype, opcintype, opfamily); @@ -248,6 +249,7 @@ get_compare_function_for_ordering_op(Oid opno, Oid *cmpfunc, bool *reverse) /* ensure outputs are set on failure */ *cmpfunc = InvalidOid; + *reverse = false; return false; } diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index 6c0f90f1adb..437b7d1114e 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -12,7 +12,7 @@ * * The plan cache manager itself is principally responsible for tracking * whether cached plans should be invalidated because of schema changes in - * the objects they depend on. When (and if) the next demand for a cached + * the objects they depend on. When (and if) the next demand for a cached * plan occurs, the query will be replanned. Note that this could result * in an error, for example if a column referenced by the query is no * longer present. The creator of a cached plan can specify whether it @@ -21,7 +21,7 @@ * caller to notice changes and cope with them. * * Currently, we track exactly the dependencies of plans on relations and - * user-defined functions. On relcache invalidation events or pg_proc + * user-defined functions. On relcache invalidation events or pg_proc * syscache invalidation events, we invalidate just those plans that depend * on the particular object being modified. (Note: this scheme assumes * that any table modification that requires replanning will generate a @@ -35,7 +35,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/plancache.c,v 1.26 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/plancache.c,v 1.27 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -120,7 +120,7 @@ CreateCachedPlan(Node *raw_parse_tree, MemoryContext source_context; MemoryContext oldcxt; - Assert(query_string != NULL); /* required as of 8.4 */ + Assert(query_string != NULL); /* required as of 8.4 */ /* * Make a dedicated memory context for the CachedPlanSource and its @@ -220,7 +220,7 @@ FastCreateCachedPlan(Node *raw_parse_tree, OverrideSearchPath *search_path; MemoryContext oldcxt; - Assert(query_string != NULL); /* required as of 8.4 */ + Assert(query_string != NULL); /* required as of 8.4 */ /* * Fetch current search_path into given context, but do any recalculation @@ -475,8 +475,8 @@ RevalidateCachedPlan(CachedPlanSource *plansource, bool useResOwner) /* * If a snapshot is already set (the normal case), we can just use - * that for parsing/planning. But if it isn't, install one. Note: - * no point in checking whether parse analysis requires a snapshot; + * that for parsing/planning. But if it isn't, install one. Note: no + * point in checking whether parse analysis requires a snapshot; * utility commands don't have invalidatable plans, so we'd not get * here for such a command. */ @@ -609,8 +609,8 @@ CachedPlanIsValid(CachedPlanSource *plansource) Assert(plan->refcount > 0); /* - * Although we don't want to acquire locks here, it still seems - * useful to check for expiration of a transient plan. + * Although we don't want to acquire locks here, it still seems useful + * to check for expiration of a transient plan. */ if (TransactionIdIsValid(plan->saved_xmin) && !TransactionIdEquals(plan->saved_xmin, TransactionXmin)) @@ -990,7 +990,7 @@ PlanCacheFuncCallback(Datum arg, int cacheid, ItemPointer tuplePtr) { /* Invalidate the plan! */ plan->dead = true; - break; /* out of invalItems scan */ + break; /* out of invalItems scan */ } } if (plan->dead) diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index ae6fcea7e67..775865d5696 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.286 2009/03/31 22:12:48 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.287 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1129,7 +1129,7 @@ IndexSupportInitialize(oidvector *indclass, * Note there is no provision for flushing the cache. This is OK at the * moment because there is no way to ALTER any interesting properties of an * existing opclass --- all you can do is drop it, which will result in - * a useless but harmless dead entry in the cache. To support altering + * a useless but harmless dead entry in the cache. To support altering * opclass membership (not the same as opfamily membership!), we'd need to * be able to flush this cache as well as the contents of relcache entries * for indexes. @@ -1196,10 +1196,10 @@ LookupOpclassInfo(Oid operatorClassOid, /* * When testing for cache-flush hazards, we intentionally disable the - * operator class cache and force reloading of the info on each call. - * This is helpful because we want to test the case where a cache flush - * occurs while we are loading the info, and it's very hard to provoke - * that if this happens only once per opclass per backend. + * operator class cache and force reloading of the info on each call. This + * is helpful because we want to test the case where a cache flush occurs + * while we are loading the info, and it's very hard to provoke that if + * this happens only once per opclass per backend. */ #if defined(CLOBBER_CACHE_ALWAYS) opcentry->valid = false; @@ -1402,8 +1402,8 @@ formrdesc(const char *relationName, Oid relationReltype, relation->rd_rel->relisshared = false; /* - * Likewise, we must know if a relation is temp ... but formrdesc is - * not used for any temp relations. + * Likewise, we must know if a relation is temp ... but formrdesc is not + * used for any temp relations. */ relation->rd_rel->relistemp = false; @@ -1657,6 +1657,7 @@ RelationReloadIndexInfo(Relation relation) heap_freetuple(pg_class_tuple); /* We must recalculate physical address in case it changed */ RelationInitPhysicalAddr(relation); + /* * Must reset targblock, fsm_nblocks and vm_nblocks in case rel was * truncated @@ -2792,7 +2793,7 @@ AttrDefaultFetch(Relation relation) RelationGetRelationName(relation)); else attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, - TextDatumGetCString(val)); + TextDatumGetCString(val)); break; } diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 4de61e7f94e..922c4a626f7 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/cache/syscache.c,v 1.119 2009/01/01 17:23:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/cache/syscache.c,v 1.120 2009/06/11 14:49:05 momjian Exp $ * * NOTES * These routines allow the parser/planner/executor to perform @@ -368,7 +368,7 @@ static const struct cachedesc cacheinfo[] = { }, 256 }, - {ForeignDataWrapperRelationId, /* FOREIGNDATAWRAPPERNAME */ + {ForeignDataWrapperRelationId, /* FOREIGNDATAWRAPPERNAME */ ForeignDataWrapperNameIndexId, 0, 1, @@ -380,7 +380,7 @@ static const struct cachedesc cacheinfo[] = { }, 8 }, - {ForeignDataWrapperRelationId, /* FOREIGNDATAWRAPPEROID */ + {ForeignDataWrapperRelationId, /* FOREIGNDATAWRAPPEROID */ ForeignDataWrapperOidIndexId, 0, 1, @@ -392,7 +392,7 @@ static const struct cachedesc cacheinfo[] = { }, 8 }, - {ForeignServerRelationId, /* FOREIGNSERVERNAME */ + {ForeignServerRelationId, /* FOREIGNSERVERNAME */ ForeignServerNameIndexId, 0, 1, @@ -404,7 +404,7 @@ static const struct cachedesc cacheinfo[] = { }, 32 }, - {ForeignServerRelationId, /* FOREIGNSERVEROID */ + {ForeignServerRelationId, /* FOREIGNSERVEROID */ ForeignServerOidIndexId, 0, 1, @@ -728,7 +728,7 @@ static const struct cachedesc cacheinfo[] = { }, 1024 }, - {UserMappingRelationId, /* USERMAPPINGOID */ + {UserMappingRelationId, /* USERMAPPINGOID */ UserMappingOidIndexId, 0, 1, @@ -740,7 +740,7 @@ static const struct cachedesc cacheinfo[] = { }, 128 }, - {UserMappingRelationId, /* USERMAPPINGUSERSERVER */ + {UserMappingRelationId, /* USERMAPPINGUSERSERVER */ UserMappingUserServerIndexId, 0, 2, diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index d93aaeb54d6..ba529002f01 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -42,7 +42,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.214 2009/06/04 18:33:07 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.215 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -92,7 +92,7 @@ int Log_destination = LOG_DESTINATION_STDERR; /* * Max string length to send to syslog(). Note that this doesn't count the * sequence-number prefix we add, and of course it doesn't count the prefix - * added by syslog itself. On many implementations it seems that the hard + * added by syslog itself. On many implementations it seems that the hard * limit is approximately 2K bytes including both those prefixes. */ #ifndef PG_SYSLOG_LIMIT @@ -298,8 +298,8 @@ errstart(int elevel, const char *filename, int lineno, MemoryContextReset(ErrorContext); /* - * Infinite error recursion might be due to something broken - * in a context traceback routine. Abandon them too. We also abandon + * Infinite error recursion might be due to something broken in a + * context traceback routine. Abandon them too. We also abandon * attempting to print the error statement (which, if long, could * itself be the source of the recursive failure). */ @@ -785,7 +785,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; @@ -850,7 +850,7 @@ errdetail_log(const char *fmt,...) */ 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; @@ -1637,7 +1637,7 @@ setup_formatted_log_time(void) tz = log_timezone ? log_timezone : gmt_timezone; pg_strftime(formatted_log_time, FORMATTED_TS_LEN, - /* leave room for milliseconds... */ + /* leave room for milliseconds... */ "%Y-%m-%d %H:%M:%S %Z", pg_localtime(&stamp_time, tz)); @@ -1852,7 +1852,7 @@ static void write_csvlog(ErrorData *edata) { StringInfoData buf; - bool print_stmt = false; + bool print_stmt = false; /* static counter for line numbers */ static long log_line_number = 0; @@ -1934,7 +1934,7 @@ write_csvlog(ErrorData *edata) psdisp = get_ps_display(&displen); appendStringInfo(&msgbuf, "%.*s", displen, psdisp); appendCSVLiteral(&buf, msgbuf.data); - + pfree(msgbuf.data); } appendStringInfoChar(&buf, ','); @@ -2006,7 +2006,7 @@ write_csvlog(ErrorData *edata) /* file error location */ if (Log_error_verbosity >= PGERROR_VERBOSE) { - StringInfoData msgbuf; + StringInfoData msgbuf; initStringInfo(&msgbuf); diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c index 125e8804085..8b819df279c 100644 --- a/src/backend/utils/fmgr/dfmgr.c +++ b/src/backend/utils/fmgr/dfmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.98 2009/01/01 17:23:51 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.99 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -73,7 +73,7 @@ char *Dynamic_library_path; static void *internal_load_library(const char *libname); static void incompatible_module_error(const char *libname, - const Pg_magic_struct *module_magic_data); + const Pg_magic_struct *module_magic_data); static void internal_unload_library(const char *libname); static bool file_exists(const char *name); static char *expand_dynamic_library_name(const char *name); @@ -301,7 +301,7 @@ static void incompatible_module_error(const char *libname, const Pg_magic_struct *module_magic_data) { - StringInfoData details; + StringInfoData details; /* * If the version doesn't match, just report that, because the rest of the @@ -311,11 +311,11 @@ incompatible_module_error(const char *libname, ereport(ERROR, (errmsg("incompatible library \"%s\": version mismatch", libname), - errdetail("Server is version %d.%d, library is version %d.%d.", - magic_data.version / 100, - magic_data.version % 100, - module_magic_data->version / 100, - module_magic_data->version % 100))); + errdetail("Server is version %d.%d, library is version %d.%d.", + magic_data.version / 100, + magic_data.version % 100, + module_magic_data->version / 100, + module_magic_data->version % 100))); /* * Otherwise, spell out which fields don't agree. @@ -357,7 +357,7 @@ incompatible_module_error(const char *libname, if (details.len) appendStringInfoChar(&details, '\n'); appendStringInfo(&details, - _("Server has FLOAT4PASSBYVAL = %s, library has %s."), + _("Server has FLOAT4PASSBYVAL = %s, library has %s."), magic_data.float4byval ? "true" : "false", module_magic_data->float4byval ? "true" : "false"); } @@ -366,14 +366,14 @@ incompatible_module_error(const char *libname, if (details.len) appendStringInfoChar(&details, '\n'); appendStringInfo(&details, - _("Server has FLOAT8PASSBYVAL = %s, library has %s."), + _("Server has FLOAT8PASSBYVAL = %s, library has %s."), magic_data.float8byval ? "true" : "false", module_magic_data->float8byval ? "true" : "false"); } if (details.len == 0) appendStringInfo(&details, - _("Magic block has unexpected length or padding difference.")); + _("Magic block has unexpected length or padding difference.")); ereport(ERROR, (errmsg("incompatible library \"%s\": magic block mismatch", diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index 34777b7606b..1256e7c88d0 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.125 2009/01/07 20:38:56 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.126 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -199,7 +199,7 @@ fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, finfo->fn_nargs = fbp->nargs; finfo->fn_strict = fbp->strict; finfo->fn_retset = fbp->retset; - finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ + finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ finfo->fn_addr = fbp->func; finfo->fn_oid = functionId; return; @@ -219,23 +219,23 @@ fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, /* * If it has prosecdef set, or non-null proconfig, use - * fmgr_security_definer call handler --- unless we are being called - * again by fmgr_security_definer. + * fmgr_security_definer call handler --- unless we are being called again + * by fmgr_security_definer. * * When using fmgr_security_definer, function stats tracking is always - * disabled at the outer level, and instead we set the flag properly - * in fmgr_security_definer's private flinfo and implement the tracking + * disabled at the outer level, and instead we set the flag properly in + * fmgr_security_definer's private flinfo and implement the tracking * inside fmgr_security_definer. This loses the ability to charge the * overhead of fmgr_security_definer to the function, but gains the - * ability to set the track_functions GUC as a local GUC parameter of - * an interesting function and have the right things happen. + * ability to set the track_functions GUC as a local GUC parameter of an + * interesting function and have the right things happen. */ if (!ignore_security && (procedureStruct->prosecdef || !heap_attisnull(procedureTuple, Anum_pg_proc_proconfig))) { finfo->fn_addr = fmgr_security_definer; - finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ + finfo->fn_stats = TRACK_FUNC_ALL; /* ie, never track */ finfo->fn_oid = functionId; ReleaseSysCache(procedureTuple); return; @@ -946,7 +946,7 @@ fmgr_security_definer(PG_FUNCTION_ARGS) /* * We don't need to restore GUC or userid settings on error, because the - * ensuing xact or subxact abort will do that. The PG_TRY block is only + * ensuing xact or subxact abort will do that. The PG_TRY block is only * needed to clean up the flinfo link. */ save_flinfo = fcinfo->flinfo; @@ -1850,7 +1850,7 @@ OidFunctionCall9(Oid functionId, Datum arg1, Datum arg2, * * One important difference from the bare function call is that we will * push any active SPI context, allowing SPI-using I/O functions to be - * called from other SPI functions without extra notation. This is a hack, + * called from other SPI functions without extra notation. This is a hack, * but the alternative of expecting all SPI functions to do SPI_push/SPI_pop * around I/O calls seems worse. */ @@ -2130,17 +2130,17 @@ Int64GetDatum(int64 X) return PointerGetDatum(retval); #endif /* INT64_IS_BUSTED */ } - -#endif /* USE_FLOAT8_BYVAL */ +#endif /* USE_FLOAT8_BYVAL */ Datum Float4GetDatum(float4 X) { #ifdef USE_FLOAT4_BYVAL - union { - float4 value; - int32 retval; - } myunion; + union + { + float4 value; + int32 retval; + } myunion; myunion.value = X; return SET_4_BYTES(myunion.retval); @@ -2157,25 +2157,26 @@ Float4GetDatum(float4 X) float4 DatumGetFloat4(Datum X) { - union { - int32 value; - float4 retval; - } myunion; + union + { + int32 value; + float4 retval; + } myunion; myunion.value = GET_4_BYTES(X); return myunion.retval; } - -#endif /* USE_FLOAT4_BYVAL */ +#endif /* USE_FLOAT4_BYVAL */ Datum Float8GetDatum(float8 X) { #ifdef USE_FLOAT8_BYVAL - union { - float8 value; - int64 retval; - } myunion; + union + { + float8 value; + int64 retval; + } myunion; myunion.value = X; return SET_8_BYTES(myunion.retval); @@ -2192,16 +2193,16 @@ Float8GetDatum(float8 X) float8 DatumGetFloat8(Datum X) { - union { - int64 value; - float8 retval; - } myunion; + union + { + int64 value; + float8 retval; + } myunion; myunion.value = GET_8_BYTES(X); return myunion.retval; } - -#endif /* USE_FLOAT8_BYVAL */ +#endif /* USE_FLOAT8_BYVAL */ /*------------------------------------------------------------------------- @@ -2408,9 +2409,9 @@ get_call_expr_arg_stable(Node *expr, int argnum) arg = (Node *) list_nth(args, argnum); /* - * Either a true Const or an external Param will have a value that - * doesn't change during the execution of the query. In future we - * might want to consider other cases too, e.g. now(). + * Either a true Const or an external Param will have a value that doesn't + * change during the execution of the query. In future we might want to + * consider other cases too, e.g. now(). */ if (IsA(arg, Const)) return true; diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c index c0cd71419a6..7ecd7812206 100644 --- a/src/backend/utils/fmgr/funcapi.c +++ b/src/backend/utils/fmgr/funcapi.c @@ -7,7 +7,7 @@ * Copyright (c) 2002-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/fmgr/funcapi.c,v 1.44 2009/01/01 17:23:51 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/fmgr/funcapi.c,v 1.45 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -64,8 +64,8 @@ init_MultiFuncCall(PG_FUNCTION_ARGS) /* * First call */ - ReturnSetInfo *rsi = (ReturnSetInfo *) fcinfo->resultinfo; - MemoryContext multi_call_ctx; + ReturnSetInfo *rsi = (ReturnSetInfo *) fcinfo->resultinfo; + MemoryContext multi_call_ctx; /* * Create a suitably long-lived context to hold cross-call data diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 2fcb23628dd..7bdfb67204e 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.174 2009/04/08 09:50:48 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.175 2009/06/11 14:49:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -363,7 +363,7 @@ SetSessionUserId(Oid userid, bool is_superuser) * ever throw any kind of error. This is because they are used by * StartTransaction and AbortTransaction to save/restore the settings, * and during the first transaction within a backend, the value to be saved - * and perhaps restored is indeed invalid. We have to be able to get + * and perhaps restored is indeed invalid. We have to be able to get * through AbortTransaction without asserting in case InitPostgres fails. */ void @@ -1170,7 +1170,7 @@ load_libraries(const char *libraries, const char *gucname, bool restricted) /* * Choose notice level: avoid repeat messages when re-loading a library - * that was preloaded into the postmaster. (Only possible in EXEC_BACKEND + * that was preloaded into the postmaster. (Only possible in EXEC_BACKEND * configurations) */ #ifdef EXEC_BACKEND @@ -1238,7 +1238,7 @@ pg_bindtextdomain(const char *domain) #ifdef ENABLE_NLS if (my_exec_path[0] != '\0') { - char locale_path[MAXPGPATH]; + char locale_path[MAXPGPATH]; get_locale_path(my_exec_path, locale_path); bindtextdomain(domain, locale_path); diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 9b48b7671db..34685cba3ce 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.190 2009/04/08 13:08:09 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/utils/init/postinit.c,v 1.191 2009/06/11 14:49:05 momjian Exp $ * * *------------------------------------------------------------------------- @@ -242,25 +242,25 @@ CheckMyDatabase(const char *name, bool am_superuser) /* If we have no other source of client_encoding, use server encoding */ SetConfigOption("client_encoding", GetDatabaseEncodingName(), PGC_BACKEND, PGC_S_DEFAULT); - - /* assign locale variables */ + + /* assign locale variables */ collate = NameStr(dbform->datcollate); ctype = NameStr(dbform->datctype); - + if (setlocale(LC_COLLATE, collate) == NULL) - ereport(FATAL, + ereport(FATAL, (errmsg("database locale is incompatible with operating system"), - errdetail("The database was initialized with LC_COLLATE \"%s\", " - " which is not recognized by setlocale().", collate), - errhint("Recreate the database with another locale or install the missing locale."))); - + errdetail("The database was initialized with LC_COLLATE \"%s\", " + " which is not recognized by setlocale().", collate), + errhint("Recreate the database with another locale or install the missing locale."))); + if (setlocale(LC_CTYPE, ctype) == NULL) - ereport(FATAL, + ereport(FATAL, (errmsg("database locale is incompatible with operating system"), - errdetail("The database was initialized with LC_CTYPE \"%s\", " - " which is not recognized by setlocale().", ctype), - errhint("Recreate the database with another locale or install the missing locale."))); - + errdetail("The database was initialized with LC_CTYPE \"%s\", " + " which is not recognized by setlocale().", ctype), + errhint("Recreate the database with another locale or install the missing locale."))); + /* Make the locale settings visible as GUC variables, too */ SetConfigOption("lc_collate", collate, PGC_INTERNAL, PGC_S_OVERRIDE); SetConfigOption("lc_ctype", ctype, PGC_INTERNAL, PGC_S_OVERRIDE); @@ -623,7 +623,7 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username, MyProcPort->canAcceptConnections == CAC_WAITBACKUP) ereport(FATAL, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("must be superuser to connect during database shutdown"))); + errmsg("must be superuser to connect during database shutdown"))); /* * Check a normal user hasn't connected to a superuser reserved slot. diff --git a/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c b/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c index dfc1671604a..ab149f7e394 100644 --- a/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c +++ b/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c,v 1.20 2009/02/28 18:49:42 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c,v 1.21 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -278,8 +278,8 @@ win866_to_win1251(PG_FUNCTION_ARGS) /* * Note: There are a few characters like the "Numero" sign that exist in * all the other cyrillic encodings (win1251, ISO_8859-5 and cp866), but - * not in KOI8R. As we use MULE_INTERNAL/KOI8R as an intermediary, we - * will fail to convert those characters. + * not in KOI8R. As we use MULE_INTERNAL/KOI8R as an intermediary, we will + * fail to convert those characters. */ buf = palloc(len * ENCODING_GROWTH_RATE + 1); win8662mic(src, buf, len); diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c index 5dcf9227947..9a739019531 100644 --- a/src/backend/utils/mb/mbutils.c +++ b/src/backend/utils/mb/mbutils.c @@ -4,7 +4,7 @@ * * Tatsuo Ishii * - * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.86 2009/04/24 08:43:50 mha Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.87 2009/06/11 14:49:05 momjian Exp $ */ #include "postgres.h" @@ -30,7 +30,7 @@ /* * We maintain a simple linked list caching the fmgr lookup info for the * currently selected conversion functions, as well as any that have been - * selected previously in the current session. (We remember previous + * selected previously in the current session. (We remember previous * settings because we must be able to restore a previous setting during * transaction rollback, without doing any fresh catalog accesses.) * @@ -40,7 +40,7 @@ typedef struct ConvProcInfo { int s_encoding; /* server and client encoding IDs */ int c_encoding; - FmgrInfo to_server_info; /* lookup info for conversion procs */ + FmgrInfo to_server_info; /* lookup info for conversion procs */ FmgrInfo to_client_info; } ConvProcInfo; @@ -119,9 +119,9 @@ SetClientEncoding(int encoding, bool doit) { /* * If we're in a live transaction, it's safe to access the catalogs, - * so look up the functions. We repeat the lookup even if the info - * is already cached, so that we can react to changes in the contents - * of pg_conversion. + * so look up the functions. We repeat the lookup even if the info is + * already cached, so that we can react to changes in the contents of + * pg_conversion. */ Oid to_server_proc, to_client_proc; @@ -168,8 +168,8 @@ SetClientEncoding(int encoding, bool doit) ToClientConvProc = &convinfo->to_client_info; /* - * Remove any older entry for the same encoding pair (this is just - * to avoid memory leakage). + * Remove any older entry for the same encoding pair (this is just to + * avoid memory leakage). */ foreach(lc, ConvProcList) { @@ -191,10 +191,10 @@ SetClientEncoding(int encoding, bool doit) else { /* - * If we're not in a live transaction, the only thing we can do - * is restore a previous setting using the cache. This covers all - * transaction-rollback cases. The only case it might not work for - * is trying to change client_encoding on the fly by editing + * If we're not in a live transaction, the only thing we can do is + * restore a previous setting using the cache. This covers all + * transaction-rollback cases. The only case it might not work for is + * trying to change client_encoding on the fly by editing * postgresql.conf and SIGHUP'ing. Which would probably be a stupid * thing to do anyway. */ @@ -275,7 +275,7 @@ pg_get_client_encoding_name(void) * * CAUTION: although the presence of a length argument means that callers * can pass non-null-terminated strings, care is required because the same - * string will be passed back if no conversion occurs. Such callers *must* + * string will be passed back if no conversion occurs. Such callers *must* * check whether result == src and handle that case differently. * * Note: we try to avoid raising error, since that could get us into @@ -622,21 +622,22 @@ perform_default_encoding_conversion(const char *src, int len, bool is_client_to_ size_t wchar2char(char *to, const wchar_t *from, size_t tolen) { - size_t result; - + size_t result; + if (tolen == 0) return 0; #ifdef WIN32 + /* - * On Windows, the "Unicode" locales assume UTF16 not UTF8 encoding, - * and for some reason mbstowcs and wcstombs won't do this for us, - * so we use MultiByteToWideChar(). + * On Windows, the "Unicode" locales assume UTF16 not UTF8 encoding, and + * for some reason mbstowcs and wcstombs won't do this for us, so we use + * MultiByteToWideChar(). */ if (GetDatabaseEncoding() == PG_UTF8) { result = WideCharToMultiByte(CP_UTF8, 0, from, -1, to, tolen, - NULL, NULL); + NULL, NULL); /* A zero return is failure */ if (result <= 0) result = -1; @@ -650,7 +651,7 @@ wchar2char(char *to, const wchar_t *from, size_t tolen) else #endif /* WIN32 */ { - Assert( !lc_ctype_is_c() ); + Assert(!lc_ctype_is_c()); result = wcstombs(to, from, tolen); } return result; @@ -701,7 +702,7 @@ char2wchar(wchar_t *to, size_t tolen, const char *from, size_t fromlen) /* mbstowcs requires ending '\0' */ char *str = pnstrdup(from, fromlen); - Assert( !lc_ctype_is_c() ); + Assert(!lc_ctype_is_c()); result = mbstowcs(to, str, tolen); pfree(str); } @@ -722,11 +723,10 @@ char2wchar(wchar_t *to, size_t tolen, const char *from, size_t fromlen) (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE), errmsg("invalid multibyte character for locale"), errhint("The server's LC_CTYPE locale is probably incompatible with the database encoding."))); - } + } return result; } - #endif /* convert a multibyte string to a wchar */ @@ -907,19 +907,18 @@ void pg_bind_textdomain_codeset(const char *domainname) { #if defined(ENABLE_NLS) - int encoding = GetDatabaseEncoding(); - int i; + int encoding = GetDatabaseEncoding(); + int i; /* - * gettext() uses the codeset specified by LC_CTYPE by default, - * so if that matches the database encoding we don't need to do - * anything. In CREATE DATABASE, we enforce or trust that the - * locale's codeset matches database encoding, except for the C - * locale. In C locale, we bind gettext() explicitly to the right - * codeset. + * gettext() uses the codeset specified by LC_CTYPE by default, so if that + * matches the database encoding we don't need to do anything. In CREATE + * DATABASE, we enforce or trust that the locale's codeset matches + * database encoding, except for the C locale. In C locale, we bind + * gettext() explicitly to the right codeset. * - * On Windows, though, gettext() tends to get confused so we always - * bind it. + * On Windows, though, gettext() tends to get confused so we always bind + * it. */ #ifndef WIN32 const char *ctype = setlocale(LC_CTYPE, NULL); diff --git a/src/backend/utils/mb/wchar.c b/src/backend/utils/mb/wchar.c index 8da81b9f221..9bff635b883 100644 --- a/src/backend/utils/mb/wchar.c +++ b/src/backend/utils/mb/wchar.c @@ -1,7 +1,7 @@ /* * conversion functions between pg_wchar and multibyte streams. * Tatsuo Ishii - * $PostgreSQL: pgsql/src/backend/utils/mb/wchar.c,v 1.72 2009/03/02 21:18:43 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mb/wchar.c,v 1.73 2009/06/11 14:49:05 momjian Exp $ * */ /* can be used in either frontend or backend */ @@ -1339,7 +1339,7 @@ pg_utf8_islegal(const unsigned char *source, int length) *------------------------------------------------------------------- */ pg_wchar_tbl pg_wchar_table[] = { - {pg_ascii2wchar_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifier, 1}, /* PG_SQL_ASCII */ + {pg_ascii2wchar_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifier, 1}, /* PG_SQL_ASCII */ {pg_eucjp2wchar_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JP */ {pg_euccn2wchar_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifier, 2}, /* PG_EUC_CN */ {pg_euckr2wchar_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifier, 3}, /* PG_EUC_KR */ @@ -1638,10 +1638,10 @@ report_untranslatable_char(int src_encoding, int dest_encoding, ereport(ERROR, (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER), - errmsg("character 0x%s of encoding \"%s\" has no equivalent in \"%s\"", - buf, - pg_enc2name_tbl[src_encoding].name, - pg_enc2name_tbl[dest_encoding].name))); + errmsg("character 0x%s of encoding \"%s\" has no equivalent in \"%s\"", + buf, + pg_enc2name_tbl[src_encoding].name, + pg_enc2name_tbl[dest_encoding].name))); } #endif diff --git a/src/backend/utils/mb/wstrcmp.c b/src/backend/utils/mb/wstrcmp.c index 2bd55d1beee..22cd7e93c07 100644 --- a/src/backend/utils/mb/wstrcmp.c +++ b/src/backend/utils/mb/wstrcmp.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/utils/mb/wstrcmp.c,v 1.9 2008/05/17 01:28:24 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mb/wstrcmp.c,v 1.10 2009/06/11 14:49:06 momjian Exp $ * *- * Copyright (c) 1990, 1993 diff --git a/src/backend/utils/mb/wstrncmp.c b/src/backend/utils/mb/wstrncmp.c index 3de672c779a..60400e903b3 100644 --- a/src/backend/utils/mb/wstrncmp.c +++ b/src/backend/utils/mb/wstrncmp.c @@ -1,5 +1,5 @@ /* - * $PostgreSQL: pgsql/src/backend/utils/mb/wstrncmp.c,v 1.9 2008/05/17 01:28:24 adunstan Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mb/wstrncmp.c,v 1.10 2009/06/11 14:49:06 momjian Exp $ * * * Copyright (c) 1989, 1993 diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 41368bf1e99..210bd6ba6a5 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut <peter_e@gmx.net>. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.504 2009/05/03 20:09:54 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.505 2009/06/11 14:49:06 momjian Exp $ * *-------------------------------------------------------------------- */ @@ -139,7 +139,7 @@ static const char *assign_log_destination(const char *value, static int syslog_facility = LOG_LOCAL0; static bool assign_syslog_facility(int newval, - bool doit, GucSource source); + bool doit, GucSource source); static const char *assign_syslog_ident(const char *ident, bool doit, GucSource source); #endif @@ -169,9 +169,9 @@ static bool assign_autovacuum_max_workers(int newval, bool doit, GucSource sourc static bool assign_effective_io_concurrency(int newval, bool doit, GucSource source); static const char *assign_pgstat_temp_directory(const char *newval, bool doit, GucSource source); -static char *config_enum_get_options(struct config_enum *record, - const char *prefix, const char *suffix, - const char *separator); +static char *config_enum_get_options(struct config_enum * record, + const char *prefix, const char *suffix, + const char *separator); /* @@ -242,10 +242,10 @@ static const struct config_enum_entry log_statement_options[] = { }; static const struct config_enum_entry regex_flavor_options[] = { - {"advanced", REG_ADVANCED, false}, - {"extended", REG_EXTENDED, false}, - {"basic", REG_BASIC, false}, - {NULL, 0, false} + {"advanced", REG_ADVANCED, false}, + {"extended", REG_EXTENDED, false}, + {"basic", REG_BASIC, false}, + {NULL, 0, false} }; static const struct config_enum_entry isolation_level_options[] = { @@ -1715,11 +1715,11 @@ static struct config_int ConfigureNamesInt[] = { {"effective_io_concurrency", #ifdef USE_PREFETCH - PGC_USERSET, + PGC_USERSET, #else - PGC_INTERNAL, + PGC_INTERNAL, #endif - RESOURCES, + RESOURCES, gettext_noop("Number of simultaneous requests that can be handled efficiently by the disk subsystem."), gettext_noop("For RAID arrays, this should be approximately the number of drive spindles in the array.") }, @@ -1794,9 +1794,9 @@ static struct config_int ConfigureNamesInt[] = { {"segment_size", PGC_INTERNAL, PRESET_OPTIONS, - gettext_noop("Shows the number of pages per disk file."), - NULL, - GUC_UNIT_BLOCKS | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE + gettext_noop("Shows the number of pages per disk file."), + NULL, + GUC_UNIT_BLOCKS | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE }, &segment_size, RELSEG_SIZE, RELSEG_SIZE, RELSEG_SIZE, NULL, NULL @@ -1819,8 +1819,8 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_XBLOCKS | GUC_NOT_IN_SAMPLE | GUC_DISALLOW_IN_FILE }, &wal_segment_size, - (XLOG_SEG_SIZE / XLOG_BLCKSZ), - (XLOG_SEG_SIZE / XLOG_BLCKSZ), + (XLOG_SEG_SIZE / XLOG_BLCKSZ), + (XLOG_SEG_SIZE / XLOG_BLCKSZ), (XLOG_SEG_SIZE / XLOG_BLCKSZ), NULL, NULL }, @@ -2562,7 +2562,7 @@ static struct config_enum ConfigureNamesEnum[] = XACT_READ_COMMITTED, isolation_level_options, NULL, NULL }, - { + { {"IntervalStyle", PGC_USERSET, CLIENT_CONN_LOCALE, gettext_noop("Sets the display format for interval values."), NULL, @@ -2655,7 +2655,7 @@ static struct config_enum ConfigureNamesEnum[] = NULL }, &sync_method, - DEFAULT_SYNC_METHOD, sync_method_options, + DEFAULT_SYNC_METHOD, sync_method_options, assign_xlog_sync_method, NULL }, @@ -2722,7 +2722,7 @@ static int GUCNestLevel = 0; /* 1 when in main transaction */ static int guc_var_compare(const void *a, const void *b); static int guc_name_compare(const char *namea, const char *nameb); -static void InitializeOneGUCOption(struct config_generic *gconf); +static void InitializeOneGUCOption(struct config_generic * gconf); static void push_old_value(struct config_generic * gconf, GucAction action); static void ReportGUCOption(struct config_generic * record); static void ShowGUCConfigOption(const char *name, DestReceiver *dest); @@ -2853,7 +2853,7 @@ set_stack_value(struct config_generic * gconf, union config_var_value * val) *((struct config_string *) gconf)->variable); break; case PGC_ENUM: - val->enumval = + val->enumval = *((struct config_enum *) gconf)->variable; break; } @@ -3290,7 +3290,7 @@ InitializeGUCOptions(void) * Initialize one GUC option variable to its compiled-in default. */ static void -InitializeOneGUCOption(struct config_generic *gconf) +InitializeOneGUCOption(struct config_generic * gconf) { gconf->status = 0; gconf->reset_source = PGC_S_DEFAULT; @@ -3302,100 +3302,100 @@ InitializeOneGUCOption(struct config_generic *gconf) switch (gconf->vartype) { case PGC_BOOL: - { - struct config_bool *conf = (struct config_bool *) gconf; - - if (conf->assign_hook) - if (!(*conf->assign_hook) (conf->boot_val, true, - PGC_S_DEFAULT)) - elog(FATAL, "failed to initialize %s to %d", - conf->gen.name, (int) conf->boot_val); - *conf->variable = conf->reset_val = conf->boot_val; - break; - } - case PGC_INT: - { - struct config_int *conf = (struct config_int *) gconf; - - Assert(conf->boot_val >= conf->min); - Assert(conf->boot_val <= conf->max); - if (conf->assign_hook) - if (!(*conf->assign_hook) (conf->boot_val, true, - PGC_S_DEFAULT)) - elog(FATAL, "failed to initialize %s to %d", - conf->gen.name, conf->boot_val); - *conf->variable = conf->reset_val = conf->boot_val; - break; - } - case PGC_REAL: - { - struct config_real *conf = (struct config_real *) gconf; - - Assert(conf->boot_val >= conf->min); - Assert(conf->boot_val <= conf->max); - if (conf->assign_hook) - if (!(*conf->assign_hook) (conf->boot_val, true, - PGC_S_DEFAULT)) - elog(FATAL, "failed to initialize %s to %g", - conf->gen.name, conf->boot_val); - *conf->variable = conf->reset_val = conf->boot_val; - break; - } - case PGC_STRING: - { - struct config_string *conf = (struct config_string *) gconf; - char *str; - - *conf->variable = NULL; - conf->reset_val = NULL; - - if (conf->boot_val == NULL) { - /* leave the value NULL, do not call assign hook */ + struct config_bool *conf = (struct config_bool *) gconf; + + if (conf->assign_hook) + if (!(*conf->assign_hook) (conf->boot_val, true, + PGC_S_DEFAULT)) + elog(FATAL, "failed to initialize %s to %d", + conf->gen.name, (int) conf->boot_val); + *conf->variable = conf->reset_val = conf->boot_val; break; } + case PGC_INT: + { + struct config_int *conf = (struct config_int *) gconf; - str = guc_strdup(FATAL, conf->boot_val); - conf->reset_val = str; + Assert(conf->boot_val >= conf->min); + Assert(conf->boot_val <= conf->max); + if (conf->assign_hook) + if (!(*conf->assign_hook) (conf->boot_val, true, + PGC_S_DEFAULT)) + elog(FATAL, "failed to initialize %s to %d", + conf->gen.name, conf->boot_val); + *conf->variable = conf->reset_val = conf->boot_val; + break; + } + case PGC_REAL: + { + struct config_real *conf = (struct config_real *) gconf; - if (conf->assign_hook) + Assert(conf->boot_val >= conf->min); + Assert(conf->boot_val <= conf->max); + if (conf->assign_hook) + if (!(*conf->assign_hook) (conf->boot_val, true, + PGC_S_DEFAULT)) + elog(FATAL, "failed to initialize %s to %g", + conf->gen.name, conf->boot_val); + *conf->variable = conf->reset_val = conf->boot_val; + break; + } + case PGC_STRING: { - const char *newstr; + struct config_string *conf = (struct config_string *) gconf; + char *str; + + *conf->variable = NULL; + conf->reset_val = NULL; - newstr = (*conf->assign_hook) (str, true, - PGC_S_DEFAULT); - if (newstr == NULL) + if (conf->boot_val == NULL) { - elog(FATAL, "failed to initialize %s to \"%s\"", - conf->gen.name, str); + /* leave the value NULL, do not call assign hook */ + break; } - else if (newstr != str) + + str = guc_strdup(FATAL, conf->boot_val); + conf->reset_val = str; + + if (conf->assign_hook) { - free(str); + const char *newstr; - /* - * See notes in set_config_option about casting - */ - str = (char *) newstr; - conf->reset_val = str; + newstr = (*conf->assign_hook) (str, true, + PGC_S_DEFAULT); + if (newstr == NULL) + { + elog(FATAL, "failed to initialize %s to \"%s\"", + conf->gen.name, str); + } + else if (newstr != str) + { + free(str); + + /* + * See notes in set_config_option about casting + */ + str = (char *) newstr; + conf->reset_val = str; + } } + *conf->variable = str; + break; } - *conf->variable = str; - break; - } case PGC_ENUM: - { - struct config_enum *conf = (struct config_enum *) gconf; - - if (conf->assign_hook) - if (!(*conf->assign_hook) (conf->boot_val, true, - PGC_S_DEFAULT)) - elog(FATAL, "failed to initialize %s to %s", - conf->gen.name, - config_enum_lookup_by_value(conf, conf->boot_val)); - *conf->variable = conf->reset_val = conf->boot_val; - break; - } + { + struct config_enum *conf = (struct config_enum *) gconf; + + if (conf->assign_hook) + if (!(*conf->assign_hook) (conf->boot_val, true, + PGC_S_DEFAULT)) + elog(FATAL, "failed to initialize %s to %s", + conf->gen.name, + config_enum_lookup_by_value(conf, conf->boot_val)); + *conf->variable = conf->reset_val = conf->boot_val; + break; + } } } @@ -4009,13 +4009,13 @@ AtEOXact_GUC(bool isCommit, int nestLevel) case PGC_ENUM: { struct config_enum *conf = (struct config_enum *) gconf; - int newval = newvalue.enumval; + int newval = newvalue.enumval; if (*conf->variable != newval) { if (conf->assign_hook) if (!(*conf->assign_hook) (newval, - true, PGC_S_OVERRIDE)) + true, PGC_S_OVERRIDE)) elog(LOG, "failed to commit %s as %s", conf->gen.name, config_enum_lookup_by_value(conf, newval)); @@ -4351,7 +4351,7 @@ parse_real(const char *value, double *result) * allocated for modification. */ const char * -config_enum_lookup_by_value(struct config_enum *record, int val) +config_enum_lookup_by_value(struct config_enum * record, int val) { const struct config_enum_entry *entry; @@ -4363,7 +4363,7 @@ config_enum_lookup_by_value(struct config_enum *record, int val) elog(ERROR, "could not find enum option %d for %s", val, record->gen.name); - return NULL; /* silence compiler */ + return NULL; /* silence compiler */ } @@ -4374,7 +4374,7 @@ config_enum_lookup_by_value(struct config_enum *record, int val) * true. If it's not found, return FALSE and retval is set to 0. */ bool -config_enum_lookup_by_name(struct config_enum *record, const char *value, +config_enum_lookup_by_name(struct config_enum * record, const char *value, int *retval) { const struct config_enum_entry *entry; @@ -4400,16 +4400,16 @@ config_enum_lookup_by_name(struct config_enum *record, const char *value, * If suffix is non-NULL, it is added to the end of the string. */ static char * -config_enum_get_options(struct config_enum *record, const char *prefix, +config_enum_get_options(struct config_enum * record, const char *prefix, const char *suffix, const char *separator) { const struct config_enum_entry *entry; - StringInfoData retstr; + StringInfoData retstr; int seplen; initStringInfo(&retstr); appendStringInfoString(&retstr, prefix); - + seplen = strlen(separator); for (entry = record->options; entry && entry->name; entry++) { @@ -4421,11 +4421,11 @@ config_enum_get_options(struct config_enum *record, const char *prefix, } /* - * All the entries may have been hidden, leaving the string empty - * if no prefix was given. This indicates a broken GUC setup, since - * there is no use for an enum without any values, so we just check - * to make sure we don't write to invalid memory instead of actually - * trying to do something smart with it. + * All the entries may have been hidden, leaving the string empty if no + * prefix was given. This indicates a broken GUC setup, since there is no + * use for an enum without any values, so we just check to make sure we + * don't write to invalid memory instead of actually trying to do + * something smart with it. */ if (retstr.len >= seplen) { @@ -4565,8 +4565,8 @@ set_config_option(const char *name, const char *value, if (changeVal && !is_newvalue_equal(record, value)) ereport(elevel, (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM), - errmsg("attempted change of parameter \"%s\" ignored", - name), + errmsg("attempted change of parameter \"%s\" ignored", + name), errdetail("This parameter cannot be changed after server start."))); return true; } @@ -4574,8 +4574,8 @@ set_config_option(const char *name, const char *value, { ereport(elevel, (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM), - errmsg("attempted change of parameter \"%s\" ignored", - name), + errmsg("attempted change of parameter \"%s\" ignored", + name), errdetail("This parameter cannot be changed after server start."))); return false; } @@ -5004,16 +5004,16 @@ set_config_option(const char *name, const char *value, { if (!config_enum_lookup_by_name(conf, value, &newval)) { - char *hintmsg; - - hintmsg = config_enum_get_options(conf, - "Available values: ", + char *hintmsg; + + hintmsg = config_enum_get_options(conf, + "Available values: ", ".", ", "); ereport(elevel, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("invalid value for parameter \"%s\": \"%s\"", - name, value), + errmsg("invalid value for parameter \"%s\": \"%s\"", + name, value), hintmsg ? errhint("%s", _(hintmsg)) : 0)); if (hintmsg) @@ -5038,9 +5038,9 @@ set_config_option(const char *name, const char *value, { ereport(elevel, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("invalid value for parameter \"%s\": \"%s\"", - name, - config_enum_lookup_by_value(conf, newval)))); + errmsg("invalid value for parameter \"%s\": \"%s\"", + name, + config_enum_lookup_by_value(conf, newval)))); return false; } @@ -5088,8 +5088,8 @@ set_config_sourcefile(const char *name, char *sourcefile, int sourceline) int elevel; /* - * To avoid cluttering the log, only the postmaster bleats loudly - * about problems with the config file. + * To avoid cluttering the log, only the postmaster bleats loudly about + * problems with the config file. */ elevel = IsUnderPostmaster ? DEBUG3 : LOG; @@ -5166,7 +5166,7 @@ GetConfigOption(const char *name) case PGC_ENUM: return config_enum_lookup_by_value((struct config_enum *) record, - *((struct config_enum *) record)->variable); + *((struct config_enum *) record)->variable); } return NULL; } @@ -5214,7 +5214,7 @@ GetConfigOptionResetString(const char *name) case PGC_ENUM: return config_enum_lookup_by_value((struct config_enum *) record, - ((struct config_enum *) record)->reset_val); + ((struct config_enum *) record)->reset_val); } return NULL; } @@ -5244,7 +5244,7 @@ IsSuperuserConfigOption(const char *name) * report (in addition to the generic "invalid value for option FOO" that * guc.c will provide). Note that the result might be ERROR or a lower * level, so the caller must be prepared for control to return from ereport, - * or not. If control does return, return false/NULL from the hook function. + * or not. If control does return, return false/NULL from the hook function. * * At some point it'd be nice to replace this with a mechanism that allows * the custom message to become the DETAIL line of guc.c's generic message. @@ -5266,9 +5266,9 @@ GUC_complaint_elevel(GucSource source) { /* * If we're a postmaster child, this is probably "undo" during - * transaction abort, so we don't want to clutter the log. There's - * a small chance of a real problem with an OVERRIDE setting, - * though, so suppressing the message entirely wouldn't be desirable. + * transaction abort, so we don't want to clutter the log. There's a + * small chance of a real problem with an OVERRIDE setting, though, so + * suppressing the message entirely wouldn't be desirable. */ elevel = IsUnderPostmaster ? DEBUG5 : LOG; } @@ -5324,22 +5324,22 @@ flatten_set_variable_args(const char *name, List *args) /* * Each list member may be a plain A_Const node, or an A_Const within a - * TypeCast; the latter case is supported only for ConstInterval - * arguments (for SET TIME ZONE). + * TypeCast; the latter case is supported only for ConstInterval arguments + * (for SET TIME ZONE). */ foreach(l, args) { - Node *arg = (Node *) lfirst(l); + Node *arg = (Node *) lfirst(l); char *val; TypeName *typename = NULL; - A_Const *con; + A_Const *con; if (l != list_head(args)) appendStringInfo(&buf, ", "); if (IsA(arg, TypeCast)) { - TypeCast *tc = (TypeCast *) arg; + TypeCast *tc = (TypeCast *) arg; arg = tc->arg; typename = tc->typename; @@ -5597,11 +5597,11 @@ init_custom_variable(const char *name, struct config_generic *gen; /* - * Only allow custom PGC_POSTMASTER variables to be created during - * shared library preload; any later than that, we can't ensure that - * the value doesn't change after startup. This is a fatal elog if it - * happens; just erroring out isn't safe because we don't know what - * the calling loadable module might already have hooked into. + * Only allow custom PGC_POSTMASTER variables to be created during shared + * library preload; any later than that, we can't ensure that the value + * doesn't change after startup. This is a fatal elog if it happens; just + * erroring out isn't safe because we don't know what the calling loadable + * module might already have hooked into. */ if (context == PGC_POSTMASTER && !process_shared_preload_libraries_in_progress) @@ -5632,7 +5632,7 @@ define_custom_variable(struct config_generic * variable) const char **nameAddr = &name; const char *value; struct config_string *pHolder; - GucContext phcontext; + GucContext phcontext; struct config_generic **res; /* @@ -5679,9 +5679,9 @@ define_custom_variable(struct config_generic * variable) *res = variable; /* - * Infer context for assignment based on source of existing value. - * We can't tell this with exact accuracy, but we can at least do - * something reasonable in typical cases. + * Infer context for assignment based on source of existing value. We + * can't tell this with exact accuracy, but we can at least do something + * reasonable in typical cases. */ switch (pHolder->gen.source) { @@ -5689,10 +5689,11 @@ define_custom_variable(struct config_generic * variable) case PGC_S_ENV_VAR: case PGC_S_FILE: case PGC_S_ARGV: + /* - * If we got past the check in init_custom_variable, we can - * safely assume that any existing value for a PGC_POSTMASTER - * variable was set in postmaster context. + * If we got past the check in init_custom_variable, we can safely + * assume that any existing value for a PGC_POSTMASTER variable + * was set in postmaster context. */ if (variable->context == PGC_POSTMASTER) phcontext = PGC_POSTMASTER; @@ -5852,7 +5853,7 @@ DefineCustomEnumVariable(const char *name, const char *long_desc, int *valueAddr, int bootValue, - const struct config_enum_entry *options, + const struct config_enum_entry * options, GucContext context, int flags, GucEnumAssignHook assign_hook, @@ -6165,13 +6166,13 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow) /* enumvals */ values[11] = NULL; - /* boot_val */ - snprintf(buffer, sizeof(buffer), "%d", lconf->boot_val); - values[12] = pstrdup(buffer); + /* boot_val */ + snprintf(buffer, sizeof(buffer), "%d", lconf->boot_val); + values[12] = pstrdup(buffer); - /* reset_val */ - snprintf(buffer, sizeof(buffer), "%d", lconf->reset_val); - values[13] = pstrdup(buffer); + /* reset_val */ + snprintf(buffer, sizeof(buffer), "%d", lconf->reset_val); + values[13] = pstrdup(buffer); } break; @@ -6190,19 +6191,19 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow) /* enumvals */ values[11] = NULL; - /* boot_val */ - snprintf(buffer, sizeof(buffer), "%g", lconf->boot_val); - values[12] = pstrdup(buffer); + /* boot_val */ + snprintf(buffer, sizeof(buffer), "%g", lconf->boot_val); + values[12] = pstrdup(buffer); - /* reset_val */ - snprintf(buffer, sizeof(buffer), "%g", lconf->reset_val); - values[13] = pstrdup(buffer); + /* reset_val */ + snprintf(buffer, sizeof(buffer), "%g", lconf->reset_val); + values[13] = pstrdup(buffer); } break; case PGC_STRING: { - struct config_string *lconf = (struct config_string *) conf; + struct config_string *lconf = (struct config_string *) conf; /* min_val */ values[9] = NULL; @@ -6213,15 +6214,15 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow) /* enumvals */ values[11] = NULL; - /* boot_val */ - if (lconf->boot_val == NULL) - values[12] = NULL; + /* boot_val */ + if (lconf->boot_val == NULL) + values[12] = NULL; else values[12] = pstrdup(lconf->boot_val); - /* reset_val */ - if (lconf->reset_val == NULL) - values[13] = NULL; + /* reset_val */ + if (lconf->reset_val == NULL) + values[13] = NULL; else values[13] = pstrdup(lconf->reset_val); } @@ -6229,7 +6230,7 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow) case PGC_ENUM: { - struct config_enum *lconf = (struct config_enum *) conf; + struct config_enum *lconf = (struct config_enum *) conf; /* min_val */ values[9] = NULL; @@ -6238,17 +6239,21 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow) values[10] = NULL; /* enumvals */ - /* NOTE! enumvals with double quotes in them are not supported! */ + + /* + * NOTE! enumvals with double quotes in them are not + * supported! + */ values[11] = config_enum_get_options((struct config_enum *) conf, "{\"", "\"}", "\",\""); - /* boot_val */ + /* boot_val */ values[12] = pstrdup(config_enum_lookup_by_value(lconf, - lconf->boot_val)); + lconf->boot_val)); - /* reset_val */ + /* reset_val */ values[13] = pstrdup(config_enum_lookup_by_value(lconf, - lconf->reset_val)); + lconf->reset_val)); } break; @@ -6267,18 +6272,18 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow) /* enumvals */ values[11] = NULL; - /* boot_val */ - values[12] = NULL; + /* boot_val */ + values[12] = NULL; - /* reset_val */ - values[13] = NULL; + /* reset_val */ + values[13] = NULL; } break; } - /* - * If the setting came from a config file, set the source location. - * For security reasons, we don't show source file/line number for + /* + * If the setting came from a config file, set the source location. For + * security reasons, we don't show source file/line number for * non-superusers. */ if (conf->source == PGC_S_FILE && superuser()) @@ -6379,10 +6384,10 @@ show_all_settings(PG_FUNCTION_ARGS) TEXTOID, -1, 0); TupleDescInitEntry(tupdesc, (AttrNumber) 12, "enumvals", TEXTARRAYOID, -1, 0); - TupleDescInitEntry(tupdesc, (AttrNumber) 13, "boot_val", - TEXTOID, -1, 0); - TupleDescInitEntry(tupdesc, (AttrNumber) 14, "reset_val", - TEXTOID, -1, 0); + TupleDescInitEntry(tupdesc, (AttrNumber) 13, "boot_val", + TEXTOID, -1, 0); + TupleDescInitEntry(tupdesc, (AttrNumber) 14, "reset_val", + TEXTOID, -1, 0); TupleDescInitEntry(tupdesc, (AttrNumber) 15, "sourcefile", TEXTOID, -1, 0); TupleDescInitEntry(tupdesc, (AttrNumber) 16, "sourceline", @@ -6476,10 +6481,10 @@ _ShowOption(struct config_generic * record, bool use_units) { /* * Use int64 arithmetic to avoid overflows in units - * conversion. If INT64_IS_BUSTED we might overflow + * conversion. If INT64_IS_BUSTED we might overflow * anyway and print bogus answers, but there are few - * enough such machines that it doesn't seem worth - * trying harder. + * enough such machines that it doesn't seem worth trying + * harder. */ int64 result = *conf->variable; const char *unit; @@ -6592,7 +6597,7 @@ _ShowOption(struct config_generic * record, bool use_units) { struct config_enum *conf = (struct config_enum *) record; - if(conf->show_hook) + if (conf->show_hook) val = (*conf->show_hook) (); else val = config_enum_lookup_by_value(conf, *conf->variable); @@ -6681,7 +6686,7 @@ is_newvalue_equal(struct config_generic * record, const char *newvalue) * variable source, integer */ static void -write_one_nondefault_variable(FILE *fp, struct config_generic *gconf) +write_one_nondefault_variable(FILE *fp, struct config_generic * gconf) { if (gconf->source == PGC_S_DEFAULT) return; @@ -6692,49 +6697,49 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf) switch (gconf->vartype) { case PGC_BOOL: - { - struct config_bool *conf = (struct config_bool *) gconf; + { + struct config_bool *conf = (struct config_bool *) gconf; - if (*conf->variable) - fprintf(fp, "true"); - else - fprintf(fp, "false"); - } - break; + if (*conf->variable) + fprintf(fp, "true"); + else + fprintf(fp, "false"); + } + break; case PGC_INT: - { - struct config_int *conf = (struct config_int *) gconf; + { + struct config_int *conf = (struct config_int *) gconf; - fprintf(fp, "%d", *conf->variable); - } - break; + fprintf(fp, "%d", *conf->variable); + } + break; case PGC_REAL: - { - struct config_real *conf = (struct config_real *) gconf; + { + struct config_real *conf = (struct config_real *) gconf; - /* Could lose precision here? */ - fprintf(fp, "%f", *conf->variable); - } - break; + /* Could lose precision here? */ + fprintf(fp, "%f", *conf->variable); + } + break; case PGC_STRING: - { - struct config_string *conf = (struct config_string *) gconf; + { + struct config_string *conf = (struct config_string *) gconf; - fprintf(fp, "%s", *conf->variable); - } - break; + fprintf(fp, "%s", *conf->variable); + } + break; case PGC_ENUM: - { - struct config_enum *conf = (struct config_enum *) gconf; - - fprintf(fp, "%s", - config_enum_lookup_by_value(conf, *conf->variable)); - } - break; + { + struct config_enum *conf = (struct config_enum *) gconf; + + fprintf(fp, "%s", + config_enum_lookup_by_value(conf, *conf->variable)); + } + break; } fputc(0, fp); @@ -7157,7 +7162,7 @@ assign_log_destination(const char *value, bool doit, GucSource source) list_free(elemlist); ereport(GUC_complaint_elevel(source), (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("invalid list syntax for parameter \"log_destination\""))); + errmsg("invalid list syntax for parameter \"log_destination\""))); return NULL; } @@ -7573,11 +7578,11 @@ assign_effective_io_concurrency(int newval, bool doit, GucSource source) * * drives | I/O requests * -------+---------------- - * 1 | 1 - * 2 | 2/1 + 2/2 = 3 - * 3 | 3/1 + 3/2 + 3/3 = 5 1/2 - * 4 | 4/1 + 4/2 + 4/3 + 4/4 = 8 1/3 - * n | n * H(n) + * 1 | 1 + * 2 | 2/1 + 2/2 = 3 + * 3 | 3/1 + 3/2 + 3/3 = 5 1/2 + * 4 | 4/1 + 4/2 + 4/3 + 4/4 = 8 1/3 + * n | n * H(n) * * This is called the "coupon collector problem" and H(n) is called the * harmonic series. This could be approximated by n * ln(n), but for @@ -7610,7 +7615,7 @@ assign_effective_io_concurrency(int newval, bool doit, GucSource source) return false; #else return true; -#endif /* USE_PREFETCH */ +#endif /* USE_PREFETCH */ } static const char * @@ -7624,9 +7629,9 @@ assign_pgstat_temp_directory(const char *newval, bool doit, GucSource source) canonicalize_path(canon_val); - tname = guc_malloc(ERROR, strlen(canon_val) + 12); /* /pgstat.tmp */ + tname = guc_malloc(ERROR, strlen(canon_val) + 12); /* /pgstat.tmp */ sprintf(tname, "%s/pgstat.tmp", canon_val); - fname = guc_malloc(ERROR, strlen(canon_val) + 13); /* /pgstat.stat */ + fname = guc_malloc(ERROR, strlen(canon_val) + 13); /* /pgstat.stat */ sprintf(fname, "%s/pgstat.stat", canon_val); if (pgstat_stat_tmpname) diff --git a/src/backend/utils/misc/help_config.c b/src/backend/utils/misc/help_config.c index d0311f31b69..d3311669a01 100644 --- a/src/backend/utils/misc/help_config.c +++ b/src/backend/utils/misc/help_config.c @@ -10,7 +10,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/help_config.c,v 1.22 2009/01/01 17:23:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/help_config.c,v 1.23 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -124,7 +124,7 @@ printMixedStruct(mixedStruct *structToPrint) case PGC_ENUM: printf("ENUM\t%s\t\t\t", config_enum_lookup_by_value(&structToPrint->_enum, - structToPrint->_enum.boot_val)); + structToPrint->_enum.boot_val)); break; default: diff --git a/src/backend/utils/mmgr/aset.c b/src/backend/utils/mmgr/aset.c index 5faf2ff760b..f11e15d57c5 100644 --- a/src/backend/utils/mmgr/aset.c +++ b/src/backend/utils/mmgr/aset.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.78 2009/01/01 17:23:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.79 2009/06/11 14:49:06 momjian Exp $ * * NOTE: * This is a new (Feb. 05, 1999) implementation of the allocation set @@ -305,8 +305,7 @@ randomize_mem(char *ptr, size_t size) } save_ctr = ctr; } - -#endif /* RANDOMIZE_ALLOCATED_MEMORY */ +#endif /* RANDOMIZE_ALLOCATED_MEMORY */ /* diff --git a/src/backend/utils/resowner/resowner.c b/src/backend/utils/resowner/resowner.c index cd96f80d447..4ef47ca5601 100644 --- a/src/backend/utils/resowner/resowner.c +++ b/src/backend/utils/resowner/resowner.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/resowner/resowner.c,v 1.31 2009/01/01 17:23:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/resowner/resowner.c,v 1.32 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -312,8 +312,8 @@ ResourceOwnerReleaseInternal(ResourceOwner owner, while (owner->nsnapshots > 0) { if (isCommit) - PrintSnapshotLeakWarning(owner->snapshots[owner->nsnapshots -1]); - UnregisterSnapshot(owner->snapshots[owner->nsnapshots -1]); + PrintSnapshotLeakWarning(owner->snapshots[owner->nsnapshots - 1]); + UnregisterSnapshot(owner->snapshots[owner->nsnapshots - 1]); } /* Clean up index scans too */ @@ -1005,7 +1005,7 @@ void ResourceOwnerForgetSnapshot(ResourceOwner owner, Snapshot snapshot) { Snapshot *snapshots = owner->snapshots; - int ns1 = owner->nsnapshots -1; + int ns1 = owner->nsnapshots - 1; int i; for (i = ns1; i >= 0; i--) diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index 92c55219d32..6d07296d596 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -91,7 +91,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/sort/tuplesort.c,v 1.90 2009/03/11 23:19:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/sort/tuplesort.c,v 1.91 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -451,9 +451,9 @@ static void readtup_heap(Tuplesortstate *state, SortTuple *stup, int tapenum, unsigned int len); static void reversedirection_heap(Tuplesortstate *state); static int comparetup_index_btree(const SortTuple *a, const SortTuple *b, - Tuplesortstate *state); + Tuplesortstate *state); static int comparetup_index_hash(const SortTuple *a, const SortTuple *b, - Tuplesortstate *state); + Tuplesortstate *state); static void copytup_index(Tuplesortstate *state, SortTuple *stup, void *tup); static void writetup_index(Tuplesortstate *state, int tapenum, SortTuple *stup); @@ -578,7 +578,7 @@ tuplesort_begin_heap(TupleDesc tupDesc, state->nKeys = nkeys; TRACE_POSTGRESQL_SORT_START(HEAP_SORT, - false, /* no unique check */ + false, /* no unique check */ nkeys, workMem, randomAccess); @@ -681,7 +681,7 @@ tuplesort_begin_index_hash(Relation indexRel, #ifdef TRACE_SORT if (trace_sort) elog(LOG, - "begin index sort: hash_mask = 0x%x, workMem = %d, randomAccess = %c", + "begin index sort: hash_mask = 0x%x, workMem = %d, randomAccess = %c", hash_mask, workMem, randomAccess ? 't' : 'f'); #endif @@ -727,7 +727,7 @@ tuplesort_begin_datum(Oid datumType, state->nKeys = 1; /* always a one-column sort */ TRACE_POSTGRESQL_SORT_START(DATUM_SORT, - false, /* no unique check */ + false, /* no unique check */ 1, workMem, randomAccess); @@ -844,8 +844,8 @@ tuplesort_end(Tuplesortstate *state) #else /* - * If you disabled TRACE_SORT, you can still probe sort__done, but - * you ain't getting space-used stats. + * If you disabled TRACE_SORT, you can still probe sort__done, but you + * ain't getting space-used stats. */ TRACE_POSTGRESQL_SORT_DONE(state->tapeset != NULL, 0L); #endif @@ -2653,9 +2653,11 @@ static void writetup_heap(Tuplesortstate *state, int tapenum, SortTuple *stup) { MinimalTuple tuple = (MinimalTuple) stup->tuple; + /* the part of the MinimalTuple we'll write: */ char *tupbody = (char *) tuple + MINIMAL_TUPLE_DATA_OFFSET; unsigned int tupbodylen = tuple->t_len - MINIMAL_TUPLE_DATA_OFFSET; + /* total on-disk footprint: */ unsigned int tuplen = tupbodylen + sizeof(int); @@ -2842,8 +2844,8 @@ comparetup_index_hash(const SortTuple *a, const SortTuple *b, CHECK_FOR_INTERRUPTS(); /* - * Fetch hash keys and mask off bits we don't want to sort by. - * We know that the first column of the index tuple is the hash key. + * Fetch hash keys and mask off bits we don't want to sort by. We know + * that the first column of the index tuple is the hash key. */ Assert(!a->isnull1); hash1 = DatumGetUInt32(a->datum1) & state->hash_mask; diff --git a/src/backend/utils/sort/tuplestore.c b/src/backend/utils/sort/tuplestore.c index 10afc4851b4..5b900b7a5ea 100644 --- a/src/backend/utils/sort/tuplestore.c +++ b/src/backend/utils/sort/tuplestore.c @@ -29,7 +29,7 @@ * When the caller requests backward-scan capability, we write the temp file * in a format that allows either forward or backward scan. Otherwise, only * forward scan is allowed. A request for backward scan must be made before - * putting any tuples into the tuplestore. Rewind is normally allowed but + * putting any tuples into the tuplestore. Rewind is normally allowed but * can be turned off via tuplestore_set_eflags; turning off rewind for all * read pointers enables truncation of the tuplestore at the oldest read point * for minimal memory usage. (The caller must explicitly call tuplestore_trim @@ -47,7 +47,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/sort/tuplestore.c,v 1.47 2009/03/27 18:30:21 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/sort/tuplestore.c,v 1.48 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -81,7 +81,7 @@ typedef enum * * Special case: if eof_reached is true, then the pointer's read position is * implicitly equal to the write position, and current/file/offset aren't - * maintained. This way we need not update all the read pointers each time + * maintained. This way we need not update all the read pointers each time * we write. */ typedef struct @@ -161,7 +161,7 @@ struct Tuplestorestate int readptrsize; /* allocated length of readptrs array */ int writepos_file; /* file# (valid if READFILE state) */ - off_t writepos_offset; /* offset (valid if READFILE state) */ + off_t writepos_offset; /* offset (valid if READFILE state) */ }; #define COPYTUP(state,tup) ((*(state)->copytup) (state, tup)) @@ -363,7 +363,7 @@ tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags) /* Make room for another read pointer if needed */ if (state->readptrcount >= state->readptrsize) { - int newcnt = state->readptrsize * 2; + int newcnt = state->readptrsize * 2; state->readptrs = (TSReadPointer *) repalloc(state->readptrs, newcnt * sizeof(TSReadPointer)); @@ -460,9 +460,10 @@ tuplestore_select_read_pointer(Tuplestorestate *state, int ptr) /* no work */ break; case TSS_READFILE: + /* - * First, save the current read position in the pointer about - * to become inactive. + * First, save the current read position in the pointer about to + * become inactive. */ if (!oldptr->eof_reached) BufFileTell(state->myfile, @@ -635,10 +636,11 @@ tuplestore_puttuple_common(Tuplestorestate *state, void *tuple) */ PrepareTempTablespaces(); state->myfile = BufFileCreateTemp(state->interXact); + /* - * Freeze the decision about whether trailing length words - * will be used. We can't change this choice once data is on - * tape, even though callers might drop the requirement. + * Freeze the decision about whether trailing length words will be + * used. We can't change this choice once data is on tape, even + * though callers might drop the requirement. */ state->backward = (state->eflags & EXEC_FLAG_BACKWARD) != 0; state->status = TSS_WRITEFILE; @@ -647,9 +649,9 @@ tuplestore_puttuple_common(Tuplestorestate *state, void *tuple) case TSS_WRITEFILE: /* - * Update read pointers as needed; see API spec above. - * Note: BufFileTell is quite cheap, so not worth trying - * to avoid multiple calls. + * Update read pointers as needed; see API spec above. Note: + * BufFileTell is quite cheap, so not worth trying to avoid + * multiple calls. */ readptr = state->readptrs; for (i = 0; i < state->readptrcount; readptr++, i++) @@ -754,7 +756,7 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward, Assert(!state->truncated); return NULL; } - readptr->current--; /* last returned tuple */ + readptr->current--; /* last returned tuple */ } if (readptr->current <= 0) { @@ -996,7 +998,7 @@ tuplestore_rescan(Tuplestorestate *state) } /* - * tuplestore_copy_read_pointer - copy a read pointer's state to another + * tuplestore_copy_read_pointer - copy a read pointer's state to another */ void tuplestore_copy_read_pointer(Tuplestorestate *state, @@ -1015,8 +1017,8 @@ tuplestore_copy_read_pointer(Tuplestorestate *state, if (dptr->eflags != sptr->eflags) { /* Possible change of overall eflags, so copy and then recompute */ - int eflags; - int i; + int eflags; + int i; *dptr = *sptr; eflags = state->readptrs[0].eflags; @@ -1034,6 +1036,7 @@ tuplestore_copy_read_pointer(Tuplestorestate *state, /* no work */ break; case TSS_READFILE: + /* * This case is a bit tricky since the active read pointer's * position corresponds to the seek point, not what is in its @@ -1093,7 +1096,8 @@ tuplestore_trim(Tuplestorestate *state) int i; /* - * Truncation is disallowed if any read pointer requires rewind capability. + * Truncation is disallowed if any read pointer requires rewind + * capability. */ if (state->eflags & EXEC_FLAG_REWIND) return; @@ -1115,14 +1119,13 @@ tuplestore_trim(Tuplestorestate *state) /* * Note: you might think we could remove all the tuples before the oldest - * "current", since that one is the next to be returned. However, - * since tuplestore_gettuple returns a direct pointer to our - * internal copy of the tuple, it's likely that the caller has - * still got the tuple just before "current" referenced in a slot. - * So we keep one extra tuple before the oldest "current". (Strictly - * speaking, we could require such callers to use the "copy" flag to - * tuplestore_gettupleslot, but for efficiency we allow this one case - * to not use "copy".) + * "current", since that one is the next to be returned. However, since + * tuplestore_gettuple returns a direct pointer to our internal copy of + * the tuple, it's likely that the caller has still got the tuple just + * before "current" referenced in a slot. So we keep one extra tuple + * before the oldest "current". (Strictly speaking, we could require such + * callers to use the "copy" flag to tuplestore_gettupleslot, but for + * efficiency we allow this one case to not use "copy".) */ nremove = oldest - 1; if (nremove <= 0) @@ -1222,9 +1225,11 @@ static void writetup_heap(Tuplestorestate *state, void *tup) { MinimalTuple tuple = (MinimalTuple) tup; + /* the part of the MinimalTuple we'll write: */ char *tupbody = (char *) tuple + MINIMAL_TUPLE_DATA_OFFSET; unsigned int tupbodylen = tuple->t_len - MINIMAL_TUPLE_DATA_OFFSET; + /* total on-disk footprint: */ unsigned int tuplen = tupbodylen + sizeof(int); @@ -1255,7 +1260,7 @@ readtup_heap(Tuplestorestate *state, unsigned int len) /* read in the tuple proper */ tuple->t_len = tuplen; if (BufFileRead(state->myfile, (void *) tupbody, - tupbodylen) != (size_t) tupbodylen) + tupbodylen) != (size_t) tupbodylen) elog(ERROR, "unexpected end of data"); if (state->backward) /* need trailing length word? */ if (BufFileRead(state->myfile, (void *) &tuplen, diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c index d5fa1355eea..73d597d7b37 100644 --- a/src/backend/utils/time/snapmgr.c +++ b/src/backend/utils/time/snapmgr.c @@ -8,9 +8,9 @@ * (tracked by separate refcounts on each snapshot), its memory can be freed. * * These arrangements let us reset MyProc->xmin when there are no snapshots - * referenced by this transaction. (One possible improvement would be to be + * referenced by this transaction. (One possible improvement would be to be * able to advance Xmin when the snapshot with the earliest Xmin is no longer - * referenced. That's a bit harder though, it requires more locking, and + * referenced. That's a bit harder though, it requires more locking, and * anyway it should be rather uncommon to keep snapshots referenced for too * long.) * @@ -19,7 +19,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/time/snapmgr.c,v 1.9 2009/01/01 17:23:53 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/time/snapmgr.c,v 1.10 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -50,8 +50,8 @@ static SnapshotData CurrentSnapshotData = {HeapTupleSatisfiesMVCC}; static SnapshotData SecondarySnapshotData = {HeapTupleSatisfiesMVCC}; /* Pointers to valid snapshots */ -static Snapshot CurrentSnapshot = NULL; -static Snapshot SecondarySnapshot = NULL; +static Snapshot CurrentSnapshot = NULL; +static Snapshot SecondarySnapshot = NULL; /* * These are updated by GetSnapshotData. We initialize them this way @@ -59,7 +59,7 @@ static Snapshot SecondarySnapshot = NULL; * mode, we don't want it to say that BootstrapTransactionId is in progress. * * RecentGlobalXmin is initialized to InvalidTransactionId, to ensure that no - * one tries to use a stale value. Readers should ensure that it has been set + * one tries to use a stale value. Readers should ensure that it has been set * to something else before using it. */ TransactionId TransactionXmin = FirstNormalTransactionId; @@ -82,7 +82,7 @@ typedef struct ActiveSnapshotElt } ActiveSnapshotElt; /* Top of the stack of active snapshots */ -static ActiveSnapshotElt *ActiveSnapshot = NULL; +static ActiveSnapshotElt *ActiveSnapshot = NULL; /* * How many snapshots is resowner.c tracking for us? @@ -91,22 +91,22 @@ static ActiveSnapshotElt *ActiveSnapshot = NULL; * smarter about advancing our MyProc->xmin we will need to be more * sophisticated about this, perhaps keeping our own list of snapshots. */ -static int RegisteredSnapshots = 0; +static int RegisteredSnapshots = 0; /* first GetTransactionSnapshot call in a transaction? */ -bool FirstSnapshotSet = false; +bool FirstSnapshotSet = false; /* * Remembers whether this transaction registered a serializable snapshot at * start. We cannot trust FirstSnapshotSet in combination with * IsXactIsoLevelSerializable, because GUC may be reset before us. */ -static bool registered_serializable = false; +static bool registered_serializable = false; static Snapshot CopySnapshot(Snapshot snapshot); static void FreeSnapshot(Snapshot snapshot); -static void SnapshotResetXmin(void); +static void SnapshotResetXmin(void); /* @@ -130,14 +130,14 @@ GetTransactionSnapshot(void) FirstSnapshotSet = true; /* - * In serializable mode, the first snapshot must live until end of xact - * regardless of what the caller does with it, so we must register it - * internally here and unregister it at end of xact. + * In serializable mode, the first snapshot must live until end of + * xact regardless of what the caller does with it, so we must + * register it internally here and unregister it at end of xact. */ if (IsXactIsoLevelSerializable) { CurrentSnapshot = RegisterSnapshotOnOwner(CurrentSnapshot, - TopTransactionResourceOwner); + TopTransactionResourceOwner); registered_serializable = true; } @@ -171,7 +171,7 @@ GetLatestSnapshot(void) /* * SnapshotSetCommandId - * Propagate CommandCounterIncrement into the static snapshots, if set + * Propagate CommandCounterIncrement into the static snapshots, if set */ void SnapshotSetCommandId(CommandId curcid) @@ -253,7 +253,7 @@ FreeSnapshot(Snapshot snapshot) /* * PushActiveSnapshot - * Set the given snapshot as the current active snapshot + * Set the given snapshot as the current active snapshot * * If this is the first use of this snapshot, create a new long-lived copy with * active refcount=1. Otherwise, only increment the refcount. @@ -261,7 +261,7 @@ FreeSnapshot(Snapshot snapshot) void PushActiveSnapshot(Snapshot snap) { - ActiveSnapshotElt *newactive; + ActiveSnapshotElt *newactive; Assert(snap != InvalidSnapshot); @@ -278,7 +278,7 @@ PushActiveSnapshot(Snapshot snap) /* * PushUpdatedSnapshot - * As above, except we set the snapshot's CID to the current CID. + * As above, except we set the snapshot's CID to the current CID. */ void PushUpdatedSnapshot(Snapshot snapshot) @@ -304,7 +304,7 @@ PushUpdatedSnapshot(Snapshot snapshot) void PopActiveSnapshot(void) { - ActiveSnapshotElt *newstack; + ActiveSnapshotElt *newstack; newstack = ActiveSnapshot->as_next; @@ -324,7 +324,7 @@ PopActiveSnapshot(void) /* * GetActiveSnapshot - * Return the topmost snapshot in the Active stack. + * Return the topmost snapshot in the Active stack. */ Snapshot GetActiveSnapshot(void) @@ -336,7 +336,7 @@ GetActiveSnapshot(void) /* * ActiveSnapshotSet - * Return whether there is at least one snapshot in the Active stack + * Return whether there is at least one snapshot in the Active stack */ bool ActiveSnapshotSet(void) @@ -346,7 +346,7 @@ ActiveSnapshotSet(void) /* * RegisterSnapshot - * Register a snapshot as being in use by the current resource owner + * Register a snapshot as being in use by the current resource owner * * If InvalidSnapshot is passed, it is not registered. */ @@ -361,12 +361,12 @@ RegisterSnapshot(Snapshot snapshot) /* * RegisterSnapshotOnOwner - * As above, but use the specified resource owner + * As above, but use the specified resource owner */ Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner) { - Snapshot snap; + Snapshot snap; if (snapshot == InvalidSnapshot) return InvalidSnapshot; @@ -402,7 +402,7 @@ UnregisterSnapshot(Snapshot snapshot) /* * UnregisterSnapshotFromOwner - * As above, but use the specified resource owner + * As above, but use the specified resource owner */ void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner) @@ -442,7 +442,7 @@ SnapshotResetXmin(void) void AtSubCommit_Snapshot(int level) { - ActiveSnapshotElt *active; + ActiveSnapshotElt *active; /* * Relabel the active snapshots set in this subtransaction as though they @@ -458,7 +458,7 @@ AtSubCommit_Snapshot(int level) /* * AtSubAbort_Snapshot - * Clean up snapshots after a subtransaction abort + * Clean up snapshots after a subtransaction abort */ void AtSubAbort_Snapshot(int level) @@ -466,7 +466,7 @@ AtSubAbort_Snapshot(int level) /* Forget the active snapshots set by this subtransaction */ while (ActiveSnapshot && ActiveSnapshot->as_level >= level) { - ActiveSnapshotElt *next; + ActiveSnapshotElt *next; next = ActiveSnapshot->as_next; @@ -500,8 +500,8 @@ void AtEarlyCommit_Snapshot(void) { /* - * On a serializable transaction we must unregister our private refcount to - * the serializable snapshot. + * On a serializable transaction we must unregister our private refcount + * to the serializable snapshot. */ if (registered_serializable) UnregisterSnapshotFromOwner(CurrentSnapshot, @@ -512,7 +512,7 @@ AtEarlyCommit_Snapshot(void) /* * AtEOXact_Snapshot - * Snapshot manager's cleanup function for end of transaction + * Snapshot manager's cleanup function for end of transaction */ void AtEOXact_Snapshot(bool isCommit) @@ -520,7 +520,7 @@ AtEOXact_Snapshot(bool isCommit) /* On commit, complain about leftover snapshots */ if (isCommit) { - ActiveSnapshotElt *active; + ActiveSnapshotElt *active; if (RegisteredSnapshots != 0) elog(WARNING, "%d registered snapshots seem to remain after cleanup", diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c index 3f5f7de1630..6d8f86acc96 100644 --- a/src/backend/utils/time/tqual.c +++ b/src/backend/utils/time/tqual.c @@ -28,29 +28,29 @@ * * Summary of visibility functions: * - * HeapTupleSatisfiesMVCC() - * visible to supplied snapshot, excludes current command - * HeapTupleSatisfiesNow() - * visible to instant snapshot, excludes current command - * HeapTupleSatisfiesUpdate() - * like HeapTupleSatisfiesNow(), but with user-supplied command - * counter and more complex result - * HeapTupleSatisfiesSelf() - * visible to instant snapshot and current command - * HeapTupleSatisfiesDirty() - * like HeapTupleSatisfiesSelf(), but includes open transactions - * HeapTupleSatisfiesVacuum() - * visible to any running transaction, used by VACUUM - * HeapTupleSatisfiesToast() - * visible unless part of interrupted vacuum, used for TOAST - * HeapTupleSatisfiesAny() - * all tuples are visible + * HeapTupleSatisfiesMVCC() + * visible to supplied snapshot, excludes current command + * HeapTupleSatisfiesNow() + * visible to instant snapshot, excludes current command + * HeapTupleSatisfiesUpdate() + * like HeapTupleSatisfiesNow(), but with user-supplied command + * counter and more complex result + * HeapTupleSatisfiesSelf() + * visible to instant snapshot and current command + * HeapTupleSatisfiesDirty() + * like HeapTupleSatisfiesSelf(), but includes open transactions + * HeapTupleSatisfiesVacuum() + * visible to any running transaction, used by VACUUM + * HeapTupleSatisfiesToast() + * visible unless part of interrupted vacuum, used for TOAST + * HeapTupleSatisfiesAny() + * all tuples are visible * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/time/tqual.c,v 1.112 2009/03/09 13:08:05 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/time/tqual.c,v 1.113 2009/06/11 14:49:06 momjian Exp $ * *------------------------------------------------------------------------- */ |