pgindent run.
authorBruce Momjian <[email protected]>
Mon, 4 Aug 2003 00:43:34 +0000 (00:43 +0000)
committerBruce Momjian <[email protected]>
Mon, 4 Aug 2003 00:43:34 +0000 (00:43 +0000)
554 files changed:
contrib/btree_gist/btree_common.c
contrib/btree_gist/btree_gist.h
contrib/cube/cube.c
contrib/dbase/dbf2pg.c
contrib/dblink/dblink.c
contrib/dbmirror/pending.c
contrib/dbsize/dbsize.c
contrib/earthdistance/earthdistance.c
contrib/findoidjoins/findoidjoins.c
contrib/fulltextindex/fti.c
contrib/fuzzystrmatch/fuzzystrmatch.c
contrib/intagg/int_aggregate.c
contrib/intarray/_int.h
contrib/intarray/_int_bool.c
contrib/intarray/_int_gist.c
contrib/intarray/_int_tool.c
contrib/ltree/_ltree_op.c
contrib/ltree/lquery_op.c
contrib/ltree/ltree_io.c
contrib/ltree/ltree_op.c
contrib/oid2name/oid2name.c
contrib/pg_autovacuum/pg_autovacuum.c
contrib/pg_autovacuum/pg_autovacuum.h
contrib/pg_dumplo/main.c
contrib/pgbench/pgbench.c
contrib/pgcrypto/openssl.c
contrib/pgcrypto/pgcrypto.c
contrib/pgstattuple/pgstattuple.c
contrib/spi/autoinc.c
contrib/spi/insert_username.c
contrib/spi/moddatetime.c
contrib/spi/refint.c
contrib/spi/timetravel.c
contrib/tablefunc/tablefunc.c
contrib/tsearch/morph.c
contrib/tsearch2/common.c
contrib/tsearch2/common.h
contrib/tsearch2/dict.c
contrib/tsearch2/dict.h
contrib/tsearch2/dict_ex.c
contrib/tsearch2/dict_ispell.c
contrib/tsearch2/dict_snowball.c
contrib/tsearch2/dict_syn.c
contrib/tsearch2/ispell/spell.c
contrib/tsearch2/ispell/spell.h
contrib/tsearch2/prs_dcfg.c
contrib/tsearch2/query.c
contrib/tsearch2/query.h
contrib/tsearch2/rank.c
contrib/tsearch2/snmap.c
contrib/tsearch2/snmap.h
contrib/tsearch2/snowball/api.c
contrib/tsearch2/snowball/api.h
contrib/tsearch2/snowball/english_stem.c
contrib/tsearch2/snowball/english_stem.h
contrib/tsearch2/snowball/header.h
contrib/tsearch2/snowball/russian_stem.c
contrib/tsearch2/snowball/russian_stem.h
contrib/tsearch2/snowball/utilities.c
contrib/tsearch2/stopword.c
contrib/tsearch2/ts_cfg.c
contrib/tsearch2/ts_cfg.h
contrib/tsearch2/ts_stat.c
contrib/tsearch2/ts_stat.h
contrib/tsearch2/tsvector.c
contrib/tsearch2/tsvector.h
contrib/tsearch2/tsvector_op.c
contrib/tsearch2/wordparser/deflex.c
contrib/tsearch2/wparser.c
contrib/tsearch2/wparser.h
contrib/tsearch2/wparser_def.c
contrib/xml/pgxml_dom.c
src/backend/access/common/heaptuple.c
src/backend/access/common/indextuple.c
src/backend/access/common/printtup.c
src/backend/access/gist/gistscan.c
src/backend/access/hash/hashfunc.c
src/backend/access/hash/hashovfl.c
src/backend/access/heap/heapam.c
src/backend/access/index/indexam.c
src/backend/access/nbtree/nbtinsert.c
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtree.c
src/backend/access/nbtree/nbtsearch.c
src/backend/access/nbtree/nbtsort.c
src/backend/access/nbtree/nbtxlog.c
src/backend/access/rtree/rtscan.c
src/backend/access/transam/clog.c
src/backend/access/transam/rmgr.c
src/backend/access/transam/slru.c
src/backend/access/transam/xact.c
src/backend/access/transam/xlog.c
src/backend/bootstrap/bootstrap.c
src/backend/catalog/aclchk.c
src/backend/catalog/dependency.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/namespace.c
src/backend/catalog/pg_aggregate.c
src/backend/catalog/pg_constraint.c
src/backend/catalog/pg_conversion.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_proc.c
src/backend/catalog/pg_type.c
src/backend/commands/aggregatecmds.c
src/backend/commands/alter.c
src/backend/commands/analyze.c
src/backend/commands/async.c
src/backend/commands/cluster.c
src/backend/commands/comment.c
src/backend/commands/conversioncmds.c
src/backend/commands/copy.c
src/backend/commands/dbcommands.c
src/backend/commands/define.c
src/backend/commands/explain.c
src/backend/commands/functioncmds.c
src/backend/commands/indexcmds.c
src/backend/commands/opclasscmds.c
src/backend/commands/operatorcmds.c
src/backend/commands/portalcmds.c
src/backend/commands/prepare.c
src/backend/commands/proclang.c
src/backend/commands/schemacmds.c
src/backend/commands/sequence.c
src/backend/commands/tablecmds.c
src/backend/commands/trigger.c
src/backend/commands/typecmds.c
src/backend/commands/user.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/backend/commands/variable.c
src/backend/commands/view.c
src/backend/executor/execAmi.c
src/backend/executor/execGrouping.c
src/backend/executor/execMain.c
src/backend/executor/execProcnode.c
src/backend/executor/execQual.c
src/backend/executor/execScan.c
src/backend/executor/execTuples.c
src/backend/executor/execUtils.c
src/backend/executor/functions.c
src/backend/executor/nodeAgg.c
src/backend/executor/nodeAppend.c
src/backend/executor/nodeHash.c
src/backend/executor/nodeHashjoin.c
src/backend/executor/nodeIndexscan.c
src/backend/executor/nodeLimit.c
src/backend/executor/nodeMaterial.c
src/backend/executor/nodeMergejoin.c
src/backend/executor/nodeNestloop.c
src/backend/executor/nodeResult.c
src/backend/executor/nodeSeqscan.c
src/backend/executor/nodeSubplan.c
src/backend/executor/nodeSubqueryscan.c
src/backend/executor/nodeUnique.c
src/backend/executor/spi.c
src/backend/executor/tstoreReceiver.c
src/backend/lib/stringinfo.c
src/backend/libpq/auth.c
src/backend/libpq/be-fsstubs.c
src/backend/libpq/be-secure.c
src/backend/libpq/crypt.c
src/backend/libpq/hba.c
src/backend/libpq/ip.c
src/backend/libpq/md5.c
src/backend/libpq/pqcomm.c
src/backend/libpq/pqformat.c
src/backend/main/main.c
src/backend/nodes/bitmapset.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/list.c
src/backend/nodes/nodes.c
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/geqo/geqo_eval.c
src/backend/optimizer/geqo/geqo_main.c
src/backend/optimizer/geqo/geqo_misc.c
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/costsize.c
src/backend/optimizer/path/indxpath.c
src/backend/optimizer/path/joinpath.c
src/backend/optimizer/path/joinrels.c
src/backend/optimizer/path/orindxpath.c
src/backend/optimizer/path/pathkeys.c
src/backend/optimizer/path/tidpath.c
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/initsplan.c
src/backend/optimizer/plan/planmain.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/plan/subselect.c
src/backend/optimizer/prep/prepjointree.c
src/backend/optimizer/prep/prepqual.c
src/backend/optimizer/prep/preptlist.c
src/backend/optimizer/prep/prepunion.c
src/backend/optimizer/util/clauses.c
src/backend/optimizer/util/joininfo.c
src/backend/optimizer/util/pathnode.c
src/backend/optimizer/util/plancat.c
src/backend/optimizer/util/relnode.c
src/backend/optimizer/util/restrictinfo.c
src/backend/optimizer/util/tlist.c
src/backend/optimizer/util/var.c
src/backend/parser/analyze.c
src/backend/parser/parse_agg.c
src/backend/parser/parse_clause.c
src/backend/parser/parse_coerce.c
src/backend/parser/parse_expr.c
src/backend/parser/parse_func.c
src/backend/parser/parse_node.c
src/backend/parser/parse_oper.c
src/backend/parser/parse_relation.c
src/backend/parser/parse_target.c
src/backend/parser/parse_type.c
src/backend/port/beos/sem.c
src/backend/port/dynloader/darwin.c
src/backend/port/dynloader/linux.c
src/backend/port/dynloader/linux.h
src/backend/port/dynloader/win32.c
src/backend/port/ipc_test.c
src/backend/port/posix_sema.c
src/backend/port/sysv_sema.c
src/backend/port/sysv_shmem.c
src/backend/port/win32/sema.c
src/backend/postmaster/pgstat.c
src/backend/postmaster/postmaster.c
src/backend/regex/regc_color.c
src/backend/regex/regc_cvec.c
src/backend/regex/regc_lex.c
src/backend/regex/regc_locale.c
src/backend/regex/regc_nfa.c
src/backend/regex/regcomp.c
src/backend/regex/rege_dfa.c
src/backend/regex/regerror.c
src/backend/regex/regexec.c
src/backend/regex/regfree.c
src/backend/rewrite/rewriteDefine.c
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteManip.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/file/fd.c
src/backend/storage/freespace/freespace.c
src/backend/storage/ipc/ipc.c
src/backend/storage/ipc/ipci.c
src/backend/storage/ipc/sinval.c
src/backend/storage/lmgr/deadlock.c
src/backend/storage/lmgr/lock.c
src/backend/storage/lmgr/proc.c
src/backend/storage/page/bufpage.c
src/backend/storage/smgr/md.c
src/backend/tcop/dest.c
src/backend/tcop/fastpath.c
src/backend/tcop/postgres.c
src/backend/tcop/pquery.c
src/backend/tcop/utility.c
src/backend/utils/adt/acl.c
src/backend/utils/adt/array_userfuncs.c
src/backend/utils/adt/arrayfuncs.c
src/backend/utils/adt/ascii.c
src/backend/utils/adt/char.c
src/backend/utils/adt/date.c
src/backend/utils/adt/datetime.c
src/backend/utils/adt/float.c
src/backend/utils/adt/formatting.c
src/backend/utils/adt/geo_ops.c
src/backend/utils/adt/inet_net_ntop.c
src/backend/utils/adt/inet_net_pton.c
src/backend/utils/adt/int.c
src/backend/utils/adt/int8.c
src/backend/utils/adt/like.c
src/backend/utils/adt/like_match.c
src/backend/utils/adt/mac.c
src/backend/utils/adt/nabstime.c
src/backend/utils/adt/name.c
src/backend/utils/adt/network.c
src/backend/utils/adt/not_in.c
src/backend/utils/adt/numeric.c
src/backend/utils/adt/numutils.c
src/backend/utils/adt/oid.c
src/backend/utils/adt/oracle_compat.c
src/backend/utils/adt/pg_locale.c
src/backend/utils/adt/pgstatfuncs.c
src/backend/utils/adt/pseudotypes.c
src/backend/utils/adt/regexp.c
src/backend/utils/adt/regproc.c
src/backend/utils/adt/ri_triggers.c
src/backend/utils/adt/ruleutils.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/adt/sets.c
src/backend/utils/adt/timestamp.c
src/backend/utils/adt/varbit.c
src/backend/utils/adt/varchar.c
src/backend/utils/adt/varlena.c
src/backend/utils/adt/xid.c
src/backend/utils/cache/catcache.c
src/backend/utils/cache/inval.c
src/backend/utils/cache/lsyscache.c
src/backend/utils/cache/relcache.c
src/backend/utils/error/elog.c
src/backend/utils/fmgr/dfmgr.c
src/backend/utils/fmgr/fmgr.c
src/backend/utils/init/findbe.c
src/backend/utils/init/miscinit.c
src/backend/utils/init/postinit.c
src/backend/utils/mb/conv.c
src/backend/utils/mb/mbutils.c
src/backend/utils/mb/wchar.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/help_config.c
src/backend/utils/mmgr/aset.c
src/backend/utils/mmgr/mcxt.c
src/backend/utils/mmgr/portalmem.c
src/backend/utils/sort/logtape.c
src/backend/utils/sort/tuplesort.c
src/backend/utils/sort/tuplestore.c
src/backend/utils/time/tqual.c
src/bin/pg_controldata/pg_controldata.c
src/bin/pg_dump/common.c
src/bin/pg_dump/dumputils.c
src/bin/pg_dump/dumputils.h
src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_backup_archiver.h
src/bin/pg_dump/pg_backup_custom.c
src/bin/pg_dump/pg_backup_tar.c
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h
src/bin/pg_dump/pg_dumpall.c
src/bin/pg_dump/pg_restore.c
src/bin/pg_encoding/pg_encoding.c
src/bin/pg_resetxlog/pg_resetxlog.c
src/bin/psql/command.c
src/bin/psql/common.c
src/bin/psql/copy.c
src/bin/psql/describe.c
src/bin/psql/help.c
src/bin/psql/input.c
src/bin/psql/large_obj.c
src/bin/psql/mainloop.c
src/bin/psql/mbprint.c
src/bin/psql/print.c
src/bin/psql/print.h
src/bin/psql/prompt.c
src/bin/psql/sprompt.c
src/bin/psql/startup.c
src/bin/psql/stringutils.c
src/bin/psql/tab-complete.c
src/bin/psql/variables.c
src/bin/psql/variables.h
src/bin/scripts/clusterdb.c
src/bin/scripts/common.c
src/bin/scripts/common.h
src/bin/scripts/createdb.c
src/bin/scripts/createlang.c
src/bin/scripts/createuser.c
src/bin/scripts/dropdb.c
src/bin/scripts/droplang.c
src/bin/scripts/vacuumdb.c
src/include/access/genam.h
src/include/access/heapam.h
src/include/access/nbtree.h
src/include/access/printtup.h
src/include/access/relscan.h
src/include/access/slru.h
src/include/access/xact.h
src/include/access/xlog.h
src/include/c.h
src/include/catalog/catversion.h
src/include/catalog/dependency.h
src/include/catalog/pg_am.h
src/include/catalog/pg_amproc.h
src/include/catalog/pg_attribute.h
src/include/catalog/pg_cast.h
src/include/catalog/pg_constraint.h
src/include/catalog/pg_opclass.h
src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h
src/include/catalog/pg_statistic.h
src/include/catalog/pg_type.h
src/include/commands/alter.h
src/include/commands/dbcommands.h
src/include/commands/explain.h
src/include/commands/portalcmds.h
src/include/commands/prepare.h
src/include/commands/sequence.h
src/include/commands/trigger.h
src/include/commands/typecmds.h
src/include/executor/execdesc.h
src/include/executor/executor.h
src/include/executor/hashjoin.h
src/include/executor/nodeHash.h
src/include/executor/nodeSeqscan.h
src/include/executor/nodeSubplan.h
src/include/executor/spi.h
src/include/executor/spi_priv.h
src/include/executor/tstoreReceiver.h
src/include/getaddrinfo.h
src/include/getopt_long.h
src/include/lib/stringinfo.h
src/include/libpq/crypt.h
src/include/libpq/ip.h
src/include/libpq/libpq-be.h
src/include/libpq/libpq.h
src/include/libpq/pqcomm.h
src/include/libpq/pqformat.h
src/include/mb/pg_wchar.h
src/include/miscadmin.h
src/include/nodes/bitmapset.h
src/include/nodes/execnodes.h
src/include/nodes/makefuncs.h
src/include/nodes/nodes.h
src/include/nodes/params.h
src/include/nodes/parsenodes.h
src/include/nodes/pg_list.h
src/include/nodes/plannodes.h
src/include/nodes/primnodes.h
src/include/nodes/relation.h
src/include/optimizer/clauses.h
src/include/optimizer/cost.h
src/include/optimizer/geqo_misc.h
src/include/optimizer/joininfo.h
src/include/optimizer/pathnode.h
src/include/optimizer/paths.h
src/include/optimizer/plancat.h
src/include/optimizer/planmain.h
src/include/optimizer/prep.h
src/include/optimizer/restrictinfo.h
src/include/optimizer/tlist.h
src/include/parser/analyze.h
src/include/parser/parse_agg.h
src/include/parser/parse_clause.h
src/include/parser/parse_coerce.h
src/include/parser/parse_func.h
src/include/parser/parse_node.h
src/include/parser/parse_oper.h
src/include/pg_config_manual.h
src/include/pgstat.h
src/include/port.h
src/include/port/bsdi.h
src/include/port/cygwin.h
src/include/port/freebsd.h
src/include/port/hpux.h
src/include/port/netbsd.h
src/include/port/openbsd.h
src/include/port/win32.h
src/include/port/win32/dlfcn.h
src/include/port/win32/grp.h
src/include/port/win32/netdb.h
src/include/port/win32/netinet/in.h
src/include/port/win32/pwd.h
src/include/port/win32/sys/socket.h
src/include/port/win32/sys/wait.h
src/include/postgres.h
src/include/regex/regcustom.h
src/include/regex/regerrs.h
src/include/regex/regex.h
src/include/regex/regguts.h
src/include/storage/bufmgr.h
src/include/storage/freespace.h
src/include/storage/lock.h
src/include/tcop/dest.h
src/include/tcop/pquery.h
src/include/tcop/tcopprot.h
src/include/utils/acl.h
src/include/utils/array.h
src/include/utils/builtins.h
src/include/utils/datetime.h
src/include/utils/elog.h
src/include/utils/errcodes.h
src/include/utils/guc.h
src/include/utils/guc_tables.h
src/include/utils/help_config.h
src/include/utils/inet.h
src/include/utils/lsyscache.h
src/include/utils/memutils.h
src/include/utils/palloc.h
src/include/utils/portal.h
src/include/utils/rel.h
src/include/utils/selfuncs.h
src/include/utils/tuplestore.h
src/interfaces/ecpg/compatlib/informix.c
src/interfaces/ecpg/ecpglib/connect.c
src/interfaces/ecpg/ecpglib/data.c
src/interfaces/ecpg/ecpglib/descriptor.c
src/interfaces/ecpg/ecpglib/error.c
src/interfaces/ecpg/ecpglib/execute.c
src/interfaces/ecpg/ecpglib/extern.h
src/interfaces/ecpg/ecpglib/misc.c
src/interfaces/ecpg/ecpglib/prepare.c
src/interfaces/ecpg/include/datetime.h
src/interfaces/ecpg/include/decimal.h
src/interfaces/ecpg/include/ecpg_informix.h
src/interfaces/ecpg/include/ecpgerrno.h
src/interfaces/ecpg/include/ecpglib.h
src/interfaces/ecpg/include/ecpgtype.h
src/interfaces/ecpg/include/pgtypes_date.h
src/interfaces/ecpg/include/pgtypes_error.h
src/interfaces/ecpg/include/pgtypes_interval.h
src/interfaces/ecpg/include/pgtypes_numeric.h
src/interfaces/ecpg/include/pgtypes_timestamp.h
src/interfaces/ecpg/include/sqlca.h
src/interfaces/ecpg/include/sqlda.h
src/interfaces/ecpg/include/sqltypes.h
src/interfaces/ecpg/pgtypeslib/common.c
src/interfaces/ecpg/pgtypeslib/datetime.c
src/interfaces/ecpg/pgtypeslib/dt.h
src/interfaces/ecpg/pgtypeslib/dt_common.c
src/interfaces/ecpg/pgtypeslib/extern.h
src/interfaces/ecpg/pgtypeslib/interval.c
src/interfaces/ecpg/pgtypeslib/numeric.c
src/interfaces/ecpg/pgtypeslib/timestamp.c
src/interfaces/ecpg/preproc/c_keywords.c
src/interfaces/ecpg/preproc/ecpg.c
src/interfaces/ecpg/preproc/extern.h
src/interfaces/ecpg/preproc/type.c
src/interfaces/ecpg/preproc/type.h
src/interfaces/ecpg/preproc/variable.c
src/interfaces/libpgtcl/pgtclCmds.c
src/interfaces/libpgtcl/pgtclCmds.h
src/interfaces/libpgtcl/pgtclId.c
src/interfaces/libpgtcl/pgtclId.h
src/interfaces/libpq/fe-auth.c
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-lobj.c
src/interfaces/libpq/fe-misc.c
src/interfaces/libpq/fe-protocol2.c
src/interfaces/libpq/fe-protocol3.c
src/interfaces/libpq/fe-secure.c
src/interfaces/libpq/libpq-fe.h
src/interfaces/libpq/libpq-int.h
src/pl/plperl/plperl.c
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/pl_funcs.c
src/pl/plpgsql/src/pl_handler.c
src/pl/plpgsql/src/plpgsql.h
src/pl/plpython/plpython.c
src/pl/tcl/pltcl.c
src/port/copydir.c
src/port/crypt.c
src/port/dirmod.c
src/port/fseeko.c
src/port/getaddrinfo.c
src/port/getopt.c
src/port/getopt_long.c
src/port/gettimeofday.c
src/port/path.c
src/port/threads.c
src/test/examples/testlibpq.c
src/test/examples/testlibpq2.c
src/test/examples/testlibpq3.c
src/test/regress/regress.c
src/tutorial/complex.c

index 9873af911c3bac2c7998ef9f67cd56d89e72de06..9306076e0aed94434980f1bfdb8377b7c68455c0 100644 (file)
@@ -1,7 +1,7 @@
 #include "btree_gist.h"
 
 PG_FUNCTION_INFO_V1(btree_decompress);
-Datum   btree_decompress(PG_FUNCTION_ARGS);
+Datum      btree_decompress(PG_FUNCTION_ARGS);
 
 /*
 ** GiST DeCompress methods
index ebcecf4cc53fd354e6e4f1fc3916d7480595fd87..ecbabc2dbb34e1017c31d5f7881cb5135433a348 100644 (file)
@@ -23,4 +23,3 @@ typedef struct rix
 
 extern GIST_SPLITVEC *btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v,
                BINARY_UNION bu, CMPFUNC cmp);
-
index 5d8bcf75b5d74fa216ca0fd2c3a975f263b6caa1..396253261d95f57d4c4205f14720dc5b7a0a7cfa 100644 (file)
@@ -28,11 +28,11 @@ extern int  cube_yyparse();
 NDBOX     *cube_in(char *str);
 NDBOX     *cube(text *str);
 char      *cube_out(NDBOX * cube);
-NDBOX      *cube_f8(double *);
-NDBOX      *cube_f8_f8(double *, double *);
-NDBOX      *cube_c_f8(NDBOX *, double *);
-NDBOX      *cube_c_f8_f8(NDBOX *, double *, double *);
-int4           cube_dim(NDBOX * a);
+NDBOX     *cube_f8(double *);
+NDBOX     *cube_f8_f8(double *, double *);
+NDBOX     *cube_c_f8(NDBOX *, double *);
+NDBOX     *cube_c_f8_f8(NDBOX *, double *, double *);
+int4       cube_dim(NDBOX * a);
 double    *cube_ll_coord(NDBOX * a, int4 n);
 double    *cube_ur_coord(NDBOX * a, int4 n);
 
@@ -123,7 +123,7 @@ cube_out(NDBOX * cube)
    bool        equal = true;
    int         dim = cube->dim;
    int         i;
-   int     ndig;
+   int         ndig;
 
    initStringInfo(&buf);
 
@@ -131,7 +131,8 @@ cube_out(NDBOX * cube)
     * Get the number of digits to display.
     */
    ndig = DBL_DIG + extra_float_digits;
-   if (ndig < 1) ndig = 1;
+   if (ndig < 1)
+       ndig = 1;
 
    /*
     * while printing the first (LL) corner, check if it is equal to the
@@ -1192,7 +1193,8 @@ cube_enlarge(NDBOX * a, double *r, int4 n)
                j,
                k;
 
-   if (n > CUBE_MAX_DIM) n = CUBE_MAX_DIM;
+   if (n > CUBE_MAX_DIM)
+       n = CUBE_MAX_DIM;
    if (*r > 0 && n > 0)
        dim = n;
    if (a->dim > dim)
@@ -1234,14 +1236,15 @@ NDBOX *
 cube_f8(double *x1)
 {
    NDBOX      *result;
-        int        size;
+   int         size;
+
    size = offsetof(NDBOX, x[0]) + sizeof(double) * 2;
    result = (NDBOX *) palloc(size);
    memset(result, 0, size);
    result->size = size;
    result->dim = 1;
-        result->x[0] = *x1;
-        result->x[1] = *x1;
+   result->x[0] = *x1;
+   result->x[1] = *x1;
    return result;
 }
 
@@ -1250,56 +1253,61 @@ NDBOX *
 cube_f8_f8(double *x1, double *x2)
 {
    NDBOX      *result;
-        int        size;
+   int         size;
+
    size = offsetof(NDBOX, x[0]) + sizeof(double) * 2;
    result = (NDBOX *) palloc(size);
    memset(result, 0, size);
    result->size = size;
    result->dim = 1;
-        result->x[0] = *x1;
-        result->x[1] = *x2;
+   result->x[0] = *x1;
+   result->x[1] = *x2;
    return result;
 }
 
 /* Add a dimension to an existing cube with the same values for the new
    coordinate */
 NDBOX *
-cube_c_f8(NDBOX *c, double *x1)
+cube_c_f8(NDBOX * c, double *x1)
 {
    NDBOX      *result;
-        int        size;
-        int        i;
-   size = offsetof(NDBOX, x[0]) + sizeof(double) * (c->dim + 1) * 2;
+   int         size;
+   int         i;
+
+   size = offsetof(NDBOX, x[0]) + sizeof(double) * (c->dim + 1) *2;
    result = (NDBOX *) palloc(size);
    memset(result, 0, size);
    result->size = size;
    result->dim = c->dim + 1;
-        for (i = 0; i < c->dim; i++) {
-            result->x[i] = c->x[i];
-            result->x[result->dim + i] = c->x[c->dim + i];
-        }
-        result->x[result->dim - 1] = *x1;
-        result->x[2 * result->dim - 1] = *x1;
+   for (i = 0; i < c->dim; i++)
+   {
+       result->x[i] = c->x[i];
+       result->x[result->dim + i] = c->x[c->dim + i];
+   }
+   result->x[result->dim - 1] = *x1;
+   result->x[2 * result->dim - 1] = *x1;
    return result;
 }
 
 /* Add a dimension to an existing cube */
 NDBOX *
-cube_c_f8_f8(NDBOX *c, double *x1, double *x2)
+cube_c_f8_f8(NDBOX * c, double *x1, double *x2)
 {
    NDBOX      *result;
-        int        size;
-        int        i;
-   size = offsetof(NDBOX, x[0]) + sizeof(double) * (c->dim + 1) * 2;
+   int         size;
+   int         i;
+
+   size = offsetof(NDBOX, x[0]) + sizeof(double) * (c->dim + 1) *2;
    result = (NDBOX *) palloc(size);
    memset(result, 0, size);
    result->size = size;
    result->dim = c->dim + 1;
-        for (i = 0; i < c->dim; i++) {
-            result->x[i] = c->x[i];
-            result->x[result->dim + i] = c->x[c->dim + i];
-        }
-        result->x[result->dim - 1] = *x1;
-        result->x[2 * result->dim - 1] = *x2;
+   for (i = 0; i < c->dim; i++)
+   {
+       result->x[i] = c->x[i];
+       result->x[result->dim + i] = c->x[c->dim + i];
+   }
+   result->x[result->dim - 1] = *x1;
+   result->x[2 * result->dim - 1] = *x2;
    return result;
 }
index 0ae53cd126d48a51426dcd134c590d98cd9d3655..d679eed1ad895652ad49a75f6787abcbc7c395cc 100644 (file)
@@ -443,17 +443,15 @@ do_inserts(PGconn *conn, char *table, dbhead * dbh)
        if (result == DBF_VALID)
        {
            query[0] = '\0';
-           j = 0; /* counter for fields in the output */
+           j = 0;              /* counter for fields in the output */
            for (h = 0; h < dbh->db_nfields; h++)
            {
-               if (!strlen(fields[h].db_name)) /* When the new fieldname is empty, the field is skipped */
-               {
+               if (!strlen(fields[h].db_name)) /* When the new fieldname
+                                                * is empty, the field is
+                                                * skipped */
                    continue;
-               }
                else
-               {
                    j++;
-               }
 
                if (j > 1)      /* not for the first field! */
                    strcat(query, "\t");        /* COPY statement field
index 158942a4c046af2d2f31f230ecb083b7f75bbb1b..629f93f1c64b0a5e05fcbb537f672f7d88d294ef 100644 (file)
 
 typedef struct remoteConn
 {
-   PGconn *con;            /* Hold the remote connection */
-   bool remoteTrFlag;      /* Indicates whether or not a transaction
-                            * on remote database is in progress*/
-} remoteConn;
+   PGconn     *con;            /* Hold the remote connection */
+   bool        remoteTrFlag;   /* Indicates whether or not a transaction
+                                * on remote database is in progress */
+}  remoteConn;
 
 /*
  * Internal declarations
  */
 static remoteConn *getConnectionByName(const char *name);
 static HTAB *createConnHash(void);
-static void createNewConnection(const char *name,remoteConn *con);
+static void createNewConnection(const char *name, remoteConn * con);
 static void deleteConnection(const char *name);
 static char **get_pkey_attnames(Oid relid, int16 *numatts);
 static char *get_sql_insert(Oid relid, int16 *pkattnums, int16 pknumatts, char **src_pkattvals, char **tgt_pkattvals);
@@ -86,15 +86,15 @@ static TupleDesc pgresultGetTupleDesc(PGresult *res);
 static char *generate_relation_name(Oid relid);
 
 /* Global */
-List   *res_id = NIL;
-int        res_id_index = 0;
-PGconn *persistent_conn = NULL;
-static HTAB *remoteConnHash=NULL;
+List      *res_id = NIL;
+int            res_id_index = 0;
+PGconn    *persistent_conn = NULL;
+static HTAB *remoteConnHash = NULL;
 
-/* 
+/*
 Following is list that holds multiple remote connections.
 Calling convention of each dblink function changes to accept
-connection name as the first parameter. The connection list is 
+connection name as the first parameter. The connection list is
 much like ecpg e.g. a mapping between a name and a PGconn object.
 */
 
@@ -102,7 +102,7 @@ typedef struct remoteConnHashEnt
 {
    char        name[NAMEDATALEN];
    remoteConn *rcon;
-} remoteConnHashEnt;
+}  remoteConnHashEnt;
 
 /* initial number of connection hashes */
 #define NUMCONN 16
@@ -186,18 +186,18 @@ dblink_connect(PG_FUNCTION_ARGS)
    PGconn     *conn = NULL;
    remoteConn *rcon = NULL;
 
-   if(PG_NARGS()==2)
+   if (PG_NARGS() == 2)
    {
        connstr = GET_STR(PG_GETARG_TEXT_P(1));
        connname = GET_STR(PG_GETARG_TEXT_P(0));
    }
-   else if(PG_NARGS()==1)
+   else if (PG_NARGS() == 1)
        connstr = GET_STR(PG_GETARG_TEXT_P(0));
 
    oldcontext = MemoryContextSwitchTo(TopMemoryContext);
 
-   if(connname)
-       rcon=(remoteConn *) palloc(sizeof(remoteConn));
+   if (connname)
+       rcon = (remoteConn *) palloc(sizeof(remoteConn));
    conn = PQconnectdb(connstr);
 
    MemoryContextSwitchTo(oldcontext);
@@ -206,16 +206,16 @@ dblink_connect(PG_FUNCTION_ARGS)
    {
        msg = pstrdup(PQerrorMessage(conn));
        PQfinish(conn);
-       if(rcon)
+       if (rcon)
            pfree(rcon);
 
        ereport(ERROR,
-               (errcode(ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION),
-                errmsg("could not establish connection"),
-                errdetail("%s", msg)));
+          (errcode(ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION),
+           errmsg("could not establish connection"),
+           errdetail("%s", msg)));
    }
 
-   if(connname)
+   if (connname)
    {
        rcon->con = conn;
        createNewConnection(connname, rcon);
@@ -237,7 +237,7 @@ dblink_disconnect(PG_FUNCTION_ARGS)
    remoteConn *rcon = NULL;
    PGconn     *conn = NULL;
 
-   if (PG_NARGS() ==)
+   if (PG_NARGS() == 1)
    {
        conname = GET_STR(PG_GETARG_TEXT_P(0));
        rcon = getConnectionByName(conname);
@@ -276,13 +276,13 @@ dblink_open(PG_FUNCTION_ARGS)
    StringInfo  str = makeStringInfo();
    remoteConn *rcon = NULL;
 
-   if(PG_NARGS() == 2)
+   if (PG_NARGS() == 2)
    {
        curname = GET_STR(PG_GETARG_TEXT_P(0));
        sql = GET_STR(PG_GETARG_TEXT_P(1));
        conn = persistent_conn;
    }
-   else if(PG_NARGS() == 3)
+   else if (PG_NARGS() == 3)
    {
        conname = GET_STR(PG_GETARG_TEXT_P(0));
        curname = GET_STR(PG_GETARG_TEXT_P(1));
@@ -333,12 +333,12 @@ dblink_close(PG_FUNCTION_ARGS)
        curname = GET_STR(PG_GETARG_TEXT_P(0));
        conn = persistent_conn;
    }
-   else if (PG_NARGS()==2)
+   else if (PG_NARGS() == 2)
    {
        conname = GET_STR(PG_GETARG_TEXT_P(0));
        curname = GET_STR(PG_GETARG_TEXT_P(1));
        rcon = getConnectionByName(conname);
-       if(rcon)
+       if (rcon)
            conn = rcon->con;
    }
 
@@ -381,7 +381,7 @@ dblink_fetch(PG_FUNCTION_ARGS)
    PGresult   *res = NULL;
    MemoryContext oldcontext;
    char       *conname = NULL;
-   remoteConn *rcon=NULL;
+   remoteConn *rcon = NULL;
 
    /* stuff done only on the first call of the function */
    if (SRF_IS_FIRSTCALL())
@@ -401,7 +401,7 @@ dblink_fetch(PG_FUNCTION_ARGS)
            howmany = PG_GETARG_INT32(2);
 
            rcon = getConnectionByName(conname);
-           if(rcon)
+           if (rcon)
                conn = rcon->con;
        }
        else if (PG_NARGS() == 2)
@@ -411,7 +411,7 @@ dblink_fetch(PG_FUNCTION_ARGS)
            conn = persistent_conn;
        }
 
-       if(!conn)
+       if (!conn)
            DBLINK_CONN_NOT_AVAIL;
 
        /* create a function context for cross-call persistence */
@@ -429,9 +429,7 @@ dblink_fetch(PG_FUNCTION_ARGS)
        if (!res ||
            (PQresultStatus(res) != PGRES_COMMAND_OK &&
             PQresultStatus(res) != PGRES_TUPLES_OK))
-       {
            DBLINK_RES_ERROR("sql error");
-       }
        else if (PQresultStatus(res) == PGRES_COMMAND_OK)
        {
            /* cursor does not exist - closed already or bad name */
@@ -549,7 +547,7 @@ dblink_record(PG_FUNCTION_ARGS)
        char       *connstr = NULL;
        char       *sql = NULL;
        char       *conname = NULL;
-       remoteConn *rcon=NULL;
+       remoteConn *rcon = NULL;
 
        /* create a function context for cross-call persistence */
        funcctx = SRF_FIRSTCALL_INIT();
@@ -574,7 +572,7 @@ dblink_record(PG_FUNCTION_ARGS)
            /* shouldn't happen */
            elog(ERROR, "wrong number of arguments");
 
-       if(!conn)
+       if (!conn)
            DBLINK_CONN_NOT_AVAIL;
 
        res = PQexec(conn, sql);
@@ -591,8 +589,8 @@ dblink_record(PG_FUNCTION_ARGS)
                               TEXTOID, -1, 0, false);
 
            /*
-            * and save a copy of the command status string to return
-            * as our result tuple
+            * and save a copy of the command status string to return as
+            * our result tuple
             */
            sql_cmd_status = PQcmdStatus(res);
            funcctx->max_calls = 1;
@@ -707,7 +705,7 @@ dblink_exec(PG_FUNCTION_ARGS)
    char       *connstr = NULL;
    char       *sql = NULL;
    char       *conname = NULL;
-   remoteConn *rcon=NULL;
+   remoteConn *rcon = NULL;
    bool        freeconn = true;
 
    if (PG_NARGS() == 2)
@@ -724,7 +722,7 @@ dblink_exec(PG_FUNCTION_ARGS)
        /* shouldn't happen */
        elog(ERROR, "wrong number of arguments");
 
-   if(!conn)
+   if (!conn)
        DBLINK_CONN_NOT_AVAIL;
 
    res = PQexec(conn, sql);
@@ -741,15 +739,15 @@ dblink_exec(PG_FUNCTION_ARGS)
                           TEXTOID, -1, 0, false);
 
        /*
-        * and save a copy of the command status string to return as
-        * our result tuple
+        * and save a copy of the command status string to return as our
+        * result tuple
         */
        sql_cmd_status = GET_TEXT(PQcmdStatus(res));
    }
    else
        ereport(ERROR,
-               (errcode(ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED),
-                errmsg("statement returning results not allowed")));
+             (errcode(ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED),
+              errmsg("statement returning results not allowed")));
 
    PQclear(res);
 
@@ -802,6 +800,7 @@ dblink_get_pkey(PG_FUNCTION_ARGS)
                    (errcode(ERRCODE_UNDEFINED_TABLE),
                     errmsg("relation \"%s\" does not exist",
                            GET_STR(PG_GETARG_TEXT_P(0)))));
+
        /*
         * need a tuple descriptor representing one INT and one TEXT
         * column
@@ -980,8 +979,8 @@ dblink_build_sql_insert(PG_FUNCTION_ARGS)
    if (src_nitems != pknumatts)
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                errmsg("source key array length must match number of key " \
-                       "attributes")));
+            errmsg("source key array length must match number of key " \
+                   "attributes")));
 
    /*
     * get array of pointers to c-strings from the input source array
@@ -1013,8 +1012,8 @@ dblink_build_sql_insert(PG_FUNCTION_ARGS)
    if (tgt_nitems != pknumatts)
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                errmsg("target key array length must match number of key " \
-                       "attributes")));
+            errmsg("target key array length must match number of key " \
+                   "attributes")));
 
    /*
     * get array of pointers to c-strings from the input target array
@@ -1126,8 +1125,8 @@ dblink_build_sql_delete(PG_FUNCTION_ARGS)
    if (tgt_nitems != pknumatts)
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                errmsg("target key array length must match number of key " \
-                       "attributes")));
+            errmsg("target key array length must match number of key " \
+                   "attributes")));
 
    /*
     * get array of pointers to c-strings from the input target array
@@ -1249,8 +1248,8 @@ dblink_build_sql_update(PG_FUNCTION_ARGS)
    if (src_nitems != pknumatts)
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                errmsg("source key array length must match number of key " \
-                       "attributes")));
+            errmsg("source key array length must match number of key " \
+                   "attributes")));
 
    /*
     * get array of pointers to c-strings from the input source array
@@ -1282,8 +1281,8 @@ dblink_build_sql_update(PG_FUNCTION_ARGS)
    if (tgt_nitems != pknumatts)
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                errmsg("target key array length must match number of key " \
-                       "attributes")));
+            errmsg("target key array length must match number of key " \
+                   "attributes")));
 
    /*
     * get array of pointers to c-strings from the input target array
@@ -1839,10 +1838,10 @@ pgresultGetTupleDesc(PGresult *res)
            ereport(ERROR,
                    (errcode(ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH),
                     errmsg("field size mismatch"),
-                    errdetail("Size of remote field \"%s\" does not match " \
-                               "size of local type \"%s\".", attname,
-                               format_type_with_typemod(atttypid,
-                                                        atttypmod))));
+               errdetail("Size of remote field \"%s\" does not match " \
+                         "size of local type \"%s\".", attname,
+                         format_type_with_typemod(atttypid,
+                                                  atttypmod))));
 
        attdim = 0;
        attisset = false;
@@ -1893,50 +1892,50 @@ generate_relation_name(Oid relid)
 static remoteConn *
 getConnectionByName(const char *name)
 {
-   remoteConnHashEnt  *hentry;
-   char                key[NAMEDATALEN];
+   remoteConnHashEnt *hentry;
+   char        key[NAMEDATALEN];
 
-   if(!remoteConnHash)
-       remoteConnHash=createConnHash();
+   if (!remoteConnHash)
+       remoteConnHash = createConnHash();
 
    MemSet(key, 0, NAMEDATALEN);
    snprintf(key, NAMEDATALEN - 1, "%s", name);
-   hentry = (remoteConnHashEnt*) hash_search(remoteConnHash,
-                                             key, HASH_FIND, NULL);
+   hentry = (remoteConnHashEnt *) hash_search(remoteConnHash,
+                                              key, HASH_FIND, NULL);
 
-   if(hentry)
-       return(hentry->rcon);
+   if (hentry)
+       return (hentry->rcon);
 
-   return(NULL);
+   return (NULL);
 }
 
 static HTAB *
 createConnHash(void)
 {
-   HASHCTL ctl;
-   HTAB   *ptr;
+   HASHCTL     ctl;
+   HTAB       *ptr;
 
    ctl.keysize = NAMEDATALEN;
    ctl.entrysize = sizeof(remoteConnHashEnt);
 
-   ptr=hash_create("Remote Con hash", NUMCONN, &ctl, HASH_ELEM);
+   ptr = hash_create("Remote Con hash", NUMCONN, &ctl, HASH_ELEM);
 
-   if(!ptr)
+   if (!ptr)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
 
-   return(ptr);
+   return (ptr);
 }
 
 static void
-createNewConnection(const char *name, remoteConn *con)
+createNewConnection(const char *name, remoteConn * con)
 {
-   remoteConnHashEnt  *hentry;
-   bool                found;
-   char                key[NAMEDATALEN];
+   remoteConnHashEnt *hentry;
+   bool        found;
+   char        key[NAMEDATALEN];
 
-   if(!remoteConnHash)
+   if (!remoteConnHash)
        remoteConnHash = createConnHash();
 
    MemSet(key, 0, NAMEDATALEN);
@@ -1944,12 +1943,12 @@ createNewConnection(const char *name, remoteConn *con)
    hentry = (remoteConnHashEnt *) hash_search(remoteConnHash, key,
                                               HASH_ENTER, &found);
 
-   if(!hentry)
+   if (!hentry)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
 
-   if(found)
+   if (found)
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_OBJECT),
                 errmsg("duplicate connection name")));
@@ -1961,12 +1960,12 @@ createNewConnection(const char *name, remoteConn *con)
 static void
 deleteConnection(const char *name)
 {
-   remoteConnHashEnt  *hentry;
-   bool                found;
-   char                key[NAMEDATALEN];
+   remoteConnHashEnt *hentry;
+   bool        found;
+   char        key[NAMEDATALEN];
 
-   if(!remoteConnHash)
-       remoteConnHash=createConnHash();
+   if (!remoteConnHash)
+       remoteConnHash = createConnHash();
 
    MemSet(key, 0, NAMEDATALEN);
    snprintf(key, NAMEDATALEN - 1, "%s", name);
@@ -1974,7 +1973,7 @@ deleteConnection(const char *name)
    hentry = (remoteConnHashEnt *) hash_search(remoteConnHash,
                                               key, HASH_REMOVE, &found);
 
-   if(!hentry)
+   if (!hentry)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
                 errmsg("undefined connection name")));
index 5eebd1a1ba0bd32cd9b6f52b8f6cb26d5e9c3ed4..cf00276a8f176f3ff35cbf60c7bdebac9296a9ea 100644 (file)
@@ -1,6 +1,6 @@
 /****************************************************************************
  * pending.c
- * $Id: pending.c,v 1.12 2003/07/24 17:52:20 tgl Exp $
+ * $Id: pending.c,v 1.13 2003/08/04 00:43:10 momjian Exp $
  *
  * This file contains a trigger for Postgresql-7.x to record changes to tables
  * to a pending table for mirroring.
@@ -8,7 +8,7 @@
  *
  *  Written by Steven Singer ([email protected])
  *  (c) 2001-2002 Navtech Systems Support Inc.
- *       ALL RIGHTS RESERVED
+ *      ALL RIGHTS RESERVED
  *
  * Permission to use, copy, modify, and distribute this software and its
  * documentation for any purpose, without fee, and without a written agreement
@@ -79,8 +79,9 @@ recordchange(PG_FUNCTION_ARGS)
    HeapTuple   retTuple = NULL;
    char       *tblname;
    char        op = 0;
-   char       *schemaname;
+   char       *schemaname;
    char       *fullyqualtblname;
+
    if (fcinfo->context != NULL)
    {
 
@@ -94,13 +95,13 @@ recordchange(PG_FUNCTION_ARGS)
        tblname = SPI_getrelname(trigdata->tg_relation);
 #ifndef NOSCHEMAS
        schemaname = get_namespace_name(RelationGetNamespace(trigdata->tg_relation));
-       fullyqualtblname = SPI_palloc(strlen(tblname) + 
-                         strlen(schemaname) + 6);
-       sprintf(fullyqualtblname,"\"%s\".\"%s\"",
-           schemaname,tblname);
+       fullyqualtblname = SPI_palloc(strlen(tblname) +
+                                     strlen(schemaname) + 6);
+       sprintf(fullyqualtblname, "\"%s\".\"%s\"",
+               schemaname, tblname);
 #else
        fullyqualtblname = SPI_palloc(strlen(tblname) + 3);
-       sprintf(fullyqualtblname,"\"%s\"",tblname);
+       sprintf(fullyqualtblname, "\"%s\"", tblname);
 #endif
        tupdesc = trigdata->tg_relation->rd_att;
        if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
@@ -166,8 +167,8 @@ storePending(char *cpTableName, HeapTuple tBeforeTuple,
    int         iResult = 0;
    HeapTuple   tCurTuple;
 
-   //Points the current tuple(before or after)
-       Datum       saPlanData[4];
+   /* Points the current tuple(before or after) */
+   Datum       saPlanData[4];
    Oid         taPlanArgTypes[3] = {NAMEOID, CHAROID, INT4OID};
    void       *vpPlan;
 
@@ -253,7 +254,7 @@ storeKeyInfo(char *cpTableName, HeapTuple tTupleData,
    if (cpKeyData == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                /* cpTableName already contains quotes... */
+       /* cpTableName already contains quotes... */
                 errmsg("there is no PRIMARY KEY for table %s",
                        cpTableName)));
 
@@ -460,7 +461,7 @@ packageData(HeapTuple tTupleData, TupleDesc tTupleDesc,
        }
        else
        {
-           sprintf(cpFormatedPtr," ");
+           sprintf(cpFormatedPtr, " ");
            iUsedDataBlock++;
            cpFormatedPtr++;
            continue;
@@ -508,8 +509,8 @@ packageData(HeapTuple tTupleData, TupleDesc tTupleDesc,
    if (tpPKeys != NULL)
        SPI_pfree(tpPKeys);
 #if defined DEBUG_OUTPUT
-   elog(NOTICE, "returning DataBlockSize:%d iUsedDataBlock:%d",iDataBlockSize,
-           iUsedDataBlock);
+   elog(NOTICE, "returning DataBlockSize:%d iUsedDataBlock:%d", iDataBlockSize,
+        iUsedDataBlock);
 #endif
    memset(cpDataBlock + iUsedDataBlock, 0, iDataBlockSize - iUsedDataBlock);
 
index c474930ca9592a6a47ddb8d760a64bc00760a284..0037c14e706da940d266d5dd4499d0e07584a051 100644 (file)
@@ -54,7 +54,7 @@ database_size(PG_FUNCTION_ARGS)
    if (!OidIsValid(dbid))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_DATABASE),
-                errmsg("database \"%s\" does not exist", NameStr(*dbname))));
+           errmsg("database \"%s\" does not exist", NameStr(*dbname))));
 
    dbpath = GetDatabasePath(dbid);
 
index 19c81a5783fc2842149bf4f65317a335bd0ba115..28ce40378cfafd0046cb3e2debf946ec27bf6ee0 100644 (file)
@@ -6,8 +6,8 @@
 
 
 /* Earth's radius is in statute miles. */
-const double   EARTH_RADIUS = 3958.747716;
-const double   TWO_PI = 2.0 * M_PI;
+const double EARTH_RADIUS = 3958.747716;
+const double TWO_PI = 2.0 * M_PI;
 
 double    *geo_distance(Point *pt1, Point *pt2);
 
@@ -66,10 +66,11 @@ geo_distance(Point *pt1, Point *pt2)
    if (longdiff > M_PI)
        longdiff = TWO_PI - longdiff;
 
-        sino = sqrt(sin(fabs(lat1-lat2)/2.)*sin(fabs(lat1-lat2)/2.) +
-                cos(lat1) * cos(lat2) * sin(longdiff/2.)*sin(longdiff/2.));
-        if (sino > 1.) sino = 1.;
-        *resultp = 2. * EARTH_RADIUS * asin(sino);
+   sino = sqrt(sin(fabs(lat1 - lat2) / 2.) * sin(fabs(lat1 - lat2) / 2.) +
+       cos(lat1) * cos(lat2) * sin(longdiff / 2.) * sin(longdiff / 2.));
+   if (sino > 1.)
+       sino = 1.;
+   *resultp = 2. * EARTH_RADIUS * asin(sino);
 
    return resultp;
 }
index 8eb27e42a5145ef163738fc2abaf7a240f34e0cd..4843c1f3e5dec7bd5288e751ae7ebe11d0e4b854 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/contrib/findoidjoins/Attic/findoidjoins.c,v 1.20 2003/05/14 03:25:56 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/findoidjoins/Attic/findoidjoins.c,v 1.21 2003/08/04 00:43:10 momjian Exp $
  */
 #include "postgres_fe.h"
 
 int
 main(int argc, char **argv)
 {
-   PGconn             *conn;
-   PQExpBufferData     sql;
-   PGresult           *res;
-   PGresult           *pkrel_res;
-   PGresult           *fkrel_res;
-   char               *fk_relname;
-   char               *fk_nspname;
-   char               *fk_attname;
-   char               *pk_relname;
-   char               *pk_nspname;
-   int                 fk, pk;     /* loop counters */
+   PGconn     *conn;
+   PQExpBufferData sql;
+   PGresult   *res;
+   PGresult   *pkrel_res;
+   PGresult   *fkrel_res;
+   char       *fk_relname;
+   char       *fk_nspname;
+   char       *fk_attname;
+   char       *pk_relname;
+   char       *pk_nspname;
+   int         fk,
+               pk;             /* loop counters */
 
    if (argc != 2)
    {
        fprintf(stderr, "Usage:  %s database\n", argv[0]);
        exit(EXIT_FAILURE);
-   }       
+   }
 
    initPQExpBuffer(&sql);
 
@@ -48,13 +49,13 @@ main(int argc, char **argv)
    resetPQExpBuffer(&sql);
 
    appendPQExpBuffer(&sql, "%s",
-       "SET search_path = public;"
-       "SELECT c.relname, (SELECT nspname FROM "
-       "pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
-       "FROM pg_catalog.pg_class c "
-       "WHERE c.relkind = 'r' "
-       "AND c.relhasoids "
-       "ORDER BY nspname, c.relname"
+                     "SET search_path = public;"
+                     "SELECT c.relname, (SELECT nspname FROM "
+   "pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname "
+                     "FROM pg_catalog.pg_class c "
+                     "WHERE c.relkind = 'r' "
+                     "AND c.relhasoids "
+                     "ORDER BY nspname, c.relname"
        );
 
    res = PQexec(conn, sql.data);
@@ -70,20 +71,20 @@ main(int argc, char **argv)
    resetPQExpBuffer(&sql);
 
    appendPQExpBuffer(&sql, "%s",
-       "SELECT c.relname, "
-       "(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
-       "a.attname "
-       "FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
-       "WHERE a.attnum > 0 AND c.relkind = 'r' "
-       "AND a.attrelid = c.oid "
-       "AND a.atttypid IN ('pg_catalog.oid'::regtype, "
-       " 'pg_catalog.regclass'::regtype, "
-       " 'pg_catalog.regoper'::regtype, "
-       " 'pg_catalog.regoperator'::regtype, "
-       " 'pg_catalog.regproc'::regtype, "
-       " 'pg_catalog.regprocedure'::regtype, "
-       " 'pg_catalog.regtype'::regtype) "
-       "ORDER BY nspname, c.relname, a.attnum"
+                     "SELECT c.relname, "
+                     "(SELECT nspname FROM pg_catalog.pg_namespace n WHERE n.oid = c.relnamespace) AS nspname, "
+                     "a.attname "
+                "FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a "
+                     "WHERE a.attnum > 0 AND c.relkind = 'r' "
+                     "AND a.attrelid = c.oid "
+                     "AND a.atttypid IN ('pg_catalog.oid'::regtype, "
+                     " 'pg_catalog.regclass'::regtype, "
+                     " 'pg_catalog.regoper'::regtype, "
+                     " 'pg_catalog.regoperator'::regtype, "
+                     " 'pg_catalog.regproc'::regtype, "
+                     " 'pg_catalog.regprocedure'::regtype, "
+                     " 'pg_catalog.regtype'::regtype) "
+                     "ORDER BY nspname, c.relname, a.attnum"
        );
 
    res = PQexec(conn, sql.data);
@@ -95,8 +96,8 @@ main(int argc, char **argv)
    fkrel_res = res;
 
    /*
-    * For each column and each relation-having-OIDs, look to see if
-    * the column contains any values matching entries in the relation.
+    * For each column and each relation-having-OIDs, look to see if the
+    * column contains any values matching entries in the relation.
     */
 
    for (fk = 0; fk < PQntuples(fkrel_res); fk++)
@@ -113,12 +114,12 @@ main(int argc, char **argv)
            resetPQExpBuffer(&sql);
 
            appendPQExpBuffer(&sql,
-               "SELECT 1 "
-               "FROM \"%s\".\"%s\" t1, "
-               "\"%s\".\"%s\" t2 "
-               "WHERE t1.\"%s\"::pg_catalog.oid = t2.oid "
-               "LIMIT 1",
-               fk_nspname, fk_relname, pk_nspname, pk_relname, fk_attname);
+                             "SELECT   1 "
+                             "FROM \"%s\".\"%s\" t1, "
+                             "\"%s\".\"%s\" t2 "
+                             "WHERE t1.\"%s\"::pg_catalog.oid = t2.oid "
+                             "LIMIT 1",
+            fk_nspname, fk_relname, pk_nspname, pk_relname, fk_attname);
 
            res = PQexec(conn, sql.data);
            if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
index 38dba1ce30ee69598cf7932f9222e4abc1521e26..e5095ff1a1d69159ca08217b277f18f27f0102c7 100644 (file)
@@ -304,7 +304,7 @@ fti(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_COLUMN),
                         errmsg("column \"%s\" of \"%s\" does not exist",
-                        args[i + 1], indexname)));
+                               args[i + 1], indexname)));
 
            /* Get the char* representation of the column */
            column = SPI_getvalue(rettuple, tupdesc, colnum);
@@ -339,8 +339,8 @@ fti(PG_FUNCTION_ARGS)
                    ret = SPI_execp(*(plan->splan), values, NULL, 0);
                    if (ret != SPI_OK_INSERT)
                        ereport(ERROR,
-                               (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
-                                errmsg("error executing insert")));
+                           (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
+                            errmsg("error executing insert")));
                }
                pfree(buff);
                pfree(data);
index 3f869180b86a0f54be12dcf63810133bad1d7d9a..cc4be6af1de9dc24623297791bf7b439aa49271a 100644 (file)
@@ -87,7 +87,7 @@ levenshtein(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("argument exceeds max length: %d",
-                        MAX_LEVENSHTEIN_STRLEN)));
+                       MAX_LEVENSHTEIN_STRLEN)));
 
    /*
     * If either rows or cols is 0, the answer is the other value. This
@@ -220,7 +220,7 @@ metaphone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("argument exceeds max length: %d",
-                        MAX_METAPHONE_STRLEN)));
+                       MAX_METAPHONE_STRLEN)));
 
    if (!(str_i_len > 0))
        ereport(ERROR,
@@ -232,7 +232,7 @@ metaphone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("output length exceeds max length: %d",
-                        MAX_METAPHONE_STRLEN)));
+                       MAX_METAPHONE_STRLEN)));
 
    if (!(reqlen > 0))
        ereport(ERROR,
index 4614b669a7a0cf2dbc852d1f6df924e3972becb8..2bb06ff73a4a81c51cf6bd6d3ebccbf9789b5808 100644 (file)
@@ -132,9 +132,9 @@ ShrinkPGArray(PGARRAY * p)
 
        /* use current transaction context */
        pnew = palloc(cb);
+
        /*
-        * Fix up the fields in the new structure, so Postgres
-        * understands
+        * Fix up the fields in the new structure, so Postgres understands
         */
        memcpy(pnew, p, cb);
        pnew->a.size = cb;
@@ -194,7 +194,7 @@ int_enum(PG_FUNCTION_ARGS)
    if (!rsi || !IsA(rsi, ReturnSetInfo))
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("int_enum called in context that cannot accept a set")));
+        errmsg("int_enum called in context that cannot accept a set")));
 
    if (!p)
    {
index 5decd969e169c248eb0a8a190a6b7a6d6a243fcf..3e702ca1afedf31993f9f08f53fbabf09676e371 100644 (file)
@@ -91,19 +91,19 @@ typedef char *BITVECP;
  */
 typedef struct
 {
-        int4            len;
-        int4            flag;
-        char            data[1];
-}       GISTTYPE;
+   int4        len;
+   int4        flag;
+   char        data[1];
+}  GISTTYPE;
 
-#define ALLISTRUE       0x04
+#define ALLISTRUE      0x04
 
-#define ISALLTRUE(x)    ( ((GISTTYPE*)x)->flag & ALLISTRUE )
+#define ISALLTRUE(x)   ( ((GISTTYPE*)x)->flag & ALLISTRUE )
 
-#define GTHDRSIZE       ( sizeof(int4)*2  )
+#define GTHDRSIZE      ( sizeof(int4)*2  )
 #define CALCGTSIZE(flag) ( GTHDRSIZE+(((flag) & ALLISTRUE) ? 0 : SIGLEN) )
 
-#define GETSIGN(x)      ( (BITVECP)( (char*)x+GTHDRSIZE ) )
+#define GETSIGN(x)     ( (BITVECP)( (char*)x+GTHDRSIZE ) )
 
 /*
 ** types for functions
@@ -114,22 +114,22 @@ typedef void (*formfloat) (ArrayType *, float *);
 /*
 ** useful function
 */
-bool isort(int4 *a, const int len);
-ArrayType *new_intArrayType(int num);
-ArrayType *copy_intArrayType(ArrayType *a);
-ArrayType *resize_intArrayType(ArrayType *a, int num);
-int    internal_size(int *a, int len);
-ArrayType *_int_unique(ArrayType *a);
-int32 intarray_match_first(ArrayType *a, int32 elem);
-ArrayType *intarray_add_elem(ArrayType *a, int32 elem);
-ArrayType *intarray_concat_arrays(ArrayType *a, ArrayType *b);
-ArrayType *int_to_intset(int32 elem);
-bool inner_int_overlap(ArrayType *a, ArrayType *b);
-bool inner_int_contains(ArrayType *a, ArrayType *b);
-ArrayType inner_int_union(ArrayType *a, ArrayType *b);
-ArrayType inner_int_inter(ArrayType *a, ArrayType *b);
-void rt__int_size(ArrayType *a, float *size);
-void gensign(BITVEC sign, int *a, int len);
+bool       isort(int4 *a, const int len);
+ArrayType  *new_intArrayType(int num);
+ArrayType  *copy_intArrayType(ArrayType *a);
+ArrayType  *resize_intArrayType(ArrayType *a, int num);
+int            internal_size(int *a, int len);
+ArrayType  *_int_unique(ArrayType *a);
+int32      intarray_match_first(ArrayType *a, int32 elem);
+ArrayType  *intarray_add_elem(ArrayType *a, int32 elem);
+ArrayType  *intarray_concat_arrays(ArrayType *a, ArrayType *b);
+ArrayType  *int_to_intset(int32 elem);
+bool       inner_int_overlap(ArrayType *a, ArrayType *b);
+bool       inner_int_contains(ArrayType *a, ArrayType *b);
+ArrayType  *inner_int_union(ArrayType *a, ArrayType *b);
+ArrayType  *inner_int_inter(ArrayType *a, ArrayType *b);
+void       rt__int_size(ArrayType *a, float *size);
+void       gensign(BITVEC sign, int *a, int len);
 
 
 /*****************************************************************************
@@ -160,18 +160,16 @@ typedef struct
 #define COMPUTESIZE(size)  ( HDRSIZEQT + size * sizeof(ITEM) )
 #define GETQUERY(x)  (ITEM*)( (char*)(x)+HDRSIZEQT )
 
-bool signconsistent(QUERYTYPE * query, BITVEC sign, bool calcnot);
-bool execconsistent(QUERYTYPE * query, ArrayType *array, bool calcnot);
-
-
+bool       signconsistent(QUERYTYPE * query, BITVEC sign, bool calcnot);
+bool       execconsistent(QUERYTYPE * query, ArrayType *array, bool calcnot);
 
-int compASC(const void *a, const void *b);
 
-int compDESC(const void *a, const void *b);
 
-#define QSORT(a, direction)                                     \
-if (ARRNELEMS(a) > 1)                                           \
-        qsort((void*)ARRPTR(a), ARRNELEMS(a),sizeof(int4),      \
-                (direction) ? compASC : compDESC )
+int            compASC(const void *a, const void *b);
 
+int            compDESC(const void *a, const void *b);
 
+#define QSORT(a, direction)                                        \
+if (ARRNELEMS(a) > 1)                                          \
+       qsort((void*)ARRPTR(a), ARRNELEMS(a),sizeof(int4),      \
+               (direction) ? compASC : compDESC )
index 35d6e6e2c002e09105abafae3b81a1965aae3b4b..d57a94e8709e3e8cbed0c5c6a833fe8a926f3339 100644 (file)
@@ -299,7 +299,7 @@ signconsistent(QUERYTYPE * query, BITVEC sign, bool calcnot)
                   GETQUERY(query) + query->size - 1,
                   (void *) sign, calcnot,
                   checkcondition_bit
-   );
+       );
 }
 
 bool
@@ -326,7 +326,7 @@ rboolop(PG_FUNCTION_ARGS)
                               boolop,
                               PG_GETARG_DATUM(1),
                               PG_GETARG_DATUM(0)
-   );
+       );
 }
 
 Datum
@@ -743,4 +743,3 @@ querytree(PG_FUNCTION_ARGS)
 
    PG_RETURN_POINTER(res);
 }
-
index fa6d502e891cf2424c2f732d632c2d62035c10ef..39c9679adddfb490b27afad9da03d286b09c88be 100644 (file)
@@ -85,27 +85,31 @@ g_int_consistent(PG_FUNCTION_ARGS)
 }
 
 Datum
-g_int_union(PG_FUNCTION_ARGS) {
-   bytea      *entryvec = (bytea *) PG_GETARG_POINTER(0);
-   int                *size = (int *) PG_GETARG_POINTER(1);
-   int4            i,len = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY);
-   ArrayType   *res;
-   int totlen=0,*ptr;
+g_int_union(PG_FUNCTION_ARGS)
+{
+   bytea      *entryvec = (bytea *) PG_GETARG_POINTER(0);
+   int        *size = (int *) PG_GETARG_POINTER(1);
+   int4        i,
+               len = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY);
+   ArrayType  *res;
+   int         totlen = 0,
+              *ptr;
 
    for (i = 0; i < len; i++)
-       totlen+=ARRNELEMS( GETENTRY(entryvec,i) );
+       totlen += ARRNELEMS(GETENTRY(entryvec, i));
 
-   res=new_intArrayType(totlen);
-   ptr=ARRPTR(res);
+   res = new_intArrayType(totlen);
+   ptr = ARRPTR(res);
 
-   for (i = 0; i < len; i++) {
-       memcpy(ptr, ARRPTR( GETENTRY(entryvec,i) ), ARRNELEMS( GETENTRY(entryvec,i) )*sizeof(int4) );
-       ptr+=ARRNELEMS( GETENTRY(entryvec,i) );
+   for (i = 0; i < len; i++)
+   {
+       memcpy(ptr, ARRPTR(GETENTRY(entryvec, i)), ARRNELEMS(GETENTRY(entryvec, i)) * sizeof(int4));
+       ptr += ARRNELEMS(GETENTRY(entryvec, i));
    }
 
-   QSORT(res,1);
-   res=_int_unique(res);
-   *size = VARSIZE(res);   
+   QSORT(res, 1);
+   res = _int_unique(res);
+   *size = VARSIZE(res);
    PG_RETURN_POINTER(res);
 }
 
@@ -239,22 +243,23 @@ g_int_decompress(PG_FUNCTION_ARGS)
 ** The GiST Penalty method for _intments
 */
 Datum
-g_int_penalty(PG_FUNCTION_ARGS) {
-   GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
-   GISTENTRY *newentry  = (GISTENTRY *) PG_GETARG_POINTER(1);
-   float *result = (float *) PG_GETARG_POINTER(2);
+g_int_penalty(PG_FUNCTION_ARGS)
+{
+   GISTENTRY  *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
+   GISTENTRY  *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
+   float      *result = (float *) PG_GETARG_POINTER(2);
    ArrayType  *ud;
    float       tmp1,
                tmp2;
 
    ud = inner_int_union((ArrayType *) DatumGetPointer(origentry->key),
-                   (ArrayType *) DatumGetPointer(newentry->key));
+                        (ArrayType *) DatumGetPointer(newentry->key));
    rt__int_size(ud, &tmp1);
    rt__int_size((ArrayType *) DatumGetPointer(origentry->key), &tmp2);
    *result = tmp1 - tmp2;
    pfree(ud);
 
-   PG_RETURN_POINTER (result);
+   PG_RETURN_POINTER(result);
 }
 
 
@@ -311,8 +316,9 @@ comparecost(const void *a, const void *b)
 ** We use Guttman's poly time split algorithm
 */
 Datum
-g_int_picksplit(PG_FUNCTION_ARGS) {
-   bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
+g_int_picksplit(PG_FUNCTION_ARGS)
+{
+   bytea      *entryvec = (bytea *) PG_GETARG_POINTER(0);
    GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
    OffsetNumber i,
                j;
@@ -501,4 +507,3 @@ g_int_picksplit(PG_FUNCTION_ARGS) {
 
    PG_RETURN_POINTER(v);
 }
-
index 04ff5e436b6874b6f37fe71c23f87bdeeecdff16..d5f169f7c82680228cc6eb682ca88464ef03919f 100644 (file)
@@ -270,7 +270,7 @@ _int_unique(ArrayType *r)
               *data;
    int         num = ARRNELEMS(r);
 
-   if ( num<2 )
+   if (num < 2)
        return r;
 
    data = tmp = dr = ARRPTR(r);
@@ -367,4 +367,3 @@ compDESC(const void *a, const void *b)
        return 0;
    return (*(int4 *) a < *(int4 *) b) ? 1 : -1;
 }
-
index f55434d3876aa0c40464390b83adfc12d525d077..3890769ce1a5531f6e5f51187ff6be51a3bc5c29 100644 (file)
@@ -45,8 +45,8 @@ array_iterator(ArrayType *la, PGCALL2 callback, void *param, ltree ** found)
 
    if (ARR_NDIM(la) != 1)
        ereport(ERROR,
-           (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-            errmsg("array must be one-dimensional")));
+               (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
+                errmsg("array must be one-dimensional")));
 
    if (found)
        *found = NULL;
@@ -133,38 +133,40 @@ _ltq_rregex(PG_FUNCTION_ARGS)
 Datum
 _lt_q_regex(PG_FUNCTION_ARGS)
 {
-        ArrayType      *_tree = PG_GETARG_ARRAYTYPE_P(0);
-        ArrayType   *_query =  PG_GETARG_ARRAYTYPE_P(1);
-        lquery  *query = (lquery *) ARR_DATA_PTR(_query);
-        bool    res = false;
-        int     num = ArrayGetNItems(ARR_NDIM(_query), ARR_DIMS(_query));
-
-        if (ARR_NDIM(_query) != 1)
-           ereport(ERROR,
+   ArrayType  *_tree = PG_GETARG_ARRAYTYPE_P(0);
+   ArrayType  *_query = PG_GETARG_ARRAYTYPE_P(1);
+   lquery     *query = (lquery *) ARR_DATA_PTR(_query);
+   bool        res = false;
+   int         num = ArrayGetNItems(ARR_NDIM(_query), ARR_DIMS(_query));
+
+   if (ARR_NDIM(_query) != 1)
+       ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                 errmsg("array must be one-dimensional")));
 
-        while (num > 0) {
-       if ( array_iterator(_tree, ltq_regex, (void*)query, NULL) ) {
-                        res = true;
-                        break;
-                }
-                num--;
-                query = (lquery*)NEXTVAL(query);
-        }
-
-        PG_FREE_IF_COPY(_tree, 0);
-        PG_FREE_IF_COPY(_query, 1);
-        PG_RETURN_BOOL(res);
+   while (num > 0)
+   {
+       if (array_iterator(_tree, ltq_regex, (void *) query, NULL))
+       {
+           res = true;
+           break;
+       }
+       num--;
+       query = (lquery *) NEXTVAL(query);
+   }
+
+   PG_FREE_IF_COPY(_tree, 0);
+   PG_FREE_IF_COPY(_query, 1);
+   PG_RETURN_BOOL(res);
 }
 
 Datum
 _lt_q_rregex(PG_FUNCTION_ARGS)
 {
-        PG_RETURN_DATUM(DirectFunctionCall2(_lt_q_regex,
-                                                                                PG_GETARG_DATUM(1),
-                                                                                PG_GETARG_DATUM(0)
-                                                                                ));
+   PG_RETURN_DATUM(DirectFunctionCall2(_lt_q_regex,
+                                       PG_GETARG_DATUM(1),
+                                       PG_GETARG_DATUM(0)
+                                       ));
 }
 
 
index 72fd968d59586775d01828475c1d16ebe23b7c73..2328fcd238670a1804948f6ac1ef19030c3d5cae 100644 (file)
@@ -45,7 +45,7 @@ getlexem(char *start, char *end, int *len)
 }
 
 bool
-compare_subnode(ltree_level * t, char *qn, int len, int (*cmpptr) (const char *, const char *, size_t), bool anyend)
+           compare_subnode(ltree_level * t, char *qn, int len, int (*cmpptr) (const char *, const char *, size_t), bool anyend)
 {
    char       *endt = t->name + t->len;
    char       *endq = qn + len;
@@ -123,10 +123,15 @@ printFieldNot(FieldNot *fn ) {
 }
 */
 
-static struct {
-   bool muse;
-   uint32  high_pos;
-} SomeStack = {false,0,};
+static struct
+{
+   bool        muse;
+   uint32      high_pos;
+}  SomeStack =
+
+{
+   false, 0,
+};
 
 static bool
 checkCond(lquery_level * curq, int query_numlevel, ltree_level * curt, int tree_numlevel, FieldNot * ptr)
@@ -140,7 +145,8 @@ checkCond(lquery_level * curq, int query_numlevel, ltree_level * curt, int tree_
    lquery_level *prevq = NULL;
    ltree_level *prevt = NULL;
 
-   if ( SomeStack.muse ) {
+   if (SomeStack.muse)
+   {
        high_pos = SomeStack.high_pos;
        qlen--;
        prevq = curq;
@@ -200,13 +206,15 @@ checkCond(lquery_level * curq, int query_numlevel, ltree_level * curt, int tree_
                    curt = LEVEL_NEXT(curt);
                    tlen--;
                    cur_tpos++;
-                   if ( isok && prevq && prevq->numvar==0 && tlen>0 && cur_tpos <= high_pos ) {
-                       FieldNot tmpptr;
-                       if ( ptr )
-                           memcpy(&tmpptr,ptr,sizeof(FieldNot));
-                       SomeStack.high_pos = high_pos-cur_tpos;
+                   if (isok && prevq && prevq->numvar == 0 && tlen > 0 && cur_tpos <= high_pos)
+                   {
+                       FieldNot    tmpptr;
+
+                       if (ptr)
+                           memcpy(&tmpptr, ptr, sizeof(FieldNot));
+                       SomeStack.high_pos = high_pos - cur_tpos;
                        SomeStack.muse = true;
-                       if ( checkCond(prevq, qlen+1, curt, tlen, (ptr) ? &tmpptr : NULL) )
+                       if (checkCond(prevq, qlen + 1, curt, tlen, (ptr) ? &tmpptr : NULL))
                            return true;
                    }
                    if (!isok && ptr)
@@ -311,19 +319,21 @@ Datum
 lt_q_regex(PG_FUNCTION_ARGS)
 {
    ltree      *tree = PG_GETARG_LTREE(0);
-   ArrayType   *_query =  PG_GETARG_ARRAYTYPE_P(1);
-   lquery  *query = (lquery *) ARR_DATA_PTR(_query);   
-   bool    res = false;
-        int     num = ArrayGetNItems(ARR_NDIM(_query), ARR_DIMS(_query));
+   ArrayType  *_query = PG_GETARG_ARRAYTYPE_P(1);
+   lquery     *query = (lquery *) ARR_DATA_PTR(_query);
+   bool        res = false;
+   int         num = ArrayGetNItems(ARR_NDIM(_query), ARR_DIMS(_query));
 
-        if (ARR_NDIM(_query) != 1)
-           ereport(ERROR,
+   if (ARR_NDIM(_query) != 1)
+       ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                 errmsg("array must be one-dimensional")));
 
-   while (num > 0) {
+   while (num > 0)
+   {
        if (DatumGetBool(DirectFunctionCall2(ltq_regex,
-               PointerGetDatum(tree), PointerGetDatum(query)))) {
+                        PointerGetDatum(tree), PointerGetDatum(query))))
+       {
 
            res = true;
            break;
@@ -345,5 +355,3 @@ lt_q_rregex(PG_FUNCTION_ARGS)
                                        PG_GETARG_DATUM(0)
                                        ));
 }
-
-
index 24116b024248d0a9ecd3432420eebe03313de9c1..62c033cc5df61a63fc078a7e67503571d7a501ad 100644 (file)
@@ -22,7 +22,7 @@ Datum     lquery_out(PG_FUNCTION_ARGS);
 
 #define UNCHAR ereport(ERROR, \
                       (errcode(ERRCODE_SYNTAX_ERROR), \
-                       errmsg("syntax error at position %d near \"%c\"", \
+                       errmsg("syntax error at position %d near \"%c\"", \
                        (int)(ptr-buf), *ptr)));
 
 
@@ -81,8 +81,8 @@ ltree_in(PG_FUNCTION_ARGS)
                            (errcode(ERRCODE_NAME_TOO_LONG),
                             errmsg("name of level is too long"),
                             errdetail("name length is %d, must " \
-                                   "be < 256, in position %d",
-                                   lptr->len, (int) (lptr->start - buf))));
+                                      "be < 256, in position %d",
+                                lptr->len, (int) (lptr->start - buf))));
 
                totallen += MAXALIGN(lptr->len + LEVEL_HDRSIZE);
                lptr++;
@@ -105,8 +105,8 @@ ltree_in(PG_FUNCTION_ARGS)
                    (errcode(ERRCODE_NAME_TOO_LONG),
                     errmsg("name of level is too long"),
                     errdetail("name length is %d, must " \
-                               "be < 256, in position %d",
-                               lptr->len, (int) (lptr->start - buf))));
+                              "be < 256, in position %d",
+                              lptr->len, (int) (lptr->start - buf))));
 
        totallen += MAXALIGN(lptr->len + LEVEL_HDRSIZE);
        lptr++;
@@ -283,8 +283,8 @@ lquery_in(PG_FUNCTION_ARGS)
                            (errcode(ERRCODE_NAME_TOO_LONG),
                             errmsg("name of level is too long"),
                             errdetail("name length is %d, must " \
-                                       "be < 256, in position %d",
-                                       lptr->len, (int) (lptr->start - buf))));
+                                      "be < 256, in position %d",
+                                lptr->len, (int) (lptr->start - buf))));
 
                state = LQPRS_WAITVAR;
            }
@@ -299,8 +299,8 @@ lquery_in(PG_FUNCTION_ARGS)
                            (errcode(ERRCODE_NAME_TOO_LONG),
                             errmsg("name of level is too long"),
                             errdetail("name length is %d, must " \
-                                       "be < 256, in position %d",
-                                       lptr->len, (int) (lptr->start - buf))));
+                                      "be < 256, in position %d",
+                                lptr->len, (int) (lptr->start - buf))));
 
                state = LQPRS_WAITLEVEL;
                curqlevel = NEXTLEV(curqlevel);
@@ -412,8 +412,8 @@ lquery_in(PG_FUNCTION_ARGS)
                    (errcode(ERRCODE_NAME_TOO_LONG),
                     errmsg("name of level is too long"),
                     errdetail("name length is %d, must " \
-                           "be < 256, in position %d",
-                           lptr->len, (int) (lptr->start - buf))));
+                              "be < 256, in position %d",
+                              lptr->len, (int) (lptr->start - buf))));
    }
    else if (state == LQPRS_WAITOPEN)
        curqlevel->high = 0xffff;
@@ -442,7 +442,7 @@ lquery_in(PG_FUNCTION_ARGS)
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("syntax error"),
                     errdetail("Low limit(%d) is greater than upper(%d).",
-                               curqlevel->low, curqlevel->high)));
+                              curqlevel->low, curqlevel->high)));
 
        curqlevel = NEXTLEV(curqlevel);
    }
index 1b3c80b726669999aef4d653527d5297431210b4..4dcb558fe48299cfdc28ac5713ba4ab2357800e9 100644 (file)
@@ -83,49 +83,49 @@ Datum
 ltree_cmp(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_INT32(res);
+       PG_RETURN_INT32(res);
 }
 
 Datum
 ltree_lt(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_BOOL((res < 0) ? true : false);
+       PG_RETURN_BOOL((res < 0) ? true : false);
 }
 
 Datum
 ltree_le(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_BOOL((res <= 0) ? true : false);
+       PG_RETURN_BOOL((res <= 0) ? true : false);
 }
 
 Datum
 ltree_eq(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_BOOL((res == 0) ? true : false);
+       PG_RETURN_BOOL((res == 0) ? true : false);
 }
 
 Datum
 ltree_ge(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_BOOL((res >= 0) ? true : false);
+       PG_RETURN_BOOL((res >= 0) ? true : false);
 }
 
 Datum
 ltree_gt(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_BOOL((res > 0) ? true : false);
+       PG_RETURN_BOOL((res > 0) ? true : false);
 }
 
 Datum
 ltree_ne(PG_FUNCTION_ARGS)
 {
    RUNCMP
-   PG_RETURN_BOOL((res != 0) ? true : false);
+       PG_RETURN_BOOL((res != 0) ? true : false);
 }
 
 Datum
@@ -331,46 +331,55 @@ ltree_index(PG_FUNCTION_ARGS)
 {
    ltree      *a = PG_GETARG_LTREE(0);
    ltree      *b = PG_GETARG_LTREE(1);
-   int start=(fcinfo->nargs == 3) ? PG_GETARG_INT32(2) : 0;
-   int i,j;
-   ltree_level *startptr, *aptr, *bptr;
-   bool found=false;
-
-   if ( start < 0 ) {
-       if ( -start >= a->numlevel ) 
-           start=0;
-       else 
-           start = (int)(a->numlevel)+start;
+   int         start = (fcinfo->nargs == 3) ? PG_GETARG_INT32(2) : 0;
+   int         i,
+               j;
+   ltree_level *startptr,
+              *aptr,
+              *bptr;
+   bool        found = false;
+
+   if (start < 0)
+   {
+       if (-start >= a->numlevel)
+           start = 0;
+       else
+           start = (int) (a->numlevel) + start;
    }
 
-   if ( a->numlevel - start < b->numlevel || a->numlevel==0 || b->numlevel==0 ) {
+   if (a->numlevel - start < b->numlevel || a->numlevel == 0 || b->numlevel == 0)
+   {
        PG_FREE_IF_COPY(a, 0);
        PG_FREE_IF_COPY(b, 1);
        PG_RETURN_INT32(-1);
    }
 
-   startptr=LTREE_FIRST(a);
-   for(i=0; i<=a->numlevel-b->numlevel; i++) {
-       if ( i>=start ) {
-           aptr=startptr;
-           bptr=LTREE_FIRST(b);
-           for(j=0;j<b->numlevel;j++) {
-               if ( !(aptr->len==bptr->len && strncmp(aptr->name,bptr->name, aptr->len)==0) )
-                   break; 
-               aptr=LEVEL_NEXT(aptr);
-               bptr=LEVEL_NEXT(bptr);
+   startptr = LTREE_FIRST(a);
+   for (i = 0; i <= a->numlevel - b->numlevel; i++)
+   {
+       if (i >= start)
+       {
+           aptr = startptr;
+           bptr = LTREE_FIRST(b);
+           for (j = 0; j < b->numlevel; j++)
+           {
+               if (!(aptr->len == bptr->len && strncmp(aptr->name, bptr->name, aptr->len) == 0))
+                   break;
+               aptr = LEVEL_NEXT(aptr);
+               bptr = LEVEL_NEXT(bptr);
            }
-   
-           if ( j==b->numlevel ) {
-               found=true;
+
+           if (j == b->numlevel)
+           {
+               found = true;
                break;
            }
        }
-       startptr=LEVEL_NEXT(startptr);  
+       startptr = LEVEL_NEXT(startptr);
    }
-   
-   if ( !found ) 
-       i=-1;
+
+   if (!found)
+       i = -1;
 
    PG_FREE_IF_COPY(a, 0);
    PG_FREE_IF_COPY(b, 1);
@@ -496,18 +505,18 @@ Datum
 text2ltree(PG_FUNCTION_ARGS)
 {
    text       *in = PG_GETARG_TEXT_P(0);
-   char *s = (char *) palloc(VARSIZE(in) - VARHDRSZ + 1);
-   ltree *out;
+   char       *s = (char *) palloc(VARSIZE(in) - VARHDRSZ + 1);
+   ltree      *out;
 
    memcpy(s, VARDATA(in), VARSIZE(in) - VARHDRSZ);
    s[VARSIZE(in) - VARHDRSZ] = '\0';
 
    out = (ltree *) DatumGetPointer(DirectFunctionCall1(
-               ltree_in,
-               PointerGetDatum(s)
-           ));
+                                                       ltree_in,
+                                                       PointerGetDatum(s)
+                                                       ));
    pfree(s);
-   PG_FREE_IF_COPY(in,0);
+   PG_FREE_IF_COPY(in, 0);
    PG_RETURN_POINTER(out);
 }
 
@@ -516,16 +525,18 @@ Datum
 ltree2text(PG_FUNCTION_ARGS)
 {
    ltree      *in = PG_GETARG_LTREE(0);
-   char       *ptr;
-   int                     i;
+   char       *ptr;
+   int         i;
    ltree_level *curlevel;
-   text    *out;
-                    
-   out=(text*)palloc(in->len+VARHDRSZ);
-   ptr = VARDATA(out); 
+   text       *out;
+
+   out = (text *) palloc(in->len + VARHDRSZ);
+   ptr = VARDATA(out);
    curlevel = LTREE_FIRST(in);
-   for (i = 0; i < in->numlevel; i++) {
-       if (i != 0) {
+   for (i = 0; i < in->numlevel; i++)
+   {
+       if (i != 0)
+       {
            *ptr = '.';
            ptr++;
        }
@@ -533,13 +544,9 @@ ltree2text(PG_FUNCTION_ARGS)
        ptr += curlevel->len;
        curlevel = LEVEL_NEXT(curlevel);
    }
-               
-   VARATT_SIZEP(out) = VARHDRSZ + (ptr-VARDATA(out)); 
+
+   VARATT_SIZEP(out) = VARHDRSZ + (ptr - VARDATA(out));
    PG_FREE_IF_COPY(in, 0);
-        
+
    PG_RETURN_POINTER(out);
 }
-
-   
-
-
index e2e2907267f3ee5b60fc3c2c502063b6c8aabeae..76369fd13cb6ef40dbc5a4ffa7403a1ee62bdac4 100644 (file)
@@ -356,8 +356,8 @@ sql_exec_dumptable(PGconn *conn, int systables)
        snprintf(todo, 1024, "select relfilenode,relname from pg_class order by relname");
    else
        snprintf(todo, 1024, "select relfilenode,relname from pg_class "
-                           "where relkind not in ('v','s', 'c') and "
-                           "relname not like 'pg_%%' order by relname");
+                "where relkind not in ('v','s', 'c') and "
+                "relname not like 'pg_%%' order by relname");
 
    sql_exec(conn, todo, 0);
 }
index dce065d7b6f13f71a2117468051f62bf0553f55d..01d22dbc6b19a7330189ebfb4752d3ea2fe9d581 100644 (file)
 
 #include "pg_autovacuum.h"
 #define TIMEBUFF 256
-FILE *LOGOUTPUT;
-char timebuffer[TIMEBUFF];
-char logbuffer[4096];
+FILE      *LOGOUTPUT;
+char       timebuffer[TIMEBUFF];
+char       logbuffer[4096];
 
 void
-log_entry (const char *logentry)
+log_entry(const char *logentry)
 {
-  time_t curtime;
-  struct tm *loctime;
-  curtime = time (NULL);
-  loctime = localtime (&curtime);
-  strftime (timebuffer, TIMEBUFF, "%Y-%m-%d %r", loctime);  /* cbb - %F is not always available */
-  fprintf (LOGOUTPUT, "[%s] %s\n", timebuffer, logentry);
+   time_t      curtime;
+   struct tm  *loctime;
+
+   curtime = time(NULL);
+   loctime = localtime(&curtime);
+   strftime(timebuffer, TIMEBUFF, "%Y-%m-%d %r", loctime);     /* cbb - %F is not
+                                                                * always available */
+   fprintf(LOGOUTPUT, "[%s] %s\n", timebuffer, logentry);
 }
 
 /* Function used to detatch the pg_autovacuum daemon from the tty and go into the background *
-*     This code is mostly ripped directly from pm_dameonize in postmaster.c               *
-*     with unneeded code removed.                                                         */
-void daemonize ()
+*    This code is mostly ripped directly from pm_dameonize in postmaster.c               *
+*    with unneeded code removed.                                                         */
+void
+daemonize()
 {
-  pid_t pid;
-
-  pid = fork();
-  if (pid == (pid_t) -1)
-  {
-    log_entry("Error: cannot disassociate from controlling TTY");
-    fflush(LOGOUTPUT);
-    _exit(1);
-  }
-  else if (pid)
-  {  /* parent */
-     /* Parent should just exit, without doing any atexit cleanup */
-    _exit(0);
-  }
+   pid_t       pid;
+
+   pid = fork();
+   if (pid == (pid_t) -1)
+   {
+       log_entry("Error: cannot disassociate from controlling TTY");
+       fflush(LOGOUTPUT);
+       _exit(1);
+   }
+   else if (pid)
+   {                           /* parent */
+       /* Parent should just exit, without doing any atexit cleanup */
+       _exit(0);
+   }
 
 /* GH: If there's no setsid(), we hopefully don't need silent mode.
  * Until there's a better solution.  */
 #ifdef HAVE_SETSID
-  if (setsid() < 0)
-  {
-    log_entry("Error: cannot disassociate from controlling TTY");
-    fflush(LOGOUTPUT);
-    _exit(1);
-  }
+   if (setsid() < 0)
+   {
+       log_entry("Error: cannot disassociate from controlling TTY");
+       fflush(LOGOUTPUT);
+       _exit(1);
+   }
 #endif
 
 }
 
 /* Create and return tbl_info struct with initialized to values from row or res */
 tbl_info *
-init_table_info (PGresult * res, int row, db_info *dbi)
+init_table_info(PGresult *res, int row, db_info * dbi)
 {
-  tbl_info *new_tbl = (tbl_info *) malloc (sizeof (tbl_info));
-
-  if (!new_tbl) {
-    log_entry ("init_table_info: Cannot get memory");
-    fflush (LOGOUTPUT);
-    return NULL;
-  }
-
-  if (NULL == res)
-    return NULL;
-
-  new_tbl->dbi = dbi;    /* set pointer to db */
-
-  new_tbl->schema_name = (char *)
-    malloc (strlen (PQgetvalue (res, row, PQfnumber (res, "schemaname"))) + 1);
-  if (!new_tbl->schema_name) {
-    log_entry ("init_table_info: malloc failed on new_tbl->schema_name");
-    fflush (LOGOUTPUT);
-    return NULL;
-  }
-  strcpy (new_tbl->schema_name,
-    PQgetvalue (res, row, PQfnumber (res, "schemaname")));
-
-  new_tbl->table_name = (char *)
-    malloc (strlen (PQgetvalue (res, row, PQfnumber (res, "relname"))) +
-    strlen (new_tbl->schema_name) + 2);
-  if (!new_tbl->table_name) {
-    log_entry ("init_table_info: malloc failed on new_tbl->table_name");
-    fflush (LOGOUTPUT);
-    return NULL;
-  }
-  strcpy (new_tbl->table_name, new_tbl->schema_name);
-  strcat (new_tbl->table_name, ".");
-  strcat (new_tbl->table_name, PQgetvalue (res, row, PQfnumber (res, "relname")));
-
-  new_tbl->CountAtLastAnalyze =
-    (atol (PQgetvalue (res, row, PQfnumber (res, "n_tup_ins"))) +
-     atol (PQgetvalue (res, row, PQfnumber (res, "n_tup_upd"))));
-  new_tbl->curr_analyze_count = new_tbl->CountAtLastAnalyze;
-
-  new_tbl->CountAtLastVacuum =
-    (atol (PQgetvalue (res, row, PQfnumber (res, "n_tup_del"))) +
-     atol (PQgetvalue (res, row, PQfnumber (res, "n_tup_upd"))));
-  new_tbl->curr_vacuum_count = new_tbl->CountAtLastVacuum;
-
-  new_tbl->relfilenode = atoi (PQgetvalue (res, row, PQfnumber (res, "relfilenode")));
-  new_tbl->reltuples =   atoi (PQgetvalue (res, row, PQfnumber (res, "reltuples")));
-  new_tbl->relpages =    atoi (PQgetvalue (res, row, PQfnumber (res, "relpages")));
-
-  new_tbl->analyze_threshold =
-    args->analyze_base_threshold + args->analyze_scaling_factor * new_tbl->reltuples;
-  new_tbl->vacuum_threshold =
-    args->vacuum_base_threshold + args->vacuum_scaling_factor * new_tbl->reltuples;
-
-  if (args->debug >= 2) {
-    print_table_info (new_tbl);
-  }
-
-  return new_tbl;
+   tbl_info   *new_tbl = (tbl_info *) malloc(sizeof(tbl_info));
+
+   if (!new_tbl)
+   {
+       log_entry("init_table_info: Cannot get memory");
+       fflush(LOGOUTPUT);
+       return NULL;
+   }
+
+   if (NULL == res)
+       return NULL;
+
+   new_tbl->dbi = dbi;         /* set pointer to db */
+
+   new_tbl->schema_name = (char *)
+       malloc(strlen(PQgetvalue(res, row, PQfnumber(res, "schemaname"))) + 1);
+   if (!new_tbl->schema_name)
+   {
+       log_entry("init_table_info: malloc failed on new_tbl->schema_name");
+       fflush(LOGOUTPUT);
+       return NULL;
+   }
+   strcpy(new_tbl->schema_name,
+          PQgetvalue(res, row, PQfnumber(res, "schemaname")));
+
+   new_tbl->table_name = (char *)
+       malloc(strlen(PQgetvalue(res, row, PQfnumber(res, "relname"))) +
+              strlen(new_tbl->schema_name) + 2);
+   if (!new_tbl->table_name)
+   {
+       log_entry("init_table_info: malloc failed on new_tbl->table_name");
+       fflush(LOGOUTPUT);
+       return NULL;
+   }
+   strcpy(new_tbl->table_name, new_tbl->schema_name);
+   strcat(new_tbl->table_name, ".");
+   strcat(new_tbl->table_name, PQgetvalue(res, row, PQfnumber(res, "relname")));
+
+   new_tbl->CountAtLastAnalyze =
+       (atol(PQgetvalue(res, row, PQfnumber(res, "n_tup_ins"))) +
+        atol(PQgetvalue(res, row, PQfnumber(res, "n_tup_upd"))));
+   new_tbl->curr_analyze_count = new_tbl->CountAtLastAnalyze;
+
+   new_tbl->CountAtLastVacuum =
+       (atol(PQgetvalue(res, row, PQfnumber(res, "n_tup_del"))) +
+        atol(PQgetvalue(res, row, PQfnumber(res, "n_tup_upd"))));
+   new_tbl->curr_vacuum_count = new_tbl->CountAtLastVacuum;
+
+   new_tbl->relfilenode = atoi(PQgetvalue(res, row, PQfnumber(res, "relfilenode")));
+   new_tbl->reltuples = atoi(PQgetvalue(res, row, PQfnumber(res, "reltuples")));
+   new_tbl->relpages = atoi(PQgetvalue(res, row, PQfnumber(res, "relpages")));
+
+   new_tbl->analyze_threshold =
+       args->analyze_base_threshold + args->analyze_scaling_factor * new_tbl->reltuples;
+   new_tbl->vacuum_threshold =
+       args->vacuum_base_threshold + args->vacuum_scaling_factor * new_tbl->reltuples;
+
+   if (args->debug >= 2)
+       print_table_info(new_tbl);
+
+   return new_tbl;
 }
 
 /* Set thresholds = base_value + scaling_factor * reltuples
    Should be called after a vacuum since vacuum updates values in pg_class */
 void
-update_table_thresholds (db_info * dbi, tbl_info * tbl,int vacuum_type)
+update_table_thresholds(db_info * dbi, tbl_info * tbl, int vacuum_type)
 {
-  PGresult *res = NULL;
-  int disconnect = 0;
-  char query[128];
-
-  if (NULL == dbi->conn) {
-    dbi->conn = db_connect (dbi);
-    disconnect = 1;
-  }
-
-  if (NULL != dbi->conn) {
-    snprintf (query, sizeof (query), PAGES_QUERY, tbl->relfilenode);
-    res = send_query (query, dbi);
-    if (NULL != res) {
-      tbl->reltuples =
-        atoi (PQgetvalue (res, 0, PQfnumber (res, "reltuples")));
-      tbl->relpages = atoi (PQgetvalue (res, 0, PQfnumber (res, "relpages")));
-
-      /* update vacuum thresholds only of we just did a vacuum analyze */
-      if(VACUUM_ANALYZE == vacuum_type)
-      {
-        tbl->vacuum_threshold =
-          (args->vacuum_base_threshold + args->vacuum_scaling_factor * tbl->reltuples);
-        tbl->CountAtLastVacuum  = tbl->curr_vacuum_count;
-      }
-
-      /* update analyze thresholds */
-      tbl->analyze_threshold =
-        (args->analyze_base_threshold + args->analyze_scaling_factor * tbl->reltuples);
-      tbl->CountAtLastAnalyze = tbl->curr_analyze_count;
-
-      PQclear (res);
-
-      /* If the stats collector is reporting fewer updates then we have on record
-         then the stats were probably reset, so we need to reset also */
-      if ((tbl->curr_analyze_count < tbl->CountAtLastAnalyze) ||
-          (tbl->curr_vacuum_count < tbl->CountAtLastVacuum))
-      {
-        tbl->CountAtLastAnalyze = tbl->curr_analyze_count;
-        tbl->CountAtLastVacuum = tbl->curr_vacuum_count;
-      }
-    }
-  }
-  if (disconnect)
-    db_disconnect (dbi);
+   PGresult   *res = NULL;
+   int         disconnect = 0;
+   char        query[128];
+
+   if (NULL == dbi->conn)
+   {
+       dbi->conn = db_connect(dbi);
+       disconnect = 1;
+   }
+
+   if (NULL != dbi->conn)
+   {
+       snprintf(query, sizeof(query), PAGES_QUERY, tbl->relfilenode);
+       res = send_query(query, dbi);
+       if (NULL != res)
+       {
+           tbl->reltuples =
+               atoi(PQgetvalue(res, 0, PQfnumber(res, "reltuples")));
+           tbl->relpages = atoi(PQgetvalue(res, 0, PQfnumber(res, "relpages")));
+
+           /*
+            * update vacuum thresholds only of we just did a vacuum
+            * analyze
+            */
+           if (VACUUM_ANALYZE == vacuum_type)
+           {
+               tbl->vacuum_threshold =
+                   (args->vacuum_base_threshold + args->vacuum_scaling_factor * tbl->reltuples);
+               tbl->CountAtLastVacuum = tbl->curr_vacuum_count;
+           }
+
+           /* update analyze thresholds */
+           tbl->analyze_threshold =
+               (args->analyze_base_threshold + args->analyze_scaling_factor * tbl->reltuples);
+           tbl->CountAtLastAnalyze = tbl->curr_analyze_count;
+
+           PQclear(res);
+
+           /*
+            * If the stats collector is reporting fewer updates then we
+            * have on record then the stats were probably reset, so we
+            * need to reset also
+            */
+           if ((tbl->curr_analyze_count < tbl->CountAtLastAnalyze) ||
+               (tbl->curr_vacuum_count < tbl->CountAtLastVacuum))
+           {
+               tbl->CountAtLastAnalyze = tbl->curr_analyze_count;
+               tbl->CountAtLastVacuum = tbl->curr_vacuum_count;
+           }
+       }
+   }
+   if (disconnect)
+       db_disconnect(dbi);
 }
 
 void
-update_table_list (db_info * dbi)
+update_table_list(db_info * dbi)
 {
-  int disconnect = 0;
-  PGresult *res = NULL;
-  tbl_info *tbl = NULL;
-  Dlelem *tbl_elem = DLGetHead (dbi->table_list);
-  int i = 0, t = 0, found_match = 0;
-
-  if (NULL == dbi->conn) {
-    dbi->conn = db_connect (dbi);
-    disconnect = 1;
-  }
-
-  if (NULL != dbi->conn) {
-    /* Get a result set that has all the information
-       we will need to both remove tables from the list
-       that no longer exist and add tables to the list
-       that are new */
-    res = send_query (query_table_stats (dbi), dbi);
-    t = PQntuples (res);
-
-    /* First: use the tbl_list as the outer loop and
-       the result set as the inner loop, this will
-       determine what tables should be removed */
-    while (NULL != tbl_elem) {
-      tbl = ((tbl_info *) DLE_VAL (tbl_elem));
-      found_match = 0;
-
-      for (i = 0; i < t; i++) {    /* loop through result set looking for a match */
-        if (tbl->relfilenode == atoi (PQgetvalue (res, i, PQfnumber (res, "relfilenode")))) {
-          found_match = 1;
-       break;
-        }
-      }
-      if (0 == found_match) {  /* then we didn't find this tbl_elem in the result set */
-        Dlelem *elem_to_remove = tbl_elem;
-        tbl_elem = DLGetSucc (tbl_elem);
-        remove_table_from_list (elem_to_remove);
-      }
-      else
-   tbl_elem = DLGetSucc (tbl_elem);
-    }  /* Done removing dropped tables from the table_list */
-
-    /* Then loop use result set as outer loop and
-       tbl_list as the inner loop to determine
-       what tables are new */
-    for (i = 0; i < t; i++)
-    {
-      tbl_elem = DLGetHead (dbi->table_list);
-      found_match = 0;
-      while (NULL != tbl_elem)
-      {
-        tbl = ((tbl_info *) DLE_VAL (tbl_elem));
-        if (tbl->relfilenode == atoi (PQgetvalue (res, i, PQfnumber (res, "relfilenode"))))
-        {
-          found_match = 1;
-       break;
-     }
-     tbl_elem = DLGetSucc (tbl_elem);
-      }
-      if (0 == found_match)    /*then we didn't find this result now in the tbl_list */
-      {
-        DLAddTail (dbi->table_list, DLNewElem (init_table_info (res, i, dbi)));
-     if (args->debug >= 1)
-        {
-       sprintf (logbuffer, "added table: %s.%s", dbi->dbname,
-          ((tbl_info *) DLE_VAL (DLGetTail (dbi->table_list)))->table_name);
-       log_entry (logbuffer);
-     }
-      }
-    }              /* end of for loop that adds tables */
-    fflush (LOGOUTPUT);
-    PQclear (res);
-    res = NULL;
-    if (args->debug >= 3) {
-      print_table_list (dbi->table_list);
-    }
-    if (disconnect)
-      db_disconnect (dbi);
-  }
+   int         disconnect = 0;
+   PGresult   *res = NULL;
+   tbl_info   *tbl = NULL;
+   Dlelem     *tbl_elem = DLGetHead(dbi->table_list);
+   int         i = 0,
+               t = 0,
+               found_match = 0;
+
+   if (NULL == dbi->conn)
+   {
+       dbi->conn = db_connect(dbi);
+       disconnect = 1;
+   }
+
+   if (NULL != dbi->conn)
+   {
+       /*
+        * Get a result set that has all the information we will need to
+        * both remove tables from the list that no longer exist and add
+        * tables to the list that are new
+        */
+       res = send_query(query_table_stats(dbi), dbi);
+       t = PQntuples(res);
+
+       /*
+        * First: use the tbl_list as the outer loop and the result set as
+        * the inner loop, this will determine what tables should be
+        * removed
+        */
+       while (NULL != tbl_elem)
+       {
+           tbl = ((tbl_info *) DLE_VAL(tbl_elem));
+           found_match = 0;
+
+           for (i = 0; i < t; i++)
+           {                   /* loop through result set looking for a
+                                * match */
+               if (tbl->relfilenode == atoi(PQgetvalue(res, i, PQfnumber(res, "relfilenode"))))
+               {
+                   found_match = 1;
+                   break;
+               }
+           }
+           if (0 == found_match)
+           {                   /* then we didn't find this tbl_elem in
+                                * the result set */
+               Dlelem     *elem_to_remove = tbl_elem;
+
+               tbl_elem = DLGetSucc(tbl_elem);
+               remove_table_from_list(elem_to_remove);
+           }
+           else
+               tbl_elem = DLGetSucc(tbl_elem);
+       }                       /* Done removing dropped tables from the
+                                * table_list */
+
+       /*
+        * Then loop use result set as outer loop and tbl_list as the
+        * inner loop to determine what tables are new
+        */
+       for (i = 0; i < t; i++)
+       {
+           tbl_elem = DLGetHead(dbi->table_list);
+           found_match = 0;
+           while (NULL != tbl_elem)
+           {
+               tbl = ((tbl_info *) DLE_VAL(tbl_elem));
+               if (tbl->relfilenode == atoi(PQgetvalue(res, i, PQfnumber(res, "relfilenode"))))
+               {
+                   found_match = 1;
+                   break;
+               }
+               tbl_elem = DLGetSucc(tbl_elem);
+           }
+           if (0 == found_match)       /* then we didn't find this result
+                                        * now in the tbl_list */
+           {
+               DLAddTail(dbi->table_list, DLNewElem(init_table_info(res, i, dbi)));
+               if (args->debug >= 1)
+               {
+                   sprintf(logbuffer, "added table: %s.%s", dbi->dbname,
+                           ((tbl_info *) DLE_VAL(DLGetTail(dbi->table_list)))->table_name);
+                   log_entry(logbuffer);
+               }
+           }
+       }                       /* end of for loop that adds tables */
+       fflush(LOGOUTPUT);
+       PQclear(res);
+       res = NULL;
+       if (args->debug >= 3)
+           print_table_list(dbi->table_list);
+       if (disconnect)
+           db_disconnect(dbi);
+   }
 }
 
 /* Free memory, and remove the node from the list */
 void
-remove_table_from_list (Dlelem * tbl_to_remove)
+remove_table_from_list(Dlelem *tbl_to_remove)
 {
-  tbl_info *tbl = ((tbl_info *) DLE_VAL (tbl_to_remove));
-
-  if (args->debug >= 1) {
-    sprintf (logbuffer, "Removing table: %s from list.", tbl->table_name);
-    log_entry (logbuffer);
-    fflush (LOGOUTPUT);
-  }
-  DLRemove (tbl_to_remove);
-
-  if (tbl->schema_name) {
-    free (tbl->schema_name);
-    tbl->schema_name = NULL;
-  }
-  if (tbl->table_name) {
-    free (tbl->table_name);
-    tbl->table_name = NULL;
-  }
-  if (tbl) {
-    free (tbl);
-    tbl = NULL;
-  }
-  DLFreeElem (tbl_to_remove);
+   tbl_info   *tbl = ((tbl_info *) DLE_VAL(tbl_to_remove));
+
+   if (args->debug >= 1)
+   {
+       sprintf(logbuffer, "Removing table: %s from list.", tbl->table_name);
+       log_entry(logbuffer);
+       fflush(LOGOUTPUT);
+   }
+   DLRemove(tbl_to_remove);
+
+   if (tbl->schema_name)
+   {
+       free(tbl->schema_name);
+       tbl->schema_name = NULL;
+   }
+   if (tbl->table_name)
+   {
+       free(tbl->table_name);
+       tbl->table_name = NULL;
+   }
+   if (tbl)
+   {
+       free(tbl);
+       tbl = NULL;
+   }
+   DLFreeElem(tbl_to_remove);
 }
 
 /* Free the entire table list */
 void
-free_tbl_list (Dllist * tbl_list)
+free_tbl_list(Dllist *tbl_list)
 {
-  Dlelem *tbl_elem = DLGetHead (tbl_list);
-  Dlelem *tbl_elem_to_remove = NULL;
-  while (NULL != tbl_elem) {
-    tbl_elem_to_remove = tbl_elem;
-    tbl_elem = DLGetSucc (tbl_elem);
-    remove_table_from_list (tbl_elem_to_remove);
-  }
-  DLFreeList (tbl_list);
+   Dlelem     *tbl_elem = DLGetHead(tbl_list);
+   Dlelem     *tbl_elem_to_remove = NULL;
+
+   while (NULL != tbl_elem)
+   {
+       tbl_elem_to_remove = tbl_elem;
+       tbl_elem = DLGetSucc(tbl_elem);
+       remove_table_from_list(tbl_elem_to_remove);
+   }
+   DLFreeList(tbl_list);
 }
 
 void
-print_table_list (Dllist * table_list)
+print_table_list(Dllist *table_list)
 {
-  Dlelem *table_elem = DLGetHead (table_list);
-  while (NULL != table_elem) {
-    print_table_info (((tbl_info *) DLE_VAL (table_elem)));
-    table_elem = DLGetSucc (table_elem);
-  }
+   Dlelem     *table_elem = DLGetHead(table_list);
+
+   while (NULL != table_elem)
+   {
+       print_table_info(((tbl_info *) DLE_VAL(table_elem)));
+       table_elem = DLGetSucc(table_elem);
+   }
 }
 
 void
-print_table_info (tbl_info * tbl)
+print_table_info(tbl_info * tbl)
 {
-  sprintf (logbuffer, "  table name:     %s.%s", tbl->dbi->dbname, tbl->table_name);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "     relfilenode: %i",tbl->relfilenode);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "     reltuples: %i;  relpages: %i", tbl->reltuples, tbl->relpages);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "     curr_analyze_count:  %li; cur_delete_count:   %li",
-      tbl->curr_analyze_count, tbl->curr_vacuum_count);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "     ins_at_last_analyze: %li; del_at_last_vacuum: %li",
-      tbl->CountAtLastAnalyze, tbl->CountAtLastVacuum);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "     insert_threshold:    %li; delete_threshold    %li",
-      tbl->analyze_threshold, tbl->vacuum_threshold);
-  log_entry (logbuffer);
-  fflush (LOGOUTPUT);
+   sprintf(logbuffer, "  table name:     %s.%s", tbl->dbi->dbname, tbl->table_name);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "     relfilenode: %i", tbl->relfilenode);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "     reltuples: %i;  relpages: %i", tbl->reltuples, tbl->relpages);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "     curr_analyze_count:  %li; cur_delete_count:   %li",
+           tbl->curr_analyze_count, tbl->curr_vacuum_count);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "     ins_at_last_analyze: %li; del_at_last_vacuum: %li",
+           tbl->CountAtLastAnalyze, tbl->CountAtLastVacuum);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "     insert_threshold:    %li; delete_threshold    %li",
+           tbl->analyze_threshold, tbl->vacuum_threshold);
+   log_entry(logbuffer);
+   fflush(LOGOUTPUT);
 }
 
 /* End of table Management Functions */
@@ -332,161 +370,188 @@ print_table_info (tbl_info * tbl)
 
 /* init_db_list() creates the db_list and initalizes template1 */
 Dllist *
-init_db_list ()
+init_db_list()
 {
-  Dllist *db_list = DLNewList ();
-  db_info *dbs = NULL;
-  PGresult *res = NULL;
-
-  DLAddHead (db_list, DLNewElem (init_dbinfo ((char *) "template1", 0, 0)));
-  if (NULL == DLGetHead (db_list)) {   /* Make sure init_dbinfo was successful */
-    log_entry ("init_db_list(): Error creating db_list for db: template1.");
-    fflush (LOGOUTPUT);
-    return NULL;
-  }
-
-  /* We do this just so we can set the proper oid for the template1 database */
-  dbs = ((db_info *) DLE_VAL (DLGetHead (db_list)));
-  dbs->conn = db_connect (dbs);
-
-  if (NULL != dbs->conn) {
-    res = send_query (FROZENOID_QUERY, dbs);
-    dbs->oid = atoi (PQgetvalue (res, 0, PQfnumber (res, "oid")));
-    dbs->age = atoi (PQgetvalue (res, 0, PQfnumber (res, "age")));
-    if (res)
-      PQclear (res);
-
-    if (args->debug >= 2) {
-      print_db_list (db_list, 0);
-    }
-  }
-  return db_list;
+   Dllist     *db_list = DLNewList();
+   db_info    *dbs = NULL;
+   PGresult   *res = NULL;
+
+   DLAddHead(db_list, DLNewElem(init_dbinfo((char *) "template1", 0, 0)));
+   if (NULL == DLGetHead(db_list))
+   {                           /* Make sure init_dbinfo was successful */
+       log_entry("init_db_list(): Error creating db_list for db: template1.");
+       fflush(LOGOUTPUT);
+       return NULL;
+   }
+
+   /*
+    * We do this just so we can set the proper oid for the template1
+    * database
+    */
+   dbs = ((db_info *) DLE_VAL(DLGetHead(db_list)));
+   dbs->conn = db_connect(dbs);
+
+   if (NULL != dbs->conn)
+   {
+       res = send_query(FROZENOID_QUERY, dbs);
+       dbs->oid = atoi(PQgetvalue(res, 0, PQfnumber(res, "oid")));
+       dbs->age = atoi(PQgetvalue(res, 0, PQfnumber(res, "age")));
+       if (res)
+           PQclear(res);
+
+       if (args->debug >= 2)
+           print_db_list(db_list, 0);
+   }
+   return db_list;
 }
 
 /* Simple function to create an instance of the dbinfo struct
-    Initalizes all the pointers and connects to the database  */
+   Initalizes all the pointers and connects to the database  */
 db_info *
-init_dbinfo (char *dbname, int oid, int age)
+init_dbinfo(char *dbname, int oid, int age)
 {
-  db_info *newdbinfo = (db_info *) malloc (sizeof (db_info));
-  newdbinfo->analyze_threshold = args->vacuum_base_threshold;
-  newdbinfo->vacuum_threshold = args->analyze_base_threshold;
-  newdbinfo->dbname = (char *) malloc (strlen (dbname) + 1);
-  strcpy (newdbinfo->dbname, dbname);
-  newdbinfo->username = NULL;
-  if (NULL != args->user) {
-    newdbinfo->username = (char *) malloc (strlen (args->user) + 1);
-    strcpy (newdbinfo->username, args->user);
-  }
-  newdbinfo->password = NULL;
-  if (NULL != args->password) {
-    newdbinfo->password = (char *) malloc (strlen (args->password) + 1);
-    strcpy (newdbinfo->password, args->password);
-  }
-  newdbinfo->oid = oid;
-  newdbinfo->age = age;
-  newdbinfo->table_list = DLNewList ();
-  newdbinfo->conn = NULL;
-
-  if (args->debug >= 2) {
-    print_table_list (newdbinfo->table_list);
-  }
-
-  return newdbinfo;
+   db_info    *newdbinfo = (db_info *) malloc(sizeof(db_info));
+
+   newdbinfo->analyze_threshold = args->vacuum_base_threshold;
+   newdbinfo->vacuum_threshold = args->analyze_base_threshold;
+   newdbinfo->dbname = (char *) malloc(strlen(dbname) + 1);
+   strcpy(newdbinfo->dbname, dbname);
+   newdbinfo->username = NULL;
+   if (NULL != args->user)
+   {
+       newdbinfo->username = (char *) malloc(strlen(args->user) + 1);
+       strcpy(newdbinfo->username, args->user);
+   }
+   newdbinfo->password = NULL;
+   if (NULL != args->password)
+   {
+       newdbinfo->password = (char *) malloc(strlen(args->password) + 1);
+       strcpy(newdbinfo->password, args->password);
+   }
+   newdbinfo->oid = oid;
+   newdbinfo->age = age;
+   newdbinfo->table_list = DLNewList();
+   newdbinfo->conn = NULL;
+
+   if (args->debug >= 2)
+       print_table_list(newdbinfo->table_list);
+
+   return newdbinfo;
 }
 
 /* Function adds and removes databases from the db_list as appropriate */
 void
-update_db_list (Dllist * db_list)
+update_db_list(Dllist *db_list)
 {
-  int disconnect = 0;
-  PGresult *res = NULL;
-  Dlelem *db_elem = DLGetHead (db_list);
-  db_info *dbi = NULL;
-  db_info *dbi_template1 = DLE_VAL (db_elem);
-  int i = 0, t = 0, found_match = 0;
-
-  if (args->debug >= 2) {
-    log_entry ("updating the database list");
-    fflush (LOGOUTPUT);
-  }
-
-  if (NULL == dbi_template1->conn) {
-    dbi_template1->conn = db_connect (dbi_template1);
-    disconnect = 1;
-  }
-
-  if (NULL != dbi_template1->conn) {
-    /* Get a result set that has all the information
-       we will need to both remove databasews from the list
-       that no longer exist and add databases to the list
-       that are new */
-    res = send_query (FROZENOID_QUERY2, dbi_template1);
-    t = PQntuples (res);
-
-    /* First: use the db_list as the outer loop and
-       the result set as the inner loop, this will
-       determine what databases should be removed */
-    while (NULL != db_elem) {
-      dbi = ((db_info *) DLE_VAL (db_elem));
-      found_match = 0;
-
-      for (i = 0; i < t; i++) {    /* loop through result set looking for a match */
-        if (dbi->oid == atoi (PQgetvalue (res, i, PQfnumber (res, "oid")))) {
-          found_match = 1;
-          /* update the dbi->age so that we ensure xid_wraparound won't happen */
-          dbi->age = atoi (PQgetvalue (res, i, PQfnumber (res, "age")));
-          break;
-        }
-      }
-      if (0 == found_match) {  /*then we didn't find this db_elem in the result set */
-     Dlelem *elem_to_remove = db_elem;
-     db_elem = DLGetSucc (db_elem);
-     remove_db_from_list (elem_to_remove);
-      }
-      else
-     db_elem = DLGetSucc (db_elem);
-    } /* Done removing dropped databases from the table_list */
-
-    /* Then loop use result set as outer loop and
-       db_list as the inner loop to determine
-       what databases are new */
-    for (i = 0; i < t; i++)
-    {
-      db_elem = DLGetHead (db_list);
-      found_match = 0;
-      while (NULL != db_elem)
-      {
-     dbi = ((db_info *) DLE_VAL (db_elem));
-     if (dbi->oid == atoi (PQgetvalue (res, i, PQfnumber (res, "oid"))))
-        {
-       found_match = 1;
-       break;
-     }
-     db_elem = DLGetSucc (db_elem);
-      }
-      if (0 == found_match)    /*then we didn't find this result now in the tbl_list */
-      {
-        DLAddTail (db_list, DLNewElem (init_dbinfo
-       (PQgetvalue(res, i, PQfnumber (res, "datname")),
-          atoi (PQgetvalue(res, i, PQfnumber (res, "oid"))),
-       atoi (PQgetvalue(res, i, PQfnumber (res, "age"))))));
-     if (args->debug >= 1)
-        {
-       sprintf (logbuffer, "added database: %s",((db_info *) DLE_VAL (DLGetTail (db_list)))->dbname);
-       log_entry (logbuffer);
-     }
-      }
-    }              /* end of for loop that adds tables */
-    fflush (LOGOUTPUT);
-    PQclear (res);
-    res = NULL;
-    if (args->debug >= 3) {
-      print_db_list (db_list, 0);
-    }
-    if (disconnect)
-      db_disconnect (dbi_template1);
-  }
+   int         disconnect = 0;
+   PGresult   *res = NULL;
+   Dlelem     *db_elem = DLGetHead(db_list);
+   db_info    *dbi = NULL;
+   db_info    *dbi_template1 = DLE_VAL(db_elem);
+   int         i = 0,
+               t = 0,
+               found_match = 0;
+
+   if (args->debug >= 2)
+   {
+       log_entry("updating the database list");
+       fflush(LOGOUTPUT);
+   }
+
+   if (NULL == dbi_template1->conn)
+   {
+       dbi_template1->conn = db_connect(dbi_template1);
+       disconnect = 1;
+   }
+
+   if (NULL != dbi_template1->conn)
+   {
+       /*
+        * Get a result set that has all the information we will need to
+        * both remove databasews from the list that no longer exist and
+        * add databases to the list that are new
+        */
+       res = send_query(FROZENOID_QUERY2, dbi_template1);
+       t = PQntuples(res);
+
+       /*
+        * First: use the db_list as the outer loop and the result set as
+        * the inner loop, this will determine what databases should be
+        * removed
+        */
+       while (NULL != db_elem)
+       {
+           dbi = ((db_info *) DLE_VAL(db_elem));
+           found_match = 0;
+
+           for (i = 0; i < t; i++)
+           {                   /* loop through result set looking for a
+                                * match */
+               if (dbi->oid == atoi(PQgetvalue(res, i, PQfnumber(res, "oid"))))
+               {
+                   found_match = 1;
+
+                   /*
+                    * update the dbi->age so that we ensure
+                    * xid_wraparound won't happen
+                    */
+                   dbi->age = atoi(PQgetvalue(res, i, PQfnumber(res, "age")));
+                   break;
+               }
+           }
+           if (0 == found_match)
+           {                   /* then we didn't find this db_elem in the
+                                * result set */
+               Dlelem     *elem_to_remove = db_elem;
+
+               db_elem = DLGetSucc(db_elem);
+               remove_db_from_list(elem_to_remove);
+           }
+           else
+               db_elem = DLGetSucc(db_elem);
+       }                       /* Done removing dropped databases from
+                                * the table_list */
+
+       /*
+        * Then loop use result set as outer loop and db_list as the inner
+        * loop to determine what databases are new
+        */
+       for (i = 0; i < t; i++)
+       {
+           db_elem = DLGetHead(db_list);
+           found_match = 0;
+           while (NULL != db_elem)
+           {
+               dbi = ((db_info *) DLE_VAL(db_elem));
+               if (dbi->oid == atoi(PQgetvalue(res, i, PQfnumber(res, "oid"))))
+               {
+                   found_match = 1;
+                   break;
+               }
+               db_elem = DLGetSucc(db_elem);
+           }
+           if (0 == found_match)       /* then we didn't find this result
+                                        * now in the tbl_list */
+           {
+               DLAddTail(db_list, DLNewElem(init_dbinfo
+                         (PQgetvalue(res, i, PQfnumber(res, "datname")),
+                        atoi(PQgetvalue(res, i, PQfnumber(res, "oid"))),
+                     atoi(PQgetvalue(res, i, PQfnumber(res, "age"))))));
+               if (args->debug >= 1)
+               {
+                   sprintf(logbuffer, "added database: %s", ((db_info *) DLE_VAL(DLGetTail(db_list)))->dbname);
+                   log_entry(logbuffer);
+               }
+           }
+       }                       /* end of for loop that adds tables */
+       fflush(LOGOUTPUT);
+       PQclear(res);
+       res = NULL;
+       if (args->debug >= 3)
+           print_db_list(db_list, 0);
+       if (disconnect)
+           db_disconnect(dbi_template1);
+   }
 }
 
 /* xid_wraparound_check
@@ -504,101 +569,116 @@ return 0 if nothing happened,
 return 1 if the database needed a database wide vacuum
 */
 int
-xid_wraparound_check (db_info * dbi)
+xid_wraparound_check(db_info * dbi)
 {
-  /* FIXME: should probably do something better here so that we don't vacuum all the
-     databases on the server at the same time.  We have 500million xacts to work with so
-     we should be able to spread the load of full database vacuums a bit */
-  if (1500000000 < dbi->age) {
-    PGresult *res = NULL;
-    res = send_query ("vacuum", dbi);
-    /* FIXME: Perhaps should add a check for PQ_COMMAND_OK */
-    PQclear (res);
-    return 1;
-  }
-  return 0;
+   /*
+    * FIXME: should probably do something better here so that we don't
+    * vacuum all the databases on the server at the same time.  We have
+    * 500million xacts to work with so we should be able to spread the
+    * load of full database vacuums a bit
+    */
+   if (1500000000 < dbi->age)
+   {
+       PGresult   *res = NULL;
+
+       res = send_query("vacuum", dbi);
+       /* FIXME: Perhaps should add a check for PQ_COMMAND_OK */
+       PQclear(res);
+       return 1;
+   }
+   return 0;
 }
 
 /* Close DB connection, free memory, and remove the node from the list */
 void
-remove_db_from_list (Dlelem * db_to_remove)
+remove_db_from_list(Dlelem *db_to_remove)
 {
-  db_info *dbi = ((db_info *) DLE_VAL (db_to_remove));
-
-  if (args->debug >= 1) {
-    sprintf (logbuffer, "Removing db: %s from list.", dbi->dbname);
-    log_entry (logbuffer);
-    fflush (LOGOUTPUT);
-  }
-  DLRemove (db_to_remove);
-  if (dbi->conn)
-    db_disconnect (dbi);
-  if (dbi->dbname) {
-    free (dbi->dbname);
-    dbi->dbname = NULL;
-  }
-  if (dbi->username) {
-    free (dbi->username);
-    dbi->username = NULL;
-  }
-  if (dbi->password) {
-    free (dbi->password);
-    dbi->password = NULL;
-  }
-  if (dbi->table_list) {
-    free_tbl_list (dbi->table_list);
-    dbi->table_list = NULL;
-  }
-  if (dbi) {
-    free (dbi);
-    dbi = NULL;
-  }
-  DLFreeElem (db_to_remove);
+   db_info    *dbi = ((db_info *) DLE_VAL(db_to_remove));
+
+   if (args->debug >= 1)
+   {
+       sprintf(logbuffer, "Removing db: %s from list.", dbi->dbname);
+       log_entry(logbuffer);
+       fflush(LOGOUTPUT);
+   }
+   DLRemove(db_to_remove);
+   if (dbi->conn)
+       db_disconnect(dbi);
+   if (dbi->dbname)
+   {
+       free(dbi->dbname);
+       dbi->dbname = NULL;
+   }
+   if (dbi->username)
+   {
+       free(dbi->username);
+       dbi->username = NULL;
+   }
+   if (dbi->password)
+   {
+       free(dbi->password);
+       dbi->password = NULL;
+   }
+   if (dbi->table_list)
+   {
+       free_tbl_list(dbi->table_list);
+       dbi->table_list = NULL;
+   }
+   if (dbi)
+   {
+       free(dbi);
+       dbi = NULL;
+   }
+   DLFreeElem(db_to_remove);
 }
 
 /* Function is called before program exit to free all memory
        mostly it's just to keep valgrind happy */
 void
-free_db_list (Dllist * db_list)
+free_db_list(Dllist *db_list)
 {
-  Dlelem *db_elem = DLGetHead (db_list);
-  Dlelem *db_elem_to_remove = NULL;
-  while (NULL != db_elem) {
-    db_elem_to_remove = db_elem;
-    db_elem = DLGetSucc (db_elem);
-    remove_db_from_list (db_elem_to_remove);
-    db_elem_to_remove = NULL;
-  }
-  DLFreeList (db_list);
+   Dlelem     *db_elem = DLGetHead(db_list);
+   Dlelem     *db_elem_to_remove = NULL;
+
+   while (NULL != db_elem)
+   {
+       db_elem_to_remove = db_elem;
+       db_elem = DLGetSucc(db_elem);
+       remove_db_from_list(db_elem_to_remove);
+       db_elem_to_remove = NULL;
+   }
+   DLFreeList(db_list);
 }
 
 void
-print_db_list (Dllist * db_list, int print_table_lists)
+print_db_list(Dllist *db_list, int print_table_lists)
 {
-  Dlelem *db_elem = DLGetHead (db_list);
-  while (NULL != db_elem) {
-    print_db_info (((db_info *) DLE_VAL (db_elem)), print_table_lists);
-    db_elem = DLGetSucc (db_elem);
-  }
+   Dlelem     *db_elem = DLGetHead(db_list);
+
+   while (NULL != db_elem)
+   {
+       print_db_info(((db_info *) DLE_VAL(db_elem)), print_table_lists);
+       db_elem = DLGetSucc(db_elem);
+   }
 }
 
 void
-print_db_info (db_info * dbi, int print_tbl_list)
+print_db_info(db_info * dbi, int print_tbl_list)
 {
-  sprintf (logbuffer, "dbname: %s Username %s Passwd %s", dbi->dbname,
-      dbi->username, dbi->password);
-  log_entry (logbuffer);
-  sprintf (logbuffer, " oid %i InsertThresh: %i  DeleteThresh: %i", dbi->oid,
-      dbi->analyze_threshold, dbi->vacuum_threshold);
-  log_entry (logbuffer);
-  if (NULL != dbi->conn)
-    log_entry (" conn is valid, we are connected");
-  else
-    log_entry (" conn is null, we are not connected.");
-
-  fflush (LOGOUTPUT);
-  if (0 < print_tbl_list)
-    print_table_list (dbi->table_list);
+   sprintf(logbuffer, "dbname: %s Username %s Passwd %s", dbi->dbname,
+           dbi->username, dbi->password);
+   log_entry(logbuffer);
+   sprintf(logbuffer, " oid %i InsertThresh: %i  DeleteThresh: %i", dbi->oid,
+           dbi->analyze_threshold, dbi->vacuum_threshold);
+   log_entry(logbuffer);
+   if (NULL != dbi->conn)
+       log_entry(" conn is valid, we are connected");
+   else
+       log_entry(" conn is null, we are not connected.");
+
+   fflush(LOGOUTPUT);
+   if (0 < print_tbl_list)
+       print_table_list(dbi->table_list);
 }
 
 /* End of DB List Management Function */
@@ -607,406 +687,475 @@ print_db_info (db_info * dbi, int print_tbl_list)
 
 
 char *
-query_table_stats (db_info * dbi)
+query_table_stats(db_info * dbi)
 {
-  if (!strcmp (dbi->dbname, "template1"))  /* Use template1 to monitor the system tables */
-    return (char *) TABLE_STATS_ALL;
-  else
-    return (char *) TABLE_STATS_USER;
+   if (!strcmp(dbi->dbname, "template1"))      /* Use template1 to
+                                                * monitor the system
+                                                * tables */
+       return (char *) TABLE_STATS_ALL;
+   else
+       return (char *) TABLE_STATS_USER;
 }
 
 /* Perhaps add some test to this function to make sure that the stats we need are available */
 PGconn *
-db_connect (db_info * dbi)
+db_connect(db_info * dbi)
 {
-  PGconn *db_conn =
-    PQsetdbLogin (args->host, args->port, NULL, NULL, dbi->dbname,
-         dbi->username, dbi->password);
-
-  if (CONNECTION_OK != PQstatus (db_conn)) {
-    sprintf (logbuffer, "Failed connection to database %s with error: %s.",
-        dbi->dbname, PQerrorMessage (db_conn));
-    log_entry (logbuffer);
-    fflush (LOGOUTPUT);
-    PQfinish (db_conn);
-    db_conn = NULL;
-  }
-  return db_conn;
-}              /* end of db_connect() */
+   PGconn     *db_conn =
+   PQsetdbLogin(args->host, args->port, NULL, NULL, dbi->dbname,
+                dbi->username, dbi->password);
+
+   if (CONNECTION_OK != PQstatus(db_conn))
+   {
+       sprintf(logbuffer, "Failed connection to database %s with error: %s.",
+               dbi->dbname, PQerrorMessage(db_conn));
+       log_entry(logbuffer);
+       fflush(LOGOUTPUT);
+       PQfinish(db_conn);
+       db_conn = NULL;
+   }
+   return db_conn;
+}  /* end of db_connect() */
 
 void
-db_disconnect (db_info * dbi)
+db_disconnect(db_info * dbi)
 {
-  if (NULL != dbi->conn) {
-    PQfinish (dbi->conn);
-    dbi->conn = NULL;
-  }
+   if (NULL != dbi->conn)
+   {
+       PQfinish(dbi->conn);
+       dbi->conn = NULL;
+   }
 }
 
 int
-check_stats_enabled (db_info * dbi)
+check_stats_enabled(db_info * dbi)
 {
-  PGresult *res = NULL;
-  int ret = 0;
-  res = send_query ("show stats_row_level", dbi);
-  ret =
-    strcmp ("on", PQgetvalue (res, 0, PQfnumber (res, "stats_row_level")));
-  PQclear (res);
-  return ret;
+   PGresult   *res = NULL;
+   int         ret = 0;
+
+   res = send_query("show stats_row_level", dbi);
+   ret =
+       strcmp("on", PQgetvalue(res, 0, PQfnumber(res, "stats_row_level")));
+   PQclear(res);
+   return ret;
 }
 
 PGresult *
-send_query (const char *query, db_info * dbi)
+send_query(const char *query, db_info * dbi)
 {
-  PGresult *res;
-
-  if (NULL == dbi->conn)
-    return NULL;
-
-  res = PQexec (dbi->conn, query);
-
-  if (!res) {
-    sprintf (logbuffer,
-        "Fatal error occured while sending query (%s) to database %s",
-        query, dbi->dbname);
-    log_entry (logbuffer);
-    sprintf (logbuffer, "The error is [%s]", PQresultErrorMessage (res));
-    log_entry (logbuffer);
-    fflush (LOGOUTPUT);
-    return NULL;
-  }
-  if (PQresultStatus (res) != PGRES_TUPLES_OK
-      && PQresultStatus (res) != PGRES_COMMAND_OK) {
-    sprintf (logbuffer,
-        "Can not refresh statistics information from the database %s.",
-        dbi->dbname);
-    log_entry (logbuffer);
-    sprintf (logbuffer, "The error is [%s]", PQresultErrorMessage (res));
-    log_entry (logbuffer);
-    fflush (LOGOUTPUT);
-    PQclear (res);
-    return NULL;
-  }
-  return res;
-}              /* End of send_query() */
+   PGresult   *res;
+
+   if (NULL == dbi->conn)
+       return NULL;
+
+   res = PQexec(dbi->conn, query);
+
+   if (!res)
+   {
+       sprintf(logbuffer,
+          "Fatal error occured while sending query (%s) to database %s",
+               query, dbi->dbname);
+       log_entry(logbuffer);
+       sprintf(logbuffer, "The error is [%s]", PQresultErrorMessage(res));
+       log_entry(logbuffer);
+       fflush(LOGOUTPUT);
+       return NULL;
+   }
+   if (PQresultStatus(res) != PGRES_TUPLES_OK
+       && PQresultStatus(res) != PGRES_COMMAND_OK)
+   {
+       sprintf(logbuffer,
+         "Can not refresh statistics information from the database %s.",
+               dbi->dbname);
+       log_entry(logbuffer);
+       sprintf(logbuffer, "The error is [%s]", PQresultErrorMessage(res));
+       log_entry(logbuffer);
+       fflush(LOGOUTPUT);
+       PQclear(res);
+       return NULL;
+   }
+   return res;
+}  /* End of send_query() */
 
 
 void
-free_cmd_args ()
+free_cmd_args()
 {
-  if (NULL != args) {
-    if (NULL != args->user)
-      free (args->user);
-    if (NULL != args->user)
-      free (args->password);
-    free (args);
-  }
+   if (NULL != args)
+   {
+       if (NULL != args->user)
+           free(args->user);
+       if (NULL != args->user)
+           free(args->password);
+       free(args);
+   }
 }
 
 cmd_args *
-get_cmd_args (int argc, char *argv[])
+get_cmd_args(int argc, char *argv[])
 {
-  int c;
-  args = (cmd_args *) malloc (sizeof (cmd_args));
-  args->sleep_base_value = SLEEPBASEVALUE;
-  args->sleep_scaling_factor = SLEEPSCALINGFACTOR;
-  args->vacuum_base_threshold = VACBASETHRESHOLD;
-  args->vacuum_scaling_factor = VACSCALINGFACTOR;
-  args->analyze_base_threshold = -1;
-  args->analyze_scaling_factor = -1;
-  args->debug = AUTOVACUUM_DEBUG;
-  args->daemonize = 0;
-
-  /* Fixme: Should add some sanity checking such as positive integer values etc */
-  while (-1 != (c = getopt (argc, argv, "s:S:v:V:a:A:d:U:P:H:L:p:hD"))) {
-    switch (c) {
-    case 's':
-      args->sleep_base_value = atoi (optarg);
-      break;
-    case 'S':
-      args->sleep_scaling_factor = atof (optarg);
-      break;
-    case 'v':
-      args->vacuum_base_threshold = atoi (optarg);
-      break;
-    case 'V':
-      args->vacuum_scaling_factor = atof (optarg);
-      break;
-    case 'a':
-      args->analyze_base_threshold = atoi (optarg);
-      break;
-    case 'A':
-      args->analyze_scaling_factor = atof (optarg);
-      break;
-    case 'D':
-      args->daemonize++;
-      break;
-    case 'd':
-      args->debug = atoi (optarg);
-      break;
-    case 'U':
-      args->user = optarg;
-      break;
-    case 'P':
-      args->password = optarg;
-      break;
-    case 'H':
-      args->host = optarg;
-      break;
-    case 'L':
-      args->logfile = optarg;
-      break;
-    case 'p':
-      args->port = optarg;
-      break;
-    case 'h':
-      usage();
-      exit (0);
-    default:
-      /* It's here that we know that things are invalid...
-    It is not forcibly an error to call usage */
-      fprintf (stderr, "Error: Invalid Command Line Options.\n");
-      usage();
-      exit (1);
-      break;
-    }
-    /* if values for insert thresholds are not specified,
-       then they default to 1/2 of the delete values */
-    if(-1 == args->analyze_base_threshold)
-      args->analyze_base_threshold = args->vacuum_base_threshold / 2;
-    if(-1 == args->analyze_scaling_factor)
-      args->analyze_scaling_factor = args->vacuum_scaling_factor / 2;
-  }
-  return args;
+   int         c;
+
+   args = (cmd_args *) malloc(sizeof(cmd_args));
+   args->sleep_base_value = SLEEPBASEVALUE;
+   args->sleep_scaling_factor = SLEEPSCALINGFACTOR;
+   args->vacuum_base_threshold = VACBASETHRESHOLD;
+   args->vacuum_scaling_factor = VACSCALINGFACTOR;
+   args->analyze_base_threshold = -1;
+   args->analyze_scaling_factor = -1;
+   args->debug = AUTOVACUUM_DEBUG;
+   args->daemonize = 0;
+
+   /*
+    * Fixme: Should add some sanity checking such as positive integer
+    * values etc
+    */
+   while (-1 != (c = getopt(argc, argv, "s:S:v:V:a:A:d:U:P:H:L:p:hD")))
+   {
+       switch (c)
+       {
+           case 's':
+               args->sleep_base_value = atoi(optarg);
+               break;
+           case 'S':
+               args->sleep_scaling_factor = atof(optarg);
+               break;
+           case 'v':
+               args->vacuum_base_threshold = atoi(optarg);
+               break;
+           case 'V':
+               args->vacuum_scaling_factor = atof(optarg);
+               break;
+           case 'a':
+               args->analyze_base_threshold = atoi(optarg);
+               break;
+           case 'A':
+               args->analyze_scaling_factor = atof(optarg);
+               break;
+           case 'D':
+               args->daemonize++;
+               break;
+           case 'd':
+               args->debug = atoi(optarg);
+               break;
+           case 'U':
+               args->user = optarg;
+               break;
+           case 'P':
+               args->password = optarg;
+               break;
+           case 'H':
+               args->host = optarg;
+               break;
+           case 'L':
+               args->logfile = optarg;
+               break;
+           case 'p':
+               args->port = optarg;
+               break;
+           case 'h':
+               usage();
+               exit(0);
+           default:
+
+               /*
+                * It's here that we know that things are invalid... It is
+                * not forcibly an error to call usage
+                */
+               fprintf(stderr, "Error: Invalid Command Line Options.\n");
+               usage();
+               exit(1);
+               break;
+       }
+
+       /*
+        * if values for insert thresholds are not specified, then they
+        * default to 1/2 of the delete values
+        */
+       if (-1 == args->analyze_base_threshold)
+           args->analyze_base_threshold = args->vacuum_base_threshold / 2;
+       if (-1 == args->analyze_scaling_factor)
+           args->analyze_scaling_factor = args->vacuum_scaling_factor / 2;
+   }
+   return args;
 }
 
-void usage()
+void
+usage()
 {
-  int i=0;
-  float f=0;
-  fprintf (stderr, "usage: pg_autovacuum \n");
-  fprintf (stderr, "   [-D] Daemonize (Detach from tty and run in the background)\n");
-  i=AUTOVACUUM_DEBUG;
-  fprintf (stderr, "   [-d] debug (debug level=0,1,2,3; default=%i)\n",i);
-
-  i=SLEEPBASEVALUE;
-  fprintf (stderr, "   [-s] sleep base value (default=%i)\n",i);
-  f=SLEEPSCALINGFACTOR;
-  fprintf (stderr, "   [-S] sleep scaling factor (default=%f)\n",f);
-
-  i=VACBASETHRESHOLD;
-  fprintf (stderr, "   [-v] vacuum base threshold (default=%i)\n",i);
-  f=VACSCALINGFACTOR;
-  fprintf (stderr, "   [-V] vacuum scaling factor (default=%f)\n",f);
-  i=i/2;
-  fprintf (stderr, "   [-a] analyze base threshold (default=%i)\n",i);
-  f=f/2;
-  fprintf (stderr, "   [-A] analyze scaling factor (default=%f)\n",f);
-
-  fprintf (stderr, "   [-L] logfile (default=none)\n");
-
-  fprintf (stderr, "   [-U] username (libpq default)\n");
-  fprintf (stderr, "   [-P] password (libpq default)\n");
-  fprintf (stderr, "   [-H] host (libpq default)\n");
-  fprintf (stderr, "   [-p] port (libpq default)\n");
-
-  fprintf (stderr, "   [-h] help (Show this output)\n");
+   int         i = 0;
+   float       f = 0;
+
+   fprintf(stderr, "usage: pg_autovacuum \n");
+   fprintf(stderr, "   [-D] Daemonize (Detach from tty and run in the background)\n");
+   i = AUTOVACUUM_DEBUG;
+   fprintf(stderr, "   [-d] debug (debug level=0,1,2,3; default=%i)\n", i);
+
+   i = SLEEPBASEVALUE;
+   fprintf(stderr, "   [-s] sleep base value (default=%i)\n", i);
+   f = SLEEPSCALINGFACTOR;
+   fprintf(stderr, "   [-S] sleep scaling factor (default=%f)\n", f);
+
+   i = VACBASETHRESHOLD;
+   fprintf(stderr, "   [-v] vacuum base threshold (default=%i)\n", i);
+   f = VACSCALINGFACTOR;
+   fprintf(stderr, "   [-V] vacuum scaling factor (default=%f)\n", f);
+   i = i / 2;
+   fprintf(stderr, "   [-a] analyze base threshold (default=%i)\n", i);
+   f = f / 2;
+   fprintf(stderr, "   [-A] analyze scaling factor (default=%f)\n", f);
+
+   fprintf(stderr, "   [-L] logfile (default=none)\n");
+
+   fprintf(stderr, "   [-U] username (libpq default)\n");
+   fprintf(stderr, "   [-P] password (libpq default)\n");
+   fprintf(stderr, "   [-H] host (libpq default)\n");
+   fprintf(stderr, "   [-p] port (libpq default)\n");
+
+   fprintf(stderr, "   [-h] help (Show this output)\n");
 }
 
 void
-print_cmd_args ()
+print_cmd_args()
 {
-  sprintf (logbuffer, "Printing command_args");
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->host=%s", (args->host) ? args->host : "(null)");
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->port=%s", (args->port) ? args->port : "(null)");
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->user=%s", (args->user) ? args->user : "(null)");
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->password=%s",(args->password) ? args->password : "(null)");
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->logfile=%s",(args->logfile) ? args->logfile : "(null)");
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->daemonize=%i",args->daemonize);
-  log_entry (logbuffer);
-
-  sprintf (logbuffer, "  args->sleep_base_value=%i", args->sleep_base_value);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->sleep_scaling_factor=%f",args->sleep_scaling_factor);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->vacuum_base_threshold=%i",args->vacuum_base_threshold);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->vacuum_scaling_factor=%f",args->vacuum_scaling_factor);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->analyze_base_threshold=%i",args->analyze_base_threshold);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->analyze_scaling_factor=%f",args->analyze_scaling_factor);
-  log_entry (logbuffer);
-  sprintf (logbuffer, "  args->debug=%i", args->debug);
-  log_entry (logbuffer);
-
-  fflush (LOGOUTPUT);
+   sprintf(logbuffer, "Printing command_args");
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->host=%s", (args->host) ? args->host : "(null)");
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->port=%s", (args->port) ? args->port : "(null)");
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->user=%s", (args->user) ? args->user : "(null)");
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->password=%s", (args->password) ? args->password : "(null)");
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->logfile=%s", (args->logfile) ? args->logfile : "(null)");
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->daemonize=%i", args->daemonize);
+   log_entry(logbuffer);
+
+   sprintf(logbuffer, "  args->sleep_base_value=%i", args->sleep_base_value);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->sleep_scaling_factor=%f", args->sleep_scaling_factor);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->vacuum_base_threshold=%i", args->vacuum_base_threshold);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->vacuum_scaling_factor=%f", args->vacuum_scaling_factor);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->analyze_base_threshold=%i", args->analyze_base_threshold);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->analyze_scaling_factor=%f", args->analyze_scaling_factor);
+   log_entry(logbuffer);
+   sprintf(logbuffer, "  args->debug=%i", args->debug);
+   log_entry(logbuffer);
+
+   fflush(LOGOUTPUT);
 }
 
 /* Beginning of AutoVacuum Main Program */
 int
-main (int argc, char *argv[])
+main(int argc, char *argv[])
 {
-  char buf[256];
-  int j = 0, loops = 0;
-/*  int numInserts, numDeletes, */
-  int sleep_secs;
-  Dllist *db_list;
-  Dlelem *db_elem, *tbl_elem;
-  db_info *dbs;
-  tbl_info *tbl;
-  PGresult *res=NULL;
-  long long diff = 0;
-  struct timeval now, then;
-
-  args = get_cmd_args (argc, argv);    /* Get Command Line Args and put them in the args struct */
-
-  /* Dameonize if requested */
-  if (1 == args->daemonize){ daemonize(); }
-
-  if (args->logfile) {
-    LOGOUTPUT = fopen (args->logfile, "a");
-    if (!LOGOUTPUT) {
-      fprintf (stderr, "Could not open log file - [%s]\n", args->logfile);
-      exit(-1);
-    }
-  }
-  else {
-    LOGOUTPUT = stderr;
-  }
-  if (args->debug >= 2) {
-    print_cmd_args ();
-  }
-
-  /* Init the db list with template1 */
-  db_list = init_db_list ();
-  if (NULL == db_list)
-    return 1;
-
-  if (0 != check_stats_enabled (((db_info *) DLE_VAL (DLGetHead (db_list))))) {
-    log_entry ("Error: GUC variable stats_row_level must be enabled.");
-    log_entry ("       Please fix the problems and try again.");
-    fflush (LOGOUTPUT);
-
-    exit (1);
-  }
-
-  gettimeofday (&then, 0); /* for use later to caluculate sleep time */
-
-  while (1) {          /* Main Loop */
-    db_elem = DLGetHead (db_list); /* Reset cur_db_node to the beginning of the db_list */
-
-    dbs = ((db_info *) DLE_VAL (db_elem)); /* get pointer to cur_db's db_info struct */
-    if (NULL == dbs->conn) {
-      dbs->conn = db_connect (dbs);
-      if (NULL == dbs->conn) { /* Serious problem: We can't connect to template1 */
-       log_entry ("Error: Cannot connect to template1, exiting.");
-       fflush (LOGOUTPUT);
-       fclose (LOGOUTPUT);
-       exit (1);
-      }
-    }
-
-    if (0 == (loops % UPDATE_INTERVAL))    /* Update the list if it's time */
-      update_db_list (db_list);    /* Add and remove databases from the list */
-
-    while (NULL != db_elem) {  /* Loop through databases in list */
-      dbs = ((db_info *) DLE_VAL (db_elem));   /* get pointer to cur_db's db_info struct */
-      if (NULL == dbs->conn)
-       dbs->conn = db_connect (dbs);
-
-      if (NULL != dbs->conn) {
-       if (0 == (loops % UPDATE_INTERVAL)) /* Update the list if it's time */
-           update_table_list (dbs);    /* Add and remove tables from the list */
-
-   if (0 == xid_wraparound_check (dbs));
-   {
-     res = send_query (query_table_stats (dbs), dbs);  /* Get an updated snapshot of this dbs table stats */
-     for (j = 0; j < PQntuples (res); j++) {   /* loop through result set */
-       tbl_elem = DLGetHead (dbs->table_list); /* Reset tbl_elem to top of dbs->table_list */
-       while (NULL != tbl_elem) {  /* Loop through tables in list */
-         tbl = ((tbl_info *) DLE_VAL (tbl_elem));  /* set tbl_info = current_table */
-         if (tbl->relfilenode == atoi (PQgetvalue(res, j, PQfnumber (res, "relfilenode")))) {
-         tbl->curr_analyze_count =
-           (atol (PQgetvalue (res, j, PQfnumber (res, "n_tup_ins"))) +
-            atol (PQgetvalue (res, j, PQfnumber (res, "n_tup_upd"))) +
-                 atol (PQgetvalue (res, j, PQfnumber (res, "n_tup_del"))));
-         tbl->curr_vacuum_count =
-           (atol (PQgetvalue (res, j, PQfnumber (res, "n_tup_del"))) +
-            atol (PQgetvalue (res, j, PQfnumber (res, "n_tup_upd"))));
-
-         /* Check numDeletes to see if we need to vacuum, if so:
-            Run vacuum analyze (adding analyze is small so we might as well)
-            Update table thresholds and related information
-            if numDeletes is not big enough for vacuum then check numInserts for analyze */
-         if ((tbl->curr_vacuum_count - tbl->CountAtLastVacuum) >= tbl->vacuum_threshold)
-              {
-           snprintf (buf, sizeof (buf), "vacuum analyze %s", tbl->table_name);
-           if (args->debug >= 1) {
-             sprintf (logbuffer, "Performing: %s", buf);
-             log_entry (logbuffer);
-             fflush (LOGOUTPUT);
-           }
-           send_query (buf, dbs);
-           update_table_thresholds (dbs, tbl, VACUUM_ANALYZE);
-           if (args->debug >= 2) {print_table_info (tbl);}
-         }
-         else if ((tbl->curr_analyze_count - tbl->CountAtLastAnalyze) >= tbl->analyze_threshold)
-              {
-           snprintf (buf, sizeof (buf), "analyze %s", tbl->table_name);
-           if (args->debug >= 1) {
-             sprintf (logbuffer, "Performing: %s", buf);
-             log_entry (logbuffer);
-             fflush (LOGOUTPUT);
-           }
-           send_query (buf, dbs);
-           update_table_thresholds (dbs, tbl, ANALYZE_ONLY);
-           if (args->debug >= 2) { print_table_info (tbl);  }
-         }
-       
-              break;       /* once we have found a match, no need to keep checking. */
-         }
-            /* Advance the table pointers for the next loop */
-         tbl_elem = DLGetSucc (tbl_elem);
-
-       }           /* end for table while loop */
-     }         /* end for j loop (tuples in PGresult) */
-   }           /* close of if(xid_wraparound_check()) */
-   /* Done working on this db, Clean up, then advance cur_db */
-   PQclear (res);
-   res = NULL;
-   db_disconnect (dbs);
-      }
-      db_elem = DLGetSucc (db_elem);   /* move on to next DB regardless */
-    }  /* end of db_list while loop */
-
-    /* Figure out how long to sleep etc ... */
-    gettimeofday (&now, 0);
-    diff = (now.tv_sec - then.tv_sec) * 1000000 + (now.tv_usec - then.tv_usec);
-
-    sleep_secs = args->sleep_base_value + args->sleep_scaling_factor * diff / 1000000;
-    loops++;
-    if (args->debug >= 2) {
-      sprintf (logbuffer,
-          "%i All DBs checked in: %lld usec, will sleep for %i secs.",
-          loops, diff, sleep_secs);
-      log_entry (logbuffer);
-    }
-
-    sleep (sleep_secs);        /* Larger Pause between outer loops */
-
-    gettimeofday (&then, 0);   /* Reset time counter */
-
-  } /* end of while loop */
-
-  /* program is exiting, this should never run, but is here to make compiler / valgrind happy */
-  free_db_list (db_list);
-  free_cmd_args ();
-  return EXIT_SUCCESS;
+   char        buf[256];
+   int         j = 0,
+               loops = 0;
+
+/* int numInserts, numDeletes, */
+   int         sleep_secs;
+   Dllist     *db_list;
+   Dlelem     *db_elem,
+              *tbl_elem;
+   db_info    *dbs;
+   tbl_info   *tbl;
+   PGresult   *res = NULL;
+   long long   diff = 0;
+   struct timeval now,
+               then;
+
+   args = get_cmd_args(argc, argv);    /* Get Command Line Args and put
+                                        * them in the args struct */
+
+   /* Dameonize if requested */
+   if (1 == args->daemonize)
+       daemonize();
+
+   if (args->logfile)
+   {
+       LOGOUTPUT = fopen(args->logfile, "a");
+       if (!LOGOUTPUT)
+       {
+           fprintf(stderr, "Could not open log file - [%s]\n", args->logfile);
+           exit(-1);
+       }
+   }
+   else
+       LOGOUTPUT = stderr;
+   if (args->debug >= 2)
+       print_cmd_args();
+
+   /* Init the db list with template1 */
+   db_list = init_db_list();
+   if (NULL == db_list)
+       return 1;
+
+   if (0 != check_stats_enabled(((db_info *) DLE_VAL(DLGetHead(db_list)))))
+   {
+       log_entry("Error: GUC variable stats_row_level must be enabled.");
+       log_entry("       Please fix the problems and try again.");
+       fflush(LOGOUTPUT);
+
+       exit(1);
+   }
+
+   gettimeofday(&then, 0);     /* for use later to caluculate sleep time */
+
+   while (1)
+   {                           /* Main Loop */
+       db_elem = DLGetHead(db_list);   /* Reset cur_db_node to the
+                                        * beginning of the db_list */
+
+       dbs = ((db_info *) DLE_VAL(db_elem));   /* get pointer to cur_db's
+                                                * db_info struct */
+       if (NULL == dbs->conn)
+       {
+           dbs->conn = db_connect(dbs);
+           if (NULL == dbs->conn)
+           {                   /* Serious problem: We can't connect to
+                                * template1 */
+               log_entry("Error: Cannot connect to template1, exiting.");
+               fflush(LOGOUTPUT);
+               fclose(LOGOUTPUT);
+               exit(1);
+           }
+       }
+
+       if (0 == (loops % UPDATE_INTERVAL))     /* Update the list if it's
+                                                * time */
+           update_db_list(db_list);    /* Add and remove databases from
+                                        * the list */
+
+       while (NULL != db_elem)
+       {                       /* Loop through databases in list */
+           dbs = ((db_info *) DLE_VAL(db_elem));       /* get pointer to
+                                                        * cur_db's db_info
+                                                        * struct */
+           if (NULL == dbs->conn)
+               dbs->conn = db_connect(dbs);
+
+           if (NULL != dbs->conn)
+           {
+               if (0 == (loops % UPDATE_INTERVAL))     /* Update the list if
+                                                        * it's time */
+                   update_table_list(dbs);     /* Add and remove tables
+                                                * from the list */
+
+               if (0 == xid_wraparound_check(dbs));
+               {
+                   res = send_query(query_table_stats(dbs), dbs);      /* Get an updated
+                                                                        * snapshot of this dbs
+                                                                        * table stats */
+                   for (j = 0; j < PQntuples(res); j++)
+                   {           /* loop through result set */
+                       tbl_elem = DLGetHead(dbs->table_list);  /* Reset tbl_elem to top
+                                                                * of dbs->table_list */
+                       while (NULL != tbl_elem)
+                       {       /* Loop through tables in list */
+                           tbl = ((tbl_info *) DLE_VAL(tbl_elem));     /* set tbl_info =
+                                                                        * current_table */
+                           if (tbl->relfilenode == atoi(PQgetvalue(res, j, PQfnumber(res, "relfilenode"))))
+                           {
+                               tbl->curr_analyze_count =
+                                   (atol(PQgetvalue(res, j, PQfnumber(res, "n_tup_ins"))) +
+                                    atol(PQgetvalue(res, j, PQfnumber(res, "n_tup_upd"))) +
+                                    atol(PQgetvalue(res, j, PQfnumber(res, "n_tup_del"))));
+                               tbl->curr_vacuum_count =
+                                   (atol(PQgetvalue(res, j, PQfnumber(res, "n_tup_del"))) +
+                                    atol(PQgetvalue(res, j, PQfnumber(res, "n_tup_upd"))));
+
+                               /*
+                                * Check numDeletes to see if we need to
+                                * vacuum, if so: Run vacuum analyze
+                                * (adding analyze is small so we might as
+                                * well) Update table thresholds and
+                                * related information if numDeletes is
+                                * not big enough for vacuum then check
+                                * numInserts for analyze
+                                */
+                               if ((tbl->curr_vacuum_count - tbl->CountAtLastVacuum) >= tbl->vacuum_threshold)
+                               {
+                                   snprintf(buf, sizeof(buf), "vacuum analyze %s", tbl->table_name);
+                                   if (args->debug >= 1)
+                                   {
+                                       sprintf(logbuffer, "Performing: %s", buf);
+                                       log_entry(logbuffer);
+                                       fflush(LOGOUTPUT);
+                                   }
+                                   send_query(buf, dbs);
+                                   update_table_thresholds(dbs, tbl, VACUUM_ANALYZE);
+                                   if (args->debug >= 2)
+                                       print_table_info(tbl);
+                               }
+                               else if ((tbl->curr_analyze_count - tbl->CountAtLastAnalyze) >= tbl->analyze_threshold)
+                               {
+                                   snprintf(buf, sizeof(buf), "analyze %s", tbl->table_name);
+                                   if (args->debug >= 1)
+                                   {
+                                       sprintf(logbuffer, "Performing: %s", buf);
+                                       log_entry(logbuffer);
+                                       fflush(LOGOUTPUT);
+                                   }
+                                   send_query(buf, dbs);
+                                   update_table_thresholds(dbs, tbl, ANALYZE_ONLY);
+                                   if (args->debug >= 2)
+                                       print_table_info(tbl);
+                               }
+
+                               break;  /* once we have found a match, no
+                                        * need to keep checking. */
+                           }
+
+                           /*
+                            * Advance the table pointers for the next
+                            * loop
+                            */
+                           tbl_elem = DLGetSucc(tbl_elem);
+
+                       }       /* end for table while loop */
+                   }           /* end for j loop (tuples in PGresult) */
+               }               /* close of if(xid_wraparound_check()) */
+               /* Done working on this db, Clean up, then advance cur_db */
+               PQclear(res);
+               res = NULL;
+               db_disconnect(dbs);
+           }
+           db_elem = DLGetSucc(db_elem);       /* move on to next DB
+                                                * regardless */
+       }                       /* end of db_list while loop */
+
+       /* Figure out how long to sleep etc ... */
+       gettimeofday(&now, 0);
+       diff = (now.tv_sec - then.tv_sec) * 1000000 + (now.tv_usec - then.tv_usec);
+
+       sleep_secs = args->sleep_base_value + args->sleep_scaling_factor * diff / 1000000;
+       loops++;
+       if (args->debug >= 2)
+       {
+           sprintf(logbuffer,
+            "%i All DBs checked in: %lld usec, will sleep for %i secs.",
+                   loops, diff, sleep_secs);
+           log_entry(logbuffer);
+       }
+
+       sleep(sleep_secs);      /* Larger Pause between outer loops */
+
+       gettimeofday(&then, 0); /* Reset time counter */
+
+   }                           /* end of while loop */
+
+   /*
+    * program is exiting, this should never run, but is here to make
+    * compiler / valgrind happy
+    */
+   free_db_list(db_list);
+   free_cmd_args();
+   return EXIT_SUCCESS;
 }
index ac97f63bec0515da64de5b1937170b141d086776..fbdaf699122ac7e4873f4f04d8cf70afa855265f 100644 (file)
 #include "/usr/include/pgsql/server/lib/dllist.h"
 */
 
-#define AUTOVACUUM_DEBUG    1
-#define VACBASETHRESHOLD    1000
-#define VACSCALINGFACTOR    2
-#define SLEEPBASEVALUE      300
-#define SLEEPSCALINGFACTOR  2
-#define UPDATE_INTERVAL     2
+#define AUTOVACUUM_DEBUG   1
+#define VACBASETHRESHOLD   1000
+#define VACSCALINGFACTOR   2
+#define SLEEPBASEVALUE     300
+#define SLEEPSCALINGFACTOR 2
+#define UPDATE_INTERVAL        2
 
 /* these two constants are used to tell update_table_stats what operation we just perfomred */
-#define VACUUM_ANALYZE      0
-#define ANALYZE_ONLY        1
+#define VACUUM_ANALYZE     0
+#define ANALYZE_ONLY       1
 
-#define TABLE_STATS_ALL     "select a.relfilenode,a.relname,a.relnamespace,a.relpages,a.reltuples,b.schemaname,b.n_tup_ins,b.n_tup_upd,b.n_tup_del from pg_class a, pg_stat_all_tables b where a.relfilenode=b.relid"
-#define TABLE_STATS_USER    "select a.relfilenode,a.relname,a.relnamespace,a.relpages,a.reltuples,b.schemaname,b.n_tup_ins,b.n_tup_upd,b.n_tup_del from pg_class a, pg_stat_user_tables b where a.relfilenode=b.relid"
+#define TABLE_STATS_ALL        "select a.relfilenode,a.relname,a.relnamespace,a.relpages,a.reltuples,b.schemaname,b.n_tup_ins,b.n_tup_upd,b.n_tup_del from pg_class a, pg_stat_all_tables b where a.relfilenode=b.relid"
+#define TABLE_STATS_USER   "select a.relfilenode,a.relname,a.relnamespace,a.relpages,a.reltuples,b.schemaname,b.n_tup_ins,b.n_tup_upd,b.n_tup_del from pg_class a, pg_stat_user_tables b where a.relfilenode=b.relid"
 #define FRONTEND
 #define PAGES_QUERY "select relfilenode,reltuples,relpages from pg_class where relfilenode=%i"
 #define FROZENOID_QUERY "select oid,age(datfrozenxid) from pg_database where datname = 'template1'"
 /* define cmd_args stucture */
 struct cmdargs
 {
-  int vacuum_base_threshold, analyze_base_threshold, sleep_base_value, debug, daemonize;
-  float vacuum_scaling_factor, analyze_scaling_factor, sleep_scaling_factor;
-  char *user, *password, *host, *logfile, *port;
+   int         vacuum_base_threshold,
+               analyze_base_threshold,
+               sleep_base_value,
+               debug,
+               daemonize;
+   float       vacuum_scaling_factor,
+               analyze_scaling_factor,
+               sleep_scaling_factor;
+   char       *user,
+              *password,
+              *host,
+              *logfile,
+              *port;
 };
 typedef struct cmdargs cmd_args;
 
 /* define cmd_args as global so we can get to them everywhere */
-cmd_args *args;
+cmd_args   *args;
 
 /* Might need to add a time value for last time the whold database was vacuumed.
-    I think we need to guarantee this happens approx every 1Million TX's  */
+   I think we need to guarantee this happens approx every 1Million TX's  */
 struct dbinfo
 {
-  int oid, age;
-  int analyze_threshold, vacuum_threshold; /* Use these as defaults for table thresholds */
-  PGconn *conn;
-  char *dbname, *username, *password;
-  Dllist *table_list;
+   int         oid,
+               age;
+   int         analyze_threshold,
+               vacuum_threshold;       /* Use these as defaults for table
+                                        * thresholds */
+   PGconn     *conn;
+   char       *dbname,
+              *username,
+              *password;
+   Dllist     *table_list;
 };
 typedef struct dbinfo db_info;
 
 struct tableinfo
 {
-  char *schema_name, *table_name;
-  int  relfilenode, reltuples, relpages;
-  long analyze_threshold, vacuum_threshold;
-  long CountAtLastAnalyze; /* equal to: inserts + updates as of the last analyze or initial values at startup */
-  long CountAtLastVacuum;  /* equal to: deletes + updates as of the last vacuum or initial values at startup */
-  long curr_analyze_count, curr_vacuum_count; /* Latest values from stats system */
-  db_info *dbi; /* pointer to the database that this table belongs to */
+   char       *schema_name,
+              *table_name;
+   int         relfilenode,
+               reltuples,
+               relpages;
+   long        analyze_threshold,
+               vacuum_threshold;
+   long        CountAtLastAnalyze;     /* equal to: inserts + updates as
+                                        * of the last analyze or initial
+                                        * values at startup */
+   long        CountAtLastVacuum;      /* equal to: deletes + updates as
+                                        * of the last vacuum or initial
+                                        * values at startup */
+   long        curr_analyze_count,
+               curr_vacuum_count;      /* Latest values from stats system */
+   db_info    *dbi;            /* pointer to the database that this table
+                                * belongs to */
 };
 typedef struct tableinfo tbl_info;
 
 /* Functions for dealing with command line arguements */
-static cmd_args *get_cmd_args (int argc, char *argv[]);
-static void print_cmd_args (void);
-static void free_cmd_args (void);
-static void usage (void);
+static cmd_args *get_cmd_args(int argc, char *argv[]);
+static void print_cmd_args(void);
+static void free_cmd_args(void);
+static void usage(void);
 
 /* Functions for managing database lists */
-static Dllist *init_db_list (void);
-static db_info *init_dbinfo (char *dbname, int oid, int age);
-static void update_db_list (Dllist * db_list);
-static void remove_db_from_list (Dlelem * db_to_remove);
-static void print_db_info (db_info * dbi, int print_table_list);
-static void print_db_list (Dllist * db_list, int print_table_lists);
-static int xid_wraparound_check (db_info * dbi);
-static void free_db_list (Dllist * db_list);
+static Dllist *init_db_list(void);
+static db_info *init_dbinfo(char *dbname, int oid, int age);
+static void update_db_list(Dllist *db_list);
+static void remove_db_from_list(Dlelem *db_to_remove);
+static void print_db_info(db_info * dbi, int print_table_list);
+static void print_db_list(Dllist *db_list, int print_table_lists);
+static int xid_wraparound_check(db_info * dbi);
+static void free_db_list(Dllist *db_list);
 
 /* Functions for managing table lists */
-static tbl_info *init_table_info (PGresult * conn, int row, db_info *dbi);
-static void update_table_list (db_info * dbi);
-static void remove_table_from_list (Dlelem * tbl_to_remove);
-static void print_table_list (Dllist * tbl_node);
-static void print_table_info (tbl_info * tbl);
-static void update_table_thresholds (db_info * dbi, tbl_info * tbl, int vacuum_type);
-static void free_tbl_list (Dllist * tbl_list);
+static tbl_info *init_table_info(PGresult *conn, int row, db_info * dbi);
+static void update_table_list(db_info * dbi);
+static void remove_table_from_list(Dlelem *tbl_to_remove);
+static void print_table_list(Dllist *tbl_node);
+static void print_table_info(tbl_info * tbl);
+static void update_table_thresholds(db_info * dbi, tbl_info * tbl, int vacuum_type);
+static void free_tbl_list(Dllist *tbl_list);
 
 /* A few database helper functions */
-static int check_stats_enabled (db_info * dbi);
-static PGconn *db_connect (db_info * dbi);
-static void db_disconnect (db_info * dbi);
-static PGresult *send_query (const char *query, db_info * dbi);
-static char *query_table_stats (db_info * dbi);
+static int check_stats_enabled(db_info * dbi);
+static PGconn *db_connect(db_info * dbi);
+static void db_disconnect(db_info * dbi);
+static PGresult *send_query(const char *query, db_info * dbi);
+static char *query_table_stats(db_info * dbi);
 
 /* Other Generally needed Functions */
 static void daemonize(void);
-static void log_entry (const char *logentry);
+static void log_entry(const char *logentry);
index b6783c23efa36762997f8012343454a0644d7eac..09a71a586dcdfed31790ee66745c7fecf9e8e325 100644 (file)
@@ -1,7 +1,7 @@
 /* -------------------------------------------------------------------------
  * pg_dumplo
  *
- * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.16 2003/05/14 03:25:56 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.17 2003/08/04 00:43:11 momjian Exp $
  *
  *                 Karel Zak 1999-2000
  * -------------------------------------------------------------------------
@@ -26,7 +26,7 @@
 
 #ifndef HAVE_GETOPT_LONG
 #include "getopt_long.h"
-int optreset;
+int            optreset;
 #endif
 
 char      *progname = NULL;
index 3253dab4b6249d4d3fb1128542a1c9dd436b45b0..ede1b02f6fd56bf63091bd5329014801a5c862b0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.25 2003/08/01 02:21:17 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.26 2003/08/04 00:43:11 momjian Exp $
  *
  * pgbench: a simple TPC-B like benchmark program for PostgreSQL
  * written by Tatsuo Ishii
@@ -122,7 +122,7 @@ doConnect()
 {
    PGconn     *con;
    PGresult   *res;
+
    con = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName,
                       login, pwd);
    if (con == NULL)
index 3e7915d8bb03de8ecba2b2bc97d12c3d7162602b..4b3dc593ceff57268a911774a2a655538f06cfde 100644 (file)
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: openssl.c,v 1.11 2002/11/15 02:54:44 momjian Exp $
+ * $Id: openssl.c,v 1.12 2003/08/04 00:43:11 momjian Exp $
  */
 
 #include <postgres.h>
@@ -130,18 +130,19 @@ px_find_digest(const char *name, PX_MD ** res)
  * of functions does not allow enough flexibility
  * and forces some of the parameters (keylen,
  * padding) to SSL defaults.
- * 
+ *
  * So need to manage ciphers ourselves.
  */
 
-struct ossl_cipher {
-   int         (*init) (PX_Cipher * c, const uint8 *key, unsigned klen, const uint8 *iv);
-   int         (*encrypt) (PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *res);
-   int         (*decrypt) (PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *res);
+struct ossl_cipher
+{
+   int         (*init) (PX_Cipher * c, const uint8 *key, unsigned klen, const uint8 *iv);
+   int         (*encrypt) (PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *res);
+   int         (*decrypt) (PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *res);
 
-   int block_size;
-   int max_key_size;
-   int stream_cipher;
+   int         block_size;
+   int         max_key_size;
+   int         stream_cipher;
 };
 
 typedef struct
@@ -224,7 +225,7 @@ static int
 bf_ecb_encrypt(PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *res)
 {
    unsigned    bs = gen_ossl_block_size(c);
-   unsigned    i;
+   unsigned    i;
    ossldata   *od = c->ptr;
 
    for (i = 0; i < dlen / bs; i++)
@@ -288,13 +289,13 @@ static int
 ossl_des_init(PX_Cipher * c, const uint8 *key, unsigned klen, const uint8 *iv)
 {
    ossldata   *od = c->ptr;
-   des_cblock xkey;
+   des_cblock  xkey;
 
    memset(&xkey, 0, sizeof(xkey));
    memcpy(&xkey, key, klen > 8 ? 8 : klen);
    des_set_key(&xkey, od->u.des.key_schedule);
    memset(&xkey, 0, sizeof(xkey));
-   
+
    if (iv)
        memcpy(od->iv, iv, 8);
    else
@@ -304,53 +305,53 @@ ossl_des_init(PX_Cipher * c, const uint8 *key, unsigned klen, const uint8 *iv)
 
 static int
 ossl_des_ecb_encrypt(PX_Cipher * c, const uint8 *data, unsigned dlen,
-       uint8 *res)
+                    uint8 *res)
 {
    unsigned    bs = gen_ossl_block_size(c);
-   unsigned    i;
+   unsigned    i;
    ossldata   *od = c->ptr;
 
    for (i = 0; i < dlen / bs; i++)
-       des_ecb_encrypt((des_cblock*)(data + i * bs),
-               (des_cblock*)(res + i * bs),
-               od->u.des.key_schedule, 1);
+       des_ecb_encrypt((des_cblock *) (data + i * bs),
+                       (des_cblock *) (res + i * bs),
+                       od->u.des.key_schedule, 1);
    return 0;
 }
 
 static int
 ossl_des_ecb_decrypt(PX_Cipher * c, const uint8 *data, unsigned dlen,
-       uint8 *res)
+                    uint8 *res)
 {
    unsigned    bs = gen_ossl_block_size(c);
-   unsigned    i;
+   unsigned    i;
    ossldata   *od = c->ptr;
 
    for (i = 0; i < dlen / bs; i++)
-       des_ecb_encrypt((des_cblock*)(data + i * bs),
-               (des_cblock*)(res + i * bs),
-               od->u.des.key_schedule, 0);
+       des_ecb_encrypt((des_cblock *) (data + i * bs),
+                       (des_cblock *) (res + i * bs),
+                       od->u.des.key_schedule, 0);
    return 0;
 }
 
 static int
 ossl_des_cbc_encrypt(PX_Cipher * c, const uint8 *data, unsigned dlen,
-       uint8 *res)
+                    uint8 *res)
 {
    ossldata   *od = c->ptr;
 
    des_ncbc_encrypt(data, res, dlen, od->u.des.key_schedule,
-           (des_cblock*)od->iv, 1);
+                    (des_cblock *) od->iv, 1);
    return 0;
 }
 
 static int
 ossl_des_cbc_decrypt(PX_Cipher * c, const uint8 *data, unsigned dlen,
-       uint8 *res)
+                    uint8 *res)
 {
    ossldata   *od = c->ptr;
 
    des_ncbc_encrypt(data, res, dlen, od->u.des.key_schedule,
-           (des_cblock*)od->iv, 0);
+                    (des_cblock *) od->iv, 0);
    return 0;
 }
 
@@ -375,7 +376,7 @@ ossl_cast_ecb_encrypt(PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *re
 {
    unsigned    bs = gen_ossl_block_size(c);
    ossldata   *od = c->ptr;
-   const uint8    *end = data + dlen - bs;
+   const uint8 *end = data + dlen - bs;
 
    for (; data <= end; data += bs, res += bs)
        CAST_ecb_encrypt(data, res, &od->u.cast_key, CAST_ENCRYPT);
@@ -387,7 +388,7 @@ ossl_cast_ecb_decrypt(PX_Cipher * c, const uint8 *data, unsigned dlen, uint8 *re
 {
    unsigned    bs = gen_ossl_block_size(c);
    ossldata   *od = c->ptr;
-   const uint8    *end = data + dlen - bs;
+   const uint8 *end = data + dlen - bs;
 
    for (; data <= end; data += bs, res += bs)
        CAST_ecb_encrypt(data, res, &od->u.cast_key, CAST_DECRYPT);
@@ -429,37 +430,37 @@ static PX_Alias ossl_aliases[] = {
 
 static const struct ossl_cipher ossl_bf_cbc = {
    bf_init, bf_cbc_encrypt, bf_cbc_decrypt,
-   64/8, 448/8, 0
+   64 / 8, 448 / 8, 0
 };
 
 static const struct ossl_cipher ossl_bf_ecb = {
    bf_init, bf_ecb_encrypt, bf_ecb_decrypt,
-   64/8, 448/8, 0
+   64 / 8, 448 / 8, 0
 };
 
 static const struct ossl_cipher ossl_bf_cfb = {
    bf_init, bf_cfb64_encrypt, bf_cfb64_decrypt,
-   64/8, 448/8, 1
+   64 / 8, 448 / 8, 1
 };
 
 static const struct ossl_cipher ossl_des_ecb = {
    ossl_des_init, ossl_des_ecb_encrypt, ossl_des_ecb_decrypt,
-   64/8, 64/8, 0
+   64 / 8, 64 / 8, 0
 };
 
 static const struct ossl_cipher ossl_des_cbc = {
    ossl_des_init, ossl_des_cbc_encrypt, ossl_des_cbc_decrypt,
-   64/8, 64/8, 0
+   64 / 8, 64 / 8, 0
 };
 
 static const struct ossl_cipher ossl_cast_ecb = {
    ossl_cast_init, ossl_cast_ecb_encrypt, ossl_cast_ecb_decrypt,
-   64/8, 128/8, 0
+   64 / 8, 128 / 8, 0
 };
 
 static const struct ossl_cipher ossl_cast_cbc = {
    ossl_cast_init, ossl_cast_cbc_encrypt, ossl_cast_cbc_decrypt,
-   64/8, 128/8, 0
+   64 / 8, 128 / 8, 0
 };
 
 /*
@@ -467,7 +468,7 @@ static const struct ossl_cipher ossl_cast_cbc = {
  */
 static const struct
 {
-   const char     *name;
+   const char *name;
    const struct ossl_cipher *ciph;
 }  ossl_cipher_types[] =
 
@@ -510,8 +511,10 @@ px_find_cipher(const char *name, PX_Cipher ** res)
    const struct ossl_cipher *ossl_ciph = NULL;
 
    name = px_resolve_alias(ossl_aliases, name);
-   for (i = 0; ossl_cipher_types[i].name; i++) {
-       if (!strcmp(ossl_cipher_types[i].name, name)) {
+   for (i = 0; ossl_cipher_types[i].name; i++)
+   {
+       if (!strcmp(ossl_cipher_types[i].name, name))
+       {
            ossl_ciph = ossl_cipher_types[i].ciph;
            break;
        }
index de0d426f46213108d187e66ffc6a35f074ee17af..3abc6f12b10a788445da74a02d87d2a83549fedf 100644 (file)
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: pgcrypto.c,v 1.13 2003/07/24 17:52:33 tgl Exp $
+ * $Id: pgcrypto.c,v 1.14 2003/08/04 00:43:11 momjian Exp $
  */
 
 #include <postgres.h>
@@ -241,7 +241,7 @@ pg_gen_salt_rounds(PG_FUNCTION_ARGS)
    if (len == 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("no such crypt algorithm or bad number of rounds")));
+            errmsg("no such crypt algorithm or bad number of rounds")));
 
    res = (text *) palloc(len + VARHDRSZ);
    VARATT_SIZEP(res) = len + VARHDRSZ;
index 110de6dff45d1ed9375bed0e62fb47b1122d3a4f..94160605dc7c5ac7205fdad1325c89740cc52829 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvsroot/pgsql/contrib/pgstattuple/pgstattuple.c,v 1.11 2003/08/01 02:21:17 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/pgstattuple/pgstattuple.c,v 1.12 2003/08/04 00:43:11 momjian Exp $
  *
  * Copyright (c) 2001,2002 Tatsuo Ishii
  *
@@ -221,5 +221,5 @@ pgstattuple_real(Relation rel)
        pfree(values[i]);
    pfree(values);
 
-   return(result);
+   return (result);
 }
index 31bd21b04eded5a2416fb89d21d824be146d2905..b6e0c6433167878d61751b5313357e5b353a337a 100644 (file)
@@ -73,8 +73,8 @@ autoinc(PG_FUNCTION_ARGS)
        if (SPI_gettypeid(tupdesc, attnum) != INT4OID)
            ereport(ERROR,
                    (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
-                    errmsg("attribute \"%s\" of \"%s\" must be type INT4",
-                            args[i], relname)));
+                  errmsg("attribute \"%s\" of \"%s\" must be type INT4",
+                         args[i], relname)));
 
        val = DatumGetInt32(SPI_getbinval(rettuple, tupdesc, attnum, &isnull));
 
index 6fa9c4c6f883e732f0481589ab3b13362345eba3..237b14d25c21adcf2efc1676a9d29bf442493044 100644 (file)
@@ -65,17 +65,17 @@ insert_username(PG_FUNCTION_ARGS)
    if (attnum < 0)
        ereport(ERROR,
                (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
-                errmsg("\"%s\" has no attribute \"%s\"", relname, args[0])));
+           errmsg("\"%s\" has no attribute \"%s\"", relname, args[0])));
 
    if (SPI_gettypeid(tupdesc, attnum) != TEXTOID)
        ereport(ERROR,
                (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
                 errmsg("attribute \"%s\" of \"%s\" must be type TEXT",
-                        args[0], relname)));
+                       args[0], relname)));
 
    /* create fields containing name */
    newval = DirectFunctionCall1(textin,
-                             CStringGetDatum(GetUserNameFromId(GetUserId())));
+                       CStringGetDatum(GetUserNameFromId(GetUserId())));
 
    /* construct new tuple */
    rettuple = SPI_modifytuple(rel, rettuple, 1, &attnum, &newval, NULL);
index 6d80bab55e685149c861ebf22eef0544a895148e..f3a97e1c81bb7dd4bb0c056914187701b3989ffa 100644 (file)
@@ -100,8 +100,8 @@ moddatetime(PG_FUNCTION_ARGS)
    if (SPI_gettypeid(tupdesc, attnum) != TIMESTAMPOID)
        ereport(ERROR,
                (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
-                errmsg("attribute \"%s\" of \"%s\" must be type TIMESTAMP",
-                        args[0], relname)));
+             errmsg("attribute \"%s\" of \"%s\" must be type TIMESTAMP",
+                    args[0], relname)));
 
 /* 1 is the number of items in the arrays attnum and newdt.
    attnum is the positional number of the field to be updated.
index c9baa9c249de5e075d6ffa6ba3028ecc8e8adab9..c409a269cac8f880efbb35ec06c2d3d56f91702d 100644 (file)
@@ -134,8 +134,8 @@ check_primary_key(PG_FUNCTION_ARGS)
        if (fnumber < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_COLUMN),
-                    errmsg("there is no attribute \"%s\" in relation \"%s\"",
-                           args[i], SPI_getrelname(rel))));
+               errmsg("there is no attribute \"%s\" in relation \"%s\"",
+                      args[i], SPI_getrelname(rel))));
 
        /* Well, get binary (in internal format) value of column */
        kvals[i] = SPI_getbinval(tuple, tupdesc, fnumber, &isnull);
@@ -365,8 +365,8 @@ check_foreign_key(PG_FUNCTION_ARGS)
        if (fnumber < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_COLUMN),
-                    errmsg("there is no attribute \"%s\" in relation \"%s\"",
-                           args[i], SPI_getrelname(rel))));
+               errmsg("there is no attribute \"%s\" in relation \"%s\"",
+                      args[i], SPI_getrelname(rel))));
 
        /* Well, get binary (in internal format) value of column */
        kvals[i] = SPI_getbinval(trigtuple, tupdesc, fnumber, &isnull);
@@ -591,7 +591,7 @@ check_foreign_key(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_TRIGGERED_ACTION_EXCEPTION),
                         errmsg("\"%s\": tuple is referenced in \"%s\"",
-                        trigger->tgname, relname)));
+                               trigger->tgname, relname)));
        }
        else
        {
index aa8d0a47b4637f95c283ddc08f66e85b2d0d7ced..8ffa56edc75fb696edc120abf091c495b1abf9b8 100644 (file)
@@ -6,11 +6,11 @@
 /* Modified by BÖJTHE Zoltán, Hungary, mailto:[email protected] */
 
 #include "executor/spi.h"      /* this is what you need to work with SPI */
-#include "commands/trigger.h"      /* -"- and triggers */
+#include "commands/trigger.h"  /* -"- and triggers */
 #include "miscadmin.h"         /* for GetPgUserName() */
-#include <ctype.h>         /* tolower () */
+#include <ctype.h>             /* tolower () */
 
-#define ABSTIMEOID 702     /* it should be in pg_type.h */
+#define ABSTIMEOID 702         /* it should be in pg_type.h */
 
 /* AbsoluteTime currabstime(void); */
 Datum      timetravel(PG_FUNCTION_ARGS);
@@ -28,13 +28,13 @@ static int  nPlans = 0;
 
 typedef struct _TTOffList
 {
-    struct _TTOffList  *next;
-    char       name[1];
-} TTOffList;
+   struct _TTOffList *next;
+   char        name[1];
+}  TTOffList;
 
-static TTOffList TTOff = {NULL,{0}};
+static TTOffList TTOff = {NULL, {0}};
 
-static int findTTStatus(char *name);
+static int findTTStatus(char *name);
 static EPlan *find_plan(char *ident, EPlan ** eplan, int *nplans);
 
 /*
@@ -71,57 +71,57 @@ static EPlan *find_plan(char *ident, EPlan ** eplan, int *nplans);
 
 PG_FUNCTION_INFO_V1(timetravel);
 
-Datum                      /* have to return HeapTuple to Executor */
+Datum                          /* have to return HeapTuple to Executor */
 timetravel(PG_FUNCTION_ARGS)
 {
-   TriggerData *trigdata = (TriggerData *) fcinfo->context;
-   Trigger     *trigger;       /* to get trigger name */
-   int     argc;
-   char        **args;         /* arguments */
-   int     attnum[MaxAttrNum]; /* fnumbers of start/stop columns */
+   TriggerData *trigdata = (TriggerData *) fcinfo->context;
+   Trigger    *trigger;        /* to get trigger name */
+   int         argc;
+   char      **args;           /* arguments */
+   int         attnum[MaxAttrNum];     /* fnumbers of start/stop columns */
    Datum       oldtimeon,
-           oldtimeoff;
+               oldtimeoff;
    Datum       newtimeon,
-           newtimeoff,
-           newuser,
-           nulltext;
-   Datum       *cvals;         /* column values */
-   char        *cnulls;        /* column nulls */
-   char        *relname;       /* triggered relation name */
+               newtimeoff,
+               newuser,
+               nulltext;
+   Datum      *cvals;          /* column values */
+   char       *cnulls;         /* column nulls */
+   char       *relname;        /* triggered relation name */
    Relation    rel;            /* triggered relation */
    HeapTuple   trigtuple;
    HeapTuple   newtuple = NULL;
    HeapTuple   rettuple;
    TupleDesc   tupdesc;        /* tuple description */
-   int     natts;          /* # of attributes */
-   EPlan       *plan;          /* prepared plan */
+   int         natts;          /* # of attributes */
+   EPlan      *plan;           /* prepared plan */
    char        ident[2 * NAMEDATALEN];
    bool        isnull;         /* to know is some column NULL or not */
    bool        isinsert = false;
-   int     ret;
-   int     i;
+   int         ret;
+   int         i;
 
    /*
     * Some checks first...
     */
 
    /* Called by trigger manager ? */
-   if(!CALLED_AS_TRIGGER(fcinfo))
+   if (!CALLED_AS_TRIGGER(fcinfo))
        elog(ERROR, "timetravel: not fired by trigger manager");
 
    /* Should be called for ROW trigger */
-   if(TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event))
+   if (TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event))
        elog(ERROR, "timetravel: can't process STATEMENT events");
 
    /* Should be called BEFORE */
-   if(TRIGGER_FIRED_AFTER(trigdata->tg_event))
+   if (TRIGGER_FIRED_AFTER(trigdata->tg_event))
        elog(ERROR, "timetravel: must be fired before event");
 
    /* INSERT ? */
-   if(TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
+   if (TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
        isinsert = true;
 
-   if(TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
+   if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
        newtuple = trigdata->tg_newtuple;
 
    trigtuple = trigdata->tg_trigtuple;
@@ -130,7 +130,7 @@ timetravel(PG_FUNCTION_ARGS)
    relname = SPI_getrelname(rel);
 
    /* check if TT is OFF for this relation */
-   if(0==findTTStatus(relname))
+   if (0 == findTTStatus(relname))
    {
        /* OFF - nothing to do */
        pfree(relname);
@@ -140,7 +140,7 @@ timetravel(PG_FUNCTION_ARGS)
    trigger = trigdata->tg_trigger;
 
    argc = trigger->tgnargs;
-   if(argc != MinAttrNum && argc != MaxAttrNum)
+   if (argc != MinAttrNum && argc != MaxAttrNum)
        elog(ERROR, "timetravel (%s): invalid (!= %d or %d) number of arguments %d",
             relname, MinAttrNum, MaxAttrNum, trigger->tgnargs);
 
@@ -148,39 +148,39 @@ timetravel(PG_FUNCTION_ARGS)
    tupdesc = rel->rd_att;
    natts = tupdesc->natts;
 
-   for(i = 0 ; i < MinAttrNum ; i++)
+   for (i = 0; i < MinAttrNum; i++)
    {
        attnum[i] = SPI_fnumber(tupdesc, args[i]);
-       if(attnum[i] < 0)
+       if (attnum[i] < 0)
            elog(ERROR, "timetravel (%s): there is no attribute %s", relname, args[i]);
-       if(SPI_gettypeid(tupdesc, attnum[i]) != ABSTIMEOID)
+       if (SPI_gettypeid(tupdesc, attnum[i]) != ABSTIMEOID)
            elog(ERROR, "timetravel (%s): attribute %s must be of abstime type",
                 relname, args[i]);
    }
-   for( ; i < argc ; i++)
+   for (; i < argc; i++)
    {
        attnum[i] = SPI_fnumber(tupdesc, args[i]);
-       if(attnum[i] < 0)
+       if (attnum[i] < 0)
            elog(ERROR, "timetravel (%s): there is no attribute %s", relname, args[i]);
-       if(SPI_gettypeid(tupdesc, attnum[i]) != TEXTOID)
+       if (SPI_gettypeid(tupdesc, attnum[i]) != TEXTOID)
            elog(ERROR, "timetravel (%s): attribute %s must be of text type",
                 relname, args[i]);
    }
 
    /* create fields containing name */
-        newuser = DirectFunctionCall1(textin, CStringGetDatum(GetUserNameFromId(GetUserId())));
+   newuser = DirectFunctionCall1(textin, CStringGetDatum(GetUserNameFromId(GetUserId())));
 
-   nulltext = (Datum)NULL;
+   nulltext = (Datum) NULL;
 
-   if(isinsert)
-   { /* INSERT */
-       int chnattrs = 0;
-       int chattrs[MaxAttrNum];
-       Datum   newvals[MaxAttrNum];
-       char    newnulls[MaxAttrNum];
+   if (isinsert)
+   {                           /* INSERT */
+       int         chnattrs = 0;
+       int         chattrs[MaxAttrNum];
+       Datum       newvals[MaxAttrNum];
+       char        newnulls[MaxAttrNum];
 
        oldtimeon = SPI_getbinval(trigtuple, tupdesc, attnum[a_time_on], &isnull);
-       if(isnull)
+       if (isnull)
        {
            newvals[chnattrs] = GetCurrentAbsoluteTime();
            newnulls[chnattrs] = ' ';
@@ -189,10 +189,10 @@ timetravel(PG_FUNCTION_ARGS)
        }
 
        oldtimeoff = SPI_getbinval(trigtuple, tupdesc, attnum[a_time_off], &isnull);
-       if(isnull)
+       if (isnull)
        {
-           if((chnattrs == 0 && DatumGetInt32(oldtimeon) >= NOEND_ABSTIME) ||
-              (chnattrs > 0 && DatumGetInt32(newvals[a_time_on]) >= NOEND_ABSTIME))
+           if ((chnattrs == 0 && DatumGetInt32(oldtimeon) >= NOEND_ABSTIME) ||
+               (chnattrs > 0 && DatumGetInt32(newvals[a_time_on]) >= NOEND_ABSTIME))
                elog(ERROR, "timetravel (%s): %s is infinity", relname, args[a_time_on]);
            newvals[chnattrs] = NOEND_ABSTIME;
            newnulls[chnattrs] = ' ';
@@ -201,16 +201,16 @@ timetravel(PG_FUNCTION_ARGS)
        }
        else
        {
-           if((chnattrs == 0 && DatumGetInt32(oldtimeon) > DatumGetInt32(oldtimeoff)) ||
-              (chnattrs > 0 && DatumGetInt32(newvals[a_time_on]) > DatumGetInt32(oldtimeoff)))
+           if ((chnattrs == 0 && DatumGetInt32(oldtimeon) > DatumGetInt32(oldtimeoff)) ||
+               (chnattrs > 0 && DatumGetInt32(newvals[a_time_on]) > DatumGetInt32(oldtimeoff)))
                elog(ERROR, "timetravel (%s): %s gt %s", relname, args[a_time_on], args[a_time_off]);
        }
 
        pfree(relname);
-       if(chnattrs <= 0)
+       if (chnattrs <= 0)
            return PointerGetDatum(trigtuple);
 
-       if(argc == MaxAttrNum)
+       if (argc == MaxAttrNum)
        {
            /* clear update_user value */
            newvals[chnattrs] = nulltext;
@@ -235,33 +235,34 @@ timetravel(PG_FUNCTION_ARGS)
 
 /* UPDATE/DELETE: */
    oldtimeon = SPI_getbinval(trigtuple, tupdesc, attnum[a_time_on], &isnull);
-   if(isnull)
+   if (isnull)
        elog(ERROR, "timetravel (%s): %s must be NOT NULL", relname, args[a_time_on]);
 
    oldtimeoff = SPI_getbinval(trigtuple, tupdesc, attnum[a_time_off], &isnull);
-   if(isnull)
+   if (isnull)
        elog(ERROR, "timetravel (%s): %s must be NOT NULL", relname, args[a_time_off]);
 
    /*
     * If DELETE/UPDATE of tuple with stop_date neq INFINITY then say
     * upper Executor to skip operation for this tuple
     */
-   if(newtuple != NULL)
-   { /* UPDATE */
+   if (newtuple != NULL)
+   {                           /* UPDATE */
        newtimeon = SPI_getbinval(newtuple, tupdesc, attnum[a_time_on], &isnull);
-       if(isnull)
+       if (isnull)
            elog(ERROR, "timetravel (%s): %s must be NOT NULL", relname, args[a_time_on]);
 
        newtimeoff = SPI_getbinval(newtuple, tupdesc, attnum[a_time_off], &isnull);
-       if(isnull)
+       if (isnull)
            elog(ERROR, "timetravel (%s): %s must be NOT NULL", relname, args[a_time_off]);
 
-       if(oldtimeon != newtimeon || oldtimeoff != newtimeoff)
+       if (oldtimeon != newtimeon || oldtimeoff != newtimeoff)
            elog(ERROR, "timetravel (%s): you can't change %s and/or %s columns (use set_timetravel)",
                 relname, args[a_time_on], args[a_time_off]);
    }
-   if(oldtimeoff != NOEND_ABSTIME)
-   { /* current record is a deleted/updated record */
+   if (oldtimeoff != NOEND_ABSTIME)
+   {                           /* current record is a deleted/updated
+                                * record */
        pfree(relname);
        return PointerGetDatum(NULL);
    }
@@ -269,27 +270,28 @@ timetravel(PG_FUNCTION_ARGS)
    newtimeoff = GetCurrentAbsoluteTime();
 
    /* Connect to SPI manager */
-   if((ret = SPI_connect()) < 0)
+   if ((ret = SPI_connect()) < 0)
        elog(ERROR, "timetravel (%s): SPI_connect returned %d", relname, ret);
 
    /* Fetch tuple values and nulls */
    cvals = (Datum *) palloc(natts * sizeof(Datum));
    cnulls = (char *) palloc(natts * sizeof(char));
-   for(i = 0; i < natts; i++)
+   for (i = 0; i < natts; i++)
    {
        cvals[i] = SPI_getbinval(trigtuple, tupdesc, i + 1, &isnull);
        cnulls[i] = (isnull) ? 'n' : ' ';
    }
 
    /* change date column(s) */
-   cvals[attnum[a_time_off] - 1] = newtimeoff; /* stop_date eq current date */
+   cvals[attnum[a_time_off] - 1] = newtimeoff; /* stop_date eq current
+                                                * date */
    cnulls[attnum[a_time_off] - 1] = ' ';
 
-   if(!newtuple)
-   { /* DELETE */
-       if(argc == MaxAttrNum)
+   if (!newtuple)
+   {                           /* DELETE */
+       if (argc == MaxAttrNum)
        {
-           cvals[attnum[a_del_user] - 1] = newuser;        /* set delete user */
+           cvals[attnum[a_del_user] - 1] = newuser;    /* set delete user */
            cnulls[attnum[a_del_user] - 1] = ' ';
        }
    }
@@ -302,11 +304,11 @@ timetravel(PG_FUNCTION_ARGS)
    plan = find_plan(ident, &Plans, &nPlans);
 
    /* if there is no plan ... */
-   if(plan->splan == NULL)
+   if (plan->splan == NULL)
    {
-       void    *pplan;
-       Oid *ctypes;
-       char    sql[8192];
+       void       *pplan;
+       Oid        *ctypes;
+       char        sql[8192];
 
        /* allocate ctypes for preparation */
        ctypes = (Oid *) palloc(natts * sizeof(Oid));
@@ -315,15 +317,15 @@ timetravel(PG_FUNCTION_ARGS)
         * Construct query: INSERT INTO _relation_ VALUES ($1, ...)
         */
        snprintf(sql, sizeof(sql), "INSERT INTO %s VALUES (", relname);
-       for(i = 1; i <= natts; i++)
+       for (i = 1; i <= natts; i++)
        {
            ctypes[i - 1] = SPI_gettypeid(tupdesc, i);
-           if(!(tupdesc->attrs[i - 1]->attisdropped))  /* skip dropped columns */
-               snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d%s",
-                   i, (i < natts) ? ", " : ")" );
+           if (!(tupdesc->attrs[i - 1]->attisdropped)) /* skip dropped columns */
+               snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d%s",
+                        i, (i < natts) ? ", " : ")");
 #if 0
-               snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d /* %d */ %s",
-                   i, ctypes[i-1], (i < natts) ? ", " : ")" );
+           snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d /* %d */ %s",
+                    i, ctypes[i - 1], (i < natts) ? ", " : ")");
 #endif
        }
 
@@ -331,7 +333,7 @@ timetravel(PG_FUNCTION_ARGS)
 
        /* Prepare plan for query */
        pplan = SPI_prepare(sql, natts, ctypes);
-       if(pplan == NULL)
+       if (pplan == NULL)
            elog(ERROR, "timetravel (%s): SPI_prepare returned %d", relname, SPI_result);
 
        /*
@@ -340,7 +342,7 @@ timetravel(PG_FUNCTION_ARGS)
         * use.
         */
        pplan = SPI_saveplan(pplan);
-       if(pplan == NULL)
+       if (pplan == NULL)
            elog(ERROR, "timetravel (%s): SPI_saveplan returned %d", relname, SPI_result);
 
        plan->splan = pplan;
@@ -351,14 +353,14 @@ timetravel(PG_FUNCTION_ARGS)
     */
    ret = SPI_execp(plan->splan, cvals, cnulls, 0);
 
-   if(ret < 0)
+   if (ret < 0)
        elog(ERROR, "timetravel (%s): SPI_execp returned %d", relname, ret);
 
    /* Tuple to return to upper Executor ... */
-   if(newtuple)
-   { /* UPDATE */
-       int     chnattrs = 0;
-       int     chattrs[MaxAttrNum];
+   if (newtuple)
+   {                           /* UPDATE */
+       int         chnattrs = 0;
+       int         chattrs[MaxAttrNum];
        Datum       newvals[MaxAttrNum];
        char        newnulls[MaxAttrNum];
 
@@ -372,7 +374,7 @@ timetravel(PG_FUNCTION_ARGS)
        chattrs[chnattrs] = attnum[a_time_off];
        chnattrs++;
 
-       if(argc == MaxAttrNum)
+       if (argc == MaxAttrNum)
        {
            /* set update_user value */
            newvals[chnattrs] = newuser;
@@ -399,7 +401,8 @@ timetravel(PG_FUNCTION_ARGS)
         */
        /* SPI_pfree(tmptuple); */
    }
-   else                        /* DELETE case */
+   else
+/* DELETE case */
        rettuple = trigtuple;
 
    SPI_finish();               /* don't forget say Bye to SPI mgr */
@@ -417,23 +420,24 @@ PG_FUNCTION_INFO_V1(set_timetravel);
 Datum
 set_timetravel(PG_FUNCTION_ARGS)
 {
-        Name       relname = PG_GETARG_NAME(0);
-        int32      on = PG_GETARG_INT32(1);
-   char        *rname;
-   char        *d;
-   char        *s;
+   Name        relname = PG_GETARG_NAME(0);
+   int32       on = PG_GETARG_INT32(1);
+   char       *rname;
+   char       *d;
+   char       *s;
    int32       ret;
-   TTOffList   *p,*pp;
+   TTOffList  *p,
+              *pp;
 
-   for(pp = (p = &TTOff)->next; pp; pp=(p=pp)->next)
+   for (pp = (p = &TTOff)->next; pp; pp = (p = pp)->next)
    {
-       if(namestrcmp(relname, pp->name) == 0)
+       if (namestrcmp(relname, pp->name) == 0)
            break;
    }
-   if(pp)
+   if (pp)
    {
        /* OFF currently */
-       if(on != 0)
+       if (on != 0)
        {
            /* turn ON */
            p->next = pp->next;
@@ -444,20 +448,20 @@ set_timetravel(PG_FUNCTION_ARGS)
    else
    {
        /* ON currently */
-       if(on == 0)
+       if (on == 0)
        {
            /* turn OFF */
            s = rname = DatumGetCString(DirectFunctionCall1(nameout, NameGetDatum(relname)));
-           if(s)
+           if (s)
            {
-               pp = malloc(sizeof(TTOffList)+strlen(rname));
-               if(pp)
+               pp = malloc(sizeof(TTOffList) + strlen(rname));
+               if (pp)
                {
                    pp->next = NULL;
                    p->next = pp;
                    d = pp->name;
                    while (*s)
-                       *d++ = tolower((unsigned char)*s++);
+                       *d++ = tolower((unsigned char) *s++);
                    *d = '\0';
                }
                pfree(rname);
@@ -470,7 +474,7 @@ set_timetravel(PG_FUNCTION_ARGS)
 
 /*
  * get_timetravel (relname) --
- *  get timetravel status for specified relation (ON/OFF)
+ * get timetravel status for specified relation (ON/OFF)
  */
 PG_FUNCTION_INFO_V1(get_timetravel);
 
@@ -478,11 +482,11 @@ Datum
 get_timetravel(PG_FUNCTION_ARGS)
 {
    Name        relname = PG_GETARG_NAME(0);
-   TTOffList   *pp;
+   TTOffList  *pp;
 
-   for(pp = TTOff.next; pp; pp = pp->next)
+   for (pp = TTOff.next; pp; pp = pp->next)
    {
-       if(namestrcmp(relname, pp->name) == 0)
+       if (namestrcmp(relname, pp->name) == 0)
            PG_RETURN_INT32(0);
    }
    PG_RETURN_INT32(1);
@@ -491,9 +495,10 @@ get_timetravel(PG_FUNCTION_ARGS)
 static int
 findTTStatus(char *name)
 {
-   TTOffList* pp;
-   for(pp = TTOff.next; pp; pp = pp->next)
-       if(strcasecmp(name, pp->name) == 0)
+   TTOffList  *pp;
+
+   for (pp = TTOff.next; pp; pp = pp->next)
+       if (strcasecmp(name, pp->name) == 0)
            return 0;
    return 1;
 }
@@ -509,17 +514,17 @@ currabstime()
 static EPlan *
 find_plan(char *ident, EPlan ** eplan, int *nplans)
 {
-   EPlan   *newp;
-   int i;
+   EPlan      *newp;
+   int         i;
 
-   if(*nplans > 0)
+   if (*nplans > 0)
    {
-       for(i = 0; i < *nplans; i++)
+       for (i = 0; i < *nplans; i++)
        {
-           if(strcmp((*eplan)[i].ident, ident) == 0)
+           if (strcmp((*eplan)[i].ident, ident) == 0)
                break;
        }
-       if(i != *nplans)
+       if (i != *nplans)
            return (*eplan + i);
        *eplan = (EPlan *) realloc(*eplan, (i + 1) * sizeof(EPlan));
        newp = *eplan + i;
index d883793aace44c93129748c16dcd6ba48cb3513c..17a3a6a857978d1c88cec7e76bfc32ea3526ffee 100644 (file)
 
 #include "tablefunc.h"
 
-static int load_categories_hash(char *cats_sql, MemoryContext per_query_ctx);
+static int load_categories_hash(char *cats_sql, MemoryContext per_query_ctx);
 static Tuplestorestate *get_crosstab_tuplestore(char *sql,
-                                               int num_categories,
-                                               TupleDesc tupdesc,
-                                               MemoryContext per_query_ctx);
+                       int num_categories,
+                       TupleDesc tupdesc,
+                       MemoryContext per_query_ctx);
 static void validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial);
 static bool compatCrosstabTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
 static bool compatConnectbyTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
@@ -56,7 +56,7 @@ static TupleDesc make_crosstab_tupledesc(TupleDesc spi_tupdesc,
 static Tuplestorestate *connectby(char *relname,
          char *key_fld,
          char *parent_key_fld,
-           char *orderby_fld,
+         char *orderby_fld,
          char *branch_delim,
          char *start_with,
          int max_depth,
@@ -115,7 +115,7 @@ static HTAB *crosstab_HashTable;
 typedef struct crosstab_cat_desc
 {
    char       *catname;
-   int         attidx; /* zero based */
+   int         attidx;         /* zero based */
 }  crosstab_cat_desc;
 
 #define MAX_CATNAME_LEN            NAMEDATALEN
@@ -157,9 +157,9 @@ do { \
 /* hash table */
 typedef struct crosstab_hashent
 {
-   char                internal_catname[MAX_CATNAME_LEN];
-   crosstab_cat_desc  *catdesc;
-} crosstab_HashEnt;
+   char        internal_catname[MAX_CATNAME_LEN];
+   crosstab_cat_desc *catdesc;
+}  crosstab_HashEnt;
 
 /*
  * normal_rand - return requested number of random values
@@ -414,7 +414,7 @@ crosstab(PG_FUNCTION_ARGS)
                        (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                         errmsg("invalid source data SQL statement"),
                         errdetail("The provided SQL must return 3 " \
-                                  " columns; rowid, category, and values.")));
+                            " columns; rowid, category, and values.")));
        }
        else
        {
@@ -667,10 +667,10 @@ crosstab(PG_FUNCTION_ARGS)
 }
 
 /*
- * crosstab_hash - reimplement crosstab as materialized function and 
+ * crosstab_hash - reimplement crosstab as materialized function and
  * properly deal with missing values (i.e. don't pack remaining
  * values to the left)
- * 
+ *
  * crosstab - create a crosstab of rowids and values columns from a
  * SQL statement returning one rowid column, one category column,
  * and one value column.
@@ -705,13 +705,13 @@ PG_FUNCTION_INFO_V1(crosstab_hash);
 Datum
 crosstab_hash(PG_FUNCTION_ARGS)
 {
-   char               *sql = GET_STR(PG_GETARG_TEXT_P(0));
-   char               *cats_sql = GET_STR(PG_GETARG_TEXT_P(1));
-   ReturnSetInfo      *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
-   TupleDesc           tupdesc;
-   MemoryContext       per_query_ctx;
-   MemoryContext       oldcontext;
-   int                 num_categories;
+   char       *sql = GET_STR(PG_GETARG_TEXT_P(0));
+   char       *cats_sql = GET_STR(PG_GETARG_TEXT_P(1));
+   ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
+   TupleDesc   tupdesc;
+   MemoryContext per_query_ctx;
+   MemoryContext oldcontext;
+   int         num_categories;
 
    /* check to see if caller supports us returning a tuplestore */
    if (!rsinfo || !(rsinfo->allowedModes & SFRM_Materialize))
@@ -729,9 +729,9 @@ crosstab_hash(PG_FUNCTION_ARGS)
    /*
     * Check to make sure we have a reasonable tuple descriptor
     *
-    * Note we will attempt to coerce the values into whatever
-    * the return attribute type is and depend on the "in"
-    * function to complain if needed.
+    * Note we will attempt to coerce the values into whatever the return
+    * attribute type is and depend on the "in" function to complain if
+    * needed.
     */
    if (tupdesc->natts < 2)
        ereport(ERROR,
@@ -770,19 +770,19 @@ crosstab_hash(PG_FUNCTION_ARGS)
 static int
 load_categories_hash(char *cats_sql, MemoryContext per_query_ctx)
 {
-   HASHCTL         ctl;
-   int             ret;
-   int             proc;
-   MemoryContext   SPIcontext;
-   int             num_categories = 0;
+   HASHCTL     ctl;
+   int         ret;
+   int         proc;
+   MemoryContext SPIcontext;
+   int         num_categories = 0;
 
    /* initialize the category hash table */
    ctl.keysize = MAX_CATNAME_LEN;
    ctl.entrysize = sizeof(crosstab_HashEnt);
 
    /*
-    * use INIT_CATS, defined above as a guess of how
-    * many hash table entries to create, initially
+    * use INIT_CATS, defined above as a guess of how many hash table
+    * entries to create, initially
     */
    crosstab_HashTable = hash_create("crosstab hash", INIT_CATS, &ctl, HASH_ELEM);
 
@@ -798,13 +798,13 @@ load_categories_hash(char *cats_sql, MemoryContext per_query_ctx)
    /* Check for qualifying tuples */
    if ((ret == SPI_OK_SELECT) && (proc > 0))
    {
-       SPITupleTable  *spi_tuptable = SPI_tuptable;
-       TupleDesc       spi_tupdesc = spi_tuptable->tupdesc;
-       int             i;
+       SPITupleTable *spi_tuptable = SPI_tuptable;
+       TupleDesc   spi_tupdesc = spi_tuptable->tupdesc;
+       int         i;
 
        /*
-        * The provided categories SQL query must always return one column:
-        * category - the label or identifier for each column
+        * The provided categories SQL query must always return one
+        * column: category - the label or identifier for each column
         */
        if (spi_tupdesc->natts != 1)
            ereport(ERROR,
@@ -814,9 +814,9 @@ load_categories_hash(char *cats_sql, MemoryContext per_query_ctx)
 
        for (i = 0; i < proc; i++)
        {
-           crosstab_cat_desc  *catdesc;
-           char               *catname;
-           HeapTuple           spi_tuple;
+           crosstab_cat_desc *catdesc;
+           char       *catname;
+           HeapTuple   spi_tuple;
 
            /* get the next sql result tuple */
            spi_tuple = spi_tuptable->vals[i];
@@ -862,13 +862,13 @@ get_crosstab_tuplestore(char *sql,
                        TupleDesc tupdesc,
                        MemoryContext per_query_ctx)
 {
-   Tuplestorestate    *tupstore;
-   AttInMetadata      *attinmeta = TupleDescGetAttInMetadata(tupdesc);
-   char              **values;
-   HeapTuple           tuple;
-   int                 ret;
-   int                 proc;
-   MemoryContext       SPIcontext;
+   Tuplestorestate *tupstore;
+   AttInMetadata *attinmeta = TupleDescGetAttInMetadata(tupdesc);
+   char      **values;
+   HeapTuple   tuple;
+   int         ret;
+   int         proc;
+   MemoryContext SPIcontext;
 
    /* initialize our tuplestore */
    tupstore = tuplestore_begin_heap(true, false, SortMem);
@@ -885,33 +885,36 @@ get_crosstab_tuplestore(char *sql,
    /* Check for qualifying tuples */
    if ((ret == SPI_OK_SELECT) && (proc > 0))
    {
-       SPITupleTable  *spi_tuptable = SPI_tuptable;
-       TupleDesc       spi_tupdesc = spi_tuptable->tupdesc;
-       int             ncols = spi_tupdesc->natts;
-       char           *rowid;
-       char           *lastrowid = NULL;
-       int             i, j;
-       int             result_ncols;
+       SPITupleTable *spi_tuptable = SPI_tuptable;
+       TupleDesc   spi_tupdesc = spi_tuptable->tupdesc;
+       int         ncols = spi_tupdesc->natts;
+       char       *rowid;
+       char       *lastrowid = NULL;
+       int         i,
+                   j;
+       int         result_ncols;
 
        /*
-        * The provided SQL query must always return at least three columns:
+        * The provided SQL query must always return at least three
+        * columns:
         *
         * 1. rowname   the label for each row - column 1 in the final result
-        * 2. category  the label for each value-column in the final result
-        * 3. value     the values used to populate the value-columns
-        * 
+        * 2. category  the label for each value-column in the final
+        * result 3. value     the values used to populate the
+        * value-columns
+        *
         * If there are more than three columns, the last two are taken as
-        * "category" and "values". The first column is taken as "rowname".
-        * Additional columns (2 thru N-2) are assumed the same for the same
-        * "rowname", and are copied into the result tuple from the first
-        * time we encounter a particular rowname.
+        * "category" and "values". The first column is taken as
+        * "rowname". Additional columns (2 thru N-2) are assumed the same
+        * for the same "rowname", and are copied into the result tuple
+        * from the first time we encounter a particular rowname.
         */
        if (ncols < 3)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("invalid source data SQL statement"),
                     errdetail("The provided SQL must return 3 " \
-                              " columns; rowid, category, and values.")));
+                            " columns; rowid, category, and values.")));
 
        result_ncols = (ncols - 2) + num_categories;
 
@@ -922,7 +925,7 @@ get_crosstab_tuplestore(char *sql,
                     errmsg("invalid return type"),
                     errdetail("query-specified return " \
                               "tuple has %d columns but crosstab " \
-                              "returns %d", tupdesc->natts, result_ncols)));
+                          "returns %d", tupdesc->natts, result_ncols)));
 
        /* allocate space */
        values = (char **) palloc(result_ncols * sizeof(char *));
@@ -932,9 +935,9 @@ get_crosstab_tuplestore(char *sql,
 
        for (i = 0; i < proc; i++)
        {
-           HeapTuple           spi_tuple;
-           crosstab_cat_desc  *catdesc;
-           char               *catname;
+           HeapTuple   spi_tuple;
+           crosstab_cat_desc *catdesc;
+           char       *catname;
 
            /* get the next sql result tuple */
            spi_tuple = spi_tuptable->vals[i];
@@ -958,7 +961,10 @@ get_crosstab_tuplestore(char *sql,
                 */
                if (lastrowid != NULL)
                {
-                   /* switch to appropriate context while storing the tuple */
+                   /*
+                    * switch to appropriate context while storing the
+                    * tuple
+                    */
                    SPIcontext = MemoryContextSwitchTo(per_query_ctx);
 
                    /* rowid changed, flush the previous output row */
@@ -984,7 +990,7 @@ get_crosstab_tuplestore(char *sql,
                crosstab_HashTableLookup(catname, catdesc);
 
                if (catdesc)
-                   values[catdesc->attidx + ncols - 2] = 
+                   values[catdesc->attidx + ncols - 2] =
                        SPI_getvalue(spi_tuple, spi_tupdesc, ncols);
            }
 
@@ -1026,29 +1032,29 @@ get_crosstab_tuplestore(char *sql,
  *
  *         keyid   parent_keyid pos
  *         ------+------------+--
- *         row1    NULL         0
- *         row2    row1         0
- *         row3    row1         0
- *         row4    row2         1
- *         row5    row2         0
- *         row6    row4         0
- *         row7    row3         0
- *         row8    row6         0
- *         row9    row5         0
+ *         row1    NULL         0
+ *         row2    row1         0
+ *         row3    row1         0
+ *         row4    row2         1
+ *         row5    row2         0
+ *         row6    row4         0
+ *         row7    row3         0
+ *         row8    row6         0
+ *         row9    row5         0
  *
  *
  * connectby(text relname, text keyid_fld, text parent_keyid_fld
- *            [, text orderby_fld], text start_with, int max_depth
- *            [, text branch_delim])
+ *           [, text orderby_fld], text start_with, int max_depth
+ *           [, text branch_delim])
  * connectby('foo', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~') returns:
  *
- *     keyid   parent_id   level    branch             serial
+ *     keyid   parent_id   level    branch             serial
  *     ------+-----------+--------+-----------------------
- *     row2    NULL          0       row2                1
- *     row5    row2          1       row2~row5           2
- *     row9    row5          2       row2~row5~row9      3
- *     row4    row2          1       row2~row4           4
- *     row6    row4          2       row2~row4~row6      5
+ *     row2    NULL          0       row2                1
+ *     row5    row2          1       row2~row5           2
+ *     row9    row5          2       row2~row5~row9      3
+ *     row4    row2          1       row2~row4           4
+ *     row6    row4          2       row2~row4~row6      5
  *     row8    row6          3       row2~row4~row6~row8 6
  *
  */
@@ -1114,7 +1120,7 @@ connectby_text(PG_FUNCTION_ARGS)
    rsinfo->setResult = connectby(relname,
                                  key_fld,
                                  parent_key_fld,
-                                   NULL,
+                                 NULL,
                                  branch_delim,
                                  start_with,
                                  max_depth,
@@ -1149,7 +1155,7 @@ connectby_text_serial(PG_FUNCTION_ARGS)
    char       *branch_delim = NULL;
    bool        show_branch = false;
    bool        show_serial = true;
-   
+
    ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo;
    TupleDesc   tupdesc;
    AttInMetadata *attinmeta;
@@ -1192,7 +1198,7 @@ connectby_text_serial(PG_FUNCTION_ARGS)
    rsinfo->setResult = connectby(relname,
                                  key_fld,
                                  parent_key_fld,
-                                   orderby_fld,
+                                 orderby_fld,
                                  branch_delim,
                                  start_with,
                                  max_depth,
@@ -1222,12 +1228,12 @@ static Tuplestorestate *
 connectby(char *relname,
          char *key_fld,
          char *parent_key_fld,
-           char *orderby_fld,
+         char *orderby_fld,
          char *branch_delim,
          char *start_with,
          int max_depth,
          bool show_branch,
-           bool show_serial,
+         bool show_serial,
          MemoryContext per_query_ctx,
          AttInMetadata *attinmeta)
 {
@@ -1235,7 +1241,7 @@ connectby(char *relname,
    int         ret;
    MemoryContext oldcontext;
 
-   int serial = 1;
+   int         serial = 1;
 
    /* Connect to SPI manager */
    if ((ret = SPI_connect()) < 0)
@@ -1303,25 +1309,25 @@ build_tuplestore_recursively(char *key_fld,
    if (!show_serial)
    {
        appendStringInfo(sql, "SELECT %s, %s FROM %s WHERE %s = '%s' AND %s IS NOT NULL",
-                    key_fld,
-                    parent_key_fld,
-                    relname,
-                    parent_key_fld,
-                    start_with,
-                    key_fld);
-                    serial_column=0;
+                        key_fld,
+                        parent_key_fld,
+                        relname,
+                        parent_key_fld,
+                        start_with,
+                        key_fld);
+       serial_column = 0;
    }
    else
    {
        appendStringInfo(sql, "SELECT %s, %s FROM %s WHERE %s = '%s' AND %s IS NOT NULL ORDER BY %s",
-                    key_fld,
-                    parent_key_fld,
-                    relname,
-                    parent_key_fld,
-                    start_with,
-                    key_fld,
-                    orderby_fld);      
-                    serial_column=1;
+                        key_fld,
+                        parent_key_fld,
+                        relname,
+                        parent_key_fld,
+                        start_with,
+                        key_fld,
+                        orderby_fld);
+       serial_column = 1;
    }
 
    /* Retrieve the desired rows */
@@ -1371,8 +1377,8 @@ build_tuplestore_recursively(char *key_fld,
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("invalid return type"),
-                        errdetail("Return and SQL tuple descriptions are " \
-                                  "incompatible.")));
+                    errdetail("Return and SQL tuple descriptions are " \
+                              "incompatible.")));
 
            /* root value is the one we initially start with */
            values[0] = start_with;
@@ -1395,7 +1401,7 @@ build_tuplestore_recursively(char *key_fld,
                if (show_branch)
                    values[4] = serial_str;
                else
-                   values[3] = serial_str;                 
+                   values[3] = serial_str;
            }
 
            /* construct the tuple */
@@ -1508,11 +1514,11 @@ build_tuplestore_recursively(char *key_fld,
 static void
 validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial)
 {
-   int serial_column=0;
+   int         serial_column = 0;
 
    if (show_serial)
-       serial_column=1;
-       
+       serial_column = 1;
+
    /* are there the correct number of columns */
    if (show_branch)
    {
@@ -1546,7 +1552,7 @@ validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial
                (errcode(ERRCODE_SYNTAX_ERROR),
                 errmsg("invalid return type"),
                 errdetail("Third column must be type %s.",
-                        format_type_be(INT4OID))));
+                          format_type_be(INT4OID))));
 
    /* check that the type of the fourth column is TEXT if applicable */
    if (show_branch && tupdesc->attrs[3]->atttypid != TEXTOID)
@@ -1554,7 +1560,7 @@ validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial
                (errcode(ERRCODE_SYNTAX_ERROR),
                 errmsg("invalid return type"),
                 errdetail("Fourth column must be type %s.",
-                        format_type_be(TEXTOID))));
+                          format_type_be(TEXTOID))));
 
    /* check that the type of the fifth column is INT4 */
    if (show_branch && show_serial && tupdesc->attrs[4]->atttypid != INT4OID)
@@ -1565,7 +1571,7 @@ validateConnectbyTupleDesc(TupleDesc tupdesc, bool show_branch, bool show_serial
    if (!show_branch && show_serial && tupdesc->attrs[3]->atttypid != INT4OID)
        elog(ERROR, "Query-specified return tuple not valid for Connectby: "
             "fourth column must be type %s", format_type_be(INT4OID));
-            
+
    /* OK, the tupdesc is valid for our purposes */
 }
 
@@ -1596,7 +1602,7 @@ compatConnectbyTupleDescs(TupleDesc ret_tupdesc, TupleDesc sql_tupdesc)
                (errcode(ERRCODE_SYNTAX_ERROR),
                 errmsg("invalid return type"),
                 errdetail("SQL parent key field datatype does " \
-                          "not match return parent key field datatype.")));
+                       "not match return parent key field datatype.")));
 
    /* OK, the two tupdescs are compatible for our purposes */
    return true;
index 2455a72d8ddfdab883aa59c226d16f688e810b03..b827fd652d92759318f1ce71db29586188211dd1 100644 (file)
@@ -51,7 +51,8 @@ DICT      dicts[] = {
 #undef DICT_TABLE
 
 /* array for storing dictionary's objects (if needed) */
-void      *dictobjs[lengthof(dicts)];
+void      *dictobjs[
+                    lengthof(dicts)];
 
 #define STOPLEXEM  -2
 #define BYLOCALE   -1
@@ -175,7 +176,7 @@ lemmatize(char *word, int *len, int type)
        }
        else if (nd == BYLOCALE)
        {
-           continue; /* no dict for current locale */
+           continue;           /* no dict for current locale */
        }
        else
        {
index 917dced87fa0f683195c685f5bc44a7d391eb8ac..30062180076672a27d1fab34afdd8e19575ca56b 100644 (file)
@@ -4,80 +4,99 @@
 #include "ts_cfg.h"
 #include "dict.h"
 
-text* 
-char2text(char* in) {
+text *
+char2text(char *in)
+{
    return charl2text(in, strlen(in));
 }
 
-text* charl2text(char* in, int len) {
-   text *out=(text*)palloc(len+VARHDRSZ);
+text *
+charl2text(char *in, int len)
+{
+   text       *out = (text *) palloc(len + VARHDRSZ);
+
    memcpy(VARDATA(out), in, len);
-   VARATT_SIZEP(out) = len+VARHDRSZ;
+   VARATT_SIZEP(out) = len + VARHDRSZ;
    return out;
 }
 
-char   
-*text2char(text* in) {
-        char *out=palloc( VARSIZE(in) );
-        memcpy(out, VARDATA(in), VARSIZE(in)-VARHDRSZ);
-        out[ VARSIZE(in)-VARHDRSZ ] ='\0';
+char
+          *
+text2char(text *in)
+{
+   char       *out = palloc(VARSIZE(in));
+
+   memcpy(out, VARDATA(in), VARSIZE(in) - VARHDRSZ);
+   out[VARSIZE(in) - VARHDRSZ] = '\0';
    return out;
 }
 
-char    
-*pnstrdup(char* in, int len) {
-   char *out=palloc( len+1 );
+char
+          *
+pnstrdup(char *in, int len)
+{
+   char       *out = palloc(len + 1);
+
    memcpy(out, in, len);
-   out[len]='\0';
+   out[len] = '\0';
    return out;
 }
 
-text    
-*ptextdup(text* in) {
-   text *out=(text*)palloc( VARSIZE(in) );
-   memcpy(out,in,VARSIZE(in));
+text
+          *
+ptextdup(text *in)
+{
+   text       *out = (text *) palloc(VARSIZE(in));
+
+   memcpy(out, in, VARSIZE(in));
    return out;
 }
 
-text    
-*mtextdup(text* in) {
-   text *out=(text*)malloc( VARSIZE(in) );
-   if ( !out ) 
+text
+          *
+mtextdup(text *in)
+{
+   text       *out = (text *) malloc(VARSIZE(in));
+
+   if (!out)
        ts_error(ERROR, "No memory");
-   memcpy(out,in,VARSIZE(in));
+   memcpy(out, in, VARSIZE(in));
    return out;
 }
 
-void 
-ts_error(int state, const char *format, ...) {
-   va_list args;
-   int tlen = 128, len=0;
-   char    *buf;
-   
+void
+ts_error(int state, const char *format,...)
+{
+   va_list     args;
+   int         tlen = 128,
+               len = 0;
+   char       *buf;
+
    reset_cfg();
    reset_dict();
    reset_prs();
 
    va_start(args, format);
    buf = palloc(tlen);
-   len = vsnprintf(buf, tlen-1, format, args);
-   if ( len >= tlen ) {
-       tlen=len+1;
-       buf = repalloc( buf, tlen );
-       vsnprintf(buf, tlen-1, format, args);
+   len = vsnprintf(buf, tlen - 1, format, args);
+   if (len >= tlen)
+   {
+       tlen = len + 1;
+       buf = repalloc(buf, tlen);
+       vsnprintf(buf, tlen - 1, format, args);
    }
    va_end(args);
+
    /* ?? internal error ?? */
    elog(state, "%s", buf);
    pfree(buf);
 }
 
-int   
-text_cmp(text *a, text *b) {
-   if ( VARSIZE(a) == VARSIZE(b) )
-       return strncmp( VARDATA(a), VARDATA(b), VARSIZE(a)-VARHDRSZ );
-   return (int)VARSIZE(a) - (int)VARSIZE(b);
+int
+text_cmp(text *a, text *b)
+{
+   if (VARSIZE(a) == VARSIZE(b))
+       return strncmp(VARDATA(a), VARDATA(b), VARSIZE(a) - VARHDRSZ);
+   return (int) VARSIZE(a) - (int) VARSIZE(b);
 
 }
-
index 70313fa4d2473d2dc0f1352a33df4144b99be8a2..481f00405bba6fa274a36f600c820bdfb9d23e6e 100644 (file)
@@ -7,18 +7,18 @@
 #define PG_NARGS() (fcinfo->nargs)
 #endif
 
-text* char2text(char* in);
-text* charl2text(char* in, int len);
-char   *text2char(text* in);
-char   *pnstrdup(char* in, int len);
-text   *ptextdup(text* in);
-text   *mtextdup(text* in);
+text      *char2text(char *in);
+text      *charl2text(char *in, int len);
+char      *text2char(text *in);
+char      *pnstrdup(char *in, int len);
+text      *ptextdup(text *in);
+text      *mtextdup(text *in);
 
-int   text_cmp(text *a, text *b);
+int            text_cmp(text *a, text *b);
 
 #define NEXTVAL(x) ( (text*)( (char*)(x) + INTALIGN( VARSIZE(x) ) ) )
 #define ARRNELEMS(x)  ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x))
 
-void ts_error(int state, const char *format, ...);
+void       ts_error(int state, const char *format,...);
 
 #endif
index 8f4cad5c41754c7f6120c2ba9b39607228610368..9ceb78ffb8377bcd1eea1b6c9100ee47168fc6f9 100644 (file)
@@ -1,5 +1,5 @@
-/* 
- * interface functions to dictionary 
+/*
+ * interface functions to dictionary
  * Teodor Sigaev <[email protected]>
  */
 #include <errno.h>
 
 /*********top interface**********/
 
-static void *plan_getdict=NULL;
+static void *plan_getdict = NULL;
 
 void
-init_dict(Oid id, DictInfo *dict) {
-   Oid arg[1]={ OIDOID };
-   bool isnull;
-   Datum pars[1]={ ObjectIdGetDatum(id) };
-   int stat;
-
-   memset(dict,0,sizeof(DictInfo));
+init_dict(Oid id, DictInfo * dict)
+{
+   Oid         arg[1] = {OIDOID};
+   bool        isnull;
+   Datum       pars[1] = {ObjectIdGetDatum(id)};
+   int         stat;
+
+   memset(dict, 0, sizeof(DictInfo));
    SPI_connect();
-   if ( !plan_getdict ) {
-       plan_getdict = SPI_saveplan( SPI_prepare( "select dict_init, dict_initoption, dict_lexize from pg_ts_dict where oid = $1" , 1, arg ) );
-       if ( !plan_getdict ) 
+   if (!plan_getdict)
+   {
+       plan_getdict = SPI_saveplan(SPI_prepare("select dict_init, dict_initoption, dict_lexize from pg_ts_dict where oid = $1", 1, arg));
+       if (!plan_getdict)
            ts_error(ERROR, "SPI_prepare() failed");
    }
 
    stat = SPI_execp(plan_getdict, pars, " ", 1);
-   if ( stat < 0 )
-       ts_error (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 ) {
-       Datum opt;
-       Oid oid=InvalidOid;
-       oid=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
-       if ( !(isnull || oid==InvalidOid) ) {
-           opt=SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 2, &isnull);
-           dict->dictionary=(void*)DatumGetPointer(OidFunctionCall1(oid, opt)); 
+   if (stat < 0)
+       ts_error(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+   {
+       Datum       opt;
+       Oid         oid = InvalidOid;
+
+       oid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
+       if (!(isnull || oid == InvalidOid))
+       {
+           opt = SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 2, &isnull);
+           dict->dictionary = (void *) DatumGetPointer(OidFunctionCall1(oid, opt));
        }
-       oid=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 3, &isnull) );
-       if ( isnull || oid==InvalidOid ) 
+       oid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 3, &isnull));
+       if (isnull || oid == InvalidOid)
            ts_error(ERROR, "Null dict_lexize for dictonary %d", id);
        fmgr_info_cxt(oid, &(dict->lexize_info), TopMemoryContext);
-       dict->dict_id=id;
-   } else 
+       dict->dict_id = id;
+   }
+   else
        ts_error(ERROR, "No dictionary with id %d", id);
    SPI_finish();
 }
 
-typedef struct {
-   DictInfo    *last_dict;
-   int     len;
-   int     reallen;
-   DictInfo    *list;
+typedef struct
+{
+   DictInfo   *last_dict;
+   int         len;
+   int         reallen;
+   DictInfo   *list;
    SNMap       name2id_map;
-} DictList;
+}  DictList;
 
-static DictList DList = {NULL,0,0,NULL,{0,0,NULL}};
+static DictList DList = {NULL, 0, 0, NULL, {0, 0, NULL}};
 
 void
-reset_dict(void) {
-   freeSNMap( &(DList.name2id_map) );
+reset_dict(void)
+{
+   freeSNMap(&(DList.name2id_map));
    /* XXX need to free DList.list[*].dictionary */
-   if ( DList.list )
+   if (DList.list)
        free(DList.list);
-   memset(&DList,0,sizeof(DictList));
+   memset(&DList, 0, sizeof(DictList));
 }
 
 
 static int
-comparedict(const void *a, const void *b) {
-   return ((DictInfo*)a)->dict_id - ((DictInfo*)b)->dict_id;
+comparedict(const void *a, const void *b)
+{
+   return ((DictInfo *) a)->dict_id - ((DictInfo *) b)->dict_id;
 }
 
 DictInfo *
-finddict(Oid id) {
+finddict(Oid id)
+{
    /* last used dict */
-   if ( DList.last_dict && DList.last_dict->dict_id==id )
+   if (DList.last_dict && DList.last_dict->dict_id == id)
        return DList.last_dict;
 
 
    /* already used dict */
-   if (  DList.len != 0 ) {
-       DictInfo key;
-       key.dict_id=id;
+   if (DList.len != 0)
+   {
+       DictInfo    key;
+
+       key.dict_id = id;
        DList.last_dict = bsearch(&key, DList.list, DList.len, sizeof(DictInfo), comparedict);
-       if ( DList.last_dict != NULL )
+       if (DList.last_dict != NULL)
            return DList.last_dict;
    }
 
    /* last chance */
-   if ( DList.len==DList.reallen ) {
-       DictInfo *tmp;
-       int reallen = ( DList.reallen ) ? 2*DList.reallen : 16;
-       tmp=(DictInfo*)realloc(DList.list,sizeof(DictInfo)*reallen);
-       if ( !tmp ) 
-           ts_error(ERROR,"No memory");
-       DList.reallen=reallen;
-       DList.list=tmp;
+   if (DList.len == DList.reallen)
+   {
+       DictInfo   *tmp;
+       int         reallen = (DList.reallen) ? 2 * DList.reallen : 16;
+
+       tmp = (DictInfo *) realloc(DList.list, sizeof(DictInfo) * reallen);
+       if (!tmp)
+           ts_error(ERROR, "No memory");
+       DList.reallen = reallen;
+       DList.list = tmp;
    }
-   DList.last_dict=&(DList.list[DList.len]);
+   DList.last_dict = &(DList.list[DList.len]);
    init_dict(id, DList.last_dict);
 
    DList.len++;
    qsort(DList.list, DList.len, sizeof(DictInfo), comparedict);
-   return finddict(id); /* qsort changed order!! */;
+   return finddict(id); /* qsort changed order!! */ ;
 }
 
-static void *plan_name2id=NULL;
+static void *plan_name2id = NULL;
 
 Oid
-name2id_dict(text *name) {
-   Oid arg[1]={ TEXTOID };
-   bool isnull;
-   Datum pars[1]={ PointerGetDatum(name) };
-   int stat;
-   Oid id=findSNMap_t( &(DList.name2id_map), name );
-
-   if ( id ) 
+name2id_dict(text *name)
+{
+   Oid         arg[1] = {TEXTOID};
+   bool        isnull;
+   Datum       pars[1] = {PointerGetDatum(name)};
+   int         stat;
+   Oid         id = findSNMap_t(&(DList.name2id_map), name);
+
+   if (id)
        return id;
-   
+
    SPI_connect();
-   if ( !plan_name2id ) {
-       plan_name2id = SPI_saveplan( SPI_prepare( "select oid from pg_ts_dict where dict_name = $1" , 1, arg ) );
-       if ( !plan_name2id ) 
+   if (!plan_name2id)
+   {
+       plan_name2id = SPI_saveplan(SPI_prepare("select oid from pg_ts_dict where dict_name = $1", 1, arg));
+       if (!plan_name2id)
            ts_error(ERROR, "SPI_prepare() failed");
    }
 
    stat = SPI_execp(plan_name2id, pars, " ", 1);
-   if ( stat < 0 )
-       ts_error (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 )
-       id=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
-   else  
+   if (stat < 0)
+       ts_error(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+       id = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
+   else
        ts_error(ERROR, "No dictionary with name '%s'", text2char(name));
    SPI_finish();
-   addSNMap_t( &(DList.name2id_map), name, id );
+   addSNMap_t(&(DList.name2id_map), name, id);
    return id;
 }
 
 
 /******sql-level interface******/
 PG_FUNCTION_INFO_V1(lexize);
-Datum lexize(PG_FUNCTION_ARGS);
+Datum      lexize(PG_FUNCTION_ARGS);
 
 Datum
-lexize(PG_FUNCTION_ARGS) {
-   text *in=PG_GETARG_TEXT_P(1);
-   DictInfo *dict = finddict( PG_GETARG_OID(0) );
-   char    **res, **ptr;
-   Datum   *da;
-   ArrayType    *a;
-
-
-   ptr = res = (char**)DatumGetPointer(
-       FunctionCall3(&(dict->lexize_info), 
-           PointerGetDatum(dict->dictionary),
-           PointerGetDatum(VARDATA(in)),
-           Int32GetDatum(VARSIZE(in)-VARHDRSZ)
-       )
-   );
+lexize(PG_FUNCTION_ARGS)
+{
+   text       *in = PG_GETARG_TEXT_P(1);
+   DictInfo   *dict = finddict(PG_GETARG_OID(0));
+   char      **res,
+             **ptr;
+   Datum      *da;
+   ArrayType  *a;
+
+
+   ptr = res = (char **) DatumGetPointer(
+                                     FunctionCall3(&(dict->lexize_info),
+                                      PointerGetDatum(dict->dictionary),
+                                           PointerGetDatum(VARDATA(in)),
+                                   Int32GetDatum(VARSIZE(in) - VARHDRSZ)
+                                                   )
+       );
    PG_FREE_IF_COPY(in, 1);
-   if ( !res ) {
-       if (PG_NARGS() > 2)  
+   if (!res)
+   {
+       if (PG_NARGS() > 2)
            PG_RETURN_POINTER(NULL);
        else
            PG_RETURN_NULL();
    }
 
-   while(*ptr) ptr++;
-   da = (Datum*)palloc(sizeof(Datum)*(ptr-res+1));
-   ptr=res;
-   while(*ptr) {
-       da[ ptr-res ] = PointerGetDatum( char2text(*ptr) );
+   while (*ptr)
+       ptr++;
+   da = (Datum *) palloc(sizeof(Datum) * (ptr - res + 1));
+   ptr = res;
+   while (*ptr)
+   {
+       da[ptr - res] = PointerGetDatum(char2text(*ptr));
        ptr++;
    }
 
    a = construct_array(
-       da,
-       ptr-res,
-       TEXTOID,
-       -1,
-       false,
-       'i'
-   );
-
-   ptr=res; 
-   while(*ptr) {
-       pfree( DatumGetPointer(da[ ptr-res ]) );
-       pfree( *ptr );
+                       da,
+                       ptr - res,
+                       TEXTOID,
+                       -1,
+                       false,
+                       'i'
+       );
+
+   ptr = res;
+   while (*ptr)
+   {
+       pfree(DatumGetPointer(da[ptr - res]));
+       pfree(*ptr);
        ptr++;
    }
    pfree(res);
    pfree(da);
-       
-   PG_RETURN_POINTER(a);   
+
+   PG_RETURN_POINTER(a);
 }
 
 PG_FUNCTION_INFO_V1(lexize_byname);
-Datum lexize_byname(PG_FUNCTION_ARGS);
-Datum 
-lexize_byname(PG_FUNCTION_ARGS) {
-   text *dictname=PG_GETARG_TEXT_P(0);
-   Datum res;
+Datum      lexize_byname(PG_FUNCTION_ARGS);
+Datum
+lexize_byname(PG_FUNCTION_ARGS)
+{
+   text       *dictname = PG_GETARG_TEXT_P(0);
+   Datum       res;
 
    strdup("simple");
-   res=DirectFunctionCall3(
-       lexize,
-       ObjectIdGetDatum(name2id_dict(dictname)),
-       PG_GETARG_DATUM(1),
-       (Datum)0
-   );
+   res = DirectFunctionCall3(
+                             lexize,
+                             ObjectIdGetDatum(name2id_dict(dictname)),
+                             PG_GETARG_DATUM(1),
+                             (Datum) 0
+       );
    PG_FREE_IF_COPY(dictname, 0);
-   if (res) 
-       PG_RETURN_DATUM(res); 
-   else 
+   if (res)
+       PG_RETURN_DATUM(res);
+   else
        PG_RETURN_NULL();
 }
 
-static Oid currect_dictionary_id=0;
+static Oid currect_dictionary_id = 0;
 
 PG_FUNCTION_INFO_V1(set_curdict);
-Datum set_curdict(PG_FUNCTION_ARGS);
+Datum      set_curdict(PG_FUNCTION_ARGS);
 Datum
-set_curdict(PG_FUNCTION_ARGS) {
+set_curdict(PG_FUNCTION_ARGS)
+{
    finddict(PG_GETARG_OID(0));
-   currect_dictionary_id=PG_GETARG_OID(0);
+   currect_dictionary_id = PG_GETARG_OID(0);
    PG_RETURN_VOID();
 }
 
 PG_FUNCTION_INFO_V1(set_curdict_byname);
-Datum set_curdict_byname(PG_FUNCTION_ARGS);
+Datum      set_curdict_byname(PG_FUNCTION_ARGS);
 Datum
-set_curdict_byname(PG_FUNCTION_ARGS) {
-   text *dictname=PG_GETARG_TEXT_P(0);
+set_curdict_byname(PG_FUNCTION_ARGS)
+{
+   text       *dictname = PG_GETARG_TEXT_P(0);
 
    DirectFunctionCall1(
-       set_curdict,
-       ObjectIdGetDatum( name2id_dict(dictname) )
-   );
+                       set_curdict,
+                       ObjectIdGetDatum(name2id_dict(dictname))
+       );
    PG_FREE_IF_COPY(dictname, 0);
    PG_RETURN_VOID();
 }
 
 PG_FUNCTION_INFO_V1(lexize_bycurrent);
-Datum lexize_bycurrent(PG_FUNCTION_ARGS);
-Datum 
-lexize_bycurrent(PG_FUNCTION_ARGS) {
-   Datum res;
-   if ( currect_dictionary_id == 0 )
+Datum      lexize_bycurrent(PG_FUNCTION_ARGS);
+Datum
+lexize_bycurrent(PG_FUNCTION_ARGS)
+{
+   Datum       res;
+
+   if (currect_dictionary_id == 0)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
                 errmsg("no currect dictionary"),
                 errhint("Execute select set_curdict().")));
 
    res = DirectFunctionCall3(
-       lexize,
-       ObjectIdGetDatum(currect_dictionary_id),
-       PG_GETARG_DATUM(0),
-       (Datum)0
-   );
-   if (res) 
+                             lexize,
+                             ObjectIdGetDatum(currect_dictionary_id),
+                             PG_GETARG_DATUM(0),
+                             (Datum) 0
+       );
+   if (res)
        PG_RETURN_DATUM(res);
-   else 
+   else
        PG_RETURN_NULL();
 }
-
-
index bbbbfc47a51d1ee8a2f15d8655054b6341da19f9..86ea42263e5069a201de18fa041f4b13952ecd66 100644 (file)
@@ -3,36 +3,39 @@
 #include "postgres.h"
 #include "fmgr.h"
 
-typedef struct {
-   int len;
-   char    **stop;
-   char*   (*wordop)(char*);
-} StopList;
-
-void sortstoplist(StopList *s);
-void freestoplist(StopList *s); 
-void readstoplist(text *in, StopList *s);
-bool searchstoplist(StopList *s, char *key);
-char* lowerstr(char *str);
-
-typedef struct {
-   Oid dict_id;
-   FmgrInfo lexize_info;
-   void *dictionary;
-} DictInfo;
-
-void init_dict(Oid id, DictInfo *dict);
-DictInfo* finddict(Oid id);
-Oid name2id_dict(text *name);
-void reset_dict(void);
+typedef struct
+{
+   int         len;
+   char      **stop;
+   char       *(*wordop) (char *);
+}  StopList;
+
+void       sortstoplist(StopList * s);
+void       freestoplist(StopList * s);
+void       readstoplist(text *in, StopList * s);
+bool       searchstoplist(StopList * s, char *key);
+char      *lowerstr(char *str);
+
+typedef struct
+{
+   Oid         dict_id;
+   FmgrInfo    lexize_info;
+   void       *dictionary;
+}  DictInfo;
+
+void       init_dict(Oid id, DictInfo * dict);
+DictInfo   *finddict(Oid id);
+Oid            name2id_dict(text *name);
+void       reset_dict(void);
 
 
 /* simple parser of cfg string */
-typedef struct {
-        char    *key;
-        char    *value;
-} Map;
+typedef struct
+{
+   char       *key;
+   char       *value;
+}  Map;
 
-void parse_cfgdict(text *in, Map **m);
+void       parse_cfgdict(text *in, Map ** m);
 
 #endif
index ead96106871bf746d7ed369f06df55becaef28ca..a8fb20453ba2125bed97bbadc0cfff28cef5112f 100644 (file)
@@ -1,5 +1,5 @@
-/* 
- * example of dictionary 
+/*
+ * example of dictionary
  * Teodor Sigaev <[email protected]>
  */
 #include <errno.h>
 #include "dict.h"
 #include "common.h"
 
-typedef struct {
+typedef struct
+{
    StopList    stoplist;
-} DictExample;
+}  DictExample;
 
 
 PG_FUNCTION_INFO_V1(dex_init);
-Datum dex_init(PG_FUNCTION_ARGS);
+Datum      dex_init(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(dex_lexize);
-Datum dex_lexize(PG_FUNCTION_ARGS);
+Datum      dex_lexize(PG_FUNCTION_ARGS);
 
-Datum 
-dex_init(PG_FUNCTION_ARGS) {
-   DictExample *d = (DictExample*)malloc( sizeof(DictExample) );
+Datum
+dex_init(PG_FUNCTION_ARGS)
+{
+   DictExample *d = (DictExample *) malloc(sizeof(DictExample));
 
-   if ( !d )
+   if (!d)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
-   memset(d,0,sizeof(DictExample));
+   memset(d, 0, sizeof(DictExample));
+
+   d->stoplist.wordop = lowerstr;
+
+   if (!PG_ARGISNULL(0) && PG_GETARG_POINTER(0) != NULL)
+   {
+       text       *in = PG_GETARG_TEXT_P(0);
 
-   d->stoplist.wordop=lowerstr;
-       
-   if ( !PG_ARGISNULL(0) && PG_GETARG_POINTER(0)!=NULL ) {
-       text       *in = PG_GETARG_TEXT_P(0);
        readstoplist(in, &(d->stoplist));
        sortstoplist(&(d->stoplist));
        PG_FREE_IF_COPY(in, 0);
@@ -44,18 +49,21 @@ dex_init(PG_FUNCTION_ARGS) {
 }
 
 Datum
-dex_lexize(PG_FUNCTION_ARGS) {
-   DictExample *d = (DictExample*)PG_GETARG_POINTER(0);
-   char       *in = (char*)PG_GETARG_POINTER(1);
-   char *txt = pnstrdup(in, PG_GETARG_INT32(2));
-   char    **res=palloc(sizeof(char*)*2);
+dex_lexize(PG_FUNCTION_ARGS)
+{
+   DictExample *d = (DictExample *) PG_GETARG_POINTER(0);
+   char       *in = (char *) PG_GETARG_POINTER(1);
+   char       *txt = pnstrdup(in, PG_GETARG_INT32(2));
+   char      **res = palloc(sizeof(char *) * 2);
 
-   if ( *txt=='\0' || searchstoplist(&(d->stoplist),txt) ) {
+   if (*txt == '\0' || searchstoplist(&(d->stoplist), txt))
+   {
        pfree(txt);
-       res[0]=NULL;
-   } else 
-       res[0]=txt;
-   res[1]=NULL;
+       res[0] = NULL;
+   }
+   else
+       res[0] = txt;
+   res[1] = NULL;
 
    PG_RETURN_POINTER(res);
 }
index c053adfad0b165228b818574b7f9fe598293a06a..e3a100fa0135c62c12d239046fe5220bd447d4fc 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * ISpell interface
  * Teodor Sigaev <[email protected]>
  */
 #include "common.h"
 #include "ispell/spell.h"
 
-typedef struct {
+typedef struct
+{
    StopList    stoplist;
    IspellDict  obj;
-} DictISpell;
+}  DictISpell;
 
 PG_FUNCTION_INFO_V1(spell_init);
-Datum spell_init(PG_FUNCTION_ARGS);
+Datum      spell_init(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(spell_lexize);
-Datum spell_lexize(PG_FUNCTION_ARGS);
+Datum      spell_lexize(PG_FUNCTION_ARGS);
 
 static void
-freeDictISpell(DictISpell  *d) {
+freeDictISpell(DictISpell * d)
+{
    FreeIspell(&(d->obj));
    freestoplist(&(d->stoplist));
    free(d);
 }
 
-Datum 
-spell_init(PG_FUNCTION_ARGS) {
-   DictISpell  *d;
-   Map *cfg, *pcfg;
-   text *in;
-   bool affloaded=false, dictloaded=false, stoploaded=false;
-
-   if ( PG_ARGISNULL(0) || PG_GETARG_POINTER(0)==NULL )
+Datum
+spell_init(PG_FUNCTION_ARGS)
+{
+   DictISpell *d;
+   Map        *cfg,
+              *pcfg;
+   text       *in;
+   bool        affloaded = false,
+               dictloaded = false,
+               stoploaded = false;
+
+   if (PG_ARGISNULL(0) || PG_GETARG_POINTER(0) == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
                 errmsg("ISpell confguration error")));
-   d = (DictISpell*)malloc( sizeof(DictISpell) );
-   if ( !d )
+
+   d = (DictISpell *) malloc(sizeof(DictISpell));
+   if (!d)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
-   memset(d,0,sizeof(DictISpell));
-   d->stoplist.wordop=lowerstr;
+   memset(d, 0, sizeof(DictISpell));
+   d->stoplist.wordop = lowerstr;
 
    in = PG_GETARG_TEXT_P(0);
-   parse_cfgdict(in,&cfg);
+   parse_cfgdict(in, &cfg);
    PG_FREE_IF_COPY(in, 0);
-   pcfg=cfg;
-   while(pcfg->key) {
-       if ( strcasecmp("DictFile", pcfg->key) == 0 ) {
-           if ( dictloaded ) {
+   pcfg = cfg;
+   while (pcfg->key)
+   {
+       if (strcasecmp("DictFile", pcfg->key) == 0)
+       {
+           if (dictloaded)
+           {
                freeDictISpell(d);
                ereport(ERROR,
-                       (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                        errmsg("dictionary already loaded")));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("dictionary already loaded")));
            }
-           if ( ImportDictionary(&(d->obj), pcfg->value) ) {
+           if (ImportDictionary(&(d->obj), pcfg->value))
+           {
                freeDictISpell(d);
                ereport(ERROR,
                        (errcode(ERRCODE_CONFIG_FILE_ERROR),
                         errmsg("could not load dictionary file \"%s\"",
                                pcfg->value)));
            }
-           dictloaded=true;
-       } else if ( strcasecmp("AffFile", pcfg->key) == 0 ) {
-           if ( affloaded ) {
+           dictloaded = true;
+       }
+       else if (strcasecmp("AffFile", pcfg->key) == 0)
+       {
+           if (affloaded)
+           {
                freeDictISpell(d);
                ereport(ERROR,
-                       (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                        errmsg("affixes already loaded")));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("affixes already loaded")));
            }
-           if ( ImportAffixes(&(d->obj), pcfg->value) ) {
+           if (ImportAffixes(&(d->obj), pcfg->value))
+           {
                freeDictISpell(d);
                ereport(ERROR,
                        (errcode(ERRCODE_CONFIG_FILE_ERROR),
                         errmsg("could not load affix file \"%s\"",
                                pcfg->value)));
            }
-           affloaded=true;
-       } else if ( strcasecmp("StopFile", pcfg->key) == 0 ) {
-           text *tmp=char2text(pcfg->value);
-           if ( stoploaded ) {
+           affloaded = true;
+       }
+       else if (strcasecmp("StopFile", pcfg->key) == 0)
+       {
+           text       *tmp = char2text(pcfg->value);
+
+           if (stoploaded)
+           {
                freeDictISpell(d);
                ereport(ERROR,
-                       (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                        errmsg("stop words already loaded")));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("stop words already loaded")));
            }
            readstoplist(tmp, &(d->stoplist));
            sortstoplist(&(d->stoplist));
            pfree(tmp);
-           stoploaded=true;
-       } else {
+           stoploaded = true;
+       }
+       else
+       {
            freeDictISpell(d);
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("unrecognized option: %s => %s",
-                            pcfg->key, pcfg->value)));
+                           pcfg->key, pcfg->value)));
        }
        pfree(pcfg->key);
        pfree(pcfg->value);
@@ -109,15 +130,20 @@ spell_init(PG_FUNCTION_ARGS) {
    }
    pfree(cfg);
 
-   if ( affloaded && dictloaded ) {
+   if (affloaded && dictloaded)
+   {
        SortDictionary(&(d->obj));
        SortAffixes(&(d->obj));
-   } else if ( !affloaded ) {
+   }
+   else if (!affloaded)
+   {
        freeDictISpell(d);
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
                 errmsg("no affixes")));
-   } else {
+   }
+   else
+   {
        freeDictISpell(d);
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
@@ -128,37 +154,43 @@ spell_init(PG_FUNCTION_ARGS) {
 }
 
 Datum
-spell_lexize(PG_FUNCTION_ARGS) {
-   DictISpell *d = (DictISpell*)PG_GETARG_POINTER(0);
-   char       *in = (char*)PG_GETARG_POINTER(1);
-   char *txt;
-   char    **res;
-   char    **ptr, **cptr;
-
-   if ( !PG_GETARG_INT32(2) )
+spell_lexize(PG_FUNCTION_ARGS)
+{
+   DictISpell *d = (DictISpell *) PG_GETARG_POINTER(0);
+   char       *in = (char *) PG_GETARG_POINTER(1);
+   char       *txt;
+   char      **res;
+   char      **ptr,
+             **cptr;
+
+   if (!PG_GETARG_INT32(2))
        PG_RETURN_POINTER(NULL);
 
-   res=palloc(sizeof(char*)*2);
+   res = palloc(sizeof(char *) * 2);
    txt = pnstrdup(in, PG_GETARG_INT32(2));
-   res=NormalizeWord(&(d->obj), txt);
+   res = NormalizeWord(&(d->obj), txt);
    pfree(txt);
 
-   if ( res==NULL ) 
+   if (res == NULL)
        PG_RETURN_POINTER(NULL);
 
-   ptr=cptr=res;
-   while(*ptr) {
-       if ( searchstoplist(&(d->stoplist),*ptr) ) {
+   ptr = cptr = res;
+   while (*ptr)
+   {
+       if (searchstoplist(&(d->stoplist), *ptr))
+       {
            pfree(*ptr);
-           *ptr=NULL;
+           *ptr = NULL;
+           ptr++;
+       }
+       else
+       {
+           *cptr = *ptr;
+           cptr++;
            ptr++;
-       } else {
-           *cptr=*ptr;
-           cptr++; ptr++;
        }
    }
-   *cptr=NULL;
+   *cptr = NULL;
 
    PG_RETURN_POINTER(res);
 }
-
index 103d87d7f993783589053eded4ddecc2dc0af24b..51dba0444994e36eb8017aaa8c3b86287054151b 100644 (file)
@@ -1,6 +1,6 @@
-/* 
+/*
  * example of Snowball dictionary
- * http://snowball.tartarus.org/ 
+ * http://snowball.tartarus.org/
  * Teodor Sigaev <[email protected]>
  */
 #include <stdlib.h>
 #include "snowball/english_stem.h"
 #include "snowball/russian_stem.h"
 
-typedef struct {
+typedef struct
+{
    struct SN_env *z;
    StopList    stoplist;
-   int (*stem)(struct SN_env * z);
-} DictSnowball;
+   int         (*stem) (struct SN_env * z);
+}  DictSnowball;
 
 
 PG_FUNCTION_INFO_V1(snb_en_init);
-Datum snb_en_init(PG_FUNCTION_ARGS);
+Datum      snb_en_init(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(snb_ru_init);
-Datum snb_ru_init(PG_FUNCTION_ARGS);
+Datum      snb_ru_init(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(snb_lexize);
-Datum snb_lexize(PG_FUNCTION_ARGS);
+Datum      snb_lexize(PG_FUNCTION_ARGS);
 
-Datum 
-snb_en_init(PG_FUNCTION_ARGS) {
-   DictSnowball    *d = (DictSnowball*)malloc( sizeof(DictSnowball) );
+Datum
+snb_en_init(PG_FUNCTION_ARGS)
+{
+   DictSnowball *d = (DictSnowball *) malloc(sizeof(DictSnowball));
 
-   if ( !d )
+   if (!d)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
-   memset(d,0,sizeof(DictSnowball));
-   d->stoplist.wordop=lowerstr;
-       
-   if ( !PG_ARGISNULL(0) && PG_GETARG_POINTER(0)!=NULL ) {
-       text       *in = PG_GETARG_TEXT_P(0);
+   memset(d, 0, sizeof(DictSnowball));
+   d->stoplist.wordop = lowerstr;
+
+   if (!PG_ARGISNULL(0) && PG_GETARG_POINTER(0) != NULL)
+   {
+       text       *in = PG_GETARG_TEXT_P(0);
+
        readstoplist(in, &(d->stoplist));
        sortstoplist(&(d->stoplist));
        PG_FREE_IF_COPY(in, 0);
    }
 
    d->z = english_create_env();
-   if (!d->z) {
+   if (!d->z)
+   {
        freestoplist(&(d->stoplist));
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
    }
-   d->stem=english_stem;
+   d->stem = english_stem;
 
    PG_RETURN_POINTER(d);
 }
 
-Datum 
-snb_ru_init(PG_FUNCTION_ARGS) {
-   DictSnowball    *d = (DictSnowball*)malloc( sizeof(DictSnowball) );
+Datum
+snb_ru_init(PG_FUNCTION_ARGS)
+{
+   DictSnowball *d = (DictSnowball *) malloc(sizeof(DictSnowball));
 
-   if ( !d )
+   if (!d)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
-   memset(d,0,sizeof(DictSnowball));
-   d->stoplist.wordop=lowerstr;
-       
-   if ( !PG_ARGISNULL(0) && PG_GETARG_POINTER(0)!=NULL ) {
-       text       *in = PG_GETARG_TEXT_P(0);
+   memset(d, 0, sizeof(DictSnowball));
+   d->stoplist.wordop = lowerstr;
+
+   if (!PG_ARGISNULL(0) && PG_GETARG_POINTER(0) != NULL)
+   {
+       text       *in = PG_GETARG_TEXT_P(0);
+
        readstoplist(in, &(d->stoplist));
        sortstoplist(&(d->stoplist));
        PG_FREE_IF_COPY(in, 0);
    }
 
    d->z = russian_create_env();
-   if (!d->z) {
+   if (!d->z)
+   {
        freestoplist(&(d->stoplist));
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
    }
-   d->stem=russian_stem;
+   d->stem = russian_stem;
 
    PG_RETURN_POINTER(d);
 }
 
 Datum
-snb_lexize(PG_FUNCTION_ARGS) {
-   DictSnowball *d = (DictSnowball*)PG_GETARG_POINTER(0);
-   char       *in = (char*)PG_GETARG_POINTER(1);
-   char *txt = pnstrdup(in, PG_GETARG_INT32(2));
-   char    **res=palloc(sizeof(char*)*2);
-
-   if ( *txt=='\0' || searchstoplist(&(d->stoplist),txt) ) {
+snb_lexize(PG_FUNCTION_ARGS)
+{
+   DictSnowball *d = (DictSnowball *) PG_GETARG_POINTER(0);
+   char       *in = (char *) PG_GETARG_POINTER(1);
+   char       *txt = pnstrdup(in, PG_GETARG_INT32(2));
+   char      **res = palloc(sizeof(char *) * 2);
+
+   if (*txt == '\0' || searchstoplist(&(d->stoplist), txt))
+   {
        pfree(txt);
-       res[0]=NULL;
-   } else {
+       res[0] = NULL;
+   }
+   else
+   {
        SN_set_current(d->z, strlen(txt), txt);
-       (d->stem)(d->z);
-       if ( d->z->p && d->z->l ) {
-           txt=repalloc(txt, d->z->l+1);
-           memcpy( txt, d->z->p, d->z->l);
-           txt[d->z->l]='\0';
-       }   
-       res[0]=txt;
+       (d->stem) (d->z);
+       if (d->z->p && d->z->l)
+       {
+           txt = repalloc(txt, d->z->l + 1);
+           memcpy(txt, d->z->p, d->z->l);
+           txt[d->z->l] = '\0';
+       }
+       res[0] = txt;
    }
-   res[1]=NULL;
+   res[1] = NULL;
 
 
    PG_RETURN_POINTER(res);
 }
-
index 34f74cf0ff7cbd4039edde9b6464fbab5c542804..8364223be40e678e4f7751bf8b4ec2f8cc5735a0 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * ISpell interface
  * Teodor Sigaev <[email protected]>
  */
 #include "common.h"
 
 #define SYNBUFLEN  4096
-typedef struct {
-   char    *in;
-   char    *out;
-} Syn;
-
-typedef struct {
-   int len;
-   Syn *syn;   
-} DictSyn;
+typedef struct
+{
+   char       *in;
+   char       *out;
+}  Syn;
+
+typedef struct
+{
+   int         len;
+   Syn        *syn;
+}  DictSyn;
 
 PG_FUNCTION_INFO_V1(syn_init);
-Datum syn_init(PG_FUNCTION_ARGS);
+Datum      syn_init(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(syn_lexize);
-Datum syn_lexize(PG_FUNCTION_ARGS);
+Datum      syn_lexize(PG_FUNCTION_ARGS);
 
 static char *
-findwrd(char *in, char **end) {
-   char *start;
+findwrd(char *in, char **end)
+{
+   char       *start;
 
-   *end=NULL;
-   while(*in && isspace(*in))
+   *end = NULL;
+   while (*in && isspace(*in))
        in++;
 
-   if ( !in )
+   if (!in)
        return NULL;
-   start=in;
+   start = in;
 
-   while(*in && !isspace(*in))
+   while (*in && !isspace(*in))
        in++;
 
-   *end=in;
+   *end = in;
    return start;
 }
 
 static int
-compareSyn(const void *a, const void *b) {
-   return strcmp( ((Syn*)a)->in, ((Syn*)b)->in );
+compareSyn(const void *a, const void *b)
+{
+   return strcmp(((Syn *) a)->in, ((Syn *) b)->in);
 }
 
 
-Datum 
-syn_init(PG_FUNCTION_ARGS) {
-   text       *in;
-   DictSyn     *d;
-   int cur=0;
-   FILE    *fin;
-   char *filename;
-   char buf[SYNBUFLEN];
-   char *starti,*starto,*end=NULL;
-   int slen;
-
-   if ( PG_ARGISNULL(0) || PG_GETARG_POINTER(0)==NULL )
+Datum
+syn_init(PG_FUNCTION_ARGS)
+{
+   text       *in;
+   DictSyn    *d;
+   int         cur = 0;
+   FILE       *fin;
+   char       *filename;
+   char        buf[SYNBUFLEN];
+   char       *starti,
+              *starto,
+              *end = NULL;
+   int         slen;
+
+   if (PG_ARGISNULL(0) || PG_GETARG_POINTER(0) == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("NULL config")));
 
    in = PG_GETARG_TEXT_P(0);
-   if ( VARSIZE(in) - VARHDRSZ == 0 )
+   if (VARSIZE(in) - VARHDRSZ == 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("VOID config")));
 
-   filename=text2char(in);
+   filename = text2char(in);
    PG_FREE_IF_COPY(in, 0);
-   if ( (fin=fopen(filename,"r")) == NULL )
+   if ((fin = fopen(filename, "r")) == NULL)
        ereport(ERROR,
                (errcode_for_file_access(),
                 errmsg("could not open file \"%s\": %m",
-                        filename)));
+                       filename)));
 
-   d = (DictSyn*)malloc( sizeof(DictSyn) );
-   if ( !d ) {
+   d = (DictSyn *) malloc(sizeof(DictSyn));
+   if (!d)
+   {
        fclose(fin);
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
    }
-   memset(d,0,sizeof(DictSyn));
+   memset(d, 0, sizeof(DictSyn));
 
-   while( fgets(buf,SYNBUFLEN,fin) ) {
-       slen = strlen(buf)-1;
+   while (fgets(buf, SYNBUFLEN, fin))
+   {
+       slen = strlen(buf) - 1;
        buf[slen] = '\0';
-       if ( *buf=='\0' ) continue;
-       if (cur==d->len) {
-           d->len = (d->len) ? 2*d->len : 16;
-           d->syn=(Syn*)realloc( d->syn, sizeof(Syn)*d->len );
-           if ( !d->syn ) {
+       if (*buf == '\0')
+           continue;
+       if (cur == d->len)
+       {
+           d->len = (d->len) ? 2 * d->len : 16;
+           d->syn = (Syn *) realloc(d->syn, sizeof(Syn) * d->len);
+           if (!d->syn)
+           {
                fclose(fin);
                ereport(ERROR,
                        (errcode(ERRCODE_OUT_OF_MEMORY),
@@ -107,64 +120,66 @@ syn_init(PG_FUNCTION_ARGS) {
            }
        }
 
-       starti=findwrd(buf,&end);
-       if ( !starti )
+       starti = findwrd(buf, &end);
+       if (!starti)
            continue;
-       *end='\0';
-       if ( end >= buf+slen )
+       *end = '\0';
+       if (end >= buf + slen)
            continue;
 
-       starto= findwrd(end+1, &end);
-       if ( !starto )
+       starto = findwrd(end + 1, &end);
+       if (!starto)
            continue;
-       *end='\0';
+       *end = '\0';
 
-       d->syn[cur].in=strdup(lowerstr(starti));
-       d->syn[cur].out=strdup(lowerstr(starto));
-       if ( !(d->syn[cur].in && d->syn[cur].out) ) {
+       d->syn[cur].in = strdup(lowerstr(starti));
+       d->syn[cur].out = strdup(lowerstr(starto));
+       if (!(d->syn[cur].in && d->syn[cur].out))
+       {
            fclose(fin);
            ereport(ERROR,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
                     errmsg("out of memory")));
        }
 
-       cur++; 
+       cur++;
    }
-   
-   fclose(fin);    
-   
-   d->len=cur; 
-   if ( cur>1 )
-       qsort(d->syn, d->len, sizeof(Syn), compareSyn); 
+
+   fclose(fin);
+
+   d->len = cur;
+   if (cur > 1)
+       qsort(d->syn, d->len, sizeof(Syn), compareSyn);
 
    pfree(filename);
-        PG_RETURN_POINTER(d);
+   PG_RETURN_POINTER(d);
 }
 
 Datum
-syn_lexize(PG_FUNCTION_ARGS) {
-   DictSyn *d = (DictSyn*)PG_GETARG_POINTER(0);
-   char       *in = (char*)PG_GETARG_POINTER(1);
-   Syn key,*found;
-        char    **res=NULL;
-
-   if ( !PG_GETARG_INT32(2) )
+syn_lexize(PG_FUNCTION_ARGS)
+{
+   DictSyn    *d = (DictSyn *) PG_GETARG_POINTER(0);
+   char       *in = (char *) PG_GETARG_POINTER(1);
+   Syn         key,
+              *found;
+   char      **res = NULL;
+
+   if (!PG_GETARG_INT32(2))
        PG_RETURN_POINTER(NULL);
 
-   key.out=NULL;
-   key.in=lowerstr(pnstrdup(in, PG_GETARG_INT32(2)));
+   key.out = NULL;
+   key.in = lowerstr(pnstrdup(in, PG_GETARG_INT32(2)));
 
-   found=(Syn*)bsearch(&key, d->syn, d->len, sizeof(Syn), compareSyn);
+   found = (Syn *) bsearch(&key, d->syn, d->len, sizeof(Syn), compareSyn);
    pfree(key.in);
 
-   if ( !found ) 
+   if (!found)
        PG_RETURN_POINTER(NULL);
 
-   res=palloc(sizeof(char*)*2);
+   res = palloc(sizeof(char *) * 2);
 
-   res[0]=pstrdup(found->out);
-   res[1]=NULL;
+   res[0] = pstrdup(found->out);
+   res[1] = NULL;
 
-        PG_RETURN_POINTER(res);
+   PG_RETURN_POINTER(res);
 }
-
index c5ab2601496c0ffe0071cf03d1fab0b2c5635abc..45786cca6528c6785c9a29c5ff01828b2b2ae6a0 100644 (file)
 
 #define MAXNORMLEN 56
 
-#define STRNCASECMP(x,y)        (strncasecmp(x,y,strlen(y)))
+#define STRNCASECMP(x,y)       (strncasecmp(x,y,strlen(y)))
 
-static int cmpspell(const void *s1,const void *s2){
-   return(strcmp(((const SPELL*)s1)->word,((const SPELL*)s2)->word));
+static int
+cmpspell(const void *s1, const void *s2)
+{
+   return (strcmp(((const SPELL *) s1)->word, ((const SPELL *) s2)->word));
 }
 
-static void 
-strlower( char * str ) {
-   unsigned char *ptr = (unsigned char *)str;
-   while ( *ptr ) {
-       *ptr = tolower( *ptr );
+static void
+strlower(char *str)
+{
+   unsigned char *ptr = (unsigned char *) str;
+
+   while (*ptr)
+   {
+       *ptr = tolower(*ptr);
        ptr++;
    }
 }
 
 /* backward string compaire for suffix tree operations */
-static int 
-strbcmp(const char *s1, const char *s2) { 
-   int l1 = strlen(s1)-1, l2 = strlen(s2)-1;
-   while (l1 >= 0 && l2 >= 0) {
-       if (s1[l1] < s2[l2]) return -1;
-       if (s1[l1] > s2[l2]) return 1;
-       l1--; l2--;
+static int
+strbcmp(const char *s1, const char *s2)
+{
+   int         l1 = strlen(s1) - 1,
+               l2 = strlen(s2) - 1;
+
+   while (l1 >= 0 && l2 >= 0)
+   {
+       if (s1[l1] < s2[l2])
+           return -1;
+       if (s1[l1] > s2[l2])
+           return 1;
+       l1--;
+       l2--;
    }
-   if (l1 < l2) return -1;
-   if (l1 > l2) return 1;
+   if (l1 < l2)
+       return -1;
+   if (l1 > l2)
+       return 1;
 
    return 0;
 }
-static int 
-strbncmp(const char *s1, const char *s2, size_t count) { 
-   int l1 = strlen(s1) - 1, l2 = strlen(s2) - 1, l = count;
-   while (l1 >= 0 && l2 >= 0 && l > 0) {
-       if (s1[l1] < s2[l2]) return -1;
-       if (s1[l1] > s2[l2]) return 1;
+static int
+strbncmp(const char *s1, const char *s2, size_t count)
+{
+   int         l1 = strlen(s1) - 1,
+               l2 = strlen(s2) - 1,
+               l = count;
+
+   while (l1 >= 0 && l2 >= 0 && l > 0)
+   {
+       if (s1[l1] < s2[l2])
+           return -1;
+       if (s1[l1] > s2[l2])
+           return 1;
        l1--;
        l2--;
        l--;
    }
-   if (l == 0) return 0;
-   if (l1 < l2) return -1;
-   if (l1 > l2) return 1;
+   if (l == 0)
+       return 0;
+   if (l1 < l2)
+       return -1;
+   if (l1 > l2)
+       return 1;
    return 0;
 }
 
-static int 
-cmpaffix(const void *s1,const void *s2){
-   if (((const AFFIX*)s1)->type < ((const AFFIX*)s2)->type) return -1;
-   if (((const AFFIX*)s1)->type > ((const AFFIX*)s2)->type) return 1;
-   if (((const AFFIX*)s1)->type == 'p')
-       return(strcmp(((const AFFIX*)s1)->repl,((const AFFIX*)s2)->repl));
-   else 
-       return(strbcmp(((const AFFIX*)s1)->repl,((const AFFIX*)s2)->repl));
+static int
+cmpaffix(const void *s1, const void *s2)
+{
+   if (((const AFFIX *) s1)->type < ((const AFFIX *) s2)->type)
+       return -1;
+   if (((const AFFIX *) s1)->type > ((const AFFIX *) s2)->type)
+       return 1;
+   if (((const AFFIX *) s1)->type == 'p')
+       return (strcmp(((const AFFIX *) s1)->repl, ((const AFFIX *) s2)->repl));
+   else
+       return (strbcmp(((const AFFIX *) s1)->repl, ((const AFFIX *) s2)->repl));
 }
 
-int 
-AddSpell(IspellDict * Conf,const char * word,const char *flag){
-   if(Conf->nspell>=Conf->mspell){
-       if(Conf->mspell){
-           Conf->mspell+=1024*20;
-           Conf->Spell=(SPELL *)realloc(Conf->Spell,Conf->mspell*sizeof(SPELL));
-       }else{
-           Conf->mspell=1024*20;
-           Conf->Spell=(SPELL *)malloc(Conf->mspell*sizeof(SPELL));
+int
+AddSpell(IspellDict * Conf, const char *word, const char *flag)
+{
+   if (Conf->nspell >= Conf->mspell)
+   {
+       if (Conf->mspell)
+       {
+           Conf->mspell += 1024 * 20;
+           Conf->Spell = (SPELL *) realloc(Conf->Spell, Conf->mspell * sizeof(SPELL));
+       }
+       else
+       {
+           Conf->mspell = 1024 * 20;
+           Conf->Spell = (SPELL *) malloc(Conf->mspell * sizeof(SPELL));
        }
-       if ( Conf->Spell == NULL )
+       if (Conf->Spell == NULL)
            ereport(ERROR,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
                     errmsg("out of memory")));
    }
-   Conf->Spell[Conf->nspell].word=strdup(word);
-   if ( !Conf->Spell[Conf->nspell].word ) 
+   Conf->Spell[Conf->nspell].word = strdup(word);
+   if (!Conf->Spell[Conf->nspell].word)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
-   strncpy(Conf->Spell[Conf->nspell].flag,flag,10);
+   strncpy(Conf->Spell[Conf->nspell].flag, flag, 10);
    Conf->nspell++;
-   return(0);
+   return (0);
 }
 
 
-int 
-ImportDictionary(IspellDict * Conf,const char *filename){
-   unsigned char str[BUFSIZ];  
-   FILE *dict;
+int
+ImportDictionary(IspellDict * Conf, const char *filename)
+{
+   unsigned char str[BUFSIZ];
+   FILE       *dict;
 
-   if(!(dict=fopen(filename,"r")))return(1);
-   while(fgets(str,sizeof(str),dict)){
+   if (!(dict = fopen(filename, "r")))
+       return (1);
+   while (fgets(str, sizeof(str), dict))
+   {
        unsigned char *s;
        const unsigned char *flag;
 
-           flag = NULL;
-       if((s=strchr(str,'/'))){
-           *s=0;
-           s++;flag=s;
-           while(*s){
-               if (((*s>='A')&&(*s<='Z'))||((*s>='a')&&(*s<='z')))
+       flag = NULL;
+       if ((s = strchr(str, '/')))
+       {
+           *s = 0;
+           s++;
+           flag = s;
+           while (*s)
+           {
+               if (((*s >= 'A') && (*s <= 'Z')) || ((*s >= 'a') && (*s <= 'z')))
                    s++;
-               else {
-                   *s=0;
+               else
+               {
+                   *s = 0;
                    break;
                }
            }
-       }else{
-           flag="";
        }
+       else
+           flag = "";
        strlower(str);
        /* Dont load words if first letter is not required */
        /* It allows to optimize loading at  search time   */
-       s=str;
-       while(*s){
-           if(*s=='\r')*s=0;
-           if(*s=='\n')*s=0;
+       s = str;
+       while (*s)
+       {
+           if (*s == '\r')
+               *s = 0;
+           if (*s == '\n')
+               *s = 0;
            s++;
        }
-       AddSpell(Conf,str,flag);
+       AddSpell(Conf, str, flag);
    }
    fclose(dict);
-   return(0);
+   return (0);
 }
 
 
-static SPELL * 
-FindWord(IspellDict * Conf, const char *word, int affixflag) {
-   int l,c,r,resc,resl,resr, i;
+static SPELL *
+FindWord(IspellDict * Conf, const char *word, int affixflag)
+{
+   int         l,
+               c,
+               r,
+               resc,
+               resl,
+               resr,
+               i;
 
-   i = (int)(*word) & 255;
+   i = (int) (*word) & 255;
    l = Conf->SpellTree.Left[i];
    r = Conf->SpellTree.Right[i];
-   if (l == -1) return (NULL);
-   while(l<=r){
+   if (l == -1)
+       return (NULL);
+   while (l <= r)
+   {
        c = (l + r) >> 1;
        resc = strcmp(Conf->Spell[c].word, word);
-       if( (resc == 0) && 
-           ((affixflag == 0) || (strchr(Conf->Spell[c].flag, affixflag) != NULL)) ) {
-           return(&Conf->Spell[c]);
-       }
+       if ((resc == 0) &&
+           ((affixflag == 0) || (strchr(Conf->Spell[c].flag, affixflag) != NULL)))
+           return (&Conf->Spell[c]);
        resl = strcmp(Conf->Spell[l].word, word);
-       if( (resl == 0) && 
-           ((affixflag == 0) || (strchr(Conf->Spell[l].flag, affixflag) != NULL)) ) {
-           return(&Conf->Spell[l]);
-       }
+       if ((resl == 0) &&
+           ((affixflag == 0) || (strchr(Conf->Spell[l].flag, affixflag) != NULL)))
+           return (&Conf->Spell[l]);
        resr = strcmp(Conf->Spell[r].word, word);
-       if( (resr == 0) && 
-           ((affixflag == 0) || (strchr(Conf->Spell[r].flag, affixflag) != NULL)) ) {
-           return(&Conf->Spell[r]);
-       }
-       if(resc < 0){
+       if ((resr == 0) &&
+           ((affixflag == 0) || (strchr(Conf->Spell[r].flag, affixflag) != NULL)))
+           return (&Conf->Spell[r]);
+       if (resc < 0)
+       {
            l = c + 1;
            r--;
-       } else if(resc > 0){
+       }
+       else if (resc > 0)
+       {
            r = c - 1;
            l++;
-       } else {
+       }
+       else
+       {
            l++;
            r--;
        }
    }
-   return(NULL);
+   return (NULL);
 }
 
-int 
-AddAffix(IspellDict * Conf,int flag,const char *mask,const char *find,const char *repl,int type) {
-   if(Conf->naffixes>=Conf->maffixes){
-       if(Conf->maffixes){
-           Conf->maffixes+=16;
-           Conf->Affix = (AFFIX*)realloc((void*)Conf->Affix,Conf->maffixes*sizeof(AFFIX));
-       }else{
-           Conf->maffixes=16;
-           Conf->Affix = (AFFIX*)malloc(Conf->maffixes * sizeof(AFFIX));
+int
+AddAffix(IspellDict * Conf, int flag, const char *mask, const char *find, const char *repl, int type)
+{
+   if (Conf->naffixes >= Conf->maffixes)
+   {
+       if (Conf->maffixes)
+       {
+           Conf->maffixes += 16;
+           Conf->Affix = (AFFIX *) realloc((void *) Conf->Affix, Conf->maffixes * sizeof(AFFIX));
+       }
+       else
+       {
+           Conf->maffixes = 16;
+           Conf->Affix = (AFFIX *) malloc(Conf->maffixes * sizeof(AFFIX));
        }
-       if ( Conf->Affix == NULL ) 
+       if (Conf->Affix == NULL)
            ereport(ERROR,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
                     errmsg("out of memory")));
    }
-   if (type=='s') {
-       sprintf(Conf->Affix[Conf->naffixes].mask,"%s$",mask);
-   } else {
-       sprintf(Conf->Affix[Conf->naffixes].mask,"^%s",mask);
-   }
+   if (type == 's')
+       sprintf(Conf->Affix[Conf->naffixes].mask, "%s$", mask);
+   else
+       sprintf(Conf->Affix[Conf->naffixes].mask, "^%s", mask);
    Conf->Affix[Conf->naffixes].compile = 1;
-   Conf->Affix[Conf->naffixes].flag=flag;
-   Conf->Affix[Conf->naffixes].type=type;
-   
-   strcpy(Conf->Affix[Conf->naffixes].find,find);
-   strcpy(Conf->Affix[Conf->naffixes].repl,repl);
-   Conf->Affix[Conf->naffixes].replen=strlen(repl);
+   Conf->Affix[Conf->naffixes].flag = flag;
+   Conf->Affix[Conf->naffixes].type = type;
+
+   strcpy(Conf->Affix[Conf->naffixes].find, find);
+   strcpy(Conf->Affix[Conf->naffixes].repl, repl);
+   Conf->Affix[Conf->naffixes].replen = strlen(repl);
    Conf->naffixes++;
-   return(0);
+   return (0);
 }
 
-static char * 
-remove_spaces(char *dist,char *src){
-char *d,*s;
-   d=dist;
-   s=src;
-   while(*s){
-       if(*s!=' '&&*s!='-'&&*s!='\t'){
-           *d=*s;
+static char *
+remove_spaces(char *dist, char *src)
+{
+   char       *d,
+              *s;
+
+   d = dist;
+   s = src;
+   while (*s)
+   {
+       if (*s != ' ' && *s != '-' && *s != '\t')
+       {
+           *d = *s;
            d++;
        }
        s++;
    }
-   *d=0;
-   return(dist);
+   *d = 0;
+   return (dist);
 }
 
 
-int 
-ImportAffixes(IspellDict * Conf,const char *filename){
+int
+ImportAffixes(IspellDict * Conf, const char *filename)
+{
    unsigned char str[BUFSIZ];
-   unsigned char flag=0;
-   unsigned char mask[BUFSIZ]="";
-   unsigned char find[BUFSIZ]="";
-   unsigned char repl[BUFSIZ]="";
+   unsigned char flag = 0;
+   unsigned char mask[BUFSIZ] = "";
+   unsigned char find[BUFSIZ] = "";
+   unsigned char repl[BUFSIZ] = "";
    unsigned char *s;
-   int i;
-   int suffixes=0;
-   int prefixes=0;
-   FILE *affix;
-
-   if(!(affix=fopen(filename,"r")))
-       return(1);
-
-   while(fgets(str,sizeof(str),affix)){
-       if(!STRNCASECMP(str,"suffixes")){
-           suffixes=1;
-           prefixes=0;
+   int         i;
+   int         suffixes = 0;
+   int         prefixes = 0;
+   FILE       *affix;
+
+   if (!(affix = fopen(filename, "r")))
+       return (1);
+
+   while (fgets(str, sizeof(str), affix))
+   {
+       if (!STRNCASECMP(str, "suffixes"))
+       {
+           suffixes = 1;
+           prefixes = 0;
            continue;
        }
-       if(!STRNCASECMP(str,"prefixes")){
-           suffixes=0;
-           prefixes=1;
+       if (!STRNCASECMP(str, "prefixes"))
+       {
+           suffixes = 0;
+           prefixes = 1;
            continue;
        }
-       if(!STRNCASECMP(str,"flag ")){
-           s=str+5;
-           while(strchr("* ",*s))
+       if (!STRNCASECMP(str, "flag "))
+       {
+           s = str + 5;
+           while (strchr("* ", *s))
                s++;
-           flag=*s;
+           flag = *s;
            continue;
        }
-       if((!suffixes)&&(!prefixes))continue;
-       if((s=strchr(str,'#')))*s=0;
-       if(!*str)continue;
+       if ((!suffixes) && (!prefixes))
+           continue;
+       if ((s = strchr(str, '#')))
+           *s = 0;
+       if (!*str)
+           continue;
        strlower(str);
-       strcpy(mask,"");
-       strcpy(find,"");
-       strcpy(repl,"");
-       i=sscanf(str,"%[^>\n]>%[^,\n],%[^\n]",mask,find,repl);
-       remove_spaces(str,repl);strcpy(repl,str);
-       remove_spaces(str,find);strcpy(find,str);
-       remove_spaces(str,mask);strcpy(mask,str);
-       switch(i){
+       strcpy(mask, "");
+       strcpy(find, "");
+       strcpy(repl, "");
+       i = sscanf(str, "%[^>\n]>%[^,\n],%[^\n]", mask, find, repl);
+       remove_spaces(str, repl);
+       strcpy(repl, str);
+       remove_spaces(str, find);
+       strcpy(find, str);
+       remove_spaces(str, mask);
+       strcpy(mask, str);
+       switch (i)
+       {
            case 3:
                break;
            case 2:
-               if(*find != '\0'){
-                   strcpy(repl,find);
-                   strcpy(find,"");
+               if (*find != '\0')
+               {
+                   strcpy(repl, find);
+                   strcpy(find, "");
                }
                break;
            default:
                continue;
        }
-       
-       AddAffix(Conf,(int)flag,mask,find,repl,suffixes?'s':'p');
-       
+
+       AddAffix(Conf, (int) flag, mask, find, repl, suffixes ? 's' : 'p');
+
    }
    fclose(affix);
-       
-   return(0);
+
+   return (0);
 }
 
-void 
-SortDictionary(IspellDict * Conf){
-  int  CurLet = -1, Let;size_t i;
+void
+SortDictionary(IspellDict * Conf)
+{
+   int         CurLet = -1,
+               Let;
+   size_t      i;
 
-        qsort((void*)Conf->Spell,Conf->nspell,sizeof(SPELL),cmpspell);
+   qsort((void *) Conf->Spell, Conf->nspell, sizeof(SPELL), cmpspell);
 
-   for(i = 0; i < 256 ; i++ )
+   for (i = 0; i < 256; i++)
        Conf->SpellTree.Left[i] = -1;
 
-   for(i = 0; i < Conf->nspell; i++) {
-     Let = (int)(*(Conf->Spell[i].word)) & 255;
-     if (CurLet != Let) {
-       Conf->SpellTree.Left[Let] = i;
-       CurLet = Let;
-     }
-     Conf->SpellTree.Right[Let] = i;
+   for (i = 0; i < Conf->nspell; i++)
+   {
+       Let = (int) (*(Conf->Spell[i].word)) & 255;
+       if (CurLet != Let)
+       {
+           Conf->SpellTree.Left[Let] = i;
+           CurLet = Let;
+       }
+       Conf->SpellTree.Right[Let] = i;
    }
 }
 
-void 
-SortAffixes(IspellDict * Conf) {
-  int   CurLetP = -1, CurLetS = -1, Let;
-  AFFIX *Affix; size_t i;
-  
-  if (Conf->naffixes > 1)
-    qsort((void*)Conf->Affix,Conf->naffixes,sizeof(AFFIX),cmpaffix);
-  for(i = 0; i < 256; i++) {
-      Conf->PrefixTree.Left[i] = Conf->PrefixTree.Right[i] = -1;
-      Conf->SuffixTree.Left[i] = Conf->SuffixTree.Right[i] = -1;
-  }
-
-  for(i = 0; i < Conf->naffixes; i++) {
-    Affix = &(((AFFIX*)Conf->Affix)[i]);
-    if(Affix->type == 'p') {
-      Let = (int)(*(Affix->repl)) & 255;
-      if (CurLetP != Let) {
-   Conf->PrefixTree.Left[Let] = i;
-   CurLetP = Let;
-      }
-      Conf->PrefixTree.Right[Let] = i;
-    } else {
-      Let = (Affix->replen) ? (int)(Affix->repl[Affix->replen-1]) & 255 : 0;
-      if (CurLetS != Let) {
-   Conf->SuffixTree.Left[Let] = i;
-   CurLetS = Let;
-      }
-      Conf->SuffixTree.Right[Let] = i;
-    }
-  }
+void
+SortAffixes(IspellDict * Conf)
+{
+   int         CurLetP = -1,
+               CurLetS = -1,
+               Let;
+   AFFIX      *Affix;
+   size_t      i;
+
+   if (Conf->naffixes > 1)
+       qsort((void *) Conf->Affix, Conf->naffixes, sizeof(AFFIX), cmpaffix);
+   for (i = 0; i < 256; i++)
+   {
+       Conf->PrefixTree.Left[i] = Conf->PrefixTree.Right[i] = -1;
+       Conf->SuffixTree.Left[i] = Conf->SuffixTree.Right[i] = -1;
+   }
+
+   for (i = 0; i < Conf->naffixes; i++)
+   {
+       Affix = &(((AFFIX *) Conf->Affix)[i]);
+       if (Affix->type == 'p')
+       {
+           Let = (int) (*(Affix->repl)) & 255;
+           if (CurLetP != Let)
+           {
+               Conf->PrefixTree.Left[Let] = i;
+               CurLetP = Let;
+           }
+           Conf->PrefixTree.Right[Let] = i;
+       }
+       else
+       {
+           Let = (Affix->replen) ? (int) (Affix->repl[Affix->replen - 1]) & 255 : 0;
+           if (CurLetS != Let)
+           {
+               Conf->SuffixTree.Left[Let] = i;
+               CurLetS = Let;
+           }
+           Conf->SuffixTree.Right[Let] = i;
+       }
+   }
 }
 
-static char * 
-CheckSuffix(const char *word, size_t len, AFFIX *Affix, int *res, IspellDict *Conf) {
-  regmatch_t subs[2]; /* workaround for apache&linux */
-  char newword[2*MAXNORMLEN] = "";
-  int err;
-  
-  *res = strbncmp(word, Affix->repl, Affix->replen);
-  if (*res < 0) {
-    return NULL;
-  }
-  if (*res > 0) {
-    return NULL;
-  }
-  strcpy(newword, word);
-  strcpy(newword+len-Affix->replen, Affix->find);
-
-  if (Affix->compile) {
-    err = regcomp(&(Affix->reg),Affix->mask,REG_EXTENDED|REG_ICASE|REG_NOSUB);
-    if(err){
-      /*regerror(err, &(Affix->reg), regerrstr, ERRSTRSIZE);*/
-      regfree(&(Affix->reg));
-      return(NULL);
-    }
-    Affix->compile = 0;
-  }
-  if(!(err=regexec(&(Affix->reg),newword,1,subs,0))){
-    if(FindWord(Conf, newword, Affix->flag))
-   return pstrdup(newword);    
-  }
-  return NULL;
+static char *
+CheckSuffix(const char *word, size_t len, AFFIX * Affix, int *res, IspellDict * Conf)
+{
+   regmatch_t  subs[2];        /* workaround for apache&linux */
+   char        newword[2 * MAXNORMLEN] = "";
+   int         err;
+
+   *res = strbncmp(word, Affix->repl, Affix->replen);
+   if (*res < 0)
+       return NULL;
+   if (*res > 0)
+       return NULL;
+   strcpy(newword, word);
+   strcpy(newword + len - Affix->replen, Affix->find);
+
+   if (Affix->compile)
+   {
+       err = regcomp(&(Affix->reg), Affix->mask, REG_EXTENDED | REG_ICASE | REG_NOSUB);
+       if (err)
+       {
+           /* regerror(err, &(Affix->reg), regerrstr, ERRSTRSIZE); */
+           regfree(&(Affix->reg));
+           return (NULL);
+       }
+       Affix->compile = 0;
+   }
+   if (!(err = regexec(&(Affix->reg), newword, 1, subs, 0)))
+   {
+       if (FindWord(Conf, newword, Affix->flag))
+           return pstrdup(newword);
+   }
+   return NULL;
 }
 
 #define NS 1
 #define MAX_NORM 512
-static int 
-CheckPrefix(const char *word, size_t len, AFFIX *Affix, IspellDict *Conf, int pi,
-       char **forms, char ***cur ) {
-  regmatch_t subs[NS*2];
-  char newword[2*MAXNORMLEN] = "";
-  int err, ls, res, lres;
-  size_t newlen;
-  AFFIX *CAffix = Conf->Affix;
-  
-  res = strncmp(word, Affix->repl, Affix->replen);
-  if (res != 0) {
-    return res;
-  }
-  strcpy(newword, Affix->find);
-  strcat(newword, word+Affix->replen);
-
-  if (Affix->compile) {
-    err = regcomp(&(Affix->reg),Affix->mask,REG_EXTENDED|REG_ICASE|REG_NOSUB);
-    if(err){
-      /*regerror(err, &(Affix->reg), regerrstr, ERRSTRSIZE);*/
-      regfree(&(Affix->reg));
-      return (0);
-    }
-    Affix->compile = 0;
-  }
-  if(!(err=regexec(&(Affix->reg),newword,1,subs,0))){
-    SPELL * curspell;
-
-    if((curspell=FindWord(Conf, newword, Affix->flag))){
-      if ((*cur - forms) < (MAX_NORM-1)) {
-   **cur =  pstrdup(newword);
-   (*cur)++; **cur = NULL;
-      }
-    } 
-    newlen = strlen(newword);
-    ls = Conf->SuffixTree.Left[pi];
-      if ( ls>=0 && ((*cur - forms) < (MAX_NORM-1)) ) {
-   **cur = CheckSuffix(newword, newlen, &CAffix[ls], &lres, Conf);
-   if (**cur) {
-     (*cur)++; **cur = NULL;
+static int
+CheckPrefix(const char *word, size_t len, AFFIX * Affix, IspellDict * Conf, int pi,
+           char **forms, char ***cur)
+{
+   regmatch_t  subs[NS * 2];
+   char        newword[2 * MAXNORMLEN] = "";
+   int         err,
+               ls,
+               res,
+               lres;
+   size_t      newlen;
+   AFFIX      *CAffix = Conf->Affix;
+
+   res = strncmp(word, Affix->repl, Affix->replen);
+   if (res != 0)
+       return res;
+   strcpy(newword, Affix->find);
+   strcat(newword, word + Affix->replen);
+
+   if (Affix->compile)
+   {
+       err = regcomp(&(Affix->reg), Affix->mask, REG_EXTENDED | REG_ICASE | REG_NOSUB);
+       if (err)
+       {
+           /* regerror(err, &(Affix->reg), regerrstr, ERRSTRSIZE); */
+           regfree(&(Affix->reg));
+           return (0);
+       }
+       Affix->compile = 0;
    }
-      }
-  }
-  return 0;
+   if (!(err = regexec(&(Affix->reg), newword, 1, subs, 0)))
+   {
+       SPELL      *curspell;
+
+       if ((curspell = FindWord(Conf, newword, Affix->flag)))
+       {
+           if ((*cur - forms) < (MAX_NORM - 1))
+           {
+               **cur = pstrdup(newword);
+               (*cur)++;
+               **cur = NULL;
+           }
+       }
+       newlen = strlen(newword);
+       ls = Conf->SuffixTree.Left[pi];
+       if (ls >= 0 && ((*cur - forms) < (MAX_NORM - 1)))
+       {
+           **cur = CheckSuffix(newword, newlen, &CAffix[ls], &lres, Conf);
+           if (**cur)
+           {
+               (*cur)++;
+               **cur = NULL;
+           }
+       }
+   }
+   return 0;
 }
 
 
-char ** 
-NormalizeWord(IspellDict * Conf,char *word){
+char     **
+NormalizeWord(IspellDict * Conf, char *word)
+{
 /*regmatch_t subs[NS];*/
-size_t len;
-char ** forms;
-char **cur;
-AFFIX * Affix;
-int ri, pi, ipi, lp, rp, cp, ls, rs;
-int lres, rres, cres = 0;
-  SPELL *spell;
-
-   len=strlen(word);
+   size_t      len;
+   char      **forms;
+   char      **cur;
+   AFFIX      *Affix;
+   int         ri,
+               pi,
+               ipi,
+               lp,
+               rp,
+               cp,
+               ls,
+               rs;
+   int         lres,
+               rres,
+               cres = 0;
+   SPELL      *spell;
+
+   len = strlen(word);
    if (len > MAXNORMLEN)
-       return(NULL);
+       return (NULL);
 
    strlower(word);
 
-   forms=(char **) palloc(MAX_NORM*sizeof(char **));
-   cur=forms;*cur=NULL;
+   forms = (char **) palloc(MAX_NORM * sizeof(char **));
+   cur = forms;
+   *cur = NULL;
 
-   ri = (int)(*word) & 255;
-   pi = (int)(word[strlen(word)-1]) & 255;
-   Affix=(AFFIX*)Conf->Affix;
+   ri = (int) (*word) & 255;
+   pi = (int) (word[strlen(word) - 1]) & 255;
+   Affix = (AFFIX *) Conf->Affix;
 
    /* Check that the word itself is normal form */
-   if((spell = FindWord(Conf, word, 0))){
-       *cur=pstrdup(word);
-       cur++;*cur=NULL;
+   if ((spell = FindWord(Conf, word, 0)))
+   {
+       *cur = pstrdup(word);
+       cur++;
+       *cur = NULL;
    }
 
    /* Find all other NORMAL forms of the 'word' */
 
-   for (ipi = 0; ipi <= pi; ipi += pi) {
-
-       /* check prefix */
-       lp = Conf->PrefixTree.Left[ri];
-       rp = Conf->PrefixTree.Right[ri];
-       while (lp >= 0 && lp <= rp) {
-         cp = (lp + rp) >> 1;
-         cres = 0;
-         if ((cur - forms) < (MAX_NORM-1)) {
-       cres = CheckPrefix(word, len, &Affix[cp], Conf, ipi, forms, &cur);
-         }
-         if ((lp < cp) && ((cur - forms) < (MAX_NORM-1)) ) {
-       lres = CheckPrefix(word, len, &Affix[lp], Conf, ipi, forms, &cur);
-         }
-         if ( (rp > cp) && ((cur - forms) < (MAX_NORM-1)) ) {
-       rres = CheckPrefix(word, len, &Affix[rp], Conf, ipi, forms, &cur);
-         }
-         if (cres < 0) {
-       rp = cp - 1;
-       lp++;
-         } else if (cres > 0) {
-       lp = cp + 1;
-       rp--;
-         } else {
-       lp++;
-       rp--;
-         }
-       }
-
-       /* check suffix */
-       ls = Conf->SuffixTree.Left[ipi];
-       rs = Conf->SuffixTree.Right[ipi];
-       while (ls >= 0 && ls <= rs) {
-         if (  ((cur - forms) < (MAX_NORM-1)) ) {
-       *cur = CheckSuffix(word, len, &Affix[ls], &lres, Conf);
-       if (*cur) {
-         cur++; *cur = NULL;
-       }
-         }
-         if ( (rs > ls) && ((cur - forms) < (MAX_NORM-1)) ) {
-       *cur = CheckSuffix(word, len, &Affix[rs], &rres, Conf);
-       if (*cur) {
-         cur++; *cur = NULL;
+   for (ipi = 0; ipi <= pi; ipi += pi)
+   {
+
+       /* check prefix */
+       lp = Conf->PrefixTree.Left[ri];
+       rp = Conf->PrefixTree.Right[ri];
+       while (lp >= 0 && lp <= rp)
+       {
+           cp = (lp + rp) >> 1;
+           cres = 0;
+           if ((cur - forms) < (MAX_NORM - 1))
+               cres = CheckPrefix(word, len, &Affix[cp], Conf, ipi, forms, &cur);
+           if ((lp < cp) && ((cur - forms) < (MAX_NORM - 1)))
+               lres = CheckPrefix(word, len, &Affix[lp], Conf, ipi, forms, &cur);
+           if ((rp > cp) && ((cur - forms) < (MAX_NORM - 1)))
+               rres = CheckPrefix(word, len, &Affix[rp], Conf, ipi, forms, &cur);
+           if (cres < 0)
+           {
+               rp = cp - 1;
+               lp++;
+           }
+           else if (cres > 0)
+           {
+               lp = cp + 1;
+               rp--;
+           }
+           else
+           {
+               lp++;
+               rp--;
+           }
        }
-         }
-         ls++;
-         rs--;
-       } /* end while */
-     
-   } /* for ipi */
-
-   if(cur==forms){
+
+       /* check suffix */
+       ls = Conf->SuffixTree.Left[ipi];
+       rs = Conf->SuffixTree.Right[ipi];
+       while (ls >= 0 && ls <= rs)
+       {
+           if (((cur - forms) < (MAX_NORM - 1)))
+           {
+               *cur = CheckSuffix(word, len, &Affix[ls], &lres, Conf);
+               if (*cur)
+               {
+                   cur++;
+                   *cur = NULL;
+               }
+           }
+           if ((rs > ls) && ((cur - forms) < (MAX_NORM - 1)))
+           {
+               *cur = CheckSuffix(word, len, &Affix[rs], &rres, Conf);
+               if (*cur)
+               {
+                   cur++;
+                   *cur = NULL;
+               }
+           }
+           ls++;
+           rs--;
+       }                       /* end while */
+
+   }                           /* for ipi */
+
+   if (cur == forms)
+   {
        pfree(forms);
-       return(NULL);
+       return (NULL);
    }
-   return(forms);
+   return (forms);
 }
 
-void 
-FreeIspell (IspellDict *Conf) {
-  int i;
-  AFFIX *Affix = (AFFIX *)Conf->Affix;
-
-  for (i = 0; i < Conf->naffixes; i++) {
-    if (Affix[i].compile == 0) {
-      regfree(&(Affix[i].reg));
-    }
-  }
-  for (i = 0; i < Conf->naffixes; i++) {
-   free( Conf->Spell[i].word );
-  }
-  free(Conf->Affix);
-  free(Conf->Spell);
-  memset( (void*)Conf, 0, sizeof(IspellDict) );
-  return;
+void
+FreeIspell(IspellDict * Conf)
+{
+   int         i;
+   AFFIX      *Affix = (AFFIX *) Conf->Affix;
+
+   for (i = 0; i < Conf->naffixes; i++)
+   {
+       if (Affix[i].compile == 0)
+           regfree(&(Affix[i].reg));
+   }
+   for (i = 0; i < Conf->naffixes; i++)
+       free(Conf->Spell[i].word);
+   free(Conf->Affix);
+   free(Conf->Spell);
+   memset((void *) Conf, 0, sizeof(IspellDict));
+   return;
 }
index 3034ca6709da85047f98e0f711c2f7fb361acd2e..baf5052f02689ea6307e85d56522061dc5b848dd 100644 (file)
@@ -4,48 +4,53 @@
 #include <sys/types.h>
 #include <regex.h>
 
-typedef struct spell_struct {
-        char * word; 
-        char flag[10];
-} SPELL;
-
-typedef struct aff_struct {   
-        char flag;
-        char type;
-        char mask[33];
-        char find[16];
-        char repl[16];
-        regex_t reg;
-        size_t replen;
-        char compile;
-} AFFIX;
-
-typedef struct Tree_struct {
-        int Left[256], Right[256];
-} Tree_struct;
-
-typedef struct {
-   int maffixes;
-   int naffixes;
-   AFFIX * Affix;
-
-   int nspell;
-   int mspell;
-   SPELL   *Spell;
-   Tree_struct SpellTree;
-   Tree_struct PrefixTree;
-   Tree_struct SuffixTree;
-
-} IspellDict;
-
-char ** NormalizeWord(IspellDict * Conf,char *word);
-int ImportAffixes(IspellDict * Conf, const char *filename);
-int ImportDictionary(IspellDict * Conf,const char *filename);
-
-int  AddSpell(IspellDict * Conf,const char * word,const char *flag);
-int  AddAffix(IspellDict * Conf,int flag,const char *mask,const char *find,const char *repl,int type);
-void SortDictionary(IspellDict * Conf);
-void SortAffixes(IspellDict * Conf);
-void FreeIspell (IspellDict *Conf);
+typedef struct spell_struct
+{
+   char       *word;
+   char        flag[10];
+}  SPELL;
+
+typedef struct aff_struct
+{
+   char        flag;
+   char        type;
+   char        mask[33];
+   char        find[16];
+   char        repl[16];
+   regex_t     reg;
+   size_t      replen;
+   char        compile;
+}  AFFIX;
+
+typedef struct Tree_struct
+{
+   int         Left[256],
+               Right[256];
+}  Tree_struct;
+
+typedef struct
+{
+   int         maffixes;
+   int         naffixes;
+   AFFIX      *Affix;
+
+   int         nspell;
+   int         mspell;
+   SPELL      *Spell;
+   Tree_struct SpellTree;
+   Tree_struct PrefixTree;
+   Tree_struct SuffixTree;
+
+}  IspellDict;
+
+char     **NormalizeWord(IspellDict * Conf, char *word);
+int            ImportAffixes(IspellDict * Conf, const char *filename);
+int            ImportDictionary(IspellDict * Conf, const char *filename);
+
+int            AddSpell(IspellDict * Conf, const char *word, const char *flag);
+int            AddAffix(IspellDict * Conf, int flag, const char *mask, const char *find, const char *repl, int type);
+void       SortDictionary(IspellDict * Conf);
+void       SortAffixes(IspellDict * Conf);
+void       FreeIspell(IspellDict * Conf);
 
 #endif
index 783cf43ceb7e6fcaee58751c0f40314231c1bf16..6b553e4525671721cc27e00652b92603ceba1881 100644 (file)
@@ -1,5 +1,5 @@
-/* 
- * Simple config parser 
+/*
+ * Simple config parser
  * Teodor Sigaev <[email protected]>
  */
 #include <stdlib.h>
 #define CS_WAITEQ  2
 #define CS_WAITVALUE   3
 #define CS_INVALUE 4
-#define CS_IN2VALUE    5
+#define CS_IN2VALUE 5
 #define CS_WAITDELIM   6
 #define CS_INESC   7
 #define CS_IN2ESC  8
 
 static char *
-nstrdup(char *ptr, int len) {
-   char *res=palloc(len+1), *cptr;
-   memcpy(res,ptr,len);
-   res[len]='\0';
+nstrdup(char *ptr, int len)
+{
+   char       *res = palloc(len + 1),
+              *cptr;
+
+   memcpy(res, ptr, len);
+   res[len] = '\0';
    cptr = ptr = res;
-   while(*ptr) {
-       if ( *ptr == '\\' ) 
+   while (*ptr)
+   {
+       if (*ptr == '\\')
            ptr++;
-       *cptr=*ptr; ptr++; cptr++;
+       *cptr = *ptr;
+       ptr++;
+       cptr++;
    }
-   *cptr='\0';
+   *cptr = '\0';
 
    return res;
 }
 
 void
-parse_cfgdict(text *in, Map **m) {
-   Map *mptr;
-   char *ptr=VARDATA(in), *begin=NULL;
-   char num=0;
-   int state=CS_WAITKEY;
+parse_cfgdict(text *in, Map ** m)
+{
+   Map        *mptr;
+   char       *ptr = VARDATA(in),
+              *begin = NULL;
+   char        num = 0;
+   int         state = CS_WAITKEY;
 
-   while( ptr-VARDATA(in) < VARSIZE(in) - VARHDRSZ ) {
-       if ( *ptr==',' ) num++;
+   while (ptr - VARDATA(in) < VARSIZE(in) - VARHDRSZ)
+   {
+       if (*ptr == ',')
+           num++;
        ptr++;
    }
 
-   *m=mptr=(Map*)palloc( sizeof(Map)*(num+2) );
-   memset(mptr, 0, sizeof(Map)*(num+2) );
-   ptr=VARDATA(in);
-   while( ptr-VARDATA(in) < VARSIZE(in) - VARHDRSZ ) {
-       if (state==CS_WAITKEY) {
-           if (isalpha(*ptr)) {
-               begin=ptr;
-               state=CS_INKEY;
-           } else if ( !isspace(*ptr) )
+   *m = mptr = (Map *) palloc(sizeof(Map) * (num + 2));
+   memset(mptr, 0, sizeof(Map) * (num + 2));
+   ptr = VARDATA(in);
+   while (ptr - VARDATA(in) < VARSIZE(in) - VARHDRSZ)
+   {
+       if (state == CS_WAITKEY)
+       {
+           if (isalpha(*ptr))
+           {
+               begin = ptr;
+               state = CS_INKEY;
+           }
+           else if (!isspace(*ptr))
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("syntax error"),
-                        errdetail("Syntax error in position %d near \"%c\"",
-                                  (int) (ptr-VARDATA(in)), *ptr)));
-       } else if (state==CS_INKEY) {
-           if ( isspace(*ptr) ) {
-               mptr->key=nstrdup(begin, ptr-begin);
-               state=CS_WAITEQ;
-           } else if ( *ptr=='=' ) {
-               mptr->key=nstrdup(begin, ptr-begin);
-               state=CS_WAITVALUE;
-           } else if ( !isalpha(*ptr) ) 
+                    errdetail("Syntax error in position %d near \"%c\"",
+                              (int) (ptr - VARDATA(in)), *ptr)));
+       }
+       else if (state == CS_INKEY)
+       {
+           if (isspace(*ptr))
+           {
+               mptr->key = nstrdup(begin, ptr - begin);
+               state = CS_WAITEQ;
+           }
+           else if (*ptr == '=')
+           {
+               mptr->key = nstrdup(begin, ptr - begin);
+               state = CS_WAITVALUE;
+           }
+           else if (!isalpha(*ptr))
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("syntax error"),
-                        errdetail("Syntax error in position %d near \"%c\"",
-                                  (int) (ptr-VARDATA(in)), *ptr)));
-       } else if ( state==CS_WAITEQ ) {
-           if ( *ptr=='=' )
-               state=CS_WAITVALUE;
-           else if ( !isspace(*ptr) )
+                    errdetail("Syntax error in position %d near \"%c\"",
+                              (int) (ptr - VARDATA(in)), *ptr)));
+       }
+       else if (state == CS_WAITEQ)
+       {
+           if (*ptr == '=')
+               state = CS_WAITVALUE;
+           else if (!isspace(*ptr))
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("syntax error"),
-                        errdetail("Syntax error in position %d near \"%c\"",
-                                  (int) (ptr-VARDATA(in)), *ptr)));
-       } else if ( state==CS_WAITVALUE ) {
-           if ( *ptr=='"' ) {
-               begin=ptr+1;
-               state=CS_INVALUE;
-           } else if ( !isspace(*ptr) ) {
-               begin=ptr;
-               state=CS_IN2VALUE;
+                    errdetail("Syntax error in position %d near \"%c\"",
+                              (int) (ptr - VARDATA(in)), *ptr)));
+       }
+       else if (state == CS_WAITVALUE)
+       {
+           if (*ptr == '"')
+           {
+               begin = ptr + 1;
+               state = CS_INVALUE;
+           }
+           else if (!isspace(*ptr))
+           {
+               begin = ptr;
+               state = CS_IN2VALUE;
            }
-       } else if ( state==CS_INVALUE ) {
-           if ( *ptr=='"' ) {
-               mptr->value = nstrdup(begin, ptr-begin);
+       }
+       else if (state == CS_INVALUE)
+       {
+           if (*ptr == '"')
+           {
+               mptr->value = nstrdup(begin, ptr - begin);
                mptr++;
-               state=CS_WAITDELIM;
-           } else if ( *ptr=='\\' )
-               state=CS_INESC;
-       } else if ( state==CS_IN2VALUE ) {
-           if ( isspace(*ptr) || *ptr==',' ) {
-               mptr->value = nstrdup(begin, ptr-begin);
+               state = CS_WAITDELIM;
+           }
+           else if (*ptr == '\\')
+               state = CS_INESC;
+       }
+       else if (state == CS_IN2VALUE)
+       {
+           if (isspace(*ptr) || *ptr == ',')
+           {
+               mptr->value = nstrdup(begin, ptr - begin);
                mptr++;
-               state=( *ptr==',' ) ? CS_WAITKEY : CS_WAITDELIM;
-           } else if ( *ptr=='\\' )
-               state=CS_INESC;
-       } else if ( state==CS_WAITDELIM ) {
-           if ( *ptr==',' ) 
-               state=CS_WAITKEY; 
-           else if ( !isspace(*ptr) )
+               state = (*ptr == ',') ? CS_WAITKEY : CS_WAITDELIM;
+           }
+           else if (*ptr == '\\')
+               state = CS_INESC;
+       }
+       else if (state == CS_WAITDELIM)
+       {
+           if (*ptr == ',')
+               state = CS_WAITKEY;
+           else if (!isspace(*ptr))
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("syntax error"),
-                        errdetail("Syntax error in position %d near \"%c\"",
-                                  (int) (ptr-VARDATA(in)), *ptr)));
-       } else if ( state == CS_INESC ) {
-           state=CS_INVALUE;
-       } else if ( state == CS_IN2ESC ) {
-           state=CS_IN2VALUE;
-       } else 
+                    errdetail("Syntax error in position %d near \"%c\"",
+                              (int) (ptr - VARDATA(in)), *ptr)));
+       }
+       else if (state == CS_INESC)
+           state = CS_INVALUE;
+       else if (state == CS_IN2ESC)
+           state = CS_IN2VALUE;
+       else
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("bad parser state"),
                     errdetail("%d at position %d near \"%c\"",
-                               state, (int) (ptr-VARDATA(in)), *ptr)));
+                              state, (int) (ptr - VARDATA(in)), *ptr)));
        ptr++;
    }
 
-   if (state==CS_IN2VALUE) {
-       mptr->value = nstrdup(begin, ptr-begin);
+   if (state == CS_IN2VALUE)
+   {
+       mptr->value = nstrdup(begin, ptr - begin);
        mptr++;
-   } else if ( !(state==CS_WAITDELIM || state==CS_WAITKEY) ) 
+   }
+   else if (!(state == CS_WAITDELIM || state == CS_WAITKEY))
        ereport(ERROR,
                (errcode(ERRCODE_SYNTAX_ERROR),
                 errmsg("unexpected end of line")));
 }
-
-
index 14564c62895dd3783c94fbc78250a065d5811c40..0019b04f166612bd2fcf52d0971885c2329960bd 100644 (file)
@@ -99,28 +99,40 @@ typedef struct
    TI_IN_STATE valstate;
 
    /* tscfg */
-   int cfg_id;
+   int         cfg_id;
 }  QPRS_STATE;
 
-static char*
-get_weight(char *buf, int2 *weight) {
+static char *
+get_weight(char *buf, int2 *weight)
+{
    *weight = 0;
 
-   if ( *buf != ':' )
+   if (*buf != ':')
        return buf;
 
    buf++;
-   while( *buf ) {
-       switch(tolower(*buf)) {
-           case 'a': *weight |= 1<<3; break; 
-           case 'b': *weight |= 1<<2; break; 
-           case 'c': *weight |= 1<<1; break; 
-           case 'd': *weight |= 1;    break;
-           default: return buf; 
+   while (*buf)
+   {
+       switch (tolower(*buf))
+       {
+           case 'a':
+               *weight |= 1 << 3;
+               break;
+           case 'b':
+               *weight |= 1 << 2;
+               break;
+           case 'c':
+               *weight |= 1 << 1;
+               break;
+           case 'd':
+               *weight |= 1;
+               break;
+           default:
+               return buf;
        }
        buf++;
    }
-   
+
    return buf;
 }
 
@@ -146,11 +158,15 @@ gettoken_query(QPRS_STATE * state, int4 *val, int4 *lenval, char **strval, int2
                    state->count++;
                    (state->buf)++;
                    return OPEN;
-               } else if ( *(state->buf) == ':' ) {
+               }
+               else if (*(state->buf) == ':')
+               {
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("error at start of operand")));
-               } else if (*(state->buf) != ' ') {
+               }
+               else if (*(state->buf) != ' ')
+               {
                    state->valstate.prsbuf = state->buf;
                    state->state = WAITOPERATOR;
                    if (gettoken_tsvector(&(state->valstate)))
@@ -257,7 +273,7 @@ static void
 pushval_morph(QPRS_STATE * state, int typeval, char *strval, int lenval, int2 weight)
 {
    int4        count = 0;
-   PRSTEXT         prs;
+   PRSTEXT     prs;
 
    prs.lenwords = 32;
    prs.curwords = 0;
@@ -266,16 +282,17 @@ pushval_morph(QPRS_STATE * state, int typeval, char *strval, int lenval, int2 we
 
    parsetext_v2(findcfg(state->cfg_id), &prs, strval, lenval);
 
-   for(count=0;count<prs.curwords;count++) {
+   for (count = 0; count < prs.curwords; count++)
+   {
        pushval_asis(state, VAL, prs.words[count].word, prs.words[count].len, weight);
-       pfree( prs.words[count].word );
+       pfree(prs.words[count].word);
        if (count)
-           pushquery(state, OPR, (int4) '&', 0, 0, 0 );
-   }   
+           pushquery(state, OPR, (int4) '&', 0, 0, 0);
+   }
    pfree(prs.words);
 
    /* XXX */
-   if ( prs.curwords==0 ) 
+   if (prs.curwords == 0)
        pushval_asis(state, VALTRUE, 0, 0, 0);
 }
 
@@ -381,15 +398,18 @@ ValCompare(CHKVAL * chkval, WordEntry * ptr, ITEM * item)
  * check weight info
  */
 static bool
-checkclass_str(CHKVAL * chkval, WordEntry * val, ITEM * item) {
-   WordEntryPos *ptr = (WordEntryPos*) (chkval->values+val->pos+SHORTALIGN(val->len)+sizeof(uint16));
-   uint16  len = *( (uint16*) (chkval->values+val->pos+SHORTALIGN(val->len)) );
-   while (len--) {
-       if ( item->weight & ( 1<<ptr->weight ) )
+checkclass_str(CHKVAL * chkval, WordEntry * val, ITEM * item)
+{
+   WordEntryPos *ptr = (WordEntryPos *) (chkval->values + val->pos + SHORTALIGN(val->len) + sizeof(uint16));
+   uint16      len = *((uint16 *) (chkval->values + val->pos + SHORTALIGN(val->len)));
+
+   while (len--)
+   {
+       if (item->weight & (1 << ptr->weight))
            return true;
        ptr++;
    }
-   return false; 
+   return false;
 }
 
 /*
@@ -410,8 +430,8 @@ checkcondition_str(void *checkval, ITEM * val)
        StopMiddle = StopLow + (StopHigh - StopLow) / 2;
        difference = ValCompare((CHKVAL *) checkval, StopMiddle, val);
        if (difference == 0)
-           return ( val->weight && StopMiddle->haspos ) ? 
-               checkclass_str((CHKVAL *) checkval,StopMiddle, val) : true;
+           return (val->weight && StopMiddle->haspos) ?
+               checkclass_str((CHKVAL *) checkval, StopMiddle, val) : true;
        else if (difference < 0)
            StopLow = StopMiddle + 1;
        else
@@ -468,7 +488,7 @@ rexectsq(PG_FUNCTION_ARGS)
 Datum
 exectsq(PG_FUNCTION_ARGS)
 {
-   tsvector       *val = (tsvector *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+   tsvector   *val = (tsvector *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
    QUERYTYPE  *query = (QUERYTYPE *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
    CHKVAL      chkval;
    bool        result;
@@ -485,10 +505,10 @@ exectsq(PG_FUNCTION_ARGS)
    chkval.values = STRPTR(val);
    chkval.operand = GETOPERAND(query);
    result = TS_execute(
-                    GETQUERY(query),
-                    &chkval,
-                    true,
-                    checkcondition_str
+                       GETQUERY(query),
+                       &chkval,
+                       true,
+                       checkcondition_str
        );
 
    PG_FREE_IF_COPY(val, 0);
@@ -534,7 +554,7 @@ findoprnd(ITEM * ptr, int4 *pos)
  * input
  */
 static QUERYTYPE *
-queryin(char *buf, void (*pushval) (QPRS_STATE *, int, char *, int, int2), int cfg_id)
+           queryin(char *buf, void (*pushval) (QPRS_STATE *, int, char *, int, int2), int cfg_id)
 {
    QPRS_STATE  state;
    int4        i;
@@ -555,7 +575,7 @@ queryin(char *buf, void (*pushval) (QPRS_STATE *, int, char *, int, int2), int c
    state.count = 0;
    state.num = 0;
    state.str = NULL;
-   state.cfg_id=cfg_id;
+   state.cfg_id = cfg_id;
 
    /* init value parser's state */
    state.valstate.oprisdelim = true;
@@ -678,12 +698,30 @@ infix(INFIX * in, bool first)
        }
        *(in->cur) = '\'';
        in->cur++;
-       if ( in->curpol->weight ) {
-           *(in->cur) = ':'; in->cur++;
-           if ( in->curpol->weight & (1<<3) ) { *(in->cur) = 'A'; in->cur++; }
-           if ( in->curpol->weight & (1<<2) ) { *(in->cur) = 'B'; in->cur++; }
-           if ( in->curpol->weight & (1<<1) ) { *(in->cur) = 'C'; in->cur++; }
-           if ( in->curpol->weight & 1 )      { *(in->cur) = 'D'; in->cur++; }
+       if (in->curpol->weight)
+       {
+           *(in->cur) = ':';
+           in->cur++;
+           if (in->curpol->weight & (1 << 3))
+           {
+               *(in->cur) = 'A';
+               in->cur++;
+           }
+           if (in->curpol->weight & (1 << 2))
+           {
+               *(in->cur) = 'B';
+               in->cur++;
+           }
+           if (in->curpol->weight & (1 << 1))
+           {
+               *(in->cur) = 'C';
+               in->cur++;
+           }
+           if (in->curpol->weight & 1)
+           {
+               *(in->cur) = 'D';
+               in->cur++;
+           }
        }
        *(in->cur) = '\0';
        in->curpol++;
@@ -827,15 +865,16 @@ tsquerytree(PG_FUNCTION_ARGS)
 }
 
 Datum
-to_tsquery(PG_FUNCTION_ARGS) {
-   text    *in = PG_GETARG_TEXT_P(1);
-   char *str;
+to_tsquery(PG_FUNCTION_ARGS)
+{
+   text       *in = PG_GETARG_TEXT_P(1);
+   char       *str;
    QUERYTYPE  *query;
    ITEM       *res;
    int4        len;
 
-   str=text2char(in);
-   PG_FREE_IF_COPY(in,1);
+   str = text2char(in);
+   PG_FREE_IF_COPY(in, 1);
 
    query = queryin(str, pushval_morph, PG_GETARG_INT32(0));
    res = clean_fakeval_v2(GETQUERY(query), &len);
@@ -851,25 +890,25 @@ to_tsquery(PG_FUNCTION_ARGS) {
 }
 
 Datum
-to_tsquery_name(PG_FUNCTION_ARGS) {
-   text *name=PG_GETARG_TEXT_P(0);
-   Datum res= DirectFunctionCall2(
-       to_tsquery,
-       Int32GetDatum( name2id_cfg(name) ),
-       PG_GETARG_DATUM(1)
+to_tsquery_name(PG_FUNCTION_ARGS)
+{
+   text       *name = PG_GETARG_TEXT_P(0);
+   Datum       res = DirectFunctionCall2(
+                                         to_tsquery,
+                                       Int32GetDatum(name2id_cfg(name)),
+                                         PG_GETARG_DATUM(1)
    );
-   
-   PG_FREE_IF_COPY(name,1);
+
+   PG_FREE_IF_COPY(name, 1);
    PG_RETURN_DATUM(res);
 }
 
 Datum
-to_tsquery_current(PG_FUNCTION_ARGS) {
-   PG_RETURN_DATUM( DirectFunctionCall2(
-       to_tsquery,
-       Int32GetDatum( get_currcfg() ),
-       PG_GETARG_DATUM(0)
-   ));
+to_tsquery_current(PG_FUNCTION_ARGS)
+{
+   PG_RETURN_DATUM(DirectFunctionCall2(
+                                       to_tsquery,
+                                       Int32GetDatum(get_currcfg()),
+                                       PG_GETARG_DATUM(0)
+                                       ));
 }
-
-
index c0715a2a037a0ea49a0c188957a9a489f12f518e..4a79efdc539b3b614f06886125cd4c2807baa19b 100644 (file)
@@ -16,10 +16,10 @@ typedef struct ITEM
    int2        left;
    int4        val;
    /* user-friendly value, must correlate with WordEntry */
-   uint32  
-       unused:1,
-       length:11,
-       distance:20;
+   uint32
+               unused:1,
+               length:11,
+               distance:20;
 }  ITEM;
 
 /*
@@ -50,6 +50,6 @@ typedef struct
 #define VALFALSE       7
 
 bool TS_execute(ITEM * curitem, void *checkval,
-       bool calcnot, bool (*chkcond) (void *checkval, ITEM * val));
+          bool calcnot, bool (*chkcond) (void *checkval, ITEM * val));
 
 #endif
index 0840eb83470dd639cc303a842f1197999b0566e4..5b62c9810bce9de5c8a27e2f2d52cde3ae4e9730 100644 (file)
@@ -37,29 +37,35 @@ Datum       rank_cd_def(PG_FUNCTION_ARGS);
 PG_FUNCTION_INFO_V1(get_covers);
 Datum      get_covers(PG_FUNCTION_ARGS);
 
-static float weights[]={0.1, 0.2, 0.4, 1.0};
+static float weights[] = {0.1, 0.2, 0.4, 1.0};
 
 #define wpos(wep)  ( w[ ((WordEntryPos*)(wep))->weight ] )
 
-#define DEF_NORM_METHOD    0
+#define DEF_NORM_METHOD 0
 
 /*
  * Returns a weight of a word collocation
  */
-static float4 word_distance ( int4 w ) {
-   if ( w>100 )
-   return 1e-30;
+static float4
+word_distance(int4 w)
+{
+   if (w > 100)
+       return 1e-30;
 
-   return 1.0/(1.005+0.05*exp( ((float4)w)/1.5-2) );
+   return 1.0 / (1.005 + 0.05 * exp(((float4) w) / 1.5 - 2));
 }
 
 static int
-cnt_length( tsvector *t ) {
-   WordEntry   *ptr=ARRPTR(t), *end=(WordEntry*)STRPTR(t);
-   int len = 0, clen;
-
-   while(ptr < end) {
-       if ( (clen=POSDATALEN(t, ptr)) == 0 )
+cnt_length(tsvector * t)
+{
+   WordEntry  *ptr = ARRPTR(t),
+              *end = (WordEntry *) STRPTR(t);
+   int         len = 0,
+               clen;
+
+   while (ptr < end)
+   {
+       if ((clen = POSDATALEN(t, ptr)) == 0)
            len += 1;
        else
            len += clen;
@@ -70,191 +76,225 @@ cnt_length( tsvector *t ) {
 }
 
 static int4
-WordECompareITEM(char *eval, char *qval, WordEntry * ptr, ITEM * item) {
-        if (ptr->len == item->length)
-                return strncmp(
-                                           eval + ptr->pos,
-                                           qval + item->distance,
-                                           item->length);
-
-        return (ptr->len > item->length) ? 1 : -1;
+WordECompareITEM(char *eval, char *qval, WordEntry * ptr, ITEM * item)
+{
+   if (ptr->len == item->length)
+       return strncmp(
+                      eval + ptr->pos,
+                      qval + item->distance,
+                      item->length);
+
+   return (ptr->len > item->length) ? 1 : -1;
 }
 
-static WordEntry*
-find_wordentry(tsvector *t, QUERYTYPE *q, ITEM *item) {
-        WordEntry  *StopLow = ARRPTR(t);
-        WordEntry  *StopHigh = (WordEntry*)STRPTR(t);
-        WordEntry  *StopMiddle;
-        int                     difference;
-
-        /* Loop invariant: StopLow <= item < StopHigh */
-
-        while (StopLow < StopHigh)
-        {
-                StopMiddle = StopLow + (StopHigh - StopLow) / 2;
-                difference = WordECompareITEM(STRPTR(t), GETOPERAND(q), StopMiddle, item);
-                if (difference == 0)
-                        return StopMiddle;
-                else if (difference < 0)
-                        StopLow = StopMiddle + 1;
-                else
-                        StopHigh = StopMiddle;
-        }
-
-        return NULL;
+static WordEntry *
+find_wordentry(tsvector * t, QUERYTYPE * q, ITEM * item)
+{
+   WordEntry  *StopLow = ARRPTR(t);
+   WordEntry  *StopHigh = (WordEntry *) STRPTR(t);
+   WordEntry  *StopMiddle;
+   int         difference;
+
+   /* Loop invariant: StopLow <= item < StopHigh */
+
+   while (StopLow < StopHigh)
+   {
+       StopMiddle = StopLow + (StopHigh - StopLow) / 2;
+       difference = WordECompareITEM(STRPTR(t), GETOPERAND(q), StopMiddle, item);
+       if (difference == 0)
+           return StopMiddle;
+       else if (difference < 0)
+           StopLow = StopMiddle + 1;
+       else
+           StopHigh = StopMiddle;
+   }
+
+   return NULL;
 }
 
-static WordEntryPos    POSNULL[]={
-   {0,0},
-   {0,MAXENTRYPOS-1}
+static WordEntryPos POSNULL[] = {
+   {0, 0},
+   {0, MAXENTRYPOS - 1}
 };
 
 static float
-calc_rank_and(float *w, tsvector *t, QUERYTYPE *q) {
-   uint16 **pos=(uint16**)palloc(sizeof(uint16*) * q->size);
-   int i,k,l,p;
-   WordEntry *entry;
-   WordEntryPos    *post,*ct;
-   int4    dimt,lenct,dist;
-   float res=-1.0;
-   ITEM    *item=GETQUERY(q);
-
-   memset(pos,0,sizeof(uint16**) * q->size);
-   *(uint16*)POSNULL = lengthof(POSNULL)-1;
-
-   for(i=0; i<q->size; i++) {
-       
-       if ( item[i].type != VAL )
+calc_rank_and(float *w, tsvector * t, QUERYTYPE * q)
+{
+   uint16    **pos = (uint16 **) palloc(sizeof(uint16 *) * q->size);
+   int         i,
+               k,
+               l,
+               p;
+   WordEntry  *entry;
+   WordEntryPos *post,
+              *ct;
+   int4        dimt,
+               lenct,
+               dist;
+   float       res = -1.0;
+   ITEM       *item = GETQUERY(q);
+
+   memset(pos, 0, sizeof(uint16 **) * q->size);
+   *(uint16 *) POSNULL = lengthof(POSNULL) - 1;
+
+   for (i = 0; i < q->size; i++)
+   {
+
+       if (item[i].type != VAL)
            continue;
 
-       entry=find_wordentry(t,q,&(item[i]));
-       if ( !entry )
+       entry = find_wordentry(t, q, &(item[i]));
+       if (!entry)
            continue;
 
-       if ( entry->haspos )
-           pos[i] = (uint16*)_POSDATAPTR(t,entry);
+       if (entry->haspos)
+           pos[i] = (uint16 *) _POSDATAPTR(t, entry);
        else
-           pos[i] = (uint16*)POSNULL;
-
-
-       dimt = *(uint16*)(pos[i]);
-       post = (WordEntryPos*)(pos[i]+1);
-       for( k=0; k<i; k++ ) {
-           if ( !pos[k] ) continue;
-           lenct = *(uint16*)(pos[k]);
-           ct = (WordEntryPos*)(pos[k]+1);
-           for(l=0; l<dimt; l++) {
-               for(p=0; p<lenct; p++) {
-                   dist = abs( post[l].pos - ct[p].pos );
-                   if ( dist || (dist==0 && (pos[i]==(uint16*)POSNULL || pos[k]==(uint16*)POSNULL) ) ) {
-                       float curw; 
-                       if ( !dist ) dist=MAXENTRYPOS;  
-                       curw= sqrt( wpos(&(post[l])) * wpos( &(ct[p]) ) * word_distance(dist) );
-                       res = ( res < 0 ) ? curw : 1.0 - ( 1.0 - res ) * ( 1.0 - curw );
+           pos[i] = (uint16 *) POSNULL;
+
+
+       dimt = *(uint16 *) (pos[i]);
+       post = (WordEntryPos *) (pos[i] + 1);
+       for (k = 0; k < i; k++)
+       {
+           if (!pos[k])
+               continue;
+           lenct = *(uint16 *) (pos[k]);
+           ct = (WordEntryPos *) (pos[k] + 1);
+           for (l = 0; l < dimt; l++)
+           {
+               for (p = 0; p < lenct; p++)
+               {
+                   dist = abs(post[l].pos - ct[p].pos);
+                   if (dist || (dist == 0 && (pos[i] == (uint16 *) POSNULL || pos[k] == (uint16 *) POSNULL)))
+                   {
+                       float       curw;
+
+                       if (!dist)
+                           dist = MAXENTRYPOS;
+                       curw = sqrt(wpos(&(post[l])) * wpos(&(ct[p])) * word_distance(dist));
+                       res = (res < 0) ? curw : 1.0 - (1.0 - res) * (1.0 - curw);
                    }
                }
            }
        }
    }
    pfree(pos);
-   return res; 
+   return res;
 }
 
 static float
-calc_rank_or(float *w, tsvector *t, QUERYTYPE *q) {
-   WordEntry *entry;
-   WordEntryPos    *post;
-   int4    dimt,j,i;
-   float res=-1.0;
-   ITEM    *item=GETQUERY(q);
-
-   *(uint16*)POSNULL = lengthof(POSNULL)-1;
-
-   for(i=0; i<q->size; i++) {
-       if ( item[i].type != VAL )
+calc_rank_or(float *w, tsvector * t, QUERYTYPE * q)
+{
+   WordEntry  *entry;
+   WordEntryPos *post;
+   int4        dimt,
+               j,
+               i;
+   float       res = -1.0;
+   ITEM       *item = GETQUERY(q);
+
+   *(uint16 *) POSNULL = lengthof(POSNULL) - 1;
+
+   for (i = 0; i < q->size; i++)
+   {
+       if (item[i].type != VAL)
            continue;
 
-       entry=find_wordentry(t,q,&(item[i]));
-       if ( !entry )
+       entry = find_wordentry(t, q, &(item[i]));
+       if (!entry)
            continue;
 
-       if ( entry->haspos ) {
-           dimt = POSDATALEN(t,entry);
-           post = POSDATAPTR(t,entry);
-       } else {
-           dimt = *(uint16*)POSNULL;
-           post = POSNULL+1;
+       if (entry->haspos)
+       {
+           dimt = POSDATALEN(t, entry);
+           post = POSDATAPTR(t, entry);
+       }
+       else
+       {
+           dimt = *(uint16 *) POSNULL;
+           post = POSNULL + 1;
        }
 
-       for(j=0;j<dimt;j++) {
-           if ( res < 0 )
-               res = wpos( &(post[j]) );
+       for (j = 0; j < dimt; j++)
+       {
+           if (res < 0)
+               res = wpos(&(post[j]));
            else
-               res = 1.0 - ( 1.0-res ) * ( 1.0-wpos( &(post[j]) ) );
+               res = 1.0 - (1.0 - res) * (1.0 - wpos(&(post[j])));
        }
    }
    return res;
 }
 
 static float
-calc_rank(float *w, tsvector *t, QUERYTYPE *q, int4 method) {
-   ITEM *item = GETQUERY(q);
-   float res=0.0;
+calc_rank(float *w, tsvector * t, QUERYTYPE * q, int4 method)
+{
+   ITEM       *item = GETQUERY(q);
+   float       res = 0.0;
 
    if (!t->size || !q->size)
        return 0.0;
 
-   res = ( item->type != VAL && item->val == (int4) '&' ) ?
-       calc_rank_and(w,t,q) : calc_rank_or(w,t,q);
+   res = (item->type != VAL && item->val == (int4) '&') ?
+       calc_rank_and(w, t, q) : calc_rank_or(w, t, q);
 
-   if ( res < 0 )
+   if (res < 0)
        res = 1e-20;
 
-        switch(method) {
-       case 0: break;
-       case 1: res /= log((float)cnt_length(t)); break;
-       case 2: res /= (float)cnt_length(t); break;
+   switch (method)
+   {
+       case 0:
+           break;
+       case 1:
+           res /= log((float) cnt_length(t));
+           break;
+       case 2:
+           res /= (float) cnt_length(t);
+           break;
        default:
-       /* internal error */
-       elog(ERROR,"unrecognized normalization method: %d", method);
-        }
+           /* internal error */
+           elog(ERROR, "unrecognized normalization method: %d", method);
+   }
 
    return res;
 }
 
 Datum
-rank(PG_FUNCTION_ARGS) {
+rank(PG_FUNCTION_ARGS)
+{
    ArrayType  *win = (ArrayType *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-   tsvector       *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+   tsvector   *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
    QUERYTYPE  *query = (QUERYTYPE *) PG_DETOAST_DATUM(PG_GETARG_DATUM(2));
-   int method=DEF_NORM_METHOD;
-   float res=0.0;
-   float ws[ lengthof(weights) ];
-   int i;
+   int         method = DEF_NORM_METHOD;
+   float       res = 0.0;
+   float       ws[lengthof(weights)];
+   int         i;
 
-   if ( ARR_NDIM(win) != 1 ) 
+   if (ARR_NDIM(win) != 1)
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                 errmsg("array of weight must be one-dimensional")));
 
-   if ( ARRNELEMS(win) < lengthof(weights) )
+   if (ARRNELEMS(win) < lengthof(weights))
        ereport(ERROR,
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                 errmsg("array of weight is too short")));
 
-   for(i=0;i<lengthof(weights);i++) {
-       ws[ i ] = ( ((float4*)ARR_DATA_PTR(win))[i] >= 0 ) ? ((float4*)ARR_DATA_PTR(win))[i] : weights[i];
-       if ( ws[ i ] > 1.0 ) 
+   for (i = 0; i < lengthof(weights); i++)
+   {
+       ws[i] = (((float4 *) ARR_DATA_PTR(win))[i] >= 0) ? ((float4 *) ARR_DATA_PTR(win))[i] : weights[i];
+       if (ws[i] > 1.0)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("weight out of range")));
-   } 
+   }
+
+   if (PG_NARGS() == 4)
+       method = PG_GETARG_INT32(3);
 
-   if ( PG_NARGS() == 4 )
-       method=PG_GETARG_INT32(3);
+   res = calc_rank(ws, txt, query, method);
 
-   res=calc_rank(ws, txt, query, method); 
-       
    PG_FREE_IF_COPY(win, 0);
    PG_FREE_IF_COPY(txt, 1);
    PG_FREE_IF_COPY(query, 2);
@@ -262,108 +302,127 @@ rank(PG_FUNCTION_ARGS) {
 }
 
 Datum
-rank_def(PG_FUNCTION_ARGS) {
-   tsvector       *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+rank_def(PG_FUNCTION_ARGS)
+{
+   tsvector   *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
    QUERYTYPE  *query = (QUERYTYPE *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
-   float res=0.0;
-   int method=DEF_NORM_METHOD;
+   float       res = 0.0;
+   int         method = DEF_NORM_METHOD;
 
-   if ( PG_NARGS() == 3 )
-       method=PG_GETARG_INT32(2);
+   if (PG_NARGS() == 3)
+       method = PG_GETARG_INT32(2);
+
+   res = calc_rank(weights, txt, query, method);
 
-   res=calc_rank(weights, txt, query, method); 
-       
    PG_FREE_IF_COPY(txt, 0);
    PG_FREE_IF_COPY(query, 1);
    PG_RETURN_FLOAT4(res);
 }
 
 
-typedef struct {
-   ITEM    *item;
-   int32   pos;
-} DocRepresentation;
+typedef struct
+{
+   ITEM       *item;
+   int32       pos;
+}  DocRepresentation;
 
 static int
-compareDocR(const void *a, const void *b) {
-   if ( ((DocRepresentation *) a)->pos == ((DocRepresentation *) b)->pos )
+compareDocR(const void *a, const void *b)
+{
+   if (((DocRepresentation *) a)->pos == ((DocRepresentation *) b)->pos)
        return 1;
-   return ( ((DocRepresentation *) a)->pos > ((DocRepresentation *) b)->pos ) ? 1 : -1;
+   return (((DocRepresentation *) a)->pos > ((DocRepresentation *) b)->pos) ? 1 : -1;
 }
 
 
-typedef struct {
+typedef struct
+{
    DocRepresentation *doc;
-   int len;
+   int         len;
 }  ChkDocR;
 
 static bool
-checkcondition_DR(void *checkval, ITEM *val) {
-   DocRepresentation *ptr = ((ChkDocR*)checkval)->doc;
+checkcondition_DR(void *checkval, ITEM * val)
+{
+   DocRepresentation *ptr = ((ChkDocR *) checkval)->doc;
 
-   while( ptr - ((ChkDocR*)checkval)->doc < ((ChkDocR*)checkval)->len ) {
-       if ( val == ptr->item )
+   while (ptr - ((ChkDocR *) checkval)->doc < ((ChkDocR *) checkval)->len)
+   {
+       if (val == ptr->item)
            return true;
        ptr++;
-   }   
+   }
 
    return false;
 }
 
 
 static bool
-Cover(DocRepresentation *doc, int len, QUERYTYPE *query, int *pos, int *p, int *q) {
-   int i;
-   DocRepresentation   *ptr,*f=(DocRepresentation*)0xffffffff;
-   ITEM    *item=GETQUERY(query);
-   int lastpos=*pos;
-   int oldq=*q;
-
-   *p=0x7fffffff;
-   *q=0;
-
-   for(i=0; i<query->size; i++) {
-       if ( item->type != VAL ) {
+Cover(DocRepresentation * doc, int len, QUERYTYPE * query, int *pos, int *p, int *q)
+{
+   int         i;
+   DocRepresentation *ptr,
+              *f = (DocRepresentation *) 0xffffffff;
+   ITEM       *item = GETQUERY(query);
+   int         lastpos = *pos;
+   int         oldq = *q;
+
+   *p = 0x7fffffff;
+   *q = 0;
+
+   for (i = 0; i < query->size; i++)
+   {
+       if (item->type != VAL)
+       {
            item++;
            continue;
        }
        ptr = doc + *pos;
 
-       while(ptr-doc<len) {
-           if ( ptr->item == item ) {
-               if ( ptr->pos > *q ) {
+       while (ptr - doc < len)
+       {
+           if (ptr->item == item)
+           {
+               if (ptr->pos > *q)
+               {
                    *q = ptr->pos;
-                   lastpos= ptr - doc;
-               } 
+                   lastpos = ptr - doc;
+               }
                break;
-           } 
+           }
            ptr++;
        }
 
        item++;
    }
 
-   if (*q==0 )
+   if (*q == 0)
        return false;
 
-   if (*q==oldq) { /* already check this pos */
+   if (*q == oldq)
+   {                           /* already check this pos */
        (*pos)++;
-       return Cover(doc, len, query, pos,p,q);
-   } 
+       return Cover(doc, len, query, pos, p, q);
+   }
 
-   item=GETQUERY(query);
-   for(i=0; i<query->size; i++) {
-       if ( item->type != VAL ) {
+   item = GETQUERY(query);
+   for (i = 0; i < query->size; i++)
+   {
+       if (item->type != VAL)
+       {
            item++;
            continue;
        }
        ptr = doc + lastpos;
 
-       while(ptr>=doc+*pos) {
-           if ( ptr->item == item ) {
-               if ( ptr->pos < *p ) {
+       while (ptr >= doc + *pos)
+       {
+           if (ptr->item == item)
+           {
+               if (ptr->pos < *p)
+               {
                    *p = ptr->pos;
-                   f=ptr;
+                   f = ptr;
                }
                break;
            }
@@ -371,106 +430,135 @@ Cover(DocRepresentation *doc, int len, QUERYTYPE *query, int *pos, int *p, int *
        }
        item++;
    }
-   if ( *p<=*q ) {
-       ChkDocR ch = { f, (doc + lastpos)-f+1 };
-       *pos = f-doc+1;
-       if ( TS_execute(GETQUERY(query), &ch, false, checkcondition_DR) ) { 
- /*elog(NOTICE,"OP:%d NP:%d P:%d Q:%d", *pos, lastpos, *p, *q);*/ 
+
+   if (*p <= *q)
+   {
+       ChkDocR     ch = {f, (doc + lastpos) - f + 1};
+
+       *pos = f - doc + 1;
+       if (TS_execute(GETQUERY(query), &ch, false, checkcondition_DR))
+       {
+           /*
+            * elog(NOTICE,"OP:%d NP:%d P:%d Q:%d", *pos, lastpos, *p,
+            * *q);
+            */
            return true;
-       } else
-           return Cover(doc, len, query, pos,p,q); 
+       }
+       else
+           return Cover(doc, len, query, pos, p, q);
    }
+
    return false;
 }
 
-static DocRepresentation*
-get_docrep(tsvector     *txt, QUERYTYPE  *query, int *doclen) {
-   ITEM    *item=GETQUERY(query);
-   WordEntry *entry;
-   WordEntryPos    *post;
-   int4    dimt,j,i;
-   int len=query->size*4,cur=0;
+static DocRepresentation *
+get_docrep(tsvector * txt, QUERYTYPE * query, int *doclen)
+{
+   ITEM       *item = GETQUERY(query);
+   WordEntry  *entry;
+   WordEntryPos *post;
+   int4        dimt,
+               j,
+               i;
+   int         len = query->size * 4,
+               cur = 0;
    DocRepresentation *doc;
 
-   *(uint16*)POSNULL = lengthof(POSNULL)-1;
-   doc = (DocRepresentation*)palloc(sizeof(DocRepresentation)*len);
-   for(i=0; i<query->size; i++) {
-       if ( item[i].type != VAL )
+   *(uint16 *) POSNULL = lengthof(POSNULL) - 1;
+   doc = (DocRepresentation *) palloc(sizeof(DocRepresentation) * len);
+   for (i = 0; i < query->size; i++)
+   {
+       if (item[i].type != VAL)
            continue;
 
-       entry=find_wordentry(txt,query,&(item[i]));
-       if ( !entry )
+       entry = find_wordentry(txt, query, &(item[i]));
+       if (!entry)
            continue;
 
-       if ( entry->haspos ) {
-           dimt = POSDATALEN(txt,entry);
-           post = POSDATAPTR(txt,entry);
-       } else {
-           dimt = *(uint16*)POSNULL;
-           post = POSNULL+1;
+       if (entry->haspos)
+       {
+           dimt = POSDATALEN(txt, entry);
+           post = POSDATAPTR(txt, entry);
+       }
+       else
+       {
+           dimt = *(uint16 *) POSNULL;
+           post = POSNULL + 1;
        }
 
-       while( cur+dimt >= len ) {
-           len*=2;
-           doc = (DocRepresentation*)repalloc(doc,sizeof(DocRepresentation)*len);
+       while (cur + dimt >= len)
+       {
+           len *= 2;
+           doc = (DocRepresentation *) repalloc(doc, sizeof(DocRepresentation) * len);
        }
 
-       for(j=0;j<dimt;j++) {
-           doc[cur].item=&(item[i]);
-           doc[cur].pos=post[j].pos;
+       for (j = 0; j < dimt; j++)
+       {
+           doc[cur].item = &(item[i]);
+           doc[cur].pos = post[j].pos;
            cur++;
        }
    }
 
-   *doclen=cur;
-   
-   if ( cur>0 ) {
-       if ( cur>1 ) 
+   *doclen = cur;
+
+   if (cur > 0)
+   {
+       if (cur > 1)
            qsort((void *) doc, cur, sizeof(DocRepresentation), compareDocR);
        return doc;
    }
-   
+
    pfree(doc);
    return NULL;
 }
 
 
 Datum
-rank_cd(PG_FUNCTION_ARGS) {
-   int K = PG_GETARG_INT32(0);
-   tsvector       *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+rank_cd(PG_FUNCTION_ARGS)
+{
+   int         K = PG_GETARG_INT32(0);
+   tsvector   *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
    QUERYTYPE  *query = (QUERYTYPE *) PG_DETOAST_DATUM(PG_GETARG_DATUM(2));
-   int method=DEF_NORM_METHOD;
-   DocRepresentation   *doc;
-   float   res=0.0;
-   int p=0,q=0,len,cur;
+   int         method = DEF_NORM_METHOD;
+   DocRepresentation *doc;
+   float       res = 0.0;
+   int         p = 0,
+               q = 0,
+               len,
+               cur;
 
    doc = get_docrep(txt, query, &len);
-   if ( !doc ) {
+   if (!doc)
+   {
        PG_FREE_IF_COPY(txt, 1);
        PG_FREE_IF_COPY(query, 2);
        PG_RETURN_FLOAT4(0.0);
    }
 
-   cur=0;
-   if (K<=0)
-       K=4;    
-   while( Cover(doc, len, query, &cur, &p, &q) ) 
-       res += ( q-p+1 > K ) ? ((float)K)/((float)(q-p+1)) : 1.0;
-
-   if ( PG_NARGS() == 4 )
-       method=PG_GETARG_INT32(3);
-
-        switch(method) {
-       case 0: break;
-       case 1: res /= log((float)cnt_length(txt)); break;
-       case 2: res /= (float)cnt_length(txt); break;
+   cur = 0;
+   if (K <= 0)
+       K = 4;
+   while (Cover(doc, len, query, &cur, &p, &q))
+       res += (q - p + 1 > K) ? ((float) K) / ((float) (q - p + 1)) : 1.0;
+
+   if (PG_NARGS() == 4)
+       method = PG_GETARG_INT32(3);
+
+   switch (method)
+   {
+       case 0:
+           break;
+       case 1:
+           res /= log((float) cnt_length(txt));
+           break;
+       case 2:
+           res /= (float) cnt_length(txt);
+           break;
        default:
-       /* internal error */
-       elog(ERROR,"unrecognized normalization method: %d", method);
-        }
+           /* internal error */
+           elog(ERROR, "unrecognized normalization method: %d", method);
+   }
 
    pfree(doc);
    PG_FREE_IF_COPY(txt, 1);
@@ -481,120 +569,141 @@ rank_cd(PG_FUNCTION_ARGS) {
 
 
 Datum
-rank_cd_def(PG_FUNCTION_ARGS) {
-   PG_RETURN_DATUM( DirectFunctionCall4(   
-       rank_cd,
-       Int32GetDatum(-1),
-       PG_GETARG_DATUM(0),
-       PG_GETARG_DATUM(1),
-       ( PG_NARGS() == 3 ) ? PG_GETARG_DATUM(2) : Int32GetDatum(DEF_NORM_METHOD)
-   )); 
+rank_cd_def(PG_FUNCTION_ARGS)
+{
+   PG_RETURN_DATUM(DirectFunctionCall4(
+                                       rank_cd,
+                                       Int32GetDatum(-1),
+                                       PG_GETARG_DATUM(0),
+                                       PG_GETARG_DATUM(1),
+                                       (PG_NARGS() == 3) ? PG_GETARG_DATUM(2) : Int32GetDatum(DEF_NORM_METHOD)
+                                       ));
 }
 
 /**************debug*************/
 
-typedef struct {
-   char    *w;
-   int2    len;
-   int2    pos;
-   int2    start;
-   int2    finish;
-} DocWord;
+typedef struct
+{
+   char       *w;
+   int2        len;
+   int2        pos;
+   int2        start;
+   int2        finish;
+}  DocWord;
 
 static int
-compareDocWord(const void *a, const void *b) {
-   if ( ((DocWord *) a)->pos == ((DocWord *) b)->pos )
+compareDocWord(const void *a, const void *b)
+{
+   if (((DocWord *) a)->pos == ((DocWord *) b)->pos)
        return 1;
-   return ( ((DocWord *) a)->pos > ((DocWord *) b)->pos ) ? 1 : -1;
+   return (((DocWord *) a)->pos > ((DocWord *) b)->pos) ? 1 : -1;
 }
 
 
-Datum 
-get_covers(PG_FUNCTION_ARGS) {
-   tsvector     *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+Datum
+get_covers(PG_FUNCTION_ARGS)
+{
+   tsvector   *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
    QUERYTYPE  *query = (QUERYTYPE *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
-   WordEntry       *pptr=ARRPTR(txt);
-   int i,dlen=0,j,cur=0,len=0,rlen;
-   DocWord *dw,*dwptr;
-   text    *out;
-   char *cptr;
+   WordEntry  *pptr = ARRPTR(txt);
+   int         i,
+               dlen = 0,
+               j,
+               cur = 0,
+               len = 0,
+               rlen;
+   DocWord    *dw,
+              *dwptr;
+   text       *out;
+   char       *cptr;
    DocRepresentation *doc;
-   int pos=0,p,q,olddwpos=0;
-   int ncover=1;
+   int         pos = 0,
+               p,
+               q,
+               olddwpos = 0;
+   int         ncover = 1;
 
    doc = get_docrep(txt, query, &rlen);
 
-   if ( !doc ) {
-       out=palloc(VARHDRSZ);
+   if (!doc)
+   {
+       out = palloc(VARHDRSZ);
        VARATT_SIZEP(out) = VARHDRSZ;
-       PG_FREE_IF_COPY(txt,0);
-       PG_FREE_IF_COPY(query,1);
+       PG_FREE_IF_COPY(txt, 0);
+       PG_FREE_IF_COPY(query, 1);
        PG_RETURN_POINTER(out);
    }
 
-   for(i=0;i<txt->size;i++) {
+   for (i = 0; i < txt->size; i++)
+   {
        if (!pptr[i].haspos)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("no pos info")));
-        dlen += POSDATALEN(txt,&(pptr[i]));
+       dlen += POSDATALEN(txt, &(pptr[i]));
    }
 
-   dwptr=dw=palloc(sizeof(DocWord)*dlen);
-   memset(dw,0,sizeof(DocWord)*dlen);
+   dwptr = dw = palloc(sizeof(DocWord) * dlen);
+   memset(dw, 0, sizeof(DocWord) * dlen);
+
+   for (i = 0; i < txt->size; i++)
+   {
+       WordEntryPos *posdata = POSDATAPTR(txt, &(pptr[i]));
 
-   for(i=0;i<txt->size;i++) {
-       WordEntryPos    *posdata = POSDATAPTR(txt,&(pptr[i]));
-       for(j=0;j<POSDATALEN(txt,&(pptr[i]));j++) {
-           dw[cur].w=STRPTR(txt)+pptr[i].pos;  
-           dw[cur].len=pptr[i].len;    
-           dw[cur].pos=posdata[j].pos;
+       for (j = 0; j < POSDATALEN(txt, &(pptr[i])); j++)
+       {
+           dw[cur].w = STRPTR(txt) + pptr[i].pos;
+           dw[cur].len = pptr[i].len;
+           dw[cur].pos = posdata[j].pos;
            cur++;
        }
-       len+=(pptr[i].len + 1) * (int)POSDATALEN(txt,&(pptr[i]));
+       len += (pptr[i].len + 1) * (int) POSDATALEN(txt, &(pptr[i]));
    }
    qsort((void *) dw, dlen, sizeof(DocWord), compareDocWord);
 
-   while( Cover(doc, rlen, query, &pos, &p, &q) ) {
-       dwptr=dw+olddwpos;
-       while(dwptr->pos < p && dwptr-dw<dlen)
+   while (Cover(doc, rlen, query, &pos, &p, &q))
+   {
+       dwptr = dw + olddwpos;
+       while (dwptr->pos < p && dwptr - dw < dlen)
            dwptr++;
-       olddwpos=dwptr-dw;
-       dwptr->start=ncover;
-       while(dwptr->pos < q+1 && dwptr-dw<dlen)
+       olddwpos = dwptr - dw;
+       dwptr->start = ncover;
+       while (dwptr->pos < q + 1 && dwptr - dw < dlen)
            dwptr++;
-       (dwptr-1)->finish=ncover;
-       len+= 4 /* {}+two spaces */ + 2*16 /*numbers*/;
-       ncover++; 
-   } 
-   
-   out=palloc(VARHDRSZ+len);
-   cptr=((char*)out)+VARHDRSZ;
-   dwptr=dw;
-
-   while( dwptr-dw < dlen) {
-       if ( dwptr->start ) {
-           sprintf(cptr,"{%d ",dwptr->start);
-           cptr=strchr(cptr,'\0');
+       (dwptr - 1)->finish = ncover;
+       len += 4 /* {}+two spaces */ + 2 * 16 /* numbers */ ;
+       ncover++;
+   }
+
+   out = palloc(VARHDRSZ + len);
+   cptr = ((char *) out) + VARHDRSZ;
+   dwptr = dw;
+
+   while (dwptr - dw < dlen)
+   {
+       if (dwptr->start)
+       {
+           sprintf(cptr, "{%d ", dwptr->start);
+           cptr = strchr(cptr, '\0');
        }
-       memcpy(cptr,dwptr->w,dwptr->len);
-       cptr+=dwptr->len;
-       *cptr=' ';
+       memcpy(cptr, dwptr->w, dwptr->len);
+       cptr += dwptr->len;
+       *cptr = ' ';
        cptr++;
-       if ( dwptr->finish ) { 
-           sprintf(cptr,"}%d ",dwptr->finish);
-           cptr=strchr(cptr,'\0');
+       if (dwptr->finish)
+       {
+           sprintf(cptr, "}%d ", dwptr->finish);
+           cptr = strchr(cptr, '\0');
        }
        dwptr++;
-   }   
+   }
+
+   VARATT_SIZEP(out) = cptr - ((char *) out);
 
-   VARATT_SIZEP(out) = cptr - ((char*)out);
-   
    pfree(dw);
    pfree(doc);
 
-   PG_FREE_IF_COPY(txt,0);
-   PG_FREE_IF_COPY(query,1);
+   PG_FREE_IF_COPY(txt, 0);
+   PG_FREE_IF_COPY(query, 1);
    PG_RETURN_POINTER(out);
 }
-
index 023c9eb5f9f94068633ea159201f630f765438b0..2cd3f53e4970939a6f0c7ea96d157544c94de155 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * simple but fast map from str to Oid
  * Teodor Sigaev <[email protected]>
  */
 #include "common.h"
 
 static int
-compareSNMapEntry(const void *a, const void *b) {
-   return strcmp( ((SNMapEntry*)a)->key, ((SNMapEntry*)b)->key );
+compareSNMapEntry(const void *a, const void *b)
+{
+   return strcmp(((SNMapEntry *) a)->key, ((SNMapEntry *) b)->key);
 }
 
-void 
-addSNMap( SNMap *map, char *key, Oid value ) {
-   if (map->len>=map->reallen) {
+void
+addSNMap(SNMap * map, char *key, Oid value)
+{
+   if (map->len >= map->reallen)
+   {
        SNMapEntry *tmp;
-       int len = (map->reallen) ? 2*map->reallen : 16;
-       tmp=(SNMapEntry*)realloc(map->list, sizeof(SNMapEntry) * len);
-       if ( !tmp )
+       int         len = (map->reallen) ? 2 * map->reallen : 16;
+
+       tmp = (SNMapEntry *) realloc(map->list, sizeof(SNMapEntry) * len);
+       if (!tmp)
            ereport(ERROR,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
                     errmsg("out of memory")));
-       map->reallen=len;
-       map->list=tmp;
+       map->reallen = len;
+       map->list = tmp;
    }
-   map->list[ map->len ].key = strdup(key);
-   if ( ! map->list[ map->len ].key )
+   map->list[map->len].key = strdup(key);
+   if (!map->list[map->len].key)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
                 errmsg("out of memory")));
-   map->list[ map->len ].value=value;
+   map->list[map->len].value = value;
    map->len++;
-   if ( map->len>1 ) qsort(map->list, map->len, sizeof(SNMapEntry), compareSNMapEntry);
+   if (map->len > 1)
+       qsort(map->list, map->len, sizeof(SNMapEntry), compareSNMapEntry);
 }
 
-void 
-addSNMap_t( SNMap *map, text *key, Oid value ) {
-   char *k=text2char( key );
+void
+addSNMap_t(SNMap * map, text *key, Oid value)
+{
+   char       *k = text2char(key);
+
    addSNMap(map, k, value);
    pfree(k);
 }
 
-Oid 
-findSNMap( SNMap *map, char *key ) {
+Oid
+findSNMap(SNMap * map, char *key)
+{
    SNMapEntry *ptr;
-   SNMapEntry ks = {key, 0};
-   if ( map->len==0 || !map->list )
-       return 0;   
-   ptr = (SNMapEntry*) bsearch(&ks, map->list, map->len, sizeof(SNMapEntry), compareSNMapEntry);
+   SNMapEntry  ks = {key, 0};
+
+   if (map->len == 0 || !map->list)
+       return 0;
+   ptr = (SNMapEntry *) bsearch(&ks, map->list, map->len, sizeof(SNMapEntry), compareSNMapEntry);
    return (ptr) ? ptr->value : 0;
 }
 
-Oid  
-findSNMap_t( SNMap *map, text *key ) {
-   char *k=text2char(key);
-   int res;
-   res= findSNMap(map, k);
+Oid
+findSNMap_t(SNMap * map, text *key)
+{
+   char       *k = text2char(key);
+   int         res;
+
+   res = findSNMap(map, k);
    pfree(k);
    return res;
 }
 
-void freeSNMap( SNMap *map ) {
-   SNMapEntry *entry=map->list;
-   if ( map->list ) {
-       while( map->len ) {
-           if ( entry->key ) free(entry->key);
-           entry++; map->len--;
+void
+freeSNMap(SNMap * map)
+{
+   SNMapEntry *entry = map->list;
+
+   if (map->list)
+   {
+       while (map->len)
+       {
+           if (entry->key)
+               free(entry->key);
+           entry++;
+           map->len--;
        }
-       free( map->list );
+       free(map->list);
    }
-   memset(map,0,sizeof(SNMap));
+   memset(map, 0, sizeof(SNMap));
 }
-
-
index b4856019c9e83b0fadd40844d8b11dcc8cf3125f..ae188b66a4c473cfee5e8c012b6a05efa3c0a791 100644 (file)
@@ -3,21 +3,23 @@
 
 #include "postgres.h"
 
-typedef struct {
-   char    *key;
-   Oid value;
-} SNMapEntry;
+typedef struct
+{
+   char       *key;
+   Oid         value;
+}  SNMapEntry;
 
-typedef struct {
-   int len;
-   int reallen;
-   SNMapEntry  *list;
-} SNMap;
+typedef struct
+{
+   int         len;
+   int         reallen;
+   SNMapEntry *list;
+}  SNMap;
 
-void addSNMap( SNMap *map, char *key, Oid value );
-void addSNMap_t( SNMap *map, text *key, Oid value );
-Oid findSNMap( SNMap *map, char *key );
-Oid findSNMap_t( SNMap *map, text *key );
-void freeSNMap( SNMap *map );
+void       addSNMap(SNMap * map, char *key, Oid value);
+void       addSNMap_t(SNMap * map, text *key, Oid value);
+Oid            findSNMap(SNMap * map, char *key);
+Oid            findSNMap_t(SNMap * map, text *key);
+void       freeSNMap(SNMap * map);
 
 #endif
index 27bf31a588ed4762d83c622972ad67ff1356c2d6..5cbf37d73bf123ab7f4f5dac0fa716fa5b3772d6 100644 (file)
@@ -2,48 +2,64 @@
 
 #include "header.h"
 
-extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size)
-{   struct SN_env * z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
-    z->p = create_s();
-    if (S_size)
-    {   z->S = (symbol * *) calloc(S_size, sizeof(symbol *));
-        {   int i;
-            for (i = 0; i < S_size; i++) z->S[i] = create_s();
-        }
-        z->S_size = S_size;
-    }
-
-    if (I_size)
-    {   z->I = (int *) calloc(I_size, sizeof(int));
-        z->I_size = I_size;
-    }
-
-    if (B_size)
-    {   z->B = (symbol *) calloc(B_size, sizeof(symbol));
-        z->B_size = B_size;
-    }
-
-    return z;
+extern struct SN_env *
+SN_create_env(int S_size, int I_size, int B_size)
+{
+   struct SN_env *z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
+
+   z->p = create_s();
+   if (S_size)
+   {
+       z->S = (symbol * *) calloc(S_size, sizeof(symbol *));
+       {
+           int         i;
+
+           for (i = 0; i < S_size; i++)
+               z->S[i] = create_s();
+       }
+       z->S_size = S_size;
+   }
+
+   if (I_size)
+   {
+       z->I = (int *) calloc(I_size, sizeof(int));
+       z->I_size = I_size;
+   }
+
+   if (B_size)
+   {
+       z->B = (symbol *) calloc(B_size, sizeof(symbol));
+       z->B_size = B_size;
+   }
+
+   return z;
 }
 
-extern void SN_close_env(struct SN_env * z)
+extern void
+SN_close_env(struct SN_env * z)
 {
-    if (z->S_size)
-    {
-        {   int i;
-            for (i = 0; i < z->S_size; i++) lose_s(z->S[i]);
-        }
-        free(z->S);
-    }
-    if (z->I_size) free(z->I);
-    if (z->B_size) free(z->B);
-    if (z->p) lose_s(z->p);
-    free(z);
+   if (z->S_size)
+   {
+       {
+           int         i;
+
+           for (i = 0; i < z->S_size; i++)
+               lose_s(z->S[i]);
+       }
+       free(z->S);
+   }
+   if (z->I_size)
+       free(z->I);
+   if (z->B_size)
+       free(z->B);
+   if (z->p)
+       lose_s(z->p);
+   free(z);
 }
 
-extern void SN_set_current(struct SN_env * z, int size, const symbol * s)
+extern void
+SN_set_current(struct SN_env * z, int size, const symbol * s)
 {
-    replace_s(z, 0, z->l, size, s);
-    z->c = 0;
+   replace_s(z, 0, z->l, size, s);
+   z->c = 0;
 }
-
index 3e8b6e1851755ca220fdce87a88e8a9ae1791415..efad537b9e8e5f9e80dee7cf42bbe2da31f70fc9 100644 (file)
@@ -11,17 +11,24 @@ typedef unsigned char symbol;
 
 */
 
-struct SN_env {
-    symbol * p;
-    int c; int a; int l; int lb; int bra; int ket;
-    int S_size; int I_size; int B_size;
-    symbol * * S;
-    int * I;
-    symbol * B;
+struct SN_env
+{
+   symbol     *p;
+   int         c;
+   int         a;
+   int         l;
+   int         lb;
+   int         bra;
+   int         ket;
+   int         S_size;
+   int         I_size;
+   int         B_size;
+   symbol     **S;
+   int        *I;
+   symbol     *B;
 };
 
-extern struct SN_env * SN_create_env(int S_size, int I_size, int B_size);
+extern struct SN_env *SN_create_env(int S_size, int I_size, int B_size);
 extern void SN_close_env(struct SN_env * z);
 
 extern void SN_set_current(struct SN_env * z, int size, const symbol * s);
-
index f6ceb5c576faf901e68440ffc30bd422add4d564..310eddf97d895263a03b9db91273ac495afa88bd 100644 (file)
 
 #include "header.h"
 
-extern int english_stem(struct SN_env * z);
-static int r_exception2(struct SN_env * z);
-static int r_exception1(struct SN_env * z);
-static int r_Step_5(struct SN_env * z);
-static int r_Step_4(struct SN_env * z);
-static int r_Step_3(struct SN_env * z);
-static int r_Step_2(struct SN_env * z);
-static int r_Step_1c(struct SN_env * z);
-static int r_Step_1b(struct SN_env * z);
-static int r_Step_1a(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_R1(struct SN_env * z);
-static int r_shortv(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-static int r_postlude(struct SN_env * z);
-static int r_prelude(struct SN_env * z);
-
-extern struct SN_env * english_create_env(void);
+extern int english_stem(struct SN_env * z);
+static int r_exception2(struct SN_env * z);
+static int r_exception1(struct SN_env * z);
+static int r_Step_5(struct SN_env * z);
+static int r_Step_4(struct SN_env * z);
+static int r_Step_3(struct SN_env * z);
+static int r_Step_2(struct SN_env * z);
+static int r_Step_1c(struct SN_env * z);
+static int r_Step_1b(struct SN_env * z);
+static int r_Step_1a(struct SN_env * z);
+static int r_R2(struct SN_env * z);
+static int r_R1(struct SN_env * z);
+static int r_shortv(struct SN_env * z);
+static int r_mark_regions(struct SN_env * z);
+static int r_postlude(struct SN_env * z);
+static int r_prelude(struct SN_env * z);
+
+extern struct SN_env *english_create_env(void);
 extern void english_close_env(struct SN_env * z);
 
-static symbol s_0_0[5] = { 'g', 'e', 'n', 'e', 'r' };
+static symbol s_0_0[5] = {'g', 'e', 'n', 'e', 'r'};
 
 static struct among a_0[1] =
 {
-/*  0 */ { 5, s_0_0, -1, -1, 0}
+    /*  0 */ {5, s_0_0, -1, -1, 0}
 };
 
-static symbol s_1_0[3] = { 'i', 'e', 'd' };
-static symbol s_1_1[1] = { 's' };
-static symbol s_1_2[3] = { 'i', 'e', 's' };
-static symbol s_1_3[4] = { 's', 's', 'e', 's' };
-static symbol s_1_4[2] = { 's', 's' };
-static symbol s_1_5[2] = { 'u', 's' };
+static symbol s_1_0[3] = {'i', 'e', 'd'};
+static symbol s_1_1[1] = {'s'};
+static symbol s_1_2[3] = {'i', 'e', 's'};
+static symbol s_1_3[4] = {'s', 's', 'e', 's'};
+static symbol s_1_4[2] = {'s', 's'};
+static symbol s_1_5[2] = {'u', 's'};
 
 static struct among a_1[6] =
 {
-/*  0 */ { 3, s_1_0, -1, 2, 0},
-/*  1 */ { 1, s_1_1, -1, 3, 0},
-/*  2 */ { 3, s_1_2, 1, 2, 0},
-/*  3 */ { 4, s_1_3, 1, 1, 0},
-/*  4 */ { 2, s_1_4, 1, -1, 0},
-/*  5 */ { 2, s_1_5, 1, -1, 0}
+    /*  0 */ {3, s_1_0, -1, 2, 0},
+    /*  1 */ {1, s_1_1, -1, 3, 0},
+    /*  2 */ {3, s_1_2, 1, 2, 0},
+    /*  3 */ {4, s_1_3, 1, 1, 0},
+    /*  4 */ {2, s_1_4, 1, -1, 0},
+    /*  5 */ {2, s_1_5, 1, -1, 0}
 };
 
-static symbol s_2_1[2] = { 'b', 'b' };
-static symbol s_2_2[2] = { 'd', 'd' };
-static symbol s_2_3[2] = { 'f', 'f' };
-static symbol s_2_4[2] = { 'g', 'g' };
-static symbol s_2_5[2] = { 'b', 'l' };
-static symbol s_2_6[2] = { 'm', 'm' };
-static symbol s_2_7[2] = { 'n', 'n' };
-static symbol s_2_8[2] = { 'p', 'p' };
-static symbol s_2_9[2] = { 'r', 'r' };
-static symbol s_2_10[2] = { 'a', 't' };
-static symbol s_2_11[2] = { 't', 't' };
-static symbol s_2_12[2] = { 'i', 'z' };
+static symbol s_2_1[2] = {'b', 'b'};
+static symbol s_2_2[2] = {'d', 'd'};
+static symbol s_2_3[2] = {'f', 'f'};
+static symbol s_2_4[2] = {'g', 'g'};
+static symbol s_2_5[2] = {'b', 'l'};
+static symbol s_2_6[2] = {'m', 'm'};
+static symbol s_2_7[2] = {'n', 'n'};
+static symbol s_2_8[2] = {'p', 'p'};
+static symbol s_2_9[2] = {'r', 'r'};
+static symbol s_2_10[2] = {'a', 't'};
+static symbol s_2_11[2] = {'t', 't'};
+static symbol s_2_12[2] = {'i', 'z'};
 
 static struct among a_2[13] =
 {
-/*  0 */ { 0, 0, -1, 3, 0},
-/*  1 */ { 2, s_2_1, 0, 2, 0},
-/*  2 */ { 2, s_2_2, 0, 2, 0},
-/*  3 */ { 2, s_2_3, 0, 2, 0},
-/*  4 */ { 2, s_2_4, 0, 2, 0},
-/*  5 */ { 2, s_2_5, 0, 1, 0},
-/*  6 */ { 2, s_2_6, 0, 2, 0},
-/*  7 */ { 2, s_2_7, 0, 2, 0},
-/*  8 */ { 2, s_2_8, 0, 2, 0},
-/*  9 */ { 2, s_2_9, 0, 2, 0},
-/* 10 */ { 2, s_2_10, 0, 1, 0},
-/* 11 */ { 2, s_2_11, 0, 2, 0},
-/* 12 */ { 2, s_2_12, 0, 1, 0}
+    /*  0 */ {0, 0, -1, 3, 0},
+    /*  1 */ {2, s_2_1, 0, 2, 0},
+    /*  2 */ {2, s_2_2, 0, 2, 0},
+    /*  3 */ {2, s_2_3, 0, 2, 0},
+    /*  4 */ {2, s_2_4, 0, 2, 0},
+    /*  5 */ {2, s_2_5, 0, 1, 0},
+    /*  6 */ {2, s_2_6, 0, 2, 0},
+    /*  7 */ {2, s_2_7, 0, 2, 0},
+    /*  8 */ {2, s_2_8, 0, 2, 0},
+    /*  9 */ {2, s_2_9, 0, 2, 0},
+    /* 10 */ {2, s_2_10, 0, 1, 0},
+    /* 11 */ {2, s_2_11, 0, 2, 0},
+    /* 12 */ {2, s_2_12, 0, 1, 0}
 };
 
-static symbol s_3_0[2] = { 'e', 'd' };
-static symbol s_3_1[3] = { 'e', 'e', 'd' };
-static symbol s_3_2[3] = { 'i', 'n', 'g' };
-static symbol s_3_3[4] = { 'e', 'd', 'l', 'y' };
-static symbol s_3_4[5] = { 'e', 'e', 'd', 'l', 'y' };
-static symbol s_3_5[5] = { 'i', 'n', 'g', 'l', 'y' };
+static symbol s_3_0[2] = {'e', 'd'};
+static symbol s_3_1[3] = {'e', 'e', 'd'};
+static symbol s_3_2[3] = {'i', 'n', 'g'};
+static symbol s_3_3[4] = {'e', 'd', 'l', 'y'};
+static symbol s_3_4[5] = {'e', 'e', 'd', 'l', 'y'};
+static symbol s_3_5[5] = {'i', 'n', 'g', 'l', 'y'};
 
 static struct among a_3[6] =
 {
-/*  0 */ { 2, s_3_0, -1, 2, 0},
-/*  1 */ { 3, s_3_1, 0, 1, 0},
-/*  2 */ { 3, s_3_2, -1, 2, 0},
-/*  3 */ { 4, s_3_3, -1, 2, 0},
-/*  4 */ { 5, s_3_4, 3, 1, 0},
-/*  5 */ { 5, s_3_5, -1, 2, 0}
+    /*  0 */ {2, s_3_0, -1, 2, 0},
+    /*  1 */ {3, s_3_1, 0, 1, 0},
+    /*  2 */ {3, s_3_2, -1, 2, 0},
+    /*  3 */ {4, s_3_3, -1, 2, 0},
+    /*  4 */ {5, s_3_4, 3, 1, 0},
+    /*  5 */ {5, s_3_5, -1, 2, 0}
 };
 
-static symbol s_4_0[4] = { 'a', 'n', 'c', 'i' };
-static symbol s_4_1[4] = { 'e', 'n', 'c', 'i' };
-static symbol s_4_2[3] = { 'o', 'g', 'i' };
-static symbol s_4_3[2] = { 'l', 'i' };
-static symbol s_4_4[3] = { 'b', 'l', 'i' };
-static symbol s_4_5[4] = { 'a', 'b', 'l', 'i' };
-static symbol s_4_6[4] = { 'a', 'l', 'l', 'i' };
-static symbol s_4_7[5] = { 'f', 'u', 'l', 'l', 'i' };
-static symbol s_4_8[6] = { 'l', 'e', 's', 's', 'l', 'i' };
-static symbol s_4_9[5] = { 'o', 'u', 's', 'l', 'i' };
-static symbol s_4_10[5] = { 'e', 'n', 't', 'l', 'i' };
-static symbol s_4_11[5] = { 'a', 'l', 'i', 't', 'i' };
-static symbol s_4_12[6] = { 'b', 'i', 'l', 'i', 't', 'i' };
-static symbol s_4_13[5] = { 'i', 'v', 'i', 't', 'i' };
-static symbol s_4_14[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_4_15[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_4_16[5] = { 'a', 'l', 'i', 's', 'm' };
-static symbol s_4_17[5] = { 'a', 't', 'i', 'o', 'n' };
-static symbol s_4_18[7] = { 'i', 'z', 'a', 't', 'i', 'o', 'n' };
-static symbol s_4_19[4] = { 'i', 'z', 'e', 'r' };
-static symbol s_4_20[4] = { 'a', 't', 'o', 'r' };
-static symbol s_4_21[7] = { 'i', 'v', 'e', 'n', 'e', 's', 's' };
-static symbol s_4_22[7] = { 'f', 'u', 'l', 'n', 'e', 's', 's' };
-static symbol s_4_23[7] = { 'o', 'u', 's', 'n', 'e', 's', 's' };
+static symbol s_4_0[4] = {'a', 'n', 'c', 'i'};
+static symbol s_4_1[4] = {'e', 'n', 'c', 'i'};
+static symbol s_4_2[3] = {'o', 'g', 'i'};
+static symbol s_4_3[2] = {'l', 'i'};
+static symbol s_4_4[3] = {'b', 'l', 'i'};
+static symbol s_4_5[4] = {'a', 'b', 'l', 'i'};
+static symbol s_4_6[4] = {'a', 'l', 'l', 'i'};
+static symbol s_4_7[5] = {'f', 'u', 'l', 'l', 'i'};
+static symbol s_4_8[6] = {'l', 'e', 's', 's', 'l', 'i'};
+static symbol s_4_9[5] = {'o', 'u', 's', 'l', 'i'};
+static symbol s_4_10[5] = {'e', 'n', 't', 'l', 'i'};
+static symbol s_4_11[5] = {'a', 'l', 'i', 't', 'i'};
+static symbol s_4_12[6] = {'b', 'i', 'l', 'i', 't', 'i'};
+static symbol s_4_13[5] = {'i', 'v', 'i', 't', 'i'};
+static symbol s_4_14[6] = {'t', 'i', 'o', 'n', 'a', 'l'};
+static symbol s_4_15[7] = {'a', 't', 'i', 'o', 'n', 'a', 'l'};
+static symbol s_4_16[5] = {'a', 'l', 'i', 's', 'm'};
+static symbol s_4_17[5] = {'a', 't', 'i', 'o', 'n'};
+static symbol s_4_18[7] = {'i', 'z', 'a', 't', 'i', 'o', 'n'};
+static symbol s_4_19[4] = {'i', 'z', 'e', 'r'};
+static symbol s_4_20[4] = {'a', 't', 'o', 'r'};
+static symbol s_4_21[7] = {'i', 'v', 'e', 'n', 'e', 's', 's'};
+static symbol s_4_22[7] = {'f', 'u', 'l', 'n', 'e', 's', 's'};
+static symbol s_4_23[7] = {'o', 'u', 's', 'n', 'e', 's', 's'};
 
 static struct among a_4[24] =
 {
-/*  0 */ { 4, s_4_0, -1, 3, 0},
-/*  1 */ { 4, s_4_1, -1, 2, 0},
-/*  2 */ { 3, s_4_2, -1, 13, 0},
-/*  3 */ { 2, s_4_3, -1, 16, 0},
-/*  4 */ { 3, s_4_4, 3, 12, 0},
-/*  5 */ { 4, s_4_5, 4, 4, 0},
-/*  6 */ { 4, s_4_6, 3, 8, 0},
-/*  7 */ { 5, s_4_7, 3, 14, 0},
-/*  8 */ { 6, s_4_8, 3, 15, 0},
-/*  9 */ { 5, s_4_9, 3, 10, 0},
-/* 10 */ { 5, s_4_10, 3, 5, 0},
-/* 11 */ { 5, s_4_11, -1, 8, 0},
-/* 12 */ { 6, s_4_12, -1, 12, 0},
-/* 13 */ { 5, s_4_13, -1, 11, 0},
-/* 14 */ { 6, s_4_14, -1, 1, 0},
-/* 15 */ { 7, s_4_15, 14, 7, 0},
-/* 16 */ { 5, s_4_16, -1, 8, 0},
-/* 17 */ { 5, s_4_17, -1, 7, 0},
-/* 18 */ { 7, s_4_18, 17, 6, 0},
-/* 19 */ { 4, s_4_19, -1, 6, 0},
-/* 20 */ { 4, s_4_20, -1, 7, 0},
-/* 21 */ { 7, s_4_21, -1, 11, 0},
-/* 22 */ { 7, s_4_22, -1, 9, 0},
-/* 23 */ { 7, s_4_23, -1, 10, 0}
+    /*  0 */ {4, s_4_0, -1, 3, 0},
+    /*  1 */ {4, s_4_1, -1, 2, 0},
+    /*  2 */ {3, s_4_2, -1, 13, 0},
+    /*  3 */ {2, s_4_3, -1, 16, 0},
+    /*  4 */ {3, s_4_4, 3, 12, 0},
+    /*  5 */ {4, s_4_5, 4, 4, 0},
+    /*  6 */ {4, s_4_6, 3, 8, 0},
+    /*  7 */ {5, s_4_7, 3, 14, 0},
+    /*  8 */ {6, s_4_8, 3, 15, 0},
+    /*  9 */ {5, s_4_9, 3, 10, 0},
+    /* 10 */ {5, s_4_10, 3, 5, 0},
+    /* 11 */ {5, s_4_11, -1, 8, 0},
+    /* 12 */ {6, s_4_12, -1, 12, 0},
+    /* 13 */ {5, s_4_13, -1, 11, 0},
+    /* 14 */ {6, s_4_14, -1, 1, 0},
+    /* 15 */ {7, s_4_15, 14, 7, 0},
+    /* 16 */ {5, s_4_16, -1, 8, 0},
+    /* 17 */ {5, s_4_17, -1, 7, 0},
+    /* 18 */ {7, s_4_18, 17, 6, 0},
+    /* 19 */ {4, s_4_19, -1, 6, 0},
+    /* 20 */ {4, s_4_20, -1, 7, 0},
+    /* 21 */ {7, s_4_21, -1, 11, 0},
+    /* 22 */ {7, s_4_22, -1, 9, 0},
+    /* 23 */ {7, s_4_23, -1, 10, 0}
 };
 
-static symbol s_5_0[5] = { 'i', 'c', 'a', 't', 'e' };
-static symbol s_5_1[5] = { 'a', 't', 'i', 'v', 'e' };
-static symbol s_5_2[5] = { 'a', 'l', 'i', 'z', 'e' };
-static symbol s_5_3[5] = { 'i', 'c', 'i', 't', 'i' };
-static symbol s_5_4[4] = { 'i', 'c', 'a', 'l' };
-static symbol s_5_5[6] = { 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_5_6[7] = { 'a', 't', 'i', 'o', 'n', 'a', 'l' };
-static symbol s_5_7[3] = { 'f', 'u', 'l' };
-static symbol s_5_8[4] = { 'n', 'e', 's', 's' };
+static symbol s_5_0[5] = {'i', 'c', 'a', 't', 'e'};
+static symbol s_5_1[5] = {'a', 't', 'i', 'v', 'e'};
+static symbol s_5_2[5] = {'a', 'l', 'i', 'z', 'e'};
+static symbol s_5_3[5] = {'i', 'c', 'i', 't', 'i'};
+static symbol s_5_4[4] = {'i', 'c', 'a', 'l'};
+static symbol s_5_5[6] = {'t', 'i', 'o', 'n', 'a', 'l'};
+static symbol s_5_6[7] = {'a', 't', 'i', 'o', 'n', 'a', 'l'};
+static symbol s_5_7[3] = {'f', 'u', 'l'};
+static symbol s_5_8[4] = {'n', 'e', 's', 's'};
 
 static struct among a_5[9] =
 {
-/*  0 */ { 5, s_5_0, -1, 4, 0},
-/*  1 */ { 5, s_5_1, -1, 6, 0},
-/*  2 */ { 5, s_5_2, -1, 3, 0},
-/*  3 */ { 5, s_5_3, -1, 4, 0},
-/*  4 */ { 4, s_5_4, -1, 4, 0},
-/*  5 */ { 6, s_5_5, -1, 1, 0},
-/*  6 */ { 7, s_5_6, 5, 2, 0},
-/*  7 */ { 3, s_5_7, -1, 5, 0},
-/*  8 */ { 4, s_5_8, -1, 5, 0}
+    /*  0 */ {5, s_5_0, -1, 4, 0},
+    /*  1 */ {5, s_5_1, -1, 6, 0},
+    /*  2 */ {5, s_5_2, -1, 3, 0},
+    /*  3 */ {5, s_5_3, -1, 4, 0},
+    /*  4 */ {4, s_5_4, -1, 4, 0},
+    /*  5 */ {6, s_5_5, -1, 1, 0},
+    /*  6 */ {7, s_5_6, 5, 2, 0},
+    /*  7 */ {3, s_5_7, -1, 5, 0},
+    /*  8 */ {4, s_5_8, -1, 5, 0}
 };
 
-static symbol s_6_0[2] = { 'i', 'c' };
-static symbol s_6_1[4] = { 'a', 'n', 'c', 'e' };
-static symbol s_6_2[4] = { 'e', 'n', 'c', 'e' };
-static symbol s_6_3[4] = { 'a', 'b', 'l', 'e' };
-static symbol s_6_4[4] = { 'i', 'b', 'l', 'e' };
-static symbol s_6_5[3] = { 'a', 't', 'e' };
-static symbol s_6_6[3] = { 'i', 'v', 'e' };
-static symbol s_6_7[3] = { 'i', 'z', 'e' };
-static symbol s_6_8[3] = { 'i', 't', 'i' };
-static symbol s_6_9[2] = { 'a', 'l' };
-static symbol s_6_10[3] = { 'i', 's', 'm' };
-static symbol s_6_11[3] = { 'i', 'o', 'n' };
-static symbol s_6_12[2] = { 'e', 'r' };
-static symbol s_6_13[3] = { 'o', 'u', 's' };
-static symbol s_6_14[3] = { 'a', 'n', 't' };
-static symbol s_6_15[3] = { 'e', 'n', 't' };
-static symbol s_6_16[4] = { 'm', 'e', 'n', 't' };
-static symbol s_6_17[5] = { 'e', 'm', 'e', 'n', 't' };
+static symbol s_6_0[2] = {'i', 'c'};
+static symbol s_6_1[4] = {'a', 'n', 'c', 'e'};
+static symbol s_6_2[4] = {'e', 'n', 'c', 'e'};
+static symbol s_6_3[4] = {'a', 'b', 'l', 'e'};
+static symbol s_6_4[4] = {'i', 'b', 'l', 'e'};
+static symbol s_6_5[3] = {'a', 't', 'e'};
+static symbol s_6_6[3] = {'i', 'v', 'e'};
+static symbol s_6_7[3] = {'i', 'z', 'e'};
+static symbol s_6_8[3] = {'i', 't', 'i'};
+static symbol s_6_9[2] = {'a', 'l'};
+static symbol s_6_10[3] = {'i', 's', 'm'};
+static symbol s_6_11[3] = {'i', 'o', 'n'};
+static symbol s_6_12[2] = {'e', 'r'};
+static symbol s_6_13[3] = {'o', 'u', 's'};
+static symbol s_6_14[3] = {'a', 'n', 't'};
+static symbol s_6_15[3] = {'e', 'n', 't'};
+static symbol s_6_16[4] = {'m', 'e', 'n', 't'};
+static symbol s_6_17[5] = {'e', 'm', 'e', 'n', 't'};
 
 static struct among a_6[18] =
 {
-/*  0 */ { 2, s_6_0, -1, 1, 0},
-/*  1 */ { 4, s_6_1, -1, 1, 0},
-/*  2 */ { 4, s_6_2, -1, 1, 0},
-/*  3 */ { 4, s_6_3, -1, 1, 0},
-/*  4 */ { 4, s_6_4, -1, 1, 0},
-/*  5 */ { 3, s_6_5, -1, 1, 0},
-/*  6 */ { 3, s_6_6, -1, 1, 0},
-/*  7 */ { 3, s_6_7, -1, 1, 0},
-/*  8 */ { 3, s_6_8, -1, 1, 0},
-/*  9 */ { 2, s_6_9, -1, 1, 0},
-/* 10 */ { 3, s_6_10, -1, 1, 0},
-/* 11 */ { 3, s_6_11, -1, 2, 0},
-/* 12 */ { 2, s_6_12, -1, 1, 0},
-/* 13 */ { 3, s_6_13, -1, 1, 0},
-/* 14 */ { 3, s_6_14, -1, 1, 0},
-/* 15 */ { 3, s_6_15, -1, 1, 0},
-/* 16 */ { 4, s_6_16, 15, 1, 0},
-/* 17 */ { 5, s_6_17, 16, 1, 0}
+    /*  0 */ {2, s_6_0, -1, 1, 0},
+    /*  1 */ {4, s_6_1, -1, 1, 0},
+    /*  2 */ {4, s_6_2, -1, 1, 0},
+    /*  3 */ {4, s_6_3, -1, 1, 0},
+    /*  4 */ {4, s_6_4, -1, 1, 0},
+    /*  5 */ {3, s_6_5, -1, 1, 0},
+    /*  6 */ {3, s_6_6, -1, 1, 0},
+    /*  7 */ {3, s_6_7, -1, 1, 0},
+    /*  8 */ {3, s_6_8, -1, 1, 0},
+    /*  9 */ {2, s_6_9, -1, 1, 0},
+    /* 10 */ {3, s_6_10, -1, 1, 0},
+    /* 11 */ {3, s_6_11, -1, 2, 0},
+    /* 12 */ {2, s_6_12, -1, 1, 0},
+    /* 13 */ {3, s_6_13, -1, 1, 0},
+    /* 14 */ {3, s_6_14, -1, 1, 0},
+    /* 15 */ {3, s_6_15, -1, 1, 0},
+    /* 16 */ {4, s_6_16, 15, 1, 0},
+    /* 17 */ {5, s_6_17, 16, 1, 0}
 };
 
-static symbol s_7_0[1] = { 'e' };
-static symbol s_7_1[1] = { 'l' };
+static symbol s_7_0[1] = {'e'};
+static symbol s_7_1[1] = {'l'};
 
 static struct among a_7[2] =
 {
-/*  0 */ { 1, s_7_0, -1, 1, 0},
-/*  1 */ { 1, s_7_1, -1, 2, 0}
+    /*  0 */ {1, s_7_0, -1, 1, 0},
+    /*  1 */ {1, s_7_1, -1, 2, 0}
 };
 
-static symbol s_8_0[7] = { 's', 'u', 'c', 'c', 'e', 'e', 'd' };
-static symbol s_8_1[7] = { 'p', 'r', 'o', 'c', 'e', 'e', 'd' };
-static symbol s_8_2[6] = { 'e', 'x', 'c', 'e', 'e', 'd' };
-static symbol s_8_3[7] = { 'c', 'a', 'n', 'n', 'i', 'n', 'g' };
-static symbol s_8_4[6] = { 'i', 'n', 'n', 'i', 'n', 'g' };
-static symbol s_8_5[7] = { 'e', 'a', 'r', 'r', 'i', 'n', 'g' };
-static symbol s_8_6[7] = { 'h', 'e', 'r', 'r', 'i', 'n', 'g' };
-static symbol s_8_7[6] = { 'o', 'u', 't', 'i', 'n', 'g' };
+static symbol s_8_0[7] = {'s', 'u', 'c', 'c', 'e', 'e', 'd'};
+static symbol s_8_1[7] = {'p', 'r', 'o', 'c', 'e', 'e', 'd'};
+static symbol s_8_2[6] = {'e', 'x', 'c', 'e', 'e', 'd'};
+static symbol s_8_3[7] = {'c', 'a', 'n', 'n', 'i', 'n', 'g'};
+static symbol s_8_4[6] = {'i', 'n', 'n', 'i', 'n', 'g'};
+static symbol s_8_5[7] = {'e', 'a', 'r', 'r', 'i', 'n', 'g'};
+static symbol s_8_6[7] = {'h', 'e', 'r', 'r', 'i', 'n', 'g'};
+static symbol s_8_7[6] = {'o', 'u', 't', 'i', 'n', 'g'};
 
 static struct among a_8[8] =
 {
-/*  0 */ { 7, s_8_0, -1, -1, 0},
-/*  1 */ { 7, s_8_1, -1, -1, 0},
-/*  2 */ { 6, s_8_2, -1, -1, 0},
-/*  3 */ { 7, s_8_3, -1, -1, 0},
-/*  4 */ { 6, s_8_4, -1, -1, 0},
-/*  5 */ { 7, s_8_5, -1, -1, 0},
-/*  6 */ { 7, s_8_6, -1, -1, 0},
-/*  7 */ { 6, s_8_7, -1, -1, 0}
+    /*  0 */ {7, s_8_0, -1, -1, 0},
+    /*  1 */ {7, s_8_1, -1, -1, 0},
+    /*  2 */ {6, s_8_2, -1, -1, 0},
+    /*  3 */ {7, s_8_3, -1, -1, 0},
+    /*  4 */ {6, s_8_4, -1, -1, 0},
+    /*  5 */ {7, s_8_5, -1, -1, 0},
+    /*  6 */ {7, s_8_6, -1, -1, 0},
+    /*  7 */ {6, s_8_7, -1, -1, 0}
 };
 
-static symbol s_9_0[5] = { 'a', 'n', 'd', 'e', 's' };
-static symbol s_9_1[5] = { 'a', 't', 'l', 'a', 's' };
-static symbol s_9_2[4] = { 'b', 'i', 'a', 's' };
-static symbol s_9_3[6] = { 'c', 'o', 's', 'm', 'o', 's' };
-static symbol s_9_4[5] = { 'd', 'y', 'i', 'n', 'g' };
-static symbol s_9_5[5] = { 'e', 'a', 'r', 'l', 'y' };
-static symbol s_9_6[6] = { 'g', 'e', 'n', 't', 'l', 'y' };
-static symbol s_9_7[4] = { 'h', 'o', 'w', 'e' };
-static symbol s_9_8[4] = { 'i', 'd', 'l', 'y' };
-static symbol s_9_9[5] = { 'l', 'y', 'i', 'n', 'g' };
-static symbol s_9_10[4] = { 'n', 'e', 'w', 's' };
-static symbol s_9_11[4] = { 'o', 'n', 'l', 'y' };
-static symbol s_9_12[6] = { 's', 'i', 'n', 'g', 'l', 'y' };
-static symbol s_9_13[5] = { 's', 'k', 'i', 'e', 's' };
-static symbol s_9_14[4] = { 's', 'k', 'i', 's' };
-static symbol s_9_15[3] = { 's', 'k', 'y' };
-static symbol s_9_16[5] = { 't', 'y', 'i', 'n', 'g' };
-static symbol s_9_17[4] = { 'u', 'g', 'l', 'y' };
+static symbol s_9_0[5] = {'a', 'n', 'd', 'e', 's'};
+static symbol s_9_1[5] = {'a', 't', 'l', 'a', 's'};
+static symbol s_9_2[4] = {'b', 'i', 'a', 's'};
+static symbol s_9_3[6] = {'c', 'o', 's', 'm', 'o', 's'};
+static symbol s_9_4[5] = {'d', 'y', 'i', 'n', 'g'};
+static symbol s_9_5[5] = {'e', 'a', 'r', 'l', 'y'};
+static symbol s_9_6[6] = {'g', 'e', 'n', 't', 'l', 'y'};
+static symbol s_9_7[4] = {'h', 'o', 'w', 'e'};
+static symbol s_9_8[4] = {'i', 'd', 'l', 'y'};
+static symbol s_9_9[5] = {'l', 'y', 'i', 'n', 'g'};
+static symbol s_9_10[4] = {'n', 'e', 'w', 's'};
+static symbol s_9_11[4] = {'o', 'n', 'l', 'y'};
+static symbol s_9_12[6] = {'s', 'i', 'n', 'g', 'l', 'y'};
+static symbol s_9_13[5] = {'s', 'k', 'i', 'e', 's'};
+static symbol s_9_14[4] = {'s', 'k', 'i', 's'};
+static symbol s_9_15[3] = {'s', 'k', 'y'};
+static symbol s_9_16[5] = {'t', 'y', 'i', 'n', 'g'};
+static symbol s_9_17[4] = {'u', 'g', 'l', 'y'};
 
 static struct among a_9[18] =
 {
-/*  0 */ { 5, s_9_0, -1, -1, 0},
-/*  1 */ { 5, s_9_1, -1, -1, 0},
-/*  2 */ { 4, s_9_2, -1, -1, 0},
-/*  3 */ { 6, s_9_3, -1, -1, 0},
-/*  4 */ { 5, s_9_4, -1, 3, 0},
-/*  5 */ { 5, s_9_5, -1, 9, 0},
-/*  6 */ { 6, s_9_6, -1, 7, 0},
-/*  7 */ { 4, s_9_7, -1, -1, 0},
-/*  8 */ { 4, s_9_8, -1, 6, 0},
-/*  9 */ { 5, s_9_9, -1, 4, 0},
-/* 10 */ { 4, s_9_10, -1, -1, 0},
-/* 11 */ { 4, s_9_11, -1, 10, 0},
-/* 12 */ { 6, s_9_12, -1, 11, 0},
-/* 13 */ { 5, s_9_13, -1, 2, 0},
-/* 14 */ { 4, s_9_14, -1, 1, 0},
-/* 15 */ { 3, s_9_15, -1, -1, 0},
-/* 16 */ { 5, s_9_16, -1, 5, 0},
-/* 17 */ { 4, s_9_17, -1, 8, 0}
+    /*  0 */ {5, s_9_0, -1, -1, 0},
+    /*  1 */ {5, s_9_1, -1, -1, 0},
+    /*  2 */ {4, s_9_2, -1, -1, 0},
+    /*  3 */ {6, s_9_3, -1, -1, 0},
+    /*  4 */ {5, s_9_4, -1, 3, 0},
+    /*  5 */ {5, s_9_5, -1, 9, 0},
+    /*  6 */ {6, s_9_6, -1, 7, 0},
+    /*  7 */ {4, s_9_7, -1, -1, 0},
+    /*  8 */ {4, s_9_8, -1, 6, 0},
+    /*  9 */ {5, s_9_9, -1, 4, 0},
+    /* 10 */ {4, s_9_10, -1, -1, 0},
+    /* 11 */ {4, s_9_11, -1, 10, 0},
+    /* 12 */ {6, s_9_12, -1, 11, 0},
+    /* 13 */ {5, s_9_13, -1, 2, 0},
+    /* 14 */ {4, s_9_14, -1, 1, 0},
+    /* 15 */ {3, s_9_15, -1, -1, 0},
+    /* 16 */ {5, s_9_16, -1, 5, 0},
+    /* 17 */ {4, s_9_17, -1, 8, 0}
 };
 
-static unsigned char g_v[] = { 17, 65, 16, 1 };
-
-static unsigned char g_v_WXY[] = { 1, 17, 65, 208, 1 };
-
-static unsigned char g_valid_LI[] = { 55, 141, 2 };
-
-static symbol s_0[] = { 'y' };
-static symbol s_1[] = { 'Y' };
-static symbol s_2[] = { 'y' };
-static symbol s_3[] = { 'Y' };
-static symbol s_4[] = { 's', 's' };
-static symbol s_5[] = { 'i', 'e' };
-static symbol s_6[] = { 'i' };
-static symbol s_7[] = { 'e', 'e' };
-static symbol s_8[] = { 'e' };
-static symbol s_9[] = { 'e' };
-static symbol s_10[] = { 'y' };
-static symbol s_11[] = { 'Y' };
-static symbol s_12[] = { 'i' };
-static symbol s_13[] = { 't', 'i', 'o', 'n' };
-static symbol s_14[] = { 'e', 'n', 'c', 'e' };
-static symbol s_15[] = { 'a', 'n', 'c', 'e' };
-static symbol s_16[] = { 'a', 'b', 'l', 'e' };
-static symbol s_17[] = { 'e', 'n', 't' };
-static symbol s_18[] = { 'i', 'z', 'e' };
-static symbol s_19[] = { 'a', 't', 'e' };
-static symbol s_20[] = { 'a', 'l' };
-static symbol s_21[] = { 'f', 'u', 'l' };
-static symbol s_22[] = { 'o', 'u', 's' };
-static symbol s_23[] = { 'i', 'v', 'e' };
-static symbol s_24[] = { 'b', 'l', 'e' };
-static symbol s_25[] = { 'l' };
-static symbol s_26[] = { 'o', 'g' };
-static symbol s_27[] = { 'f', 'u', 'l' };
-static symbol s_28[] = { 'l', 'e', 's', 's' };
-static symbol s_29[] = { 't', 'i', 'o', 'n' };
-static symbol s_30[] = { 'a', 't', 'e' };
-static symbol s_31[] = { 'a', 'l' };
-static symbol s_32[] = { 'i', 'c' };
-static symbol s_33[] = { 's' };
-static symbol s_34[] = { 't' };
-static symbol s_35[] = { 'l' };
-static symbol s_36[] = { 's', 'k', 'i' };
-static symbol s_37[] = { 's', 'k', 'y' };
-static symbol s_38[] = { 'd', 'i', 'e' };
-static symbol s_39[] = { 'l', 'i', 'e' };
-static symbol s_40[] = { 't', 'i', 'e' };
-static symbol s_41[] = { 'i', 'd', 'l' };
-static symbol s_42[] = { 'g', 'e', 'n', 't', 'l' };
-static symbol s_43[] = { 'u', 'g', 'l', 'i' };
-static symbol s_44[] = { 'e', 'a', 'r', 'l', 'i' };
-static symbol s_45[] = { 'o', 'n', 'l', 'i' };
-static symbol s_46[] = { 's', 'i', 'n', 'g', 'l' };
-static symbol s_47[] = { 'Y' };
-static symbol s_48[] = { 'y' };
-
-static int r_prelude(struct SN_env * z) {
-    z->B[0] = 0; /* unset Y_found, line 24 */
-    {   int c = z->c; /* do, line 25 */
-        z->bra = z->c; /* [, line 25 */
-        if (!(eq_s(z, 1, s_0))) goto lab0;
-        z->ket = z->c; /* ], line 25 */
-        if (!(in_grouping(z, g_v, 97, 121))) goto lab0;
-        slice_from_s(z, 1, s_1); /* <-, line 25 */
-        z->B[0] = 1; /* set Y_found, line 25 */
-    lab0:
-        z->c = c;
-    }
-    {   int c = z->c; /* do, line 26 */
-        while(1) { /* repeat, line 26 */
-            int c = z->c;
-            while(1) { /* goto, line 26 */
-                int c = z->c;
-                if (!(in_grouping(z, g_v, 97, 121))) goto lab3;
-                z->bra = z->c; /* [, line 26 */
-                if (!(eq_s(z, 1, s_2))) goto lab3;
-                z->ket = z->c; /* ], line 26 */
-                z->c = c;
-                break;
-            lab3:
-                z->c = c;
-                if (z->c >= z->l) goto lab2;
-                z->c++;
-            }
-            slice_from_s(z, 1, s_3); /* <-, line 26 */
-            z->B[0] = 1; /* set Y_found, line 26 */
-            continue;
-        lab2:
-            z->c = c;
-            break;
-        }
-        z->c = c;
-    }
-    return 1;
+static unsigned char g_v[] = {17, 65, 16, 1};
+
+static unsigned char g_v_WXY[] = {1, 17, 65, 208, 1};
+
+static unsigned char g_valid_LI[] = {55, 141, 2};
+
+static symbol s_0[] = {'y'};
+static symbol s_1[] = {'Y'};
+static symbol s_2[] = {'y'};
+static symbol s_3[] = {'Y'};
+static symbol s_4[] = {'s', 's'};
+static symbol s_5[] = {'i', 'e'};
+static symbol s_6[] = {'i'};
+static symbol s_7[] = {'e', 'e'};
+static symbol s_8[] = {'e'};
+static symbol s_9[] = {'e'};
+static symbol s_10[] = {'y'};
+static symbol s_11[] = {'Y'};
+static symbol s_12[] = {'i'};
+static symbol s_13[] = {'t', 'i', 'o', 'n'};
+static symbol s_14[] = {'e', 'n', 'c', 'e'};
+static symbol s_15[] = {'a', 'n', 'c', 'e'};
+static symbol s_16[] = {'a', 'b', 'l', 'e'};
+static symbol s_17[] = {'e', 'n', 't'};
+static symbol s_18[] = {'i', 'z', 'e'};
+static symbol s_19[] = {'a', 't', 'e'};
+static symbol s_20[] = {'a', 'l'};
+static symbol s_21[] = {'f', 'u', 'l'};
+static symbol s_22[] = {'o', 'u', 's'};
+static symbol s_23[] = {'i', 'v', 'e'};
+static symbol s_24[] = {'b', 'l', 'e'};
+static symbol s_25[] = {'l'};
+static symbol s_26[] = {'o', 'g'};
+static symbol s_27[] = {'f', 'u', 'l'};
+static symbol s_28[] = {'l', 'e', 's', 's'};
+static symbol s_29[] = {'t', 'i', 'o', 'n'};
+static symbol s_30[] = {'a', 't', 'e'};
+static symbol s_31[] = {'a', 'l'};
+static symbol s_32[] = {'i', 'c'};
+static symbol s_33[] = {'s'};
+static symbol s_34[] = {'t'};
+static symbol s_35[] = {'l'};
+static symbol s_36[] = {'s', 'k', 'i'};
+static symbol s_37[] = {'s', 'k', 'y'};
+static symbol s_38[] = {'d', 'i', 'e'};
+static symbol s_39[] = {'l', 'i', 'e'};
+static symbol s_40[] = {'t', 'i', 'e'};
+static symbol s_41[] = {'i', 'd', 'l'};
+static symbol s_42[] = {'g', 'e', 'n', 't', 'l'};
+static symbol s_43[] = {'u', 'g', 'l', 'i'};
+static symbol s_44[] = {'e', 'a', 'r', 'l', 'i'};
+static symbol s_45[] = {'o', 'n', 'l', 'i'};
+static symbol s_46[] = {'s', 'i', 'n', 'g', 'l'};
+static symbol s_47[] = {'Y'};
+static symbol s_48[] = {'y'};
+
+static int
+r_prelude(struct SN_env * z)
+{
+   z->B[0] = 0;                /* unset Y_found, line 24 */
+   {
+       int         c = z->c;   /* do, line 25 */
+
+       z->bra = z->c;          /* [, line 25 */
+       if (!(eq_s(z, 1, s_0)))
+           goto lab0;
+       z->ket = z->c;          /* ], line 25 */
+       if (!(in_grouping(z, g_v, 97, 121)))
+           goto lab0;
+       slice_from_s(z, 1, s_1);    /* <-, line 25 */
+       z->B[0] = 1;            /* set Y_found, line 25 */
+lab0:
+       z->c = c;
+   }
+   {
+       int         c = z->c;   /* do, line 26 */
+
+       while (1)
+       {                       /* repeat, line 26 */
+           int         c = z->c;
+
+           while (1)
+           {                   /* goto, line 26 */
+               int         c = z->c;
+
+               if (!(in_grouping(z, g_v, 97, 121)))
+                   goto lab3;
+               z->bra = z->c;  /* [, line 26 */
+               if (!(eq_s(z, 1, s_2)))
+                   goto lab3;
+               z->ket = z->c;  /* ], line 26 */
+               z->c = c;
+               break;
+       lab3:
+               z->c = c;
+               if (z->c >= z->l)
+                   goto lab2;
+               z->c++;
+           }
+           slice_from_s(z, 1, s_3);    /* <-, line 26 */
+           z->B[0] = 1;        /* set Y_found, line 26 */
+           continue;
+   lab2:
+           z->c = c;
+           break;
+       }
+       z->c = c;
+   }
+   return 1;
 }
 
-static int r_mark_regions(struct SN_env * z) {
-    z->I[0] = z->l;
-    z->I[1] = z->l;
-    {   int c = z->c; /* do, line 32 */
-        {   int c = z->c; /* or, line 36 */
-            if (!(find_among(z, a_0, 1))) goto lab2; /* among, line 33 */
-            goto lab1;
-        lab2:
-            z->c = c;
-            while(1) { /* gopast, line 36 */
-                if (!(in_grouping(z, g_v, 97, 121))) goto lab3;
-                break;
-            lab3:
-                if (z->c >= z->l) goto lab0;
-                z->c++;
-            }
-            while(1) { /* gopast, line 36 */
-                if (!(out_grouping(z, g_v, 97, 121))) goto lab4;
-                break;
-            lab4:
-                if (z->c >= z->l) goto lab0;
-                z->c++;
-            }
-        }
-    lab1:
-        z->I[0] = z->c; /* setmark p1, line 37 */
-        while(1) { /* gopast, line 38 */
-            if (!(in_grouping(z, g_v, 97, 121))) goto lab5;
-            break;
-        lab5:
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        while(1) { /* gopast, line 38 */
-            if (!(out_grouping(z, g_v, 97, 121))) goto lab6;
-            break;
-        lab6:
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        z->I[1] = z->c; /* setmark p2, line 38 */
-    lab0:
-        z->c = c;
-    }
-    return 1;
+static int
+r_mark_regions(struct SN_env * z)
+{
+   z->I[0] = z->l;
+   z->I[1] = z->l;
+   {
+       int         c = z->c;   /* do, line 32 */
+
+       {
+           int         c = z->c;       /* or, line 36 */
+
+           if (!(find_among(z, a_0, 1)))
+               goto lab2;      /* among, line 33 */
+           goto lab1;
+   lab2:
+           z->c = c;
+           while (1)
+           {                   /* gopast, line 36 */
+               if (!(in_grouping(z, g_v, 97, 121)))
+                   goto lab3;
+               break;
+       lab3:
+               if (z->c >= z->l)
+                   goto lab0;
+               z->c++;
+           }
+           while (1)
+           {                   /* gopast, line 36 */
+               if (!(out_grouping(z, g_v, 97, 121)))
+                   goto lab4;
+               break;
+       lab4:
+               if (z->c >= z->l)
+                   goto lab0;
+               z->c++;
+           }
+       }
+lab1:
+       z->I[0] = z->c;         /* setmark p1, line 37 */
+       while (1)
+       {                       /* gopast, line 38 */
+           if (!(in_grouping(z, g_v, 97, 121)))
+               goto lab5;
+           break;
+   lab5:
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       while (1)
+       {                       /* gopast, line 38 */
+           if (!(out_grouping(z, g_v, 97, 121)))
+               goto lab6;
+           break;
+   lab6:
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       z->I[1] = z->c;         /* setmark p2, line 38 */
+lab0:
+       z->c = c;
+   }
+   return 1;
 }
 
-static int r_shortv(struct SN_env * z) {
-    {   int m = z->l - z->c; /* or, line 46 */
-        if (!(out_grouping_b(z, g_v_WXY, 89, 121))) goto lab1;
-        if (!(in_grouping_b(z, g_v, 97, 121))) goto lab1;
-        if (!(out_grouping_b(z, g_v, 97, 121))) goto lab1;
-        goto lab0;
-    lab1:
-        z->c = z->l - m;
-        if (!(out_grouping_b(z, g_v, 97, 121))) return 0;
-        if (!(in_grouping_b(z, g_v, 97, 121))) return 0;
-        if (z->c > z->lb) return 0; /* atlimit, line 47 */
-    }
+static int
+r_shortv(struct SN_env * z)
+{
+   {
+       int         m = z->l - z->c;    /* or, line 46 */
+
+       if (!(out_grouping_b(z, g_v_WXY, 89, 121)))
+           goto lab1;
+       if (!(in_grouping_b(z, g_v, 97, 121)))
+           goto lab1;
+       if (!(out_grouping_b(z, g_v, 97, 121)))
+           goto lab1;
+       goto lab0;
+lab1:
+       z->c = z->l - m;
+       if (!(out_grouping_b(z, g_v, 97, 121)))
+           return 0;
+       if (!(in_grouping_b(z, g_v, 97, 121)))
+           return 0;
+       if (z->c > z->lb)
+           return 0;           /* atlimit, line 47 */
+   }
 lab0:
-    return 1;
+   return 1;
 }
 
-static int r_R1(struct SN_env * z) {
-    if (!(z->I[0] <= z->c)) return 0;
-    return 1;
+static int
+r_R1(struct SN_env * z)
+{
+   if (!(z->I[0] <= z->c))
+       return 0;
+   return 1;
 }
 
-static int r_R2(struct SN_env * z) {
-    if (!(z->I[1] <= z->c)) return 0;
-    return 1;
+static int
+r_R2(struct SN_env * z)
+{
+   if (!(z->I[1] <= z->c))
+       return 0;
+   return 1;
 }
 
-static int r_Step_1a(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 54 */
-    among_var = find_among_b(z, a_1, 6); /* substring, line 54 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 54 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_from_s(z, 2, s_4); /* <-, line 55 */
-            break;
-        case 2:
-            {   int m = z->l - z->c; /* or, line 57 */
-                if (z->c <= z->lb) goto lab1;
-                z->c--; /* next, line 57 */
-                if (z->c > z->lb) goto lab1; /* atlimit, line 57 */
-                slice_from_s(z, 2, s_5); /* <-, line 57 */
-                goto lab0;
-            lab1:
-                z->c = z->l - m;
-                slice_from_s(z, 1, s_6); /* <-, line 57 */
-            }
-        lab0:
-            break;
-        case 3:
-            if (z->c <= z->lb) return 0;
-            z->c--; /* next, line 58 */
-            while(1) { /* gopast, line 58 */
-                if (!(in_grouping_b(z, g_v, 97, 121))) goto lab2;
-                break;
-            lab2:
-                if (z->c <= z->lb) return 0;
-                z->c--;
-            }
-            slice_del(z); /* delete, line 58 */
-            break;
-    }
-    return 1;
+static int
+r_Step_1a(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 54 */
+   among_var = find_among_b(z, a_1, 6);        /* substring, line 54 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 54 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_from_s(z, 2, s_4);    /* <-, line 55 */
+           break;
+       case 2:
+           {
+               int         m = z->l - z->c;    /* or, line 57 */
+
+               if (z->c <= z->lb)
+                   goto lab1;
+               z->c--;         /* next, line 57 */
+               if (z->c > z->lb)
+                   goto lab1;  /* atlimit, line 57 */
+               slice_from_s(z, 2, s_5);        /* <-, line 57 */
+               goto lab0;
+       lab1:
+               z->c = z->l - m;
+               slice_from_s(z, 1, s_6);        /* <-, line 57 */
+           }
+   lab0:
+           break;
+       case 3:
+           if (z->c <= z->lb)
+               return 0;
+           z->c--;             /* next, line 58 */
+           while (1)
+           {                   /* gopast, line 58 */
+               if (!(in_grouping_b(z, g_v, 97, 121)))
+                   goto lab2;
+               break;
+       lab2:
+               if (z->c <= z->lb)
+                   return 0;
+               z->c--;
+           }
+           slice_del(z);       /* delete, line 58 */
+           break;
+   }
+   return 1;
 }
 
-static int r_Step_1b(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 64 */
-    among_var = find_among_b(z, a_3, 6); /* substring, line 64 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 64 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            if (!r_R1(z)) return 0; /* call R1, line 66 */
-            slice_from_s(z, 2, s_7); /* <-, line 66 */
-            break;
-        case 2:
-            {   int m_test = z->l - z->c; /* test, line 69 */
-                while(1) { /* gopast, line 69 */
-                    if (!(in_grouping_b(z, g_v, 97, 121))) goto lab0;
-                    break;
-                lab0:
-                    if (z->c <= z->lb) return 0;
-                    z->c--;
-                }
-                z->c = z->l - m_test;
-            }
-            slice_del(z); /* delete, line 69 */
-            {   int m_test = z->l - z->c; /* test, line 70 */
-                among_var = find_among_b(z, a_2, 13); /* substring, line 70 */
-                if (!(among_var)) return 0;
-                z->c = z->l - m_test;
-            }
-            switch(among_var) {
-                case 0: return 0;
-                case 1:
-                    {   int c = z->c;
-                        insert_s(z, z->c, z->c, 1, s_8); /* <+, line 72 */
-                        z->c = c;
-                    }
-                    break;
-                case 2:
-                    z->ket = z->c; /* [, line 75 */
-                    if (z->c <= z->lb) return 0;
-                    z->c--; /* next, line 75 */
-                    z->bra = z->c; /* ], line 75 */
-                    slice_del(z); /* delete, line 75 */
-                    break;
-                case 3:
-                    if (z->c != z->I[0]) return 0; /* atmark, line 76 */
-                    {   int m_test = z->l - z->c; /* test, line 76 */
-                        if (!r_shortv(z)) return 0; /* call shortv, line 76 */
-                        z->c = z->l - m_test;
-                    }
-                    {   int c = z->c;
-                        insert_s(z, z->c, z->c, 1, s_9); /* <+, line 76 */
-                        z->c = c;
-                    }
-                    break;
-            }
-            break;
-    }
-    return 1;
+static int
+r_Step_1b(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 64 */
+   among_var = find_among_b(z, a_3, 6);        /* substring, line 64 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 64 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           if (!r_R1(z))
+               return 0;       /* call R1, line 66 */
+           slice_from_s(z, 2, s_7);    /* <-, line 66 */
+           break;
+       case 2:
+           {
+               int         m_test = z->l - z->c;       /* test, line 69 */
+
+               while (1)
+               {               /* gopast, line 69 */
+                   if (!(in_grouping_b(z, g_v, 97, 121)))
+                       goto lab0;
+                   break;
+           lab0:
+                   if (z->c <= z->lb)
+                       return 0;
+                   z->c--;
+               }
+               z->c = z->l - m_test;
+           }
+           slice_del(z);       /* delete, line 69 */
+           {
+               int         m_test = z->l - z->c;       /* test, line 70 */
+
+               among_var = find_among_b(z, a_2, 13);   /* substring, line 70 */
+               if (!(among_var))
+                   return 0;
+               z->c = z->l - m_test;
+           }
+           switch (among_var)
+           {
+               case 0:
+                   return 0;
+               case 1:
+                   {
+                       int         c = z->c;
+
+                       insert_s(z, z->c, z->c, 1, s_8);        /* <+, line 72 */
+                       z->c = c;
+                   }
+                   break;
+               case 2:
+                   z->ket = z->c;      /* [, line 75 */
+                   if (z->c <= z->lb)
+                       return 0;
+                   z->c--;     /* next, line 75 */
+                   z->bra = z->c;      /* ], line 75 */
+                   slice_del(z);       /* delete, line 75 */
+                   break;
+               case 3:
+                   if (z->c != z->I[0])
+                       return 0;       /* atmark, line 76 */
+                   {
+                       int         m_test = z->l - z->c;       /* test, line 76 */
+
+                       if (!r_shortv(z))
+                           return 0;   /* call shortv, line 76 */
+                       z->c = z->l - m_test;
+                   }
+                   {
+                       int         c = z->c;
+
+                       insert_s(z, z->c, z->c, 1, s_9);        /* <+, line 76 */
+                       z->c = c;
+                   }
+                   break;
+           }
+           break;
+   }
+   return 1;
 }
 
-static int r_Step_1c(struct SN_env * z) {
-    z->ket = z->c; /* [, line 83 */
-    {   int m = z->l - z->c; /* or, line 83 */
-        if (!(eq_s_b(z, 1, s_10))) goto lab1;
-        goto lab0;
-    lab1:
-        z->c = z->l - m;
-        if (!(eq_s_b(z, 1, s_11))) return 0;
-    }
+static int
+r_Step_1c(struct SN_env * z)
+{
+   z->ket = z->c;              /* [, line 83 */
+   {
+       int         m = z->l - z->c;    /* or, line 83 */
+
+       if (!(eq_s_b(z, 1, s_10)))
+           goto lab1;
+       goto lab0;
+lab1:
+       z->c = z->l - m;
+       if (!(eq_s_b(z, 1, s_11)))
+           return 0;
+   }
 lab0:
-    z->bra = z->c; /* ], line 83 */
-    if (!(out_grouping_b(z, g_v, 97, 121))) return 0;
-    {   int m = z->l - z->c; /* not, line 84 */
-        if (z->c > z->lb) goto lab2; /* atlimit, line 84 */
-        return 0;
-    lab2:
-        z->c = z->l - m;
-    }
-    slice_from_s(z, 1, s_12); /* <-, line 85 */
-    return 1;
-}
+   z->bra = z->c;              /* ], line 83 */
+   if (!(out_grouping_b(z, g_v, 97, 121)))
+       return 0;
+   {
+       int         m = z->l - z->c;    /* not, line 84 */
 
-static int r_Step_2(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 89 */
-    among_var = find_among_b(z, a_4, 24); /* substring, line 89 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 89 */
-    if (!r_R1(z)) return 0; /* call R1, line 89 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_from_s(z, 4, s_13); /* <-, line 90 */
-            break;
-        case 2:
-            slice_from_s(z, 4, s_14); /* <-, line 91 */
-            break;
-        case 3:
-            slice_from_s(z, 4, s_15); /* <-, line 92 */
-            break;
-        case 4:
-            slice_from_s(z, 4, s_16); /* <-, line 93 */
-            break;
-        case 5:
-            slice_from_s(z, 3, s_17); /* <-, line 94 */
-            break;
-        case 6:
-            slice_from_s(z, 3, s_18); /* <-, line 96 */
-            break;
-        case 7:
-            slice_from_s(z, 3, s_19); /* <-, line 98 */
-            break;
-        case 8:
-            slice_from_s(z, 2, s_20); /* <-, line 100 */
-            break;
-        case 9:
-            slice_from_s(z, 3, s_21); /* <-, line 101 */
-            break;
-        case 10:
-            slice_from_s(z, 3, s_22); /* <-, line 103 */
-            break;
-        case 11:
-            slice_from_s(z, 3, s_23); /* <-, line 105 */
-            break;
-        case 12:
-            slice_from_s(z, 3, s_24); /* <-, line 107 */
-            break;
-        case 13:
-            if (!(eq_s_b(z, 1, s_25))) return 0;
-            slice_from_s(z, 2, s_26); /* <-, line 108 */
-            break;
-        case 14:
-            slice_from_s(z, 3, s_27); /* <-, line 109 */
-            break;
-        case 15:
-            slice_from_s(z, 4, s_28); /* <-, line 110 */
-            break;
-        case 16:
-            if (!(in_grouping_b(z, g_valid_LI, 99, 116))) return 0;
-            slice_del(z); /* delete, line 111 */
-            break;
-    }
-    return 1;
+       if (z->c > z->lb)
+           goto lab2;          /* atlimit, line 84 */
+       return 0;
+lab2:
+       z->c = z->l - m;
+   }
+   slice_from_s(z, 1, s_12);   /* <-, line 85 */
+   return 1;
 }
 
-static int r_Step_3(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 116 */
-    among_var = find_among_b(z, a_5, 9); /* substring, line 116 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 116 */
-    if (!r_R1(z)) return 0; /* call R1, line 116 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_from_s(z, 4, s_29); /* <-, line 117 */
-            break;
-        case 2:
-            slice_from_s(z, 3, s_30); /* <-, line 118 */
-            break;
-        case 3:
-            slice_from_s(z, 2, s_31); /* <-, line 119 */
-            break;
-        case 4:
-            slice_from_s(z, 2, s_32); /* <-, line 121 */
-            break;
-        case 5:
-            slice_del(z); /* delete, line 123 */
-            break;
-        case 6:
-            if (!r_R2(z)) return 0; /* call R2, line 125 */
-            slice_del(z); /* delete, line 125 */
-            break;
-    }
-    return 1;
+static int
+r_Step_2(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 89 */
+   among_var = find_among_b(z, a_4, 24);       /* substring, line 89 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 89 */
+   if (!r_R1(z))
+       return 0;               /* call R1, line 89 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_from_s(z, 4, s_13);   /* <-, line 90 */
+           break;
+       case 2:
+           slice_from_s(z, 4, s_14);   /* <-, line 91 */
+           break;
+       case 3:
+           slice_from_s(z, 4, s_15);   /* <-, line 92 */
+           break;
+       case 4:
+           slice_from_s(z, 4, s_16);   /* <-, line 93 */
+           break;
+       case 5:
+           slice_from_s(z, 3, s_17);   /* <-, line 94 */
+           break;
+       case 6:
+           slice_from_s(z, 3, s_18);   /* <-, line 96 */
+           break;
+       case 7:
+           slice_from_s(z, 3, s_19);   /* <-, line 98 */
+           break;
+       case 8:
+           slice_from_s(z, 2, s_20);   /* <-, line 100 */
+           break;
+       case 9:
+           slice_from_s(z, 3, s_21);   /* <-, line 101 */
+           break;
+       case 10:
+           slice_from_s(z, 3, s_22);   /* <-, line 103 */
+           break;
+       case 11:
+           slice_from_s(z, 3, s_23);   /* <-, line 105 */
+           break;
+       case 12:
+           slice_from_s(z, 3, s_24);   /* <-, line 107 */
+           break;
+       case 13:
+           if (!(eq_s_b(z, 1, s_25)))
+               return 0;
+           slice_from_s(z, 2, s_26);   /* <-, line 108 */
+           break;
+       case 14:
+           slice_from_s(z, 3, s_27);   /* <-, line 109 */
+           break;
+       case 15:
+           slice_from_s(z, 4, s_28);   /* <-, line 110 */
+           break;
+       case 16:
+           if (!(in_grouping_b(z, g_valid_LI, 99, 116)))
+               return 0;
+           slice_del(z);       /* delete, line 111 */
+           break;
+   }
+   return 1;
 }
 
-static int r_Step_4(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 130 */
-    among_var = find_among_b(z, a_6, 18); /* substring, line 130 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 130 */
-    if (!r_R2(z)) return 0; /* call R2, line 130 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_del(z); /* delete, line 133 */
-            break;
-        case 2:
-            {   int m = z->l - z->c; /* or, line 134 */
-                if (!(eq_s_b(z, 1, s_33))) goto lab1;
-                goto lab0;
-            lab1:
-                z->c = z->l - m;
-                if (!(eq_s_b(z, 1, s_34))) return 0;
-            }
-        lab0:
-            slice_del(z); /* delete, line 134 */
-            break;
-    }
-    return 1;
+static int
+r_Step_3(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 116 */
+   among_var = find_among_b(z, a_5, 9);        /* substring, line 116 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 116 */
+   if (!r_R1(z))
+       return 0;               /* call R1, line 116 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_from_s(z, 4, s_29);   /* <-, line 117 */
+           break;
+       case 2:
+           slice_from_s(z, 3, s_30);   /* <-, line 118 */
+           break;
+       case 3:
+           slice_from_s(z, 2, s_31);   /* <-, line 119 */
+           break;
+       case 4:
+           slice_from_s(z, 2, s_32);   /* <-, line 121 */
+           break;
+       case 5:
+           slice_del(z);       /* delete, line 123 */
+           break;
+       case 6:
+           if (!r_R2(z))
+               return 0;       /* call R2, line 125 */
+           slice_del(z);       /* delete, line 125 */
+           break;
+   }
+   return 1;
 }
 
-static int r_Step_5(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 139 */
-    among_var = find_among_b(z, a_7, 2); /* substring, line 139 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 139 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            {   int m = z->l - z->c; /* or, line 140 */
-                if (!r_R2(z)) goto lab1; /* call R2, line 140 */
-                goto lab0;
-            lab1:
-                z->c = z->l - m;
-                if (!r_R1(z)) return 0; /* call R1, line 140 */
-                {   int m = z->l - z->c; /* not, line 140 */
-                    if (!r_shortv(z)) goto lab2; /* call shortv, line 140 */
-                    return 0;
-                lab2:
-                    z->c = z->l - m;
-                }
-            }
-        lab0:
-            slice_del(z); /* delete, line 140 */
-            break;
-        case 2:
-            if (!r_R2(z)) return 0; /* call R2, line 141 */
-            if (!(eq_s_b(z, 1, s_35))) return 0;
-            slice_del(z); /* delete, line 141 */
-            break;
-    }
-    return 1;
+static int
+r_Step_4(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 130 */
+   among_var = find_among_b(z, a_6, 18);       /* substring, line 130 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 130 */
+   if (!r_R2(z))
+       return 0;               /* call R2, line 130 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_del(z);       /* delete, line 133 */
+           break;
+       case 2:
+           {
+               int         m = z->l - z->c;    /* or, line 134 */
+
+               if (!(eq_s_b(z, 1, s_33)))
+                   goto lab1;
+               goto lab0;
+       lab1:
+               z->c = z->l - m;
+               if (!(eq_s_b(z, 1, s_34)))
+                   return 0;
+           }
+   lab0:
+           slice_del(z);       /* delete, line 134 */
+           break;
+   }
+   return 1;
 }
 
-static int r_exception2(struct SN_env * z) {
-    z->ket = z->c; /* [, line 147 */
-    if (!(find_among_b(z, a_8, 8))) return 0; /* substring, line 147 */
-    z->bra = z->c; /* ], line 147 */
-    if (z->c > z->lb) return 0; /* atlimit, line 147 */
-    return 1;
+static int
+r_Step_5(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 139 */
+   among_var = find_among_b(z, a_7, 2);        /* substring, line 139 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 139 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           {
+               int         m = z->l - z->c;    /* or, line 140 */
+
+               if (!r_R2(z))
+                   goto lab1;  /* call R2, line 140 */
+               goto lab0;
+       lab1:
+               z->c = z->l - m;
+               if (!r_R1(z))
+                   return 0;   /* call R1, line 140 */
+               {
+                   int         m = z->l - z->c;        /* not, line 140 */
+
+                   if (!r_shortv(z))
+                       goto lab2;      /* call shortv, line 140 */
+                   return 0;
+           lab2:
+                   z->c = z->l - m;
+               }
+           }
+   lab0:
+           slice_del(z);       /* delete, line 140 */
+           break;
+       case 2:
+           if (!r_R2(z))
+               return 0;       /* call R2, line 141 */
+           if (!(eq_s_b(z, 1, s_35)))
+               return 0;
+           slice_del(z);       /* delete, line 141 */
+           break;
+   }
+   return 1;
 }
 
-static int r_exception1(struct SN_env * z) {
-    int among_var;
-    z->bra = z->c; /* [, line 159 */
-    among_var = find_among(z, a_9, 18); /* substring, line 159 */
-    if (!(among_var)) return 0;
-    z->ket = z->c; /* ], line 159 */
-    if (z->c < z->l) return 0; /* atlimit, line 159 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_from_s(z, 3, s_36); /* <-, line 163 */
-            break;
-        case 2:
-            slice_from_s(z, 3, s_37); /* <-, line 164 */
-            break;
-        case 3:
-            slice_from_s(z, 3, s_38); /* <-, line 165 */
-            break;
-        case 4:
-            slice_from_s(z, 3, s_39); /* <-, line 166 */
-            break;
-        case 5:
-            slice_from_s(z, 3, s_40); /* <-, line 167 */
-            break;
-        case 6:
-            slice_from_s(z, 3, s_41); /* <-, line 171 */
-            break;
-        case 7:
-            slice_from_s(z, 5, s_42); /* <-, line 172 */
-            break;
-        case 8:
-            slice_from_s(z, 4, s_43); /* <-, line 173 */
-            break;
-        case 9:
-            slice_from_s(z, 5, s_44); /* <-, line 174 */
-            break;
-        case 10:
-            slice_from_s(z, 4, s_45); /* <-, line 175 */
-            break;
-        case 11:
-            slice_from_s(z, 5, s_46); /* <-, line 176 */
-            break;
-    }
-    return 1;
+static int
+r_exception2(struct SN_env * z)
+{
+   z->ket = z->c;              /* [, line 147 */
+   if (!(find_among_b(z, a_8, 8)))
+       return 0;               /* substring, line 147 */
+   z->bra = z->c;              /* ], line 147 */
+   if (z->c > z->lb)
+       return 0;               /* atlimit, line 147 */
+   return 1;
 }
 
-static int r_postlude(struct SN_env * z) {
-    if (!(z->B[0])) return 0; /* Boolean test Y_found, line 192 */
-    while(1) { /* repeat, line 192 */
-        int c = z->c;
-        while(1) { /* goto, line 192 */
-            int c = z->c;
-            z->bra = z->c; /* [, line 192 */
-            if (!(eq_s(z, 1, s_47))) goto lab1;
-            z->ket = z->c; /* ], line 192 */
-            z->c = c;
-            break;
-        lab1:
-            z->c = c;
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        slice_from_s(z, 1, s_48); /* <-, line 192 */
-        continue;
-    lab0:
-        z->c = c;
-        break;
-    }
-    return 1;
+static int
+r_exception1(struct SN_env * z)
+{
+   int         among_var;
+
+   z->bra = z->c;              /* [, line 159 */
+   among_var = find_among(z, a_9, 18); /* substring, line 159 */
+   if (!(among_var))
+       return 0;
+   z->ket = z->c;              /* ], line 159 */
+   if (z->c < z->l)
+       return 0;               /* atlimit, line 159 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_from_s(z, 3, s_36);   /* <-, line 163 */
+           break;
+       case 2:
+           slice_from_s(z, 3, s_37);   /* <-, line 164 */
+           break;
+       case 3:
+           slice_from_s(z, 3, s_38);   /* <-, line 165 */
+           break;
+       case 4:
+           slice_from_s(z, 3, s_39);   /* <-, line 166 */
+           break;
+       case 5:
+           slice_from_s(z, 3, s_40);   /* <-, line 167 */
+           break;
+       case 6:
+           slice_from_s(z, 3, s_41);   /* <-, line 171 */
+           break;
+       case 7:
+           slice_from_s(z, 5, s_42);   /* <-, line 172 */
+           break;
+       case 8:
+           slice_from_s(z, 4, s_43);   /* <-, line 173 */
+           break;
+       case 9:
+           slice_from_s(z, 5, s_44);   /* <-, line 174 */
+           break;
+       case 10:
+           slice_from_s(z, 4, s_45);   /* <-, line 175 */
+           break;
+       case 11:
+           slice_from_s(z, 5, s_46);   /* <-, line 176 */
+           break;
+   }
+   return 1;
 }
 
-extern int english_stem(struct SN_env * z) {
-    {   int c = z->c; /* or, line 196 */
-        if (!r_exception1(z)) goto lab1; /* call exception1, line 196 */
-        goto lab0;
-    lab1:
-        z->c = c;
-        {   int c_test = z->c; /* test, line 198 */
-            {   int c = z->c + 3;
-                if (0 > c || c > z->l) return 0;
-                z->c = c; /* hop, line 198 */
-            }
-            z->c = c_test;
-        }
-        {   int c = z->c; /* do, line 199 */
-            if (!r_prelude(z)) goto lab2; /* call prelude, line 199 */
-        lab2:
-            z->c = c;
-        }
-        {   int c = z->c; /* do, line 200 */
-            if (!r_mark_regions(z)) goto lab3; /* call mark_regions, line 200 */
-        lab3:
-            z->c = c;
-        }
-        z->lb = z->c; z->c = z->l; /* backwards, line 201 */
-
-        {   int m = z->l - z->c; /* do, line 203 */
-            if (!r_Step_1a(z)) goto lab4; /* call Step_1a, line 203 */
-        lab4:
-            z->c = z->l - m;
-        }
-        {   int m = z->l - z->c; /* or, line 205 */
-            if (!r_exception2(z)) goto lab6; /* call exception2, line 205 */
-            goto lab5;
-        lab6:
-            z->c = z->l - m;
-            {   int m = z->l - z->c; /* do, line 207 */
-                if (!r_Step_1b(z)) goto lab7; /* call Step_1b, line 207 */
-            lab7:
-                z->c = z->l - m;
-            }
-            {   int m = z->l - z->c; /* do, line 208 */
-                if (!r_Step_1c(z)) goto lab8; /* call Step_1c, line 208 */
-            lab8:
-                z->c = z->l - m;
-            }
-            {   int m = z->l - z->c; /* do, line 210 */
-                if (!r_Step_2(z)) goto lab9; /* call Step_2, line 210 */
-            lab9:
-                z->c = z->l - m;
-            }
-            {   int m = z->l - z->c; /* do, line 211 */
-                if (!r_Step_3(z)) goto lab10; /* call Step_3, line 211 */
-            lab10:
-                z->c = z->l - m;
-            }
-            {   int m = z->l - z->c; /* do, line 212 */
-                if (!r_Step_4(z)) goto lab11; /* call Step_4, line 212 */
-            lab11:
-                z->c = z->l - m;
-            }
-            {   int m = z->l - z->c; /* do, line 214 */
-                if (!r_Step_5(z)) goto lab12; /* call Step_5, line 214 */
-            lab12:
-                z->c = z->l - m;
-            }
-        }
-    lab5:
-        z->c = z->lb;
-        {   int c = z->c; /* do, line 217 */
-            if (!r_postlude(z)) goto lab13; /* call postlude, line 217 */
-        lab13:
-            z->c = c;
-        }
-    }
+static int
+r_postlude(struct SN_env * z)
+{
+   if (!(z->B[0]))
+       return 0;               /* Boolean test Y_found, line 192 */
+   while (1)
+   {                           /* repeat, line 192 */
+       int         c = z->c;
+
+       while (1)
+       {                       /* goto, line 192 */
+           int         c = z->c;
+
+           z->bra = z->c;      /* [, line 192 */
+           if (!(eq_s(z, 1, s_47)))
+               goto lab1;
+           z->ket = z->c;      /* ], line 192 */
+           z->c = c;
+           break;
+   lab1:
+           z->c = c;
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       slice_from_s(z, 1, s_48);       /* <-, line 192 */
+       continue;
 lab0:
-    return 1;
+       z->c = c;
+       break;
+   }
+   return 1;
 }
 
-extern struct SN_env * english_create_env(void) { return SN_create_env(0, 2, 1); }
+extern int
+english_stem(struct SN_env * z)
+{
+   {
+       int         c = z->c;   /* or, line 196 */
+
+       if (!r_exception1(z))
+           goto lab1;          /* call exception1, line 196 */
+       goto lab0;
+lab1:
+       z->c = c;
+       {
+           int         c_test = z->c;  /* test, line 198 */
+
+           {
+               int         c = z->c + 3;
+
+               if (0 > c || c > z->l)
+                   return 0;
+               z->c = c;       /* hop, line 198 */
+           }
+           z->c = c_test;
+       }
+       {
+           int         c = z->c;       /* do, line 199 */
+
+           if (!r_prelude(z))
+               goto lab2;      /* call prelude, line 199 */
+   lab2:
+           z->c = c;
+       }
+       {
+           int         c = z->c;       /* do, line 200 */
 
-extern void english_close_env(struct SN_env * z) { SN_close_env(z); }
+           if (!r_mark_regions(z))
+               goto lab3;      /* call mark_regions, line 200 */
+   lab3:
+           z->c = c;
+       }
+       z->lb = z->c;
+       z->c = z->l;            /* backwards, line 201 */
 
+       {
+           int         m = z->l - z->c;        /* do, line 203 */
+
+           if (!r_Step_1a(z))
+               goto lab4;      /* call Step_1a, line 203 */
+   lab4:
+           z->c = z->l - m;
+       }
+       {
+           int         m = z->l - z->c;        /* or, line 205 */
+
+           if (!r_exception2(z))
+               goto lab6;      /* call exception2, line 205 */
+           goto lab5;
+   lab6:
+           z->c = z->l - m;
+           {
+               int         m = z->l - z->c;    /* do, line 207 */
+
+               if (!r_Step_1b(z))
+                   goto lab7;  /* call Step_1b, line 207 */
+       lab7:
+               z->c = z->l - m;
+           }
+           {
+               int         m = z->l - z->c;    /* do, line 208 */
+
+               if (!r_Step_1c(z))
+                   goto lab8;  /* call Step_1c, line 208 */
+       lab8:
+               z->c = z->l - m;
+           }
+           {
+               int         m = z->l - z->c;    /* do, line 210 */
+
+               if (!r_Step_2(z))
+                   goto lab9;  /* call Step_2, line 210 */
+       lab9:
+               z->c = z->l - m;
+           }
+           {
+               int         m = z->l - z->c;    /* do, line 211 */
+
+               if (!r_Step_3(z))
+                   goto lab10; /* call Step_3, line 211 */
+       lab10:
+               z->c = z->l - m;
+           }
+           {
+               int         m = z->l - z->c;    /* do, line 212 */
+
+               if (!r_Step_4(z))
+                   goto lab11; /* call Step_4, line 212 */
+       lab11:
+               z->c = z->l - m;
+           }
+           {
+               int         m = z->l - z->c;    /* do, line 214 */
+
+               if (!r_Step_5(z))
+                   goto lab12; /* call Step_5, line 214 */
+       lab12:
+               z->c = z->l - m;
+           }
+       }
+lab5:
+       z->c = z->lb;
+       {
+           int         c = z->c;       /* do, line 217 */
+
+           if (!r_postlude(z))
+               goto lab13;     /* call postlude, line 217 */
+   lab13:
+           z->c = c;
+       }
+   }
+lab0:
+   return 1;
+}
+
+extern struct SN_env *english_create_env(void)
+{
+   return SN_create_env(0, 2, 1);
+}
+
+extern void english_close_env(struct SN_env * z)
+{
+   SN_close_env(z);
+}
index bfefcd565657935cedfea451edd07b8d95e330c2..7a52f9cde13ab37e02160802f4f2dd938273c119 100644 (file)
@@ -1,8 +1,7 @@
 
 /* This file was generated automatically by the Snowball to ANSI C compiler */
 
-extern struct SN_env * english_create_env(void);
+extern struct SN_env *english_create_env(void);
 extern void english_close_env(struct SN_env * z);
 
-extern int english_stem(struct SN_env * z);
-
+extern int english_stem(struct SN_env * z);
index 6b636972022da76de3f5f705745dc7e6603aaa96..4d4f127d6a1d340d6339ba92699cacf8923254e8 100644 (file)
@@ -2,41 +2,42 @@
 
 #define HEAD 2*sizeof(int)
 
-#define SIZE(p)        ((int *)(p))[-1]
+#define SIZE(p)           ((int *)(p))[-1]
 #define SET_SIZE(p, n) ((int *)(p))[-1] = n
 #define CAPACITY(p)    ((int *)(p))[-2]
 
 struct among
-{   int s_size;     /* number of chars in string */
-    symbol * s;       /* search string */
-    int substring_i;/* index to longest matching substring */
-    int result;     /* result of the lookup */
-    int (* function)(struct SN_env *);
+{
+   int         s_size;         /* number of chars in string */
+   symbol     *s;              /* search string */
+   int         substring_i;    /* index to longest matching substring */
+   int         result;         /* result of the lookup */
+   int         (*function) (struct SN_env *);
 };
 
-extern symbol * create_s(void);
+extern symbol *create_s(void);
 extern void lose_s(symbol * p);
 
-extern int in_grouping(struct SN_env * z, unsigned char * s, int min, int max);
-extern int in_grouping_b(struct SN_env * z, unsigned char * s, int min, int max);
-extern int out_grouping(struct SN_env * z, unsigned char * s, int min, int max);
-extern int out_grouping_b(struct SN_env * z, unsigned char * s, int min, int max);
+extern int in_grouping(struct SN_env * z, unsigned char *s, int min, int max);
+extern int in_grouping_b(struct SN_env * z, unsigned char *s, int min, int max);
+extern int out_grouping(struct SN_env * z, unsigned char *s, int min, int max);
+extern int out_grouping_b(struct SN_env * z, unsigned char *s, int min, int max);
 
-extern int in_range(struct SN_env * z, int min, int max);
-extern int in_range_b(struct SN_env * z, int min, int max);
-extern int out_range(struct SN_env * z, int min, int max);
-extern int out_range_b(struct SN_env * z, int min, int max);
+extern int in_range(struct SN_env * z, int min, int max);
+extern int in_range_b(struct SN_env * z, int min, int max);
+extern int out_range(struct SN_env * z, int min, int max);
+extern int out_range_b(struct SN_env * z, int min, int max);
 
-extern int eq_s(struct SN_env * z, int s_size, symbol * s);
-extern int eq_s_b(struct SN_env * z, int s_size, symbol * s);
-extern int eq_v(struct SN_env * z, symbol * p);
-extern int eq_v_b(struct SN_env * z, symbol * p);
+extern int eq_s(struct SN_env * z, int s_size, symbol * s);
+extern int eq_s_b(struct SN_env * z, int s_size, symbol * s);
+extern int eq_v(struct SN_env * z, symbol * p);
+extern int eq_v_b(struct SN_env * z, symbol * p);
 
-extern int find_among(struct SN_env * z, struct among * v, int v_size);
-extern int find_among_b(struct SN_env * z, struct among * v, int v_size);
+extern int find_among(struct SN_env * z, struct among * v, int v_size);
+extern int find_among_b(struct SN_env * z, struct among * v, int v_size);
 
-extern symbol * increase_size(symbol * p, int n);
-extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s);
+extern symbol *increase_size(symbol * p, int n);
+extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s);
 extern void slice_from_s(struct SN_env * z, int s_size, symbol * s);
 extern void slice_from_v(struct SN_env * z, symbol * p);
 extern void slice_del(struct SN_env * z);
@@ -44,8 +45,7 @@ extern void slice_del(struct SN_env * z);
 extern void insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s);
 extern void insert_v(struct SN_env * z, int bra, int ket, symbol * p);
 
-extern symbol * slice_to(struct SN_env * z, symbol * p);
-extern symbol * assign_to(struct SN_env * z, symbol * p);
+extern symbol *slice_to(struct SN_env * z, symbol * p);
+extern symbol *assign_to(struct SN_env * z, symbol * p);
 
 extern void debug(struct SN_env * z, int number, int line_count);
-
index 14fd49156b75072e3fa7d8606881cad863cd7443..db698ce53fbd5fcd7867c00738854a0eb3e9b9fa 100644 (file)
 
 #include "header.h"
 
-extern int russian_stem(struct SN_env * z);
-static int r_tidy_up(struct SN_env * z);
-static int r_derivational(struct SN_env * z);
-static int r_noun(struct SN_env * z);
-static int r_verb(struct SN_env * z);
-static int r_reflexive(struct SN_env * z);
-static int r_adjectival(struct SN_env * z);
-static int r_adjective(struct SN_env * z);
-static int r_perfective_gerund(struct SN_env * z);
-static int r_R2(struct SN_env * z);
-static int r_mark_regions(struct SN_env * z);
-
-extern struct SN_env * russian_create_env(void);
+extern int russian_stem(struct SN_env * z);
+static int r_tidy_up(struct SN_env * z);
+static int r_derivational(struct SN_env * z);
+static int r_noun(struct SN_env * z);
+static int r_verb(struct SN_env * z);
+static int r_reflexive(struct SN_env * z);
+static int r_adjectival(struct SN_env * z);
+static int r_adjective(struct SN_env * z);
+static int r_perfective_gerund(struct SN_env * z);
+static int r_R2(struct SN_env * z);
+static int r_mark_regions(struct SN_env * z);
+
+extern struct SN_env *russian_create_env(void);
 extern void russian_close_env(struct SN_env * z);
 
-static symbol s_0_0[3] = { 215, 219, 201 };
-static symbol s_0_1[4] = { 201, 215, 219, 201 };
-static symbol s_0_2[4] = { 217, 215, 219, 201 };
-static symbol s_0_3[1] = { 215 };
-static symbol s_0_4[2] = { 201, 215 };
-static symbol s_0_5[2] = { 217, 215 };
-static symbol s_0_6[5] = { 215, 219, 201, 211, 216 };
-static symbol s_0_7[6] = { 201, 215, 219, 201, 211, 216 };
-static symbol s_0_8[6] = { 217, 215, 219, 201, 211, 216 };
+static symbol s_0_0[3] = {215, 219, 201};
+static symbol s_0_1[4] = {201, 215, 219, 201};
+static symbol s_0_2[4] = {217, 215, 219, 201};
+static symbol s_0_3[1] = {215};
+static symbol s_0_4[2] = {201, 215};
+static symbol s_0_5[2] = {217, 215};
+static symbol s_0_6[5] = {215, 219, 201, 211, 216};
+static symbol s_0_7[6] = {201, 215, 219, 201, 211, 216};
+static symbol s_0_8[6] = {217, 215, 219, 201, 211, 216};
 
 static struct among a_0[9] =
 {
-/*  0 */ { 3, s_0_0, -1, 1, 0},
-/*  1 */ { 4, s_0_1, 0, 2, 0},
-/*  2 */ { 4, s_0_2, 0, 2, 0},
-/*  3 */ { 1, s_0_3, -1, 1, 0},
-/*  4 */ { 2, s_0_4, 3, 2, 0},
-/*  5 */ { 2, s_0_5, 3, 2, 0},
-/*  6 */ { 5, s_0_6, -1, 1, 0},
-/*  7 */ { 6, s_0_7, 6, 2, 0},
-/*  8 */ { 6, s_0_8, 6, 2, 0}
+    /*  0 */ {3, s_0_0, -1, 1, 0},
+    /*  1 */ {4, s_0_1, 0, 2, 0},
+    /*  2 */ {4, s_0_2, 0, 2, 0},
+    /*  3 */ {1, s_0_3, -1, 1, 0},
+    /*  4 */ {2, s_0_4, 3, 2, 0},
+    /*  5 */ {2, s_0_5, 3, 2, 0},
+    /*  6 */ {5, s_0_6, -1, 1, 0},
+    /*  7 */ {6, s_0_7, 6, 2, 0},
+    /*  8 */ {6, s_0_8, 6, 2, 0}
 };
 
-static symbol s_1_0[2] = { 192, 192 };
-static symbol s_1_1[2] = { 197, 192 };
-static symbol s_1_2[2] = { 207, 192 };
-static symbol s_1_3[2] = { 213, 192 };
-static symbol s_1_4[2] = { 197, 197 };
-static symbol s_1_5[2] = { 201, 197 };
-static symbol s_1_6[2] = { 207, 197 };
-static symbol s_1_7[2] = { 217, 197 };
-static symbol s_1_8[2] = { 201, 200 };
-static symbol s_1_9[2] = { 217, 200 };
-static symbol s_1_10[3] = { 201, 205, 201 };
-static symbol s_1_11[3] = { 217, 205, 201 };
-static symbol s_1_12[2] = { 197, 202 };
-static symbol s_1_13[2] = { 201, 202 };
-static symbol s_1_14[2] = { 207, 202 };
-static symbol s_1_15[2] = { 217, 202 };
-static symbol s_1_16[2] = { 197, 205 };
-static symbol s_1_17[2] = { 201, 205 };
-static symbol s_1_18[2] = { 207, 205 };
-static symbol s_1_19[2] = { 217, 205 };
-static symbol s_1_20[3] = { 197, 199, 207 };
-static symbol s_1_21[3] = { 207, 199, 207 };
-static symbol s_1_22[2] = { 193, 209 };
-static symbol s_1_23[2] = { 209, 209 };
-static symbol s_1_24[3] = { 197, 205, 213 };
-static symbol s_1_25[3] = { 207, 205, 213 };
+static symbol s_1_0[2] = {192, 192};
+static symbol s_1_1[2] = {197, 192};
+static symbol s_1_2[2] = {207, 192};
+static symbol s_1_3[2] = {213, 192};
+static symbol s_1_4[2] = {197, 197};
+static symbol s_1_5[2] = {201, 197};
+static symbol s_1_6[2] = {207, 197};
+static symbol s_1_7[2] = {217, 197};
+static symbol s_1_8[2] = {201, 200};
+static symbol s_1_9[2] = {217, 200};
+static symbol s_1_10[3] = {201, 205, 201};
+static symbol s_1_11[3] = {217, 205, 201};
+static symbol s_1_12[2] = {197, 202};
+static symbol s_1_13[2] = {201, 202};
+static symbol s_1_14[2] = {207, 202};
+static symbol s_1_15[2] = {217, 202};
+static symbol s_1_16[2] = {197, 205};
+static symbol s_1_17[2] = {201, 205};
+static symbol s_1_18[2] = {207, 205};
+static symbol s_1_19[2] = {217, 205};
+static symbol s_1_20[3] = {197, 199, 207};
+static symbol s_1_21[3] = {207, 199, 207};
+static symbol s_1_22[2] = {193, 209};
+static symbol s_1_23[2] = {209, 209};
+static symbol s_1_24[3] = {197, 205, 213};
+static symbol s_1_25[3] = {207, 205, 213};
 
 static struct among a_1[26] =
 {
-/*  0 */ { 2, s_1_0, -1, 1, 0},
-/*  1 */ { 2, s_1_1, -1, 1, 0},
-/*  2 */ { 2, s_1_2, -1, 1, 0},
-/*  3 */ { 2, s_1_3, -1, 1, 0},
-/*  4 */ { 2, s_1_4, -1, 1, 0},
-/*  5 */ { 2, s_1_5, -1, 1, 0},
-/*  6 */ { 2, s_1_6, -1, 1, 0},
-/*  7 */ { 2, s_1_7, -1, 1, 0},
-/*  8 */ { 2, s_1_8, -1, 1, 0},
-/*  9 */ { 2, s_1_9, -1, 1, 0},
-/* 10 */ { 3, s_1_10, -1, 1, 0},
-/* 11 */ { 3, s_1_11, -1, 1, 0},
-/* 12 */ { 2, s_1_12, -1, 1, 0},
-/* 13 */ { 2, s_1_13, -1, 1, 0},
-/* 14 */ { 2, s_1_14, -1, 1, 0},
-/* 15 */ { 2, s_1_15, -1, 1, 0},
-/* 16 */ { 2, s_1_16, -1, 1, 0},
-/* 17 */ { 2, s_1_17, -1, 1, 0},
-/* 18 */ { 2, s_1_18, -1, 1, 0},
-/* 19 */ { 2, s_1_19, -1, 1, 0},
-/* 20 */ { 3, s_1_20, -1, 1, 0},
-/* 21 */ { 3, s_1_21, -1, 1, 0},
-/* 22 */ { 2, s_1_22, -1, 1, 0},
-/* 23 */ { 2, s_1_23, -1, 1, 0},
-/* 24 */ { 3, s_1_24, -1, 1, 0},
-/* 25 */ { 3, s_1_25, -1, 1, 0}
+    /*  0 */ {2, s_1_0, -1, 1, 0},
+    /*  1 */ {2, s_1_1, -1, 1, 0},
+    /*  2 */ {2, s_1_2, -1, 1, 0},
+    /*  3 */ {2, s_1_3, -1, 1, 0},
+    /*  4 */ {2, s_1_4, -1, 1, 0},
+    /*  5 */ {2, s_1_5, -1, 1, 0},
+    /*  6 */ {2, s_1_6, -1, 1, 0},
+    /*  7 */ {2, s_1_7, -1, 1, 0},
+    /*  8 */ {2, s_1_8, -1, 1, 0},
+    /*  9 */ {2, s_1_9, -1, 1, 0},
+    /* 10 */ {3, s_1_10, -1, 1, 0},
+    /* 11 */ {3, s_1_11, -1, 1, 0},
+    /* 12 */ {2, s_1_12, -1, 1, 0},
+    /* 13 */ {2, s_1_13, -1, 1, 0},
+    /* 14 */ {2, s_1_14, -1, 1, 0},
+    /* 15 */ {2, s_1_15, -1, 1, 0},
+    /* 16 */ {2, s_1_16, -1, 1, 0},
+    /* 17 */ {2, s_1_17, -1, 1, 0},
+    /* 18 */ {2, s_1_18, -1, 1, 0},
+    /* 19 */ {2, s_1_19, -1, 1, 0},
+    /* 20 */ {3, s_1_20, -1, 1, 0},
+    /* 21 */ {3, s_1_21, -1, 1, 0},
+    /* 22 */ {2, s_1_22, -1, 1, 0},
+    /* 23 */ {2, s_1_23, -1, 1, 0},
+    /* 24 */ {3, s_1_24, -1, 1, 0},
+    /* 25 */ {3, s_1_25, -1, 1, 0}
 };
 
-static symbol s_2_0[2] = { 197, 205 };
-static symbol s_2_1[2] = { 206, 206 };
-static symbol s_2_2[2] = { 215, 219 };
-static symbol s_2_3[3] = { 201, 215, 219 };
-static symbol s_2_4[3] = { 217, 215, 219 };
-static symbol s_2_5[1] = { 221 };
-static symbol s_2_6[2] = { 192, 221 };
-static symbol s_2_7[3] = { 213, 192, 221 };
+static symbol s_2_0[2] = {197, 205};
+static symbol s_2_1[2] = {206, 206};
+static symbol s_2_2[2] = {215, 219};
+static symbol s_2_3[3] = {201, 215, 219};
+static symbol s_2_4[3] = {217, 215, 219};
+static symbol s_2_5[1] = {221};
+static symbol s_2_6[2] = {192, 221};
+static symbol s_2_7[3] = {213, 192, 221};
 
 static struct among a_2[8] =
 {
-/*  0 */ { 2, s_2_0, -1, 1, 0},
-/*  1 */ { 2, s_2_1, -1, 1, 0},
-/*  2 */ { 2, s_2_2, -1, 1, 0},
-/*  3 */ { 3, s_2_3, 2, 2, 0},
-/*  4 */ { 3, s_2_4, 2, 2, 0},
-/*  5 */ { 1, s_2_5, -1, 1, 0},
-/*  6 */ { 2, s_2_6, 5, 1, 0},
-/*  7 */ { 3, s_2_7, 6, 2, 0}
+    /*  0 */ {2, s_2_0, -1, 1, 0},
+    /*  1 */ {2, s_2_1, -1, 1, 0},
+    /*  2 */ {2, s_2_2, -1, 1, 0},
+    /*  3 */ {3, s_2_3, 2, 2, 0},
+    /*  4 */ {3, s_2_4, 2, 2, 0},
+    /*  5 */ {1, s_2_5, -1, 1, 0},
+    /*  6 */ {2, s_2_6, 5, 1, 0},
+    /*  7 */ {3, s_2_7, 6, 2, 0}
 };
 
-static symbol s_3_0[2] = { 211, 209 };
-static symbol s_3_1[2] = { 211, 216 };
+static symbol s_3_0[2] = {211, 209};
+static symbol s_3_1[2] = {211, 216};
 
 static struct among a_3[2] =
 {
-/*  0 */ { 2, s_3_0, -1, 1, 0},
-/*  1 */ { 2, s_3_1, -1, 1, 0}
+    /*  0 */ {2, s_3_0, -1, 1, 0},
+    /*  1 */ {2, s_3_1, -1, 1, 0}
 };
 
-static symbol s_4_0[1] = { 192 };
-static symbol s_4_1[2] = { 213, 192 };
-static symbol s_4_2[2] = { 204, 193 };
-static symbol s_4_3[3] = { 201, 204, 193 };
-static symbol s_4_4[3] = { 217, 204, 193 };
-static symbol s_4_5[2] = { 206, 193 };
-static symbol s_4_6[3] = { 197, 206, 193 };
-static symbol s_4_7[3] = { 197, 212, 197 };
-static symbol s_4_8[3] = { 201, 212, 197 };
-static symbol s_4_9[3] = { 202, 212, 197 };
-static symbol s_4_10[4] = { 197, 202, 212, 197 };
-static symbol s_4_11[4] = { 213, 202, 212, 197 };
-static symbol s_4_12[2] = { 204, 201 };
-static symbol s_4_13[3] = { 201, 204, 201 };
-static symbol s_4_14[3] = { 217, 204, 201 };
-static symbol s_4_15[1] = { 202 };
-static symbol s_4_16[2] = { 197, 202 };
-static symbol s_4_17[2] = { 213, 202 };
-static symbol s_4_18[1] = { 204 };
-static symbol s_4_19[2] = { 201, 204 };
-static symbol s_4_20[2] = { 217, 204 };
-static symbol s_4_21[2] = { 197, 205 };
-static symbol s_4_22[2] = { 201, 205 };
-static symbol s_4_23[2] = { 217, 205 };
-static symbol s_4_24[1] = { 206 };
-static symbol s_4_25[2] = { 197, 206 };
-static symbol s_4_26[2] = { 204, 207 };
-static symbol s_4_27[3] = { 201, 204, 207 };
-static symbol s_4_28[3] = { 217, 204, 207 };
-static symbol s_4_29[2] = { 206, 207 };
-static symbol s_4_30[3] = { 197, 206, 207 };
-static symbol s_4_31[3] = { 206, 206, 207 };
-static symbol s_4_32[2] = { 192, 212 };
-static symbol s_4_33[3] = { 213, 192, 212 };
-static symbol s_4_34[2] = { 197, 212 };
-static symbol s_4_35[3] = { 213, 197, 212 };
-static symbol s_4_36[2] = { 201, 212 };
-static symbol s_4_37[2] = { 209, 212 };
-static symbol s_4_38[2] = { 217, 212 };
-static symbol s_4_39[2] = { 212, 216 };
-static symbol s_4_40[3] = { 201, 212, 216 };
-static symbol s_4_41[3] = { 217, 212, 216 };
-static symbol s_4_42[3] = { 197, 219, 216 };
-static symbol s_4_43[3] = { 201, 219, 216 };
-static symbol s_4_44[2] = { 206, 217 };
-static symbol s_4_45[3] = { 197, 206, 217 };
+static symbol s_4_0[1] = {192};
+static symbol s_4_1[2] = {213, 192};
+static symbol s_4_2[2] = {204, 193};
+static symbol s_4_3[3] = {201, 204, 193};
+static symbol s_4_4[3] = {217, 204, 193};
+static symbol s_4_5[2] = {206, 193};
+static symbol s_4_6[3] = {197, 206, 193};
+static symbol s_4_7[3] = {197, 212, 197};
+static symbol s_4_8[3] = {201, 212, 197};
+static symbol s_4_9[3] = {202, 212, 197};
+static symbol s_4_10[4] = {197, 202, 212, 197};
+static symbol s_4_11[4] = {213, 202, 212, 197};
+static symbol s_4_12[2] = {204, 201};
+static symbol s_4_13[3] = {201, 204, 201};
+static symbol s_4_14[3] = {217, 204, 201};
+static symbol s_4_15[1] = {202};
+static symbol s_4_16[2] = {197, 202};
+static symbol s_4_17[2] = {213, 202};
+static symbol s_4_18[1] = {204};
+static symbol s_4_19[2] = {201, 204};
+static symbol s_4_20[2] = {217, 204};
+static symbol s_4_21[2] = {197, 205};
+static symbol s_4_22[2] = {201, 205};
+static symbol s_4_23[2] = {217, 205};
+static symbol s_4_24[1] = {206};
+static symbol s_4_25[2] = {197, 206};
+static symbol s_4_26[2] = {204, 207};
+static symbol s_4_27[3] = {201, 204, 207};
+static symbol s_4_28[3] = {217, 204, 207};
+static symbol s_4_29[2] = {206, 207};
+static symbol s_4_30[3] = {197, 206, 207};
+static symbol s_4_31[3] = {206, 206, 207};
+static symbol s_4_32[2] = {192, 212};
+static symbol s_4_33[3] = {213, 192, 212};
+static symbol s_4_34[2] = {197, 212};
+static symbol s_4_35[3] = {213, 197, 212};
+static symbol s_4_36[2] = {201, 212};
+static symbol s_4_37[2] = {209, 212};
+static symbol s_4_38[2] = {217, 212};
+static symbol s_4_39[2] = {212, 216};
+static symbol s_4_40[3] = {201, 212, 216};
+static symbol s_4_41[3] = {217, 212, 216};
+static symbol s_4_42[3] = {197, 219, 216};
+static symbol s_4_43[3] = {201, 219, 216};
+static symbol s_4_44[2] = {206, 217};
+static symbol s_4_45[3] = {197, 206, 217};
 
 static struct among a_4[46] =
 {
-/*  0 */ { 1, s_4_0, -1, 2, 0},
-/*  1 */ { 2, s_4_1, 0, 2, 0},
-/*  2 */ { 2, s_4_2, -1, 1, 0},
-/*  3 */ { 3, s_4_3, 2, 2, 0},
-/*  4 */ { 3, s_4_4, 2, 2, 0},
-/*  5 */ { 2, s_4_5, -1, 1, 0},
-/*  6 */ { 3, s_4_6, 5, 2, 0},
-/*  7 */ { 3, s_4_7, -1, 1, 0},
-/*  8 */ { 3, s_4_8, -1, 2, 0},
-/*  9 */ { 3, s_4_9, -1, 1, 0},
-/* 10 */ { 4, s_4_10, 9, 2, 0},
-/* 11 */ { 4, s_4_11, 9, 2, 0},
-/* 12 */ { 2, s_4_12, -1, 1, 0},
-/* 13 */ { 3, s_4_13, 12, 2, 0},
-/* 14 */ { 3, s_4_14, 12, 2, 0},
-/* 15 */ { 1, s_4_15, -1, 1, 0},
-/* 16 */ { 2, s_4_16, 15, 2, 0},
-/* 17 */ { 2, s_4_17, 15, 2, 0},
-/* 18 */ { 1, s_4_18, -1, 1, 0},
-/* 19 */ { 2, s_4_19, 18, 2, 0},
-/* 20 */ { 2, s_4_20, 18, 2, 0},
-/* 21 */ { 2, s_4_21, -1, 1, 0},
-/* 22 */ { 2, s_4_22, -1, 2, 0},
-/* 23 */ { 2, s_4_23, -1, 2, 0},
-/* 24 */ { 1, s_4_24, -1, 1, 0},
-/* 25 */ { 2, s_4_25, 24, 2, 0},
-/* 26 */ { 2, s_4_26, -1, 1, 0},
-/* 27 */ { 3, s_4_27, 26, 2, 0},
-/* 28 */ { 3, s_4_28, 26, 2, 0},
-/* 29 */ { 2, s_4_29, -1, 1, 0},
-/* 30 */ { 3, s_4_30, 29, 2, 0},
-/* 31 */ { 3, s_4_31, 29, 1, 0},
-/* 32 */ { 2, s_4_32, -1, 1, 0},
-/* 33 */ { 3, s_4_33, 32, 2, 0},
-/* 34 */ { 2, s_4_34, -1, 1, 0},
-/* 35 */ { 3, s_4_35, 34, 2, 0},
-/* 36 */ { 2, s_4_36, -1, 2, 0},
-/* 37 */ { 2, s_4_37, -1, 2, 0},
-/* 38 */ { 2, s_4_38, -1, 2, 0},
-/* 39 */ { 2, s_4_39, -1, 1, 0},
-/* 40 */ { 3, s_4_40, 39, 2, 0},
-/* 41 */ { 3, s_4_41, 39, 2, 0},
-/* 42 */ { 3, s_4_42, -1, 1, 0},
-/* 43 */ { 3, s_4_43, -1, 2, 0},
-/* 44 */ { 2, s_4_44, -1, 1, 0},
-/* 45 */ { 3, s_4_45, 44, 2, 0}
+    /*  0 */ {1, s_4_0, -1, 2, 0},
+    /*  1 */ {2, s_4_1, 0, 2, 0},
+    /*  2 */ {2, s_4_2, -1, 1, 0},
+    /*  3 */ {3, s_4_3, 2, 2, 0},
+    /*  4 */ {3, s_4_4, 2, 2, 0},
+    /*  5 */ {2, s_4_5, -1, 1, 0},
+    /*  6 */ {3, s_4_6, 5, 2, 0},
+    /*  7 */ {3, s_4_7, -1, 1, 0},
+    /*  8 */ {3, s_4_8, -1, 2, 0},
+    /*  9 */ {3, s_4_9, -1, 1, 0},
+    /* 10 */ {4, s_4_10, 9, 2, 0},
+    /* 11 */ {4, s_4_11, 9, 2, 0},
+    /* 12 */ {2, s_4_12, -1, 1, 0},
+    /* 13 */ {3, s_4_13, 12, 2, 0},
+    /* 14 */ {3, s_4_14, 12, 2, 0},
+    /* 15 */ {1, s_4_15, -1, 1, 0},
+    /* 16 */ {2, s_4_16, 15, 2, 0},
+    /* 17 */ {2, s_4_17, 15, 2, 0},
+    /* 18 */ {1, s_4_18, -1, 1, 0},
+    /* 19 */ {2, s_4_19, 18, 2, 0},
+    /* 20 */ {2, s_4_20, 18, 2, 0},
+    /* 21 */ {2, s_4_21, -1, 1, 0},
+    /* 22 */ {2, s_4_22, -1, 2, 0},
+    /* 23 */ {2, s_4_23, -1, 2, 0},
+    /* 24 */ {1, s_4_24, -1, 1, 0},
+    /* 25 */ {2, s_4_25, 24, 2, 0},
+    /* 26 */ {2, s_4_26, -1, 1, 0},
+    /* 27 */ {3, s_4_27, 26, 2, 0},
+    /* 28 */ {3, s_4_28, 26, 2, 0},
+    /* 29 */ {2, s_4_29, -1, 1, 0},
+    /* 30 */ {3, s_4_30, 29, 2, 0},
+    /* 31 */ {3, s_4_31, 29, 1, 0},
+    /* 32 */ {2, s_4_32, -1, 1, 0},
+    /* 33 */ {3, s_4_33, 32, 2, 0},
+    /* 34 */ {2, s_4_34, -1, 1, 0},
+    /* 35 */ {3, s_4_35, 34, 2, 0},
+    /* 36 */ {2, s_4_36, -1, 2, 0},
+    /* 37 */ {2, s_4_37, -1, 2, 0},
+    /* 38 */ {2, s_4_38, -1, 2, 0},
+    /* 39 */ {2, s_4_39, -1, 1, 0},
+    /* 40 */ {3, s_4_40, 39, 2, 0},
+    /* 41 */ {3, s_4_41, 39, 2, 0},
+    /* 42 */ {3, s_4_42, -1, 1, 0},
+    /* 43 */ {3, s_4_43, -1, 2, 0},
+    /* 44 */ {2, s_4_44, -1, 1, 0},
+    /* 45 */ {3, s_4_45, 44, 2, 0}
 };
 
-static symbol s_5_0[1] = { 192 };
-static symbol s_5_1[2] = { 201, 192 };
-static symbol s_5_2[2] = { 216, 192 };
-static symbol s_5_3[1] = { 193 };
-static symbol s_5_4[1] = { 197 };
-static symbol s_5_5[2] = { 201, 197 };
-static symbol s_5_6[2] = { 216, 197 };
-static symbol s_5_7[2] = { 193, 200 };
-static symbol s_5_8[2] = { 209, 200 };
-static symbol s_5_9[3] = { 201, 209, 200 };
-static symbol s_5_10[1] = { 201 };
-static symbol s_5_11[2] = { 197, 201 };
-static symbol s_5_12[2] = { 201, 201 };
-static symbol s_5_13[3] = { 193, 205, 201 };
-static symbol s_5_14[3] = { 209, 205, 201 };
-static symbol s_5_15[4] = { 201, 209, 205, 201 };
-static symbol s_5_16[1] = { 202 };
-static symbol s_5_17[2] = { 197, 202 };
-static symbol s_5_18[3] = { 201, 197, 202 };
-static symbol s_5_19[2] = { 201, 202 };
-static symbol s_5_20[2] = { 207, 202 };
-static symbol s_5_21[2] = { 193, 205 };
-static symbol s_5_22[2] = { 197, 205 };
-static symbol s_5_23[3] = { 201, 197, 205 };
-static symbol s_5_24[2] = { 207, 205 };
-static symbol s_5_25[2] = { 209, 205 };
-static symbol s_5_26[3] = { 201, 209, 205 };
-static symbol s_5_27[1] = { 207 };
-static symbol s_5_28[1] = { 209 };
-static symbol s_5_29[2] = { 201, 209 };
-static symbol s_5_30[2] = { 216, 209 };
-static symbol s_5_31[1] = { 213 };
-static symbol s_5_32[2] = { 197, 215 };
-static symbol s_5_33[2] = { 207, 215 };
-static symbol s_5_34[1] = { 216 };
-static symbol s_5_35[1] = { 217 };
+static symbol s_5_0[1] = {192};
+static symbol s_5_1[2] = {201, 192};
+static symbol s_5_2[2] = {216, 192};
+static symbol s_5_3[1] = {193};
+static symbol s_5_4[1] = {197};
+static symbol s_5_5[2] = {201, 197};
+static symbol s_5_6[2] = {216, 197};
+static symbol s_5_7[2] = {193, 200};
+static symbol s_5_8[2] = {209, 200};
+static symbol s_5_9[3] = {201, 209, 200};
+static symbol s_5_10[1] = {201};
+static symbol s_5_11[2] = {197, 201};
+static symbol s_5_12[2] = {201, 201};
+static symbol s_5_13[3] = {193, 205, 201};
+static symbol s_5_14[3] = {209, 205, 201};
+static symbol s_5_15[4] = {201, 209, 205, 201};
+static symbol s_5_16[1] = {202};
+static symbol s_5_17[2] = {197, 202};
+static symbol s_5_18[3] = {201, 197, 202};
+static symbol s_5_19[2] = {201, 202};
+static symbol s_5_20[2] = {207, 202};
+static symbol s_5_21[2] = {193, 205};
+static symbol s_5_22[2] = {197, 205};
+static symbol s_5_23[3] = {201, 197, 205};
+static symbol s_5_24[2] = {207, 205};
+static symbol s_5_25[2] = {209, 205};
+static symbol s_5_26[3] = {201, 209, 205};
+static symbol s_5_27[1] = {207};
+static symbol s_5_28[1] = {209};
+static symbol s_5_29[2] = {201, 209};
+static symbol s_5_30[2] = {216, 209};
+static symbol s_5_31[1] = {213};
+static symbol s_5_32[2] = {197, 215};
+static symbol s_5_33[2] = {207, 215};
+static symbol s_5_34[1] = {216};
+static symbol s_5_35[1] = {217};
 
 static struct among a_5[36] =
 {
-/*  0 */ { 1, s_5_0, -1, 1, 0},
-/*  1 */ { 2, s_5_1, 0, 1, 0},
-/*  2 */ { 2, s_5_2, 0, 1, 0},
-/*  3 */ { 1, s_5_3, -1, 1, 0},
-/*  4 */ { 1, s_5_4, -1, 1, 0},
-/*  5 */ { 2, s_5_5, 4, 1, 0},
-/*  6 */ { 2, s_5_6, 4, 1, 0},
-/*  7 */ { 2, s_5_7, -1, 1, 0},
-/*  8 */ { 2, s_5_8, -1, 1, 0},
-/*  9 */ { 3, s_5_9, 8, 1, 0},
-/* 10 */ { 1, s_5_10, -1, 1, 0},
-/* 11 */ { 2, s_5_11, 10, 1, 0},
-/* 12 */ { 2, s_5_12, 10, 1, 0},
-/* 13 */ { 3, s_5_13, 10, 1, 0},
-/* 14 */ { 3, s_5_14, 10, 1, 0},
-/* 15 */ { 4, s_5_15, 14, 1, 0},
-/* 16 */ { 1, s_5_16, -1, 1, 0},
-/* 17 */ { 2, s_5_17, 16, 1, 0},
-/* 18 */ { 3, s_5_18, 17, 1, 0},
-/* 19 */ { 2, s_5_19, 16, 1, 0},
-/* 20 */ { 2, s_5_20, 16, 1, 0},
-/* 21 */ { 2, s_5_21, -1, 1, 0},
-/* 22 */ { 2, s_5_22, -1, 1, 0},
-/* 23 */ { 3, s_5_23, 22, 1, 0},
-/* 24 */ { 2, s_5_24, -1, 1, 0},
-/* 25 */ { 2, s_5_25, -1, 1, 0},
-/* 26 */ { 3, s_5_26, 25, 1, 0},
-/* 27 */ { 1, s_5_27, -1, 1, 0},
-/* 28 */ { 1, s_5_28, -1, 1, 0},
-/* 29 */ { 2, s_5_29, 28, 1, 0},
-/* 30 */ { 2, s_5_30, 28, 1, 0},
-/* 31 */ { 1, s_5_31, -1, 1, 0},
-/* 32 */ { 2, s_5_32, -1, 1, 0},
-/* 33 */ { 2, s_5_33, -1, 1, 0},
-/* 34 */ { 1, s_5_34, -1, 1, 0},
-/* 35 */ { 1, s_5_35, -1, 1, 0}
+    /*  0 */ {1, s_5_0, -1, 1, 0},
+    /*  1 */ {2, s_5_1, 0, 1, 0},
+    /*  2 */ {2, s_5_2, 0, 1, 0},
+    /*  3 */ {1, s_5_3, -1, 1, 0},
+    /*  4 */ {1, s_5_4, -1, 1, 0},
+    /*  5 */ {2, s_5_5, 4, 1, 0},
+    /*  6 */ {2, s_5_6, 4, 1, 0},
+    /*  7 */ {2, s_5_7, -1, 1, 0},
+    /*  8 */ {2, s_5_8, -1, 1, 0},
+    /*  9 */ {3, s_5_9, 8, 1, 0},
+    /* 10 */ {1, s_5_10, -1, 1, 0},
+    /* 11 */ {2, s_5_11, 10, 1, 0},
+    /* 12 */ {2, s_5_12, 10, 1, 0},
+    /* 13 */ {3, s_5_13, 10, 1, 0},
+    /* 14 */ {3, s_5_14, 10, 1, 0},
+    /* 15 */ {4, s_5_15, 14, 1, 0},
+    /* 16 */ {1, s_5_16, -1, 1, 0},
+    /* 17 */ {2, s_5_17, 16, 1, 0},
+    /* 18 */ {3, s_5_18, 17, 1, 0},
+    /* 19 */ {2, s_5_19, 16, 1, 0},
+    /* 20 */ {2, s_5_20, 16, 1, 0},
+    /* 21 */ {2, s_5_21, -1, 1, 0},
+    /* 22 */ {2, s_5_22, -1, 1, 0},
+    /* 23 */ {3, s_5_23, 22, 1, 0},
+    /* 24 */ {2, s_5_24, -1, 1, 0},
+    /* 25 */ {2, s_5_25, -1, 1, 0},
+    /* 26 */ {3, s_5_26, 25, 1, 0},
+    /* 27 */ {1, s_5_27, -1, 1, 0},
+    /* 28 */ {1, s_5_28, -1, 1, 0},
+    /* 29 */ {2, s_5_29, 28, 1, 0},
+    /* 30 */ {2, s_5_30, 28, 1, 0},
+    /* 31 */ {1, s_5_31, -1, 1, 0},
+    /* 32 */ {2, s_5_32, -1, 1, 0},
+    /* 33 */ {2, s_5_33, -1, 1, 0},
+    /* 34 */ {1, s_5_34, -1, 1, 0},
+    /* 35 */ {1, s_5_35, -1, 1, 0}
 };
 
-static symbol s_6_0[3] = { 207, 211, 212 };
-static symbol s_6_1[4] = { 207, 211, 212, 216 };
+static symbol s_6_0[3] = {207, 211, 212};
+static symbol s_6_1[4] = {207, 211, 212, 216};
 
 static struct among a_6[2] =
 {
-/*  0 */ { 3, s_6_0, -1, 1, 0},
-/*  1 */ { 4, s_6_1, -1, 1, 0}
+    /*  0 */ {3, s_6_0, -1, 1, 0},
+    /*  1 */ {4, s_6_1, -1, 1, 0}
 };
 
-static symbol s_7_0[4] = { 197, 202, 219, 197 };
-static symbol s_7_1[1] = { 206 };
-static symbol s_7_2[1] = { 216 };
-static symbol s_7_3[3] = { 197, 202, 219 };
+static symbol s_7_0[4] = {197, 202, 219, 197};
+static symbol s_7_1[1] = {206};
+static symbol s_7_2[1] = {216};
+static symbol s_7_3[3] = {197, 202, 219};
 
 static struct among a_7[4] =
 {
-/*  0 */ { 4, s_7_0, -1, 1, 0},
-/*  1 */ { 1, s_7_1, -1, 2, 0},
-/*  2 */ { 1, s_7_2, -1, 3, 0},
-/*  3 */ { 3, s_7_3, -1, 1, 0}
+    /*  0 */ {4, s_7_0, -1, 1, 0},
+    /*  1 */ {1, s_7_1, -1, 2, 0},
+    /*  2 */ {1, s_7_2, -1, 3, 0},
+    /*  3 */ {3, s_7_3, -1, 1, 0}
 };
 
-static unsigned char g_v[] = { 35, 130, 34, 18 };
-
-static symbol s_0[] = { 193 };
-static symbol s_1[] = { 209 };
-static symbol s_2[] = { 193 };
-static symbol s_3[] = { 209 };
-static symbol s_4[] = { 193 };
-static symbol s_5[] = { 209 };
-static symbol s_6[] = { 206 };
-static symbol s_7[] = { 206 };
-static symbol s_8[] = { 206 };
-static symbol s_9[] = { 201 };
-
-static int r_mark_regions(struct SN_env * z) {
-    z->I[0] = z->l;
-    z->I[1] = z->l;
-    {   int c = z->c; /* do, line 100 */
-        while(1) { /* gopast, line 101 */
-            if (!(in_grouping(z, g_v, 192, 220))) goto lab1;
-            break;
-        lab1:
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        z->I[0] = z->c; /* setmark pV, line 101 */
-        while(1) { /* gopast, line 101 */
-            if (!(out_grouping(z, g_v, 192, 220))) goto lab2;
-            break;
-        lab2:
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        while(1) { /* gopast, line 102 */
-            if (!(in_grouping(z, g_v, 192, 220))) goto lab3;
-            break;
-        lab3:
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        while(1) { /* gopast, line 102 */
-            if (!(out_grouping(z, g_v, 192, 220))) goto lab4;
-            break;
-        lab4:
-            if (z->c >= z->l) goto lab0;
-            z->c++;
-        }
-        z->I[1] = z->c; /* setmark p2, line 102 */
-    lab0:
-        z->c = c;
-    }
-    return 1;
+static unsigned char g_v[] = {35, 130, 34, 18};
+
+static symbol s_0[] = {193};
+static symbol s_1[] = {209};
+static symbol s_2[] = {193};
+static symbol s_3[] = {209};
+static symbol s_4[] = {193};
+static symbol s_5[] = {209};
+static symbol s_6[] = {206};
+static symbol s_7[] = {206};
+static symbol s_8[] = {206};
+static symbol s_9[] = {201};
+
+static int
+r_mark_regions(struct SN_env * z)
+{
+   z->I[0] = z->l;
+   z->I[1] = z->l;
+   {
+       int         c = z->c;   /* do, line 100 */
+
+       while (1)
+       {                       /* gopast, line 101 */
+           if (!(in_grouping(z, g_v, 192, 220)))
+               goto lab1;
+           break;
+   lab1:
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       z->I[0] = z->c;         /* setmark pV, line 101 */
+       while (1)
+       {                       /* gopast, line 101 */
+           if (!(out_grouping(z, g_v, 192, 220)))
+               goto lab2;
+           break;
+   lab2:
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       while (1)
+       {                       /* gopast, line 102 */
+           if (!(in_grouping(z, g_v, 192, 220)))
+               goto lab3;
+           break;
+   lab3:
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       while (1)
+       {                       /* gopast, line 102 */
+           if (!(out_grouping(z, g_v, 192, 220)))
+               goto lab4;
+           break;
+   lab4:
+           if (z->c >= z->l)
+               goto lab0;
+           z->c++;
+       }
+       z->I[1] = z->c;         /* setmark p2, line 102 */
+lab0:
+       z->c = c;
+   }
+   return 1;
 }
 
-static int r_R2(struct SN_env * z) {
-    if (!(z->I[1] <= z->c)) return 0;
-    return 1;
+static int
+r_R2(struct SN_env * z)
+{
+   if (!(z->I[1] <= z->c))
+       return 0;
+   return 1;
 }
 
-static int r_perfective_gerund(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 111 */
-    among_var = find_among_b(z, a_0, 9); /* substring, line 111 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 111 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            {   int m = z->l - z->c; /* or, line 115 */
-                if (!(eq_s_b(z, 1, s_0))) goto lab1;
-                goto lab0;
-            lab1:
-                z->c = z->l - m;
-                if (!(eq_s_b(z, 1, s_1))) return 0;
-            }
-        lab0:
-            slice_del(z); /* delete, line 115 */
-            break;
-        case 2:
-            slice_del(z); /* delete, line 122 */
-            break;
-    }
-    return 1;
+static int
+r_perfective_gerund(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 111 */
+   among_var = find_among_b(z, a_0, 9);        /* substring, line 111 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 111 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           {
+               int         m = z->l - z->c;    /* or, line 115 */
+
+               if (!(eq_s_b(z, 1, s_0)))
+                   goto lab1;
+               goto lab0;
+       lab1:
+               z->c = z->l - m;
+               if (!(eq_s_b(z, 1, s_1)))
+                   return 0;
+           }
+   lab0:
+           slice_del(z);       /* delete, line 115 */
+           break;
+       case 2:
+           slice_del(z);       /* delete, line 122 */
+           break;
+   }
+   return 1;
 }
 
-static int r_adjective(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 127 */
-    among_var = find_among_b(z, a_1, 26); /* substring, line 127 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 127 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_del(z); /* delete, line 136 */
-            break;
-    }
-    return 1;
+static int
+r_adjective(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 127 */
+   among_var = find_among_b(z, a_1, 26);       /* substring, line 127 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 127 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_del(z);       /* delete, line 136 */
+           break;
+   }
+   return 1;
 }
 
-static int r_adjectival(struct SN_env * z) {
-    int among_var;
-    if (!r_adjective(z)) return 0; /* call adjective, line 141 */
-    {   int m = z->l - z->c; /* try, line 148 */
-        z->ket = z->c; /* [, line 149 */
-        among_var = find_among_b(z, a_2, 8); /* substring, line 149 */
-        if (!(among_var)) { z->c = z->l - m; goto lab0; }
-        z->bra = z->c; /* ], line 149 */
-        switch(among_var) {
-            case 0: { z->c = z->l - m; goto lab0; }
-            case 1:
-                {   int m = z->l - z->c; /* or, line 154 */
-                    if (!(eq_s_b(z, 1, s_2))) goto lab2;
-                    goto lab1;
-                lab2:
-                    z->c = z->l - m;
-                    if (!(eq_s_b(z, 1, s_3))) { z->c = z->l - m; goto lab0; }
-                }
-            lab1:
-                slice_del(z); /* delete, line 154 */
-                break;
-            case 2:
-                slice_del(z); /* delete, line 161 */
-                break;
-        }
-    lab0:
-        ;
-    }
-    return 1;
+static int
+r_adjectival(struct SN_env * z)
+{
+   int         among_var;
+
+   if (!r_adjective(z))
+       return 0;               /* call adjective, line 141 */
+   {
+       int         m = z->l - z->c;    /* try, line 148 */
+
+       z->ket = z->c;          /* [, line 149 */
+       among_var = find_among_b(z, a_2, 8);    /* substring, line 149 */
+       if (!(among_var))
+       {
+           z->c = z->l - m;
+           goto lab0;
+       }
+       z->bra = z->c;          /* ], line 149 */
+       switch (among_var)
+       {
+           case 0:
+               {
+                   z->c = z->l - m;
+                   goto lab0;
+               }
+           case 1:
+               {
+                   int         m = z->l - z->c;        /* or, line 154 */
+
+                   if (!(eq_s_b(z, 1, s_2)))
+                       goto lab2;
+                   goto lab1;
+           lab2:
+                   z->c = z->l - m;
+                   if (!(eq_s_b(z, 1, s_3)))
+                   {
+                       z->c = z->l - m;
+                       goto lab0;
+                   }
+               }
+       lab1:
+               slice_del(z);   /* delete, line 154 */
+               break;
+           case 2:
+               slice_del(z);   /* delete, line 161 */
+               break;
+       }
+lab0:
+       ;
+   }
+   return 1;
 }
 
-static int r_reflexive(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 168 */
-    among_var = find_among_b(z, a_3, 2); /* substring, line 168 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 168 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_del(z); /* delete, line 171 */
-            break;
-    }
-    return 1;
+static int
+r_reflexive(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 168 */
+   among_var = find_among_b(z, a_3, 2);        /* substring, line 168 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 168 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_del(z);       /* delete, line 171 */
+           break;
+   }
+   return 1;
 }
 
-static int r_verb(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 176 */
-    among_var = find_among_b(z, a_4, 46); /* substring, line 176 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 176 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            {   int m = z->l - z->c; /* or, line 182 */
-                if (!(eq_s_b(z, 1, s_4))) goto lab1;
-                goto lab0;
-            lab1:
-                z->c = z->l - m;
-                if (!(eq_s_b(z, 1, s_5))) return 0;
-            }
-        lab0:
-            slice_del(z); /* delete, line 182 */
-            break;
-        case 2:
-            slice_del(z); /* delete, line 190 */
-            break;
-    }
-    return 1;
+static int
+r_verb(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 176 */
+   among_var = find_among_b(z, a_4, 46);       /* substring, line 176 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 176 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           {
+               int         m = z->l - z->c;    /* or, line 182 */
+
+               if (!(eq_s_b(z, 1, s_4)))
+                   goto lab1;
+               goto lab0;
+       lab1:
+               z->c = z->l - m;
+               if (!(eq_s_b(z, 1, s_5)))
+                   return 0;
+           }
+   lab0:
+           slice_del(z);       /* delete, line 182 */
+           break;
+       case 2:
+           slice_del(z);       /* delete, line 190 */
+           break;
+   }
+   return 1;
 }
 
-static int r_noun(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 199 */
-    among_var = find_among_b(z, a_5, 36); /* substring, line 199 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 199 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_del(z); /* delete, line 206 */
-            break;
-    }
-    return 1;
+static int
+r_noun(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 199 */
+   among_var = find_among_b(z, a_5, 36);       /* substring, line 199 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 199 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_del(z);       /* delete, line 206 */
+           break;
+   }
+   return 1;
 }
 
-static int r_derivational(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 215 */
-    among_var = find_among_b(z, a_6, 2); /* substring, line 215 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 215 */
-    if (!r_R2(z)) return 0; /* call R2, line 215 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_del(z); /* delete, line 218 */
-            break;
-    }
-    return 1;
+static int
+r_derivational(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 215 */
+   among_var = find_among_b(z, a_6, 2);        /* substring, line 215 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 215 */
+   if (!r_R2(z))
+       return 0;               /* call R2, line 215 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_del(z);       /* delete, line 218 */
+           break;
+   }
+   return 1;
 }
 
-static int r_tidy_up(struct SN_env * z) {
-    int among_var;
-    z->ket = z->c; /* [, line 223 */
-    among_var = find_among_b(z, a_7, 4); /* substring, line 223 */
-    if (!(among_var)) return 0;
-    z->bra = z->c; /* ], line 223 */
-    switch(among_var) {
-        case 0: return 0;
-        case 1:
-            slice_del(z); /* delete, line 227 */
-            z->ket = z->c; /* [, line 228 */
-            if (!(eq_s_b(z, 1, s_6))) return 0;
-            z->bra = z->c; /* ], line 228 */
-            if (!(eq_s_b(z, 1, s_7))) return 0;
-            slice_del(z); /* delete, line 228 */
-            break;
-        case 2:
-            if (!(eq_s_b(z, 1, s_8))) return 0;
-            slice_del(z); /* delete, line 231 */
-            break;
-        case 3:
-            slice_del(z); /* delete, line 233 */
-            break;
-    }
-    return 1;
+static int
+r_tidy_up(struct SN_env * z)
+{
+   int         among_var;
+
+   z->ket = z->c;              /* [, line 223 */
+   among_var = find_among_b(z, a_7, 4);        /* substring, line 223 */
+   if (!(among_var))
+       return 0;
+   z->bra = z->c;              /* ], line 223 */
+   switch (among_var)
+   {
+       case 0:
+           return 0;
+       case 1:
+           slice_del(z);       /* delete, line 227 */
+           z->ket = z->c;      /* [, line 228 */
+           if (!(eq_s_b(z, 1, s_6)))
+               return 0;
+           z->bra = z->c;      /* ], line 228 */
+           if (!(eq_s_b(z, 1, s_7)))
+               return 0;
+           slice_del(z);       /* delete, line 228 */
+           break;
+       case 2:
+           if (!(eq_s_b(z, 1, s_8)))
+               return 0;
+           slice_del(z);       /* delete, line 231 */
+           break;
+       case 3:
+           slice_del(z);       /* delete, line 233 */
+           break;
+   }
+   return 1;
 }
 
-extern int russian_stem(struct SN_env * z) {
-    {   int c = z->c; /* do, line 240 */
-        if (!r_mark_regions(z)) goto lab0; /* call mark_regions, line 240 */
-    lab0:
-        z->c = c;
-    }
-    z->lb = z->c; z->c = z->l; /* backwards, line 241 */
-
-    {   int m = z->l - z->c; /* setlimit, line 241 */
-        int m3;
-        if (z->c < z->I[0]) return 0;
-        z->c = z->I[0]; /* tomark, line 241 */
-        m3 = z->lb; z->lb = z->c;
-        z->c = z->l - m;
-        {   int m = z->l - z->c; /* do, line 242 */
-            {   int m = z->l - z->c; /* or, line 243 */
-                if (!r_perfective_gerund(z)) goto lab3; /* call perfective_gerund, line 243 */
-                goto lab2;
-            lab3:
-                z->c = z->l - m;
-                {   int m = z->l - z->c; /* try, line 244 */
-                    if (!r_reflexive(z)) { z->c = z->l - m; goto lab4; } /* call reflexive, line 244 */
-                lab4:
-                    ;
-                }
-                {   int m = z->l - z->c; /* or, line 245 */
-                    if (!r_adjectival(z)) goto lab6; /* call adjectival, line 245 */
-                    goto lab5;
-                lab6:
-                    z->c = z->l - m;
-                    if (!r_verb(z)) goto lab7; /* call verb, line 245 */
-                    goto lab5;
-                lab7:
-                    z->c = z->l - m;
-                    if (!r_noun(z)) goto lab1; /* call noun, line 245 */
-                }
-            lab5:
-                ;
-            }
-        lab2:
-        lab1:
-            z->c = z->l - m;
-        }
-        {   int m = z->l - z->c; /* try, line 248 */
-            z->ket = z->c; /* [, line 248 */
-            if (!(eq_s_b(z, 1, s_9))) { z->c = z->l - m; goto lab8; }
-            z->bra = z->c; /* ], line 248 */
-            slice_del(z); /* delete, line 248 */
-        lab8:
-            ;
-        }
-        {   int m = z->l - z->c; /* do, line 251 */
-            if (!r_derivational(z)) goto lab9; /* call derivational, line 251 */
-        lab9:
-            z->c = z->l - m;
-        }
-        {   int m = z->l - z->c; /* do, line 252 */
-            if (!r_tidy_up(z)) goto lab10; /* call tidy_up, line 252 */
-        lab10:
-            z->c = z->l - m;
-        }
-        z->lb = m3;
-    }
-    z->c = z->lb;
-    return 1;
+extern int
+russian_stem(struct SN_env * z)
+{
+   {
+       int         c = z->c;   /* do, line 240 */
+
+       if (!r_mark_regions(z))
+           goto lab0;          /* call mark_regions, line 240 */
+lab0:
+       z->c = c;
+   }
+   z->lb = z->c;
+   z->c = z->l;                /* backwards, line 241 */
+
+   {
+       int         m = z->l - z->c;    /* setlimit, line 241 */
+       int         m3;
+
+       if (z->c < z->I[0])
+           return 0;
+       z->c = z->I[0];         /* tomark, line 241 */
+       m3 = z->lb;
+       z->lb = z->c;
+       z->c = z->l - m;
+       {
+           int         m = z->l - z->c;        /* do, line 242 */
+
+           {
+               int         m = z->l - z->c;    /* or, line 243 */
+
+               if (!r_perfective_gerund(z))
+                   goto lab3;  /* call perfective_gerund, line 243 */
+               goto lab2;
+       lab3:
+               z->c = z->l - m;
+               {
+                   int         m = z->l - z->c;        /* try, line 244 */
+
+                   if (!r_reflexive(z))
+                   {
+                       z->c = z->l - m;
+                       goto lab4;
+                   }           /* call reflexive, line 244 */
+           lab4:
+                   ;
+               }
+               {
+                   int         m = z->l - z->c;        /* or, line 245 */
+
+                   if (!r_adjectival(z))
+                       goto lab6;      /* call adjectival, line 245 */
+                   goto lab5;
+           lab6:
+                   z->c = z->l - m;
+                   if (!r_verb(z))
+                       goto lab7;      /* call verb, line 245 */
+                   goto lab5;
+           lab7:
+                   z->c = z->l - m;
+                   if (!r_noun(z))
+                       goto lab1;      /* call noun, line 245 */
+               }
+       lab5:
+               ;
+           }
+   lab2:
+   lab1:
+           z->c = z->l - m;
+       }
+       {
+           int         m = z->l - z->c;        /* try, line 248 */
+
+           z->ket = z->c;      /* [, line 248 */
+           if (!(eq_s_b(z, 1, s_9)))
+           {
+               z->c = z->l - m;
+               goto lab8;
+           }
+           z->bra = z->c;      /* ], line 248 */
+           slice_del(z);       /* delete, line 248 */
+   lab8:
+           ;
+       }
+       {
+           int         m = z->l - z->c;        /* do, line 251 */
+
+           if (!r_derivational(z))
+               goto lab9;      /* call derivational, line 251 */
+   lab9:
+           z->c = z->l - m;
+       }
+       {
+           int         m = z->l - z->c;        /* do, line 252 */
+
+           if (!r_tidy_up(z))
+               goto lab10;     /* call tidy_up, line 252 */
+   lab10:
+           z->c = z->l - m;
+       }
+       z->lb = m3;
+   }
+   z->c = z->lb;
+   return 1;
 }
 
-extern struct SN_env * russian_create_env(void) { return SN_create_env(0, 2, 0); }
-
-extern void russian_close_env(struct SN_env * z) { SN_close_env(z); }
+extern struct SN_env *russian_create_env(void)
+{
+   return SN_create_env(0, 2, 0);
+}
 
+extern void russian_close_env(struct SN_env * z)
+{
+   SN_close_env(z);
+}
index 7dc26d45c82d5d6c803ff1e85b28d780b9b5b2ad..69369e295b9a32a0a829793e354a0f579792ede4 100644 (file)
@@ -1,8 +1,7 @@
 
 /* This file was generated automatically by the Snowball to ANSI C compiler */
 
-extern struct SN_env * russian_create_env(void);
+extern struct SN_env *russian_create_env(void);
 extern void russian_close_env(struct SN_env * z);
 
-extern int russian_stem(struct SN_env * z);
-
+extern int russian_stem(struct SN_env * z);
index 5dc752445b5d6d53f642bf4bf98926fc12733498..374d2c11bb741d913f68f7bb366734c8fa2df697 100644 (file)
 
 #define CREATE_SIZE 1
 
-extern symbol * create_s(void)
-{   symbol * p = (symbol *) (HEAD + (char *) malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol)));
-    CAPACITY(p) = CREATE_SIZE;
-    SET_SIZE(p, CREATE_SIZE);
-    return p;
+extern symbol *
+create_s(void)
+{
+   symbol     *p = (symbol *) (HEAD + (char *) malloc(HEAD + (CREATE_SIZE + 1) * sizeof(symbol)));
+
+   CAPACITY(p) = CREATE_SIZE;
+   SET_SIZE(p, CREATE_SIZE);
+   return p;
 }
 
-extern void lose_s(symbol * p) { free((char *) p - HEAD); }
+extern void lose_s(symbol * p)
+{
+   free((char *) p - HEAD);
+}
 
-extern int in_grouping(struct SN_env * z, unsigned char * s, int min, int max)
-{   if (z->c >= z->l) return 0;
-    {   int ch = z->p[z->c];
-        if
-        (ch > max || (ch -= min) < 0 ||
-         (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
-    }
-    z->c++; return 1;
+extern int
+in_grouping(struct SN_env * z, unsigned char *s, int min, int max)
+{
+   if (z->c >= z->l)
+       return 0;
+   {
+       int         ch = z->p[z->c];
+
+       if
+           (ch > max || (ch -= min) < 0 ||
+            (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)
+           return 0;
+   }
+   z->c++;
+   return 1;
 }
 
-extern int in_grouping_b(struct SN_env * z, unsigned char * s, int min, int max)
-{   if (z->c <= z->lb) return 0;
-    {   int ch = z->p[z->c - 1];
-        if
-        (ch > max || (ch -= min) < 0 ||
-         (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
-    }
-    z->c--; return 1;
+extern int
+in_grouping_b(struct SN_env * z, unsigned char *s, int min, int max)
+{
+   if (z->c <= z->lb)
+       return 0;
+   {
+       int         ch = z->p[z->c - 1];
+
+       if
+           (ch > max || (ch -= min) < 0 ||
+            (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0)
+           return 0;
+   }
+   z->c--;
+   return 1;
 }
 
-extern int out_grouping(struct SN_env * z, unsigned char * s, int min, int max)
-{   if (z->c >= z->l) return 0;
-    {   int ch = z->p[z->c];
-        unless
-        (ch > max || (ch -= min) < 0 ||
-         (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
-    }
-    z->c++; return 1;
+extern int
+out_grouping(struct SN_env * z, unsigned char *s, int min, int max)
+{
+   if (z->c >= z->l)
+       return 0;
+   {
+       int         ch = z->p[z->c];
+
+       unless
+           (ch > max || (ch -= min) < 0 ||
+            (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
+   }
+   z->c++;
+   return 1;
 }
 
-extern int out_grouping_b(struct SN_env * z, unsigned char * s, int min, int max)
-{   if (z->c <= z->lb) return 0;
-    {   int ch = z->p[z->c - 1];
-        unless
-        (ch > max || (ch -= min) < 0 ||
-         (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
-    }
-    z->c--; return 1;
+extern int
+out_grouping_b(struct SN_env * z, unsigned char *s, int min, int max)
+{
+   if (z->c <= z->lb)
+       return 0;
+   {
+       int         ch = z->p[z->c - 1];
+
+       unless
+           (ch > max || (ch -= min) < 0 ||
+            (s[ch >> 3] & (0X1 << (ch & 0X7))) == 0) return 0;
+   }
+   z->c--;
+   return 1;
 }
 
 
-extern int in_range(struct SN_env * z, int min, int max)
-{   if (z->c >= z->l) return 0;
-    {   int ch = z->p[z->c];
-        if
-        (ch > max || ch < min) return 0;
-    }
-    z->c++; return 1;
+extern int
+in_range(struct SN_env * z, int min, int max)
+{
+   if (z->c >= z->l)
+       return 0;
+   {
+       int         ch = z->p[z->c];
+
+       if
+           (ch > max || ch < min)
+           return 0;
+   }
+   z->c++;
+   return 1;
 }
 
-extern int in_range_b(struct SN_env * z, int min, int max)
-{   if (z->c <= z->lb) return 0;
-    {   int ch = z->p[z->c - 1];
-        if
-        (ch > max || ch < min) return 0;
-    }
-    z->c--; return 1;
+extern int
+in_range_b(struct SN_env * z, int min, int max)
+{
+   if (z->c <= z->lb)
+       return 0;
+   {
+       int         ch = z->p[z->c - 1];
+
+       if
+           (ch > max || ch < min)
+           return 0;
+   }
+   z->c--;
+   return 1;
 }
 
-extern int out_range(struct SN_env * z, int min, int max)
-{   if (z->c >= z->l) return 0;
-    {   int ch = z->p[z->c];
-        unless
-        (ch > max || ch < min) return 0;
-    }
-    z->c++; return 1;
+extern int
+out_range(struct SN_env * z, int min, int max)
+{
+   if (z->c >= z->l)
+       return 0;
+   {
+       int         ch = z->p[z->c];
+
+       unless
+           (ch > max || ch < min) return 0;
+   }
+   z->c++;
+   return 1;
 }
 
-extern int out_range_b(struct SN_env * z, int min, int max)
-{   if (z->c <= z->lb) return 0;
-    {   int ch = z->p[z->c - 1];
-        unless
-        (ch > max || ch < min) return 0;
-    }
-    z->c--; return 1;
+extern int
+out_range_b(struct SN_env * z, int min, int max)
+{
+   if (z->c <= z->lb)
+       return 0;
+   {
+       int         ch = z->p[z->c - 1];
+
+       unless
+           (ch > max || ch < min) return 0;
+   }
+   z->c--;
+   return 1;
 }
 
-extern int eq_s(struct SN_env * z, int s_size, symbol * s)
-{   if (z->l - z->c < s_size ||
-        memcmp(z->p + z->c, s, s_size * sizeof(symbol)) != 0) return 0;
-    z->c += s_size; return 1;
+extern int
+eq_s(struct SN_env * z, int s_size, symbol * s)
+{
+   if (z->l - z->c < s_size ||
+       memcmp(z->p + z->c, s, s_size * sizeof(symbol)) != 0)
+       return 0;
+   z->c += s_size;
+   return 1;
 }
 
-extern int eq_s_b(struct SN_env * z, int s_size, symbol * s)
-{   if (z->c - z->lb < s_size ||
-        memcmp(z->p + z->c - s_size, s, s_size * sizeof(symbol)) != 0) return 0;
-    z->c -= s_size; return 1;
+extern int
+eq_s_b(struct SN_env * z, int s_size, symbol * s)
+{
+   if (z->c - z->lb < s_size ||
+       memcmp(z->p + z->c - s_size, s, s_size * sizeof(symbol)) != 0)
+       return 0;
+   z->c -= s_size;
+   return 1;
 }
 
-extern int eq_v(struct SN_env * z, symbol * p)
-{   return eq_s(z, SIZE(p), p);
+extern int
+eq_v(struct SN_env * z, symbol * p)
+{
+   return eq_s(z, SIZE(p), p);
 }
 
-extern int eq_v_b(struct SN_env * z, symbol * p)
-{   return eq_s_b(z, SIZE(p), p);
+extern int
+eq_v_b(struct SN_env * z, symbol * p)
+{
+   return eq_s_b(z, SIZE(p), p);
 }
 
-extern int find_among(struct SN_env * z, struct among * v, int v_size)
+extern int
+find_among(struct SN_env * z, struct among * v, int v_size)
 {
-    int i = 0;
-    int j = v_size;
-
-    int c = z->c; int l = z->l;
-    symbol * q = z->p + c;
-
-    struct among * w;
-
-    int common_i = 0;
-    int common_j = 0;
-
-    int first_key_inspected = 0;
-
-    while(1)
-    {   int k = i + ((j - i) >> 1);
-        int diff = 0;
-        int common = common_i < common_j ? common_i : common_j; /* smaller */
-        w = v + k;
-        {   int i; for (i = common; i < w->s_size; i++)
-            {   if (c + common == l) { diff = -1; break; }
-                diff = q[common] - w->s[i];
-                if (diff != 0) break;
-                common++;
-            }
-        }
-        if (diff < 0) { j = k; common_j = common; }
-                 else { i = k; common_i = common; }
-        if (j - i <= 1)
-        {   if (i > 0) break; /* v->s has been inspected */
-            if (j == i) break; /* only one item in v */
-
-            /* - but now we need to go round once more to get
-               v->s inspected. This looks messy, but is actually
-               the optimal approach.  */
-
-            if (first_key_inspected) break;
-            first_key_inspected = 1;
-        }
-    }
-    while(1)
-    {   w = v + i;
-        if (common_i >= w->s_size)
-        {   z->c = c + w->s_size;
-            if (w->function == 0) return w->result;
-            {   int res = w->function(z);
-                z->c = c + w->s_size;
-                if (res) return w->result;
-            }
-        }
-        i = w->substring_i;
-        if (i < 0) return 0;
-    }
+   int         i = 0;
+   int         j = v_size;
+
+   int         c = z->c;
+   int         l = z->l;
+   symbol     *q = z->p + c;
+
+   struct among *w;
+
+   int         common_i = 0;
+   int         common_j = 0;
+
+   int         first_key_inspected = 0;
+
+   while (1)
+   {
+       int         k = i + ((j - i) >> 1);
+       int         diff = 0;
+       int         common = common_i < common_j ? common_i : common_j; /* smaller */
+
+       w = v + k;
+       {
+           int         i;
+
+           for (i = common; i < w->s_size; i++)
+           {
+               if (c + common == l)
+               {
+                   diff = -1;
+                   break;
+               }
+               diff = q[common] - w->s[i];
+               if (diff != 0)
+                   break;
+               common++;
+           }
+       }
+       if (diff < 0)
+       {
+           j = k;
+           common_j = common;
+       }
+       else
+       {
+           i = k;
+           common_i = common;
+       }
+       if (j - i <= 1)
+       {
+           if (i > 0)
+               break;          /* v->s has been inspected */
+           if (j == i)
+               break;          /* only one item in v */
+
+           /*
+            * - but now we need to go round once more to get v->s
+            * inspected. This looks messy, but is actually the optimal
+            * approach.
+            */
+
+           if (first_key_inspected)
+               break;
+           first_key_inspected = 1;
+       }
+   }
+   while (1)
+   {
+       w = v + i;
+       if (common_i >= w->s_size)
+       {
+           z->c = c + w->s_size;
+           if (w->function == 0)
+               return w->result;
+           {
+               int         res = w->function(z);
+
+               z->c = c + w->s_size;
+               if (res)
+                   return w->result;
+           }
+       }
+       i = w->substring_i;
+       if (i < 0)
+           return 0;
+   }
 }
 
 /* find_among_b is for backwards processing. Same comments apply */
 
-extern int find_among_b(struct SN_env * z, struct among * v, int v_size)
+extern int
+find_among_b(struct SN_env * z, struct among * v, int v_size)
 {
-    int i = 0;
-    int j = v_size;
-
-    int c = z->c; int lb = z->lb;
-    symbol * q = z->p + c - 1;
-
-    struct among * w;
-
-    int common_i = 0;
-    int common_j = 0;
-
-    int first_key_inspected = 0;
-
-    while(1)
-    {   int k = i + ((j - i) >> 1);
-        int diff = 0;
-        int common = common_i < common_j ? common_i : common_j;
-        w = v + k;
-        {   int i; for (i = w->s_size - 1 - common; i >= 0; i--)
-            {   if (c - common == lb) { diff = -1; break; }
-                diff = q[- common] - w->s[i];
-                if (diff != 0) break;
-                common++;
-            }
-        }
-        if (diff < 0) { j = k; common_j = common; }
-                 else { i = k; common_i = common; }
-        if (j - i <= 1)
-        {   if (i > 0) break;
-            if (j == i) break;
-            if (first_key_inspected) break;
-            first_key_inspected = 1;
-        }
-    }
-    while(1)
-    {   w = v + i;
-        if (common_i >= w->s_size)
-        {   z->c = c - w->s_size;
-            if (w->function == 0) return w->result;
-            {   int res = w->function(z);
-                z->c = c - w->s_size;
-                if (res) return w->result;
-            }
-        }
-        i = w->substring_i;
-        if (i < 0) return 0;
-    }
+   int         i = 0;
+   int         j = v_size;
+
+   int         c = z->c;
+   int         lb = z->lb;
+   symbol     *q = z->p + c - 1;
+
+   struct among *w;
+
+   int         common_i = 0;
+   int         common_j = 0;
+
+   int         first_key_inspected = 0;
+
+   while (1)
+   {
+       int         k = i + ((j - i) >> 1);
+       int         diff = 0;
+       int         common = common_i < common_j ? common_i : common_j;
+
+       w = v + k;
+       {
+           int         i;
+
+           for (i = w->s_size - 1 - common; i >= 0; i--)
+           {
+               if (c - common == lb)
+               {
+                   diff = -1;
+                   break;
+               }
+               diff = q[-common] - w->s[i];
+               if (diff != 0)
+                   break;
+               common++;
+           }
+       }
+       if (diff < 0)
+       {
+           j = k;
+           common_j = common;
+       }
+       else
+       {
+           i = k;
+           common_i = common;
+       }
+       if (j - i <= 1)
+       {
+           if (i > 0)
+               break;
+           if (j == i)
+               break;
+           if (first_key_inspected)
+               break;
+           first_key_inspected = 1;
+       }
+   }
+   while (1)
+   {
+       w = v + i;
+       if (common_i >= w->s_size)
+       {
+           z->c = c - w->s_size;
+           if (w->function == 0)
+               return w->result;
+           {
+               int         res = w->function(z);
+
+               z->c = c - w->s_size;
+               if (res)
+                   return w->result;
+           }
+       }
+       i = w->substring_i;
+       if (i < 0)
+           return 0;
+   }
 }
 
 
-extern symbol * increase_size(symbol * p, int n)
-{   int new_size = n + 20;
-    symbol * q = (symbol *) (HEAD + (char *) malloc(HEAD + (new_size + 1) * sizeof(symbol)));
-    CAPACITY(q) = new_size;
-    memmove(q, p, CAPACITY(p) * sizeof(symbol)); lose_s(p); return q;
+extern symbol *
+increase_size(symbol * p, int n)
+{
+   int         new_size = n + 20;
+   symbol     *q = (symbol *) (HEAD + (char *) malloc(HEAD + (new_size + 1) * sizeof(symbol)));
+
+   CAPACITY(q) = new_size;
+   memmove(q, p, CAPACITY(p) * sizeof(symbol));
+   lose_s(p);
+   return q;
 }
 
 /* to replace symbols between c_bra and c_ket in z->p by the
    s_size symbols at s
 */
 
-extern int replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s)
-{   int adjustment = s_size - (c_ket - c_bra);
-    int len = SIZE(z->p);
-    if (adjustment != 0)
-    {   if (adjustment + len > CAPACITY(z->p)) z->p = increase_size(z->p, adjustment + len);
-        memmove(z->p + c_ket + adjustment, z->p + c_ket, (len - c_ket) * sizeof(symbol));
-        SET_SIZE(z->p, adjustment + len);
-        z->l += adjustment;
-        if (z->c >= c_ket) z->c += adjustment; else
-            if (z->c > c_bra) z->c = c_bra;
-    }
-    unless (s_size == 0) memmove(z->p + c_bra, s, s_size * sizeof(symbol));
-    return adjustment;
+extern int
+replace_s(struct SN_env * z, int c_bra, int c_ket, int s_size, const symbol * s)
+{
+   int         adjustment = s_size - (c_ket - c_bra);
+   int         len = SIZE(z->p);
+
+   if (adjustment != 0)
+   {
+       if (adjustment + len > CAPACITY(z->p))
+           z->p = increase_size(z->p, adjustment + len);
+       memmove(z->p + c_ket + adjustment, z->p + c_ket, (len - c_ket) * sizeof(symbol));
+       SET_SIZE(z->p, adjustment + len);
+       z->l += adjustment;
+       if (z->c >= c_ket)
+           z->c += adjustment;
+       else if (z->c > c_bra)
+           z->c = c_bra;
+   }
+   unless(s_size == 0) memmove(z->p + c_bra, s, s_size * sizeof(symbol));
+   return adjustment;
 }
 
-static void slice_check(struct SN_env * z)
+static void
+slice_check(struct SN_env * z)
 {
-    if (!(0 <= z->bra &&
-          z->bra <= z->ket &&
-          z->ket <= z->l &&
-          z->l <= SIZE(z->p)))   /* this line could be removed */
-    {
-        fprintf(stderr, "faulty slice operation:\n");
-        debug(z, -1, 0);
-        exit(1);
-    }
+   if (!(0 <= z->bra &&
+         z->bra <= z->ket &&
+         z->ket <= z->l &&
+         z->l <= SIZE(z->p)))  /* this line could be removed */
+   {
+       fprintf(stderr, "faulty slice operation:\n");
+       debug(z, -1, 0);
+       exit(1);
+   }
 }
 
-extern void slice_from_s(struct SN_env * z, int s_size, symbol * s)
-{   slice_check(z);
-    replace_s(z, z->bra, z->ket, s_size, s);
+extern void
+slice_from_s(struct SN_env * z, int s_size, symbol * s)
+{
+   slice_check(z);
+   replace_s(z, z->bra, z->ket, s_size, s);
 }
 
-extern void slice_from_v(struct SN_env * z, symbol * p)
-{   slice_from_s(z, SIZE(p), p);
+extern void
+slice_from_v(struct SN_env * z, symbol * p)
+{
+   slice_from_s(z, SIZE(p), p);
 }
 
-extern void slice_del(struct SN_env * z)
-{   slice_from_s(z, 0, 0);
+extern void
+slice_del(struct SN_env * z)
+{
+   slice_from_s(z, 0, 0);
 }
 
-extern void insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s)
-{   int adjustment = replace_s(z, bra, ket, s_size, s);
-    if (bra <= z->bra) z->bra += adjustment;
-    if (bra <= z->ket) z->ket += adjustment;
+extern void
+insert_s(struct SN_env * z, int bra, int ket, int s_size, symbol * s)
+{
+   int         adjustment = replace_s(z, bra, ket, s_size, s);
+
+   if (bra <= z->bra)
+       z->bra += adjustment;
+   if (bra <= z->ket)
+       z->ket += adjustment;
 }
 
-extern void insert_v(struct SN_env * z, int bra, int ket, symbol * p)
-{   int adjustment = replace_s(z, bra, ket, SIZE(p), p);
-    if (bra <= z->bra) z->bra += adjustment;
-    if (bra <= z->ket) z->ket += adjustment;
+extern void
+insert_v(struct SN_env * z, int bra, int ket, symbol * p)
+{
+   int         adjustment = replace_s(z, bra, ket, SIZE(p), p);
+
+   if (bra <= z->bra)
+       z->bra += adjustment;
+   if (bra <= z->ket)
+       z->ket += adjustment;
 }
 
-extern symbol * slice_to(struct SN_env * z, symbol * p)
-{   slice_check(z);
-    {   int len = z->ket - z->bra;
-        if (CAPACITY(p) < len) p = increase_size(p, len);
-        memmove(p, z->p + z->bra, len * sizeof(symbol));
-        SET_SIZE(p, len);
-    }
-    return p;
+extern symbol *
+slice_to(struct SN_env * z, symbol * p)
+{
+   slice_check(z);
+   {
+       int         len = z->ket - z->bra;
+
+       if (CAPACITY(p) < len)
+           p = increase_size(p, len);
+       memmove(p, z->p + z->bra, len * sizeof(symbol));
+       SET_SIZE(p, len);
+   }
+   return p;
 }
 
-extern symbol * assign_to(struct SN_env * z, symbol * p)
-{   int len = z->l;
-    if (CAPACITY(p) < len) p = increase_size(p, len);
-    memmove(p, z->p, len * sizeof(symbol));
-    SET_SIZE(p, len);
-    return p;
+extern symbol *
+assign_to(struct SN_env * z, symbol * p)
+{
+   int         len = z->l;
+
+   if (CAPACITY(p) < len)
+       p = increase_size(p, len);
+   memmove(p, z->p, len * sizeof(symbol));
+   SET_SIZE(p, len);
+   return p;
 }
 
-extern void debug(struct SN_env * z, int number, int line_count)
-{   int i;
-    int limit = SIZE(z->p);
-    /*if (number >= 0) printf("%3d (line %4d): '", number, line_count);*/
-    if (number >= 0) printf("%3d (line %4d): [%d]'", number, line_count,limit);
-    for (i = 0; i <= limit; i++)
-    {   if (z->lb == i) printf("{");
-        if (z->bra == i) printf("[");
-        if (z->c == i) printf("|");
-        if (z->ket == i) printf("]");
-        if (z->l == i) printf("}");
-        if (i < limit)
-        {   int ch = z->p[i];
-            if (ch == 0) ch = '#';
-            printf("%c", ch);
-        }
-    }
-    printf("'\n");
+extern void
+debug(struct SN_env * z, int number, int line_count)
+{
+   int         i;
+   int         limit = SIZE(z->p);
+
+   /* if (number >= 0) printf("%3d (line %4d): '", number, line_count); */
+   if (number >= 0)
+       printf("%3d (line %4d): [%d]'", number, line_count, limit);
+   for (i = 0; i <= limit; i++)
+   {
+       if (z->lb == i)
+           printf("{");
+       if (z->bra == i)
+           printf("[");
+       if (z->c == i)
+           printf("|");
+       if (z->ket == i)
+           printf("]");
+       if (z->l == i)
+           printf("}");
+       if (i < limit)
+       {
+           int         ch = z->p[i];
+
+           if (ch == 0)
+               ch = '#';
+           printf("%c", ch);
+       }
+   }
+   printf("'\n");
 }
index 2c2874b7f886b8da8b557ca09b052aa81e7e6c68..f91abeb460e7b9c90eeed7d9c041002466bb27b3 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * stopword library
  * Teodor Sigaev <[email protected]>
  */
 
 #define STOPBUFLEN 4096
 
-char*
-lowerstr(char *str) {
-   char *ptr=str;
-   while(*ptr) {
-       *ptr = tolower(*(unsigned char*)ptr);
+char *
+lowerstr(char *str)
+{
+   char       *ptr = str;
+
+   while (*ptr)
+   {
+       *ptr = tolower(*(unsigned char *) ptr);
        ptr++;
    }
    return str;
 }
 
 void
-freestoplist(StopList *s) {
-   char **ptr=s->stop;
-   if ( ptr )
-       while( *ptr && s->len >0 ) {
+freestoplist(StopList * s)
+{
+   char      **ptr = s->stop;
+
+   if (ptr)
+       while (*ptr && s->len > 0)
+       {
            free(*ptr);
-           ptr++; s->len--;
-       free(s->stop);
-   }
-   memset(s,0,sizeof(StopList));
+           ptr++;
+           s->len--;
+           free(s->stop);
+       }
+   memset(s, 0, sizeof(StopList));
 }
 
 void
-readstoplist(text *in, StopList *s) {
-   char **stop=NULL;
-   s->len=0;
-   if ( in && VARSIZE(in) - VARHDRSZ > 0 ) {
-       char *filename=text2char(in);
-       FILE    *hin=NULL;
-       char    buf[STOPBUFLEN];
-       int reallen=0;
-
-       if ( (hin=fopen(filename,"r")) == NULL )
+readstoplist(text *in, StopList * s)
+{
+   char      **stop = NULL;
+
+   s->len = 0;
+   if (in && VARSIZE(in) - VARHDRSZ > 0)
+   {
+       char       *filename = text2char(in);
+       FILE       *hin = NULL;
+       char        buf[STOPBUFLEN];
+       int         reallen = 0;
+
+       if ((hin = fopen(filename, "r")) == NULL)
            ereport(ERROR,
                    (errcode(ERRCODE_CONFIG_FILE_ERROR),
                     errmsg("could not open file \"%s\": %m",
-                            filename)));
+                           filename)));
 
-       while( fgets(buf,STOPBUFLEN,hin) ) {
-           buf[strlen(buf)-1] = '\0';
-           if ( *buf=='\0' ) continue;
+       while (fgets(buf, STOPBUFLEN, hin))
+       {
+           buf[strlen(buf) - 1] = '\0';
+           if (*buf == '\0')
+               continue;
 
-           if ( s->len>= reallen ) {
-               char **tmp;
-               reallen=(reallen) ? reallen*2 : 16;
-               tmp=(char**)realloc((void*)stop, sizeof(char*)*reallen);
-               if (!tmp) {
+           if (s->len >= reallen)
+           {
+               char      **tmp;
+
+               reallen = (reallen) ? reallen * 2 : 16;
+               tmp = (char **) realloc((void *) stop, sizeof(char *) * reallen);
+               if (!tmp)
+               {
                    freestoplist(s);
-                   fclose(hin); 
+                   fclose(hin);
                    ereport(ERROR,
                            (errcode(ERRCODE_OUT_OF_MEMORY),
                             errmsg("out of memory")));
                }
-               stop=tmp;
+               stop = tmp;
            }
-    
-           stop[s->len]=strdup(buf);
-           if ( !stop[s->len] ) {
+
+           stop[s->len] = strdup(buf);
+           if (!stop[s->len])
+           {
                freestoplist(s);
-               fclose(hin); 
+               fclose(hin);
                ereport(ERROR,
                        (errcode(ERRCODE_OUT_OF_MEMORY),
                         errmsg("out of memory")));
            }
-           if ( s->wordop ) 
-               stop[s->len]=(s->wordop)(stop[s->len]);
+           if (s->wordop)
+               stop[s->len] = (s->wordop) (stop[s->len]);
 
-           (s->len)++; 
+           (s->len)++;
        }
        fclose(hin);
-       pfree(filename); 
+       pfree(filename);
    }
-   s->stop=stop;
-} 
+   s->stop = stop;
+}
 
 static int
-comparestr(const void *a, const void *b) {
-   return strcmp( *(char**)a, *(char**)b );
+comparestr(const void *a, const void *b)
+{
+   return strcmp(*(char **) a, *(char **) b);
 }
 
 void
-sortstoplist(StopList *s) {
-   if (s->stop && s->len>0)
-       qsort(s->stop, s->len, sizeof(char*), comparestr);
+sortstoplist(StopList * s)
+{
+   if (s->stop && s->len > 0)
+       qsort(s->stop, s->len, sizeof(char *), comparestr);
 }
 
 bool
-searchstoplist(StopList *s, char *key) {
-   if ( s->wordop ) 
-       key=(*(s->wordop))(key);
-   return ( s->stop && s->len>0 && bsearch(&key, s->stop, s->len, sizeof(char*), comparestr) ) ? true : false;
+searchstoplist(StopList * s, char *key)
+{
+   if (s->wordop)
+       key = (*(s->wordop)) (key);
+   return (s->stop && s->len > 0 && bsearch(&key, s->stop, s->len, sizeof(char *), comparestr)) ? true : false;
 }
-
-
index d964aae573e923941dfcab554a92034d366418ce..ad06d90d9abca6ec9bc035d24a50203755eca88d 100644 (file)
@@ -1,5 +1,5 @@
-/* 
- * interface functions to tscfg 
+/*
+ * interface functions to tscfg
  * Teodor Sigaev <[email protected]>
  */
 #include <errno.h>
 
 /*********top interface**********/
 
-static void *plan_getcfg_bylocale=NULL;
-static void *plan_getcfg=NULL;
-static void *plan_getmap=NULL;
-static void *plan_name2id=NULL;
-static Oid current_cfg_id=0;
+static void *plan_getcfg_bylocale = NULL;
+static void *plan_getcfg = NULL;
+static void *plan_getmap = NULL;
+static void *plan_name2id = NULL;
+static Oid current_cfg_id = 0;
 
 void
-init_cfg(Oid id, TSCfgInfo *cfg) {
-   Oid arg[2]={ OIDOID, OIDOID };
-   bool isnull;
-   Datum pars[2]={ ObjectIdGetDatum(id), ObjectIdGetDatum(id) } ;
-   int stat,i,j;
-   text *ptr;
-   text *prsname=NULL;
-   MemoryContext   oldcontext;
-
-   memset(cfg,0,sizeof(TSCfgInfo));
+init_cfg(Oid id, TSCfgInfo * cfg)
+{
+   Oid         arg[2] = {OIDOID, OIDOID};
+   bool        isnull;
+   Datum       pars[2] = {ObjectIdGetDatum(id), ObjectIdGetDatum(id)};
+   int         stat,
+               i,
+               j;
+   text       *ptr;
+   text       *prsname = NULL;
+   MemoryContext oldcontext;
+
+   memset(cfg, 0, sizeof(TSCfgInfo));
    SPI_connect();
-   if ( !plan_getcfg ) {
-       plan_getcfg = SPI_saveplan( SPI_prepare( "select prs_name from pg_ts_cfg where oid = $1" , 1, arg ) );
-       if ( !plan_getcfg ) 
+   if (!plan_getcfg)
+   {
+       plan_getcfg = SPI_saveplan(SPI_prepare("select prs_name from pg_ts_cfg where oid = $1", 1, arg));
+       if (!plan_getcfg)
            ts_error(ERROR, "SPI_prepare() failed");
    }
 
    stat = SPI_execp(plan_getcfg, pars, " ", 1);
-   if ( stat < 0 )
-       ts_error (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 ) {
-       prsname = (text*) DatumGetPointer( 
-           SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) 
-       );
+   if (stat < 0)
+       ts_error(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+   {
+       prsname = (text *) DatumGetPointer(
+                                          SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull)
+           );
        oldcontext = MemoryContextSwitchTo(TopMemoryContext);
-       prsname = ptextdup( prsname );
+       prsname = ptextdup(prsname);
        MemoryContextSwitchTo(oldcontext);
-       
-       cfg->id=id;
-   } else 
+
+       cfg->id = id;
+   }
+   else
        ts_error(ERROR, "No tsearch cfg with id %d", id);
 
-   arg[0]=TEXTOID;
-   if ( !plan_getmap ) {
-       plan_getmap = SPI_saveplan( SPI_prepare( "select lt.tokid, pg_ts_cfgmap.dict_name from pg_ts_cfgmap, pg_ts_cfg, token_type( $1 ) as lt where lt.alias = pg_ts_cfgmap.tok_alias and pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name and pg_ts_cfg.oid= $2 order by lt.tokid desc;" , 2, arg ) );
-       if ( !plan_getmap )
+   arg[0] = TEXTOID;
+   if (!plan_getmap)
+   {
+       plan_getmap = SPI_saveplan(SPI_prepare("select lt.tokid, pg_ts_cfgmap.dict_name from pg_ts_cfgmap, pg_ts_cfg, token_type( $1 ) as lt where lt.alias = pg_ts_cfgmap.tok_alias and pg_ts_cfgmap.ts_name = pg_ts_cfg.ts_name and pg_ts_cfg.oid= $2 order by lt.tokid desc;", 2, arg));
+       if (!plan_getmap)
            ts_error(ERROR, "SPI_prepare() failed");
    }
 
-   pars[0]=PointerGetDatum( prsname );
+   pars[0] = PointerGetDatum(prsname);
    stat = SPI_execp(plan_getmap, pars, " ", 0);
-   if ( stat < 0 )
-       ts_error (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed <= 0 )
+   if (stat < 0)
+       ts_error(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed <= 0)
        ts_error(ERROR, "No parser with id %d", id);
 
-   for(i=0;i<SPI_processed;i++) {
-       int lexid = DatumGetInt32(SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnull));
-       ArrayType *toasted_a = (ArrayType*)PointerGetDatum(SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 2, &isnull));
-       ArrayType *a;
-
-       if ( !cfg->map ) {
-           cfg->len=lexid+1;
-           cfg->map = (ListDictionary*)malloc( sizeof(ListDictionary)*cfg->len );
-           if ( !cfg->map )
+   for (i = 0; i < SPI_processed; i++)
+   {
+       int         lexid = DatumGetInt32(SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnull));
+       ArrayType  *toasted_a = (ArrayType *) PointerGetDatum(SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 2, &isnull));
+       ArrayType  *a;
+
+       if (!cfg->map)
+       {
+           cfg->len = lexid + 1;
+           cfg->map = (ListDictionary *) malloc(sizeof(ListDictionary) * cfg->len);
+           if (!cfg->map)
                ereport(ERROR,
                        (errcode(ERRCODE_OUT_OF_MEMORY),
                         errmsg("out of memory")));
-           memset( cfg->map, 0, sizeof(ListDictionary)*cfg->len );
+           memset(cfg->map, 0, sizeof(ListDictionary) * cfg->len);
        }
 
        if (isnull)
            continue;
 
-       a=(ArrayType*)PointerGetDatum( PG_DETOAST_DATUM( DatumGetPointer(toasted_a) ) );
-       
-       if ( ARR_NDIM(a) != 1 )
-           ts_error(ERROR,"Wrong dimension");
-       if ( ARRNELEMS(a) < 1 )
+       a = (ArrayType *) PointerGetDatum(PG_DETOAST_DATUM(DatumGetPointer(toasted_a)));
+
+       if (ARR_NDIM(a) != 1)
+           ts_error(ERROR, "Wrong dimension");
+       if (ARRNELEMS(a) < 1)
            continue;
 
-       cfg->map[lexid].len=ARRNELEMS(a);
-       cfg->map[lexid].dict_id=(Datum*)malloc( sizeof(Datum)*cfg->map[lexid].len );
-       memset(cfg->map[lexid].dict_id,0,sizeof(Datum)*cfg->map[lexid].len );
-       ptr=(text*)ARR_DATA_PTR(a);
+       cfg->map[lexid].len = ARRNELEMS(a);
+       cfg->map[lexid].dict_id = (Datum *) malloc(sizeof(Datum) * cfg->map[lexid].len);
+       memset(cfg->map[lexid].dict_id, 0, sizeof(Datum) * cfg->map[lexid].len);
+       ptr = (text *) ARR_DATA_PTR(a);
        oldcontext = MemoryContextSwitchTo(TopMemoryContext);
-       for(j=0;j<cfg->map[lexid].len;j++) {
+       for (j = 0; j < cfg->map[lexid].len; j++)
+       {
            cfg->map[lexid].dict_id[j] = PointerGetDatum(ptextdup(ptr));
-           ptr=NEXTVAL(ptr);
-       } 
+           ptr = NEXTVAL(ptr);
+       }
        MemoryContextSwitchTo(oldcontext);
 
-       if ( a != toasted_a ) 
+       if (a != toasted_a)
            pfree(a);
    }
-   
+
    SPI_finish();
-   cfg->prs_id = name2id_prs( prsname );
+   cfg->prs_id = name2id_prs(prsname);
    pfree(prsname);
-   for(i=0;i<cfg->len;i++) {
-       for(j=0;j<cfg->map[i].len;j++) {
-           ptr = (text*)DatumGetPointer( cfg->map[i].dict_id[j] );
-           cfg->map[i].dict_id[j] = ObjectIdGetDatum( name2id_dict(ptr) );
+   for (i = 0; i < cfg->len; i++)
+   {
+       for (j = 0; j < cfg->map[i].len; j++)
+       {
+           ptr = (text *) DatumGetPointer(cfg->map[i].dict_id[j]);
+           cfg->map[i].dict_id[j] = ObjectIdGetDatum(name2id_dict(ptr));
            pfree(ptr);
        }
    }
 }
 
-typedef struct {
-   TSCfgInfo   *last_cfg;
-   int     len;
-   int     reallen;
-   TSCfgInfo   *list;
+typedef struct
+{
+   TSCfgInfo  *last_cfg;
+   int         len;
+   int         reallen;
+   TSCfgInfo  *list;
    SNMap       name2id_map;
-} CFGList;
+}  CFGList;
 
-static CFGList CList = {NULL,0,0,NULL,{0,0,NULL}};
+static CFGList CList = {NULL, 0, 0, NULL, {0, 0, NULL}};
 
 void
-reset_cfg(void) {
-        freeSNMap( &(CList.name2id_map) );
-        if ( CList.list ) {
-       int i,j;
-       for(i=0;i<CList.len;i++)
-           if ( CList.list[i].map ) {
-               for(j=0;j<CList.list[i].len;j++)
-                   if ( CList.list[i].map[j].dict_id )
+reset_cfg(void)
+{
+   freeSNMap(&(CList.name2id_map));
+   if (CList.list)
+   {
+       int         i,
+                   j;
+
+       for (i = 0; i < CList.len; i++)
+           if (CList.list[i].map)
+           {
+               for (j = 0; j < CList.list[i].len; j++)
+                   if (CList.list[i].map[j].dict_id)
                        free(CList.list[i].map[j].dict_id);
-               free( CList.list[i].map );
+               free(CList.list[i].map);
            }
-                free(CList.list);
+       free(CList.list);
    }
-        memset(&CList,0,sizeof(CFGList));
+   memset(&CList, 0, sizeof(CFGList));
 }
 
 static int
-comparecfg(const void *a, const void *b) {
-   return ((TSCfgInfo*)a)->id - ((TSCfgInfo*)b)->id;
+comparecfg(const void *a, const void *b)
+{
+   return ((TSCfgInfo *) a)->id - ((TSCfgInfo *) b)->id;
 }
 
 TSCfgInfo *
-findcfg(Oid id) {
+findcfg(Oid id)
+{
    /* last used cfg */
-   if ( CList.last_cfg && CList.last_cfg->id==id )
+   if (CList.last_cfg && CList.last_cfg->id == id)
        return CList.last_cfg;
 
    /* already used cfg */
-   if ( CList.len != 0 ) {
-       TSCfgInfo key;
-       key.id=id;
+   if (CList.len != 0)
+   {
+       TSCfgInfo   key;
+
+       key.id = id;
        CList.last_cfg = bsearch(&key, CList.list, CList.len, sizeof(TSCfgInfo), comparecfg);
-       if ( CList.last_cfg != NULL )
+       if (CList.last_cfg != NULL)
            return CList.last_cfg;
    }
 
    /* last chance */
-   if ( CList.len==CList.reallen ) {
-       TSCfgInfo *tmp;
-       int reallen = ( CList.reallen ) ? 2*CList.reallen : 16;
-       tmp=(TSCfgInfo*)realloc(CList.list,sizeof(TSCfgInfo)*reallen);
-       if ( !tmp ) 
-           ts_error(ERROR,"No memory");
-       CList.reallen=reallen;
-       CList.list=tmp;
+   if (CList.len == CList.reallen)
+   {
+       TSCfgInfo  *tmp;
+       int         reallen = (CList.reallen) ? 2 * CList.reallen : 16;
+
+       tmp = (TSCfgInfo *) realloc(CList.list, sizeof(TSCfgInfo) * reallen);
+       if (!tmp)
+           ts_error(ERROR, "No memory");
+       CList.reallen = reallen;
+       CList.list = tmp;
    }
-   CList.last_cfg=&(CList.list[CList.len]);
+   CList.last_cfg = &(CList.list[CList.len]);
    init_cfg(id, CList.last_cfg);
    CList.len++;
    qsort(CList.list, CList.len, sizeof(TSCfgInfo), comparecfg);
-   return findcfg(id); /* qsort changed order!! */;
+   return findcfg(id); /* qsort changed order!! */ ;
 }
 
 
 Oid
-name2id_cfg(text *name) {
-   Oid arg[1]={ TEXTOID };
-   bool isnull;
-   Datum pars[1]={ PointerGetDatum(name) };
-   int stat;
-   Oid id=findSNMap_t( &(CList.name2id_map), name );
-   
-   if ( id ) 
+name2id_cfg(text *name)
+{
+   Oid         arg[1] = {TEXTOID};
+   bool        isnull;
+   Datum       pars[1] = {PointerGetDatum(name)};
+   int         stat;
+   Oid         id = findSNMap_t(&(CList.name2id_map), name);
+
+   if (id)
        return id;
-   
+
    SPI_connect();
-   if ( !plan_name2id ) {
-       plan_name2id = SPI_saveplan( SPI_prepare( "select oid from pg_ts_cfg where ts_name = $1" , 1, arg ) );
-       if ( !plan_name2id ) 
+   if (!plan_name2id)
+   {
+       plan_name2id = SPI_saveplan(SPI_prepare("select oid from pg_ts_cfg where ts_name = $1", 1, arg));
+       if (!plan_name2id)
            /* internal error */
            elog(ERROR, "SPI_prepare() failed");
    }
 
    stat = SPI_execp(plan_name2id, pars, " ", 1);
-   if ( stat < 0 )
+   if (stat < 0)
        /* internal error */
-       elog (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 ) {
-       id=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
-       if ( isnull ) 
+       elog(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+   {
+       id = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
+       if (isnull)
            ereport(ERROR,
                    (errcode(ERRCODE_CONFIG_FILE_ERROR),
                     errmsg("null id for tsearch config")));
-   } else 
+   }
+   else
        ereport(ERROR,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
                 errmsg("no tsearch config")));
 
    SPI_finish();
-   addSNMap_t( &(CList.name2id_map), name, id );
+   addSNMap_t(&(CList.name2id_map), name, id);
    return id;
 }
 
 
-void 
-parsetext_v2(TSCfgInfo *cfg, PRSTEXT * prs, char *buf, int4 buflen) {
-   int type, lenlemm, i;
-   char    *lemm=NULL;
+void
+parsetext_v2(TSCfgInfo * cfg, PRSTEXT * prs, char *buf, int4 buflen)
+{
+   int         type,
+               lenlemm,
+               i;
+   char       *lemm = NULL;
    WParserInfo *prsobj = findprs(cfg->prs_id);
 
-   prsobj->prs=(void*)DatumGetPointer(
-       FunctionCall2(
-           &(prsobj->start_info),
-           PointerGetDatum(buf),
-           Int32GetDatum(buflen)
-       )
-   );
-
-   while( ( type=DatumGetInt32(FunctionCall3(
-           &(prsobj->getlexeme_info),
-           PointerGetDatum(prsobj->prs),
-           PointerGetDatum(&lemm),
-           PointerGetDatum(&lenlemm))) ) != 0 ) {
-
-       if ( lenlemm >= MAXSTRLEN )
+   prsobj->prs = (void *) DatumGetPointer(
+                                          FunctionCall2(
+                                                  &(prsobj->start_info),
+                                                   PointerGetDatum(buf),
+                                                   Int32GetDatum(buflen)
+                                                        )
+       );
+
+   while ((type = DatumGetInt32(FunctionCall3(
+                                              &(prsobj->getlexeme_info),
+                                           PointerGetDatum(prsobj->prs),
+                                              PointerGetDatum(&lemm),
+                                      PointerGetDatum(&lenlemm)))) != 0)
+   {
+
+       if (lenlemm >= MAXSTRLEN)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("word is too long")));
 
-       if ( type >= cfg->len ) /* skip this type of lexem */
-           continue; 
-
-       for(i=0;i<cfg->map[type].len;i++) {
-           DictInfo    *dict=finddict( DatumGetObjectId(cfg->map[type].dict_id[i]) );
-           char    **norms, **ptr;
-   
-           norms = ptr = (char**)DatumGetPointer(
-               FunctionCall3(
-                   &(dict->lexize_info),
-                   PointerGetDatum(dict->dictionary),
-                   PointerGetDatum(lemm),
-                   PointerGetDatum(lenlemm)
-               )
-           );
-           if ( !norms ) /* dictionary doesn't know this lexem */
+       if (type >= cfg->len)   /* skip this type of lexem */
+           continue;
+
+       for (i = 0; i < cfg->map[type].len; i++)
+       {
+           DictInfo   *dict = finddict(DatumGetObjectId(cfg->map[type].dict_id[i]));
+           char      **norms,
+                     **ptr;
+
+           norms = ptr = (char **) DatumGetPointer(
+                                                   FunctionCall3(
+                                                   &(dict->lexize_info),
+                                      PointerGetDatum(dict->dictionary),
+                                                  PointerGetDatum(lemm),
+                                                PointerGetDatum(lenlemm)
+                                                                 )
+               );
+           if (!norms)         /* dictionary doesn't know this lexem */
                continue;
 
-           prs->pos++; /*set pos*/
+           prs->pos++;         /* set pos */
 
-           while( *ptr ) {
-               if (prs->curwords == prs->lenwords) {
+           while (*ptr)
+           {
+               if (prs->curwords == prs->lenwords)
+               {
                    prs->lenwords *= 2;
                    prs->words = (WORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(WORD));
                }
@@ -292,191 +328,220 @@ parsetext_v2(TSCfgInfo *cfg, PRSTEXT * prs, char *buf, int4 buflen) {
                prs->curwords++;
            }
            pfree(norms);
-           break; /* lexem already normalized or is stop word*/
+           break;              /* lexem already normalized or is stop
+                                * word */
        }
    }
 
    FunctionCall1(
-       &(prsobj->end_info),
-       PointerGetDatum(prsobj->prs)
-   );
+                 &(prsobj->end_info),
+                 PointerGetDatum(prsobj->prs)
+       );
 }
 
 static void
-hladdword(HLPRSTEXT * prs, char *buf, int4 buflen, int type) {
-   while (prs->curwords >= prs->lenwords) {
+hladdword(HLPRSTEXT * prs, char *buf, int4 buflen, int type)
+{
+   while (prs->curwords >= prs->lenwords)
+   {
        prs->lenwords *= 2;
        prs->words = (HLWORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(HLWORD));
    }
-   memset( &(prs->words[prs->curwords]), 0, sizeof(HLWORD) ); 
-   prs->words[prs->curwords].type = (uint8)type;
-   prs->words[prs->curwords].len = buflen; 
+   memset(&(prs->words[prs->curwords]), 0, sizeof(HLWORD));
+   prs->words[prs->curwords].type = (uint8) type;
+   prs->words[prs->curwords].len = buflen;
    prs->words[prs->curwords].word = palloc(buflen);
    memcpy(prs->words[prs->curwords].word, buf, buflen);
-   prs->curwords++;    
+   prs->curwords++;
 }
 
 static void
-hlfinditem(HLPRSTEXT * prs, QUERYTYPE *query, char *buf, int buflen ) {
-   int i;
-   ITEM    *item=GETQUERY(query);
-   HLWORD  *word=&( prs->words[prs->curwords-1] );
-
-   while (prs->curwords + query->size >= prs->lenwords) {
+hlfinditem(HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int buflen)
+{
+   int         i;
+   ITEM       *item = GETQUERY(query);
+   HLWORD     *word = &(prs->words[prs->curwords - 1]);
+
+   while (prs->curwords + query->size >= prs->lenwords)
+   {
        prs->lenwords *= 2;
        prs->words = (HLWORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(HLWORD));
    }
 
-   for(i=0; i<query->size; i++) { 
-       if ( item->type == VAL && item->length == buflen && strncmp( GETOPERAND(query) + item->distance, buf, buflen )==0 ) {
-           if ( word->item ) {
-               memcpy( &(prs->words[prs->curwords]), word, sizeof(HLWORD) );
-               prs->words[prs->curwords].item=item;
-               prs->words[prs->curwords].repeated=1;
+   for (i = 0; i < query->size; i++)
+   {
+       if (item->type == VAL && item->length == buflen && strncmp(GETOPERAND(query) + item->distance, buf, buflen) == 0)
+       {
+           if (word->item)
+           {
+               memcpy(&(prs->words[prs->curwords]), word, sizeof(HLWORD));
+               prs->words[prs->curwords].item = item;
+               prs->words[prs->curwords].repeated = 1;
                prs->curwords++;
-           } else 
-               word->item=item;    
+           }
+           else
+               word->item = item;
        }
        item++;
    }
 }
 
-void 
-hlparsetext(TSCfgInfo *cfg, HLPRSTEXT * prs, QUERYTYPE *query, char *buf, int4 buflen) {
-   int type, lenlemm, i;
-   char    *lemm=NULL;
+void
+hlparsetext(TSCfgInfo * cfg, HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int4 buflen)
+{
+   int         type,
+               lenlemm,
+               i;
+   char       *lemm = NULL;
    WParserInfo *prsobj = findprs(cfg->prs_id);
 
-   prsobj->prs=(void*)DatumGetPointer(
-       FunctionCall2(
-           &(prsobj->start_info),
-           PointerGetDatum(buf),
-           Int32GetDatum(buflen)
-       )
-   );
-
-   while( ( type=DatumGetInt32(FunctionCall3(
-           &(prsobj->getlexeme_info),
-           PointerGetDatum(prsobj->prs),
-           PointerGetDatum(&lemm),
-           PointerGetDatum(&lenlemm))) ) != 0 ) {
-
-       if ( lenlemm >= MAXSTRLEN )
+   prsobj->prs = (void *) DatumGetPointer(
+                                          FunctionCall2(
+                                                  &(prsobj->start_info),
+                                                   PointerGetDatum(buf),
+                                                   Int32GetDatum(buflen)
+                                                        )
+       );
+
+   while ((type = DatumGetInt32(FunctionCall3(
+                                              &(prsobj->getlexeme_info),
+                                           PointerGetDatum(prsobj->prs),
+                                              PointerGetDatum(&lemm),
+                                      PointerGetDatum(&lenlemm)))) != 0)
+   {
+
+       if (lenlemm >= MAXSTRLEN)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("word is too long")));
 
-       hladdword(prs,lemm,lenlemm,type);
-
-       if ( type >= cfg->len ) 
-           continue; 
-
-       for(i=0;i<cfg->map[type].len;i++) {
-           DictInfo    *dict=finddict( DatumGetObjectId(cfg->map[type].dict_id[i]) );
-           char    **norms, **ptr;
-   
-           norms = ptr = (char**)DatumGetPointer(
-               FunctionCall3(
-                   &(dict->lexize_info),
-                   PointerGetDatum(dict->dictionary),
-                   PointerGetDatum(lemm),
-                   PointerGetDatum(lenlemm)
-               )
-           );
-           if ( !norms ) /* dictionary doesn't know this lexem */
+       hladdword(prs, lemm, lenlemm, type);
+
+       if (type >= cfg->len)
+           continue;
+
+       for (i = 0; i < cfg->map[type].len; i++)
+       {
+           DictInfo   *dict = finddict(DatumGetObjectId(cfg->map[type].dict_id[i]));
+           char      **norms,
+                     **ptr;
+
+           norms = ptr = (char **) DatumGetPointer(
+                                                   FunctionCall3(
+                                                   &(dict->lexize_info),
+                                      PointerGetDatum(dict->dictionary),
+                                                  PointerGetDatum(lemm),
+                                                PointerGetDatum(lenlemm)
+                                                                 )
+               );
+           if (!norms)         /* dictionary doesn't know this lexem */
                continue;
 
-           while( *ptr ) {
-               hlfinditem(prs,query,*ptr,strlen(*ptr));
+           while (*ptr)
+           {
+               hlfinditem(prs, query, *ptr, strlen(*ptr));
                pfree(*ptr);
                ptr++;
            }
            pfree(norms);
-           break; /* lexem already normalized or is stop word*/
+           break;              /* lexem already normalized or is stop
+                                * word */
        }
    }
 
    FunctionCall1(
-       &(prsobj->end_info),
-       PointerGetDatum(prsobj->prs)
-   );
+                 &(prsobj->end_info),
+                 PointerGetDatum(prsobj->prs)
+       );
 }
 
-text* 
-genhl(HLPRSTEXT * prs) {
-   text *out;
-   int len=128;
-   char *ptr;
-   HLWORD  *wrd=prs->words;
+text *
+genhl(HLPRSTEXT * prs)
+{
+   text       *out;
+   int         len = 128;
+   char       *ptr;
+   HLWORD     *wrd = prs->words;
 
-   out = (text*)palloc( len );
-   ptr=((char*)out) + VARHDRSZ;
+   out = (text *) palloc(len);
+   ptr = ((char *) out) + VARHDRSZ;
 
-   while( wrd - prs->words < prs->curwords ) {
-       while (  wrd->len + prs->stopsellen + prs->startsellen + (ptr - ((char*)out)) >= len ) {
-           int dist = ptr - ((char*)out);
-           len*= 2;
+   while (wrd - prs->words < prs->curwords)
+   {
+       while (wrd->len + prs->stopsellen + prs->startsellen + (ptr - ((char *) out)) >= len)
+       {
+           int         dist = ptr - ((char *) out);
+
+           len *= 2;
            out = (text *) repalloc(out, len);
-           ptr=((char*)out) + dist;
+           ptr = ((char *) out) + dist;
        }
 
-       if ( wrd->in && !wrd->skip && !wrd->repeated ) {
-           if ( wrd->replace ) {
-               *ptr=' ';
+       if (wrd->in && !wrd->skip && !wrd->repeated)
+       {
+           if (wrd->replace)
+           {
+               *ptr = ' ';
                ptr++;
-           } else {
-               if (wrd->selected) {
-                   memcpy(ptr,prs->startsel,prs->startsellen);
-                   ptr+=prs->startsellen;
+           }
+           else
+           {
+               if (wrd->selected)
+               {
+                   memcpy(ptr, prs->startsel, prs->startsellen);
+                   ptr += prs->startsellen;
                }
-               memcpy(ptr,wrd->word,wrd->len);
-               ptr+=wrd->len;
-               if (wrd->selected) {
-                   memcpy(ptr,prs->stopsel,prs->stopsellen);
-                   ptr+=prs->stopsellen;
+               memcpy(ptr, wrd->word, wrd->len);
+               ptr += wrd->len;
+               if (wrd->selected)
+               {
+                   memcpy(ptr, prs->stopsel, prs->stopsellen);
+                   ptr += prs->stopsellen;
                }
            }
        }
 
-       if ( !wrd->repeated )
+       if (!wrd->repeated)
            pfree(wrd->word);
 
        wrd++;
    }
 
-   VARATT_SIZEP(out)=ptr - ((char*)out);
-   return out; 
+   VARATT_SIZEP(out) = ptr - ((char *) out);
+   return out;
 }
 
-int  
-get_currcfg(void) {
-   Oid arg[1]={ TEXTOID };
+int
+get_currcfg(void)
+{
+   Oid         arg[1] = {TEXTOID};
    const char *curlocale;
-   Datum pars[1];
-   bool isnull;
-   int stat;
+   Datum       pars[1];
+   bool        isnull;
+   int         stat;
 
-   if ( current_cfg_id > 0 )
+   if (current_cfg_id > 0)
        return current_cfg_id;
 
    SPI_connect();
-   if ( !plan_getcfg_bylocale ) {
-       plan_getcfg_bylocale=SPI_saveplan( SPI_prepare( "select oid from pg_ts_cfg where locale = $1 ", 1, arg ) );
-       if ( !plan_getcfg_bylocale )
+   if (!plan_getcfg_bylocale)
+   {
+       plan_getcfg_bylocale = SPI_saveplan(SPI_prepare("select oid from pg_ts_cfg where locale = $1 ", 1, arg));
+       if (!plan_getcfg_bylocale)
            /* internal error */
            elog(ERROR, "SPI_prepare() failed");
    }
 
    curlocale = setlocale(LC_CTYPE, NULL);
-   pars[0] = PointerGetDatum( char2text((char*)curlocale) );
+   pars[0] = PointerGetDatum(char2text((char *) curlocale));
    stat = SPI_execp(plan_getcfg_bylocale, pars, " ", 1);
 
-   if ( stat < 0 )
+   if (stat < 0)
        /* internal error */
-       elog (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 )
-       current_cfg_id = DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
-   else 
+       elog(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+       current_cfg_id = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
+   else
        ereport(ERROR,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
                 errmsg("could not find tsearch config by locale")));
@@ -487,39 +552,43 @@ get_currcfg(void) {
 }
 
 PG_FUNCTION_INFO_V1(set_curcfg);
-Datum set_curcfg(PG_FUNCTION_ARGS);
+Datum      set_curcfg(PG_FUNCTION_ARGS);
 Datum
-set_curcfg(PG_FUNCTION_ARGS) {
-        findcfg(PG_GETARG_OID(0));
-        current_cfg_id=PG_GETARG_OID(0);
-        PG_RETURN_VOID();
+set_curcfg(PG_FUNCTION_ARGS)
+{
+   findcfg(PG_GETARG_OID(0));
+   current_cfg_id = PG_GETARG_OID(0);
+   PG_RETURN_VOID();
 }
-                
+
 PG_FUNCTION_INFO_V1(set_curcfg_byname);
-Datum set_curcfg_byname(PG_FUNCTION_ARGS);
+Datum      set_curcfg_byname(PG_FUNCTION_ARGS);
 Datum
-set_curcfg_byname(PG_FUNCTION_ARGS) {
-        text *name=PG_GETARG_TEXT_P(0);
-   
-        DirectFunctionCall1(
-                set_curcfg,
-                ObjectIdGetDatum( name2id_cfg(name) )
-        );
-        PG_FREE_IF_COPY(name, 0);
-        PG_RETURN_VOID();      
-}       
+set_curcfg_byname(PG_FUNCTION_ARGS)
+{
+   text       *name = PG_GETARG_TEXT_P(0);
+
+   DirectFunctionCall1(
+                       set_curcfg,
+                       ObjectIdGetDatum(name2id_cfg(name))
+       );
+   PG_FREE_IF_COPY(name, 0);
+   PG_RETURN_VOID();
+}
 
 PG_FUNCTION_INFO_V1(show_curcfg);
-Datum show_curcfg(PG_FUNCTION_ARGS);
+Datum      show_curcfg(PG_FUNCTION_ARGS);
 Datum
-show_curcfg(PG_FUNCTION_ARGS) {
-   PG_RETURN_OID( get_currcfg() ); 
+show_curcfg(PG_FUNCTION_ARGS)
+{
+   PG_RETURN_OID(get_currcfg());
 }
 
 PG_FUNCTION_INFO_V1(reset_tsearch);
-Datum reset_tsearch(PG_FUNCTION_ARGS);
+Datum      reset_tsearch(PG_FUNCTION_ARGS);
 Datum
-reset_tsearch(PG_FUNCTION_ARGS) {
-   ts_error(NOTICE,"TSearch cache cleaned");
-   PG_RETURN_VOID(); 
+reset_tsearch(PG_FUNCTION_ARGS)
+{
+   ts_error(NOTICE, "TSearch cache cleaned");
+   PG_RETURN_VOID();
 }
index 01006c1f93c8433998b7bf90d485dd0ea516a008..cde35ca2a6ebbaddff7e7a2e825cc9970af1a41b 100644 (file)
@@ -3,66 +3,73 @@
 #include "postgres.h"
 #include "query.h"
 
-typedef struct {
-   int len;
-   Datum   *dict_id;
-} ListDictionary;
+typedef struct
+{
+   int         len;
+   Datum      *dict_id;
+}  ListDictionary;
 
-typedef struct {
-   Oid id;
-   Oid prs_id;
-   int len;
-   ListDictionary  *map;   
+typedef struct
+{
+   Oid         id;
+   Oid         prs_id;
+   int         len;
+   ListDictionary *map;
 }  TSCfgInfo;
 
-Oid name2id_cfg(text *name);
-TSCfgInfo findcfg(Oid id);
-void init_cfg(Oid id, TSCfgInfo *cfg);
-void reset_cfg(void);
+Oid            name2id_cfg(text *name);
+TSCfgInfo  *findcfg(Oid id);
+void       init_cfg(Oid id, TSCfgInfo * cfg);
+void       reset_cfg(void);
 
-typedef struct {
-        uint16          len;
-   union {
+typedef struct
+{
+   uint16      len;
+   union
+   {
        uint16      pos;
-       uint16      *apos;
-   } pos;
-        char       *word;
-   uint32  alen;
-}       WORD;
-   
-typedef struct {
-        WORD       *words;
-        int4            lenwords;
-        int4            curwords;
+       uint16     *apos;
+   }           pos;
+   char       *word;
+   uint32      alen;
+}  WORD;
+
+typedef struct
+{
+   WORD       *words;
+   int4        lenwords;
+   int4        curwords;
    int4        pos;
-}       PRSTEXT;
+}  PRSTEXT;
+
+typedef struct
+{
+   uint16      len;
+   uint8       selected:1,
+               in:1,
+               skip:1,
+               replace:1,
+               repeated:1;
+   uint8       type;
+   char       *word;
+   ITEM       *item;
+}  HLWORD;
 
-typedef struct {
-        uint16    len;
-   uint8    selected:1,
-         in:1,
-         skip:1,
-         replace:1,
-         repeated:1;
-   uint8   type;
-        char      *word;
-   ITEM      *item;
-}       HLWORD;
-   
-typedef struct {
-        HLWORD       *words;
-        int4            lenwords;
-        int4            curwords;
-        char           *startsel;
-        char            *stopsel;
-        int2            startsellen;
-        int2            stopsellen;
-}       HLPRSTEXT;
+typedef struct
+{
+   HLWORD     *words;
+   int4        lenwords;
+   int4        curwords;
+   char       *startsel;
+   char       *stopsel;
+   int2        startsellen;
+   int2        stopsellen;
+}  HLPRSTEXT;
 
-void hlparsetext(TSCfgInfo *cfg, HLPRSTEXT * prs, QUERYTYPE *query, char *buf, int4 buflen);
-textgenhl(HLPRSTEXT * prs);
+void       hlparsetext(TSCfgInfo * cfg, HLPRSTEXT * prs, QUERYTYPE * query, char *buf, int4 buflen);
+text      *genhl(HLPRSTEXT * prs);
 
-void parsetext_v2(TSCfgInfo *cfg, PRSTEXT * prs, char *buf, int4 buflen);
-int  get_currcfg(void);
+void       parsetext_v2(TSCfgInfo * cfg, PRSTEXT * prs, char *buf, int4 buflen);
+int            get_currcfg(void);
 
 #endif
index a09e05721436fefcb9cbfe87d453b37a9edee4ff..47353fc579e4bd6d82e1694662805b4d27339765 100644 (file)
 #include "common.h"
 
 PG_FUNCTION_INFO_V1(tsstat_in);
-Datum           tsstat_in(PG_FUNCTION_ARGS);
-Datum           
-tsstat_in(PG_FUNCTION_ARGS) {
-   tsstat *stat=palloc(STATHDRSIZE);
-   stat->len=STATHDRSIZE;
-   stat->size=0;
+Datum      tsstat_in(PG_FUNCTION_ARGS);
+Datum
+tsstat_in(PG_FUNCTION_ARGS)
+{
+   tsstat     *stat = palloc(STATHDRSIZE);
+
+   stat->len = STATHDRSIZE;
+   stat->size = 0;
    PG_RETURN_POINTER(stat);
 }
 
 PG_FUNCTION_INFO_V1(tsstat_out);
-Datum           tsstat_out(PG_FUNCTION_ARGS);
-Datum           
-tsstat_out(PG_FUNCTION_ARGS) {
+Datum      tsstat_out(PG_FUNCTION_ARGS);
+Datum
+tsstat_out(PG_FUNCTION_ARGS)
+{
    ereport(ERROR,
            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
             errmsg("tsstat_out not implemented")));
    PG_RETURN_NULL();
 }
 
-static WordEntry**
-SEI_realloc( WordEntry** in, uint32 *len ) {
-   if ( *len==0 || in==NULL ) {
-       *len=8;
-       in=palloc( sizeof(WordEntry*)* (*len) );
-   } else {
+static WordEntry **
+SEI_realloc(WordEntry ** in, uint32 *len)
+{
+   if (*len == 0 || in == NULL)
+   {
+       *len = 8;
+       in = palloc(sizeof(WordEntry *) * (*len));
+   }
+   else
+   {
        *len *= 2;
-       in=repalloc( in, sizeof(WordEntry*)* (*len) );
+       in = repalloc(in, sizeof(WordEntry *) * (*len));
    }
    return in;
 }
 
 static int
-compareStatWord(StatEntry *a, WordEntry *b, tsstat *stat, tsvector *txt) {
-   if ( a->len == b->len ) 
+compareStatWord(StatEntry * a, WordEntry * b, tsstat * stat, tsvector * txt)
+{
+   if (a->len == b->len)
        return strncmp(
-           STATSTRPTR(stat) + a->pos,
-           STRPTR(txt) + b->pos,
-           a->len
+                      STATSTRPTR(stat) + a->pos,
+                      STRPTR(txt) + b->pos,
+                      a->len
        );
-   return ( a->len > b->len ) ? 1 : -1;
+   return (a->len > b->len) ? 1 : -1;
 }
 
-static tsstat*
-formstat(tsstat *stat, tsvector *txt, WordEntry** entry, uint32 len) {
-   tsstat  *newstat;
-   uint32 totallen, nentry;
-   uint32  slen=0;
-   WordEntry   **ptr=entry;
-   char    *curptr;
-   StatEntry   *sptr,*nptr;
-
-   while(ptr-entry<len) {
+static tsstat *
+formstat(tsstat * stat, tsvector * txt, WordEntry ** entry, uint32 len)
+{
+   tsstat     *newstat;
+   uint32      totallen,
+               nentry;
+   uint32      slen = 0;
+   WordEntry **ptr = entry;
+   char       *curptr;
+   StatEntry  *sptr,
+              *nptr;
+
+   while (ptr - entry < len)
+   {
        slen += (*ptr)->len;
        ptr++;
    }
 
-   nentry=stat->size + len;
-   slen+=STATSTRSIZE(stat);
-   totallen=CALCSTATSIZE(nentry,slen);
-   newstat=palloc(totallen);
-   newstat->len=totallen;
-   newstat->size=nentry;
+   nentry = stat->size + len;
+   slen += STATSTRSIZE(stat);
+   totallen = CALCSTATSIZE(nentry, slen);
+   newstat = palloc(totallen);
+   newstat->len = totallen;
+   newstat->size = nentry;
 
    memcpy(STATSTRPTR(newstat), STATSTRPTR(stat), STATSTRSIZE(stat));
-   curptr=STATSTRPTR(newstat) + STATSTRSIZE(stat);
+   curptr = STATSTRPTR(newstat) + STATSTRSIZE(stat);
 
-   ptr=entry;
-   sptr=STATPTR(stat);
-   nptr=STATPTR(newstat);
+   ptr = entry;
+   sptr = STATPTR(stat);
+   nptr = STATPTR(newstat);
 
-   if ( len == 1 ) {
-       StatEntry *StopLow = STATPTR(stat);
-       StatEntry *StopHigh = (StatEntry*)STATSTRPTR(stat);
+   if (len == 1)
+   {
+       StatEntry  *StopLow = STATPTR(stat);
+       StatEntry  *StopHigh = (StatEntry *) STATSTRPTR(stat);
 
-       while (StopLow < StopHigh) {
-           sptr=StopLow + (StopHigh - StopLow) / 2;
-           if ( compareStatWord(sptr,*ptr,stat,txt) < 0 )
+       while (StopLow < StopHigh)
+       {
+           sptr = StopLow + (StopHigh - StopLow) / 2;
+           if (compareStatWord(sptr, *ptr, stat, txt) < 0)
                StopLow = sptr + 1;
            else
-               StopHigh = sptr; 
+               StopHigh = sptr;
        }
-       nptr =STATPTR(newstat) + (StopLow-STATPTR(stat));
-       memcpy( STATPTR(newstat), STATPTR(stat), sizeof(StatEntry) * (StopLow-STATPTR(stat)) );
-       nptr->nentry=POSDATALEN(txt,*ptr);
-       if ( nptr->nentry==0 )
-               nptr->nentry=1; 
-       nptr->ndoc=1;
-       nptr->len=(*ptr)->len;
+       nptr = STATPTR(newstat) + (StopLow - STATPTR(stat));
+       memcpy(STATPTR(newstat), STATPTR(stat), sizeof(StatEntry) * (StopLow - STATPTR(stat)));
+       nptr->nentry = POSDATALEN(txt, *ptr);
+       if (nptr->nentry == 0)
+           nptr->nentry = 1;
+       nptr->ndoc = 1;
+       nptr->len = (*ptr)->len;
        memcpy(curptr, STRPTR(txt) + (*ptr)->pos, nptr->len);
        nptr->pos = curptr - STATSTRPTR(newstat);
-       memcpy( nptr+1, StopLow, sizeof(StatEntry) * ( ((StatEntry*)STATSTRPTR(stat))-StopLow ) );
-   } else {
-       while( sptr-STATPTR(stat) < stat->size && ptr-entry<len) {
-           if ( compareStatWord(sptr,*ptr,stat,txt) < 0 ) {
+       memcpy(nptr + 1, StopLow, sizeof(StatEntry) * (((StatEntry *) STATSTRPTR(stat)) - StopLow));
+   }
+   else
+   {
+       while (sptr - STATPTR(stat) < stat->size && ptr - entry < len)
+       {
+           if (compareStatWord(sptr, *ptr, stat, txt) < 0)
+           {
                memcpy(nptr, sptr, sizeof(StatEntry));
                sptr++;
-           } else {
-               nptr->nentry=POSDATALEN(txt,*ptr);
-               if ( nptr->nentry==0 )
-                   nptr->nentry=1; 
-               nptr->ndoc=1;
-               nptr->len=(*ptr)->len;
+           }
+           else
+           {
+               nptr->nentry = POSDATALEN(txt, *ptr);
+               if (nptr->nentry == 0)
+                   nptr->nentry = 1;
+               nptr->ndoc = 1;
+               nptr->len = (*ptr)->len;
                memcpy(curptr, STRPTR(txt) + (*ptr)->pos, nptr->len);
                nptr->pos = curptr - STATSTRPTR(newstat);
                curptr += nptr->len;
@@ -120,138 +140,168 @@ formstat(tsstat *stat, tsvector *txt, WordEntry** entry, uint32 len) {
            nptr++;
        }
 
-       memcpy( nptr, sptr, sizeof(StatEntry)*( stat->size - (sptr-STATPTR(stat)) ) ); 
-       
-       while(ptr-entry<len) {
-           nptr->nentry=POSDATALEN(txt,*ptr);
-           if ( nptr->nentry==0 )
-               nptr->nentry=1; 
-           nptr->ndoc=1;
-           nptr->len=(*ptr)->len;
+       memcpy(nptr, sptr, sizeof(StatEntry) * (stat->size - (sptr - STATPTR(stat))));
+
+       while (ptr - entry < len)
+       {
+           nptr->nentry = POSDATALEN(txt, *ptr);
+           if (nptr->nentry == 0)
+               nptr->nentry = 1;
+           nptr->ndoc = 1;
+           nptr->len = (*ptr)->len;
            memcpy(curptr, STRPTR(txt) + (*ptr)->pos, nptr->len);
            nptr->pos = curptr - STATSTRPTR(newstat);
            curptr += nptr->len;
-           ptr++; nptr++;
+           ptr++;
+           nptr++;
        }
    }
 
    return newstat;
-} 
+}
 
 PG_FUNCTION_INFO_V1(ts_accum);
-Datum           ts_accum(PG_FUNCTION_ARGS);
-Datum 
-ts_accum(PG_FUNCTION_ARGS) {
-   tsstat *newstat,*stat= (tsstat*)PG_GETARG_POINTER(0);
-   tsvector  *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
-   WordEntry   **newentry=NULL;
-   uint32  len=0, cur=0;
-   StatEntry   *sptr;
-   WordEntry   *wptr;
-
-   if ( stat==NULL || PG_ARGISNULL(0) ) { /* Init in first */ 
-       stat=palloc(STATHDRSIZE);
-       stat->len=STATHDRSIZE;
-       stat->size=0;
+Datum      ts_accum(PG_FUNCTION_ARGS);
+Datum
+ts_accum(PG_FUNCTION_ARGS)
+{
+   tsstat     *newstat,
+              *stat = (tsstat *) PG_GETARG_POINTER(0);
+   tsvector   *txt = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+   WordEntry **newentry = NULL;
+   uint32      len = 0,
+               cur = 0;
+   StatEntry  *sptr;
+   WordEntry  *wptr;
+
+   if (stat == NULL || PG_ARGISNULL(0))
+   {                           /* Init in first */
+       stat = palloc(STATHDRSIZE);
+       stat->len = STATHDRSIZE;
+       stat->size = 0;
    }
 
    /* simple check of correctness */
-   if ( txt==NULL || PG_ARGISNULL(1) || txt->size==0 ) {
-       PG_FREE_IF_COPY(txt,1); 
+   if (txt == NULL || PG_ARGISNULL(1) || txt->size == 0)
+   {
+       PG_FREE_IF_COPY(txt, 1);
        PG_RETURN_POINTER(stat);
    }
 
-   sptr=STATPTR(stat);
-   wptr=ARRPTR(txt);
+   sptr = STATPTR(stat);
+   wptr = ARRPTR(txt);
 
-   if ( stat->size < 100*txt->size ) { /* merge */
-       while( sptr-STATPTR(stat) < stat->size && wptr-ARRPTR(txt) < txt->size ) {
-           int cmp = compareStatWord(sptr,wptr,stat,txt);
-           if ( cmp<0 ) {
+   if (stat->size < 100 * txt->size)
+   {                           /* merge */
+       while (sptr - STATPTR(stat) < stat->size && wptr - ARRPTR(txt) < txt->size)
+       {
+           int         cmp = compareStatWord(sptr, wptr, stat, txt);
+
+           if (cmp < 0)
                sptr++;
-           } else if ( cmp==0 ) {
-               int n=POSDATALEN(txt,wptr);
-   
-               if (n==0) n=1;
+           else if (cmp == 0)
+           {
+               int         n = POSDATALEN(txt, wptr);
+
+               if (n == 0)
+                   n = 1;
                sptr->ndoc++;
-               sptr->nentry +=n ;
-               sptr++; wptr++;
-           } else {
-               if ( cur==len )
-                   newentry=SEI_realloc(newentry, &len);
-               newentry[cur]=wptr;
-               wptr++; cur++;
+               sptr->nentry += n;
+               sptr++;
+               wptr++;
+           }
+           else
+           {
+               if (cur == len)
+                   newentry = SEI_realloc(newentry, &len);
+               newentry[cur] = wptr;
+               wptr++;
+               cur++;
            }
        }
 
-       while( wptr-ARRPTR(txt) < txt->size ) {
-           if ( cur==len )
-               newentry=SEI_realloc(newentry, &len);
-           newentry[cur]=wptr;
-           wptr++; cur++;
+       while (wptr - ARRPTR(txt) < txt->size)
+       {
+           if (cur == len)
+               newentry = SEI_realloc(newentry, &len);
+           newentry[cur] = wptr;
+           wptr++;
+           cur++;
        }
-   } else { /* search */
-       while( wptr-ARRPTR(txt) < txt->size ) {
-           StatEntry *StopLow = STATPTR(stat);
-           StatEntry *StopHigh = (StatEntry*)STATSTRPTR(stat);
-           int cmp;
-
-           while (StopLow < StopHigh) {
-               sptr=StopLow + (StopHigh - StopLow) / 2;
-               cmp =  compareStatWord(sptr,wptr,stat,txt);
-               if (cmp==0) {
-                   int n=POSDATALEN(txt,wptr);
-                   if (n==0) n=1;
+   }
+   else
+   {                           /* search */
+       while (wptr - ARRPTR(txt) < txt->size)
+       {
+           StatEntry  *StopLow = STATPTR(stat);
+           StatEntry  *StopHigh = (StatEntry *) STATSTRPTR(stat);
+           int         cmp;
+
+           while (StopLow < StopHigh)
+           {
+               sptr = StopLow + (StopHigh - StopLow) / 2;
+               cmp = compareStatWord(sptr, wptr, stat, txt);
+               if (cmp == 0)
+               {
+                   int         n = POSDATALEN(txt, wptr);
+
+                   if (n == 0)
+                       n = 1;
                    sptr->ndoc++;
-                   sptr->nentry +=;
+                   sptr->nentry += n;
                    break;
-               } else if ( cmp < 0 )
+               }
+               else if (cmp < 0)
                    StopLow = sptr + 1;
                else
-                   StopHigh = sptr; 
+                   StopHigh = sptr;
            }
-       
-           if ( StopLow >= StopHigh ) { /* not found */
-               if ( cur==len )
-                   newentry=SEI_realloc(newentry, &len);
-               newentry[cur]=wptr;
+
+           if (StopLow >= StopHigh)
+           {                   /* not found */
+               if (cur == len)
+                   newentry = SEI_realloc(newentry, &len);
+               newentry[cur] = wptr;
                cur++;
            }
            wptr++;
-       }   
+       }
    }
 
-   
-   if ( cur==0 ) { /* no new words */ 
-       PG_FREE_IF_COPY(txt,1);
+
+   if (cur == 0)
+   {                           /* no new words */
+       PG_FREE_IF_COPY(txt, 1);
        PG_RETURN_POINTER(stat);
    }
 
    newstat = formstat(stat, txt, newentry, cur);
    pfree(newentry);
-   PG_FREE_IF_COPY(txt,1);
+   PG_FREE_IF_COPY(txt, 1);
    /* pfree(stat); */
 
    PG_RETURN_POINTER(newstat);
 }
 
-typedef struct {
-   uint32  cur;
-   tsvector *stat;
-} StatStorage;
+typedef struct
+{
+   uint32      cur;
+   tsvector   *stat;
+}  StatStorage;
 
 static void
-ts_setup_firstcall(FuncCallContext  *funcctx, tsstat *stat) {
-   TupleDesc            tupdesc;
-   MemoryContext     oldcontext;
-   StatStorage     *st;
-   
+ts_setup_firstcall(FuncCallContext *funcctx, tsstat * stat)
+{
+   TupleDesc   tupdesc;
+   MemoryContext oldcontext;
+   StatStorage *st;
+
    oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
-   st=palloc( sizeof(StatStorage) );
-   st->cur=0;
-   st->stat=palloc( stat->len );
+   st = palloc(sizeof(StatStorage));
+   st->cur = 0;
+   st->stat = palloc(stat->len);
    memcpy(st->stat, stat, stat->len);
-   funcctx->user_fctx = (void*)st;
+   funcctx->user_fctx = (void *) st;
    tupdesc = RelationNameGetTupleDesc("statinfo");
    funcctx->slot = TupleDescGetSlot(tupdesc);
    funcctx->attinmeta = TupleDescGetAttInMetadata(tupdesc);
@@ -260,162 +310,175 @@ ts_setup_firstcall(FuncCallContext  *funcctx, tsstat *stat) {
 
 
 static Datum
-ts_process_call(FuncCallContext  *funcctx) {
-   StatStorage     *st;
-   st=(StatStorage*)funcctx->user_fctx;
-
-   if ( st->cur < st->stat->size ) {
-       Datum result;
-       char* values[3];
-       char    ndoc[16];
-       char    nentry[16];
-       StatEntry *entry=STATPTR(st->stat) + st->cur;
-       HeapTuple    tuple;
-
-       values[1]=ndoc;
-       sprintf(ndoc,"%d",entry->ndoc);
-       values[2]=nentry;
-       sprintf(nentry,"%d",entry->nentry);
-       values[0]=palloc( entry->len+1 );
-       memcpy( values[0], STATSTRPTR(st->stat)+entry->pos, entry->len);
-       (values[0])[entry->len]='\0';
+ts_process_call(FuncCallContext *funcctx)
+{
+   StatStorage *st;
+
+   st = (StatStorage *) funcctx->user_fctx;
+
+   if (st->cur < st->stat->size)
+   {
+       Datum       result;
+       char       *values[3];
+       char        ndoc[16];
+       char        nentry[16];
+       StatEntry  *entry = STATPTR(st->stat) + st->cur;
+       HeapTuple   tuple;
+
+       values[1] = ndoc;
+       sprintf(ndoc, "%d", entry->ndoc);
+       values[2] = nentry;
+       sprintf(nentry, "%d", entry->nentry);
+       values[0] = palloc(entry->len + 1);
+       memcpy(values[0], STATSTRPTR(st->stat) + entry->pos, entry->len);
+       (values[0])[entry->len] = '\0';
 
        tuple = BuildTupleFromCStrings(funcctx->attinmeta, values);
        result = TupleGetDatum(funcctx->slot, tuple);
 
        pfree(values[0]);
        st->cur++;
-       return result;  
-   } else {
+       return result;
+   }
+   else
+   {
        pfree(st->stat);
        pfree(st);
    }
-   
-   return (Datum)0;
+
+   return (Datum) 0;
 }
 
 PG_FUNCTION_INFO_V1(ts_accum_finish);
-Datum           ts_accum_finish(PG_FUNCTION_ARGS);
-Datum 
-ts_accum_finish(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
-
-   if (SRF_IS_FIRSTCALL()) {
+Datum      ts_accum_finish(PG_FUNCTION_ARGS);
+Datum
+ts_accum_finish(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
+
+   if (SRF_IS_FIRSTCALL())
+   {
        funcctx = SRF_FIRSTCALL_INIT();
-       ts_setup_firstcall(funcctx, (tsstat*)PG_GETARG_POINTER(0) );
+       ts_setup_firstcall(funcctx, (tsstat *) PG_GETARG_POINTER(0));
    }
 
    funcctx = SRF_PERCALL_SETUP();
-   if (  (result=ts_process_call(funcctx)) != (Datum)0 )
+   if ((result = ts_process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
-static Oid tiOid=InvalidOid;
-static void 
-get_ti_Oid(void) {
-   int ret;
-   bool isnull; 
+static Oid tiOid = InvalidOid;
+static void
+get_ti_Oid(void)
+{
+   int         ret;
+   bool        isnull;
 
-   if ( (ret = SPI_exec("select oid from pg_type where typname='tsvector'",1)) < 0 )
+   if ((ret = SPI_exec("select oid from pg_type where typname='tsvector'", 1)) < 0)
        /* internal error */
        elog(ERROR, "SPI_exec to get tsvector oid returns %d", ret);
 
-   if ( SPI_processed<0 )
+   if (SPI_processed < 0)
        /* internal error */
        elog(ERROR, "There is no tsvector type");
-   tiOid = DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
-   if ( tiOid==InvalidOid )
+   tiOid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
+   if (tiOid == InvalidOid)
        /* internal error */
        elog(ERROR, "tsvector type has InvalidOid");
 }
 
-static tsstat*
-ts_stat_sql(text *txt) {
-   char *query=text2char(txt);
-   int i;
-   tsstat *newstat,*stat;
-   bool isnull;
-   Portal portal;
-   void    *plan;
-
-   if ( tiOid==InvalidOid ) 
+static tsstat *
+ts_stat_sql(text *txt)
+{
+   char       *query = text2char(txt);
+   int         i;
+   tsstat     *newstat,
+              *stat;
+   bool        isnull;
+   Portal      portal;
+   void       *plan;
+
+   if (tiOid == InvalidOid)
        get_ti_Oid();
 
-   if ( (plan = SPI_prepare(query,0,NULL))==NULL )
+   if ((plan = SPI_prepare(query, 0, NULL)) == NULL)
        /* internal error */
-       elog(ERROR, "SPI_prepare('%s') returns NULL",query);
+       elog(ERROR, "SPI_prepare('%s') returns NULL", query);
 
-   if ( (portal = SPI_cursor_open(NULL, plan, NULL, NULL)) == NULL )
+   if ((portal = SPI_cursor_open(NULL, plan, NULL, NULL)) == NULL)
        /* internal error */
-       elog(ERROR, "SPI_cursor_open('%s') returns NULL",query);
+       elog(ERROR, "SPI_cursor_open('%s') returns NULL", query);
 
    SPI_cursor_fetch(portal, true, 100);
 
-   if ( SPI_tuptable->tupdesc->natts != 1 )
+   if (SPI_tuptable->tupdesc->natts != 1)
        /* internal error */
        elog(ERROR, "number of fields doesn't equal to 1");
 
-   if ( SPI_gettypeid(SPI_tuptable->tupdesc, 1) != tiOid )
+   if (SPI_gettypeid(SPI_tuptable->tupdesc, 1) != tiOid)
        /* internal error */
        elog(ERROR, "column isn't of tsvector type");
 
-   stat=palloc(STATHDRSIZE);
-   stat->len=STATHDRSIZE;
-   stat->size=0;
-
-   while(SPI_processed>0) {
-       for(i=0;i<SPI_processed;i++) {
-           Datum data=SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnull);
-
-           if ( !isnull ) {
-               newstat = (tsstat*)DatumGetPointer(DirectFunctionCall2(
-                   ts_accum,
-                   PointerGetDatum(stat),
-                   data
-               ));
-               if ( stat!=newstat && stat )
+   stat = palloc(STATHDRSIZE);
+   stat->len = STATHDRSIZE;
+   stat->size = 0;
+
+   while (SPI_processed > 0)
+   {
+       for (i = 0; i < SPI_processed; i++)
+       {
+           Datum       data = SPI_getbinval(SPI_tuptable->vals[i], SPI_tuptable->tupdesc, 1, &isnull);
+
+           if (!isnull)
+           {
+               newstat = (tsstat *) DatumGetPointer(DirectFunctionCall2(
+                                                               ts_accum,
+                                                  PointerGetDatum(stat),
+                                                                    data
+                                                                     ));
+               if (stat != newstat && stat)
                    pfree(stat);
-               stat=newstat;
+               stat = newstat;
            }
-       } 
+       }
 
        SPI_freetuptable(SPI_tuptable);
-       SPI_cursor_fetch(portal, true, 100);        
-   }   
+       SPI_cursor_fetch(portal, true, 100);
+   }
 
    SPI_freetuptable(SPI_tuptable);
    SPI_cursor_close(portal);
    SPI_freeplan(plan);
    pfree(query);
 
-   return stat;    
+   return stat;
 }
 
 PG_FUNCTION_INFO_V1(ts_stat);
-Datum           ts_stat(PG_FUNCTION_ARGS);
-Datum 
-ts_stat(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
-
-   if (SRF_IS_FIRSTCALL()) {
-       tsstat *stat;
-       text    *txt=PG_GETARG_TEXT_P(0);
-   
+Datum      ts_stat(PG_FUNCTION_ARGS);
+Datum
+ts_stat(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
+
+   if (SRF_IS_FIRSTCALL())
+   {
+       tsstat     *stat;
+       text       *txt = PG_GETARG_TEXT_P(0);
+
        funcctx = SRF_FIRSTCALL_INIT();
        SPI_connect();
        stat = ts_stat_sql(txt);
-       PG_FREE_IF_COPY(txt,0); 
-       ts_setup_firstcall(funcctx, stat );
+       PG_FREE_IF_COPY(txt, 0);
+       ts_setup_firstcall(funcctx, stat);
        SPI_finish();
    }
 
    funcctx = SRF_PERCALL_SETUP();
-   if (  (result=ts_process_call(funcctx)) != (Datum)0 )
+   if ((result = ts_process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
-
-
index 023a83346cb573da7d59843d39f5a9f2e22d25e2..37d1e7b660a5196265f7d8d5388f46b0fc4e5f27 100644 (file)
@@ -8,14 +8,16 @@
 #include "utils/builtins.h"
 #include "storage/bufpage.h"
 
-typedef struct {
-   uint32  len;
-   uint32  pos;
-   uint32  ndoc;   
-   uint32  nentry; 
+typedef struct
+{
+   uint32      len;
+   uint32      pos;
+   uint32      ndoc;
+   uint32      nentry;
 }  StatEntry;
 
-typedef struct {
+typedef struct
+{
    int4        len;
    int4        size;
    char        data[1];
index 7c258f1305f445a2301bd22b6ffa20f3b4ba3885..c8002c0ab3fa72219a5c9b2b5b3fd008684c459b 100644 (file)
@@ -31,8 +31,10 @@ Datum        tsvector_out(PG_FUNCTION_ARGS);
 
 PG_FUNCTION_INFO_V1(to_tsvector);
 Datum      to_tsvector(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(to_tsvector_current);
 Datum      to_tsvector_current(PG_FUNCTION_ARGS);
+
 PG_FUNCTION_INFO_V1(to_tsvector_name);
 Datum      to_tsvector_name(PG_FUNCTION_ARGS);
 
@@ -45,32 +47,38 @@ Datum       tsvector_length(PG_FUNCTION_ARGS);
 /*
  * in/out text index type
  */
-static int 
-comparePos(const void *a, const void *b) {
-   if ( ((WordEntryPos *) a)->pos == ((WordEntryPos *) b)->pos )
+static int
+comparePos(const void *a, const void *b)
+{
+   if (((WordEntryPos *) a)->pos == ((WordEntryPos *) b)->pos)
        return 1;
-   return ( ((WordEntryPos *) a)->pos > ((WordEntryPos *) b)->pos ) ? 1 : -1;
+   return (((WordEntryPos *) a)->pos > ((WordEntryPos *) b)->pos) ? 1 : -1;
 }
 
 static int
-uniquePos(WordEntryPos *a, int4 l) {
-   WordEntryPos *ptr, *res;
+uniquePos(WordEntryPos * a, int4 l)
+{
+   WordEntryPos *ptr,
+              *res;
 
-   res=a;
-   if (l==1)
+   res = a;
+   if (l == 1)
        return l;
 
    qsort((void *) a, l, sizeof(WordEntryPos), comparePos);
 
    ptr = a + 1;
-   while (ptr - a < l) {
-       if ( ptr->pos != res->pos ) {
+   while (ptr - a < l)
+   {
+       if (ptr->pos != res->pos)
+       {
            res++;
            res->pos = ptr->pos;
            res->weight = ptr->weight;
-           if ( res-a >= MAXNUMPOS-1 || res->pos == MAXENTRYPOS-1 )
+           if (res - a >= MAXNUMPOS - 1 || res->pos == MAXENTRYPOS - 1)
                break;
-       } else if ( ptr->weight > res->weight )
+       }
+       else if (ptr->weight > res->weight)
            res->weight = ptr->weight;
        ptr++;
    }
@@ -81,27 +89,29 @@ static char *BufferStr;
 static int
 compareentry(const void *a, const void *b)
 {
-   if ( ((WordEntryIN *) a)->entry.len == ((WordEntryIN *) b)->entry.len)
+   if (((WordEntryIN *) a)->entry.len == ((WordEntryIN *) b)->entry.len)
    {
        return strncmp(
                       &BufferStr[((WordEntryIN *) a)->entry.pos],
                       &BufferStr[((WordEntryIN *) b)->entry.pos],
                       ((WordEntryIN *) a)->entry.len);
    }
-   return ( ((WordEntryIN *) a)->entry.len > ((WordEntryIN *) b)->entry.len ) ? 1 : -1;
+   return (((WordEntryIN *) a)->entry.len > ((WordEntryIN *) b)->entry.len) ? 1 : -1;
 }
 
 static int
 uniqueentry(WordEntryIN * a, int4 l, char *buf, int4 *outbuflen)
 {
-   WordEntryIN  *ptr,
+   WordEntryIN *ptr,
               *res;
 
    res = a;
-   if (l == 1) {
-       if ( a->entry.haspos ) {
-           *(uint16*)(a->pos) = uniquePos( &(a->pos[1]), *(uint16*)(a->pos));
-           *outbuflen = SHORTALIGN(res->entry.len) + (*(uint16*)(a->pos) +1 )*sizeof(WordEntryPos);
+   if (l == 1)
+   {
+       if (a->entry.haspos)
+       {
+           *(uint16 *) (a->pos) = uniquePos(&(a->pos[1]), *(uint16 *) (a->pos));
+           *outbuflen = SHORTALIGN(res->entry.len) + (*(uint16 *) (a->pos) + 1) * sizeof(WordEntryPos);
        }
        return l;
    }
@@ -115,31 +125,39 @@ uniqueentry(WordEntryIN * a, int4 l, char *buf, int4 *outbuflen)
        if (!(ptr->entry.len == res->entry.len &&
              strncmp(&buf[ptr->entry.pos], &buf[res->entry.pos], res->entry.len) == 0))
        {
-           if ( res->entry.haspos ) {
-               *(uint16*)(res->pos) = uniquePos( &(res->pos[1]), *(uint16*)(res->pos));
-               *outbuflen += *(uint16*)(res->pos) * sizeof(WordEntryPos);
+           if (res->entry.haspos)
+           {
+               *(uint16 *) (res->pos) = uniquePos(&(res->pos[1]), *(uint16 *) (res->pos));
+               *outbuflen += *(uint16 *) (res->pos) * sizeof(WordEntryPos);
            }
            *outbuflen += SHORTALIGN(res->entry.len);
            res++;
-           memcpy(res,ptr,sizeof(WordEntryIN));
-       } else if ( ptr->entry.haspos ){
-           if ( res->entry.haspos ) {
-               int4 len=*(uint16*)(ptr->pos) + 1 + *(uint16*)(res->pos);
-               res->pos=(WordEntryPos*)repalloc( res->pos, len*sizeof(WordEntryPos));
-               memcpy( &(res->pos[ *(uint16*)(res->pos) + 1 ]), 
-                   &(ptr->pos[1]), *(uint16*)(ptr->pos) * sizeof(WordEntryPos));
-               *(uint16*)(res->pos) += *(uint16*)(ptr->pos);
-               pfree( ptr->pos );
-           } else {
-               res->entry.haspos=1;
+           memcpy(res, ptr, sizeof(WordEntryIN));
+       }
+       else if (ptr->entry.haspos)
+       {
+           if (res->entry.haspos)
+           {
+               int4        len = *(uint16 *) (ptr->pos) + 1 + *(uint16 *) (res->pos);
+
+               res->pos = (WordEntryPos *) repalloc(res->pos, len * sizeof(WordEntryPos));
+               memcpy(&(res->pos[*(uint16 *) (res->pos) + 1]),
+                      &(ptr->pos[1]), *(uint16 *) (ptr->pos) * sizeof(WordEntryPos));
+               *(uint16 *) (res->pos) += *(uint16 *) (ptr->pos);
+               pfree(ptr->pos);
+           }
+           else
+           {
+               res->entry.haspos = 1;
                res->pos = ptr->pos;
            }
        }
        ptr++;
    }
-   if ( res->entry.haspos ) {
-       *(uint16*)(res->pos) = uniquePos( &(res->pos[1]), *(uint16*)(res->pos));
-       *outbuflen += *(uint16*)(res->pos) * sizeof(WordEntryPos);
+   if (res->entry.haspos)
+   {
+       *(uint16 *) (res->pos) = uniquePos(&(res->pos[1]), *(uint16 *) (res->pos));
+       *outbuflen += *(uint16 *) (res->pos) * sizeof(WordEntryPos);
    }
    *outbuflen += SHORTALIGN(res->entry.len);
 
@@ -150,7 +168,7 @@ uniqueentry(WordEntryIN * a, int4 l, char *buf, int4 *outbuflen)
 #define WAITENDWORD 2
 #define WAITNEXTCHAR   3
 #define WAITENDCMPLX   4
-#define WAITPOSINFO    5
+#define WAITPOSINFO 5
 #define INPOSINFO  6
 #define WAITPOSDELIM   7
 
@@ -172,7 +190,7 @@ gettoken_tsvector(TI_IN_STATE * state)
 
    state->curpos = state->word;
    state->state = WAITWORD;
-   state->alen=0;
+   state->alen = 0;
 
    while (1)
    {
@@ -228,14 +246,16 @@ gettoken_tsvector(TI_IN_STATE * state)
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
                *(state->curpos) = '\0';
-               return 1; 
-           } else if ( *(state->prsbuf) == ':' ) {
+               return 1;
+           }
+           else if (*(state->prsbuf) == ':')
+           {
                if (state->curpos == state->word)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
                *(state->curpos) = '\0';
-               if ( state->oprisdelim )
+               if (state->oprisdelim)
                    return 1;
                else
                    state->state = INPOSINFO;
@@ -257,10 +277,12 @@ gettoken_tsvector(TI_IN_STATE * state)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
-               if ( state->oprisdelim ) {
+               if (state->oprisdelim)
+               {
                    state->prsbuf++;
                    return 1;
-               } else
+               }
+               else
                    state->state = WAITPOSINFO;
            }
            else if (*(state->prsbuf) == '\\')
@@ -278,67 +300,87 @@ gettoken_tsvector(TI_IN_STATE * state)
                *(state->curpos) = *(state->prsbuf);
                state->curpos++;
            }
-       } else if (state->state == WAITPOSINFO) {
-           if ( *(state->prsbuf) == ':' )
-               state->state=INPOSINFO;
+       }
+       else if (state->state == WAITPOSINFO)
+       {
+           if (*(state->prsbuf) == ':')
+               state->state = INPOSINFO;
            else
                return 1;
-       } else if (state->state == INPOSINFO) {
-           if ( isdigit(*(state->prsbuf)) ) {
-               if ( state->alen==0 ) {
-                   state->alen=4;
-                   state->pos = (WordEntryPos*)palloc( sizeof(WordEntryPos)*state->alen );
-                   *(uint16*)(state->pos)=0;
-               } else if ( *(uint16*)(state->pos) +1 >= state->alen ) {
-                   state->alen *= 2; 
-                   state->pos = (WordEntryPos*)repalloc( state->pos, sizeof(WordEntryPos)*state->alen );
+       }
+       else if (state->state == INPOSINFO)
+       {
+           if (isdigit(*(state->prsbuf)))
+           {
+               if (state->alen == 0)
+               {
+                   state->alen = 4;
+                   state->pos = (WordEntryPos *) palloc(sizeof(WordEntryPos) * state->alen);
+                   *(uint16 *) (state->pos) = 0;
                }
-               (  *(uint16*)(state->pos) )++;
-               state->pos[ *(uint16*)(state->pos) ].pos = LIMITPOS(atoi(state->prsbuf));
-               if ( state->pos[ *(uint16*)(state->pos) ].pos == 0 )
+               else if (*(uint16 *) (state->pos) + 1 >= state->alen)
+               {
+                   state->alen *= 2;
+                   state->pos = (WordEntryPos *) repalloc(state->pos, sizeof(WordEntryPos) * state->alen);
+               }
+               (*(uint16 *) (state->pos))++;
+               state->pos[*(uint16 *) (state->pos)].pos = LIMITPOS(atoi(state->prsbuf));
+               if (state->pos[*(uint16 *) (state->pos)].pos == 0)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("wrong position info")));
-               state->pos[ *(uint16*)(state->pos) ].weight = 0;
+               state->pos[*(uint16 *) (state->pos)].weight = 0;
                state->state = WAITPOSDELIM;
-           } else
+           }
+           else
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("syntax error")));
-       } else if (state->state == WAITPOSDELIM) {
-           if ( *(state->prsbuf) == ',' ) {
+       }
+       else if (state->state == WAITPOSDELIM)
+       {
+           if (*(state->prsbuf) == ',')
                state->state = INPOSINFO;
-           } else if ( tolower(*(state->prsbuf)) == 'a' || *(state->prsbuf)=='*' ) {
-               if ( state->pos[ *(uint16*)(state->pos) ].weight )
+           else if (tolower(*(state->prsbuf)) == 'a' || *(state->prsbuf) == '*')
+           {
+               if (state->pos[*(uint16 *) (state->pos)].weight)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
-               state->pos[ *(uint16*)(state->pos) ].weight = 3;
-           } else if ( tolower(*(state->prsbuf)) == 'b' ) {
-               if ( state->pos[ *(uint16*)(state->pos) ].weight )
+               state->pos[*(uint16 *) (state->pos)].weight = 3;
+           }
+           else if (tolower(*(state->prsbuf)) == 'b')
+           {
+               if (state->pos[*(uint16 *) (state->pos)].weight)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
-               state->pos[ *(uint16*)(state->pos) ].weight = 2;
-           } else if ( tolower(*(state->prsbuf)) == 'c' ) {
-               if ( state->pos[ *(uint16*)(state->pos) ].weight )
+               state->pos[*(uint16 *) (state->pos)].weight = 2;
+           }
+           else if (tolower(*(state->prsbuf)) == 'c')
+           {
+               if (state->pos[*(uint16 *) (state->pos)].weight)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
-               state->pos[ *(uint16*)(state->pos) ].weight = 1;
-           } else if ( tolower(*(state->prsbuf)) == 'd' ) {
-               if ( state->pos[ *(uint16*)(state->pos) ].weight )
+               state->pos[*(uint16 *) (state->pos)].weight = 1;
+           }
+           else if (tolower(*(state->prsbuf)) == 'd')
+           {
+               if (state->pos[*(uint16 *) (state->pos)].weight)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("syntax error")));
-               state->pos[ *(uint16*)(state->pos) ].weight = 0;
-           } else if ( isspace(*(state->prsbuf)) || *(state->prsbuf) == '\0' ) {
+               state->pos[*(uint16 *) (state->pos)].weight = 0;
+           }
+           else if (isspace(*(state->prsbuf)) || *(state->prsbuf) == '\0')
                return 1;
-           } else if ( !isdigit(*(state->prsbuf)) )
+           else if (!isdigit(*(state->prsbuf)))
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
                         errmsg("syntax error")));
-       } else
+       }
+       else
            /* internal error */
            elog(ERROR, "internal error");
        state->prsbuf++;
@@ -352,11 +394,11 @@ tsvector_in(PG_FUNCTION_ARGS)
 {
    char       *buf = PG_GETARG_CSTRING(0);
    TI_IN_STATE state;
-   WordEntryIN  *arr;
+   WordEntryIN *arr;
    WordEntry  *inarr;
    int4        len = 0,
                totallen = 64;
-   tsvector       *in;
+   tsvector   *in;
    char       *tmpbuf,
               *cur;
    int4        i,
@@ -388,28 +430,30 @@ tsvector_in(PG_FUNCTION_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("word is too long")));
-       arr[len].entry.len= state.curpos - state.word;
+       arr[len].entry.len = state.curpos - state.word;
        if (cur - tmpbuf > MAXSTRPOS)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("too long value")));
-       arr[len].entry.pos=cur - tmpbuf;
+       arr[len].entry.pos = cur - tmpbuf;
        memcpy((void *) cur, (void *) state.word, arr[len].entry.len);
        cur += arr[len].entry.len;
-       if ( state.alen ) {
-           arr[len].entry.haspos=1;
+       if (state.alen)
+       {
+           arr[len].entry.haspos = 1;
            arr[len].pos = state.pos;
-       } else
-           arr[len].entry.haspos=0;
+       }
+       else
+           arr[len].entry.haspos = 0;
        len++;
    }
    pfree(state.word);
 
-   if ( len > 0 )
+   if (len > 0)
        len = uniqueentry(arr, len, tmpbuf, &buflen);
    totallen = CALCDATASIZE(len, buflen);
    in = (tsvector *) palloc(totallen);
-   memset(in,0,totallen);
+   memset(in, 0, totallen);
    in->len = totallen;
    in->size = len;
    cur = STRPTR(in);
@@ -417,14 +461,15 @@ tsvector_in(PG_FUNCTION_ARGS)
    for (i = 0; i < len; i++)
    {
        memcpy((void *) cur, (void *) &tmpbuf[arr[i].entry.pos], arr[i].entry.len);
-       arr[i].entry.pos=cur - STRPTR(in);
+       arr[i].entry.pos = cur - STRPTR(in);
        cur += SHORTALIGN(arr[i].entry.len);
-       if ( arr[i].entry.haspos ) {
-           memcpy( cur, arr[i].pos, (*(uint16*)arr[i].pos + 1) * sizeof(WordEntryPos));
-           cur +=  (*(uint16*)arr[i].pos + 1) * sizeof(WordEntryPos);
-           pfree( arr[i].pos ); 
+       if (arr[i].entry.haspos)
+       {
+           memcpy(cur, arr[i].pos, (*(uint16 *) arr[i].pos + 1) * sizeof(WordEntryPos));
+           cur += (*(uint16 *) arr[i].pos + 1) * sizeof(WordEntryPos);
+           pfree(arr[i].pos);
        }
-       memcpy( &(inarr[i]), &(arr[i].entry), sizeof(WordEntry) );
+       memcpy(&(inarr[i]), &(arr[i].entry), sizeof(WordEntry));
    }
    pfree(tmpbuf);
    pfree(arr);
@@ -434,7 +479,7 @@ tsvector_in(PG_FUNCTION_ARGS)
 Datum
 tsvector_length(PG_FUNCTION_ARGS)
 {
-   tsvector       *in = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+   tsvector   *in = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
    int4        ret = in->size;
 
    PG_FREE_IF_COPY(in, 0);
@@ -444,26 +489,28 @@ tsvector_length(PG_FUNCTION_ARGS)
 Datum
 tsvector_out(PG_FUNCTION_ARGS)
 {
-   tsvector       *out = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+   tsvector   *out = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
    char       *outbuf;
    int4        i,
                j,
-               lenbuf = 0, pp;
+               lenbuf = 0,
+               pp;
    WordEntry  *ptr = ARRPTR(out);
    char       *curin,
               *curout;
 
-       lenbuf=out->size * 2 /* '' */ + out->size - 1 /* space */ + 2 /*\0*/;
-       for (i = 0; i < out->size; i++) {
-               lenbuf += ptr[i].len*2 /*for escape */;
-               if ( ptr[i].haspos )
-                       lenbuf += 7*POSDATALEN(out, &(ptr[i]));
-       }
+   lenbuf = out->size * 2 /* '' */ + out->size - 1 /* space */ + 2 /* \0 */ ;
+   for (i = 0; i < out->size; i++)
+   {
+       lenbuf += ptr[i].len * 2 /* for escape */ ;
+       if (ptr[i].haspos)
+           lenbuf += 7 * POSDATALEN(out, &(ptr[i]));
+   }
 
    curout = outbuf = (char *) palloc(lenbuf);
    for (i = 0; i < out->size; i++)
    {
-       curin = STRPTR(out)+ptr->pos;
+       curin = STRPTR(out) + ptr->pos;
        if (i != 0)
            *curout++ = ' ';
        *curout++ = '\'';
@@ -481,27 +528,40 @@ tsvector_out(PG_FUNCTION_ARGS)
            *curout++ = *curin++;
        }
        *curout++ = '\'';
-       if ( (pp=POSDATALEN(out,ptr)) != 0 ) {
+       if ((pp = POSDATALEN(out, ptr)) != 0)
+       {
            WordEntryPos *wptr;
+
            *curout++ = ':';
-           wptr=POSDATAPTR(out,ptr);
-           while(pp) {
-               sprintf(curout,"%d",wptr->pos);
-               curout=strchr(curout,'\0');
-               switch( wptr->weight ) {
-                   case 3:   *curout++ = 'A'; break;
-                   case 2:   *curout++ = 'B'; break;
-                   case 1:   *curout++ = 'C'; break;
-                   case 0: 
-                   default: break;
+           wptr = POSDATAPTR(out, ptr);
+           while (pp)
+           {
+               sprintf(curout, "%d", wptr->pos);
+               curout = strchr(curout, '\0');
+               switch (wptr->weight)
+               {
+                   case 3:
+                       *curout++ = 'A';
+                       break;
+                   case 2:
+                       *curout++ = 'B';
+                       break;
+                   case 1:
+                       *curout++ = 'C';
+                       break;
+                   case 0:
+                   default:
+                       break;
                }
-               if ( pp>1 )     *curout++ = ',';
-               pp--; wptr++;
+               if (pp > 1)
+                   *curout++ = ',';
+               pp--;
+               wptr++;
            }
        }
        ptr++;
    }
-   *curout='\0';
+   *curout = '\0';
    outbuf[lenbuf - 1] = '\0';
    PG_FREE_IF_COPY(out, 0);
    PG_RETURN_POINTER(outbuf);
@@ -510,13 +570,15 @@ tsvector_out(PG_FUNCTION_ARGS)
 static int
 compareWORD(const void *a, const void *b)
 {
-   if (((WORD *) a)->len == ((WORD *) b)->len) {
-       int res = strncmp(
-                      ((WORD *) a)->word,
-                      ((WORD *) b)->word,
-                      ((WORD *) b)->len);
-       if ( res==0 ) 
-           return ( ((WORD *) a)->pos.pos > ((WORD *) b)->pos.pos ) ? 1 : -1;
+   if (((WORD *) a)->len == ((WORD *) b)->len)
+   {
+       int         res = strncmp(
+                                 ((WORD *) a)->word,
+                                 ((WORD *) b)->word,
+                                 ((WORD *) b)->len);
+
+       if (res == 0)
+           return (((WORD *) a)->pos.pos > ((WORD *) b)->pos.pos) ? 1 : -1;
        return res;
    }
    return (((WORD *) a)->len > ((WORD *) b)->len) ? 1 : -1;
@@ -527,14 +589,15 @@ uniqueWORD(WORD * a, int4 l)
 {
    WORD       *ptr,
               *res;
-   int tmppos;
-
-   if (l == 1) {
-       tmppos=LIMITPOS(a->pos.pos);
-       a->alen=2;
-       a->pos.apos=(uint16*)palloc( sizeof(uint16)*a->alen );
-       a->pos.apos[0]=1;
-       a->pos.apos[1]=tmppos;
+   int         tmppos;
+
+   if (l == 1)
+   {
+       tmppos = LIMITPOS(a->pos.pos);
+       a->alen = 2;
+       a->pos.apos = (uint16 *) palloc(sizeof(uint16) * a->alen);
+       a->pos.apos[0] = 1;
+       a->pos.apos[1] = tmppos;
        return l;
    }
 
@@ -542,11 +605,11 @@ uniqueWORD(WORD * a, int4 l)
    ptr = a + 1;
 
    qsort((void *) a, l, sizeof(WORD), compareWORD);
-   tmppos=LIMITPOS(a->pos.pos);
-   a->alen=2;
-   a->pos.apos=(uint16*)palloc( sizeof(uint16)*a->alen );
-   a->pos.apos[0]=1;
-   a->pos.apos[1]=tmppos;
+   tmppos = LIMITPOS(a->pos.pos);
+   a->alen = 2;
+   a->pos.apos = (uint16 *) palloc(sizeof(uint16) * a->alen);
+   a->pos.apos[0] = 1;
+   a->pos.apos[1] = tmppos;
 
    while (ptr - a < l)
    {
@@ -556,20 +619,24 @@ uniqueWORD(WORD * a, int4 l)
            res++;
            res->len = ptr->len;
            res->word = ptr->word;
-           tmppos=LIMITPOS(ptr->pos.pos);
-           res->alen=2;
-           res->pos.apos=(uint16*)palloc( sizeof(uint16)*res->alen );
-           res->pos.apos[0]=1;
-           res->pos.apos[1]=tmppos;
-       } else {
+           tmppos = LIMITPOS(ptr->pos.pos);
+           res->alen = 2;
+           res->pos.apos = (uint16 *) palloc(sizeof(uint16) * res->alen);
+           res->pos.apos[0] = 1;
+           res->pos.apos[1] = tmppos;
+       }
+       else
+       {
            pfree(ptr->word);
-           if ( res->pos.apos[0] < MAXNUMPOS-1 && res->pos.apos[ res->pos.apos[0] ] != MAXENTRYPOS-1 ) {
-               if ( res->pos.apos[0]+1 >= res->alen ) {
-                   res->alen*=2;
-                   res->pos.apos=(uint16*)repalloc( res->pos.apos, sizeof(uint16)*res->alen );
+           if (res->pos.apos[0] < MAXNUMPOS - 1 && res->pos.apos[res->pos.apos[0]] != MAXENTRYPOS - 1)
+           {
+               if (res->pos.apos[0] + 1 >= res->alen)
+               {
+                   res->alen *= 2;
+                   res->pos.apos = (uint16 *) repalloc(res->pos.apos, sizeof(uint16) * res->alen);
                }
-               res->pos.apos[ res->pos.apos[0]+1 ] = LIMITPOS(ptr->pos.pos);
-               res->pos.apos[0]++; 
+               res->pos.apos[res->pos.apos[0] + 1] = LIMITPOS(ptr->pos.pos);
+               res->pos.apos[0]++;
            }
        }
        ptr++;
@@ -584,25 +651,27 @@ uniqueWORD(WORD * a, int4 l)
 static tsvector *
 makevalue(PRSTEXT * prs)
 {
-   int4        i,j,
+   int4        i,
+               j,
                lenstr = 0,
                totallen;
-   tsvector       *in;
+   tsvector   *in;
    WordEntry  *ptr;
    char       *str,
               *cur;
 
    prs->curwords = uniqueWORD(prs->words, prs->curwords);
-   for (i = 0; i < prs->curwords; i++) {
+   for (i = 0; i < prs->curwords; i++)
+   {
        lenstr += SHORTALIGN(prs->words[i].len);
 
-       if ( prs->words[i].alen )
+       if (prs->words[i].alen)
            lenstr += sizeof(uint16) + prs->words[i].pos.apos[0] * sizeof(WordEntryPos);
    }
 
    totallen = CALCDATASIZE(prs->curwords, lenstr);
    in = (tsvector *) palloc(totallen);
-   memset(in,0,totallen);  
+   memset(in, 0, totallen);
    in->len = totallen;
    in->size = prs->curwords;
 
@@ -615,24 +684,27 @@ makevalue(PRSTEXT * prs)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
                     errmsg("value is too big")));
-       ptr->pos= cur - str;
+       ptr->pos = cur - str;
        memcpy((void *) cur, (void *) prs->words[i].word, prs->words[i].len);
        pfree(prs->words[i].word);
        cur += SHORTALIGN(prs->words[i].len);
-       if ( prs->words[i].alen ) {
+       if (prs->words[i].alen)
+       {
            WordEntryPos *wptr;
-           
-           ptr->haspos=1;
-           *(uint16*)cur = prs->words[i].pos.apos[0];
-           wptr=POSDATAPTR(in,ptr);
-           for(j=0;j<*(uint16*)cur;j++) {
-               wptr[j].weight=0;
-               wptr[j].pos=prs->words[i].pos.apos[j+1];
+
+           ptr->haspos = 1;
+           *(uint16 *) cur = prs->words[i].pos.apos[0];
+           wptr = POSDATAPTR(in, ptr);
+           for (j = 0; j < *(uint16 *) cur; j++)
+           {
+               wptr[j].weight = 0;
+               wptr[j].pos = prs->words[i].pos.apos[j + 1];
            }
            cur += sizeof(uint16) + prs->words[i].pos.apos[0] * sizeof(WordEntryPos);
            pfree(prs->words[i].pos.apos);
-       } else
-           ptr->haspos=0;
+       }
+       else
+           ptr->haspos = 0;
        ptr++;
    }
    pfree(prs->words);
@@ -645,70 +717,78 @@ to_tsvector(PG_FUNCTION_ARGS)
 {
    text       *in = PG_GETARG_TEXT_P(1);
    PRSTEXT     prs;
-   tsvector       *out = NULL;
-   TSCfgInfo *cfg=findcfg(PG_GETARG_INT32(0)); 
+   tsvector   *out = NULL;
+   TSCfgInfo  *cfg = findcfg(PG_GETARG_INT32(0));
 
    prs.lenwords = 32;
    prs.curwords = 0;
    prs.pos = 0;
    prs.words = (WORD *) palloc(sizeof(WORD) * prs.lenwords);
-   
+
    parsetext_v2(cfg, &prs, VARDATA(in), VARSIZE(in) - VARHDRSZ);
    PG_FREE_IF_COPY(in, 1);
 
    if (prs.curwords)
        out = makevalue(&prs);
-   else {
+   else
+   {
        pfree(prs.words);
-       out = palloc(CALCDATASIZE(0,0));
-       out->len = CALCDATASIZE(0,0);
+       out = palloc(CALCDATASIZE(0, 0));
+       out->len = CALCDATASIZE(0, 0);
        out->size = 0;
-   } 
+   }
    PG_RETURN_POINTER(out);
 }
 
 Datum
-to_tsvector_name(PG_FUNCTION_ARGS) {
-   text       *cfg=PG_GETARG_TEXT_P(0);
-   Datum res = DirectFunctionCall3(
-       to_tsvector,
-       Int32GetDatum( name2id_cfg( cfg ) ),
-       PG_GETARG_DATUM(1),
-       (Datum)0
+to_tsvector_name(PG_FUNCTION_ARGS)
+{
+   text       *cfg = PG_GETARG_TEXT_P(0);
+   Datum       res = DirectFunctionCall3(
+                                         to_tsvector,
+                                         Int32GetDatum(name2id_cfg(cfg)),
+                                         PG_GETARG_DATUM(1),
+                                         (Datum) 0
    );
-   PG_FREE_IF_COPY(cfg,0);
-   PG_RETURN_DATUM(res);   
+
+   PG_FREE_IF_COPY(cfg, 0);
+   PG_RETURN_DATUM(res);
 }
 
 Datum
-to_tsvector_current(PG_FUNCTION_ARGS) {
-   Datum res = DirectFunctionCall3(
-       to_tsvector,
-       Int32GetDatum( get_currcfg() ),
-       PG_GETARG_DATUM(0),
-       (Datum)0
+to_tsvector_current(PG_FUNCTION_ARGS)
+{
+   Datum       res = DirectFunctionCall3(
+                                         to_tsvector,
+                                         Int32GetDatum(get_currcfg()),
+                                         PG_GETARG_DATUM(0),
+                                         (Datum) 0
    );
-   PG_RETURN_DATUM(res);   
+
+   PG_RETURN_DATUM(res);
 }
 
 static Oid
-findFunc(char *fname) {
-   FuncCandidateList clist,ptr;
-   Oid funcid = InvalidOid;
-   List *names=makeList1(makeString(fname));
+findFunc(char *fname)
+{
+   FuncCandidateList clist,
+               ptr;
+   Oid         funcid = InvalidOid;
+   List       *names = makeList1(makeString(fname));
 
    ptr = clist = FuncnameGetCandidates(names, 1);
    freeList(names);
 
-   if ( !ptr )
+   if (!ptr)
        return funcid;
 
-   while(ptr) {
-       if ( ptr->args[0] == TEXTOID && funcid == InvalidOid )
-           funcid=ptr->oid;
-       clist=ptr->next;
+   while (ptr)
+   {
+       if (ptr->args[0] == TEXTOID && funcid == InvalidOid)
+           funcid = ptr->oid;
+       clist = ptr->next;
        pfree(ptr);
-       ptr=clist;
+       ptr = clist;
    }
 
    return funcid;
@@ -724,12 +804,12 @@ tsearch2(PG_FUNCTION_ARGS)
    Trigger    *trigger;
    Relation    rel;
    HeapTuple   rettuple = NULL;
-   TSCfgInfo *cfg=findcfg(get_currcfg()); 
+   TSCfgInfo  *cfg = findcfg(get_currcfg());
    int         numidxattr,
                i;
    PRSTEXT     prs;
    Datum       datum = (Datum) 0;
-   Oid     funcoid = InvalidOid;
+   Oid         funcoid = InvalidOid;
 
    if (!CALLED_AS_TRIGGER(fcinfo))
        /* internal error */
@@ -782,8 +862,8 @@ tsearch2(PG_FUNCTION_ARGS)
        numattr = SPI_fnumber(rel->rd_att, trigger->tgargs[i]);
        if (numattr == SPI_ERROR_NOATTRIBUTE)
        {
-           funcoid=findFunc(trigger->tgargs[i]);
-           if ( funcoid==InvalidOid )
+           funcoid = findFunc(trigger->tgargs[i]);
+           if (funcoid == InvalidOid)
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_COLUMN),
                         errmsg("could not find function or field \"%s\"",
@@ -805,19 +885,22 @@ tsearch2(PG_FUNCTION_ARGS)
        if (isnull)
            continue;
 
-       if ( funcoid!=InvalidOid ) {
-           text *txttmp = (text *) DatumGetPointer( OidFunctionCall1(
-               funcoid,
-               PointerGetDatum(txt_toasted)
-           ));
+       if (funcoid != InvalidOid)
+       {
+           text       *txttmp = (text *) DatumGetPointer(OidFunctionCall1(
+                                                                funcoid,
+                                            PointerGetDatum(txt_toasted)
+                                                                     ));
+
            txt = (text *) DatumGetPointer(PG_DETOAST_DATUM(PointerGetDatum(txttmp)));
-           if ( txt == txttmp )
+           if (txt == txttmp)
                txt_toasted = PointerGetDatum(txt);
-       } else
-            txt = (text *) DatumGetPointer(PG_DETOAST_DATUM(PointerGetDatum(txt_toasted)));
+       }
+       else
+           txt = (text *) DatumGetPointer(PG_DETOAST_DATUM(PointerGetDatum(txt_toasted)));
 
        parsetext_v2(cfg, &prs, VARDATA(txt), VARSIZE(txt) - VARHDRSZ);
-       if (txt != (text*)DatumGetPointer(txt_toasted) )
+       if (txt != (text *) DatumGetPointer(txt_toasted))
            pfree(txt);
    }
 
@@ -831,8 +914,9 @@ tsearch2(PG_FUNCTION_ARGS)
    }
    else
    {
-       tsvector *out = palloc(CALCDATASIZE(0,0));
-       out->len = CALCDATASIZE(0,0);
+       tsvector   *out = palloc(CALCDATASIZE(0, 0));
+
+       out->len = CALCDATASIZE(0, 0);
        out->size = 0;
        datum = PointerGetDatum(out);
        pfree(prs.words);
index af06e3cf52f64970bc69b4865759d68fdf43747e..bb695247463cea1dd7abb41263d76ad383bb09be 100644 (file)
 #include "utils/builtins.h"
 #include "storage/bufpage.h"
 
-typedef struct {
+typedef struct
+{
    uint32
-       haspos:1,
-       len:11, /* MAX 2Kb */
-       pos:20; /* MAX 1Mb */
+               haspos:1,
+               len:11,         /* MAX 2Kb */
+               pos:20;         /* MAX 1Mb */
 }  WordEntry;
+
 #define MAXSTRLEN ( 1<<11 )
 #define MAXSTRPOS ( 1<<20 )
 
-typedef struct {
+typedef struct
+{
    uint16
-       weight:2,
-       pos:14;
-} WordEntryPos;
-#define MAXENTRYPOS    (1<<14)
+               weight:2,
+               pos:14;
+}  WordEntryPos;
+
+#define MAXENTRYPOS (1<<14)
 #define MAXNUMPOS  256
-#define LIMITPOS(x)    ( ( (x) >= MAXENTRYPOS ) ? (MAXENTRYPOS-1) : (x) )
+#define LIMITPOS(x) ( ( (x) >= MAXENTRYPOS ) ? (MAXENTRYPOS-1) : (x) )
 
 typedef struct
 {
@@ -43,13 +47,14 @@ typedef struct
 #define STRPTR(x)  ( (char*)x + DATAHDRSIZE + ( sizeof(WordEntry) * ((tsvector*)x)->size ) )
 #define STRSIZE(x) ( ((tsvector*)x)->len - DATAHDRSIZE - ( sizeof(WordEntry) * ((tsvector*)x)->size ) )
 #define _POSDATAPTR(x,e)   (STRPTR(x)+((WordEntry*)(e))->pos+SHORTALIGN(((WordEntry*)(e))->len))
-#define POSDATALEN(x,e) ( ( ((WordEntry*)(e))->haspos ) ? (*(uint16*)_POSDATAPTR(x,e)) : 0 ) 
-#define POSDATAPTR(x,e)    ( (WordEntryPos*)( _POSDATAPTR(x,e)+sizeof(uint16) ) )
+#define POSDATALEN(x,e) ( ( ((WordEntry*)(e))->haspos ) ? (*(uint16*)_POSDATAPTR(x,e)) : 0 )
+#define POSDATAPTR(x,e) ( (WordEntryPos*)( _POSDATAPTR(x,e)+sizeof(uint16) ) )
 
 
-typedef struct {
-   WordEntry   entry;
-   WordEntryPos    *pos;
+typedef struct
+{
+   WordEntry   entry;
+   WordEntryPos *pos;
 }  WordEntryIN;
 
 typedef struct
@@ -60,7 +65,7 @@ typedef struct
    int4        len;
    int4        state;
    int4        alen;
-   WordEntryPos    *pos;
+   WordEntryPos *pos;
    bool        oprisdelim;
 }  TI_IN_STATE;
 
index cfef02db85d9e3cbbeb60862e92df98ec6f24faf..2ffd4ca5848c1e5298c41cd36470f9bc7d5e9c8a 100644 (file)
@@ -33,30 +33,33 @@ Datum       concat(PG_FUNCTION_ARGS);
 Datum
 strip(PG_FUNCTION_ARGS)
 {
-   tsvector       *in = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-   tsvector    *out;
-   int i,len=0;
-   WordEntry *arrin=ARRPTR(in), *arrout;
-   char *cur;
+   tsvector   *in = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+   tsvector   *out;
+   int         i,
+               len = 0;
+   WordEntry  *arrin = ARRPTR(in),
+              *arrout;
+   char       *cur;
 
-   for(i=0;i<in->size;i++) 
-       len += SHORTALIGN( arrin[i].len );
+   for (i = 0; i < in->size; i++)
+       len += SHORTALIGN(arrin[i].len);
 
    len = CALCDATASIZE(in->size, len);
-   out=(tsvector*)palloc(len);
-   memset(out,0,len);
-   out->len=len;
-   out->size=in->size;
-   arrout=ARRPTR(out);
-   cur=STRPTR(out);
-   for(i=0;i<in->size;i++) {
-       memcpy(cur, STRPTR(in)+arrin[i].pos, arrin[i].len);
+   out = (tsvector *) palloc(len);
+   memset(out, 0, len);
+   out->len = len;
+   out->size = in->size;
+   arrout = ARRPTR(out);
+   cur = STRPTR(out);
+   for (i = 0; i < in->size; i++)
+   {
+       memcpy(cur, STRPTR(in) + arrin[i].pos, arrin[i].len);
        arrout[i].haspos = 0;
        arrout[i].len = arrin[i].len;
        arrout[i].pos = cur - STRPTR(out);
-       cur += SHORTALIGN( arrout[i].len );
+       cur += SHORTALIGN(arrout[i].len);
    }
-       
+
    PG_FREE_IF_COPY(in, 0);
    PG_RETURN_POINTER(out);
 }
@@ -64,200 +67,263 @@ strip(PG_FUNCTION_ARGS)
 Datum
 setweight(PG_FUNCTION_ARGS)
 {
-   tsvector       *in = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-   char       cw = PG_GETARG_CHAR(1);
-   tsvector    *out;
-   int i,j;
-   WordEntry *entry;
+   tsvector   *in = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+   char        cw = PG_GETARG_CHAR(1);
+   tsvector   *out;
+   int         i,
+               j;
+   WordEntry  *entry;
    WordEntryPos *p;
-   int w=0;
+   int         w = 0;
 
-   switch(tolower(cw)) {
-       case 'a': w=3; break;
-       case 'b': w=2; break;
-       case 'c': w=1; break;
-       case 'd': w=0; break;
-       /* internal error */
-       default: elog(ERROR,"unrecognized weight");
+   switch (tolower(cw))
+   {
+       case 'a':
+           w = 3;
+           break;
+       case 'b':
+           w = 2;
+           break;
+       case 'c':
+           w = 1;
+           break;
+       case 'd':
+           w = 0;
+           break;
+           /* internal error */
+       default:
+           elog(ERROR, "unrecognized weight");
    }
 
-   out=(tsvector*)palloc(in->len);
-   memcpy(out,in,in->len);
-   entry=ARRPTR(out);
-   i=out->size;    
-   while(i--) {
-       if ( (j=POSDATALEN(out,entry)) != 0 ) {
-           p=POSDATAPTR(out,entry);
-           while(j--) {
-               p->weight=w;
+   out = (tsvector *) palloc(in->len);
+   memcpy(out, in, in->len);
+   entry = ARRPTR(out);
+   i = out->size;
+   while (i--)
+   {
+       if ((j = POSDATALEN(out, entry)) != 0)
+       {
+           p = POSDATAPTR(out, entry);
+           while (j--)
+           {
+               p->weight = w;
                p++;
            }
        }
        entry++;
    }
-       
+
    PG_FREE_IF_COPY(in, 0);
    PG_RETURN_POINTER(out);
 }
 
 static int
-compareEntry(char *ptra, WordEntry* a, char *ptrb, WordEntry* b)
+compareEntry(char *ptra, WordEntry * a, char *ptrb, WordEntry * b)
 {
-        if ( a->len == b->len)
-        {
-                return strncmp(
-                                           ptra + a->pos,
-                                           ptrb + b->pos,
-                                           a->len);
-        }
-        return ( a->len > b->len ) ? 1 : -1;
+   if (a->len == b->len)
+   {
+       return strncmp(
+                      ptra + a->pos,
+                      ptrb + b->pos,
+                      a->len);
+   }
+   return (a->len > b->len) ? 1 : -1;
 }
 
 static int4
-add_pos(tsvector *src, WordEntry *srcptr, tsvector *dest, WordEntry *destptr, int4 maxpos ) {
-   uint16 *clen = (uint16*)_POSDATAPTR(dest,destptr);
-   int i;
-   uint16 slen = POSDATALEN(src, srcptr), startlen;
-   WordEntryPos *spos=POSDATAPTR(src, srcptr), *dpos=POSDATAPTR(dest,destptr);
+add_pos(tsvector * src, WordEntry * srcptr, tsvector * dest, WordEntry * destptr, int4 maxpos)
+{
+   uint16     *clen = (uint16 *) _POSDATAPTR(dest, destptr);
+   int         i;
+   uint16      slen = POSDATALEN(src, srcptr),
+               startlen;
+   WordEntryPos *spos = POSDATAPTR(src, srcptr),
+              *dpos = POSDATAPTR(dest, destptr);
 
-   if ( ! destptr->haspos ) 
-       *clen=0;
+   if (!destptr->haspos)
+       *clen = 0;
 
    startlen = *clen;
-   for(i=0; i<slen && *clen<MAXNUMPOS && ( *clen==0 || dpos[ *clen-1 ].pos != MAXENTRYPOS-1 ) ;i++) {
-       dpos[ *clen ].weight = spos[i].weight; 
-       dpos[ *clen ].pos    = LIMITPOS(spos[i].pos + maxpos);
+   for (i = 0; i < slen && *clen < MAXNUMPOS && (*clen == 0 || dpos[*clen - 1].pos != MAXENTRYPOS - 1); i++)
+   {
+       dpos[*clen].weight = spos[i].weight;
+       dpos[*clen].pos = LIMITPOS(spos[i].pos + maxpos);
        (*clen)++;
    }
 
-   if ( *clen != startlen )
-       destptr->haspos=1; 
-   return  *clen - startlen;
+   if (*clen != startlen)
+       destptr->haspos = 1;
+   return *clen - startlen;
 }
 
 
 Datum
-concat(PG_FUNCTION_ARGS) {
-   tsvector       *in1 = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-   tsvector       *in2 = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
-   tsvector       *out;
-   WordEntry *ptr;
-   WordEntry *ptr1,*ptr2;
+concat(PG_FUNCTION_ARGS)
+{
+   tsvector   *in1 = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+   tsvector   *in2 = (tsvector *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+   tsvector   *out;
+   WordEntry  *ptr;
+   WordEntry  *ptr1,
+              *ptr2;
    WordEntryPos *p;
-   int maxpos=0,i,j,i1,i2;
-   char *cur;
-   char *data,*data1,*data2;
+   int         maxpos = 0,
+               i,
+               j,
+               i1,
+               i2;
+   char       *cur;
+   char       *data,
+              *data1,
+              *data2;
 
-   ptr=ARRPTR(in1);
-   i=in1->size;
-   while(i--) {
-       if ( (j=POSDATALEN(in1,ptr)) != 0 ) {
-           p=POSDATAPTR(in1,ptr);
-           while(j--) {
-               if ( p->pos > maxpos ) 
+   ptr = ARRPTR(in1);
+   i = in1->size;
+   while (i--)
+   {
+       if ((j = POSDATALEN(in1, ptr)) != 0)
+       {
+           p = POSDATAPTR(in1, ptr);
+           while (j--)
+           {
+               if (p->pos > maxpos)
                    maxpos = p->pos;
                p++;
            }
        }
        ptr++;
    }
-   
-   ptr1=ARRPTR(in1); ptr2=ARRPTR(in2);
-   data1=STRPTR(in1); data2=STRPTR(in2);
-   i1=in1->size;   i2=in2->size;
-   out=(tsvector*)palloc( in1->len + in2->len );
-   memset(out,0,in1->len + in2->len);
+
+   ptr1 = ARRPTR(in1);
+   ptr2 = ARRPTR(in2);
+   data1 = STRPTR(in1);
+   data2 = STRPTR(in2);
+   i1 = in1->size;
+   i2 = in2->size;
+   out = (tsvector *) palloc(in1->len + in2->len);
+   memset(out, 0, in1->len + in2->len);
    out->len = in1->len + in2->len;
    out->size = in1->size + in2->size;
-   data=cur=STRPTR(out);
-   ptr=ARRPTR(out);
-   while( i1 && i2 ) {
-       int cmp=compareEntry(data1,ptr1,data2,ptr2);
-       if ( cmp < 0 ) { /* in1 first */
+   data = cur = STRPTR(out);
+   ptr = ARRPTR(out);
+   while (i1 && i2)
+   {
+       int         cmp = compareEntry(data1, ptr1, data2, ptr2);
+
+       if (cmp < 0)
+       {                       /* in1 first */
            ptr->haspos = ptr1->haspos;
            ptr->len = ptr1->len;
-           memcpy( cur, data1 + ptr1->pos, ptr1->len );
-           ptr->pos = cur - data; 
-           cur+=SHORTALIGN(ptr1->len);
-           if ( ptr->haspos ) {
-               memcpy(cur, _POSDATAPTR(in1, ptr1), POSDATALEN(in1, ptr1)*sizeof(WordEntryPos) + sizeof(uint16));
-               cur+=POSDATALEN(in1, ptr1)*sizeof(WordEntryPos) + sizeof(uint16);
+           memcpy(cur, data1 + ptr1->pos, ptr1->len);
+           ptr->pos = cur - data;
+           cur += SHORTALIGN(ptr1->len);
+           if (ptr->haspos)
+           {
+               memcpy(cur, _POSDATAPTR(in1, ptr1), POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16));
+               cur += POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16);
            }
-           ptr++; ptr1++; i1--;
-       } else if ( cmp>0 ) { /* in2 first */ 
+           ptr++;
+           ptr1++;
+           i1--;
+       }
+       else if (cmp > 0)
+       {                       /* in2 first */
            ptr->haspos = ptr2->haspos;
            ptr->len = ptr2->len;
-           memcpy( cur, data2 + ptr2->pos, ptr2->len );
-           ptr->pos = cur - data; 
-           cur+=SHORTALIGN(ptr2->len);
-           if ( ptr->haspos ) {
-               int addlen = add_pos(in2, ptr2, out, ptr, maxpos );
-               if ( addlen == 0 )
-                   ptr->haspos=0;
+           memcpy(cur, data2 + ptr2->pos, ptr2->len);
+           ptr->pos = cur - data;
+           cur += SHORTALIGN(ptr2->len);
+           if (ptr->haspos)
+           {
+               int         addlen = add_pos(in2, ptr2, out, ptr, maxpos);
+
+               if (addlen == 0)
+                   ptr->haspos = 0;
                else
-                   cur += addlen*sizeof(WordEntryPos) + sizeof(uint16); 
+                   cur += addlen * sizeof(WordEntryPos) + sizeof(uint16);
            }
-           ptr++; ptr2++; i2--;
-       } else {
+           ptr++;
+           ptr2++;
+           i2--;
+       }
+       else
+       {
            ptr->haspos = ptr1->haspos | ptr2->haspos;
            ptr->len = ptr1->len;
-           memcpy( cur, data1 + ptr1->pos, ptr1->len );
-           ptr->pos = cur - data; 
-           cur+=SHORTALIGN(ptr1->len);
-           if ( ptr->haspos ) {
-               if ( ptr1->haspos ) {
-                   memcpy(cur, _POSDATAPTR(in1, ptr1), POSDATALEN(in1, ptr1)*sizeof(WordEntryPos) + sizeof(uint16));
-                   cur+=POSDATALEN(in1, ptr1)*sizeof(WordEntryPos) + sizeof(uint16);
-                   if ( ptr2->haspos )
-                       cur += add_pos(in2, ptr2, out, ptr, maxpos )*sizeof(WordEntryPos);
-               } else if ( ptr2->haspos ) {
-                   int addlen = add_pos(in2, ptr2, out, ptr, maxpos );
-                   if ( addlen == 0 )
-                       ptr->haspos=0;
+           memcpy(cur, data1 + ptr1->pos, ptr1->len);
+           ptr->pos = cur - data;
+           cur += SHORTALIGN(ptr1->len);
+           if (ptr->haspos)
+           {
+               if (ptr1->haspos)
+               {
+                   memcpy(cur, _POSDATAPTR(in1, ptr1), POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16));
+                   cur += POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16);
+                   if (ptr2->haspos)
+                       cur += add_pos(in2, ptr2, out, ptr, maxpos) * sizeof(WordEntryPos);
+               }
+               else if (ptr2->haspos)
+               {
+                   int         addlen = add_pos(in2, ptr2, out, ptr, maxpos);
+
+                   if (addlen == 0)
+                       ptr->haspos = 0;
                    else
-                       cur += addlen*sizeof(WordEntryPos) + sizeof(uint16); 
+                       cur += addlen * sizeof(WordEntryPos) + sizeof(uint16);
                }
            }
-           ptr++; ptr1++; ptr2++; i1--; i2--;
+           ptr++;
+           ptr1++;
+           ptr2++;
+           i1--;
+           i2--;
        }
    }
 
-   while(i1) {
+   while (i1)
+   {
        ptr->haspos = ptr1->haspos;
        ptr->len = ptr1->len;
-       memcpy( cur, data1 + ptr1->pos, ptr1->len );
-       ptr->pos = cur - data; 
-       cur+=SHORTALIGN(ptr1->len);
-       if ( ptr->haspos ) {
-           memcpy(cur, _POSDATAPTR(in1, ptr1), POSDATALEN(in1, ptr1)*sizeof(WordEntryPos) + sizeof(uint16));
-           cur+=POSDATALEN(in1, ptr1)*sizeof(WordEntryPos) + sizeof(uint16);
+       memcpy(cur, data1 + ptr1->pos, ptr1->len);
+       ptr->pos = cur - data;
+       cur += SHORTALIGN(ptr1->len);
+       if (ptr->haspos)
+       {
+           memcpy(cur, _POSDATAPTR(in1, ptr1), POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16));
+           cur += POSDATALEN(in1, ptr1) * sizeof(WordEntryPos) + sizeof(uint16);
        }
-       ptr++; ptr1++; i1--;
+       ptr++;
+       ptr1++;
+       i1--;
    }
 
-   while(i2) {
+   while (i2)
+   {
        ptr->haspos = ptr2->haspos;
        ptr->len = ptr2->len;
-       memcpy( cur, data2 + ptr2->pos, ptr2->len );
-       ptr->pos = cur - data; 
-       cur+=SHORTALIGN(ptr2->len);
-       if ( ptr->haspos ) {
-           int addlen = add_pos(in2, ptr2, out, ptr, maxpos );
-           if ( addlen == 0 )
-               ptr->haspos=0;
+       memcpy(cur, data2 + ptr2->pos, ptr2->len);
+       ptr->pos = cur - data;
+       cur += SHORTALIGN(ptr2->len);
+       if (ptr->haspos)
+       {
+           int         addlen = add_pos(in2, ptr2, out, ptr, maxpos);
+
+           if (addlen == 0)
+               ptr->haspos = 0;
            else
-               cur += addlen*sizeof(WordEntryPos) + sizeof(uint16); 
+               cur += addlen * sizeof(WordEntryPos) + sizeof(uint16);
        }
-       ptr++; ptr2++; i2--;
+       ptr++;
+       ptr2++;
+       i2--;
    }
-   
-   out->size=ptr-ARRPTR(out);
-   out->len = CALCDATASIZE( out->size, cur-data );
-   if ( data != STRPTR(out) )
-       memmove( STRPTR(out), data, cur-data );
+
+   out->size = ptr - ARRPTR(out);
+   out->len = CALCDATASIZE(out->size, cur - data);
+   if (data != STRPTR(out))
+       memmove(STRPTR(out), data, cur - data);
 
    PG_FREE_IF_COPY(in1, 0);
    PG_FREE_IF_COPY(in2, 1);
    PG_RETURN_POINTER(out);
 }
-
index ea596c507cab681cdfe50f47857b7b514f7d063d..bbf3271b666f4682143cc69f200e8759b084f15a 100644 (file)
@@ -1,6 +1,6 @@
 #include "deflex.h"
 
-const char *lex_descr[]={
+const char *lex_descr[] = {
    "",
    "Latin word",
    "Non-latin word",
@@ -27,7 +27,7 @@ const char *lex_descr[]={
    "HTML Entity"
 };
 
-const char *tok_alias[]={
+const char *tok_alias[] = {
    "",
    "lword",
    "nlword",
@@ -53,4 +53,3 @@ const char *tok_alias[]={
    "uint",
    "entity"
 };
-
index deff94ce9045b99d383c398678cae31114530660..b7e45e51885f449d9160e46721cb43bf62068bf4 100644 (file)
@@ -1,5 +1,5 @@
-/* 
- * interface functions to parser 
+/*
+ * interface functions to parser
  * Teodor Sigaev <[email protected]>
  */
 #include <errno.h>
 
 /*********top interface**********/
 
-static void *plan_getparser=NULL;
-static Oid current_parser_id=InvalidOid;
+static void *plan_getparser = NULL;
+static Oid current_parser_id = InvalidOid;
 
 void
-init_prs(Oid id, WParserInfo *prs) {
-   Oid arg[1]={ OIDOID };
-   bool isnull;
-   Datum pars[1]={ ObjectIdGetDatum(id) };
-   int stat;
-
-   memset(prs,0,sizeof(WParserInfo));
+init_prs(Oid id, WParserInfo * prs)
+{
+   Oid         arg[1] = {OIDOID};
+   bool        isnull;
+   Datum       pars[1] = {ObjectIdGetDatum(id)};
+   int         stat;
+
+   memset(prs, 0, sizeof(WParserInfo));
    SPI_connect();
-   if ( !plan_getparser ) {
-       plan_getparser = SPI_saveplan( SPI_prepare( "select prs_start, prs_nexttoken, prs_end, prs_lextype, prs_headline from pg_ts_parser where oid = $1" , 1, arg ) );
-       if ( !plan_getparser ) 
+   if (!plan_getparser)
+   {
+       plan_getparser = SPI_saveplan(SPI_prepare("select prs_start, prs_nexttoken, prs_end, prs_lextype, prs_headline from pg_ts_parser where oid = $1", 1, arg));
+       if (!plan_getparser)
            ts_error(ERROR, "SPI_prepare() failed");
    }
 
    stat = SPI_execp(plan_getparser, pars, " ", 1);
-   if ( stat < 0 )
-       ts_error (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 ) {
-       Oid oid=InvalidOid;
-       oid=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
+   if (stat < 0)
+       ts_error(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+   {
+       Oid         oid = InvalidOid;
+
+       oid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
        fmgr_info_cxt(oid, &(prs->start_info), TopMemoryContext);
-       oid=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 2, &isnull) );
+       oid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 2, &isnull));
        fmgr_info_cxt(oid, &(prs->getlexeme_info), TopMemoryContext);
-       oid=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 3, &isnull) );
+       oid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 3, &isnull));
        fmgr_info_cxt(oid, &(prs->end_info), TopMemoryContext);
-       prs->lextype=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 4, &isnull) );
-       oid=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 5, &isnull) );
+       prs->lextype = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 4, &isnull));
+       oid = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 5, &isnull));
        fmgr_info_cxt(oid, &(prs->headline_info), TopMemoryContext);
-       prs->prs_id=id;
-   } else 
+       prs->prs_id = id;
+   }
+   else
        ts_error(ERROR, "No parser with id %d", id);
    SPI_finish();
 }
 
-typedef struct {
-   WParserInfo *last_prs;
-   int     len;
-   int     reallen;
-   WParserInfo *list;
+typedef struct
+{
+   WParserInfo *last_prs;
+   int         len;
+   int         reallen;
+   WParserInfo *list;
    SNMap       name2id_map;
-} PrsList;
+}  PrsList;
 
-static PrsList PList = {NULL,0,0,NULL,{0,0,NULL}};
+static PrsList PList = {NULL, 0, 0, NULL, {0, 0, NULL}};
 
-void    
-reset_prs(void) {
-   freeSNMap( &(PList.name2id_map) );
-   if ( PList.list )
+void
+reset_prs(void)
+{
+   freeSNMap(&(PList.name2id_map));
+   if (PList.list)
        free(PList.list);
-   memset(&PList,0,sizeof(PrsList));
+   memset(&PList, 0, sizeof(PrsList));
 }
 
 static int
-compareprs(const void *a, const void *b) {
-   return ((WParserInfo*)a)->prs_id - ((WParserInfo*)b)->prs_id;
+compareprs(const void *a, const void *b)
+{
+   return ((WParserInfo *) a)->prs_id - ((WParserInfo *) b)->prs_id;
 }
 
 WParserInfo *
-findprs(Oid id) {
+findprs(Oid id)
+{
    /* last used prs */
-   if ( PList.last_prs && PList.last_prs->prs_id==id )
+   if (PList.last_prs && PList.last_prs->prs_id == id)
        return PList.last_prs;
 
    /* already used prs */
-   if ( PList.len != 0 ) {
+   if (PList.len != 0)
+   {
        WParserInfo key;
-       key.prs_id=id;
+
+       key.prs_id = id;
        PList.last_prs = bsearch(&key, PList.list, PList.len, sizeof(WParserInfo), compareprs);
-       if ( PList.last_prs != NULL )
+       if (PList.last_prs != NULL)
            return PList.last_prs;
    }
 
    /* last chance */
-   if ( PList.len==PList.reallen ) {
+   if (PList.len == PList.reallen)
+   {
        WParserInfo *tmp;
-       int reallen = ( PList.reallen ) ? 2*PList.reallen : 16;
-       tmp=(WParserInfo*)realloc(PList.list,sizeof(WParserInfo)*reallen);
-       if ( !tmp ) 
-           ts_error(ERROR,"No memory");
-       PList.reallen=reallen;
-       PList.list=tmp;
+       int         reallen = (PList.reallen) ? 2 * PList.reallen : 16;
+
+       tmp = (WParserInfo *) realloc(PList.list, sizeof(WParserInfo) * reallen);
+       if (!tmp)
+           ts_error(ERROR, "No memory");
+       PList.reallen = reallen;
+       PList.list = tmp;
    }
-   PList.last_prs=&(PList.list[PList.len]);
+   PList.last_prs = &(PList.list[PList.len]);
    init_prs(id, PList.last_prs);
    PList.len++;
    qsort(PList.list, PList.len, sizeof(WParserInfo), compareprs);
-   return findprs(id); /* qsort changed order!! */;
+   return findprs(id); /* qsort changed order!! */ ;
 }
 
-static void *plan_name2id=NULL;
+static void *plan_name2id = NULL;
 
 Oid
-name2id_prs(text *name) {
-   Oid arg[1]={ TEXTOID };
-   bool isnull;
-   Datum pars[1]={ PointerGetDatum(name) };
-   int stat;
-   Oid id=findSNMap_t( &(PList.name2id_map), name );
-   
-   if ( id ) 
+name2id_prs(text *name)
+{
+   Oid         arg[1] = {TEXTOID};
+   bool        isnull;
+   Datum       pars[1] = {PointerGetDatum(name)};
+   int         stat;
+   Oid         id = findSNMap_t(&(PList.name2id_map), name);
+
+   if (id)
        return id;
-   
+
 
    SPI_connect();
-   if ( !plan_name2id ) {
-       plan_name2id = SPI_saveplan( SPI_prepare( "select oid from pg_ts_parser where prs_name = $1" , 1, arg ) );
-       if ( !plan_name2id ) 
+   if (!plan_name2id)
+   {
+       plan_name2id = SPI_saveplan(SPI_prepare("select oid from pg_ts_parser where prs_name = $1", 1, arg));
+       if (!plan_name2id)
            ts_error(ERROR, "SPI_prepare() failed");
    }
 
    stat = SPI_execp(plan_name2id, pars, " ", 1);
-   if ( stat < 0 )
-       ts_error (ERROR, "SPI_execp return %d", stat);
-   if ( SPI_processed > 0 )
-       id=DatumGetObjectId( SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull) );
-   else 
+   if (stat < 0)
+       ts_error(ERROR, "SPI_execp return %d", stat);
+   if (SPI_processed > 0)
+       id = DatumGetObjectId(SPI_getbinval(SPI_tuptable->vals[0], SPI_tuptable->tupdesc, 1, &isnull));
+   else
        ts_error(ERROR, "No parser '%s'", text2char(name));
    SPI_finish();
-   addSNMap_t( &(PList.name2id_map), name, id );
+   addSNMap_t(&(PList.name2id_map), name, id);
    return id;
 }
 
 
 /******sql-level interface******/
-typedef struct {
-   int     cur;
-   LexDescr    *list;
-} TypeStorage;
+typedef struct
+{
+   int         cur;
+   LexDescr   *list;
+}  TypeStorage;
 
 static void
-setup_firstcall(FuncCallContext  *funcctx, Oid prsid) {
-   TupleDesc            tupdesc;
-   MemoryContext     oldcontext;
-   TypeStorage     *st;
-   WParserInfo *prs = findprs(prsid); 
+setup_firstcall(FuncCallContext *funcctx, Oid prsid)
+{
+   TupleDesc   tupdesc;
+   MemoryContext oldcontext;
+   TypeStorage *st;
+   WParserInfo *prs = findprs(prsid);
 
    oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
 
-   st=(TypeStorage*)palloc( sizeof(TypeStorage) );
-   st->cur=0;
-   st->list = (LexDescr*)DatumGetPointer(
-       OidFunctionCall1( prs->lextype, PointerGetDatum(prs->prs) )
-   );
-   funcctx->user_fctx = (void*)st;
+   st = (TypeStorage *) palloc(sizeof(TypeStorage));
+   st->cur = 0;
+   st->list = (LexDescr *) DatumGetPointer(
+               OidFunctionCall1(prs->lextype, PointerGetDatum(prs->prs))
+       );
+   funcctx->user_fctx = (void *) st;
    tupdesc = RelationNameGetTupleDesc("tokentype");
    funcctx->slot = TupleDescGetSlot(tupdesc);
    funcctx->attinmeta = TupleDescGetAttInMetadata(tupdesc);
@@ -176,20 +193,22 @@ setup_firstcall(FuncCallContext  *funcctx, Oid prsid) {
 }
 
 static Datum
-process_call(FuncCallContext  *funcctx) {
-   TypeStorage     *st;
-
-   st=(TypeStorage*)funcctx->user_fctx;
-   if (  st->list && st->list[st->cur].lexid ) {
-       Datum result;
-       char* values[3];
-       char    txtid[16];
-       HeapTuple    tuple;
-
-       values[0]=txtid;
-       sprintf(txtid,"%d",st->list[st->cur].lexid);
-       values[1]=st->list[st->cur].alias;
-       values[2]=st->list[st->cur].descr;
+process_call(FuncCallContext *funcctx)
+{
+   TypeStorage *st;
+
+   st = (TypeStorage *) funcctx->user_fctx;
+   if (st->list && st->list[st->cur].lexid)
+   {
+       Datum       result;
+       char       *values[3];
+       char        txtid[16];
+       HeapTuple   tuple;
+
+       values[0] = txtid;
+       sprintf(txtid, "%d", st->list[st->cur].lexid);
+       values[1] = st->list[st->cur].alias;
+       values[2] = st->list[st->cur].descr;
 
        tuple = BuildTupleFromCStrings(funcctx->attinmeta, values);
        result = TupleGetDatum(funcctx->slot, tuple);
@@ -198,161 +217,179 @@ process_call(FuncCallContext  *funcctx) {
        pfree(values[2]);
        st->cur++;
        return result;
-   } else {
-       if ( st->list ) pfree(st->list);
+   }
+   else
+   {
+       if (st->list)
+           pfree(st->list);
        pfree(st);
    }
-   return (Datum)0;
+   return (Datum) 0;
 }
 
 PG_FUNCTION_INFO_V1(token_type);
-Datum token_type(PG_FUNCTION_ARGS);
+Datum      token_type(PG_FUNCTION_ARGS);
 
 Datum
-token_type(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
+token_type(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
 
-   if (SRF_IS_FIRSTCALL()) { 
+   if (SRF_IS_FIRSTCALL())
+   {
        funcctx = SRF_FIRSTCALL_INIT();
-       setup_firstcall(funcctx, PG_GETARG_OID(0) );
+       setup_firstcall(funcctx, PG_GETARG_OID(0));
    }
 
    funcctx = SRF_PERCALL_SETUP();
 
-   if (  (result=process_call(funcctx)) != (Datum)0 )
+   if ((result = process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
 PG_FUNCTION_INFO_V1(token_type_byname);
-Datum token_type_byname(PG_FUNCTION_ARGS);
+Datum      token_type_byname(PG_FUNCTION_ARGS);
 Datum
-token_type_byname(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
+token_type_byname(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
+
+   if (SRF_IS_FIRSTCALL())
+   {
+       text       *name = PG_GETARG_TEXT_P(0);
 
-   if (SRF_IS_FIRSTCALL()) {
-       text *name = PG_GETARG_TEXT_P(0); 
        funcctx = SRF_FIRSTCALL_INIT();
-       setup_firstcall(funcctx, name2id_prs( name ) );
-       PG_FREE_IF_COPY(name,0);
+       setup_firstcall(funcctx, name2id_prs(name));
+       PG_FREE_IF_COPY(name, 0);
    }
 
    funcctx = SRF_PERCALL_SETUP();
 
-   if (  (result=process_call(funcctx)) != (Datum)0 )
+   if ((result = process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
 PG_FUNCTION_INFO_V1(token_type_current);
-Datum token_type_current(PG_FUNCTION_ARGS);
+Datum      token_type_current(PG_FUNCTION_ARGS);
 Datum
-token_type_current(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
+token_type_current(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
 
-   if (SRF_IS_FIRSTCALL()) {
+   if (SRF_IS_FIRSTCALL())
+   {
        funcctx = SRF_FIRSTCALL_INIT();
-       if ( current_parser_id==InvalidOid ) 
-           current_parser_id = name2id_prs( char2text("default") );
-       setup_firstcall(funcctx, current_parser_id );
+       if (current_parser_id == InvalidOid)
+           current_parser_id = name2id_prs(char2text("default"));
+       setup_firstcall(funcctx, current_parser_id);
    }
 
    funcctx = SRF_PERCALL_SETUP();
 
-   if (  (result=process_call(funcctx)) != (Datum)0 )
+   if ((result = process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
 
 PG_FUNCTION_INFO_V1(set_curprs);
-Datum set_curprs(PG_FUNCTION_ARGS);
+Datum      set_curprs(PG_FUNCTION_ARGS);
 Datum
-set_curprs(PG_FUNCTION_ARGS) {
-        findprs(PG_GETARG_OID(0));
-        current_parser_id=PG_GETARG_OID(0);
-        PG_RETURN_VOID();
+set_curprs(PG_FUNCTION_ARGS)
+{
+   findprs(PG_GETARG_OID(0));
+   current_parser_id = PG_GETARG_OID(0);
+   PG_RETURN_VOID();
 }
 
 PG_FUNCTION_INFO_V1(set_curprs_byname);
-Datum set_curprs_byname(PG_FUNCTION_ARGS);
+Datum      set_curprs_byname(PG_FUNCTION_ARGS);
 Datum
-set_curprs_byname(PG_FUNCTION_ARGS) {
-        text *name=PG_GETARG_TEXT_P(0);
-    
-        DirectFunctionCall1(
-                set_curprs,
-                ObjectIdGetDatum( name2id_prs(name) )
-        );
-        PG_FREE_IF_COPY(name, 0);
-        PG_RETURN_VOID();
+set_curprs_byname(PG_FUNCTION_ARGS)
+{
+   text       *name = PG_GETARG_TEXT_P(0);
+
+   DirectFunctionCall1(
+                       set_curprs,
+                       ObjectIdGetDatum(name2id_prs(name))
+       );
+   PG_FREE_IF_COPY(name, 0);
+   PG_RETURN_VOID();
 }
 
-typedef struct {
-   int type;
-   char    *lexem;
-} LexemEntry;
+typedef struct
+{
+   int         type;
+   char       *lexem;
+}  LexemEntry;
+
+typedef struct
+{
+   int         cur;
+   int         len;
+   LexemEntry *list;
+}  PrsStorage;
 
-typedef struct {
-   int cur;
-   int len;
-   LexemEntry  *list;
-} PrsStorage;
-   
 
 static void
-prs_setup_firstcall(FuncCallContext  *funcctx, int prsid, text *txt) {
-   TupleDesc            tupdesc;
-   MemoryContext     oldcontext;
-   PrsStorage  *st;
-   WParserInfo *prs = findprs(prsid); 
-   char    *lex=NULL;
-   int     llen=0, type=0; 
+prs_setup_firstcall(FuncCallContext *funcctx, int prsid, text *txt)
+{
+   TupleDesc   tupdesc;
+   MemoryContext oldcontext;
+   PrsStorage *st;
+   WParserInfo *prs = findprs(prsid);
+   char       *lex = NULL;
+   int         llen = 0,
+               type = 0;
 
    oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
 
-   st=(PrsStorage*)palloc( sizeof(PrsStorage) );
-   st->cur=0;
-   st->len=16;
-   st->list=(LexemEntry*)palloc( sizeof(LexemEntry)*st->len );
-
-   prs->prs = (void*)DatumGetPointer(
-       FunctionCall2(
-           &(prs->start_info),
-           PointerGetDatum(VARDATA(txt)),
-           Int32GetDatum(VARSIZE(txt)-VARHDRSZ)
-       )
-   );
-
-   while( ( type=DatumGetInt32(FunctionCall3(
-           &(prs->getlexeme_info),
-           PointerGetDatum(prs->prs),
-           PointerGetDatum(&lex),
-           PointerGetDatum(&llen))) ) != 0 ) {
-
-       if ( st->cur>=st->len ) {
-           st->len=2*st->len;
-           st->list=(LexemEntry*)repalloc(st->list, sizeof(LexemEntry)*st->len);
+   st = (PrsStorage *) palloc(sizeof(PrsStorage));
+   st->cur = 0;
+   st->len = 16;
+   st->list = (LexemEntry *) palloc(sizeof(LexemEntry) * st->len);
+
+   prs->prs = (void *) DatumGetPointer(
+                                       FunctionCall2(
+                                                     &(prs->start_info),
+                                          PointerGetDatum(VARDATA(txt)),
+                                  Int32GetDatum(VARSIZE(txt) - VARHDRSZ)
+                                                     )
+       );
+
+   while ((type = DatumGetInt32(FunctionCall3(
+                                              &(prs->getlexeme_info),
+                                              PointerGetDatum(prs->prs),
+                                              PointerGetDatum(&lex),
+                                         PointerGetDatum(&llen)))) != 0)
+   {
+
+       if (st->cur >= st->len)
+       {
+           st->len = 2 * st->len;
+           st->list = (LexemEntry *) repalloc(st->list, sizeof(LexemEntry) * st->len);
        }
-       st->list[st->cur].lexem = palloc(llen+1);
-       memcpy( st->list[st->cur].lexem, lex, llen);
-       st->list[st->cur].lexem[llen]='\0';
-       st->list[st->cur].type=type;
+       st->list[st->cur].lexem = palloc(llen + 1);
+       memcpy(st->list[st->cur].lexem, lex, llen);
+       st->list[st->cur].lexem[llen] = '\0';
+       st->list[st->cur].type = type;
        st->cur++;
    }
-       
+
    FunctionCall1(
-       &(prs->end_info),
-       PointerGetDatum(prs->prs)
-   );
+                 &(prs->end_info),
+                 PointerGetDatum(prs->prs)
+       );
 
-   st->len=st->cur;
-   st->cur=0;
-   
-   funcctx->user_fctx = (void*)st;
+   st->len = st->cur;
+   st->cur = 0;
+
+   funcctx->user_fctx = (void *) st;
    tupdesc = RelationNameGetTupleDesc("tokenout");
    funcctx->slot = TupleDescGetSlot(tupdesc);
    funcctx->attinmeta = TupleDescGetAttInMetadata(tupdesc);
@@ -360,132 +397,148 @@ prs_setup_firstcall(FuncCallContext  *funcctx, int prsid, text *txt) {
 }
 
 static Datum
-prs_process_call(FuncCallContext  *funcctx) {
-   PrsStorage  *st;
-
-   st=(PrsStorage*)funcctx->user_fctx;
-   if (  st->cur < st->len ) {
-       Datum result;
-       char* values[2];
-       char    tid[16];
-       HeapTuple    tuple;
-
-       values[0]=tid;
-       sprintf(tid,"%d",st->list[st->cur].type);
-       values[1]=st->list[st->cur].lexem;
+prs_process_call(FuncCallContext *funcctx)
+{
+   PrsStorage *st;
+
+   st = (PrsStorage *) funcctx->user_fctx;
+   if (st->cur < st->len)
+   {
+       Datum       result;
+       char       *values[2];
+       char        tid[16];
+       HeapTuple   tuple;
+
+       values[0] = tid;
+       sprintf(tid, "%d", st->list[st->cur].type);
+       values[1] = st->list[st->cur].lexem;
        tuple = BuildTupleFromCStrings(funcctx->attinmeta, values);
        result = TupleGetDatum(funcctx->slot, tuple);
 
        pfree(values[1]);
        st->cur++;
        return result;
-   } else {
-       if ( st->list ) pfree(st->list);
+   }
+   else
+   {
+       if (st->list)
+           pfree(st->list);
        pfree(st);
    }
-   return (Datum)0;
+   return (Datum) 0;
 }
 
-           
+
 
 PG_FUNCTION_INFO_V1(parse);
-Datum parse(PG_FUNCTION_ARGS);
+Datum      parse(PG_FUNCTION_ARGS);
 Datum
-parse(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
+parse(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
+
+   if (SRF_IS_FIRSTCALL())
+   {
+       text       *txt = PG_GETARG_TEXT_P(1);
 
-   if (SRF_IS_FIRSTCALL()) {
-       text *txt = PG_GETARG_TEXT_P(1); 
        funcctx = SRF_FIRSTCALL_INIT();
-       prs_setup_firstcall(funcctx, PG_GETARG_OID(0),txt );
-       PG_FREE_IF_COPY(txt,1);
+       prs_setup_firstcall(funcctx, PG_GETARG_OID(0), txt);
+       PG_FREE_IF_COPY(txt, 1);
    }
 
    funcctx = SRF_PERCALL_SETUP();
 
-   if (  (result=prs_process_call(funcctx)) != (Datum)0 )
+   if ((result = prs_process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
 PG_FUNCTION_INFO_V1(parse_byname);
-Datum parse_byname(PG_FUNCTION_ARGS);
+Datum      parse_byname(PG_FUNCTION_ARGS);
 Datum
-parse_byname(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
+parse_byname(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
+
+   if (SRF_IS_FIRSTCALL())
+   {
+       text       *name = PG_GETARG_TEXT_P(0);
+       text       *txt = PG_GETARG_TEXT_P(1);
 
-   if (SRF_IS_FIRSTCALL()) {
-       text *name = PG_GETARG_TEXT_P(0); 
-       text *txt = PG_GETARG_TEXT_P(1); 
        funcctx = SRF_FIRSTCALL_INIT();
-       prs_setup_firstcall(funcctx, name2id_prs( name ),txt );
-       PG_FREE_IF_COPY(name,0);
-       PG_FREE_IF_COPY(txt,1);
+       prs_setup_firstcall(funcctx, name2id_prs(name), txt);
+       PG_FREE_IF_COPY(name, 0);
+       PG_FREE_IF_COPY(txt, 1);
    }
 
    funcctx = SRF_PERCALL_SETUP();
 
-   if (  (result=prs_process_call(funcctx)) != (Datum)0 )
+   if ((result = prs_process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
 
 PG_FUNCTION_INFO_V1(parse_current);
-Datum parse_current(PG_FUNCTION_ARGS);
+Datum      parse_current(PG_FUNCTION_ARGS);
 Datum
-parse_current(PG_FUNCTION_ARGS) {
-   FuncCallContext  *funcctx;
-   Datum result;
+parse_current(PG_FUNCTION_ARGS)
+{
+   FuncCallContext *funcctx;
+   Datum       result;
+
+   if (SRF_IS_FIRSTCALL())
+   {
+       text       *txt = PG_GETARG_TEXT_P(0);
 
-   if (SRF_IS_FIRSTCALL()) {
-       text *txt = PG_GETARG_TEXT_P(0); 
        funcctx = SRF_FIRSTCALL_INIT();
-       if ( current_parser_id==InvalidOid ) 
-           current_parser_id = name2id_prs( char2text("default") );
-       prs_setup_firstcall(funcctx, current_parser_id,txt );
-       PG_FREE_IF_COPY(txt,0);
+       if (current_parser_id == InvalidOid)
+           current_parser_id = name2id_prs(char2text("default"));
+       prs_setup_firstcall(funcctx, current_parser_id, txt);
+       PG_FREE_IF_COPY(txt, 0);
    }
 
    funcctx = SRF_PERCALL_SETUP();
 
-   if (  (result=prs_process_call(funcctx)) != (Datum)0 )
+   if ((result = prs_process_call(funcctx)) != (Datum) 0)
        SRF_RETURN_NEXT(funcctx, result);
    SRF_RETURN_DONE(funcctx);
 }
 
 PG_FUNCTION_INFO_V1(headline);
-Datum headline(PG_FUNCTION_ARGS);
+Datum      headline(PG_FUNCTION_ARGS);
 Datum
-headline(PG_FUNCTION_ARGS) {
-   TSCfgInfo *cfg=findcfg(PG_GETARG_OID(0));
-   text       *in = PG_GETARG_TEXT_P(1);
+headline(PG_FUNCTION_ARGS)
+{
+   TSCfgInfo  *cfg = findcfg(PG_GETARG_OID(0));
+   text       *in = PG_GETARG_TEXT_P(1);
    QUERYTYPE  *query = (QUERYTYPE *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(2)));
-   text       *opt=( PG_NARGS()>3 && PG_GETARG_POINTER(3) ) ? PG_GETARG_TEXT_P(3) : NULL;
+   text       *opt = (PG_NARGS() > 3 && PG_GETARG_POINTER(3)) ? PG_GETARG_TEXT_P(3) : NULL;
    HLPRSTEXT   prs;
-   text *out;
+   text       *out;
    WParserInfo *prsobj = findprs(cfg->prs_id);
 
-   memset(&prs,0,sizeof(HLPRSTEXT));
+   memset(&prs, 0, sizeof(HLPRSTEXT));
    prs.lenwords = 32;
    prs.words = (HLWORD *) palloc(sizeof(HLWORD) * prs.lenwords);
    hlparsetext(cfg, &prs, query, VARDATA(in), VARSIZE(in) - VARHDRSZ);
 
 
    FunctionCall3(
-       &(prsobj->headline_info),
-       PointerGetDatum(&prs),
-       PointerGetDatum(opt),
-       PointerGetDatum(query)
-   );
+                 &(prsobj->headline_info),
+                 PointerGetDatum(&prs),
+                 PointerGetDatum(opt),
+                 PointerGetDatum(query)
+       );
 
    out = genhl(&prs);
 
-   PG_FREE_IF_COPY(in,1);
-   PG_FREE_IF_COPY(query,2);
-   if ( opt ) PG_FREE_IF_COPY(opt,3);
+   PG_FREE_IF_COPY(in, 1);
+   PG_FREE_IF_COPY(query, 2);
+   if (opt)
+       PG_FREE_IF_COPY(opt, 3);
    pfree(prs.words);
    pfree(prs.startsel);
    pfree(prs.stopsel);
@@ -495,35 +548,34 @@ headline(PG_FUNCTION_ARGS) {
 
 
 PG_FUNCTION_INFO_V1(headline_byname);
-Datum headline_byname(PG_FUNCTION_ARGS);
+Datum      headline_byname(PG_FUNCTION_ARGS);
 Datum
-headline_byname(PG_FUNCTION_ARGS) {
-   text *cfg=PG_GETARG_TEXT_P(0);
-
-   Datum out=DirectFunctionCall4(
-       headline,
-       ObjectIdGetDatum(name2id_cfg( cfg ) ),
-       PG_GETARG_DATUM(1),
-       PG_GETARG_DATUM(2),
-       ( PG_NARGS()>3 ) ? PG_GETARG_DATUM(3) : PointerGetDatum(NULL)
+headline_byname(PG_FUNCTION_ARGS)
+{
+   text       *cfg = PG_GETARG_TEXT_P(0);
+
+   Datum       out = DirectFunctionCall4(
+                                         headline,
+                                     ObjectIdGetDatum(name2id_cfg(cfg)),
+                                         PG_GETARG_DATUM(1),
+                                         PG_GETARG_DATUM(2),
+           (PG_NARGS() > 3) ? PG_GETARG_DATUM(3) : PointerGetDatum(NULL)
    );
 
-   PG_FREE_IF_COPY(cfg,0);
-   PG_RETURN_DATUM(out);   
+   PG_FREE_IF_COPY(cfg, 0);
+   PG_RETURN_DATUM(out);
 }
 
 PG_FUNCTION_INFO_V1(headline_current);
-Datum headline_current(PG_FUNCTION_ARGS);
+Datum      headline_current(PG_FUNCTION_ARGS);
 Datum
-headline_current(PG_FUNCTION_ARGS) {
+headline_current(PG_FUNCTION_ARGS)
+{
    PG_RETURN_DATUM(DirectFunctionCall4(
-       headline,
-       ObjectIdGetDatum(get_currcfg()),
-       PG_GETARG_DATUM(0),
-       PG_GETARG_DATUM(1),
-       ( PG_NARGS()>2 ) ? PG_GETARG_DATUM(2) : PointerGetDatum(NULL)
-   ));
+                                       headline,
+                                       ObjectIdGetDatum(get_currcfg()),
+                                       PG_GETARG_DATUM(0),
+                                       PG_GETARG_DATUM(1),
+           (PG_NARGS() > 2) ? PG_GETARG_DATUM(2) : PointerGetDatum(NULL)
+                                       ));
 }
-
-
-
index a8afc564a1aad762460e2181cafdbd794c2490d3..c3c44151f0e71010326f00701526435605747e18 100644 (file)
@@ -3,26 +3,28 @@
 #include "postgres.h"
 #include "fmgr.h"
 
-typedef struct {
-   Oid prs_id;
-   FmgrInfo start_info;
-   FmgrInfo getlexeme_info;
-   FmgrInfo end_info;
-   FmgrInfo headline_info;
-   Oid lextype;
-   void *prs;
-} WParserInfo;
+typedef struct
+{
+   Oid         prs_id;
+   FmgrInfo    start_info;
+   FmgrInfo    getlexeme_info;
+   FmgrInfo    end_info;
+   FmgrInfo    headline_info;
+   Oid         lextype;
+   void       *prs;
+}  WParserInfo;
 
-void init_prs(Oid id, WParserInfo *prs);
-WParserInfofindprs(Oid id);
-Oid name2id_prs(text *name);
-void   reset_prs(void);
+void       init_prs(Oid id, WParserInfo * prs);
+WParserInfo *findprs(Oid id);
+Oid            name2id_prs(text *name);
+void       reset_prs(void);
 
 
-typedef struct {
-   int lexid;
-   char    *alias;
-   char    *descr;
-} LexDescr;
+typedef struct
+{
+   int         lexid;
+   char       *alias;
+   char       *descr;
+}  LexDescr;
 
 #endif
index c3b030676003c108d4794cacff36b26c81e4b086..4680d746b3e4fc8f489053aee144f6095dc71e00 100644 (file)
@@ -1,5 +1,5 @@
-/* 
- * default word parser 
+/*
+ * default word parser
  * Teodor Sigaev <[email protected]>
  */
 #include <errno.h>
 #include "wordparser/deflex.h"
 
 PG_FUNCTION_INFO_V1(prsd_lextype);
-Datum prsd_lextype(PG_FUNCTION_ARGS);
+Datum      prsd_lextype(PG_FUNCTION_ARGS);
+
+Datum
+prsd_lextype(PG_FUNCTION_ARGS)
+{
+   LexDescr   *descr = (LexDescr *) palloc(sizeof(LexDescr) * (LASTNUM + 1));
+   int         i;
+
+   for (i = 1; i <= LASTNUM; i++)
+   {
+       descr[i - 1].lexid = i;
+       descr[i - 1].alias = pstrdup(tok_alias[i]);
+       descr[i - 1].descr = pstrdup(lex_descr[i]);
+   }
 
-Datum 
-prsd_lextype(PG_FUNCTION_ARGS) {
-   LexDescr *descr=(LexDescr*)palloc(sizeof(LexDescr)*(LASTNUM+1));
-   int i;
+   descr[LASTNUM].lexid = 0;
 
-   for(i=1;i<=LASTNUM;i++) {
-       descr[i-1].lexid = i;
-       descr[i-1].alias = pstrdup(tok_alias[i]);
-       descr[i-1].descr = pstrdup(lex_descr[i]);
-   }
-   
-   descr[LASTNUM].lexid=0;
-       
    PG_RETURN_POINTER(descr);
 }
 
 PG_FUNCTION_INFO_V1(prsd_start);
-Datum prsd_start(PG_FUNCTION_ARGS);
-Datum 
-prsd_start(PG_FUNCTION_ARGS) {
-   start_parse_str( (char*)PG_GETARG_POINTER(0), PG_GETARG_INT32(1) );
+Datum      prsd_start(PG_FUNCTION_ARGS);
+Datum
+prsd_start(PG_FUNCTION_ARGS)
+{
+   start_parse_str((char *) PG_GETARG_POINTER(0), PG_GETARG_INT32(1));
    PG_RETURN_POINTER(NULL);
 }
 
 PG_FUNCTION_INFO_V1(prsd_getlexeme);
-Datum prsd_getlexeme(PG_FUNCTION_ARGS);
-Datum 
-prsd_getlexeme(PG_FUNCTION_ARGS) {
+Datum      prsd_getlexeme(PG_FUNCTION_ARGS);
+Datum
+prsd_getlexeme(PG_FUNCTION_ARGS)
+{
    /* ParserState *p=(ParserState*)PG_GETARG_POINTER(0); */
-   char **t=(char**)PG_GETARG_POINTER(1); 
-   int *tlen=(int*)PG_GETARG_POINTER(2);
-   int  type=tsearch2_yylex();
+   char      **t = (char **) PG_GETARG_POINTER(1);
+   int        *tlen = (int *) PG_GETARG_POINTER(2);
+   int         type = tsearch2_yylex();
 
    *t = token;
    *tlen = tokenlen;
@@ -58,34 +62,39 @@ prsd_getlexeme(PG_FUNCTION_ARGS) {
 }
 
 PG_FUNCTION_INFO_V1(prsd_end);
-Datum prsd_end(PG_FUNCTION_ARGS);
-Datum 
-prsd_end(PG_FUNCTION_ARGS) {
+Datum      prsd_end(PG_FUNCTION_ARGS);
+Datum
+prsd_end(PG_FUNCTION_ARGS)
+{
    /* ParserState *p=(ParserState*)PG_GETARG_POINTER(0); */
    end_parse();
    PG_RETURN_VOID();
 }
 
 #define LEAVETOKEN(x)  ( (x)==12 )
-#define COMPLEXTOKEN(x)    ( (x)==5 || (x)==15 || (x)==16 || (x)==17 )
-#define ENDPUNCTOKEN(x)    ( (x)==12 )
+#define COMPLEXTOKEN(x) ( (x)==5 || (x)==15 || (x)==16 || (x)==17 )
+#define ENDPUNCTOKEN(x) ( (x)==12 )
 
 
 #define IDIGNORE(x) ( (x)==13 || (x)==14 || (x)==12 || (x)==23 )
 #define HLIDIGNORE(x) ( (x)==5 || (x)==13 || (x)==15 || (x)==16 || (x)==17 )
-#define NONWORDTOKEN(x)    ( (x)==12 || HLIDIGNORE(x) )
+#define NONWORDTOKEN(x) ( (x)==12 || HLIDIGNORE(x) )
 #define NOENDTOKEN(x)  ( NONWORDTOKEN(x) || (x)==7 || (x)==8 || (x)==20 || (x)==21 || (x)==22 || IDIGNORE(x) )
 
-typedef struct {
-   HLWORD  *words;
-   int len;
-} hlCheck;
+typedef struct
+{
+   HLWORD     *words;
+   int         len;
+}  hlCheck;
 
 static bool
-checkcondition_HL(void *checkval, ITEM *val) {
-   int i;
-   for(i=0;i<((hlCheck*)checkval)->len;i++) {
-       if ( ((hlCheck*)checkval)->words[i].item==val )
+checkcondition_HL(void *checkval, ITEM * val)
+{
+   int         i;
+
+   for (i = 0; i < ((hlCheck *) checkval)->len; i++)
+   {
+       if (((hlCheck *) checkval)->words[i].item == val)
            return true;
    }
    return false;
@@ -93,21 +102,28 @@ checkcondition_HL(void *checkval, ITEM *val) {
 
 
 static bool
-hlCover(HLPRSTEXT *prs, QUERYTYPE *query, int *p, int *q) {
-   int i,j;
-   ITEM    *item=GETQUERY(query);
-   int pos=*p;
-   *q=0;
-   *p=0x7fffffff;
-
-   for(j=0;j<query->size;j++) {
-       if ( item->type != VAL ) {
+hlCover(HLPRSTEXT * prs, QUERYTYPE * query, int *p, int *q)
+{
+   int         i,
+               j;
+   ITEM       *item = GETQUERY(query);
+   int         pos = *p;
+
+   *q = 0;
+   *p = 0x7fffffff;
+
+   for (j = 0; j < query->size; j++)
+   {
+       if (item->type != VAL)
+       {
            item++;
            continue;
        }
-       for(i=pos;i<prs->curwords;i++) {
-           if ( prs->words[i].item == item ) {
-               if ( i>*q) 
+       for (i = pos; i < prs->curwords; i++)
+       {
+           if (prs->words[i].item == item)
+           {
+               if (i > *q)
                    *q = i;
                break;
            }
@@ -115,32 +131,39 @@ hlCover(HLPRSTEXT *prs, QUERYTYPE *query, int *p, int *q) {
        item++;
    }
 
-   if ( *q==0 )
+   if (*q == 0)
        return false;
 
-   item=GETQUERY(query);
-   for(j=0;j<query->size;j++) {
-       if ( item->type != VAL ) {
+   item = GETQUERY(query);
+   for (j = 0; j < query->size; j++)
+   {
+       if (item->type != VAL)
+       {
            item++;
            continue;
        }
-       for(i=*q;i>=pos;i--) {
-           if ( prs->words[i].item == item ) {
-               if ( i<*p )
-                   *p=i;
+       for (i = *q; i >= pos; i--)
+       {
+           if (prs->words[i].item == item)
+           {
+               if (i < *p)
+                   *p = i;
                break;
            }
        }
        item++;
-   }   
+   }
+
+   if (*p <= *q)
+   {
+       hlCheck     ch = {&(prs->words[*p]), *q - *p + 1};
 
-   if ( *p<=*q ) {
-       hlCheck ch={ &(prs->words[*p]), *q-*p+1 };
-       if ( TS_execute(GETQUERY(query), &ch, false, checkcondition_HL) ) { 
+       if (TS_execute(GETQUERY(query), &ch, false, checkcondition_HL))
            return true;
-       } else {
+       else
+       {
            (*p)++;
-           return hlCover(prs,query,p,q);
+           return hlCover(prs, query, p, q);
        }
    }
 
@@ -148,45 +171,54 @@ hlCover(HLPRSTEXT *prs, QUERYTYPE *query, int *p, int *q) {
 }
 
 PG_FUNCTION_INFO_V1(prsd_headline);
-Datum prsd_headline(PG_FUNCTION_ARGS);
-Datum 
-prsd_headline(PG_FUNCTION_ARGS) {
-   HLPRSTEXT   *prs=(HLPRSTEXT*)PG_GETARG_POINTER(0);
-   text    *opt=(text*)PG_GETARG_POINTER(1); /* can't be toasted */
-   QUERYTYPE   *query=(QUERYTYPE*)PG_GETARG_POINTER(2); /* can't be toasted */
+Datum      prsd_headline(PG_FUNCTION_ARGS);
+Datum
+prsd_headline(PG_FUNCTION_ARGS)
+{
+   HLPRSTEXT  *prs = (HLPRSTEXT *) PG_GETARG_POINTER(0);
+   text       *opt = (text *) PG_GETARG_POINTER(1);    /* can't be toasted */
+   QUERYTYPE  *query = (QUERYTYPE *) PG_GETARG_POINTER(2);     /* can't be toasted */
+
    /* from opt + start and and tag */
-   int min_words=15;   
-   int max_words=35;   
-   int shortword=3;    
-
-   int p=0,q=0;
-   int bestb=-1,beste=-1;
-   int bestlen=-1;
-   int pose=0, poslen, curlen;
-
-   int i;
-
-   /*config*/
-   prs->startsel=NULL;
-   prs->stopsel=NULL;
-   if ( opt ) {
-       Map *map,*mptr;
-       
-       parse_cfgdict(opt,&map);
-       mptr=map;
-
-       while(mptr && mptr->key) {
-           if ( strcasecmp(mptr->key,"MaxWords")==0 )
-               max_words=pg_atoi(mptr->value,4,1);
-           else if ( strcasecmp(mptr->key,"MinWords")==0 )
-               min_words=pg_atoi(mptr->value,4,1);
-           else if ( strcasecmp(mptr->key,"ShortWord")==0 )
-               shortword=pg_atoi(mptr->value,4,1);
-           else if ( strcasecmp(mptr->key,"StartSel")==0 )
-               prs->startsel=pstrdup(mptr->value);
-           else if ( strcasecmp(mptr->key,"StopSel")==0 )
-               prs->stopsel=pstrdup(mptr->value);
-               
+   int         min_words = 15;
+   int         max_words = 35;
+   int         shortword = 3;
+
+   int         p = 0,
+               q = 0;
+   int         bestb = -1,
+               beste = -1;
+   int         bestlen = -1;
+   int         pose = 0,
+               poslen,
+               curlen;
+
+   int         i;
+
+   /* config */
+   prs->startsel = NULL;
+   prs->stopsel = NULL;
+   if (opt)
+   {
+       Map        *map,
+                  *mptr;
+
+       parse_cfgdict(opt, &map);
+       mptr = map;
+
+       while (mptr && mptr->key)
+       {
+           if (strcasecmp(mptr->key, "MaxWords") == 0)
+               max_words = pg_atoi(mptr->value, 4, 1);
+           else if (strcasecmp(mptr->key, "MinWords") == 0)
+               min_words = pg_atoi(mptr->value, 4, 1);
+           else if (strcasecmp(mptr->key, "ShortWord") == 0)
+               shortword = pg_atoi(mptr->value, 4, 1);
+           else if (strcasecmp(mptr->key, "StartSel") == 0)
+               prs->startsel = pstrdup(mptr->value);
+           else if (strcasecmp(mptr->key, "StopSel") == 0)
+               prs->stopsel = pstrdup(mptr->value);
+
            pfree(mptr->key);
            pfree(mptr->value);
 
@@ -194,104 +226,118 @@ prsd_headline(PG_FUNCTION_ARGS) {
        }
        pfree(map);
 
-       if ( min_words >= max_words )
+       if (min_words >= max_words)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("must be MinWords < MaxWords")));
-       if ( min_words<=0 )
+       if (min_words <= 0)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("must be MinWords > 0")));
-       if ( shortword<0 )
+       if (shortword < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                     errmsg("must be ShortWord >= 0")));
    }
 
-   while( hlCover(prs,query,&p,&q) ) {
+   while (hlCover(prs, query, &p, &q))
+   {
        /* find cover len in words */
-       curlen=0;
-       poslen=0;
-       for(i=p;i<=q && curlen < max_words ; i++) {
-           if ( !NONWORDTOKEN(prs->words[i].type) ) 
+       curlen = 0;
+       poslen = 0;
+       for (i = p; i <= q && curlen < max_words; i++)
+       {
+           if (!NONWORDTOKEN(prs->words[i].type))
                curlen++;
-           if ( prs->words[i].item && !prs->words[i].repeated )
-               poslen++; 
-           pose=i;
+           if (prs->words[i].item && !prs->words[i].repeated)
+               poslen++;
+           pose = i;
        }
 
-       if ( poslen<bestlen && !(NOENDTOKEN(prs->words[beste].type) || prs->words[beste].len <= shortword) ) { 
+       if (poslen < bestlen && !(NOENDTOKEN(prs->words[beste].type) || prs->words[beste].len <= shortword))
+       {
            /* best already finded, so try one more cover */
            p++;
            continue;
        }
 
-       if ( curlen < max_words ) { /* find good end */
-           for(i=i-1 ;i<prs->curwords && curlen<max_words; i++) {
-               if ( i!=q ) {
-                   if ( !NONWORDTOKEN(prs->words[i].type) ) 
+       if (curlen < max_words)
+       {                       /* find good end */
+           for (i = i - 1; i < prs->curwords && curlen < max_words; i++)
+           {
+               if (i != q)
+               {
+                   if (!NONWORDTOKEN(prs->words[i].type))
                        curlen++;
-                   if ( prs->words[i].item && !prs->words[i].repeated )
+                   if (prs->words[i].item && !prs->words[i].repeated)
                        poslen++;
                }
-               pose=i;
-               if ( NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword ) 
+               pose = i;
+               if (NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword)
                    continue;
-               if ( curlen>=min_words )    
+               if (curlen >= min_words)
                    break;
            }
-       } else { /* shorter cover :((( */
-           for(;curlen>min_words;i--) {
-               if ( !NONWORDTOKEN(prs->words[i].type) ) 
+       }
+       else
+       {                       /* shorter cover :((( */
+           for (; curlen > min_words; i--)
+           {
+               if (!NONWORDTOKEN(prs->words[i].type))
                    curlen--;
-               if ( prs->words[i].item && !prs->words[i].repeated )
+               if (prs->words[i].item && !prs->words[i].repeated)
                    poslen--;
-               pose=i;
-               if ( NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword ) 
+               pose = i;
+               if (NOENDTOKEN(prs->words[i].type) || prs->words[i].len <= shortword)
                    continue;
                break;
            }
        }
 
-       if ( bestlen <0 || (poslen>bestlen && !(NOENDTOKEN(prs->words[pose].type) || prs->words[pose].len <= shortword)) || 
-               ( bestlen>=0 && !(NOENDTOKEN(prs->words[pose].type)  || prs->words[pose].len <= shortword) && 
-                   (NOENDTOKEN(prs->words[beste].type) || prs->words[beste].len <= shortword) ) ) {
-           bestb=p; beste=pose;
-           bestlen=poslen;
-       } 
+       if (bestlen < 0 || (poslen > bestlen && !(NOENDTOKEN(prs->words[pose].type) || prs->words[pose].len <= shortword)) ||
+           (bestlen >= 0 && !(NOENDTOKEN(prs->words[pose].type) || prs->words[pose].len <= shortword) &&
+            (NOENDTOKEN(prs->words[beste].type) || prs->words[beste].len <= shortword)))
+       {
+           bestb = p;
+           beste = pose;
+           bestlen = poslen;
+       }
 
        p++;
    }
 
-   if ( bestlen<0 ) {
-       curlen=0;
-       poslen=0;
-       for(i=0;i<prs->curwords && curlen<min_words  ; i++) {
-           if ( !NONWORDTOKEN(prs->words[i].type) ) 
+   if (bestlen < 0)
+   {
+       curlen = 0;
+       poslen = 0;
+       for (i = 0; i < prs->curwords && curlen < min_words; i++)
+       {
+           if (!NONWORDTOKEN(prs->words[i].type))
                curlen++;
-           pose=i;
+           pose = i;
        }
-       bestb=0; beste=pose;
+       bestb = 0;
+       beste = pose;
    }
 
-   for(i=bestb;i<=beste;i++) {
-       if ( prs->words[i].item )
-           prs->words[i].selected=1;
-       if ( prs->words[i].repeated )
-           prs->words[i].skip=1;
-       if ( HLIDIGNORE(prs->words[i].type) )
-           prs->words[i].replace=1;
+   for (i = bestb; i <= beste; i++)
+   {
+       if (prs->words[i].item)
+           prs->words[i].selected = 1;
+       if (prs->words[i].repeated)
+           prs->words[i].skip = 1;
+       if (HLIDIGNORE(prs->words[i].type))
+           prs->words[i].replace = 1;
 
-       prs->words[i].in=1;
+       prs->words[i].in = 1;
    }
 
    if (!prs->startsel)
-       prs->startsel=pstrdup("<b>");
+       prs->startsel = pstrdup("<b>");
    if (!prs->stopsel)
-       prs->stopsel=pstrdup("</b>");
-        prs->startsellen=strlen(prs->startsel);
-   prs->stopsellen=strlen(prs->stopsel);
+       prs->stopsel = pstrdup("</b>");
+   prs->startsellen = strlen(prs->startsel);
+   prs->stopsellen = strlen(prs->stopsel);
 
    PG_RETURN_POINTER(prs);
 }
-
index f79183824eb450f0dba9f717b67923871c7988ab..2b11b1d64683498c3f3edae75c1a00900bf2469d 100644 (file)
@@ -87,10 +87,10 @@ pgxml_parse(PG_FUNCTION_ARGS)
    doctree = xmlParseMemory((char *) VARDATA(t), docsize);
    if (doctree == NULL)
    {
-        xmlCleanupParser();
+       xmlCleanupParser();
        PG_RETURN_BOOL(false);  /* i.e. not well-formed */
    }
-   xmlCleanupParser(); 
+   xmlCleanupParser();
    xmlFreeDoc(doctree);
    PG_RETURN_BOOL(true);
 }
@@ -202,8 +202,8 @@ pgxml_xpath(PG_FUNCTION_ARGS)
 
    doctree = xmlParseMemory((char *) VARDATA(t), docsize);
    if (doctree == NULL)
-   {          /* not well-formed */
-     xmlCleanupParser();
+   {                           /* not well-formed */
+       xmlCleanupParser();
        PG_RETURN_NULL();
    }
 
index ae1df582b0e903cb2b0e41785873ba1a282a9867..4f2fd0efd1e1251c2ff57eb35b9b60064c5de622 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.84 2003/07/21 20:29:37 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.85 2003/08/04 00:43:11 momjian Exp $
  *
  * NOTES
  *   The old interface functions have been converted to macros
@@ -617,7 +617,7 @@ heap_formtuple(TupleDesc tupleDescriptor,
    td->t_natts = numberOfAttributes;
    td->t_hoff = hoff;
 
-   if (tupleDescriptor->tdhasoid) /* else leave infomask = 0 */
+   if (tupleDescriptor->tdhasoid)      /* else leave infomask = 0 */
        td->t_infomask = HEAP_HASOID;
 
    DataFill((char *) td + hoff,
index abf25915ab52f5722ed1aff04635360ed99ad1a5..d0ee37980867fce696823e5f7d040ba44df2216e 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.65 2003/07/21 20:29:37 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.66 2003/08/04 00:43:11 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -162,9 +162,9 @@ index_formtuple(TupleDesc tupleDescriptor,
    if ((size & INDEX_SIZE_MASK) != size)
        ereport(ERROR,
                (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
-                errmsg("index tuple requires %lu bytes, maximum size is %lu",
-                       (unsigned long) size,
-                       (unsigned long) INDEX_SIZE_MASK)));
+           errmsg("index tuple requires %lu bytes, maximum size is %lu",
+                  (unsigned long) size,
+                  (unsigned long) INDEX_SIZE_MASK)));
 
    infomask |= size;
 
index 61ecdcd7e50fdcaf47f47e6dfdd7069333502519..ecee11718d0700a970fbc2ea5b175571680ea1e9 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.75 2003/07/21 20:29:38 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.76 2003/08/04 00:43:12 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 static void printtup_startup(DestReceiver *self, int operation,
-                            TupleDesc typeinfo);
+                TupleDesc typeinfo);
 static void printtup(HeapTuple tuple, TupleDesc typeinfo,
-                    DestReceiver *self);
+        DestReceiver *self);
 static void printtup_20(HeapTuple tuple, TupleDesc typeinfo,
-                       DestReceiver *self);
+           DestReceiver *self);
 static void printtup_internal_20(HeapTuple tuple, TupleDesc typeinfo,
-                                DestReceiver *self);
+                    DestReceiver *self);
 static void printtup_shutdown(DestReceiver *self);
 static void printtup_destroy(DestReceiver *self);
 
@@ -81,8 +81,8 @@ printtup_create_DR(CommandDest dest, Portal portal)
    else
    {
        /*
-        * In protocol 2.0 the Bind message does not exist, so there is
-        * no way for the columns to have different print formats; it's
+        * In protocol 2.0 the Bind message does not exist, so there is no
+        * way for the columns to have different print formats; it's
         * sufficient to look at the first one.
         */
        if (portal->formats && portal->formats[0] != 0)
@@ -111,12 +111,13 @@ static void
 printtup_startup(DestReceiver *self, int operation, TupleDesc typeinfo)
 {
    DR_printtup *myState = (DR_printtup *) self;
-   Portal  portal = myState->portal;
+   Portal      portal = myState->portal;
 
    if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
    {
        /*
-        * Send portal name to frontend (obsolete cruft, gone in proto 3.0)
+        * Send portal name to frontend (obsolete cruft, gone in proto
+        * 3.0)
         *
         * If portal name not specified, use "blank" portal.
         */
@@ -129,8 +130,8 @@ printtup_startup(DestReceiver *self, int operation, TupleDesc typeinfo)
    }
 
    /*
-    * If this is a retrieve, and we are supposed to emit row descriptions,
-    * then we send back the tuple descriptor of the tuples.  
+    * If this is a retrieve, and we are supposed to emit row
+    * descriptions, then we send back the tuple descriptor of the tuples.
     */
    if (operation == CMD_SELECT && myState->sendDescrip)
    {
@@ -163,7 +164,7 @@ printtup_startup(DestReceiver *self, int operation, TupleDesc typeinfo)
  * or some similar function; it does not contain a full set of fields.
  * The targetlist will be NIL when executing a utility function that does
  * not have a plan.  If the targetlist isn't NIL then it is a Query node's
- * targetlist; it is up to us to ignore resjunk columns in it.  The formats[]
+ * targetlist; it is up to us to ignore resjunk columns in it. The formats[]
  * array pointer might be NULL (if we are doing Describe on a prepared stmt);
  * send zeroes for the format codes in that case.
  */
@@ -176,14 +177,14 @@ SendRowDescriptionMessage(TupleDesc typeinfo, List *targetlist, int16 *formats)
    int         i;
    StringInfoData buf;
 
-   pq_beginmessage(&buf, 'T');     /* tuple descriptor message type */
-   pq_sendint(&buf, natts, 2);     /* # of attrs in tuples */
+   pq_beginmessage(&buf, 'T'); /* tuple descriptor message type */
+   pq_sendint(&buf, natts, 2); /* # of attrs in tuples */
 
    for (i = 0; i < natts; ++i)
    {
-       Oid     atttypid = attrs[i]->atttypid;
-       int32   atttypmod = attrs[i]->atttypmod;
-       Oid     basetype;
+       Oid         atttypid = attrs[i]->atttypid;
+       int32       atttypmod = attrs[i]->atttypmod;
+       Oid         basetype;
 
        pq_sendstring(&buf, NameStr(attrs[i]->attname));
        /* column ID info appears in protocol 3.0 and up */
@@ -320,8 +321,8 @@ printtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
        }
 
        /*
-        * If we have a toasted datum, forcibly detoast it here to
-        * avoid memory leakage inside the type's output routine.
+        * If we have a toasted datum, forcibly detoast it here to avoid
+        * memory leakage inside the type's output routine.
         */
        if (thisState->typisvarlena)
            attr = PointerGetDatum(PG_DETOAST_DATUM(origattr));
@@ -347,7 +348,7 @@ printtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
 
            outputbytes = DatumGetByteaP(FunctionCall2(&thisState->finfo,
                                                       attr,
-                                   ObjectIdGetDatum(thisState->typelem)));
+                                 ObjectIdGetDatum(thisState->typelem)));
            /* We assume the result will not have been toasted */
            pq_sendint(&buf, VARSIZE(outputbytes) - VARHDRSZ, 4);
            pq_sendbytes(&buf, VARDATA(outputbytes),
@@ -424,8 +425,8 @@ printtup_20(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
        Assert(thisState->format == 0);
 
        /*
-        * If we have a toasted datum, forcibly detoast it here to
-        * avoid memory leakage inside the type's output routine.
+        * If we have a toasted datum, forcibly detoast it here to avoid
+        * memory leakage inside the type's output routine.
         */
        if (thisState->typisvarlena)
            attr = PointerGetDatum(PG_DETOAST_DATUM(origattr));
@@ -536,9 +537,10 @@ debugtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
            continue;
        getTypeOutputInfo(typeinfo->attrs[i]->atttypid,
                          &typoutput, &typelem, &typisvarlena);
+
        /*
-        * If we have a toasted datum, forcibly detoast it here to
-        * avoid memory leakage inside the type's output routine.
+        * If we have a toasted datum, forcibly detoast it here to avoid
+        * memory leakage inside the type's output routine.
         */
        if (typisvarlena)
            attr = PointerGetDatum(PG_DETOAST_DATUM(origattr));
@@ -547,7 +549,7 @@ debugtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
 
        value = DatumGetCString(OidFunctionCall3(typoutput,
                                                 attr,
-                                                ObjectIdGetDatum(typelem),
+                                              ObjectIdGetDatum(typelem),
                          Int32GetDatum(typeinfo->attrs[i]->atttypmod)));
 
        printatt((unsigned) i + 1, typeinfo->attrs[i], value);
@@ -627,8 +629,8 @@ printtup_internal_20(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
        Assert(thisState->format == 1);
 
        /*
-        * If we have a toasted datum, forcibly detoast it here to
-        * avoid memory leakage inside the type's output routine.
+        * If we have a toasted datum, forcibly detoast it here to avoid
+        * memory leakage inside the type's output routine.
         */
        if (thisState->typisvarlena)
            attr = PointerGetDatum(PG_DETOAST_DATUM(origattr));
@@ -637,7 +639,7 @@ printtup_internal_20(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
 
        outputbytes = DatumGetByteaP(FunctionCall2(&thisState->finfo,
                                                   attr,
-                                   ObjectIdGetDatum(thisState->typelem)));
+                                 ObjectIdGetDatum(thisState->typelem)));
        /* We assume the result will not have been toasted */
        pq_sendint(&buf, VARSIZE(outputbytes) - VARHDRSZ, 4);
        pq_sendbytes(&buf, VARDATA(outputbytes),
index d3208e248e1536ab85d53ed639c830aef9b304ce..505fd7625653cd6410ff1174d3d5dab4840b16c7 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/gist/gistscan.c,v 1.45 2003/07/28 00:09:14 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/gist/gistscan.c,v 1.46 2003/08/04 00:43:12 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -104,11 +104,12 @@ gistrescan(PG_FUNCTION_ARGS)
        memmove(s->keyData,
                key,
                s->numberOfKeys * sizeof(ScanKeyData));
+
        /*
         * Play games here with the scan key to use the Consistent
-        * function for all comparisons: 1) the sk_procedure field
-        * will now be used to hold the strategy number 2) the
-        * sk_func field will point to the Consistent function
+        * function for all comparisons: 1) the sk_procedure field will
+        * now be used to hold the strategy number 2) the sk_func field
+        * will point to the Consistent function
         */
        for (i = 0; i < s->numberOfKeys; i++)
        {
index a82b8b32d551c27f432250546f64a5e6a0a8c86b..4dd9d9df3ee198b938aba5d86430746da34dc4f1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashfunc.c,v 1.36 2003/06/22 22:04:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashfunc.c,v 1.37 2003/08/04 00:43:12 momjian Exp $
  *
  * NOTES
  *   These functions are stored in pg_amproc.  For each operator class
@@ -60,9 +60,9 @@ hashfloat4(PG_FUNCTION_ARGS)
    float4      key = PG_GETARG_FLOAT4(0);
 
    /*
-    * On IEEE-float machines, minus zero and zero have different bit patterns
-    * but should compare as equal.  We must ensure that they have the same
-    * hash value, which is most easily done this way:
+    * On IEEE-float machines, minus zero and zero have different bit
+    * patterns but should compare as equal.  We must ensure that they
+    * have the same hash value, which is most easily done this way:
     */
    if (key == (float4) 0)
        PG_RETURN_UINT32(0);
@@ -76,9 +76,9 @@ hashfloat8(PG_FUNCTION_ARGS)
    float8      key = PG_GETARG_FLOAT8(0);
 
    /*
-    * On IEEE-float machines, minus zero and zero have different bit patterns
-    * but should compare as equal.  We must ensure that they have the same
-    * hash value, which is most easily done this way:
+    * On IEEE-float machines, minus zero and zero have different bit
+    * patterns but should compare as equal.  We must ensure that they
+    * have the same hash value, which is most easily done this way:
     */
    if (key == (float8) 0)
        PG_RETURN_UINT32(0);
@@ -121,9 +121,9 @@ hashtext(PG_FUNCTION_ARGS)
    Datum       result;
 
    /*
-    * Note: this is currently identical in behavior to hashvarlena,
-    * but it seems likely that we may need to do something different
-    * in non-C locales.  (See also hashbpchar, if so.)
+    * Note: this is currently identical in behavior to hashvarlena, but
+    * it seems likely that we may need to do something different in non-C
+    * locales.  (See also hashbpchar, if so.)
     */
    result = hash_any((unsigned char *) VARDATA(key),
                      VARSIZE(key) - VARHDRSZ);
index ed9459feb90ed0663359d36eb7c0c8e5b937e77b..fd7fc158220d5d63d5419cf1f3c09aec7bbb0b05 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashovfl.c,v 1.35 2003/07/21 20:29:38 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashovfl.c,v 1.36 2003/08/04 00:43:12 momjian Exp $
  *
  * NOTES
  *   Overflow pages look like ordinary relation pages.
@@ -205,8 +205,8 @@ _hash_getovfladdr(Relation rel, Buffer *metabufp)
            if (++splitnum >= NCACHED)
                ereport(ERROR,
                        (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
-                        errmsg("out of overflow pages in hash index \"%s\"",
-                               RelationGetRelationName(rel))));
+                    errmsg("out of overflow pages in hash index \"%s\"",
+                           RelationGetRelationName(rel))));
            metap->hashm_ovflpoint = splitnum;
            metap->hashm_spares[splitnum] = metap->hashm_spares[splitnum - 1];
            metap->hashm_spares[splitnum - 1]--;
index a0d191f8a9db114878fff4ce5e25703fd18734c0..8b4b5590ca96eb53eb6a5d8c47e54e3161c9d9b2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.152 2003/07/21 20:29:38 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.153 2003/08/04 00:43:14 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -1132,6 +1132,7 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid)
        xlhdr.t_natts = tup->t_data->t_natts;
        xlhdr.t_infomask = tup->t_data->t_infomask;
        xlhdr.t_hoff = tup->t_data->t_hoff;
+
        /*
         * note we mark rdata[1] as belonging to buffer; if XLogInsert
         * decides to write the whole page to the xlog, we don't need to
@@ -1149,9 +1150,9 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid)
        rdata[2].next = NULL;
 
        /*
-        * If this is the single and first tuple on page, we can reinit the
-        * page instead of restoring the whole thing.  Set flag, and hide
-        * buffer references from XLogInsert.
+        * If this is the single and first tuple on page, we can reinit
+        * the page instead of restoring the whole thing.  Set flag, and
+        * hide buffer references from XLogInsert.
         */
        if (ItemPointerGetOffsetNumber(&(tup->t_self)) == FirstOffsetNumber &&
            PageGetMaxOffsetNumber(page) == FirstOffsetNumber)
@@ -1912,7 +1913,7 @@ log_heap_clean(Relation reln, Buffer buffer, OffsetNumber *unused, int uncnt)
 
    /*
     * The unused-offsets array is not actually in the buffer, but pretend
-    * that it is.  When XLogInsert stores the whole buffer, the offsets
+    * that it is.  When XLogInsert stores the whole buffer, the offsets
     * array need not be stored too.
     */
    rdata[1].buffer = buffer;
@@ -1991,9 +1992,10 @@ log_heap_update(Relation reln, Buffer oldbuf, ItemPointerData from,
               2 * sizeof(TransactionId));
        hsize += 2 * sizeof(TransactionId);
    }
+
    /*
-    * As with insert records, we need not store the rdata[2] segment
-    * if we decide to store the whole buffer instead.
+    * As with insert records, we need not store the rdata[2] segment if
+    * we decide to store the whole buffer instead.
     */
    rdata[2].buffer = newbuf;
    rdata[2].data = (char *) &xlhdr;
index 731c34b3ab6c70ed55511be4d84f7630fc343777..ee93e8a7222e76e179519477cd4534c4181455df 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.67 2003/07/21 20:29:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.68 2003/08/04 00:43:15 momjian Exp $
  *
  * INTERFACE ROUTINES
  *     index_open      - open an index relation by relation OID
@@ -300,7 +300,7 @@ index_beginscan(Relation heapRelation,
  *     index_rescan  - (re)start a scan of an index
  *
  * The caller may specify a new set of scankeys (but the number of keys
- * cannot change).  To restart the scan without changing keys, pass NULL
+ * cannot change). To restart the scan without changing keys, pass NULL
  * for the key array.
  *
  * Note that this is also called when first starting an indexscan;
@@ -394,8 +394,8 @@ index_restrpos(IndexScanDesc scan)
 
    /*
     * We do not reset got_tuple; so if the scan is actually being
-    * short-circuited by index_getnext, the effective position restoration
-    * is done by restoring unique_tuple_pos.
+    * short-circuited by index_getnext, the effective position
+    * restoration is done by restoring unique_tuple_pos.
     */
    scan->unique_tuple_pos = scan->unique_tuple_mark;
 
@@ -427,24 +427,24 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
    }
 
    /*
-    * If we already got a tuple and it must be unique, there's no need
-    * to make the index AM look through any additional tuples.  (This can
+    * If we already got a tuple and it must be unique, there's no need to
+    * make the index AM look through any additional tuples.  (This can
     * save a useful amount of work in scenarios where there are many dead
     * tuples due to heavy update activity.)
     *
     * To do this we must keep track of the logical scan position
     * (before/on/after tuple).  Also, we have to be sure to release scan
-    * resources before returning NULL; if we fail to do so then a multi-index
-    * scan can easily run the system out of free buffers.  We can release
-    * index-level resources fairly cheaply by calling index_rescan.  This
-    * means there are two persistent states as far as the index AM is
-    * concerned: on-tuple and rescanned.  If we are actually asked to
-    * re-fetch the single tuple, we have to go through a fresh indexscan
-    * startup, which penalizes that (infrequent) case.
+    * resources before returning NULL; if we fail to do so then a
+    * multi-index scan can easily run the system out of free buffers.  We
+    * can release index-level resources fairly cheaply by calling
+    * index_rescan.  This means there are two persistent states as far as
+    * the index AM is concerned: on-tuple and rescanned.  If we are
+    * actually asked to re-fetch the single tuple, we have to go through
+    * a fresh indexscan startup, which penalizes that (infrequent) case.
     */
    if (scan->keys_are_unique && scan->got_tuple)
    {
-       int     new_tuple_pos = scan->unique_tuple_pos;
+       int         new_tuple_pos = scan->unique_tuple_pos;
 
        if (ScanDirectionIsForward(direction))
        {
@@ -459,22 +459,23 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
        if (new_tuple_pos == 0)
        {
            /*
-            * We are moving onto the unique tuple from having been off it.
-            * We just fall through and let the index AM do the work.  Note
-            * we should get the right answer regardless of scan direction.
+            * We are moving onto the unique tuple from having been off
+            * it. We just fall through and let the index AM do the work.
+            * Note we should get the right answer regardless of scan
+            * direction.
             */
-           scan->unique_tuple_pos = 0; /* need to update position */
+           scan->unique_tuple_pos = 0; /* need to update position */
        }
        else
        {
            /*
-            * Moving off the tuple; must do amrescan to release index-level
-            * pins before we return NULL.  Since index_rescan will reset
-            * my state, must save and restore...
+            * Moving off the tuple; must do amrescan to release
+            * index-level pins before we return NULL.  Since index_rescan
+            * will reset my state, must save and restore...
             */
-           int     unique_tuple_mark = scan->unique_tuple_mark;
+           int         unique_tuple_mark = scan->unique_tuple_mark;
 
-           index_rescan(scan, NULL /* no change to key */);
+           index_rescan(scan, NULL /* no change to key */ );
 
            scan->keys_are_unique = true;
            scan->got_tuple = true;
@@ -631,7 +632,7 @@ index_bulk_delete(Relation indexRelation,
  */
 IndexBulkDeleteResult *
 index_vacuum_cleanup(Relation indexRelation,
-                    IndexVacuumCleanupInfo *info,
+                    IndexVacuumCleanupInfo * info,
                     IndexBulkDeleteResult *stats)
 {
    RegProcedure procedure;
@@ -649,7 +650,7 @@ index_vacuum_cleanup(Relation indexRelation,
        DatumGetPointer(OidFunctionCall3(procedure,
                                         PointerGetDatum(indexRelation),
                                         PointerGetDatum((Pointer) info),
-                                        PointerGetDatum((Pointer) stats)));
+                                     PointerGetDatum((Pointer) stats)));
 
    return result;
 }
index dd8eda99b9356866552ee5b80214a0e4ede8c8db..962d7a1822e0663a8d1c687cafc51695080b942c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.102 2003/07/28 00:09:14 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.103 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -432,9 +432,9 @@ _bt_insertonpg(Relation rel,
             *
             * must write-lock that page before releasing write lock on
             * current page; else someone else's _bt_check_unique scan
-            * could fail to see our insertion.  write locks on intermediate
-            * dead pages won't do because we don't know when they will get
-            * de-linked from the tree.
+            * could fail to see our insertion.  write locks on
+            * intermediate dead pages won't do because we don't know when
+            * they will get de-linked from the tree.
             */
            Buffer      rbuf = InvalidBuffer;
 
@@ -523,9 +523,10 @@ _bt_insertonpg(Relation rel,
        /*
         * If we are doing this insert because we split a page that was
         * the only one on its tree level, but was not the root, it may
-        * have been the "fast root".  We need to ensure that the fast root
-        * link points at or above the current page.  We can safely acquire
-        * a lock on the metapage here --- see comments for _bt_newroot().
+        * have been the "fast root".  We need to ensure that the fast
+        * root link points at or above the current page.  We can safely
+        * acquire a lock on the metapage here --- see comments for
+        * _bt_newroot().
         */
        if (split_only_page)
        {
@@ -1135,7 +1136,7 @@ _bt_checksplitloc(FindSplitData *state, OffsetNumber firstright,
  *
  * On entry, buf and rbuf are the left and right split pages, which we
  * still hold write locks on per the L&Y algorithm.  We release the
- * write locks once we have write lock on the parent page.  (Any sooner,
+ * write locks once we have write lock on the parent page. (Any sooner,
  * and it'd be possible for some other process to try to split or delete
  * one of these pages, and get confused because it cannot find the downlink.)
  *
@@ -1155,19 +1156,19 @@ _bt_insert_parent(Relation rel,
                  bool is_only)
 {
    /*
-    * Here we have to do something Lehman and Yao don't talk about:
-    * deal with a root split and construction of a new root.  If our
-    * stack is empty then we have just split a node on what had been
-    * the root level when we descended the tree.  If it was still the
-    * root then we perform a new-root construction.  If it *wasn't*
-    * the root anymore, search to find the next higher level that
-    * someone constructed meanwhile, and find the right place to insert
-    * as for the normal case.
+    * Here we have to do something Lehman and Yao don't talk about: deal
+    * with a root split and construction of a new root.  If our stack is
+    * empty then we have just split a node on what had been the root
+    * level when we descended the tree.  If it was still the root then we
+    * perform a new-root construction.  If it *wasn't* the root anymore,
+    * search to find the next higher level that someone constructed
+    * meanwhile, and find the right place to insert as for the normal
+    * case.
     *
-    * If we have to search for the parent level, we do so by
-    * re-descending from the root.  This is not super-efficient,
-    * but it's rare enough not to matter.  (This path is also taken
-    * when called from WAL recovery --- we have no stack in that case.)
+    * If we have to search for the parent level, we do so by re-descending
+    * from the root.  This is not super-efficient, but it's rare enough
+    * not to matter.  (This path is also taken when called from WAL
+    * recovery --- we have no stack in that case.)
     */
    if (is_root)
    {
@@ -1222,9 +1223,9 @@ _bt_insert_parent(Relation rel,
        /*
         * Find the parent buffer and get the parent page.
         *
-        * Oops - if we were moved right then we need to change stack
-        * item! We want to find parent pointing to where we are,
-        * right ?    - vadim 05/27/97
+        * Oops - if we were moved right then we need to change stack item!
+        * We want to find parent pointing to where we are, right ?    -
+        * vadim 05/27/97
         */
        ItemPointerSet(&(stack->bts_btitem.bti_itup.t_tid),
                       bknum, P_HIKEY);
@@ -1296,16 +1297,16 @@ _bt_getstackbuf(Relation rel, BTStack stack, int access)
 
            /*
             * start = InvalidOffsetNumber means "search the whole page".
-            * We need this test anyway due to possibility that
-            * page has a high key now when it didn't before.
+            * We need this test anyway due to possibility that page has a
+            * high key now when it didn't before.
             */
            if (start < minoff)
                start = minoff;
 
            /*
             * These loops will check every item on the page --- but in an
-            * order that's attuned to the probability of where it actually
-            * is.  Scan to the right first, then to the left.
+            * order that's attuned to the probability of where it
+            * actually is.  Scan to the right first, then to the left.
             */
            for (offnum = start;
                 offnum <= maxoff;
index 33f85cd59a6d9aca49db6c3ac7356eae55def919..ace06f0a2509cdffd0fe92c6640c48cb33ab7c3b 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.66 2003/07/21 20:29:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.67 2003/08/04 00:43:15 momjian Exp $
  *
  * NOTES
  *    Postgres btree pages look like ordinary relation pages.  The opaque
@@ -181,8 +181,8 @@ _bt_getroot(Relation rel, int access)
            /*
             * Metadata initialized by someone else.  In order to
             * guarantee no deadlocks, we have to release the metadata
-            * page and start all over again.  (Is that really true?
-            * But it's hardly worth trying to optimize this case.)
+            * page and start all over again.  (Is that really true? But
+            * it's hardly worth trying to optimize this case.)
             */
            _bt_relbuf(rel, metabuf);
            return _bt_getroot(rel, access);
@@ -190,8 +190,8 @@ _bt_getroot(Relation rel, int access)
 
        /*
         * Get, initialize, write, and leave a lock of the appropriate
-        * type on the new root page.  Since this is the first page in
-        * the tree, it's a leaf as well as the root.
+        * type on the new root page.  Since this is the first page in the
+        * tree, it's a leaf as well as the root.
         */
        rootbuf = _bt_getbuf(rel, P_NEW, BT_WRITE);
        rootblkno = BufferGetBlockNumber(rootbuf);
@@ -240,7 +240,7 @@ _bt_getroot(Relation rel, int access)
        _bt_wrtnorelbuf(rel, rootbuf);
 
        /*
-        * swap root write lock for read lock.  There is no danger of
+        * swap root write lock for read lock.  There is no danger of
         * anyone else accessing the new root page while it's unlocked,
         * since no one else knows where it is yet.
         */
@@ -284,8 +284,8 @@ _bt_getroot(Relation rel, int access)
    }
 
    /*
-    * By here, we have a pin and read lock on the root page, and no
-    * lock set on the metadata page.  Return the root page's buffer.
+    * By here, we have a pin and read lock on the root page, and no lock
+    * set on the metadata page.  Return the root page's buffer.
     */
    return rootbuf;
 }
@@ -299,7 +299,7 @@ _bt_getroot(Relation rel, int access)
  * By the time we acquire lock on the root page, it might have been split and
  * not be the true root anymore.  This is okay for the present uses of this
  * routine; we only really need to be able to move up at least one tree level
- * from whatever non-root page we were at.  If we ever do need to lock the
+ * from whatever non-root page we were at. If we ever do need to lock the
  * one true root page, we could loop here, re-reading the metapage on each
  * failure.  (Note that it wouldn't do to hold the lock on the metapage while
  * moving to the root --- that'd deadlock against any concurrent root split.)
@@ -406,9 +406,9 @@ _bt_getbuf(Relation rel, BlockNumber blkno, int access)
         * First see if the FSM knows of any free pages.
         *
         * We can't trust the FSM's report unreservedly; we have to check
-        * that the page is still free.  (For example, an already-free page
-        * could have been re-used between the time the last VACUUM scanned
-        * it and the time the VACUUM made its FSM updates.)
+        * that the page is still free.  (For example, an already-free
+        * page could have been re-used between the time the last VACUUM
+        * scanned it and the time the VACUUM made its FSM updates.)
         */
        for (;;)
        {
@@ -431,10 +431,10 @@ _bt_getbuf(Relation rel, BlockNumber blkno, int access)
        /*
         * Extend the relation by one page.
         *
-        * We have to use a lock to ensure no one else is extending the rel at
-        * the same time, else we will both try to initialize the same new
-        * page.  We can skip locking for new or temp relations, however,
-        * since no one else could be accessing them.
+        * We have to use a lock to ensure no one else is extending the rel
+        * at the same time, else we will both try to initialize the same
+        * new page.  We can skip locking for new or temp relations,
+        * however, since no one else could be accessing them.
         */
        needLock = !(rel->rd_isnew || rel->rd_istemp);
 
@@ -444,8 +444,8 @@ _bt_getbuf(Relation rel, BlockNumber blkno, int access)
        buf = ReadBuffer(rel, P_NEW);
 
        /*
-        * Release the file-extension lock; it's now OK for someone else to
-        * extend the relation some more.
+        * Release the file-extension lock; it's now OK for someone else
+        * to extend the relation some more.
         */
        if (needLock)
            UnlockPage(rel, 0, ExclusiveLock);
@@ -484,7 +484,7 @@ _bt_relbuf(Relation rel, Buffer buf)
  *     and a pin on the buffer.
  *
  * NOTE: actually, the buffer manager just marks the shared buffer page
- * dirty here; the real I/O happens later.  This is okay since we are not
+ * dirty here; the real I/O happens later. This is okay since we are not
  * relying on write ordering anyway.  The WAL mechanism is responsible for
  * guaranteeing correctness after a crash.
  */
@@ -534,13 +534,14 @@ _bt_page_recyclable(Page page)
    BTPageOpaque opaque;
 
    /*
-    * It's possible to find an all-zeroes page in an index --- for example,
-    * a backend might successfully extend the relation one page and then
-    * crash before it is able to make a WAL entry for adding the page.
-    * If we find a zeroed page then reclaim it.
+    * It's possible to find an all-zeroes page in an index --- for
+    * example, a backend might successfully extend the relation one page
+    * and then crash before it is able to make a WAL entry for adding the
+    * page. If we find a zeroed page then reclaim it.
     */
    if (PageIsNew(page))
        return true;
+
    /*
     * Otherwise, recycle if deleted and too old to have any processes
     * interested in it.
@@ -565,7 +566,7 @@ _bt_page_recyclable(Page page)
  *     mistake.  On exit, metapage data is correct and we no longer have
  *     a pin or lock on the metapage.
  *
- * Actually this is not used for splitting on-the-fly anymore.  It's only used
+ * Actually this is not used for splitting on-the-fly anymore. It's only used
  * in nbtsort.c at the completion of btree building, where we know we have
  * sole access to the index anyway.
  */
@@ -623,7 +624,7 @@ _bt_metaproot(Relation rel, BlockNumber rootbknum, uint32 level)
 /*
  * Delete item(s) from a btree page.
  *
- * This must only be used for deleting leaf items.  Deleting an item on a
+ * This must only be used for deleting leaf items. Deleting an item on a
  * non-leaf page has to be done as part of an atomic action that includes
  * deleting the page it points to.
  *
@@ -646,9 +647,7 @@ _bt_delitems(Relation rel, Buffer buf,
     * adjusting item numbers for previous deletions.
     */
    for (i = nitems - 1; i >= 0; i--)
-   {
        PageIndexTupleDelete(page, itemnos[i]);
-   }
 
    /* XLOG stuff */
    if (!rel->rd_istemp)
@@ -666,8 +665,8 @@ _bt_delitems(Relation rel, Buffer buf,
        rdata[0].next = &(rdata[1]);
 
        /*
-        * The target-offsets array is not in the buffer, but pretend
-        * that it is.  When XLogInsert stores the whole buffer, the offsets
+        * The target-offsets array is not in the buffer, but pretend that
+        * it is.  When XLogInsert stores the whole buffer, the offsets
         * array need not be stored too.
         */
        rdata[1].buffer = buf;
@@ -701,7 +700,7 @@ _bt_delitems(Relation rel, Buffer buf,
  * may currently be trying to follow links leading to the page; they have to
  * be allowed to use its right-link to recover.  See nbtree/README.
  *
- * On entry, the target buffer must be pinned and read-locked.  This lock and
+ * On entry, the target buffer must be pinned and read-locked. This lock and
  * pin will be dropped before exiting.
  *
  * Returns the number of pages successfully deleted (zero on failure; could
@@ -714,7 +713,7 @@ _bt_delitems(Relation rel, Buffer buf,
 int
 _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
 {
-   BlockNumber target,
+   BlockNumber target,
                leftsib,
                rightsib,
                parent;
@@ -740,17 +739,18 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
    BTPageOpaque opaque;
 
    /*
-    * We can never delete rightmost pages nor root pages.  While at it,
+    * We can never delete rightmost pages nor root pages.  While at it,
     * check that page is not already deleted and is empty.
     */
    page = BufferGetPage(buf);
    opaque = (BTPageOpaque) PageGetSpecialPointer(page);
    if (P_RIGHTMOST(opaque) || P_ISROOT(opaque) || P_ISDELETED(opaque) ||
-        P_FIRSTDATAKEY(opaque) <= PageGetMaxOffsetNumber(page))
+       P_FIRSTDATAKEY(opaque) <= PageGetMaxOffsetNumber(page))
    {
        _bt_relbuf(rel, buf);
        return 0;
    }
+
    /*
     * Save info about page, including a copy of its high key (it must
     * have one, being non-rightmost).
@@ -760,12 +760,13 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
    leftsib = opaque->btpo_prev;
    itemid = PageGetItemId(page, P_HIKEY);
    targetkey = CopyBTItem((BTItem) PageGetItem(page, itemid));
+
    /*
     * We need to get an approximate pointer to the page's parent page.
-    * Use the standard search mechanism to search for the page's high key;
-    * this will give us a link to either the current parent or someplace
-    * to its left (if there are multiple equal high keys).  To avoid
-    * deadlocks, we'd better drop the target page lock first.
+    * Use the standard search mechanism to search for the page's high
+    * key; this will give us a link to either the current parent or
+    * someplace to its left (if there are multiple equal high keys).  To
+    * avoid deadlocks, we'd better drop the target page lock first.
     */
    _bt_relbuf(rel, buf);
    /* we need a scan key to do our search, so build one */
@@ -775,9 +776,11 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
                       &lbuf, BT_READ);
    /* don't need a pin on that either */
    _bt_relbuf(rel, lbuf);
+
    /*
     * If we are trying to delete an interior page, _bt_search did more
-    * than we needed.  Locate the stack item pointing to our parent level.
+    * than we needed.  Locate the stack item pointing to our parent
+    * level.
     */
    ilevel = 0;
    for (;;)
@@ -789,10 +792,12 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
        stack = stack->bts_parent;
        ilevel++;
    }
+
    /*
     * We have to lock the pages we need to modify in the standard order:
-    * moving right, then up.  Else we will deadlock against other writers.
-    * 
+    * moving right, then up.  Else we will deadlock against other
+    * writers.
+    *
     * So, we need to find and write-lock the current left sibling of the
     * target page.  The sibling that was current a moment ago could have
     * split, so we may have to move right.  This search could fail if
@@ -823,21 +828,24 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
    }
    else
        lbuf = InvalidBuffer;
+
    /*
-    * Next write-lock the target page itself.  It should be okay to take just
-    * a write lock not a superexclusive lock, since no scans would stop on an
-    * empty page.
+    * Next write-lock the target page itself.  It should be okay to take
+    * just a write lock not a superexclusive lock, since no scans would
+    * stop on an empty page.
     */
    buf = _bt_getbuf(rel, target, BT_WRITE);
    page = BufferGetPage(buf);
    opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+
    /*
-    * Check page is still empty etc, else abandon deletion.  The empty check
-    * is necessary since someone else might have inserted into it while
-    * we didn't have it locked; the others are just for paranoia's sake.
+    * Check page is still empty etc, else abandon deletion.  The empty
+    * check is necessary since someone else might have inserted into it
+    * while we didn't have it locked; the others are just for paranoia's
+    * sake.
     */
    if (P_RIGHTMOST(opaque) || P_ISROOT(opaque) || P_ISDELETED(opaque) ||
-        P_FIRSTDATAKEY(opaque) <= PageGetMaxOffsetNumber(page))
+       P_FIRSTDATAKEY(opaque) <= PageGetMaxOffsetNumber(page))
    {
        _bt_relbuf(rel, buf);
        if (BufferIsValid(lbuf))
@@ -846,14 +854,17 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
    }
    if (opaque->btpo_prev != leftsib)
        elog(ERROR, "left link changed unexpectedly");
+
    /*
     * And next write-lock the (current) right sibling.
     */
    rightsib = opaque->btpo_next;
    rbuf = _bt_getbuf(rel, rightsib, BT_WRITE);
+
    /*
     * Next find and write-lock the current parent of the target page.
-    * This is essentially the same as the corresponding step of splitting.
+    * This is essentially the same as the corresponding step of
+    * splitting.
     */
    ItemPointerSet(&(stack->bts_btitem.bti_itup.t_tid),
                   target, P_HIKEY);
@@ -863,10 +874,11 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
             RelationGetRelationName(rel));
    parent = stack->bts_blkno;
    poffset = stack->bts_offset;
+
    /*
     * If the target is the rightmost child of its parent, then we can't
-    * delete, unless it's also the only child --- in which case the parent
-    * changes to half-dead status.
+    * delete, unless it's also the only child --- in which case the
+    * parent changes to half-dead status.
     */
    page = BufferGetPage(pbuf);
    opaque = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -893,12 +905,13 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
        if (OffsetNumberNext(P_FIRSTDATAKEY(opaque)) == maxoff)
            parent_one_child = true;
    }
+
    /*
     * If we are deleting the next-to-last page on the target's level,
-    * then the rightsib is a candidate to become the new fast root.
-    * (In theory, it might be possible to push the fast root even further
-    * down, but the odds of doing so are slim, and the locking considerations
-    * daunting.)
+    * then the rightsib is a candidate to become the new fast root. (In
+    * theory, it might be possible to push the fast root even further
+    * down, but the odds of doing so are slim, and the locking
+    * considerations daunting.)
     *
     * We can safely acquire a lock on the metapage here --- see comments for
     * _bt_newroot().
@@ -914,12 +927,13 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
            metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_WRITE);
            metapg = BufferGetPage(metabuf);
            metad = BTPageGetMeta(metapg);
+
            /*
             * The expected case here is btm_fastlevel == targetlevel+1;
-            * if the fastlevel is <= targetlevel, something is wrong, and we
-            * choose to overwrite it to fix it.
+            * if the fastlevel is <= targetlevel, something is wrong, and
+            * we choose to overwrite it to fix it.
             */
-           if (metad->btm_fastlevel > targetlevel+1)
+           if (metad->btm_fastlevel > targetlevel + 1)
            {
                /* no update wanted */
                _bt_relbuf(rel, metabuf);
@@ -937,9 +951,9 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
 
    /*
     * Update parent.  The normal case is a tad tricky because we want to
-    * delete the target's downlink and the *following* key.  Easiest way is
-    * to copy the right sibling's downlink over the target downlink, and then
-    * delete the following item.
+    * delete the target's downlink and the *following* key.  Easiest way
+    * is to copy the right sibling's downlink over the target downlink,
+    * and then delete the following item.
     */
    page = BufferGetPage(pbuf);
    opaque = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -950,7 +964,7 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
    }
    else
    {
-       OffsetNumber    nextoffset;
+       OffsetNumber nextoffset;
 
        itemid = PageGetItemId(page, poffset);
        btitem = (BTItem) PageGetItem(page, itemid);
@@ -968,8 +982,8 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
    }
 
    /*
-    * Update siblings' side-links.  Note the target page's side-links will
-    * continue to point to the siblings.
+    * Update siblings' side-links.  Note the target page's side-links
+    * will continue to point to the siblings.
     */
    if (BufferIsValid(lbuf))
    {
@@ -1096,10 +1110,11 @@ _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full)
        _bt_wrtbuf(rel, lbuf);
 
    /*
-    * If parent became half dead, recurse to try to delete it.  Otherwise,
-    * if right sibling is empty and is now the last child of the parent,
-    * recurse to try to delete it.  (These cases cannot apply at the same
-    * time, though the second case might itself recurse to the first.)
+    * If parent became half dead, recurse to try to delete it.
+    * Otherwise, if right sibling is empty and is now the last child of
+    * the parent, recurse to try to delete it.  (These cases cannot apply
+    * at the same time, though the second case might itself recurse to
+    * the first.)
     */
    if (parent_half_dead)
    {
index 3c814725fef11b208d6291a86d616c442d24aedf..7d0dea4e788955ee7e54aa5728328f8b661b8936 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.103 2003/07/21 20:29:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.104 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -580,19 +580,20 @@ btbulkdelete(PG_FUNCTION_ARGS)
 
    /*
     * The outer loop iterates over index leaf pages, the inner over items
-    * on a leaf page.  We issue just one _bt_delitems() call per page,
-    * so as to minimize WAL traffic.
+    * on a leaf page.  We issue just one _bt_delitems() call per page, so
+    * as to minimize WAL traffic.
     *
-    * Note that we exclusive-lock every leaf page containing data items,
-    * in sequence left to right.  It sounds attractive to only exclusive-lock
-    * those containing items we need to delete, but unfortunately that
-    * is not safe: we could then pass a stopped indexscan, which could
-    * in rare cases lead to deleting the item it needs to find when it
-    * resumes.  (See _bt_restscan --- this could only happen if an indexscan
-    * stops on a deletable item and then a page split moves that item
-    * into a page further to its right, which the indexscan will have no
-    * pin on.)  We can skip obtaining exclusive lock on empty pages
-    * though, since no indexscan could be stopped on those.
+    * Note that we exclusive-lock every leaf page containing data items, in
+    * sequence left to right.  It sounds attractive to only
+    * exclusive-lock those containing items we need to delete, but
+    * unfortunately that is not safe: we could then pass a stopped
+    * indexscan, which could in rare cases lead to deleting the item it
+    * needs to find when it resumes.  (See _bt_restscan --- this could
+    * only happen if an indexscan stops on a deletable item and then a
+    * page split moves that item into a page further to its right, which
+    * the indexscan will have no pin on.)  We can skip obtaining
+    * exclusive lock on empty pages though, since no indexscan could be
+    * stopped on those.
     */
    buf = _bt_get_endpoint(rel, 0, false);
    if (BufferIsValid(buf))     /* check for empty index */
@@ -604,7 +605,7 @@ btbulkdelete(PG_FUNCTION_ARGS)
            OffsetNumber offnum,
                        minoff,
                        maxoff;
-           BlockNumber nextpage;
+           BlockNumber nextpage;
 
            CHECK_FOR_INTERRUPTS();
 
@@ -622,12 +623,14 @@ btbulkdelete(PG_FUNCTION_ARGS)
                 */
                LockBuffer(buf, BUFFER_LOCK_UNLOCK);
                LockBufferForCleanup(buf);
+
                /*
-                * Recompute minoff/maxoff, both of which could have changed
-                * while we weren't holding the lock.
+                * Recompute minoff/maxoff, both of which could have
+                * changed while we weren't holding the lock.
                 */
                minoff = P_FIRSTDATAKEY(opaque);
                maxoff = PageGetMaxOffsetNumber(page);
+
                /*
                 * Scan over all items to see which ones need deleted
                 * according to the callback function.
@@ -640,7 +643,7 @@ btbulkdelete(PG_FUNCTION_ARGS)
                    ItemPointer htup;
 
                    btitem = (BTItem) PageGetItem(page,
-                                                 PageGetItemId(page, offnum));
+                                           PageGetItemId(page, offnum));
                    htup = &(btitem->bti_itup.t_tid);
                    if (callback(htup, callback_state))
                    {
@@ -651,6 +654,7 @@ btbulkdelete(PG_FUNCTION_ARGS)
                        num_index_tuples += 1;
                }
            }
+
            /*
             * If we need to delete anything, do it and write the buffer;
             * else just release the buffer.
@@ -662,9 +666,7 @@ btbulkdelete(PG_FUNCTION_ARGS)
                _bt_wrtbuf(rel, buf);
            }
            else
-           {
                _bt_relbuf(rel, buf);
-           }
            /* And advance to next page, if any */
            if (nextpage == P_NONE)
                break;
@@ -712,7 +714,7 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
    /* No point in remembering more than MaxFSMPages pages */
    maxFreePages = MaxFSMPages;
    if ((BlockNumber) maxFreePages > num_pages)
-       maxFreePages = (int) num_pages + 1; /* +1 to avoid palloc(0) */
+       maxFreePages = (int) num_pages + 1;     /* +1 to avoid palloc(0) */
    freePages = (BlockNumber *) palloc(maxFreePages * sizeof(BlockNumber));
    nFreePages = 0;
 
@@ -728,10 +730,10 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
     * after we start the scan will not be examined; this should be fine,
     * since they can't possibly be empty.)
     */
-   for (blkno = BTREE_METAPAGE+1; blkno < num_pages; blkno++)
+   for (blkno = BTREE_METAPAGE + 1; blkno < num_pages; blkno++)
    {
-       Buffer  buf;
-       Page    page;
+       Buffer      buf;
+       Page        page;
        BTPageOpaque opaque;
 
        buf = _bt_getbuf(rel, blkno, BT_READ);
@@ -753,7 +755,7 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
                 P_FIRSTDATAKEY(opaque) > PageGetMaxOffsetNumber(page))
        {
            /* Empty, try to delete */
-           int     ndel;
+           int         ndel;
 
            /* Run pagedel in a temp context to avoid memory leakage */
            MemoryContextReset(mycontext);
@@ -768,7 +770,7 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
            /*
             * During VACUUM FULL it's okay to recycle deleted pages
             * immediately, since there can be no other transactions
-            * scanning the index.  Note that we will only recycle the
+            * scanning the index.  Note that we will only recycle the
             * current page and not any parent pages that _bt_pagedel
             * might have recursed to; this seems reasonable in the name
             * of simplicity.  (Trying to do otherwise would mean we'd
@@ -787,16 +789,16 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
    }
 
    /*
-    * During VACUUM FULL, we truncate off any recyclable pages at the
-    * end of the index.  In a normal vacuum it'd be unsafe to do this
-    * except by acquiring exclusive lock on the index and then rechecking
-    * all the pages; doesn't seem worth it.
+    * During VACUUM FULL, we truncate off any recyclable pages at the end
+    * of the index.  In a normal vacuum it'd be unsafe to do this except
+    * by acquiring exclusive lock on the index and then rechecking all
+    * the pages; doesn't seem worth it.
     */
    if (info->vacuum_full && nFreePages > 0)
    {
-       BlockNumber new_pages = num_pages;
+       BlockNumber new_pages = num_pages;
 
-       while (nFreePages > 0 && freePages[nFreePages-1] == new_pages-1)
+       while (nFreePages > 0 && freePages[nFreePages - 1] == new_pages - 1)
        {
            new_pages--;
            pages_deleted--;
@@ -810,9 +812,10 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
             * Okay to truncate.
             *
             * First, flush any shared buffers for the blocks we intend to
-            * delete.  FlushRelationBuffers is a bit more than we need for
-            * this, since it will also write out dirty buffers for blocks we
-            * aren't deleting, but it's the closest thing in bufmgr's API.
+            * delete.  FlushRelationBuffers is a bit more than we need
+            * for this, since it will also write out dirty buffers for
+            * blocks we aren't deleting, but it's the closest thing in
+            * bufmgr's API.
             */
            i = FlushRelationBuffers(rel, new_pages);
            if (i < 0)
@@ -822,7 +825,8 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
             * Do the physical truncation.
             */
            new_pages = smgrtruncate(DEFAULT_SMGR, rel, new_pages);
-           rel->rd_nblocks = new_pages; /* update relcache immediately */
+           rel->rd_nblocks = new_pages;        /* update relcache
+                                                * immediately */
            rel->rd_targblock = InvalidBlockNumber;
            num_pages = new_pages;
        }
@@ -856,7 +860,7 @@ btvacuumcleanup(PG_FUNCTION_ARGS)
  * and so no deletion can have occurred on that page.
  *
  * On entry, we have a pin but no read lock on the buffer that contained
- * the index tuple we stopped the scan on.  On exit, we have pin and read
+ * the index tuple we stopped the scan on. On exit, we have pin and read
  * lock on the buffer that now contains that index tuple, and the scandesc's
  * current position is updated to point at it.
  */
@@ -877,8 +881,8 @@ _bt_restscan(IndexScanDesc scan)
    BlockNumber blkno;
 
    /*
-    * Reacquire read lock on the buffer.  (We should still have
-    * reference-count pin on it, so need not get that.)
+    * Reacquire read lock on the buffer.  (We should still have a
+    * reference-count pin on it, so need not get that.)
     */
    LockBuffer(buf, BT_READ);
 
@@ -921,11 +925,11 @@ _bt_restscan(IndexScanDesc scan)
 
        /*
         * The item we're looking for moved right at least one page, so
-        * move right.  We are careful here to pin and read-lock the next
-        * non-dead page before releasing the current one.  This ensures that
-        * a concurrent btbulkdelete scan cannot pass our position --- if it
-        * did, it might be able to reach and delete our target item before
-        * we can find it again.
+        * move right.  We are careful here to pin and read-lock the next
+        * non-dead page before releasing the current one.  This ensures
+        * that a concurrent btbulkdelete scan cannot pass our position
+        * --- if it did, it might be able to reach and delete our target
+        * item before we can find it again.
         */
        if (P_RIGHTMOST(opaque))
            elog(ERROR, "failed to re-find previous key in \"%s\"",
index 457914adf73ffb2a1dceda51f8d4dd7f505fb277..80abe195cea671fc9431b8ebcf616c5e33402a21 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.77 2003/07/29 22:18:38 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.78 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -64,8 +64,8 @@ _bt_search(Relation rel, int keysz, ScanKey scankey,
 
        /*
         * Race -- the page we just grabbed may have split since we read
-        * its pointer in the parent (or metapage).  If it has, we may need
-        * to move right to its new sibling.  Do that.
+        * its pointer in the parent (or metapage).  If it has, we may
+        * need to move right to its new sibling.  Do that.
         */
        *bufP = _bt_moveright(rel, *bufP, keysz, scankey, BT_READ);
 
@@ -87,14 +87,14 @@ _bt_search(Relation rel, int keysz, ScanKey scankey,
        par_blkno = BufferGetBlockNumber(*bufP);
 
        /*
-        * We need to save the location of the index entry we chose in
-        * the parent page on a stack. In case we split the tree, we'll
-        * use the stack to work back up to the parent page.  We also save
-        * the actual downlink (TID) to uniquely identify the index entry,
-        * in case it moves right while we're working lower in the
-        * tree.  See the paper by Lehman and Yao for how this is detected
-        * and handled. (We use the child link to disambiguate duplicate
-        * keys in the index -- Lehman and Yao disallow duplicate keys.)
+        * We need to save the location of the index entry we chose in the
+        * parent page on a stack. In case we split the tree, we'll use
+        * the stack to work back up to the parent page.  We also save the
+        * actual downlink (TID) to uniquely identify the index entry, in
+        * case it moves right while we're working lower in the tree.  See
+        * the paper by Lehman and Yao for how this is detected and
+        * handled. (We use the child link to disambiguate duplicate keys
+        * in the index -- Lehman and Yao disallow duplicate keys.)
         */
        new_stack = (BTStack) palloc(sizeof(BTStackData));
        new_stack->bts_blkno = par_blkno;
@@ -151,8 +151,8 @@ _bt_moveright(Relation rel,
     * might not need to move right; have to scan the page first anyway.)
     * It could even have split more than once, so scan as far as needed.
     *
-    * We also have to move right if we followed a link that brought us to
-    * dead page.
+    * We also have to move right if we followed a link that brought us to a
+    * dead page.
     */
    while (!P_RIGHTMOST(opaque) &&
           (P_IGNORE(opaque) ||
@@ -599,8 +599,8 @@ _bt_first(IndexScanDesc scan, ScanDirection dir)
    /*
     * At this point we are positioned at the first item >= scan key, or
     * possibly at the end of a page on which all the existing items are
-    * less than the scan key and we know that everything on later
-    * pages is greater than or equal to scan key.
+    * less than the scan key and we know that everything on later pages
+    * is greater than or equal to scan key.
     *
     * We could step forward in the latter case, but that'd be a waste of
     * time if we want to scan backwards.  So, it's now time to examine
@@ -851,7 +851,8 @@ _bt_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir)
            }
        }
    }
-   else                        /* backwards scan */
+   else
+/* backwards scan */
    {
        if (offnum > P_FIRSTDATAKEY(opaque))
            offnum = OffsetNumberPrev(offnum);
@@ -860,9 +861,9 @@ _bt_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir)
            /*
             * Walk left to the next page with data.  This is much more
             * complex than the walk-right case because of the possibility
-            * that the page to our left splits while we are in flight to it,
-            * plus the possibility that the page we were on gets deleted
-            * after we leave it.  See nbtree/README for details.
+            * that the page to our left splits while we are in flight to
+            * it, plus the possibility that the page we were on gets
+            * deleted after we leave it.  See nbtree/README for details.
             */
            for (;;)
            {
@@ -877,10 +878,11 @@ _bt_step(IndexScanDesc scan, Buffer *bufP, ScanDirection dir)
                }
                page = BufferGetPage(*bufP);
                opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+
                /*
                 * Okay, we managed to move left to a non-deleted page.
-                * Done if it's not half-dead and not empty.  Else loop back
-                * and do it all again.
+                * Done if it's not half-dead and not empty.  Else loop
+                * back and do it all again.
                 */
                if (!P_IGNORE(opaque))
                {
@@ -946,17 +948,18 @@ _bt_walk_left(Relation rel, Buffer buf)
        buf = _bt_getbuf(rel, blkno, BT_READ);
        page = BufferGetPage(buf);
        opaque = (BTPageOpaque) PageGetSpecialPointer(page);
+
        /*
-        * If this isn't the page we want, walk right till we find
-        * what we want --- but go no more than four hops (an
-        * arbitrary limit).  If we don't find the correct page by then,
-        * the most likely bet is that the original page got deleted
-        * and isn't in the sibling chain at all anymore, not that its
-        * left sibling got split more than four times.
+        * If this isn't the page we want, walk right till we find what we
+        * want --- but go no more than four hops (an arbitrary limit).
+        * If we don't find the correct page by then, the most likely bet
+        * is that the original page got deleted and isn't in the sibling
+        * chain at all anymore, not that its left sibling got split more
+        * than four times.
         *
-        * Note that it is correct to test P_ISDELETED not P_IGNORE
-        * here, because half-dead pages are still in the sibling
-        * chain.  Caller must reject half-dead pages if wanted.
+        * Note that it is correct to test P_ISDELETED not P_IGNORE here,
+        * because half-dead pages are still in the sibling chain.  Caller
+        * must reject half-dead pages if wanted.
         */
        tries = 0;
        for (;;)
@@ -983,8 +986,8 @@ _bt_walk_left(Relation rel, Buffer buf)
        if (P_ISDELETED(opaque))
        {
            /*
-            * It was deleted.  Move right to first nondeleted page
-            * (there must be one); that is the page that has acquired the
+            * It was deleted.  Move right to first nondeleted page (there
+            * must be one); that is the page that has acquired the
             * deleted one's keyspace, so stepping left from it will take
             * us where we want to be.
             */
@@ -1001,18 +1004,18 @@ _bt_walk_left(Relation rel, Buffer buf)
                if (!P_ISDELETED(opaque))
                    break;
            }
+
            /*
-            * Now return to top of loop, resetting obknum to
-            * point to this nondeleted page, and try again.
+            * Now return to top of loop, resetting obknum to point to
+            * this nondeleted page, and try again.
             */
        }
        else
        {
            /*
-            * It wasn't deleted; the explanation had better be
-            * that the page to the left got split or deleted.
-            * Without this check, we'd go into an infinite loop
-            * if there's anything wrong.
+            * It wasn't deleted; the explanation had better be that the
+            * page to the left got split or deleted. Without this check,
+            * we'd go into an infinite loop if there's anything wrong.
             */
            if (opaque->btpo_prev == lblkno)
                elog(ERROR, "could not find left sibling in \"%s\"",
@@ -1028,7 +1031,7 @@ _bt_walk_left(Relation rel, Buffer buf)
  * _bt_get_endpoint() -- Find the first or last page on a given tree level
  *
  * If the index is empty, we will return InvalidBuffer; any other failure
- * condition causes ereport().  We will not return a dead page.
+ * condition causes ereport(). We will not return a dead page.
  *
  * The returned buffer is pinned and read-locked.
  */
@@ -1045,8 +1048,8 @@ _bt_get_endpoint(Relation rel, uint32 level, bool rightmost)
 
    /*
     * If we are looking for a leaf page, okay to descend from fast root;
-    * otherwise better descend from true root.  (There is no point in being
-    * smarter about intermediate levels.)
+    * otherwise better descend from true root.  (There is no point in
+    * being smarter about intermediate levels.)
     */
    if (level == 0)
        buf = _bt_getroot(rel, BT_READ);
@@ -1066,9 +1069,9 @@ _bt_get_endpoint(Relation rel, uint32 level, bool rightmost)
    {
        /*
         * If we landed on a deleted page, step right to find a live page
-        * (there must be one).  Also, if we want the rightmost page,
-        * step right if needed to get to it (this could happen if the
-        * page split since we obtained a pointer to it).
+        * (there must be one).  Also, if we want the rightmost page, step
+        * right if needed to get to it (this could happen if the page
+        * split since we obtained a pointer to it).
         */
        while (P_IGNORE(opaque) ||
               (rightmost && !P_RIGHTMOST(opaque)))
index 92a73021f668832b43024f1f9ee1a9767bcfe5fd..f8eb671df718feea9589d7a489ae19c15aeb8e56 100644 (file)
@@ -36,7 +36,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.73 2003/07/21 20:29:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.74 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -93,7 +93,7 @@ typedef struct BTPageState
 
 
 static void _bt_blnewpage(Relation index, Buffer *buf, Page *page,
-                         uint32 level);
+             uint32 level);
 static BTPageState *_bt_pagestate(Relation index, uint32 level);
 static void _bt_slideleft(Relation index, Buffer buf, Page page);
 static void _bt_sortaddtup(Page page, Size itemsize,
@@ -469,7 +469,7 @@ _bt_buildadd(Relation index, BTPageState *state, BTItem bti)
 
            oopaque->btpo_next = BufferGetBlockNumber(nbuf);
            nopaque->btpo_prev = BufferGetBlockNumber(obuf);
-           nopaque->btpo_next = P_NONE; /* redundant */
+           nopaque->btpo_next = P_NONE;        /* redundant */
        }
 
        /*
index a1a52571fe187734e25e7a5d0d43163375865b92..35e5ae6ccb818a05cbfcca267819361b1005a4cb 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.3 2003/02/23 22:43:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.4 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 typedef struct bt_incomplete_split
 {
    RelFileNode node;           /* the index */
-   BlockNumber leftblk;        /* left half of split */
-   BlockNumber rightblk;       /* right half of split */
+   BlockNumber leftblk;        /* left half of split */
+   BlockNumber rightblk;       /* right half of split */
    bool        is_root;        /* we split the root */
-} bt_incomplete_split;
+}  bt_incomplete_split;
 
 static List *incomplete_splits;
 
@@ -107,7 +107,7 @@ _bt_restore_page(Page page, char *from, int len)
 }
 
 static void
-_bt_restore_meta(Relation reln, XLogRecPtr lsn, 
+_bt_restore_meta(Relation reln, XLogRecPtr lsn,
                 BlockNumber root, uint32 level,
                 BlockNumber fastroot, uint32 fastlevel)
 {
@@ -172,7 +172,7 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
    if (!redo || !(record->xl_info & XLR_BKP_BLOCK_1))
    {
        buffer = XLogReadBuffer(false, reln,
-                               ItemPointerGetBlockNumber(&(xlrec->target.tid)));
+                       ItemPointerGetBlockNumber(&(xlrec->target.tid)));
        if (!BufferIsValid(buffer))
            elog(PANIC, "btree_insert_%sdo: block unfound", (redo) ? "re" : "un");
        page = (Page) BufferGetPage(buffer);
@@ -183,13 +183,11 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
        if (redo)
        {
            if (XLByteLE(lsn, PageGetLSN(page)))
-           {
                UnlockAndReleaseBuffer(buffer);
-           }
            else
            {
                if (PageAddItem(page, (Item) datapos, datalen,
-                               ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
+                       ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
                                LP_USED) == InvalidOffsetNumber)
                    elog(PANIC, "btree_insert_redo: failed to add item");
 
@@ -204,13 +202,9 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
                elog(PANIC, "btree_insert_undo: bad page LSN");
 
            if (!P_ISLEAF(pageop))
-           {
                UnlockAndReleaseBuffer(buffer);
-           }
            else
-           {
                elog(PANIC, "btree_insert_undo: unimplemented");
-           }
        }
    }
 
@@ -226,8 +220,8 @@ btree_xlog_insert(bool redo, bool isleaf, bool ismeta,
    if (redo && !isleaf && incomplete_splits != NIL)
    {
        forget_matching_split(reln, xlrec->target.node,
-                             ItemPointerGetBlockNumber(&(xlrec->target.tid)),
-                             ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
+                        ItemPointerGetBlockNumber(&(xlrec->target.tid)),
+                       ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
                              false);
    }
 }
@@ -238,9 +232,9 @@ btree_xlog_split(bool redo, bool onleft, bool isroot,
 {
    xl_btree_split *xlrec = (xl_btree_split *) XLogRecGetData(record);
    Relation    reln;
-   BlockNumber targetblk;
-   BlockNumber leftsib;
-   BlockNumber rightsib;
+   BlockNumber targetblk;
+   BlockNumber leftsib;
+   BlockNumber rightsib;
    Buffer      buffer;
    Page        page;
    BTPageOpaque pageop;
@@ -338,9 +332,7 @@ btree_xlog_split(bool redo, bool onleft, bool isroot,
                elog(PANIC, "btree_split_redo: uninitialized next right page");
 
            if (XLByteLE(lsn, PageGetLSN(page)))
-           {
                UnlockAndReleaseBuffer(buffer);
-           }
            else
            {
                pageop = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -357,8 +349,8 @@ btree_xlog_split(bool redo, bool onleft, bool isroot,
    if (redo && xlrec->level > 0 && incomplete_splits != NIL)
    {
        forget_matching_split(reln, xlrec->target.node,
-                             ItemPointerGetBlockNumber(&(xlrec->target.tid)),
-                             ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
+                        ItemPointerGetBlockNumber(&(xlrec->target.tid)),
+                       ItemPointerGetOffsetNumber(&(xlrec->target.tid)),
                              false);
    }
 
@@ -422,10 +414,10 @@ btree_xlog_delete_page(bool redo, bool ismeta,
 {
    xl_btree_delete_page *xlrec = (xl_btree_delete_page *) XLogRecGetData(record);
    Relation    reln;
-   BlockNumber parent;
-   BlockNumber target;
-   BlockNumber leftsib;
-   BlockNumber rightsib;
+   BlockNumber parent;
+   BlockNumber target;
+   BlockNumber leftsib;
+   BlockNumber rightsib;
    Buffer      buffer;
    Page        page;
    BTPageOpaque pageop;
@@ -451,9 +443,7 @@ btree_xlog_delete_page(bool redo, bool ismeta,
        if (PageIsNew((PageHeader) page))
            elog(PANIC, "btree_delete_page_redo: uninitialized parent page");
        if (XLByteLE(lsn, PageGetLSN(page)))
-       {
            UnlockAndReleaseBuffer(buffer);
-       }
        else
        {
            OffsetNumber poffset;
@@ -469,7 +459,7 @@ btree_xlog_delete_page(bool redo, bool ismeta,
            {
                ItemId      itemid;
                BTItem      btitem;
-               OffsetNumber    nextoffset;
+               OffsetNumber nextoffset;
 
                itemid = PageGetItemId(page, poffset);
                btitem = (BTItem) PageGetItem(page, itemid);
@@ -494,9 +484,7 @@ btree_xlog_delete_page(bool redo, bool ismeta,
        if (PageIsNew((PageHeader) page))
            elog(PANIC, "btree_delete_page_redo: uninitialized right sibling");
        if (XLByteLE(lsn, PageGetLSN(page)))
-       {
            UnlockAndReleaseBuffer(buffer);
-       }
        else
        {
            pageop = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -520,9 +508,7 @@ btree_xlog_delete_page(bool redo, bool ismeta,
            if (PageIsNew((PageHeader) page))
                elog(PANIC, "btree_delete_page_redo: uninitialized left sibling");
            if (XLByteLE(lsn, PageGetLSN(page)))
-           {
                UnlockAndReleaseBuffer(buffer);
-           }
            else
            {
                pageop = (BTPageOpaque) PageGetSpecialPointer(page);
@@ -799,116 +785,116 @@ btree_desc(char *buf, uint8 xl_info, char *rec)
    switch (info)
    {
        case XLOG_BTREE_INSERT_LEAF:
-       {
-           xl_btree_insert *xlrec = (xl_btree_insert *) rec;
+           {
+               xl_btree_insert *xlrec = (xl_btree_insert *) rec;
 
-           strcat(buf, "insert: ");
-           out_target(buf, &(xlrec->target));
-           break;
-       }
+               strcat(buf, "insert: ");
+               out_target(buf, &(xlrec->target));
+               break;
+           }
        case XLOG_BTREE_INSERT_UPPER:
-       {
-           xl_btree_insert *xlrec = (xl_btree_insert *) rec;
+           {
+               xl_btree_insert *xlrec = (xl_btree_insert *) rec;
 
-           strcat(buf, "insert_upper: ");
-           out_target(buf, &(xlrec->target));
-           break;
-       }
+               strcat(buf, "insert_upper: ");
+               out_target(buf, &(xlrec->target));
+               break;
+           }
        case XLOG_BTREE_INSERT_META:
-       {
-           xl_btree_insert *xlrec = (xl_btree_insert *) rec;
+           {
+               xl_btree_insert *xlrec = (xl_btree_insert *) rec;
 
-           strcat(buf, "insert_meta: ");
-           out_target(buf, &(xlrec->target));
-           break;
-       }
+               strcat(buf, "insert_meta: ");
+               out_target(buf, &(xlrec->target));
+               break;
+           }
        case XLOG_BTREE_SPLIT_L:
-       {
-           xl_btree_split *xlrec = (xl_btree_split *) rec;
+           {
+               xl_btree_split *xlrec = (xl_btree_split *) rec;
 
-           strcat(buf, "split_l: ");
-           out_target(buf, &(xlrec->target));
-           sprintf(buf + strlen(buf), "; oth %u; rgh %u",
-                   xlrec->otherblk, xlrec->rightblk);
-           break;
-       }
+               strcat(buf, "split_l: ");
+               out_target(buf, &(xlrec->target));
+               sprintf(buf + strlen(buf), "; oth %u; rgh %u",
+                       xlrec->otherblk, xlrec->rightblk);
+               break;
+           }
        case XLOG_BTREE_SPLIT_R:
-       {
-           xl_btree_split *xlrec = (xl_btree_split *) rec;
+           {
+               xl_btree_split *xlrec = (xl_btree_split *) rec;
 
-           strcat(buf, "split_r: ");
-           out_target(buf, &(xlrec->target));
-           sprintf(buf + strlen(buf), "; oth %u; rgh %u",
-                   xlrec->otherblk, xlrec->rightblk);
-           break;
-       }
+               strcat(buf, "split_r: ");
+               out_target(buf, &(xlrec->target));
+               sprintf(buf + strlen(buf), "; oth %u; rgh %u",
+                       xlrec->otherblk, xlrec->rightblk);
+               break;
+           }
        case XLOG_BTREE_SPLIT_L_ROOT:
-       {
-           xl_btree_split *xlrec = (xl_btree_split *) rec;
+           {
+               xl_btree_split *xlrec = (xl_btree_split *) rec;
 
-           strcat(buf, "split_l_root: ");
-           out_target(buf, &(xlrec->target));
-           sprintf(buf + strlen(buf), "; oth %u; rgh %u",
-                   xlrec->otherblk, xlrec->rightblk);
-           break;
-       }
+               strcat(buf, "split_l_root: ");
+               out_target(buf, &(xlrec->target));
+               sprintf(buf + strlen(buf), "; oth %u; rgh %u",
+                       xlrec->otherblk, xlrec->rightblk);
+               break;
+           }
        case XLOG_BTREE_SPLIT_R_ROOT:
-       {
-           xl_btree_split *xlrec = (xl_btree_split *) rec;
+           {
+               xl_btree_split *xlrec = (xl_btree_split *) rec;
 
-           strcat(buf, "split_r_root: ");
-           out_target(buf, &(xlrec->target));
-           sprintf(buf + strlen(buf), "; oth %u; rgh %u",
-                   xlrec->otherblk, xlrec->rightblk);
-           break;
-       }
+               strcat(buf, "split_r_root: ");
+               out_target(buf, &(xlrec->target));
+               sprintf(buf + strlen(buf), "; oth %u; rgh %u",
+                       xlrec->otherblk, xlrec->rightblk);
+               break;
+           }
        case XLOG_BTREE_DELETE:
-       {
-           xl_btree_delete *xlrec = (xl_btree_delete *) rec;
+           {
+               xl_btree_delete *xlrec = (xl_btree_delete *) rec;
 
-           sprintf(buf + strlen(buf), "delete: node %u/%u; blk %u",
-                   xlrec->node.tblNode, xlrec->node.relNode, xlrec->block);
-           break;
-       }
+               sprintf(buf + strlen(buf), "delete: node %u/%u; blk %u",
+                xlrec->node.tblNode, xlrec->node.relNode, xlrec->block);
+               break;
+           }
        case XLOG_BTREE_DELETE_PAGE:
        case XLOG_BTREE_DELETE_PAGE_META:
-       {
-           xl_btree_delete_page *xlrec = (xl_btree_delete_page *) rec;
+           {
+               xl_btree_delete_page *xlrec = (xl_btree_delete_page *) rec;
 
-           strcat(buf, "delete_page: ");
-           out_target(buf, &(xlrec->target));
-           sprintf(buf + strlen(buf), "; dead %u; left %u; right %u",
-                   xlrec->deadblk, xlrec->leftblk, xlrec->rightblk);
-           break;
-       }
+               strcat(buf, "delete_page: ");
+               out_target(buf, &(xlrec->target));
+               sprintf(buf + strlen(buf), "; dead %u; left %u; right %u",
+                       xlrec->deadblk, xlrec->leftblk, xlrec->rightblk);
+               break;
+           }
        case XLOG_BTREE_NEWROOT:
-       {
-           xl_btree_newroot *xlrec = (xl_btree_newroot *) rec;
+           {
+               xl_btree_newroot *xlrec = (xl_btree_newroot *) rec;
 
-           sprintf(buf + strlen(buf), "newroot: node %u/%u; root %u lev %u",
-                   xlrec->node.tblNode, xlrec->node.relNode,
-                   xlrec->rootblk, xlrec->level);
-           break;
-       }
+               sprintf(buf + strlen(buf), "newroot: node %u/%u; root %u lev %u",
+                       xlrec->node.tblNode, xlrec->node.relNode,
+                       xlrec->rootblk, xlrec->level);
+               break;
+           }
        case XLOG_BTREE_NEWMETA:
-       {
-           xl_btree_newmeta *xlrec = (xl_btree_newmeta *) rec;
+           {
+               xl_btree_newmeta *xlrec = (xl_btree_newmeta *) rec;
 
-           sprintf(buf + strlen(buf), "newmeta: node %u/%u; root %u lev %u fast %u lev %u",
-                   xlrec->node.tblNode, xlrec->node.relNode,
-                   xlrec->meta.root, xlrec->meta.level,
-                   xlrec->meta.fastroot, xlrec->meta.fastlevel);
-           break;
-       }
+               sprintf(buf + strlen(buf), "newmeta: node %u/%u; root %u lev %u fast %u lev %u",
+                       xlrec->node.tblNode, xlrec->node.relNode,
+                       xlrec->meta.root, xlrec->meta.level,
+                       xlrec->meta.fastroot, xlrec->meta.fastlevel);
+               break;
+           }
        case XLOG_BTREE_NEWPAGE:
-       {
-           xl_btree_newpage *xlrec = (xl_btree_newpage *) rec;
+           {
+               xl_btree_newpage *xlrec = (xl_btree_newpage *) rec;
 
-           sprintf(buf + strlen(buf), "newpage: node %u/%u; page %u",
-                   xlrec->node.tblNode, xlrec->node.relNode,
-                   xlrec->blkno);
-           break;
-       }
+               sprintf(buf + strlen(buf), "newpage: node %u/%u; page %u",
+                       xlrec->node.tblNode, xlrec->node.relNode,
+                       xlrec->blkno);
+               break;
+           }
        default:
            strcat(buf, "UNKNOWN");
            break;
index 6358d622e1ff729faccfdf713993da851b9de384..4362835d700ae142a198924d1670953cca4d4187 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtscan.c,v 1.45 2003/07/28 00:09:14 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtscan.c,v 1.46 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -109,10 +109,10 @@ rtrescan(PG_FUNCTION_ARGS)
                s->numberOfKeys * sizeof(ScanKeyData));
 
        /*
-        * Scans on internal pages use different operators than they
-        * do on leaf pages.  For example, if the user wants all boxes
-        * that exactly match (x1,y1,x2,y2), then on internal pages we
-        * need to find all boxes that contain (x1,y1,x2,y2).
+        * Scans on internal pages use different operators than they do on
+        * leaf pages.  For example, if the user wants all boxes that
+        * exactly match (x1,y1,x2,y2), then on internal pages we need to
+        * find all boxes that contain (x1,y1,x2,y2).
         */
        for (i = 0; i < s->numberOfKeys; i++)
        {
index 3653d05bc1e1fc8cb4d75e11d91e7ee5f1fb1dc5..6741e5436d57586223c2020c33ddbedaed54507a 100644 (file)
@@ -13,7 +13,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/access/transam/clog.c,v 1.16 2003/06/11 22:37:45 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/clog.c,v 1.17 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -73,7 +73,7 @@
 
 static SlruCtlData ClogCtlData;
 static SlruCtl ClogCtl = &ClogCtlData;
-  
+
 
 static int ZeroCLOGPage(int pageno, bool writeXlog);
 static bool CLOGPagePrecedes(int page1, int page2);
index 59af28080265c384ef8423f8fd0410f848d15dc6..444d2b97d7d6aa7a4b4956bb15e0c09e2094c12b 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Resource managers definition
  *
- * $Header: /cvsroot/pgsql/src/backend/access/transam/rmgr.c,v 1.10 2003/02/21 00:06:22 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/rmgr.c,v 1.11 2003/08/04 00:43:15 momjian Exp $
  */
 #include "postgres.h"
 
@@ -19,7 +19,7 @@
 #include "commands/sequence.h"
 
 
-RmgrData   RmgrTable[RM_MAX_ID+1] = {
+RmgrData   RmgrTable[RM_MAX_ID + 1] = {
    {"XLOG", xlog_redo, xlog_undo, xlog_desc, NULL, NULL},
    {"Transaction", xact_redo, xact_undo, xact_desc, NULL, NULL},
    {"Storage", smgr_redo, smgr_undo, smgr_desc, NULL, NULL},
@@ -32,7 +32,7 @@ RmgrData  RmgrTable[RM_MAX_ID+1] = {
    {"Reserved 9", NULL, NULL, NULL, NULL, NULL},
    {"Heap", heap_redo, heap_undo, heap_desc, NULL, NULL},
    {"Btree", btree_redo, btree_undo, btree_desc,
-    btree_xlog_startup, btree_xlog_cleanup},
+   btree_xlog_startup, btree_xlog_cleanup},
    {"Hash", hash_redo, hash_undo, hash_desc, NULL, NULL},
    {"Rtree", rtree_redo, rtree_undo, rtree_desc, NULL, NULL},
    {"Gist", gist_redo, gist_undo, gist_desc, NULL, NULL},
index 5129dd3c7e52a0686e142ef10e32162803a5f919..1c290f2cf57d89135b61c6faf90b273532ec9107 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/access/transam/slru.c,v 1.3 2003/07/28 00:09:14 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/slru.c,v 1.4 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -93,7 +93,7 @@ typedef enum
    SLRU_PAGE_CLEAN,            /* page is valid and not dirty */
    SLRU_PAGE_DIRTY,            /* page is valid but needs write */
    SLRU_PAGE_WRITE_IN_PROGRESS /* page is being written out */
-} SlruPageStatus;
+}  SlruPageStatus;
 
 /*
  * Shared-memory state
@@ -117,7 +117,7 @@ typedef struct SlruSharedData
     * swapping out the latest page.
     */
    int         latest_page_number;
-} SlruSharedData;
+}  SlruSharedData;
 typedef SlruSharedData *SlruShared;
 
 
@@ -145,7 +145,7 @@ typedef enum
    SLRU_SEEK_FAILED,
    SLRU_READ_FAILED,
    SLRU_WRITE_FAILED
-} SlruErrorCause;
+}  SlruErrorCause;
 static SlruErrorCause slru_errcause;
 static int slru_errno;
 
@@ -166,9 +166,9 @@ SimpleLruShmemSize(void)
 {
    return MAXALIGN(sizeof(SlruSharedData)) + BLCKSZ * NUM_CLOG_BUFFERS
 #ifdef EXEC_BACKEND
-           + MAXALIGN(sizeof(SlruLockData))
+       + MAXALIGN(sizeof(SlruLockData))
 #endif
-   ;
+       ;
 }
 
 void
@@ -183,12 +183,14 @@ SimpleLruInit(SlruCtl ctl, const char *name, const char *subdir)
    shared = (SlruShared) ptr;
 
 #ifdef EXEC_BACKEND
+
    /*
     * Locks are in shared memory
     */
-   locks = (SlruLock)(ptr + MAXALIGN(sizeof(SlruSharedData)) +
-                            BLCKSZ * NUM_CLOG_BUFFERS);
+   locks = (SlruLock) (ptr + MAXALIGN(sizeof(SlruSharedData)) +
+                       BLCKSZ * NUM_CLOG_BUFFERS);
 #else
+
    /*
     * Locks are in private memory
     */
@@ -199,7 +201,7 @@ SimpleLruInit(SlruCtl ctl, const char *name, const char *subdir)
 
 
    if (!IsUnderPostmaster)
-   /* Initialize locks and shared memory area */
+       /* Initialize locks and shared memory area */
    {
        char       *bufptr;
        int         slotno;
@@ -210,8 +212,8 @@ SimpleLruInit(SlruCtl ctl, const char *name, const char *subdir)
 
        memset(shared, 0, sizeof(SlruSharedData));
 
-       bufptr = (char *)shared + MAXALIGN(sizeof(SlruSharedData));
-   
+       bufptr = (char *) shared + MAXALIGN(sizeof(SlruSharedData));
+
        for (slotno = 0; slotno < NUM_CLOG_BUFFERS; slotno++)
        {
            locks->BufferLocks[slotno] = LWLockAssign();
@@ -247,7 +249,7 @@ int
 SimpleLruZeroPage(SlruCtl ctl, int pageno)
 {
    int         slotno;
-   SlruShared shared = (SlruShared) ctl->shared;
+   SlruShared  shared = (SlruShared) ctl->shared;
 
    /* Find a suitable buffer slot for the page */
    slotno = SlruSelectLRUPage(ctl, pageno);
@@ -285,7 +287,7 @@ SimpleLruZeroPage(SlruCtl ctl, int pageno)
 char *
 SimpleLruReadPage(SlruCtl ctl, int pageno, TransactionId xid, bool forwrite)
 {
-   SlruShared shared = (SlruShared) ctl->shared;
+   SlruShared  shared = (SlruShared) ctl->shared;
 
    /* Outer loop handles restart if we lose the buffer to someone else */
    for (;;)
@@ -383,7 +385,7 @@ SimpleLruWritePage(SlruCtl ctl, int slotno)
 {
    int         pageno;
    bool        ok;
-   SlruShared shared = (SlruShared) ctl->shared;
+   SlruShared  shared = (SlruShared) ctl->shared;
 
    /* Do nothing if page does not need writing */
    if (shared->page_status[slotno] != SLRU_PAGE_DIRTY &&
@@ -539,13 +541,13 @@ SlruPhysicalWritePage(SlruCtl ctl, int pageno, int slotno)
     * possible for this to need to happen when writing a page that's not
     * first in its segment; we assume the OS can cope with that.  (Note:
     * it might seem that it'd be okay to create files only when
-    * SimpleLruZeroPage is called for the first page of a segment. However,
-    * if after a crash and restart the REDO logic elects to replay the
-    * log from a checkpoint before the latest one, then it's possible
-    * that we will get commands to set transaction status of transactions
-    * that have already been truncated from the commit log.  Easiest way
-    * to deal with that is to accept references to nonexistent files here
-    * and in SlruPhysicalReadPage.)
+    * SimpleLruZeroPage is called for the first page of a segment.
+    * However, if after a crash and restart the REDO logic elects to
+    * replay the log from a checkpoint before the latest one, then it's
+    * possible that we will get commands to set transaction status of
+    * transactions that have already been truncated from the commit log.
+    * Easiest way to deal with that is to accept references to
+    * nonexistent files here and in SlruPhysicalReadPage.)
     */
    fd = BasicOpenFile(path, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
    if (fd < 0)
@@ -608,37 +610,37 @@ SlruReportIOError(SlruCtl ctl, int pageno, TransactionId xid)
        case SLRU_OPEN_FAILED:
            ereport(ERROR,
                    (errcode_for_file_access(),
-                    errmsg("could not access status of transaction %u", xid),
+               errmsg("could not access status of transaction %u", xid),
                     errdetail("open of file \"%s\" failed: %m",
                               path)));
            break;
        case SLRU_CREATE_FAILED:
            ereport(ERROR,
                    (errcode_for_file_access(),
-                    errmsg("could not access status of transaction %u", xid),
+               errmsg("could not access status of transaction %u", xid),
                     errdetail("creation of file \"%s\" failed: %m",
                               path)));
            break;
        case SLRU_SEEK_FAILED:
            ereport(ERROR,
                    (errcode_for_file_access(),
-                    errmsg("could not access status of transaction %u", xid),
-                    errdetail("lseek of file \"%s\", offset %u failed: %m",
-                              path, offset)));
+               errmsg("could not access status of transaction %u", xid),
+                 errdetail("lseek of file \"%s\", offset %u failed: %m",
+                           path, offset)));
            break;
        case SLRU_READ_FAILED:
            ereport(ERROR,
                    (errcode_for_file_access(),
-                    errmsg("could not access status of transaction %u", xid),
-                    errdetail("read of file \"%s\", offset %u failed: %m",
-                              path, offset)));
+               errmsg("could not access status of transaction %u", xid),
+                  errdetail("read of file \"%s\", offset %u failed: %m",
+                            path, offset)));
            break;
        case SLRU_WRITE_FAILED:
            ereport(ERROR,
                    (errcode_for_file_access(),
-                    errmsg("could not access status of transaction %u", xid),
-                    errdetail("write of file \"%s\", offset %u failed: %m",
-                              path, offset)));
+               errmsg("could not access status of transaction %u", xid),
+                 errdetail("write of file \"%s\", offset %u failed: %m",
+                           path, offset)));
            break;
        default:
            /* can't get here, we trust */
@@ -665,6 +667,7 @@ static int
 SlruSelectLRUPage(SlruCtl ctl, int pageno)
 {
    SlruShared  shared = (SlruShared) ctl->shared;
+
    /* Outer loop handles restart after I/O */
    for (;;)
    {
@@ -689,7 +692,7 @@ SlruSelectLRUPage(SlruCtl ctl, int pageno)
            if (shared->page_status[slotno] == SLRU_PAGE_EMPTY)
                return slotno;
            if (shared->page_lru_count[slotno] > bestcount &&
-               shared->page_number[slotno] != shared->latest_page_number)
+               shared->page_number[slotno] != shared->latest_page_number)
            {
                bestslot = slotno;
                bestcount = shared->page_lru_count[slotno];
@@ -705,12 +708,12 @@ SlruSelectLRUPage(SlruCtl ctl, int pageno)
        /*
         * We need to do I/O.  Normal case is that we have to write it
         * out, but it's possible in the worst case to have selected a
-        * read-busy page.  In that case we use SimpleLruReadPage to wait for
-        * the read to complete.
+        * read-busy page.  In that case we use SimpleLruReadPage to wait
+        * for the read to complete.
         */
        if (shared->page_status[bestslot] == SLRU_PAGE_READ_IN_PROGRESS)
            (void) SimpleLruReadPage(ctl, shared->page_number[bestslot],
-                                    InvalidTransactionId, false);
+                                    InvalidTransactionId, false);
        else
            SimpleLruWritePage(ctl, bestslot);
 
@@ -747,10 +750,11 @@ SimpleLruFlush(SlruCtl ctl, bool checkpoint)
    for (slotno = 0; slotno < NUM_CLOG_BUFFERS; slotno++)
    {
        SimpleLruWritePage(ctl, slotno);
+
        /*
-        * When called during a checkpoint,
-        * we cannot assert that the slot is clean now, since another
-        * process might have re-dirtied it already.  That's okay.
+        * When called during a checkpoint, we cannot assert that the slot
+        * is clean now, since another process might have re-dirtied it
+        * already.  That's okay.
         */
        Assert(checkpoint ||
               shared->page_status[slotno] == SLRU_PAGE_EMPTY ||
@@ -792,10 +796,10 @@ SimpleLruTruncate(SlruCtl ctl, int cutoffPage)
    CreateCheckPoint(false, true);
 
    /*
-    * Scan shared memory and remove any pages preceding the cutoff
-    * page, to ensure we won't rewrite them later.  (Any dirty pages
-    * should have been flushed already during the checkpoint, we're just
-    * being extra careful here.)
+    * Scan shared memory and remove any pages preceding the cutoff page,
+    * to ensure we won't rewrite them later.  (Any dirty pages should
+    * have been flushed already during the checkpoint, we're just being
+    * extra careful here.)
     */
    LWLockAcquire(ctl->locks->ControlLock, LW_EXCLUSIVE);
 
@@ -870,7 +874,7 @@ SlruScanDirectory(SlruCtl ctl, int cutoffPage, bool doDeletions)
    if (cldir == NULL)
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not open directory \"%s\": %m", ctl->Dir)));
+              errmsg("could not open directory \"%s\": %m", ctl->Dir)));
 
    errno = 0;
    while ((clde = readdir(cldir)) != NULL)
@@ -898,7 +902,7 @@ SlruScanDirectory(SlruCtl ctl, int cutoffPage, bool doDeletions)
    if (errno)
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not read directory \"%s\": %m", ctl->Dir)));
+              errmsg("could not read directory \"%s\": %m", ctl->Dir)));
    closedir(cldir);
 
    return found;
index 40b41519a9330a0e1d1ae7bd7dd115045d830dad..550f2ae924bb72222a10d937ef09dbbf5fe06f22 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.149 2003/07/21 20:29:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.150 2003/08/04 00:43:15 momjian Exp $
  *
  * NOTES
  *     Transaction aborts can now occur two ways:
@@ -92,7 +92,7 @@
  *             AbortTransactionBlock
  *
  *     These are invoked only in response to a user "BEGIN WORK", "COMMIT",
- *     or "ROLLBACK" command.  The tricky part about these functions
+ *     or "ROLLBACK" command.  The tricky part about these functions
  *     is that they are called within the postgres main loop, in between
  *     the StartTransactionCommand() and CommitTransactionCommand().
  *
@@ -197,8 +197,8 @@ static TransactionStateData CurrentTransactionStateData = {
    0,                          /* scan command id */
    0x0,                        /* start time */
    TRANS_DEFAULT,              /* transaction state */
-   TBLOCK_DEFAULT              /* transaction block state from
-                                  the client perspective */
+   TBLOCK_DEFAULT              /* transaction block state from the client
+                                * perspective */
 };
 
 TransactionState CurrentTransactionState = &CurrentTransactionStateData;
@@ -359,7 +359,7 @@ GetCurrentTransactionStartTimeUsec(int *msec)
  * TransactionIdIsCurrentTransactionId
  *
  * During bootstrap, we cheat and say "it's not my transaction ID" even though
- * it is.  Along with transam.c's cheat to say that the bootstrap XID is
+ * it is.  Along with transam.c's cheat to say that the bootstrap XID is
  * already committed, this causes the tqual.c routines to see previously
  * inserted tuples as committed, which is what we need during bootstrap.
  */
@@ -561,13 +561,13 @@ RecordTransactionCommit(void)
 
        /*
         * We must mark the transaction committed in clog if its XID
-        * appears either in permanent rels or in local temporary rels.
-        * We test this by seeing if we made transaction-controlled
-        * entries *OR* local-rel tuple updates.  Note that if we made
-        * only the latter, we have not emitted an XLOG record for our
-        * commit, and so in the event of a crash the clog update might be
-        * lost.  This is okay because no one else will ever care whether
-        * we committed.
+        * appears either in permanent rels or in local temporary rels. We
+        * test this by seeing if we made transaction-controlled entries
+        * *OR* local-rel tuple updates.  Note that if we made only the
+        * latter, we have not emitted an XLOG record for our commit, and
+        * so in the event of a crash the clog update might be lost.  This
+        * is okay because no one else will ever care whether we
+        * committed.
         */
        if (MyLastRecPtr.xrecoff != 0 || MyXactMadeTempRelUpdate)
            TransactionIdCommit(xid);
@@ -755,9 +755,9 @@ AtAbort_Memory(void)
 {
    /*
     * Make sure we are in a valid context (not a child of
-    * TopTransactionContext...).  Note that it is possible for this
-    * code to be called when we aren't in a transaction at all; go
-    * directly to TopMemoryContext in that case.
+    * TopTransactionContext...).  Note that it is possible for this code
+    * to be called when we aren't in a transaction at all; go directly to
+    * TopMemoryContext in that case.
     */
    if (TopTransactionContext != NULL)
    {
@@ -891,8 +891,8 @@ CommitTransaction(void)
    DeferredTriggerEndXact();
 
    /*
-    * Similarly, let ON COMMIT management do its thing before we start
-    * to commit.
+    * Similarly, let ON COMMIT management do its thing before we start to
+    * commit.
     */
    PreCommit_on_commit_actions();
 
@@ -953,10 +953,10 @@ CommitTransaction(void)
     * noncritical resource releasing.
     *
     * The ordering of operations is not entirely random.  The idea is:
-    * release resources visible to other backends (eg, files, buffer pins);
-    * then release locks; then release backend-local resources.  We want
-    * to release locks at the point where any backend waiting for us will
-    * see our transaction as being fully cleaned up.
+    * release resources visible to other backends (eg, files, buffer
+    * pins); then release locks; then release backend-local resources.
+    * We want to release locks at the point where any backend waiting for
+    * us will see our transaction as being fully cleaned up.
     */
 
    smgrDoPendingDeletes(true);
@@ -1064,7 +1064,7 @@ AbortTransaction(void)
    }
 
    /*
-    * Post-abort cleanup.  See notes in CommitTransaction() concerning
+    * Post-abort cleanup.  See notes in CommitTransaction() concerning
     * ordering.
     */
 
@@ -1194,8 +1194,8 @@ StartTransactionCommand(void)
    }
 
    /*
-    * We must switch to TopTransactionContext before returning. This
-    * is already done if we called StartTransaction, otherwise not.
+    * We must switch to TopTransactionContext before returning. This is
+    * already done if we called StartTransaction, otherwise not.
     */
    Assert(TopTransactionContext != NULL);
    MemoryContextSwitchTo(TopTransactionContext);
@@ -1370,9 +1370,10 @@ PreventTransactionChain(void *stmtNode, const char *stmtType)
    if (IsTransactionBlock())
        ereport(ERROR,
                (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
-                /* translator: %s represents an SQL statement name */
+       /* translator: %s represents an SQL statement name */
                 errmsg("%s cannot run inside a transaction block",
                        stmtType)));
+
    /*
     * Are we inside a function call?  If the statement's parameter block
     * was allocated in QueryContext, assume it is an interactive command.
@@ -1381,8 +1382,8 @@ PreventTransactionChain(void *stmtNode, const char *stmtType)
    if (!MemoryContextContains(QueryContext, stmtNode))
        ereport(ERROR,
                (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
-                /* translator: %s represents an SQL statement name */
-                errmsg("%s cannot be executed from a function", stmtType)));
+       /* translator: %s represents an SQL statement name */
+            errmsg("%s cannot be executed from a function", stmtType)));
    /* If we got past IsTransactionBlock test, should be in default state */
    if (CurrentTransactionState->blockState != TBLOCK_DEFAULT)
        elog(ERROR, "cannot prevent transaction chain");
@@ -1414,6 +1415,7 @@ RequireTransactionChain(void *stmtNode, const char *stmtType)
     */
    if (IsTransactionBlock())
        return;
+
    /*
     * Are we inside a function call?  If the statement's parameter block
     * was allocated in QueryContext, assume it is an interactive command.
@@ -1423,7 +1425,7 @@ RequireTransactionChain(void *stmtNode, const char *stmtType)
        return;
    ereport(ERROR,
            (errcode(ERRCODE_NO_ACTIVE_SQL_TRANSACTION),
-            /* translator: %s represents an SQL statement name */
+   /* translator: %s represents an SQL statement name */
             errmsg("%s may only be used in BEGIN/END transaction blocks",
                    stmtType)));
 }
index 0ceb8951cbe0389b1681398e097324ad65d2b5b3..45a2743ba97f4995ab1ea19d446e1c303e0932da 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.120 2003/07/28 00:09:14 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.121 2003/08/04 00:43:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1046,8 +1046,8 @@ XLogWrite(XLogwrtRqst WriteRqst)
                if (close(openLogFile) != 0)
                    ereport(PANIC,
                            (errcode_for_file_access(),
-                            errmsg("close of log file %u, segment %u failed: %m",
-                                   openLogId, openLogSeg)));
+                   errmsg("close of log file %u, segment %u failed: %m",
+                          openLogId, openLogSeg)));
                openLogFile = -1;
            }
            XLByteToPrevSeg(LogwrtResult.Write, openLogId, openLogSeg);
@@ -1162,8 +1162,8 @@ XLogWrite(XLogwrtRqst WriteRqst)
                if (close(openLogFile) != 0)
                    ereport(PANIC,
                            (errcode_for_file_access(),
-                            errmsg("close of log file %u, segment %u failed: %m",
-                                   openLogId, openLogSeg)));
+                   errmsg("close of log file %u, segment %u failed: %m",
+                          openLogId, openLogSeg)));
                openLogFile = -1;
            }
            if (openLogFile < 0)
@@ -1266,7 +1266,7 @@ XLogFlush(XLogRecPtr record)
                XLogCtlInsert *Insert = &XLogCtl->Insert;
                uint32      freespace = INSERT_FREESPACE(Insert);
 
-               if (freespace < SizeOfXLogRecord)   /* buffer is full */
+               if (freespace < SizeOfXLogRecord)       /* buffer is full */
                    WriteRqstPtr = XLogCtl->xlblocks[Insert->curridx];
                else
                {
@@ -1449,8 +1449,8 @@ XLogFileInit(uint32 log, uint32 seg,
    if (fd < 0)
        ereport(PANIC,
                (errcode_for_file_access(),
-                errmsg("open of \"%s\" (log file %u, segment %u) failed: %m",
-                       path, log, seg)));
+           errmsg("open of \"%s\" (log file %u, segment %u) failed: %m",
+                  path, log, seg)));
 
    return (fd);
 }
@@ -1563,14 +1563,14 @@ XLogFileOpen(uint32 log, uint32 seg, bool econt)
        {
            ereport(LOG,
                    (errcode_for_file_access(),
-                    errmsg("open of \"%s\" (log file %u, segment %u) failed: %m",
-                           path, log, seg)));
+           errmsg("open of \"%s\" (log file %u, segment %u) failed: %m",
+                  path, log, seg)));
            return (fd);
        }
        ereport(PANIC,
                (errcode_for_file_access(),
-                errmsg("open of \"%s\" (log file %u, segment %u) failed: %m",
-                       path, log, seg)));
+           errmsg("open of \"%s\" (log file %u, segment %u) failed: %m",
+                  path, log, seg)));
    }
 
    return (fd);
@@ -1621,8 +1621,8 @@ MoveOfflineLogs(uint32 log, uint32 seg, XLogRecPtr endptr)
    if (xldir == NULL)
        ereport(PANIC,
                (errcode_for_file_access(),
-                errmsg("could not open transaction log directory \"%s\": %m",
-                       XLogDir)));
+           errmsg("could not open transaction log directory \"%s\": %m",
+                  XLogDir)));
 
    sprintf(lastoff, "%08X%08X", log, seg);
 
@@ -1654,15 +1654,15 @@ MoveOfflineLogs(uint32 log, uint32 seg, XLogRecPtr endptr)
                                           true))
                {
                    ereport(LOG,
-                           (errmsg("recycled transaction log file \"%s\"",
-                                   xlde->d_name)));
+                         (errmsg("recycled transaction log file \"%s\"",
+                                 xlde->d_name)));
                }
                else
                {
                    /* No need for any more future segments... */
                    ereport(LOG,
-                           (errmsg("removing transaction log file \"%s\"",
-                                   xlde->d_name)));
+                         (errmsg("removing transaction log file \"%s\"",
+                                 xlde->d_name)));
                    unlink(path);
                }
            }
@@ -1672,8 +1672,8 @@ MoveOfflineLogs(uint32 log, uint32 seg, XLogRecPtr endptr)
    if (errno)
        ereport(PANIC,
                (errcode_for_file_access(),
-                errmsg("could not read transaction log directory \"%s\": %m",
-                       XLogDir)));
+           errmsg("could not read transaction log directory \"%s\": %m",
+                  XLogDir)));
    closedir(xldir);
 }
 
@@ -1746,8 +1746,8 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr, int emode)
    if (!EQ_CRC64(record->xl_crc, crc))
    {
        ereport(emode,
-               (errmsg("bad resource manager data checksum in record at %X/%X",
-                       recptr.xlogid, recptr.xrecoff)));
+        (errmsg("bad resource manager data checksum in record at %X/%X",
+                recptr.xlogid, recptr.xrecoff)));
        return (false);
    }
 
@@ -1769,8 +1769,8 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr, int emode)
        if (!EQ_CRC64(cbuf, crc))
        {
            ereport(emode,
-                   (errmsg("bad checksum of backup block %d in record at %X/%X",
-                           i + 1, recptr.xlogid, recptr.xrecoff)));
+           (errmsg("bad checksum of backup block %d in record at %X/%X",
+                   i + 1, recptr.xlogid, recptr.xrecoff)));
            return (false);
        }
        blk += sizeof(BkpBlock) + BLCKSZ;
@@ -1931,7 +1931,7 @@ got_record:;
    {
        ereport(emode,
                (errmsg("invalid resource manager id %u at %X/%X",
-                       record->xl_rmid, RecPtr->xlogid, RecPtr->xrecoff)));
+                    record->xl_rmid, RecPtr->xlogid, RecPtr->xrecoff)));
        goto next_record_is_invalid;
    }
    nextRecord = NULL;
@@ -2063,7 +2063,7 @@ ValidXLOGHeader(XLogPageHeader hdr, int emode, bool checkSUI)
    {
        ereport(emode,
                (errmsg("unexpected pageaddr %X/%X in log file %u, segment %u, offset %u",
-                       hdr->xlp_pageaddr.xlogid, hdr->xlp_pageaddr.xrecoff,
+                    hdr->xlp_pageaddr.xlogid, hdr->xlp_pageaddr.xrecoff,
                        readId, readSeg, readOff)));
        return false;
    }
@@ -2084,7 +2084,7 @@ ValidXLOGHeader(XLogPageHeader hdr, int emode, bool checkSUI)
            hdr->xlp_sui > lastReadSUI + 512)
        {
            ereport(emode,
-                   /* translator: SUI = startup id */
+           /* translator: SUI = startup id */
                    (errmsg("out-of-sequence SUI %u (after %u) in log file %u, segment %u, offset %u",
                            hdr->xlp_sui, lastReadSUI,
                            readId, readSeg, readOff)));
@@ -2235,8 +2235,8 @@ ReadControlFile(void)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with PG_CONTROL_VERSION %d,"
-                          " but the server was compiled with PG_CONTROL_VERSION %d.",
-                          ControlFile->pg_control_version, PG_CONTROL_VERSION),
+             " but the server was compiled with PG_CONTROL_VERSION %d.",
+                   ControlFile->pg_control_version, PG_CONTROL_VERSION),
                 errhint("It looks like you need to initdb.")));
    /* Now check the CRC. */
    INIT_CRC64(crc);
@@ -2265,75 +2265,75 @@ ReadControlFile(void)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with CATALOG_VERSION_NO %d,"
-                          " but the server was compiled with CATALOG_VERSION_NO %d.",
-                          ControlFile->catalog_version_no, CATALOG_VERSION_NO),
+             " but the server was compiled with CATALOG_VERSION_NO %d.",
+                   ControlFile->catalog_version_no, CATALOG_VERSION_NO),
                 errhint("It looks like you need to initdb.")));
    if (ControlFile->blcksz != BLCKSZ)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
-                errdetail("The database cluster was initialized with BLCKSZ %d,"
-                          " but the server was compiled with BLCKSZ %d.",
-                          ControlFile->blcksz, BLCKSZ),
-                errhint("It looks like you need to recompile or initdb.")));
+        errdetail("The database cluster was initialized with BLCKSZ %d,"
+                  " but the server was compiled with BLCKSZ %d.",
+                  ControlFile->blcksz, BLCKSZ),
+            errhint("It looks like you need to recompile or initdb.")));
    if (ControlFile->relseg_size != RELSEG_SIZE)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with RELSEG_SIZE %d,"
-                          " but the server was compiled with RELSEG_SIZE %d.",
+                    " but the server was compiled with RELSEG_SIZE %d.",
                           ControlFile->relseg_size, RELSEG_SIZE),
-                errhint("It looks like you need to recompile or initdb.")));
+            errhint("It looks like you need to recompile or initdb.")));
    if (ControlFile->nameDataLen != NAMEDATALEN)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with NAMEDATALEN %d,"
-                          " but the server was compiled with NAMEDATALEN %d.",
+                    " but the server was compiled with NAMEDATALEN %d.",
                           ControlFile->nameDataLen, NAMEDATALEN),
-                errhint("It looks like you need to recompile or initdb.")));
+            errhint("It looks like you need to recompile or initdb.")));
    if (ControlFile->funcMaxArgs != FUNC_MAX_ARGS)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with FUNC_MAX_ARGS %d,"
-                          " but the server was compiled with FUNC_MAX_ARGS %d.",
+                  " but the server was compiled with FUNC_MAX_ARGS %d.",
                           ControlFile->funcMaxArgs, FUNC_MAX_ARGS),
-                errhint("It looks like you need to recompile or initdb.")));
+            errhint("It looks like you need to recompile or initdb.")));
 
 #ifdef HAVE_INT64_TIMESTAMP
    if (ControlFile->enableIntTimes != TRUE)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized without HAVE_INT64_TIMESTAMP"
-                          " but the server was compiled with HAVE_INT64_TIMESTAMP."),
-                errhint("It looks like you need to recompile or initdb.")));
+             " but the server was compiled with HAVE_INT64_TIMESTAMP."),
+            errhint("It looks like you need to recompile or initdb.")));
 #else
    if (ControlFile->enableIntTimes != FALSE)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with HAVE_INT64_TIMESTAMP"
-                          " but the server was compiled without HAVE_INT64_TIMESTAMP."),
-                errhint("It looks like you need to recompile or initdb.")));
+          " but the server was compiled without HAVE_INT64_TIMESTAMP."),
+            errhint("It looks like you need to recompile or initdb.")));
 #endif
 
    if (ControlFile->localeBuflen != LOCALE_NAME_BUFLEN)
        ereport(FATAL,
                (errmsg("database files are incompatible with server"),
                 errdetail("The database cluster was initialized with LOCALE_NAME_BUFLEN %d,"
-                          " but the server was compiled with LOCALE_NAME_BUFLEN %d.",
+             " but the server was compiled with LOCALE_NAME_BUFLEN %d.",
                           ControlFile->localeBuflen, LOCALE_NAME_BUFLEN),
-                errhint("It looks like you need to recompile or initdb.")));
+            errhint("It looks like you need to recompile or initdb.")));
    if (setlocale(LC_COLLATE, ControlFile->lc_collate) == NULL)
        ereport(FATAL,
-               (errmsg("database files are incompatible with operating system"),
-                errdetail("The database cluster was initialized with LC_COLLATE \"%s\","
-                          " which is not recognized by setlocale().",
-                          ControlFile->lc_collate),
-                errhint("It looks like you need to initdb or install locale support.")));
+       (errmsg("database files are incompatible with operating system"),
+        errdetail("The database cluster was initialized with LC_COLLATE \"%s\","
+                  " which is not recognized by setlocale().",
+                  ControlFile->lc_collate),
+        errhint("It looks like you need to initdb or install locale support.")));
    if (setlocale(LC_CTYPE, ControlFile->lc_ctype) == NULL)
        ereport(FATAL,
-               (errmsg("database files are incompatible with operating system"),
-                errdetail("The database cluster was initialized with LC_CTYPE \"%s\","
-                          " which is not recognized by setlocale().",
-                          ControlFile->lc_ctype),
-                errhint("It looks like you need to initdb or install locale support.")));
+       (errmsg("database files are incompatible with operating system"),
+        errdetail("The database cluster was initialized with LC_CTYPE \"%s\","
+                  " which is not recognized by setlocale().",
+                  ControlFile->lc_ctype),
+        errhint("It looks like you need to initdb or install locale support.")));
 
    /* Make the fixed locale settings visible as GUC variables, too */
    SetConfigOption("lc_collate", ControlFile->lc_collate,
@@ -2602,10 +2602,10 @@ StartupXLOG(void)
                        str_time(ControlFile->time))));
    else if (ControlFile->state == DB_IN_RECOVERY)
        ereport(LOG,
-               (errmsg("database system was interrupted while in recovery at %s",
-                       str_time(ControlFile->time)),
-                errhint("This probably means that some data is corrupted and"
-                        " you will have to use the last backup for recovery.")));
+       (errmsg("database system was interrupted while in recovery at %s",
+               str_time(ControlFile->time)),
+        errhint("This probably means that some data is corrupted and"
+                " you will have to use the last backup for recovery.")));
    else if (ControlFile->state == DB_IN_PRODUCTION)
        ereport(LOG,
                (errmsg("database system was interrupted at %s",
@@ -2637,12 +2637,12 @@ StartupXLOG(void)
            checkPointLoc = ControlFile->prevCheckPoint;
            ereport(LOG,
                    (errmsg("using previous checkpoint record at %X/%X",
-                           checkPointLoc.xlogid, checkPointLoc.xrecoff)));
+                         checkPointLoc.xlogid, checkPointLoc.xrecoff)));
            InRecovery = true;  /* force recovery even if SHUTDOWNED */
        }
        else
            ereport(PANIC,
-                   (errmsg("could not locate a valid checkpoint record")));
+                (errmsg("could not locate a valid checkpoint record")));
    }
    LastRec = RecPtr = checkPointLoc;
    memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint));
@@ -2665,11 +2665,12 @@ StartupXLOG(void)
    ShmemVariableCache->oidCount = 0;
 
    /*
-    * If it was a shutdown checkpoint, then any following WAL entries were
-    * created under the next StartUpID; if it was a regular checkpoint then
-    * any following WAL entries were created under the same StartUpID.
-    * We must replay WAL entries using the same StartUpID they were created
-    * under, so temporarily adopt that SUI (see also xlog_redo()).
+    * If it was a shutdown checkpoint, then any following WAL entries
+    * were created under the next StartUpID; if it was a regular
+    * checkpoint then any following WAL entries were created under the
+    * same StartUpID. We must replay WAL entries using the same StartUpID
+    * they were created under, so temporarily adopt that SUI (see also
+    * xlog_redo()).
     */
    if (wasShutdown)
        ThisStartUpID = checkPoint.ThisStartUpID + 1;
@@ -2690,7 +2691,7 @@ StartupXLOG(void)
    {
        if (wasShutdown)
            ereport(PANIC,
-                   (errmsg("invalid redo/undo record in shutdown checkpoint")));
+           (errmsg("invalid redo/undo record in shutdown checkpoint")));
        InRecovery = true;
    }
    else if (ControlFile->state != DB_SHUTDOWNED)
@@ -2699,7 +2700,7 @@ StartupXLOG(void)
    /* REDO */
    if (InRecovery)
    {
-       int     rmid;
+       int         rmid;
 
        ereport(LOG,
                (errmsg("database system was not properly shut down; "
@@ -2791,8 +2792,8 @@ StartupXLOG(void)
 
    /*
     * Tricky point here: readBuf contains the *last* block that the
-    * LastRec record spans, not the one it starts in.  The last block
-    * is indeed the one we want to use.
+    * LastRec record spans, not the one it starts in.  The last block is
+    * indeed the one we want to use.
     */
    Assert(readOff == (XLogCtl->xlblocks[0].xrecoff - BLCKSZ) % XLogSegSize);
    memcpy((char *) Insert->currpage, readBuf, BLCKSZ);
@@ -2818,11 +2819,12 @@ StartupXLOG(void)
    else
    {
        /*
-        * Whenever Write.LogwrtResult points to exactly the end of a page,
-        * Write.curridx must point to the *next* page (see XLogWrite()).
+        * Whenever Write.LogwrtResult points to exactly the end of a
+        * page, Write.curridx must point to the *next* page (see
+        * XLogWrite()).
         *
-        * Note: it might seem we should do AdvanceXLInsertBuffer() here,
-        * but we can't since we haven't yet determined the correct StartUpID
+        * Note: it might seem we should do AdvanceXLInsertBuffer() here, but
+        * we can't since we haven't yet determined the correct StartUpID
         * to put into the new page's header.  The first actual attempt to
         * insert a log record will advance the insert state.
         */
@@ -2859,7 +2861,7 @@ StartupXLOG(void)
 
    if (InRecovery)
    {
-       int     rmid;
+       int         rmid;
 
        /*
         * Allow resource managers to do any required cleanup.
@@ -2885,14 +2887,15 @@ StartupXLOG(void)
            ThisStartUpID = ControlFile->checkPointCopy.ThisStartUpID;
 
        /*
-        * Perform a new checkpoint to update our recovery activity to disk.
+        * Perform a new checkpoint to update our recovery activity to
+        * disk.
         *
         * Note that we write a shutdown checkpoint.  This is correct since
-        * the records following it will use SUI one more than what is shown
-        * in the checkpoint's ThisStartUpID.
+        * the records following it will use SUI one more than what is
+        * shown in the checkpoint's ThisStartUpID.
         *
-        * In case we had to use the secondary checkpoint, make sure that
-        * it will still be shown as the secondary checkpoint after this
+        * In case we had to use the secondary checkpoint, make sure that it
+        * will still be shown as the secondary checkpoint after this
         * CreateCheckPoint operation; we don't want the broken primary
         * checkpoint to become prevCheckPoint...
         */
@@ -2907,10 +2910,10 @@ StartupXLOG(void)
    else
    {
        /*
-        * If we are not doing recovery, then we saw a checkpoint with nothing
-        * after it, and we can safely use StartUpID equal to one more than
-        * the checkpoint's SUI.  But just for paranoia's sake, check against
-        * pg_control too.
+        * If we are not doing recovery, then we saw a checkpoint with
+        * nothing after it, and we can safely use StartUpID equal to one
+        * more than the checkpoint's SUI.  But just for paranoia's sake,
+        * check against pg_control too.
         */
        ThisStartUpID = checkPoint.ThisStartUpID;
        if (ThisStartUpID < ControlFile->checkPointCopy.ThisStartUpID)
@@ -2923,7 +2926,8 @@ StartupXLOG(void)
    PreallocXlogFiles(EndOfLog);
 
    /*
-    * Advance StartUpID to one more than the highest value used previously.
+    * Advance StartUpID to one more than the highest value used
+    * previously.
     */
    ThisStartUpID++;
    XLogCtl->ThisStartUpID = ThisStartUpID;
@@ -2973,9 +2977,9 @@ ReadCheckpointRecord(XLogRecPtr RecPtr,
    if (!XRecOffIsValid(RecPtr.xrecoff))
    {
        ereport(LOG,
-               /* translator: %s is "primary" or "secondary" */
+       /* translator: %s is "primary" or "secondary" */
                (errmsg("invalid %s checkpoint link in control file",
-                       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
+       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
        return NULL;
    }
 
@@ -2984,34 +2988,34 @@ ReadCheckpointRecord(XLogRecPtr RecPtr,
    if (record == NULL)
    {
        ereport(LOG,
-               /* translator: %s is "primary" or "secondary" */
+       /* translator: %s is "primary" or "secondary" */
                (errmsg("invalid %s checkpoint record",
-                       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
+       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
        return NULL;
    }
    if (record->xl_rmid != RM_XLOG_ID)
    {
        ereport(LOG,
-               /* translator: %s is "primary" or "secondary" */
-               (errmsg("invalid resource manager id in %s checkpoint record",
-                       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
+       /* translator: %s is "primary" or "secondary" */
+          (errmsg("invalid resource manager id in %s checkpoint record",
+       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
        return NULL;
    }
    if (record->xl_info != XLOG_CHECKPOINT_SHUTDOWN &&
        record->xl_info != XLOG_CHECKPOINT_ONLINE)
    {
        ereport(LOG,
-               /* translator: %s is "primary" or "secondary" */
+       /* translator: %s is "primary" or "secondary" */
                (errmsg("invalid xl_info in %s checkpoint record",
-                       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
+       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
        return NULL;
    }
    if (record->xl_len != sizeof(CheckPoint))
    {
        ereport(LOG,
-               /* translator: %s is "primary" or "secondary" */
+       /* translator: %s is "primary" or "secondary" */
                (errmsg("invalid length of %s checkpoint record",
-                       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
+       (whichChkpt == 1) ? gettext("primary") : gettext("secondary"))));
        return NULL;
    }
    return record;
@@ -3112,10 +3116,11 @@ CreateCheckPoint(bool shutdown, bool force)
    if (MyXactMadeXLogEntry)
        ereport(ERROR,
                (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
-                errmsg("checkpoint cannot be made inside transaction block")));
+         errmsg("checkpoint cannot be made inside transaction block")));
 
    /*
-    * Acquire CheckpointLock to ensure only one checkpoint happens at a time.
+    * Acquire CheckpointLock to ensure only one checkpoint happens at a
+    * time.
     *
     * The CheckpointLock can be held for quite a while, which is not good
     * because we won't respond to a cancel/die request while waiting for
@@ -3149,14 +3154,15 @@ CreateCheckPoint(bool shutdown, bool force)
    LWLockAcquire(WALInsertLock, LW_EXCLUSIVE);
 
    /*
-    * If this isn't a shutdown or forced checkpoint, and we have not inserted
-    * any XLOG records since the start of the last checkpoint, skip the
-    * checkpoint.  The idea here is to avoid inserting duplicate checkpoints
-    * when the system is idle. That wastes log space, and more importantly it
-    * exposes us to possible loss of both current and previous checkpoint
-    * records if the machine crashes just as we're writing the update.
-    * (Perhaps it'd make even more sense to checkpoint only when the previous
-    * checkpoint record is in a different xlog page?)
+    * If this isn't a shutdown or forced checkpoint, and we have not
+    * inserted any XLOG records since the start of the last checkpoint,
+    * skip the checkpoint.  The idea here is to avoid inserting duplicate
+    * checkpoints when the system is idle. That wastes log space, and
+    * more importantly it exposes us to possible loss of both current and
+    * previous checkpoint records if the machine crashes just as we're
+    * writing the update. (Perhaps it'd make even more sense to
+    * checkpoint only when the previous checkpoint record is in a
+    * different xlog page?)
     *
     * We have to make two tests to determine that nothing has happened since
     * the start of the last checkpoint: current insertion point must
@@ -3204,12 +3210,13 @@ CreateCheckPoint(bool shutdown, bool force)
     * Here we update the shared RedoRecPtr for future XLogInsert calls;
     * this must be done while holding the insert lock AND the info_lck.
     *
-    * Note: if we fail to complete the checkpoint, RedoRecPtr will be
-    * left pointing past where it really needs to point.  This is okay;
-    * the only consequence is that XLogInsert might back up whole buffers
-    * that it didn't really need to.  We can't postpone advancing RedoRecPtr
-    * because XLogInserts that happen while we are dumping buffers must
-    * assume that their buffer changes are not included in the checkpoint.
+    * Note: if we fail to complete the checkpoint, RedoRecPtr will be left
+    * pointing past where it really needs to point.  This is okay; the
+    * only consequence is that XLogInsert might back up whole buffers
+    * that it didn't really need to.  We can't postpone advancing
+    * RedoRecPtr because XLogInserts that happen while we are dumping
+    * buffers must assume that their buffer changes are not included in
+    * the checkpoint.
     */
    {
        /* use volatile pointer to prevent code rearrangement */
@@ -3538,15 +3545,15 @@ assign_xlog_sync_method(const char *method, bool doit, bool interactive)
            if (pg_fsync(openLogFile) != 0)
                ereport(PANIC,
                        (errcode_for_file_access(),
-                        errmsg("fsync of log file %u, segment %u failed: %m",
-                               openLogId, openLogSeg)));
+                   errmsg("fsync of log file %u, segment %u failed: %m",
+                          openLogId, openLogSeg)));
            if (open_sync_bit != new_sync_bit)
            {
                if (close(openLogFile) != 0)
                    ereport(PANIC,
                            (errcode_for_file_access(),
-                            errmsg("close of log file %u, segment %u failed: %m",
-                                   openLogId, openLogSeg)));
+                   errmsg("close of log file %u, segment %u failed: %m",
+                          openLogId, openLogSeg)));
                openLogFile = -1;
            }
        }
@@ -3570,16 +3577,16 @@ issue_xlog_fsync(void)
            if (pg_fsync(openLogFile) != 0)
                ereport(PANIC,
                        (errcode_for_file_access(),
-                        errmsg("fsync of log file %u, segment %u failed: %m",
-                               openLogId, openLogSeg)));
+                   errmsg("fsync of log file %u, segment %u failed: %m",
+                          openLogId, openLogSeg)));
            break;
 #ifdef HAVE_FDATASYNC
        case SYNC_METHOD_FDATASYNC:
            if (pg_fdatasync(openLogFile) != 0)
                ereport(PANIC,
                        (errcode_for_file_access(),
-                        errmsg("fdatasync of log file %u, segment %u failed: %m",
-                               openLogId, openLogSeg)));
+               errmsg("fdatasync of log file %u, segment %u failed: %m",
+                      openLogId, openLogSeg)));
            break;
 #endif
        case SYNC_METHOD_OPEN:
index b02fa775dedd7690147c728f34b6d9568b7e9c03..328f2ab9b3894264b63c0f139e7655c1d119fd45 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.163 2003/07/27 21:49:53 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.164 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -238,7 +238,7 @@ BootstrapMain(int argc, char *argv[])
     *
     * If we are running under the postmaster, this is done already.
     */
-   if (!IsUnderPostmaster /* when exec || ExecBackend */)
+   if (!IsUnderPostmaster /* when exec || ExecBackend */ )
        MemoryContextInit();
 
    /*
@@ -247,7 +247,7 @@ BootstrapMain(int argc, char *argv[])
 
    /* Set defaults, to be overriden by explicit options below */
    dbname = NULL;
-   if (!IsUnderPostmaster /* when exec || ExecBackend*/)
+   if (!IsUnderPostmaster /* when exec || ExecBackend */ )
    {
        InitializeGUCOptions();
        potential_DataDir = getenv("PGDATA");   /* Null if no PGDATA
@@ -285,22 +285,22 @@ BootstrapMain(int argc, char *argv[])
                xlogop = atoi(optarg);
                break;
            case 'p':
-           {
-               /* indicates fork from postmaster */
+               {
+                   /* indicates fork from postmaster */
 #ifdef EXEC_BACKEND
-               char *p;
-
-               sscanf(optarg, "%d,%p,", &UsedShmemSegID, &UsedShmemSegAddr);
-               p = strchr(optarg, ',');
-               if (p)
-                   p = strchr(p+1, ',');
-               if (p)
-                   dbname = strdup(p+1);
+                   char       *p;
+
+                   sscanf(optarg, "%d,%p,", &UsedShmemSegID, &UsedShmemSegAddr);
+                   p = strchr(optarg, ',');
+                   if (p)
+                       p = strchr(p + 1, ',');
+                   if (p)
+                       dbname = strdup(p + 1);
 #else
-               dbname = strdup(optarg);
+                   dbname = strdup(optarg);
 #endif
-               break;
-           }
+                   break;
+               }
            case 'B':
                SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
                break;
@@ -346,12 +346,10 @@ BootstrapMain(int argc, char *argv[])
        usage();
 
 
-   if (IsUnderPostmaster && ExecBackend && MyProc /* ordinary backend */)
-   {
+   if (IsUnderPostmaster && ExecBackend && MyProc /* ordinary backend */ )
        AttachSharedMemoryAndSemaphores();
-   }
-   
-   if (!IsUnderPostmaster /* when exec || ExecBackend*/)
+
+   if (!IsUnderPostmaster /* when exec || ExecBackend */ )
    {
        if (!potential_DataDir)
        {
@@ -473,8 +471,8 @@ BootstrapMain(int argc, char *argv[])
 
    /*
     * In NOP mode, all we really want to do is create shared memory and
-    * semaphores (just to prove we can do it with the current GUC settings).
-    * So, quit now.
+    * semaphores (just to prove we can do it with the current GUC
+    * settings). So, quit now.
     */
    if (xlogop == BS_XLOG_NOP)
        proc_exit(0);
index 77b1d3b2d7f3d130c5fde17a89e18609247f1cf4..7ace67de6b2f394f1b9384a571b28091e8f94d87 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.85 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.86 2003/08/04 00:43:16 momjian Exp $
  *
  * NOTES
  *   See acl.h.
@@ -97,37 +97,40 @@ merge_acl_with_grant(Acl *old_acl, bool is_grant,
 
        if (grantee->username)
        {
-           aclitem.ai_grantee = get_usesysid(grantee->username);
+           aclitem.    ai_grantee = get_usesysid(grantee->username);
+
            idtype = ACL_IDTYPE_UID;
        }
        else if (grantee->groupname)
        {
-           aclitem.ai_grantee = get_grosysid(grantee->groupname);
+           aclitem.    ai_grantee = get_grosysid(grantee->groupname);
+
            idtype = ACL_IDTYPE_GID;
        }
        else
        {
-           aclitem.ai_grantee = ACL_ID_WORLD;
+           aclitem.    ai_grantee = ACL_ID_WORLD;
+
            idtype = ACL_IDTYPE_WORLD;
        }
 
        /*
         * Grant options can only be granted to individual users, not
-        * groups or public.  The reason is that if a user would
-        * re-grant a privilege that he held through a group having a
-        * grant option, and later the user is removed from the group,
-        * the situation is impossible to clean up.
+        * groups or public.  The reason is that if a user would re-grant
+        * a privilege that he held through a group having a grant option,
+        * and later the user is removed from the group, the situation is
+        * impossible to clean up.
         */
        if (is_grant && idtype != ACL_IDTYPE_UID && grant_option)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_GRANT_OPERATION),
                     errmsg("grant options can only be granted to individual users")));
 
-       aclitem.ai_grantor = GetUserId();
+       aclitem.    ai_grantor = GetUserId();
 
        ACLITEM_SET_PRIVS_IDTYPE(aclitem,
-                                (is_grant || !grant_option) ? privileges : ACL_NO_RIGHTS,
-                                (grant_option || !is_grant) ? privileges : ACL_NO_RIGHTS,
+               (is_grant || !grant_option) ? privileges : ACL_NO_RIGHTS,
+               (grant_option || !is_grant) ? privileges : ACL_NO_RIGHTS,
                                 idtype);
 
        new_acl = aclinsert3(new_acl, &aclitem, modechg, behavior);
@@ -247,7 +250,7 @@ ExecuteGrantStmt_Relation(GrantStmt *stmt)
 
        new_acl = merge_acl_with_grant(old_acl, stmt->is_grant,
                                       stmt->grantees, privileges,
-                                      stmt->grant_option, stmt->behavior);
+                                    stmt->grant_option, stmt->behavior);
 
        /* finished building new ACL value, now insert it */
        MemSet(values, 0, sizeof(values));
@@ -346,7 +349,7 @@ ExecuteGrantStmt_Database(GrantStmt *stmt)
 
        new_acl = merge_acl_with_grant(old_acl, stmt->is_grant,
                                       stmt->grantees, privileges,
-                                      stmt->grant_option, stmt->behavior);
+                                    stmt->grant_option, stmt->behavior);
 
        /* finished building new ACL value, now insert it */
        MemSet(values, 0, sizeof(values));
@@ -443,7 +446,7 @@ ExecuteGrantStmt_Function(GrantStmt *stmt)
 
        new_acl = merge_acl_with_grant(old_acl, stmt->is_grant,
                                       stmt->grantees, privileges,
-                                      stmt->grant_option, stmt->behavior);
+                                    stmt->grant_option, stmt->behavior);
 
        /* finished building new ACL value, now insert it */
        MemSet(values, 0, sizeof(values));
@@ -543,7 +546,7 @@ ExecuteGrantStmt_Language(GrantStmt *stmt)
 
        new_acl = merge_acl_with_grant(old_acl, stmt->is_grant,
                                       stmt->grantees, privileges,
-                                      stmt->grant_option, stmt->behavior);
+                                    stmt->grant_option, stmt->behavior);
 
        /* finished building new ACL value, now insert it */
        MemSet(values, 0, sizeof(values));
@@ -619,7 +622,7 @@ ExecuteGrantStmt_Namespace(GrantStmt *stmt)
        pg_namespace_tuple = (Form_pg_namespace) GETSTRUCT(tuple);
 
        if (stmt->is_grant
-           && !pg_namespace_ownercheck(HeapTupleGetOid(tuple), GetUserId())
+        && !pg_namespace_ownercheck(HeapTupleGetOid(tuple), GetUserId())
            && pg_namespace_aclcheck(HeapTupleGetOid(tuple), GetUserId(), ACL_GRANT_OPTION_FOR(privileges)) != ACLCHECK_OK)
            aclcheck_error(ACLCHECK_NO_PRIV, ACL_KIND_NAMESPACE,
                           nspname);
@@ -640,7 +643,7 @@ ExecuteGrantStmt_Namespace(GrantStmt *stmt)
 
        new_acl = merge_acl_with_grant(old_acl, stmt->is_grant,
                                       stmt->grantees, privileges,
-                                      stmt->grant_option, stmt->behavior);
+                                    stmt->grant_option, stmt->behavior);
 
        /* finished building new ACL value, now insert it */
        MemSet(values, 0, sizeof(values));
@@ -805,7 +808,7 @@ in_group(AclId uid, AclId gid)
 static AclResult
 aclcheck(Acl *acl, AclId userid, AclMode mode)
 {
-   AclItem    *aidat;
+   AclItem    *aidat;
    int         i,
                num;
 
@@ -833,10 +836,10 @@ aclcheck(Acl *acl, AclId userid, AclMode mode)
            if (aidat[i].ai_privs & mode)
                return ACLCHECK_OK;
        }
-   
+
    /*
-    * See if he has the permission via any group (do this in a
-    * separate pass to avoid expensive(?) lookups in pg_group)
+    * See if he has the permission via any group (do this in a separate
+    * pass to avoid expensive(?) lookups in pg_group)
     */
    for (i = 0; i < num; i++)
        if (ACLITEM_GET_IDTYPE(aidat[i]) == ACL_IDTYPE_GID
@@ -856,7 +859,7 @@ aclcheck(Acl *acl, AclId userid, AclMode mode)
  * supply strings that might be already quoted.
  */
 
-static const char * const no_priv_msg[MAX_ACL_KIND] =
+static const char *const no_priv_msg[MAX_ACL_KIND] =
 {
    /* ACL_KIND_CLASS */
    gettext_noop("permission denied for relation %s"),
@@ -878,7 +881,7 @@ static const char * const no_priv_msg[MAX_ACL_KIND] =
    gettext_noop("permission denied for conversion %s")
 };
 
-static const char * const not_owner_msg[MAX_ACL_KIND] =
+static const char *const not_owner_msg[MAX_ACL_KIND] =
 {
    /* ACL_KIND_CLASS */
    gettext_noop("must be owner of relation %s"),
@@ -972,7 +975,7 @@ pg_class_aclcheck(Oid table_oid, AclId userid, AclMode mode)
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_TABLE),
-                errmsg("relation with OID %u does not exist", table_oid)));
+             errmsg("relation with OID %u does not exist", table_oid)));
 
    /*
     * Deny anyone permission to update a system catalog unless
@@ -1124,7 +1127,7 @@ pg_proc_aclcheck(Oid proc_oid, AclId userid, AclMode mode)
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                errmsg("function with OID %u does not exist", proc_oid)));
+              errmsg("function with OID %u does not exist", proc_oid)));
 
    aclDatum = SysCacheGetAttr(PROCOID, tuple, Anum_pg_proc_proacl,
                               &isNull);
@@ -1179,7 +1182,7 @@ pg_language_aclcheck(Oid lang_oid, AclId userid, AclMode mode)
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                errmsg("language with OID %u does not exist", lang_oid)));
+              errmsg("language with OID %u does not exist", lang_oid)));
 
    aclDatum = SysCacheGetAttr(LANGOID, tuple, Anum_pg_language_lanacl,
                               &isNull);
@@ -1288,7 +1291,7 @@ pg_class_ownercheck(Oid class_oid, AclId userid)
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_TABLE),
-                errmsg("relation with OID %u does not exist", class_oid)));
+             errmsg("relation with OID %u does not exist", class_oid)));
 
    owner_id = ((Form_pg_class) GETSTRUCT(tuple))->relowner;
 
@@ -1344,7 +1347,7 @@ pg_oper_ownercheck(Oid oper_oid, AclId userid)
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                errmsg("operator with OID %u does not exist", oper_oid)));
+              errmsg("operator with OID %u does not exist", oper_oid)));
 
    owner_id = ((Form_pg_operator) GETSTRUCT(tuple))->oprowner;
 
@@ -1372,7 +1375,7 @@ pg_proc_ownercheck(Oid proc_oid, AclId userid)
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                errmsg("function with OID %u does not exist", proc_oid)));
+              errmsg("function with OID %u does not exist", proc_oid)));
 
    owner_id = ((Form_pg_proc) GETSTRUCT(tuple))->proowner;
 
index 2cdf4bc229cacc550b5b98563bd297dec8ebb461..251fb82d813579daa7a953c75877f1d8af1c2b48 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.28 2003/07/28 00:09:14 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.29 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -93,8 +93,8 @@ static Oid    object_classes[MAX_OCLASS];
 
 
 static void findAutoDeletableObjects(const ObjectAddress *object,
-                                    ObjectAddresses *oktodelete,
-                                    Relation depRel);
+                        ObjectAddresses *oktodelete,
+                        Relation depRel);
 static bool recursiveDeletion(const ObjectAddress *object,
                  DropBehavior behavior,
                  int msglevel,
@@ -102,11 +102,11 @@ static bool recursiveDeletion(const ObjectAddress *object,
                  ObjectAddresses *oktodelete,
                  Relation depRel);
 static bool deleteDependentObjects(const ObjectAddress *object,
-                                  const char *objDescription,
-                                  DropBehavior behavior,
-                                  int msglevel,
-                                  ObjectAddresses *oktodelete,
-                                  Relation depRel);
+                      const char *objDescription,
+                      DropBehavior behavior,
+                      int msglevel,
+                      ObjectAddresses *oktodelete,
+                      Relation depRel);
 static void doDeletion(const ObjectAddress *object);
 static bool find_expr_references_walker(Node *node,
                            find_expr_references_context *context);
@@ -118,7 +118,7 @@ static void add_object_address(ObjectClasses oclass, Oid objectId, int32 subId,
 static void add_exact_object_address(const ObjectAddress *object,
                         ObjectAddresses *addrs);
 static bool object_address_present(const ObjectAddress *object,
-                  ObjectAddresses *addrs);
+                      ObjectAddresses *addrs);
 static void term_object_addresses(ObjectAddresses *addrs);
 static void init_object_classes(void);
 static ObjectClasses getObjectClass(const ObjectAddress *object);
@@ -158,9 +158,9 @@ performDeletion(const ObjectAddress *object,
 
    /*
     * Construct a list of objects that are reachable by AUTO or INTERNAL
-    * dependencies from the target object.  These should be deleted silently,
-    * even if the actual deletion pass first reaches one of them via a
-    * non-auto dependency.
+    * dependencies from the target object.  These should be deleted
+    * silently, even if the actual deletion pass first reaches one of
+    * them via a non-auto dependency.
     */
    init_object_addresses(&oktodelete);
 
@@ -170,8 +170,8 @@ performDeletion(const ObjectAddress *object,
                           NULL, &oktodelete, depRel))
        ereport(ERROR,
                (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
-                errmsg("cannot drop %s because other objects depend on it",
-                       objDescription),
+             errmsg("cannot drop %s because other objects depend on it",
+                    objDescription),
                 errhint("Use DROP ... CASCADE to drop the dependent objects too.")));
 
    term_object_addresses(&oktodelete);
@@ -184,7 +184,7 @@ performDeletion(const ObjectAddress *object,
 
 /*
  * deleteWhatDependsOn: attempt to drop everything that depends on the
- * specified object, though not the object itself.  Behavior is always
+ * specified object, though not the object itself. Behavior is always
  * CASCADE.
  *
  * This is currently used only to clean out the contents of a schema
@@ -212,9 +212,9 @@ deleteWhatDependsOn(const ObjectAddress *object,
 
    /*
     * Construct a list of objects that are reachable by AUTO or INTERNAL
-    * dependencies from the target object.  These should be deleted silently,
-    * even if the actual deletion pass first reaches one of them via a
-    * non-auto dependency.
+    * dependencies from the target object.  These should be deleted
+    * silently, even if the actual deletion pass first reaches one of
+    * them via a non-auto dependency.
     */
    init_object_addresses(&oktodelete);
 
@@ -266,9 +266,9 @@ findAutoDeletableObjects(const ObjectAddress *object,
    ObjectAddress otherObject;
 
    /*
-    * If this object is already in oktodelete, then we already visited it;
-    * don't do so again (this prevents infinite recursion if there's a loop
-    * in pg_depend).  Otherwise, add it.
+    * If this object is already in oktodelete, then we already visited
+    * it; don't do so again (this prevents infinite recursion if there's
+    * a loop in pg_depend).  Otherwise, add it.
     */
    if (object_address_present(object, oktodelete))
        return;
@@ -276,8 +276,8 @@ findAutoDeletableObjects(const ObjectAddress *object,
 
    /*
     * Scan pg_depend records that link to this object, showing the things
-    * that depend on it.  For each one that is AUTO or INTERNAL, visit the
-    * referencing object.
+    * that depend on it.  For each one that is AUTO or INTERNAL, visit
+    * the referencing object.
     *
     * When dropping a whole object (subId = 0), find pg_depend records for
     * its sub-objects too.
@@ -319,6 +319,7 @@ findAutoDeletableObjects(const ObjectAddress *object,
                findAutoDeletableObjects(&otherObject, oktodelete, depRel);
                break;
            case DEPENDENCY_PIN:
+
                /*
                 * For a PIN dependency we just ereport immediately; there
                 * won't be any others to examine, and we aren't ever
@@ -461,11 +462,11 @@ recursiveDeletion(const ObjectAddress *object,
                    char       *otherObjDesc = getObjectDescription(&otherObject);
 
                    ereport(ERROR,
-                           (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
-                            errmsg("cannot drop %s because %s requires it",
-                                   objDescription, otherObjDesc),
-                            errhint("You may drop %s instead.",
-                                    otherObjDesc)));
+                        (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST),
+                         errmsg("cannot drop %s because %s requires it",
+                                objDescription, otherObjDesc),
+                         errhint("You may drop %s instead.",
+                                 otherObjDesc)));
                }
 
                /*
@@ -559,10 +560,9 @@ recursiveDeletion(const ObjectAddress *object,
    /*
     * Step 2: scan pg_depend records that link to this object, showing
     * the things that depend on it.  Recursively delete those things.
-    * Note it's important to delete the dependent objects
-    * before the referenced one, since the deletion routines might do
-    * things like try to update the pg_class record when deleting a check
-    * constraint.
+    * Note it's important to delete the dependent objects before the
+    * referenced one, since the deletion routines might do things like
+    * try to update the pg_class record when deleting a check constraint.
     */
    if (!deleteDependentObjects(object, objDescription,
                                behavior, msglevel,
@@ -674,11 +674,12 @@ deleteDependentObjects(const ObjectAddress *object,
        switch (foundDep->deptype)
        {
            case DEPENDENCY_NORMAL:
+
                /*
                 * Perhaps there was another dependency path that would
-                * have allowed silent deletion of the otherObject, had
-                * we only taken that path first.
-                * In that case, act like this link is AUTO, too.
+                * have allowed silent deletion of the otherObject, had we
+                * only taken that path first. In that case, act like this
+                * link is AUTO, too.
                 */
                if (object_address_present(&otherObject, oktodelete))
                    ereport(DEBUG2,
@@ -872,7 +873,7 @@ recordDependencyOnExpr(const ObjectAddress *depender,
  * recordDependencyOnSingleRelExpr - find expression dependencies
  *
  * As above, but only one relation is expected to be referenced (with
- * varno = 1 and varlevelsup = 0).  Pass the relation OID instead of a
+ * varno = 1 and varlevelsup = 0). Pass the relation OID instead of a
  * range table.  An additional frammish is that dependencies on that
  * relation (or its component columns) will be marked with 'self_behavior',
  * whereas 'behavior' is used for everything else.
@@ -1001,7 +1002,7 @@ find_expr_references_walker(Node *node,
        else if (rte->rtekind == RTE_JOIN)
        {
            /* Scan join output column to add references to join inputs */
-           List   *save_rtables;
+           List       *save_rtables;
 
            /* We must make the context appropriate for join's level */
            save_rtables = context->rtables;
@@ -1026,7 +1027,7 @@ find_expr_references_walker(Node *node,
    }
    if (IsA(node, OpExpr))
    {
-       OpExpr   *opexpr = (OpExpr *) node;
+       OpExpr     *opexpr = (OpExpr *) node;
 
        add_object_address(OCLASS_OPERATOR, opexpr->opno, 0,
                           &context->addrs);
@@ -1034,7 +1035,7 @@ find_expr_references_walker(Node *node,
    }
    if (IsA(node, DistinctExpr))
    {
-       DistinctExpr   *distinctexpr = (DistinctExpr *) node;
+       DistinctExpr *distinctexpr = (DistinctExpr *) node;
 
        add_object_address(OCLASS_OPERATOR, distinctexpr->opno, 0,
                           &context->addrs);
@@ -1042,7 +1043,7 @@ find_expr_references_walker(Node *node,
    }
    if (IsA(node, ScalarArrayOpExpr))
    {
-       ScalarArrayOpExpr   *opexpr = (ScalarArrayOpExpr *) node;
+       ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) node;
 
        add_object_address(OCLASS_OPERATOR, opexpr->opno, 0,
                           &context->addrs);
@@ -1066,7 +1067,7 @@ find_expr_references_walker(Node *node,
    }
    if (IsA(node, SubLink))
    {
-       SubLink    *sublink = (SubLink *) node;
+       SubLink    *sublink = (SubLink *) node;
        List       *opid;
 
        foreach(opid, sublink->operOids)
@@ -1092,7 +1093,8 @@ find_expr_references_walker(Node *node,
         * Add whole-relation refs for each plain relation mentioned in
         * the subquery's rtable.  (Note: query_tree_walker takes care of
         * recursing into RTE_FUNCTION and RTE_SUBQUERY RTEs, so no need
-        * to do that here.  But keep it from looking at join alias lists.)
+        * to do that here.  But keep it from looking at join alias
+        * lists.)
         */
        foreach(rtable, query->rtable)
        {
index 15dbc50a13d8aae2a54b76c808618e46c3e99e85..c8a411646faa695ff0aaadcc68484a5c3c11f55f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.249 2003/07/29 17:21:20 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.250 2003/08/04 00:43:16 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -418,8 +418,8 @@ CheckAttributeType(const char *attname, Oid atttypid)
     * Warn user, but don't fail, if column to be created has UNKNOWN type
     * (usually as a result of a 'retrieve into' - jolly)
     *
-    * Refuse any attempt to create a pseudo-type column or one that uses
-    * standalone composite type.  (Eventually we should probably refuse
+    * Refuse any attempt to create a pseudo-type column or one that uses a
+    * standalone composite type.  (Eventually we should probably refuse
     * all references to complex types, but for now there's still some
     * Berkeley-derived code that thinks it can do this...)
     */
@@ -439,7 +439,7 @@ CheckAttributeType(const char *attname, Oid atttypid)
    }
    else if (att_typtype == 'c')
    {
-       Oid     typrelid = get_typ_typrelid(atttypid);
+       Oid         typrelid = get_typ_typrelid(atttypid);
 
        if (get_rel_relkind(typrelid) == RELKIND_COMPOSITE_TYPE)
            ereport(ERROR,
@@ -975,12 +975,13 @@ RemoveAttributeById(Oid relid, AttrNumber attnum)
    attStruct->attisdropped = true;
 
    /*
-    * Set the type OID to invalid.  A dropped attribute's type link cannot
-    * be relied on (once the attribute is dropped, the type might be too).
-    * Fortunately we do not need the type row --- the only really essential
-    * information is the type's typlen and typalign, which are preserved in
-    * the attribute's attlen and attalign.  We set atttypid to zero here
-    * as a means of catching code that incorrectly expects it to be valid.
+    * Set the type OID to invalid.  A dropped attribute's type link
+    * cannot be relied on (once the attribute is dropped, the type might
+    * be too). Fortunately we do not need the type row --- the only
+    * really essential information is the type's typlen and typalign,
+    * which are preserved in the attribute's attlen and attalign.  We set
+    * atttypid to zero here as a means of catching code that incorrectly
+    * expects it to be valid.
     */
    attStruct->atttypid = InvalidOid;
 
@@ -1401,7 +1402,7 @@ StoreRelCheck(Relation rel, char *ccname, char *ccbin)
                          ' ',
                          ' ',
                          ' ',
-                         InvalidOid, /* no associated index */
+                         InvalidOid,   /* no associated index */
                          expr, /* Tree form check constraint */
                          ccbin,    /* Binary form check constraint */
                          ccsrc);       /* Source form check constraint */
@@ -1568,8 +1569,8 @@ AddRelationRawConstraints(Relation rel,
                if (strcmp(cdef2->name, ccname) == 0)
                    ereport(ERROR,
                            (errcode(ERRCODE_DUPLICATE_OBJECT),
-                            errmsg("CHECK constraint \"%s\" already exists",
-                                   ccname)));
+                        errmsg("CHECK constraint \"%s\" already exists",
+                               ccname)));
            }
        }
        else
@@ -1639,7 +1640,7 @@ AddRelationRawConstraints(Relation rel,
        if (pstate->p_hasSubLinks)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cannot use sub-select in CHECK constraint")));
+                  errmsg("cannot use sub-select in CHECK constraint")));
        if (pstate->p_hasAggs)
            ereport(ERROR,
                    (errcode(ERRCODE_GROUPING_ERROR),
@@ -1750,7 +1751,7 @@ cookDefault(ParseState *pstate,
    if (contain_var_clause(expr))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                errmsg("cannot use column references in DEFAULT clause")));
+             errmsg("cannot use column references in DEFAULT clause")));
 
    /*
     * It can't return a set either.
@@ -1773,9 +1774,9 @@ cookDefault(ParseState *pstate,
                 errmsg("cannot use aggregate in DEFAULT clause")));
 
    /*
-    * Coerce the expression to the correct type and typmod, if given.  This
-    * should match the parser's processing of non-defaulted expressions ---
-    * see updateTargetListEntry().
+    * Coerce the expression to the correct type and typmod, if given.
+    * This should match the parser's processing of non-defaulted
+    * expressions --- see updateTargetListEntry().
     */
    if (OidIsValid(atttypid))
    {
@@ -1793,7 +1794,7 @@ cookDefault(ParseState *pstate,
                            attname,
                            format_type_be(atttypid),
                            format_type_be(type_id)),
-                    errhint("You will need to rewrite or cast the expression.")));
+           errhint("You will need to rewrite or cast the expression.")));
    }
 
    return expr;
@@ -1952,7 +1953,7 @@ RelationTruncateIndexes(Oid heapId)
 
        /*
         * index_build will close both the heap and index relations (but
-        * not give up the locks we hold on them).  We're done with this
+        * not give up the locks we hold on them).  We're done with this
         * index, but we must re-open the heap rel.
         */
        heapRelation = heap_open(heapId, NoLock);
index cb5a78c3dac239e6c80352819ad0ce2130300c9d..0b03c630b5548ad669085f02afbc439f2b7f5aed 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.212 2003/07/21 01:59:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.213 2003/08/04 00:43:16 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -65,8 +65,8 @@
 
 /* non-export function prototypes */
 static TupleDesc ConstructTupleDescriptor(Relation heapRelation,
-                                         IndexInfo *indexInfo,
-                                         Oid *classObjectId);
+                        IndexInfo *indexInfo,
+                        Oid *classObjectId);
 static void UpdateRelationRelation(Relation indexRelation);
 static void InitializeAttributeOids(Relation indexRelation,
                        int numatts, Oid indexoid);
@@ -124,7 +124,7 @@ ConstructTupleDescriptor(Relation heapRelation,
 
    /*
     * For simple index columns, we copy the pg_attribute row from the
-    * parent relation and modify it as necessary.  For expressions we
+    * parent relation and modify it as necessary.  For expressions we
     * have to cons up a pg_attribute row the hard way.
     */
    for (i = 0; i < numatts; i++)
@@ -149,7 +149,7 @@ ConstructTupleDescriptor(Relation heapRelation,
                 * here we are indexing on a system attribute (-1...-n)
                 */
                from = SystemAttributeDefinition(atnum,
-                                                heapRelation->rd_rel->relhasoids);
+                                      heapRelation->rd_rel->relhasoids);
            }
            else
            {
@@ -162,8 +162,8 @@ ConstructTupleDescriptor(Relation heapRelation,
            }
 
            /*
-            * now that we've determined the "from", let's copy the tuple desc
-            * data...
+            * now that we've determined the "from", let's copy the tuple
+            * desc data...
             */
            memcpy(to, from, ATTRIBUTE_TUPLE_SIZE);
 
@@ -185,7 +185,7 @@ ConstructTupleDescriptor(Relation heapRelation,
            /* Expressional index */
            Node       *indexkey;
 
-           if (indexprs == NIL)        /* shouldn't happen */
+           if (indexprs == NIL)    /* shouldn't happen */
                elog(ERROR, "too few entries in indexprs list");
            indexkey = (Node *) lfirst(indexprs);
            indexprs = lnext(indexprs);
@@ -197,7 +197,8 @@ ConstructTupleDescriptor(Relation heapRelation,
            sprintf(NameStr(to->attname), "pg_expression_%d", i + 1);
 
            /*
-            * Lookup the expression type in pg_type for the type length etc.
+            * Lookup the expression type in pg_type for the type length
+            * etc.
             */
            keyType = exprType(indexkey);
            tuple = SearchSysCache(TYPEOID,
@@ -534,7 +535,7 @@ index_create(Oid heapRelationId,
    if (shared_relation && IsUnderPostmaster)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                errmsg("shared indexes cannot be created after initdb")));
+              errmsg("shared indexes cannot be created after initdb")));
 
    if (get_relname_relid(indexRelationName, namespaceId))
        ereport(ERROR,
@@ -668,7 +669,7 @@ index_create(Oid heapRelationId,
                                           ' ',
                                           ' ',
                                           ' ',
-                                          InvalidOid, /* no associated index */
+                                          InvalidOid,  /* no associated index */
                                           NULL,        /* no check constraint */
                                           NULL,
                                           NULL);
@@ -709,7 +710,7 @@ index_create(Oid heapRelationId,
        if (indexInfo->ii_Expressions)
        {
            recordDependencyOnSingleRelExpr(&myself,
-                                           (Node *) indexInfo->ii_Expressions,
+                                     (Node *) indexInfo->ii_Expressions,
                                            heapRelationId,
                                            DEPENDENCY_NORMAL,
                                            DEPENDENCY_AUTO);
@@ -719,7 +720,7 @@ index_create(Oid heapRelationId,
        if (indexInfo->ii_Predicate)
        {
            recordDependencyOnSingleRelExpr(&myself,
-                                           (Node *) indexInfo->ii_Predicate,
+                                       (Node *) indexInfo->ii_Predicate,
                                            heapRelationId,
                                            DEPENDENCY_NORMAL,
                                            DEPENDENCY_AUTO);
@@ -831,8 +832,8 @@ index_drop(Oid indexId)
 
    /*
     * We are presently too lazy to attempt to compute the new correct
-    * value of relhasindex (the next VACUUM will fix it if necessary).
-    * So there is no need to update the pg_class tuple for the owning
+    * value of relhasindex (the next VACUUM will fix it if necessary). So
+    * there is no need to update the pg_class tuple for the owning
     * relation. But we must send out a shared-cache-inval notice on the
     * owning relation to ensure other backends update their relcache
     * lists of indexes.
@@ -958,7 +959,7 @@ FormIndexDatum(IndexInfo *indexInfo,
            if (indexprs == NIL)
                elog(ERROR, "wrong number of index expressions");
            iDatum = ExecEvalExprSwitchContext((ExprState *) lfirst(indexprs),
-                                              GetPerTupleExprContext(estate),
+                                         GetPerTupleExprContext(estate),
                                               &isNull,
                                               NULL);
            indexprs = lnext(indexprs);
@@ -1160,7 +1161,7 @@ setNewRelfilenode(Relation relation)
    if (!in_place_upd)
    {
        tuple = SearchSysCacheCopy(RELOID,
-                                  ObjectIdGetDatum(RelationGetRelid(relation)),
+                           ObjectIdGetDatum(RelationGetRelid(relation)),
                                   0, 0, 0);
    }
    else
@@ -1170,7 +1171,7 @@ setNewRelfilenode(Relation relation)
        ScanKeyEntryInitialize(&key[0], 0,
                               ObjectIdAttributeNumber,
                               F_OIDEQ,
-                              ObjectIdGetDatum(RelationGetRelid(relation)));
+                          ObjectIdGetDatum(RelationGetRelid(relation)));
 
        pg_class_scan = heap_beginscan(pg_class, SnapshotNow, 1, key);
        tuple = heap_getnext(pg_class_scan, ForwardScanDirection);
@@ -1325,9 +1326,9 @@ UpdateStats(Oid relid, double reltuples)
    }
 
    /*
-    * Update statistics in pg_class, if they changed.  (Avoiding an
-    * unnecessary update is not just a tiny performance improvement;
-    * it also reduces the window wherein concurrent CREATE INDEX commands
+    * Update statistics in pg_class, if they changed.  (Avoiding an
+    * unnecessary update is not just a tiny performance improvement; it
+    * also reduces the window wherein concurrent CREATE INDEX commands
     * may conflict.)
     */
    rd_rel = (Form_pg_class) GETSTRUCT(tuple);
@@ -1338,8 +1339,9 @@ UpdateStats(Oid relid, double reltuples)
        if (in_place_upd)
        {
            /*
-            * At bootstrap time, we don't need to worry about concurrency or
-            * visibility of changes, so we cheat.  Also cheat if REINDEX.
+            * At bootstrap time, we don't need to worry about concurrency
+            * or visibility of changes, so we cheat.  Also cheat if
+            * REINDEX.
             */
            LockBuffer(pg_class_scan->rs_cbuf, BUFFER_LOCK_EXCLUSIVE);
            rd_rel->relpages = (int32) relpages;
@@ -1367,7 +1369,7 @@ UpdateStats(Oid relid, double reltuples)
    /*
     * We shouldn't have to do this, but we do...  Modify the reldesc in
     * place with the new values so that the cache contains the latest
-    * copy.  (XXX is this really still necessary?  The relcache will get
+    * copy.  (XXX is this really still necessary?  The relcache will get
     * fixed at next CommandCounterIncrement, so why bother here?)
     */
    whichRel->rd_rel->relpages = (int32) relpages;
@@ -1454,8 +1456,8 @@ IndexBuildHeapScan(Relation heapRelation,
    heapDescriptor = RelationGetDescr(heapRelation);
 
    /*
-    * Need an EState for evaluation of index expressions
-    * and partial-index predicates.
+    * Need an EState for evaluation of index expressions and
+    * partial-index predicates.
     */
    estate = CreateExecutorState();
    econtext = GetPerTupleExprContext(estate);
@@ -1463,7 +1465,8 @@ IndexBuildHeapScan(Relation heapRelation,
    /*
     * If this is a predicate (partial) index, we will need to evaluate
     * the predicate using ExecQual, which requires the current tuple to
-    * be in a slot of a TupleTable.  Likewise if there are any expressions.
+    * be in a slot of a TupleTable.  Likewise if there are any
+    * expressions.
     */
    if (indexInfo->ii_Predicate != NIL || indexInfo->ii_Expressions != NIL)
    {
@@ -1741,15 +1744,15 @@ reindex_index(Oid indexId, bool force, bool inplace)
     * it's a nailed-in-cache index, we must do inplace processing because
     * the relcache can't cope with changing its relfilenode.
     *
-    * In either of these cases, we are definitely processing a system
-    * index, so we'd better be ignoring system indexes.
+    * In either of these cases, we are definitely processing a system index,
+    * so we'd better be ignoring system indexes.
     */
    if (iRel->rd_rel->relisshared)
    {
        if (!IsIgnoringSystemIndexes())
            ereport(ERROR,
                    (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                    errmsg("the target relation %u is shared", indexId)));
+                  errmsg("the target relation %u is shared", indexId)));
        inplace = true;
    }
    if (iRel->rd_isnailed)
@@ -1757,7 +1760,7 @@ reindex_index(Oid indexId, bool force, bool inplace)
        if (!IsIgnoringSystemIndexes())
            ereport(ERROR,
                    (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                    errmsg("the target relation %u is nailed", indexId)));
+                  errmsg("the target relation %u is nailed", indexId)));
        inplace = true;
    }
 
index 28b9859677dc83b5d6426b2b7f4e27750e3cdfad..6a39fc69016b59c92a6b3961777cf629c730da3c 100644 (file)
@@ -13,7 +13,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/namespace.c,v 1.55 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/namespace.c,v 1.56 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -164,7 +164,7 @@ RangeVarGetRelid(const RangeVar *relation, bool failOK)
        if (strcmp(relation->catalogname, get_database_name(MyDatabaseId)) != 0)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cross-database references are not implemented")));
+              errmsg("cross-database references are not implemented")));
    }
 
    if (relation->schemaname)
@@ -217,7 +217,7 @@ RangeVarGetCreationNamespace(const RangeVar *newRelation)
        if (strcmp(newRelation->catalogname, get_database_name(MyDatabaseId)) != 0)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cross-database references are not implemented")));
+              errmsg("cross-database references are not implemented")));
    }
 
    if (newRelation->istemp)
@@ -226,7 +226,7 @@ RangeVarGetCreationNamespace(const RangeVar *newRelation)
        if (newRelation->schemaname)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
-                    errmsg("TEMP tables may not specify a schema name")));
+                  errmsg("TEMP tables may not specify a schema name")));
        /* Initialize temp namespace if first time through */
        if (!OidIsValid(myTempNamespace))
            InitTempTableNamespace();
@@ -1057,7 +1057,7 @@ OpclassIsVisible(Oid opcid)
 Oid
 ConversionGetConid(const char *conname)
 {
-   Oid     conid;
+   Oid         conid;
    List       *lptr;
 
    recomputeNamespacePath();
@@ -1115,11 +1115,11 @@ ConversionIsVisible(Oid conid)
        /*
         * If it is in the path, it might still not be visible; it could
         * be hidden by another conversion of the same name earlier in the
-        * path. So we must do a slow check to see if this conversion would
-        * be found by ConversionGetConid.
+        * path. So we must do a slow check to see if this conversion
+        * would be found by ConversionGetConid.
         */
        char       *conname = NameStr(conform->conname);
-       
+
        visible = (ConversionGetConid(conname) == conid);
    }
 
@@ -1164,13 +1164,13 @@ DeconstructQualifiedName(List *names,
            if (strcmp(catalogname, get_database_name(MyDatabaseId)) != 0)
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("cross-database references are not implemented")));
+               errmsg("cross-database references are not implemented")));
            break;
        default:
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("improper qualified name (too many dotted names): %s",
-                           NameListToString(names))));
+           errmsg("improper qualified name (too many dotted names): %s",
+                  NameListToString(names))));
            break;
    }
 
@@ -1281,8 +1281,8 @@ makeRangeVarFromNameList(List *names)
        default:
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("improper relation name (too many dotted names): %s",
-                           NameListToString(names))));
+            errmsg("improper relation name (too many dotted names): %s",
+                   NameListToString(names))));
            break;
    }
 
@@ -1720,8 +1720,8 @@ RemoveTempRelations(Oid tempNamespaceId)
 
    /*
     * We want to get rid of everything in the target namespace, but not
-    * the namespace itself (deleting it only to recreate it later would be
-    * a waste of cycles).  We do this by finding everything that has a
+    * the namespace itself (deleting it only to recreate it later would
+    * be a waste of cycles).  We do this by finding everything that has a
     * dependency on the namespace.
     */
    object.classId = get_system_catalog_relid(NamespaceRelationName);
@@ -1797,7 +1797,7 @@ assign_search_path(const char *newval, bool doit, bool interactive)
                                      0, 0, 0))
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_SCHEMA),
-                        errmsg("schema \"%s\" does not exist", curname)));
+                      errmsg("schema \"%s\" does not exist", curname)));
        }
    }
 
index 6837f3b92253476cd64bb089680c0f4a02c4895d..779468ce21f77a4f0331b0d7013527df19d6d769 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.61 2003/07/21 01:59:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.62 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,8 +29,8 @@
 #include "utils/syscache.h"
 
 
-static Oid lookup_agg_function(List *fnName, int nargs, Oid *input_types,
-                               Oid *rettype);
+static Oid lookup_agg_function(List *fnName, int nargs, Oid *input_types,
+                   Oid *rettype);
 
 
 /*
@@ -79,7 +79,7 @@ AggregateCreate(const char *aggName,
                (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                 errmsg("cannot determine transition datatype"),
                 errdetail("An aggregate using ANYARRAY or ANYELEMENT as "
-                          "trans type must have one of them as its base type.")));
+                "trans type must have one of them as its base type.")));
 
    /* handle transfn */
    MemSet(fnArgs, 0, FUNC_MAX_ARGS * sizeof(Oid));
@@ -99,8 +99,8 @@ AggregateCreate(const char *aggName,
     * enforce_generic_type_consistency, if transtype isn't polymorphic)
     * must exactly match declared transtype.
     *
-    * In the non-polymorphic-transtype case, it might be okay to allow
-    * rettype that's binary-coercible to transtype, but I'm not quite
+    * In the non-polymorphic-transtype case, it might be okay to allow a
+    * rettype that's binary-coercible to transtype, but I'm not quite
     * convinced that it's either safe or useful.  When transtype is
     * polymorphic we *must* demand exact equality.
     */
@@ -151,9 +151,9 @@ AggregateCreate(const char *aggName,
    Assert(OidIsValid(finaltype));
 
    /*
-    * If finaltype (i.e. aggregate return type) is polymorphic,
-    * basetype must be polymorphic also, else parser will fail to deduce
-    * result type.  (Note: given the previous test on transtype and basetype,
+    * If finaltype (i.e. aggregate return type) is polymorphic, basetype
+    * must be polymorphic also, else parser will fail to deduce result
+    * type.  (Note: given the previous test on transtype and basetype,
     * this cannot happen, unless someone has snuck a finalfn definition
     * into the catalogs that itself violates the rule against polymorphic
     * result with no polymorphic input.)
@@ -163,8 +163,8 @@ AggregateCreate(const char *aggName,
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("cannot determine result datatype"),
-                errdetail("An aggregate returning ANYARRAY or ANYELEMENT "
-                          "must have one of them as its base type.")));
+              errdetail("An aggregate returning ANYARRAY or ANYELEMENT "
+                        "must have one of them as its base type.")));
 
    /*
     * Everything looks okay.  Try to create the pg_proc entry for the
@@ -278,21 +278,21 @@ lookup_agg_function(List *fnName,
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
                 errmsg("function %s does not exist",
-                       func_signature_string(fnName, nargs, input_types))));
+                   func_signature_string(fnName, nargs, input_types))));
    if (retset)
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("function %s returns a set",
-                       func_signature_string(fnName, nargs, input_types))));
+                   func_signature_string(fnName, nargs, input_types))));
 
    /*
-    * If the given type(s) are all polymorphic, there's nothing we
-    * can check.  Otherwise, enforce consistency, and possibly refine
-    * the result type.
+    * If the given type(s) are all polymorphic, there's nothing we can
+    * check.  Otherwise, enforce consistency, and possibly refine the
+    * result type.
     */
    if ((input_types[0] == ANYARRAYOID || input_types[0] == ANYELEMENTOID) &&
        (nargs == 1 ||
-        (input_types[1] == ANYARRAYOID || input_types[1] == ANYELEMENTOID)))
+    (input_types[1] == ANYARRAYOID || input_types[1] == ANYELEMENTOID)))
    {
        /* nothing to check here */
    }
@@ -305,8 +305,8 @@ lookup_agg_function(List *fnName,
    }
 
    /*
-    * func_get_detail will find functions requiring run-time argument type
-    * coercion, but nodeAgg.c isn't prepared to deal with that
+    * func_get_detail will find functions requiring run-time argument
+    * type coercion, but nodeAgg.c isn't prepared to deal with that
     */
    if (true_oid_array[0] != ANYARRAYOID &&
        true_oid_array[0] != ANYELEMENTOID &&
@@ -314,7 +314,7 @@ lookup_agg_function(List *fnName,
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("function %s requires run-time type coercion",
-                       func_signature_string(fnName, nargs, true_oid_array))));
+                func_signature_string(fnName, nargs, true_oid_array))));
 
    if (nargs == 2 &&
        true_oid_array[1] != ANYARRAYOID &&
@@ -323,7 +323,7 @@ lookup_agg_function(List *fnName,
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("function %s requires run-time type coercion",
-                       func_signature_string(fnName, nargs, true_oid_array))));
+                func_signature_string(fnName, nargs, true_oid_array))));
 
    return fnOid;
 }
index 89adeb57b9985d64678658d36224e22b06e9d006..ae8b7dec03809d734e093cd0608e70902eed5c81 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.14 2003/07/21 01:59:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.15 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -195,7 +195,7 @@ CreateConstraintEntry(const char *constraintName,
        /*
         * Register auto dependency from constraint to owning domain
         */
-       ObjectAddress   domobject;
+       ObjectAddress domobject;
 
        domobject.classId = RelOid_pg_type;
        domobject.objectId = domainId;
@@ -234,8 +234,8 @@ CreateConstraintEntry(const char *constraintName,
    if (OidIsValid(indexRelId))
    {
        /*
-        * Register normal dependency on the unique index that supports
-        * foreign-key constraint.
+        * Register normal dependency on the unique index that supports a
+        * foreign-key constraint.
         */
        ObjectAddress relobject;
 
@@ -438,8 +438,8 @@ RemoveConstraintById(Oid conId)
        Relation    rel;
 
        /*
-        * If the constraint is for a relation, open and exclusive-lock the
-        * relation it's for.
+        * If the constraint is for a relation, open and exclusive-lock
+        * the relation it's for.
         */
        rel = heap_open(con->conrelid, AccessExclusiveLock);
 
@@ -463,7 +463,7 @@ RemoveConstraintById(Oid conId)
                     con->conrelid);
            classForm = (Form_pg_class) GETSTRUCT(relTup);
 
-           if (classForm->relchecks == 0)  /* should not happen */
+           if (classForm->relchecks == 0)      /* should not happen */
                elog(ERROR, "relation \"%s\" has relchecks = 0",
                     RelationGetRelationName(rel));
            classForm->relchecks--;
@@ -483,16 +483,15 @@ RemoveConstraintById(Oid conId)
    else if (OidIsValid(con->contypid))
    {
        /*
-        * XXX for now, do nothing special when dropping a domain constraint
+        * XXX for now, do nothing special when dropping a domain
+        * constraint
         *
         * Probably there should be some form of locking on the domain type,
         * but we have no such concept at the moment.
         */
    }
    else
-   {
        elog(ERROR, "constraint %u is not of a known type", conId);
-   }
 
    /* Fry the constraint itself */
    simple_heap_delete(conDesc, &tup->t_self);
index 70bd294297d5c9789cd897a819a565b677b6ffbf..5c10fa7b28cd7df12f50e41d9e95f25c8b4ce09c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_conversion.c,v 1.13 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_conversion.c,v 1.14 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -76,9 +76,9 @@ ConversionCreate(const char *conname, Oid connamespace,
                                  contoencoding))
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_OBJECT),
-                    errmsg("default conversion for %s to %s already exists",
-                           pg_encoding_to_char(conforencoding),
-                           pg_encoding_to_char(contoencoding))));
+                errmsg("default conversion for %s to %s already exists",
+                       pg_encoding_to_char(conforencoding),
+                       pg_encoding_to_char(contoencoding))));
    }
 
    /* open pg_conversion */
@@ -147,7 +147,7 @@ ConversionDrop(Oid conversionOid, DropBehavior behavior)
    if (!superuser() &&
        ((Form_pg_conversion) GETSTRUCT(tuple))->conowner != GetUserId())
        aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CONVERSION,
-                      NameStr(((Form_pg_conversion) GETSTRUCT(tuple))->conname));
+             NameStr(((Form_pg_conversion) GETSTRUCT(tuple))->conname));
 
    ReleaseSysCache(tuple);
 
index da3e2a469200f389164a1b411e4f3005a10ff0db..141d3a142a724b8d278c4aa727c480edfc1e5dce 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.81 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.82 2003/08/04 00:43:16 momjian Exp $
  *
  * NOTES
  *   these routines moved here from commands/define.c and somewhat cleaned up.
@@ -409,7 +409,7 @@ OperatorCreate(const char *operatorName,
    if (!OidIsValid(leftTypeId) && !OidIsValid(rightTypeId))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                errmsg("at least one of leftarg or rightarg must be specified")));
+       errmsg("at least one of leftarg or rightarg must be specified")));
 
    if (!(OidIsValid(leftTypeId) && OidIsValid(rightTypeId)))
    {
@@ -417,11 +417,11 @@ OperatorCreate(const char *operatorName,
        if (commutatorName)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                    errmsg("only binary operators can have commutators")));
+                 errmsg("only binary operators can have commutators")));
        if (joinName)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                    errmsg("only binary operators can have join selectivity")));
+            errmsg("only binary operators can have join selectivity")));
        if (canHash)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
index d8ff4a5225aa08beafa01e0a5407437ddd7e4e1d..2c11a17db5ea700f5d5d6b9ecbc782673239bf86 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.102 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.103 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -94,7 +94,7 @@ ProcedureCreate(const char *procedureName,
     */
    if (returnType == ANYARRAYOID || returnType == ANYELEMENTOID)
    {
-       bool    genericParam = false;
+       bool        genericParam = false;
 
        for (i = 0; i < parameterCount; i++)
        {
@@ -231,7 +231,7 @@ ProcedureCreate(const char *procedureName,
            returnsSet != oldproc->proretset)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                    errmsg("cannot change return type of existing function"),
+               errmsg("cannot change return type of existing function"),
                     errhint("Use DROP FUNCTION first.")));
 
        /* Can't change aggregate status, either */
@@ -339,8 +339,8 @@ ProcedureCreate(const char *procedureName,
  *
  * This is normally applied during function definition, but in the case
  * of a function with polymorphic arguments, we instead apply it during
- * function execution startup.  The rettype is then the actual resolved
- * output type of the function, rather than the declared type.  (Therefore,
+ * function execution startup. The rettype is then the actual resolved
+ * output type of the function, rather than the declared type. (Therefore,
  * we should never see ANYARRAY or ANYELEMENT as rettype.)
  */
 void
@@ -366,7 +366,7 @@ check_sql_fn_retval(Oid rettype, char fn_typtype, 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 a SELECT.")));
+            errdetail("Function's final statement must be a SELECT.")));
        return;
    }
 
@@ -395,9 +395,9 @@ check_sql_fn_retval(Oid rettype, char fn_typtype, List *queryTreeList)
    if (cmd != CMD_SELECT)
        ereport(ERROR,
                (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 a SELECT.")));
+        errmsg("return type mismatch in function declared to return %s",
+               format_type_be(rettype)),
+            errdetail("Function's final statement must be a SELECT.")));
 
    /*
     * Count the non-junk entries in the result targetlist.
@@ -421,7 +421,7 @@ check_sql_fn_retval(Oid rettype, char fn_typtype, List *queryTreeList)
                    (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                     errmsg("return type mismatch in function declared to return %s",
                            format_type_be(rettype)),
-                    errdetail("Final SELECT must return exactly one column.")));
+            errdetail("Final SELECT must return exactly one column.")));
 
        restype = ((TargetEntry *) lfirst(tlist))->resdom->restype;
        if (!IsBinaryCoercible(restype, rettype))
@@ -481,7 +481,7 @@ check_sql_fn_retval(Oid rettype, char fn_typtype, List *queryTreeList)
                            (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
                             errmsg("return type mismatch in function declared to return %s",
                                    format_type_be(rettype)),
-                            errdetail("Final SELECT returns too many columns.")));
+                   errdetail("Final SELECT returns too many columns.")));
                attr = reln->rd_att->attrs[colindex - 1];
            } while (attr->attisdropped);
            rellogcols++;
@@ -538,8 +538,8 @@ check_sql_fn_retval(Oid rettype, char fn_typtype, List *queryTreeList)
    else
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                errmsg("return type %s is not supported for SQL functions",
-                       format_type_be(rettype))));
+             errmsg("return type %s is not supported for SQL functions",
+                    format_type_be(rettype))));
 }
 
 
@@ -684,8 +684,8 @@ fmgr_sql_validator(PG_FUNCTION_ARGS)
            else
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                        errmsg("SQL functions cannot have arguments of type %s",
-                               format_type_be(proc->proargtypes[i]))));
+                errmsg("SQL functions cannot have arguments of type %s",
+                       format_type_be(proc->proargtypes[i]))));
        }
    }
 
@@ -696,13 +696,13 @@ fmgr_sql_validator(PG_FUNCTION_ARGS)
    prosrc = DatumGetCString(DirectFunctionCall1(textout, tmp));
 
    /*
-    * We can't do full prechecking of the function definition if there are
-    * any polymorphic input types, because actual datatypes of expression
-    * results will be unresolvable.  The check will be done at runtime
-    * instead.
+    * We can't do full prechecking of the function definition if there
+    * are any polymorphic input types, because actual datatypes of
+    * expression results will be unresolvable.  The check will be done at
+    * runtime instead.
     *
-    * We can run the text through the raw parser though; this will at
-    * least catch silly syntactic errors.
+    * We can run the text through the raw parser though; this will at least
+    * catch silly syntactic errors.
     */
    if (!haspolyarg)
    {
@@ -712,9 +712,7 @@ fmgr_sql_validator(PG_FUNCTION_ARGS)
        check_sql_fn_retval(proc->prorettype, functyptype, querytree_list);
    }
    else
-   {
        querytree_list = pg_parse_query(prosrc);
-   }
 
    ReleaseSysCache(tuple);
 
index 7980e6afadfcff4d4e5553c08c15218bc81f9d0e..d578644e6819a0e6b0386d546e3734305c852c41 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.88 2003/07/21 01:59:11 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.89 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -359,7 +359,8 @@ TypeCreate(const char *typeName,
 void
 GenerateTypeDependencies(Oid typeNamespace,
                         Oid typeObjectId,
-                        Oid relationOid,       /* only for 'c'atalog types */
+                        Oid relationOid,       /* only for 'c'atalog
+                                                * types */
                         char relationKind,     /* ditto */
                         Oid inputProcedure,
                         Oid outputProcedure,
@@ -426,13 +427,13 @@ GenerateTypeDependencies(Oid typeNamespace,
 
    /*
     * If the type is a rowtype for a relation, mark it as internally
-    * dependent on the relation, *unless* it is a stand-alone
-    * composite type relation. For the latter case, we have to
-    * reverse the dependency.
+    * dependent on the relation, *unless* it is a stand-alone composite
+    * type relation. For the latter case, we have to reverse the
+    * dependency.
     *
-    * In the former case, this allows the type to be auto-dropped when
-    * the relation is, and not otherwise. And in the latter, of
-    * course we get the opposite effect.
+    * In the former case, this allows the type to be auto-dropped when the
+    * relation is, and not otherwise. And in the latter, of course we get
+    * the opposite effect.
     */
    if (OidIsValid(relationOid))
    {
@@ -447,11 +448,11 @@ GenerateTypeDependencies(Oid typeNamespace,
    }
 
    /*
-    * If the type is an array type, mark it auto-dependent on the
-    * base type.  (This is a compromise between the typical case
-    * where the array type is automatically generated and the case
-    * where it is manually created: we'd prefer INTERNAL for the
-    * former case and NORMAL for the latter.)
+    * If the type is an array type, mark it auto-dependent on the base
+    * type.  (This is a compromise between the typical case where the
+    * array type is automatically generated and the case where it is
+    * manually created: we'd prefer INTERNAL for the former case and
+    * NORMAL for the latter.)
     */
    if (OidIsValid(elementType))
    {
index 1d9b25b5b0a21180f4ade25b807a7285d0030963..5a57d5c5c7731c276475e1c1f0686a9ab2ff2303 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/aggregatecmds.c,v 1.12 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/aggregatecmds.c,v 1.13 2003/08/04 00:43:16 momjian Exp $
  *
  * DESCRIPTION
  *   The "DefineFoo" routines take the parse tree and pick out the
@@ -256,16 +256,16 @@ RenameAggregate(List *name, TypeName *basetype, const char *newname)
        if (basetypeOid == ANYOID)
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_FUNCTION),
-                    errmsg("function %s(*) already exists in schema \"%s\"",
-                           newname,
-                           get_namespace_name(namespaceOid))));
+                errmsg("function %s(*) already exists in schema \"%s\"",
+                       newname,
+                       get_namespace_name(namespaceOid))));
        else
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_FUNCTION),
                     errmsg("function %s already exists in schema \"%s\"",
                            funcname_signature_string(newname,
                                                      procForm->pronargs,
-                                                     procForm->proargtypes),
+                                                 procForm->proargtypes),
                            get_namespace_name(namespaceOid))));
    }
 
index b377635099e3163b5218a32b8b51c0dfa7bf549e..4fd43871e977ee9a797ac1d30ab7271bcd92a959 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/alter.c,v 1.4 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/alter.c,v 1.5 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -79,52 +79,52 @@ ExecRenameStmt(RenameStmt *stmt)
        case OBJECT_TABLE:
        case OBJECT_COLUMN:
        case OBJECT_TRIGGER:
-       {
-           Oid         relid;
+           {
+               Oid         relid;
 
-           CheckRelationOwnership(stmt->relation, true);
+               CheckRelationOwnership(stmt->relation, true);
 
-           relid = RangeVarGetRelid(stmt->relation, false);
+               relid = RangeVarGetRelid(stmt->relation, false);
 
-           switch (stmt->renameType)
-           {
-               case OBJECT_TABLE:
+               switch (stmt->renameType)
                {
-                   /*
-                    * RENAME TABLE requires that we (still) hold
-                    * CREATE rights on the containing namespace, as
-                    * well as ownership of the table.
-                    */
-                   Oid         namespaceId = get_rel_namespace(relid);
-                   AclResult   aclresult;
-
-                   aclresult = pg_namespace_aclcheck(namespaceId,
-                                                     GetUserId(),
-                                                     ACL_CREATE);
-                   if (aclresult != ACLCHECK_OK)
-                       aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
-                                      get_namespace_name(namespaceId));
-
-                   renamerel(relid, stmt->newname);
-                   break;
-               }
-               case OBJECT_COLUMN:
-                   renameatt(relid,
-                             stmt->subname,        /* old att name */
-                             stmt->newname,        /* new att name */
+                   case OBJECT_TABLE:
+                       {
+                           /*
+                            * RENAME TABLE requires that we (still) hold
+                            * CREATE rights on the containing namespace,
+                            * as well as ownership of the table.
+                            */
+                           Oid         namespaceId = get_rel_namespace(relid);
+                           AclResult   aclresult;
+
+                           aclresult = pg_namespace_aclcheck(namespaceId,
+                                                             GetUserId(),
+                                                             ACL_CREATE);
+                           if (aclresult != ACLCHECK_OK)
+                               aclcheck_error(aclresult, ACL_KIND_NAMESPACE,
+                                       get_namespace_name(namespaceId));
+
+                           renamerel(relid, stmt->newname);
+                           break;
+                       }
+                   case OBJECT_COLUMN:
+                       renameatt(relid,
+                                 stmt->subname,        /* old att name */
+                                 stmt->newname,        /* new att name */
                              interpretInhOption(stmt->relation->inhOpt),       /* recursive? */
-                             false);       /* recursing already? */
-                   break;
-               case OBJECT_TRIGGER:
-                   renametrig(relid,
-                              stmt->subname,       /* old att name */
-                              stmt->newname);      /* new att name */
-                   break;
-               default:
-                   /*can't happen*/;
+                                 false);       /* recursing already? */
+                       break;
+                   case OBJECT_TRIGGER:
+                       renametrig(relid,
+                                  stmt->subname,       /* old att name */
+                                  stmt->newname);      /* new att name */
+                       break;
+                   default:
+                        /* can't happen */ ;
+               }
+               break;
            }
-           break;
-       }
 
        default:
            elog(ERROR, "unrecognized rename stmt type: %d",
index 5277884f1f87d3741784c89bea3bb1cd921a591b..dac2d5d7bbdebbdfb2f9f168960fddaf86457a0f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.56 2003/07/20 21:56:32 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.57 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -220,9 +220,9 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
 
    /*
     * Silently ignore tables that are temp tables of other backends ---
-    * trying to analyze these is rather pointless, since their
-    * contents are probably not up-to-date on disk.  (We don't throw a
-    * warning here; it would just lead to chatter during a database-wide
+    * trying to analyze these is rather pointless, since their contents
+    * are probably not up-to-date on disk.  (We don't throw a warning
+    * here; it would just lead to chatter during a database-wide
     * ANALYZE.)
     */
    if (isOtherTempNamespace(RelationGetNamespace(onerel)))
index dafea7c8695baf5a7e8fc0f86818cc4537116868..69085740cc541677a168ada0e8045e406e7ff3bd 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.96 2003/07/20 21:56:32 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.97 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -603,10 +603,10 @@ Async_NotifyHandler(SIGNAL_ARGS)
        bool        save_ImmediateInterruptOK = ImmediateInterruptOK;
 
        /*
-        * We may be called while ImmediateInterruptOK is true; turn it off
-        * while messing with the NOTIFY state.  (We would have to save
-        * and restore it anyway, because PGSemaphore operations inside
-        * ProcessIncomingNotify() might reset it.)
+        * We may be called while ImmediateInterruptOK is true; turn it
+        * off while messing with the NOTIFY state.  (We would have to
+        * save and restore it anyway, because PGSemaphore operations
+        * inside ProcessIncomingNotify() might reset it.)
         */
        ImmediateInterruptOK = false;
 
@@ -639,7 +639,8 @@ Async_NotifyHandler(SIGNAL_ARGS)
        }
 
        /*
-        * Restore ImmediateInterruptOK, and check for interrupts if needed.
+        * Restore ImmediateInterruptOK, and check for interrupts if
+        * needed.
         */
        ImmediateInterruptOK = save_ImmediateInterruptOK;
        if (save_ImmediateInterruptOK)
index 18f6bfcf6b50c0a5d1b34142669c45312481a615..23e03443fc55a34ce515b1e46f768a6437e6755c 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.112 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.113 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -58,12 +58,12 @@ typedef struct
  */
 typedef struct
 {
-   Oid     tableOid;
-   Oid     indexOid;
-} RelToCluster;
+   Oid         tableOid;
+   Oid         indexOid;
+}  RelToCluster;
 
 
-static void cluster_rel(RelToCluster *rv, bool recheck);
+static void cluster_rel(RelToCluster * rv, bool recheck);
 static Oid make_new_heap(Oid OIDOldHeap, const char *NewName);
 static void copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex);
 static List *get_indexattr_list(Relation OldHeap, Oid OldIndex);
@@ -74,7 +74,7 @@ static List *get_tables_to_cluster(MemoryContext cluster_context);
 
 
 /*---------------------------------------------------------------------------
- * This cluster code allows for clustering multiple tables at once.    Because
+ * This cluster code allows for clustering multiple tables at once. Because
  * of this, we cannot just run everything on a single transaction, or we
  * would be forced to acquire exclusive locks on all the tables being
  * clustered, simultaneously --- very likely leading to deadlock.
@@ -82,17 +82,17 @@ static List *get_tables_to_cluster(MemoryContext cluster_context);
  * To solve this we follow a similar strategy to VACUUM code,
  * clustering each relation in a separate transaction. For this to work,
  * we need to:
- *  - provide a separate memory context so that we can pass information in
- *    a way that survives across transactions
- *  - start a new transaction every time a new relation is clustered
- *  - check for validity of the information on to-be-clustered relations,
- *    as someone might have deleted a relation behind our back, or
- *    clustered one on a different index
- *  - end the transaction
+ * - provide a separate memory context so that we can pass information in
+ *   a way that survives across transactions
+ * - start a new transaction every time a new relation is clustered
+ * - check for validity of the information on to-be-clustered relations,
+ *   as someone might have deleted a relation behind our back, or
+ *   clustered one on a different index
+ * - end the transaction
  *
  * The single-relation case does not have any such overhead.
  *
- * We also allow a relation being specified without index.  In that case,
+ * We also allow a relation being specified without index. In that case,
  * the indisclustered bit will be looked up, and an ERROR will be thrown
  * if there is no index with the bit set.
  *---------------------------------------------------------------------------
@@ -103,10 +103,10 @@ cluster(ClusterStmt *stmt)
    if (stmt->relation != NULL)
    {
        /* This is the single-relation case. */
-       Oid             tableOid,
-                       indexOid = InvalidOid;
-       Relation        rel;
-       RelToCluster    rvtc;
+       Oid         tableOid,
+                   indexOid = InvalidOid;
+       Relation    rel;
+       RelToCluster rvtc;
 
        /* Find and lock the table */
        rel = heap_openrv(stmt->relation, AccessExclusiveLock);
@@ -123,10 +123,10 @@ cluster(ClusterStmt *stmt)
            List       *index;
 
            /* We need to find the index that has indisclustered set. */
-           foreach (index, RelationGetIndexList(rel))
+           foreach(index, RelationGetIndexList(rel))
            {
-               HeapTuple       idxtuple;
-               Form_pg_index   indexForm;
+               HeapTuple   idxtuple;
+               Form_pg_index indexForm;
 
                indexOid = lfirsto(index);
                idxtuple = SearchSysCache(INDEXRELID,
@@ -152,14 +152,17 @@ cluster(ClusterStmt *stmt)
        }
        else
        {
-           /* The index is expected to be in the same namespace as the relation. */
+           /*
+            * The index is expected to be in the same namespace as the
+            * relation.
+            */
            indexOid = get_relname_relid(stmt->indexname,
                                         rel->rd_rel->relnamespace);
            if (!OidIsValid(indexOid))
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_OBJECT),
-                        errmsg("index \"%s\" for table \"%s\" does not exist",
-                               stmt->indexname, stmt->relation->relname)));
+                  errmsg("index \"%s\" for table \"%s\" does not exist",
+                         stmt->indexname, stmt->relation->relname)));
        }
 
        /* All other checks are done in cluster_rel() */
@@ -175,16 +178,16 @@ cluster(ClusterStmt *stmt)
    else
    {
        /*
-        * This is the "multi relation" case. We need to cluster all tables
-        * that have some index with indisclustered set.
+        * This is the "multi relation" case. We need to cluster all
+        * tables that have some index with indisclustered set.
         */
-       MemoryContext   cluster_context;
-       List            *rv,
-                       *rvs;
+       MemoryContext cluster_context;
+       List       *rv,
+                  *rvs;
 
        /*
-        * We cannot run this form of CLUSTER inside a user transaction block;
-        * we'd be holding locks way too long.
+        * We cannot run this form of CLUSTER inside a user transaction
+        * block; we'd be holding locks way too long.
         */
        PreventTransactionChain((void *) stmt, "CLUSTER");
 
@@ -201,8 +204,8 @@ cluster(ClusterStmt *stmt)
                                                ALLOCSET_DEFAULT_MAXSIZE);
 
        /*
-        * Build the list of relations to cluster.  Note that this lives in
-        * cluster_context.
+        * Build the list of relations to cluster.  Note that this lives
+        * in cluster_context.
         */
        rvs = get_tables_to_cluster(cluster_context);
 
@@ -210,13 +213,14 @@ cluster(ClusterStmt *stmt)
        CommitTransactionCommand();
 
        /* Ok, now that we've got them all, cluster them one by one */
-       foreach (rv, rvs)
+       foreach(rv, rvs)
        {
-           RelToCluster    *rvtc = (RelToCluster *) lfirst(rv);
+           RelToCluster *rvtc = (RelToCluster *) lfirst(rv);
 
            /* Start a new transaction for each relation. */
            StartTransactionCommand();
-           SetQuerySnapshot(); /* might be needed for functions in indexes */
+           SetQuerySnapshot(); /* might be needed for functions in
+                                * indexes */
            cluster_rel(rvtc, true);
            CommitTransactionCommand();
        }
@@ -244,7 +248,7 @@ cluster(ClusterStmt *stmt)
  * them incrementally while we load the table.
  */
 static void
-cluster_rel(RelToCluster *rvtc, bool recheck)
+cluster_rel(RelToCluster * rvtc, bool recheck)
 {
    Relation    OldHeap,
                OldIndex;
@@ -256,14 +260,14 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
     * Since we may open a new transaction for each relation, we have to
     * check that the relation still is what we think it is.
     *
-    * If this is a single-transaction CLUSTER, we can skip these tests.
-    * We *must* skip the one on indisclustered since it would reject an
+    * If this is a single-transaction CLUSTER, we can skip these tests. We
+    * *must* skip the one on indisclustered since it would reject an
     * attempt to cluster a not-previously-clustered index.
     */
    if (recheck)
    {
-       HeapTuple       tuple;
-       Form_pg_index   indexForm;
+       HeapTuple   tuple;
+       Form_pg_index indexForm;
 
        /*
         * Check if the relation and index still exist before opening them
@@ -319,10 +323,10 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
                        RelationGetRelationName(OldHeap))));
 
    /*
-    * Disallow clustering on incomplete indexes (those that might not index
-    * every row of the relation).  We could relax this by making a separate
-    * seqscan pass over the table to copy the missing rows, but that seems
-    * expensive and tedious.
+    * Disallow clustering on incomplete indexes (those that might not
+    * index every row of the relation).  We could relax this by making a
+    * separate seqscan pass over the table to copy the missing rows, but
+    * that seems expensive and tedious.
     */
    if (!heap_attisnull(OldIndex->rd_indextuple, Anum_pg_index_indpred))
        ereport(ERROR,
@@ -334,7 +338,7 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
 
        /*
         * If the AM doesn't index nulls, then it's a partial index unless
-        * we can prove all the rows are non-null.  Note we only need look
+        * we can prove all the rows are non-null.  Note we only need look
         * at the first column; multicolumn-capable AMs are *required* to
         * index nulls in columns after the first.
         */
@@ -347,7 +351,7 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("cannot cluster when index access method does not handle nulls"),
                         errhint("You may be able to work around this by marking column \"%s\" NOT NULL.",
-                                NameStr(OldHeap->rd_att->attrs[colno - 1]->attname))));
+                 NameStr(OldHeap->rd_att->attrs[colno - 1]->attname))));
        }
        else if (colno < 0)
        {
@@ -382,7 +386,7 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
    if (isOtherTempNamespace(RelationGetNamespace(OldHeap)))
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("cannot cluster temp tables of other processes")));
+              errmsg("cannot cluster temp tables of other processes")));
 
    /* Drop relcache refcnt on OldIndex, but keep lock */
    index_close(OldIndex);
@@ -397,7 +401,7 @@ cluster_rel(RelToCluster *rvtc, bool recheck)
  * rebuild_relation: rebuild an existing relation
  *
  * This is shared code between CLUSTER and TRUNCATE.  In the TRUNCATE
- * case, the new relation is built and left empty.  In the CLUSTER case,
+ * case, the new relation is built and left empty. In the CLUSTER case,
  * it is filled with data read from the old relation in the order specified
  * by the index.
  *
@@ -432,6 +436,7 @@ rebuild_relation(Relation OldHeap, Oid indexOid)
    snprintf(NewHeapName, sizeof(NewHeapName), "pg_temp_%u", tableOid);
 
    OIDNewHeap = make_new_heap(tableOid, NewHeapName);
+
    /*
     * We don't need CommandCounterIncrement() because make_new_heap did
     * it.
@@ -754,8 +759,8 @@ swap_relfilenodes(Oid r1, Oid r2)
 
    /* swap size statistics too, since new rel has freshly-updated stats */
    {
-       int4    swap_pages;
-       float4  swap_tuples;
+       int4        swap_pages;
+       float4      swap_tuples;
 
        swap_pages = relform1->relpages;
        relform1->relpages = relform2->relpages;
@@ -857,20 +862,20 @@ swap_relfilenodes(Oid r1, Oid r2)
 static List *
 get_tables_to_cluster(MemoryContext cluster_context)
 {
-   Relation        indRelation;
-   HeapScanDesc    scan;
-   ScanKeyData     entry;
-   HeapTuple       indexTuple;
-   Form_pg_index   index;
-   MemoryContext   old_context;
-   RelToCluster   *rvtc;
-   List           *rvs = NIL;
+   Relation    indRelation;
+   HeapScanDesc scan;
+   ScanKeyData entry;
+   HeapTuple   indexTuple;
+   Form_pg_index index;
+   MemoryContext old_context;
+   RelToCluster *rvtc;
+   List       *rvs = NIL;
 
    /*
     * Get all indexes that have indisclustered set and are owned by
-    * appropriate user. System relations or nailed-in relations cannot ever
-    * have indisclustered set, because CLUSTER will refuse to set it when
-    * called with one of them as argument.
+    * appropriate user. System relations or nailed-in relations cannot
+    * ever have indisclustered set, because CLUSTER will refuse to set it
+    * when called with one of them as argument.
     */
    indRelation = relation_openr(IndexRelationName, AccessShareLock);
    ScanKeyEntryInitialize(&entry, 0,
@@ -886,8 +891,8 @@ get_tables_to_cluster(MemoryContext cluster_context)
            continue;
 
        /*
-        * We have to build the list in a different memory context so
-        * it will survive the cross-transaction processing
+        * We have to build the list in a different memory context so it
+        * will survive the cross-transaction processing
         */
        old_context = MemoryContextSwitchTo(cluster_context);
 
index ecd50bdb367aff04cfbb9fe61b5e0a4db7877a4a..e0ebba0df96d15eef81a03ad369b2a31691d64f7 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (c) 1996-2001, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.67 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.68 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -383,8 +383,8 @@ CommentAttribute(List *qualname, char *comment)
    if (attnum == InvalidAttrNumber)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       attrname, RelationGetRelationName(relation))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   attrname, RelationGetRelationName(relation))));
 
    /* Create the comment using the relation's oid */
 
@@ -418,16 +418,17 @@ CommentDatabase(List *qualname, char *comment)
    database = strVal(lfirst(qualname));
 
    /*
-    * We cannot currently support cross-database comments (since other DBs
-    * cannot see pg_description of this database).  So, we reject attempts
-    * to comment on a database other than the current one.  Someday this
-    * might be improved, but it would take a redesigned infrastructure.
+    * We cannot currently support cross-database comments (since other
+    * DBs cannot see pg_description of this database).  So, we reject
+    * attempts to comment on a database other than the current one.
+    * Someday this might be improved, but it would take a redesigned
+    * infrastructure.
     *
     * When loading a dump, we may see a COMMENT ON DATABASE for the old name
-    * of the database.  Erroring out would prevent pg_restore from completing
-    * (which is really pg_restore's fault, but for now we will work around
-    * the problem here).  Consensus is that the best fix is to treat wrong
-    * database name as a WARNING not an ERROR.
+    * of the database.  Erroring out would prevent pg_restore from
+    * completing (which is really pg_restore's fault, but for now we will
+    * work around the problem here).  Consensus is that the best fix is
+    * to treat wrong database name as a WARNING not an ERROR.
     */
 
    /* First get the database OID */
@@ -569,7 +570,7 @@ CommentRule(List *qualname, char *comment)
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_OBJECT),
                     errmsg("there are multiple rules \"%s\"", rulename),
-                    errhint("Specify a relation name as well as a rule name.")));
+           errhint("Specify a relation name as well as a rule name.")));
 
        heap_endscan(scanDesc);
        heap_close(RewriteRelation, AccessShareLock);
@@ -811,8 +812,8 @@ CommentTrigger(List *qualname, char *comment)
    if (!HeapTupleIsValid(triggertuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                errmsg("trigger \"%s\" for relation \"%s\" does not exist",
-                       trigname, RelationGetRelationName(relation))));
+             errmsg("trigger \"%s\" for relation \"%s\" does not exist",
+                    trigname, RelationGetRelationName(relation))));
 
    oid = HeapTupleGetOid(triggertuple);
 
@@ -891,7 +892,7 @@ CommentConstraint(List *qualname, char *comment)
                ereport(ERROR,
                        (errcode(ERRCODE_DUPLICATE_OBJECT),
                         errmsg("relation \"%s\" has multiple constraints named \"%s\"",
-                               RelationGetRelationName(relation), conName)));
+                          RelationGetRelationName(relation), conName)));
            conOid = HeapTupleGetOid(tuple);
        }
    }
@@ -902,8 +903,8 @@ CommentConstraint(List *qualname, char *comment)
    if (!OidIsValid(conOid))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                errmsg("constraint \"%s\" for relation \"%s\" does not exist",
-                       conName, RelationGetRelationName(relation))));
+          errmsg("constraint \"%s\" for relation \"%s\" does not exist",
+                 conName, RelationGetRelationName(relation))));
 
    /* Create the comment with the pg_constraint oid */
    CreateComments(conOid, RelationGetRelid(pg_constraint), 0, comment);
index b917c527acaad86c6f5bb8a6d1613f06012f4301..e9afb956246e07e0162786a771ab81c583d906a9 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.9 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.10 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -148,11 +148,11 @@ RenameConversion(List *name, const char *newname)
                             0, 0))
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_OBJECT),
-                errmsg("conversion \"%s\" already exists in schema \"%s\"",
-                       newname, get_namespace_name(namespaceOid))));
+             errmsg("conversion \"%s\" already exists in schema \"%s\"",
+                    newname, get_namespace_name(namespaceOid))));
 
    /* must be owner */
-    if (!superuser() &&
+   if (!superuser() &&
        ((Form_pg_conversion) GETSTRUCT(tup))->conowner != GetUserId())
        aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CONVERSION,
                       NameListToString(name));
index fa91439a5797ec006e083edf8a4e4062849b12b2..5c7238de8dc71a871cab1d166e17bf8900e1f099 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.205 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.206 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@ typedef enum CopyDest
    COPY_FILE,                  /* to/from file */
    COPY_OLD_FE,                /* to/from frontend (old protocol) */
    COPY_NEW_FE                 /* to/from frontend (new protocol) */
-} CopyDest;
+}  CopyDest;
 
 /*
  * Represents the type of data returned by CopyReadAttribute()
@@ -82,17 +82,17 @@ typedef enum EolType
    EOL_NL,
    EOL_CR,
    EOL_CRNL
-} EolType;
+}  EolType;
 
 
 /* non-export function prototypes */
 static void CopyTo(Relation rel, List *attnumlist, bool binary, bool oids,
-                  char *delim, char *null_print);
+      char *delim, char *null_print);
 static void CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
-                    char *delim, char *null_print);
+        char *delim, char *null_print);
 static char *CopyReadAttribute(const char *delim, CopyReadResult *result);
 static Datum CopyReadBinaryAttribute(int column_no, FmgrInfo *flinfo,
-                                    Oid typelem, bool *isnull);
+                       Oid typelem, bool *isnull);
 static void CopyAttributeOut(char *string, char *delim);
 static List *CopyGetAttnums(Relation rel, List *attnamelist);
 
@@ -136,6 +136,7 @@ static void CopySendChar(char c);
 static void CopySendEndOfRow(bool binary);
 static void CopyGetData(void *databuf, int datasize);
 static int CopyGetChar(void);
+
 #define CopyGetEof()  (fe_eof)
 static int CopyPeekChar(void);
 static void CopyDonePeek(int c, bool pickup);
@@ -155,14 +156,14 @@ SendCopyBegin(bool binary, int natts)
    {
        /* new way */
        StringInfoData buf;
-       int16   format = (binary ? 1 : 0);
-       int     i;
+       int16       format = (binary ? 1 : 0);
+       int         i;
 
        pq_beginmessage(&buf, 'H');
-       pq_sendbyte(&buf, format);          /* overall format */
+       pq_sendbyte(&buf, format);      /* overall format */
        pq_sendint(&buf, natts, 2);
        for (i = 0; i < natts; i++)
-           pq_sendint(&buf, format, 2);    /* per-column formats */
+           pq_sendint(&buf, format, 2);        /* per-column formats */
        pq_endmessage(&buf);
        copy_dest = COPY_NEW_FE;
        copy_msgbuf = makeStringInfo();
@@ -200,14 +201,14 @@ ReceiveCopyBegin(bool binary, int natts)
    {
        /* new way */
        StringInfoData buf;
-       int16   format = (binary ? 1 : 0);
-       int     i;
+       int16       format = (binary ? 1 : 0);
+       int         i;
 
        pq_beginmessage(&buf, 'G');
-       pq_sendbyte(&buf, format);          /* overall format */
+       pq_sendbyte(&buf, format);      /* overall format */
        pq_sendint(&buf, natts, 2);
        for (i = 0; i < natts; i++)
-           pq_sendint(&buf, format, 2);    /* per-column formats */
+           pq_sendint(&buf, format, 2);        /* per-column formats */
        pq_endmessage(&buf);
        copy_dest = COPY_NEW_FE;
        copy_msgbuf = makeStringInfo();
@@ -289,7 +290,7 @@ CopySendData(void *databuf, int datasize)
                /* no hope of recovering connection sync, so FATAL */
                ereport(FATAL,
                        (errcode(ERRCODE_CONNECTION_FAILURE),
-                        errmsg("connection lost during COPY to stdout")));
+                      errmsg("connection lost during COPY to stdout")));
            }
            break;
        case COPY_NEW_FE:
@@ -378,7 +379,7 @@ CopyGetData(void *databuf, int datasize)
        case COPY_NEW_FE:
            while (datasize > 0 && !fe_eof)
            {
-               int     avail;
+               int         avail;
 
                while (copy_msgbuf->cursor >= copy_msgbuf->len)
                {
@@ -389,24 +390,24 @@ CopyGetData(void *databuf, int datasize)
                    if (mtype == EOF)
                        ereport(ERROR,
                                (errcode(ERRCODE_CONNECTION_FAILURE),
-                                errmsg("unexpected EOF on client connection")));
+                        errmsg("unexpected EOF on client connection")));
                    if (pq_getmessage(copy_msgbuf, 0))
                        ereport(ERROR,
                                (errcode(ERRCODE_CONNECTION_FAILURE),
-                                errmsg("unexpected EOF on client connection")));
+                        errmsg("unexpected EOF on client connection")));
                    switch (mtype)
                    {
-                       case 'd': /* CopyData */
+                       case 'd':       /* CopyData */
                            break;
-                       case 'c': /* CopyDone */
+                       case 'c':       /* CopyDone */
                            /* COPY IN correctly terminated by frontend */
                            fe_eof = true;
                            return;
-                       case 'f': /* CopyFail */
+                       case 'f':       /* CopyFail */
                            ereport(ERROR,
                                    (errcode(ERRCODE_QUERY_CANCELED),
                                     errmsg("COPY from stdin failed: %s",
-                                           pq_getmsgstring(copy_msgbuf))));
+                                        pq_getmsgstring(copy_msgbuf))));
                            break;
                        default:
                            ereport(ERROR,
@@ -421,7 +422,7 @@ CopyGetData(void *databuf, int datasize)
                    avail = datasize;
                pq_copymsgbytes(copy_msgbuf, databuf, avail);
                databuf = (void *) ((char *) databuf + avail);
-               datasize =avail;
+               datasize = -avail;
            }
            break;
    }
@@ -430,7 +431,7 @@ CopyGetData(void *databuf, int datasize)
 static int
 CopyGetChar(void)
 {
-   int     ch;
+   int         ch;
 
    switch (copy_dest)
    {
@@ -448,16 +449,16 @@ CopyGetChar(void)
            }
            break;
        case COPY_NEW_FE:
-       {
-           unsigned char   cc;
+           {
+               unsigned char cc;
 
-           CopyGetData(&cc, 1);
-           if (fe_eof)
-               ch = EOF;
-           else
-               ch = cc;
-           break;
-       }
+               CopyGetData(&cc, 1);
+               if (fe_eof)
+                   ch = EOF;
+               else
+                   ch = cc;
+               break;
+           }
        default:
            ch = EOF;
            break;
@@ -479,7 +480,7 @@ CopyGetChar(void)
 static int
 CopyPeekChar(void)
 {
-   int     ch;
+   int         ch;
 
    switch (copy_dest)
    {
@@ -497,16 +498,16 @@ CopyPeekChar(void)
            }
            break;
        case COPY_NEW_FE:
-       {
-           unsigned char   cc;
+           {
+               unsigned char cc;
 
-           CopyGetData(&cc, 1);
-           if (fe_eof)
-               ch = EOF;
-           else
-               ch = cc;
-           break;
-       }
+               CopyGetData(&cc, 1);
+               if (fe_eof)
+                   ch = EOF;
+               else
+                   ch = cc;
+               break;
+           }
        default:
            ch = EOF;
            break;
@@ -524,7 +525,7 @@ CopyDonePeek(int c, bool pickup)
    switch (copy_dest)
    {
        case COPY_FILE:
-           if (!pickup) 
+           if (!pickup)
            {
                /* We don't want to pick it up - so put it back in there */
                ungetc(c, copy_file);
@@ -537,7 +538,11 @@ CopyDonePeek(int c, bool pickup)
                /* We want to pick it up */
                (void) pq_getbyte();
            }
-           /* If we didn't want to pick it up, just leave it where it sits */
+
+           /*
+            * If we didn't want to pick it up, just leave it where it
+            * sits
+            */
            break;
        case COPY_NEW_FE:
            if (!pickup)
@@ -737,7 +742,7 @@ DoCopy(const CopyStmt *stmt)
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
                 errmsg("must be superuser to COPY to or from a file"),
                 errhint("Anyone can COPY to stdout or from stdin. "
-                        "psql's \\copy command also works for anyone.")));
+                      "psql's \\copy command also works for anyone.")));
 
    /*
     * Presently, only single-character delimiter strings are supported.
@@ -791,8 +796,8 @@ DoCopy(const CopyStmt *stmt)
            else
                ereport(ERROR,
                        (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                        errmsg("cannot copy to non-table relation \"%s\"",
-                               RelationGetRelationName(rel))));
+                      errmsg("cannot copy to non-table relation \"%s\"",
+                             RelationGetRelationName(rel))));
        }
        if (pipe)
        {
@@ -810,8 +815,8 @@ DoCopy(const CopyStmt *stmt)
            if (copy_file == NULL)
                ereport(ERROR,
                        (errcode_for_file_access(),
-                        errmsg("could not open file \"%s\" for reading: %m",
-                               filename)));
+                    errmsg("could not open file \"%s\" for reading: %m",
+                           filename)));
 
            fstat(fileno(copy_file), &st);
            if (S_ISDIR(st.st_mode))
@@ -841,8 +846,8 @@ DoCopy(const CopyStmt *stmt)
            else
                ereport(ERROR,
                        (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                        errmsg("cannot copy from non-table relation \"%s\"",
-                               RelationGetRelationName(rel))));
+                    errmsg("cannot copy from non-table relation \"%s\"",
+                           RelationGetRelationName(rel))));
        }
        if (pipe)
        {
@@ -863,7 +868,7 @@ DoCopy(const CopyStmt *stmt)
            if (!is_absolute_path(filename))
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_NAME),
-                        errmsg("relative path not allowed for COPY to file")));
+                 errmsg("relative path not allowed for COPY to file")));
 
            oumask = umask((mode_t) 022);
            copy_file = AllocateFile(filename, PG_BINARY_W);
@@ -872,8 +877,8 @@ DoCopy(const CopyStmt *stmt)
            if (copy_file == NULL)
                ereport(ERROR,
                        (errcode_for_file_access(),
-                        errmsg("could not open file \"%s\" for writing: %m",
-                               filename)));
+                    errmsg("could not open file \"%s\" for writing: %m",
+                           filename)));
 
            fstat(fileno(copy_file), &st);
            if (S_ISDIR(st.st_mode))
@@ -955,8 +960,8 @@ CopyTo(Relation rel, List *attnumlist, bool binary, bool oids,
    }
 
    /*
-    * Create a temporary memory context that we can reset once per row
-    * to recover palloc'd memory.  This avoids any problems with leaks
+    * Create a temporary memory context that we can reset once per row to
+    * recover palloc'd memory.  This avoids any problems with leaks
     * inside datatype output routines, and should be faster than retail
     * pfree's anyway.  (We don't need a whole econtext as CopyFrom does.)
     */
@@ -1040,9 +1045,9 @@ CopyTo(Relation rel, List *attnumlist, bool binary, bool oids,
            if (isnull)
            {
                if (!binary)
-                   CopySendString(null_print);     /* null indicator */
+                   CopySendString(null_print); /* null indicator */
                else
-                   CopySendInt32(-1);              /* null marker */
+                   CopySendInt32(-1);  /* null marker */
            }
            else
            {
@@ -1060,7 +1065,7 @@ CopyTo(Relation rel, List *attnumlist, bool binary, bool oids,
 
                    outputbytes = DatumGetByteaP(FunctionCall2(&out_functions[attnum - 1],
                                                               value,
-                                                              ObjectIdGetDatum(elements[attnum - 1])));
+                               ObjectIdGetDatum(elements[attnum - 1])));
                    /* We assume the result will not have been toasted */
                    CopySendInt32(VARSIZE(outputbytes) - VARHDRSZ);
                    CopySendData(VARDATA(outputbytes),
@@ -1199,7 +1204,7 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
        {
            /* attribute is NOT to be copied from input */
            /* use default value if one exists */
-           Node   *defexpr = build_column_default(rel, i + 1);
+           Node       *defexpr = build_column_default(rel, i + 1);
 
            if (defexpr != NULL)
            {
@@ -1219,10 +1224,10 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
            /*
             * Easiest way to do this is to use parse_coerce.c to set up
             * an expression that checks the constraints.  (At present,
-            * the expression might contain a length-coercion-function call
-            * and/or CoerceToDomain nodes.)  The bottom of the expression
-            * is a Param node so that we can fill in the actual datum during
-            * the data input loop.
+            * the expression might contain a length-coercion-function
+            * call and/or CoerceToDomain nodes.)  The bottom of the
+            * expression is a Param node so that we can fill in the
+            * actual datum during the data input loop.
             */
            prm = makeNode(Param);
            prm->paramkind = PARAM_EXEC;
@@ -1241,11 +1246,11 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
    }
 
    /*
-    * Check BEFORE STATEMENT insertion triggers. It's debateable
-    * whether we should do this for COPY, since it's not really an
-    * "INSERT" statement as such. However, executing these triggers
-    * maintains consistency with the EACH ROW triggers that we already
-    * fire on COPY.
+    * Check BEFORE STATEMENT insertion triggers. It's debateable whether
+    * we should do this for COPY, since it's not really an "INSERT"
+    * statement as such. However, executing these triggers maintains
+    * consistency with the EACH ROW triggers that we already fire on
+    * COPY.
     */
    ExecBSInsertTriggers(estate, resultRelInfo);
 
@@ -1276,13 +1281,13 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
        if ((tmp >> 16) != 0)
            ereport(ERROR,
                    (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                    errmsg("unrecognized critical flags in COPY file header")));
+            errmsg("unrecognized critical flags in COPY file header")));
        /* Header extension length */
        tmp = CopyGetInt32();
        if (CopyGetEof() || tmp < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                    errmsg("invalid COPY file header (missing length)")));
+                  errmsg("invalid COPY file header (missing length)")));
        /* Skip extension header, if present */
        while (tmp-- > 0)
        {
@@ -1290,7 +1295,7 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
            if (CopyGetEof())
                ereport(ERROR,
                        (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                        errmsg("invalid COPY file header (wrong length)")));
+                    errmsg("invalid COPY file header (wrong length)")));
        }
    }
 
@@ -1418,9 +1423,9 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
            /*
             * Complain if there are more fields on the input line.
             *
-            * Special case: if we're reading a zero-column table, we
-            * won't yet have called CopyReadAttribute() at all; so do that
-            * and check we have an empty line.  Fortunately we can keep that
+            * Special case: if we're reading a zero-column table, we won't
+            * yet have called CopyReadAttribute() at all; so do that and
+            * check we have an empty line.  Fortunately we can keep that
             * silly corner case out of the main line of execution.
             */
            if (result == NORMAL_ATTR)
@@ -1431,7 +1436,7 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
                    if (result == NORMAL_ATTR || *string != '\0')
                        ereport(ERROR,
                                (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                                errmsg("extra data after last expected column")));
+                       errmsg("extra data after last expected column")));
                    if (result == END_OF_FILE)
                    {
                        /* EOF at start of line: all is well */
@@ -1442,7 +1447,7 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
                else
                    ereport(ERROR,
                            (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                            errmsg("extra data after last expected column")));
+                      errmsg("extra data after last expected column")));
            }
 
            /*
@@ -1475,8 +1480,8 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
            {
                loaded_oid =
                    DatumGetObjectId(CopyReadBinaryAttribute(0,
-                                                            &oid_in_function,
-                                                            oid_in_element,
+                                                       &oid_in_function,
+                                                         oid_in_element,
                                                             &isnull));
                if (isnull || loaded_oid == InvalidOid)
                    ereport(ERROR,
@@ -1531,9 +1536,9 @@ CopyFrom(Relation rel, List *attnumlist, bool binary, bool oids,
                prmdata->isnull = (nulls[i] == 'n');
 
                /*
-                * Execute the constraint expression.  Allow the expression
-                * to replace the value (consider e.g. a timestamp precision
-                * restriction).
+                * Execute the constraint expression.  Allow the
+                * expression to replace the value (consider e.g. a
+                * timestamp precision restriction).
                 */
                values[i] = ExecEvalExpr(exprstate, econtext,
                                         &isnull, NULL);
@@ -1674,11 +1679,12 @@ CopyReadAttribute(const char *delim, CopyReadResult *result)
                ereport(ERROR,
                        (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
                         errmsg("literal carriage return found in data"),
-                        errhint("Use \"\\r\" to represent carriage return.")));
-           /*  Check for \r\n on first line, _and_ handle \r\n. */
+                 errhint("Use \"\\r\" to represent carriage return.")));
+           /* Check for \r\n on first line, _and_ handle \r\n. */
            if (copy_lineno == 1 || eol_type == EOL_CRNL)
            {
-               int c2 = CopyPeekChar();
+               int         c2 = CopyPeekChar();
+
                if (c2 == '\n')
                {
                    CopyDonePeek(c2, true);     /* eat newline */
@@ -1690,9 +1696,13 @@ CopyReadAttribute(const char *delim, CopyReadResult *result)
                    if (eol_type == EOL_CRNL)
                        ereport(ERROR,
                                (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                                errmsg("literal carriage return found in data"),
+                        errmsg("literal carriage return found in data"),
                                 errhint("Use \"\\r\" to represent carriage return.")));
-                   /* if we got here, it is the first line and we didn't get \n, so put it back */
+
+                   /*
+                    * if we got here, it is the first line and we didn't
+                    * get \n, so put it back
+                    */
                    CopyDonePeek(c2, false);
                    eol_type = EOL_CR;
                }
@@ -1802,12 +1812,12 @@ CopyReadAttribute(const char *delim, CopyReadResult *result)
                        c = CopyGetChar();
                        if (c == '\n')
                            ereport(ERROR,
-                                   (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                                    errmsg("end-of-copy marker does not match previous newline style")));
+                                 (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
+                                  errmsg("end-of-copy marker does not match previous newline style")));
                        if (c != '\r')
                            ereport(ERROR,
-                                   (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
-                                    errmsg("end-of-copy marker corrupt")));
+                                 (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
+                                  errmsg("end-of-copy marker corrupt")));
                    }
                    c = CopyGetChar();
                    if (c != '\r' && c != '\n')
@@ -1816,21 +1826,20 @@ CopyReadAttribute(const char *delim, CopyReadResult *result)
                                 errmsg("end-of-copy marker corrupt")));
                    if ((eol_type == EOL_NL && c != '\n') ||
                        (eol_type == EOL_CRNL && c != '\n') ||
-                       (eol_type == EOL_CR && c != '\r'))
+                       (eol_type == EOL_CR && c != '\r'))
                        ereport(ERROR,
                                (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
                                 errmsg("end-of-copy marker does not match previous newline style")));
+
                    /*
-                    * In protocol version 3, we should ignore anything after
-                    * \. up to the protocol end of copy data.  (XXX maybe
-                    * better not to treat \. as special?)
+                    * In protocol version 3, we should ignore anything
+                    * after \. up to the protocol end of copy data.  (XXX
+                    * maybe better not to treat \. as special?)
                     */
                    if (copy_dest == COPY_NEW_FE)
                    {
                        while (c != EOF)
-                       {
                            c = CopyGetChar();
-                       }
                    }
                    *result = END_OF_FILE;
                    goto copy_eof;
@@ -2045,8 +2054,8 @@ CopyGetAttnums(Relation rel, List *attnamelist)
            if (intMember(attnum, attnums))
                ereport(ERROR,
                        (errcode(ERRCODE_DUPLICATE_COLUMN),
-                        errmsg("attribute \"%s\" specified more than once",
-                               name)));
+                     errmsg("attribute \"%s\" specified more than once",
+                            name)));
            attnums = lappendi(attnums, attnum);
        }
    }
index 70678b26b08b0cc185349af3784df54ca6cab2cf..547f3fb2f3f0691abca3cf8502010afae54665ce 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.119 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.120 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -200,7 +200,7 @@ createdb(const CreatedbStmt *stmt)
    if (dbpath != NULL)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("cannot use an alternate location on this platform")));
+          errmsg("cannot use an alternate location on this platform")));
 #endif
 
    /*
@@ -260,8 +260,8 @@ createdb(const CreatedbStmt *stmt)
    if (DatabaseHasActiveBackends(src_dboid, true))
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_IN_USE),
-                errmsg("source database \"%s\" is being accessed by other users",
-                       dbtemplate)));
+       errmsg("source database \"%s\" is being accessed by other users",
+              dbtemplate)));
 
    /* If encoding is defaulted, use source's encoding */
    if (encoding < 0)
@@ -345,7 +345,7 @@ createdb(const CreatedbStmt *stmt)
    /* Make the symlink, if needed */
    if (alt_loc)
    {
-#ifdef HAVE_SYMLINK    /* already throws error above */
+#ifdef HAVE_SYMLINK                /* already throws error above */
        if (symlink(alt_loc, nominal_loc) != 0)
 #endif
            ereport(ERROR,
@@ -450,7 +450,7 @@ dropdb(const char *dbname)
    char       *nominal_loc;
    char        dbpath[MAXPGPATH];
    Relation    pgdbrel;
-   SysScanDesc pgdbscan;
+   SysScanDesc pgdbscan;
    ScanKeyData key;
    HeapTuple   tup;
 
@@ -503,8 +503,8 @@ dropdb(const char *dbname)
    if (DatabaseHasActiveBackends(db_id, false))
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_IN_USE),
-                errmsg("database \"%s\" is being accessed by other users",
-                       dbname)));
+              errmsg("database \"%s\" is being accessed by other users",
+                     dbname)));
 
    /*
     * Find the database's tuple by OID (should be unique).
@@ -577,10 +577,13 @@ dropdb(const char *dbname)
 void
 RenameDatabase(const char *oldname, const char *newname)
 {
-   HeapTuple   tup, newtup;
+   HeapTuple   tup,
+               newtup;
    Relation    rel;
-   SysScanDesc scan, scan2;
-   ScanKeyData key, key2;
+   SysScanDesc scan,
+               scan2;
+   ScanKeyData key,
+               key2;
 
    /*
     * Obtain AccessExclusiveLock so that no new session gets started
@@ -610,15 +613,14 @@ RenameDatabase(const char *oldname, const char *newname)
                 errmsg("current database may not be renamed")));
 
    /*
-    * Make sure the database does not have active sessions.  Might
-    * not be necessary, but it's consistent with other database
-    * operations.
+    * Make sure the database does not have active sessions.  Might not be
+    * necessary, but it's consistent with other database operations.
     */
    if (DatabaseHasActiveBackends(HeapTupleGetOid(tup), false))
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_IN_USE),
-                errmsg("database \"%s\" is being accessed by other users",
-                       oldname)));
+              errmsg("database \"%s\" is being accessed by other users",
+                     oldname)));
 
    /* make sure the new name doesn't exist */
    ScanKeyEntryInitialize(&key2, 0, Anum_pg_database_datname,
@@ -651,10 +653,10 @@ RenameDatabase(const char *oldname, const char *newname)
    heap_close(rel, NoLock);
 
    /*
-    * Force dirty buffers out to disk, so that newly-connecting
-    * backends will see the renamed database in pg_database right
-    * away.  (They'll see an uncommitted tuple, but they don't care;
-    * see GetRawDatabaseInfo.)
+    * Force dirty buffers out to disk, so that newly-connecting backends
+    * will see the renamed database in pg_database right away.  (They'll
+    * see an uncommitted tuple, but they don't care; see
+    * GetRawDatabaseInfo.)
     */
    BufferSync();
 }
@@ -671,7 +673,7 @@ AlterDatabaseSet(AlterDatabaseSetStmt *stmt)
                newtuple;
    Relation    rel;
    ScanKeyData scankey;
-   SysScanDesc scan;
+   SysScanDesc scan;
    Datum       repl_val[Natts_pg_database];
    char        repl_null[Natts_pg_database];
    char        repl_repl[Natts_pg_database];
@@ -689,9 +691,9 @@ AlterDatabaseSet(AlterDatabaseSetStmt *stmt)
                 errmsg("database \"%s\" does not exist", stmt->dbname)));
 
    if (!(superuser()
-         || ((Form_pg_database) GETSTRUCT(tuple))->datdba == GetUserId()))
+       || ((Form_pg_database) GETSTRUCT(tuple))->datdba == GetUserId()))
        aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_DATABASE,
-                     stmt->dbname);
+                      stmt->dbname);
 
    MemSet(repl_repl, ' ', sizeof(repl_repl));
    repl_repl[Anum_pg_database_datconfig - 1] = 'r';
@@ -750,7 +752,7 @@ get_db_info(const char *name, Oid *dbIdP, int4 *ownerIdP,
 {
    Relation    relation;
    ScanKeyData scanKey;
-   SysScanDesc scan;
+   SysScanDesc scan;
    HeapTuple   tuple;
    bool        gottuple;
 
@@ -862,7 +864,7 @@ resolve_alt_dbpath(const char *dbpath, Oid dboid)
 #ifndef ALLOW_ABSOLUTE_DBPATHS
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("absolute paths are not allowed as database locations")));
+       errmsg("absolute paths are not allowed as database locations")));
 #endif
        prefix = dbpath;
    }
@@ -874,8 +876,8 @@ resolve_alt_dbpath(const char *dbpath, Oid dboid)
        if (!var)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_OBJECT),
-                    errmsg("postmaster environment variable \"%s\" not found",
-                           dbpath)));
+              errmsg("postmaster environment variable \"%s\" not found",
+                     dbpath)));
        if (!is_absolute_path(var))
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_NAME),
@@ -955,7 +957,7 @@ get_database_oid(const char *dbname)
 {
    Relation    pg_database;
    ScanKeyData entry[1];
-   SysScanDesc scan;
+   SysScanDesc scan;
    HeapTuple   dbtuple;
    Oid         oid;
 
@@ -993,7 +995,7 @@ get_database_name(Oid dbid)
 {
    Relation    pg_database;
    ScanKeyData entry[1];
-   SysScanDesc scan;
+   SysScanDesc scan;
    HeapTuple   dbtuple;
    char       *result;
 
index bf0c95a75efd74d40faa074c83e1f346cb4e627c..c924dcc7b77950291538b08c877d05e8ea15d5d1 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/define.c,v 1.82 2003/07/20 21:56:32 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/define.c,v 1.83 2003/08/04 00:43:16 momjian Exp $
  *
  * DESCRIPTION
  *   The "DefineFoo" routines take the parse tree and pick out the
@@ -51,7 +51,8 @@ case_translate_language_name(const char *input, char *output)
 {
    int         i;
 
-   MemSet(output, 0, NAMEDATALEN); /* ensure result Name is zero-filled */
+   MemSet(output, 0, NAMEDATALEN);     /* ensure result Name is
+                                        * zero-filled */
 
    for (i = 0; i < NAMEDATALEN - 1 && input[i]; ++i)
        output[i] = tolower((unsigned char) input[i]);
index bc137b0eaca49d1df95a611e56ce9e8bccf08dc2..916c1ff772f8cea6e95cff7e9dde73695b344a89 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994-5, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.111 2003/07/20 21:56:32 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.112 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -45,11 +45,11 @@ typedef struct ExplainState
 
 static void ExplainOneQuery(Query *query, ExplainStmt *stmt,
                TupOutputState *tstate);
-static double elapsed_time(struct timeval *starttime);
+static double elapsed_time(struct timeval * starttime);
 static void explain_outNode(StringInfo str,
-                           Plan *plan, PlanState *planstate,
-                           Plan *outer_plan,
-                           int indent, ExplainState *es);
+               Plan *plan, PlanState * planstate,
+               Plan *outer_plan,
+               int indent, ExplainState *es);
 static void show_scan_qual(List *qual, bool is_or_qual, const char *qlabel,
               int scanrelid, Plan *outer_plan,
               StringInfo str, int indent, ExplainState *es);
@@ -58,8 +58,8 @@ static void show_upper_qual(List *qual, const char *qlabel,
                const char *inner_name, int inner_varno, Plan *inner_plan,
                StringInfo str, int indent, ExplainState *es);
 static void show_sort_keys(List *tlist, int nkeys, AttrNumber *keycols,
-                          const char *qlabel,
-                          StringInfo str, int indent, ExplainState *es);
+              const char *qlabel,
+              StringInfo str, int indent, ExplainState *es);
 static Node *make_ors_ands_explicit(List *orclauses);
 
 /*
@@ -255,8 +255,8 @@ ExplainOnePlan(QueryDesc *queryDesc, ExplainStmt *stmt,
    }
 
    /*
-    * Close down the query and free resources.  Include time for this
-    * in the total runtime.
+    * Close down the query and free resources.  Include time for this in
+    * the total runtime.
     */
    gettimeofday(&starttime, NULL);
 
@@ -282,7 +282,7 @@ ExplainOnePlan(QueryDesc *queryDesc, ExplainStmt *stmt,
 
 /* Compute elapsed time in seconds since given gettimeofday() timestamp */
 static double
-elapsed_time(struct timeval *starttime)
+elapsed_time(struct timeval * starttime)
 {
    struct timeval endtime;
 
@@ -313,7 +313,7 @@ elapsed_time(struct timeval *starttime)
  */
 static void
 explain_outNode(StringInfo str,
-               Plan *plan, PlanState *planstate,
+               Plan *plan, PlanState * planstate,
                Plan *outer_plan,
                int indent, ExplainState *es)
 {
@@ -542,8 +542,8 @@ explain_outNode(StringInfo str,
                /*
                 * If the expression is still a function call, we can get
                 * the real name of the function.  Otherwise, punt (this
-                * can happen if the optimizer simplified away the function
-                * call, for example).
+                * can happen if the optimizer simplified away the
+                * function call, for example).
                 */
                if (rte->funcexpr && IsA(rte->funcexpr, FuncExpr))
                {
@@ -583,15 +583,13 @@ explain_outNode(StringInfo str,
            double      nloops = planstate->instrument->nloops;
 
            appendStringInfo(str, " (actual time=%.2f..%.2f rows=%.0f loops=%.0f)",
-                            1000.0 * planstate->instrument->startup / nloops,
-                            1000.0 * planstate->instrument->total / nloops,
+                       1000.0 * planstate->instrument->startup / nloops,
+                         1000.0 * planstate->instrument->total / nloops,
                             planstate->instrument->ntuples / nloops,
                             planstate->instrument->nloops);
        }
        else if (es->printAnalyze)
-       {
            appendStringInfo(str, " (never executed)");
-       }
    }
    appendStringInfoChar(str, '\n');
 
@@ -709,7 +707,7 @@ explain_outNode(StringInfo str,
        foreach(lst, planstate->initPlan)
        {
            SubPlanState *sps = (SubPlanState *) lfirst(lst);
-           SubPlan *sp = (SubPlan *) sps->xprstate.expr;
+           SubPlan    *sp = (SubPlan *) sps->xprstate.expr;
 
            es->rtable = sp->rtable;
            for (i = 0; i < indent; i++)
@@ -807,7 +805,7 @@ explain_outNode(StringInfo str,
        foreach(lst, planstate->subPlan)
        {
            SubPlanState *sps = (SubPlanState *) lfirst(lst);
-           SubPlan *sp = (SubPlan *) sps->xprstate.expr;
+           SubPlan    *sp = (SubPlan *) sps->xprstate.expr;
 
            es->rtable = sp->rtable;
            for (i = 0; i < indent; i++)
@@ -865,7 +863,7 @@ show_scan_qual(List *qual, bool is_or_qual, const char *qlabel,
     */
    if (outer_plan)
    {
-       Relids  varnos = pull_varnos(node);
+       Relids      varnos = pull_varnos(node);
 
        if (bms_is_member(OUTER, varnos))
            outercontext = deparse_context_for_subplan("outer",
@@ -1037,9 +1035,7 @@ make_ors_ands_explicit(List *orclauses)
 
        FastListInit(&args);
        foreach(orptr, orclauses)
-       {
            FastAppend(&args, make_ands_explicit(lfirst(orptr)));
-       }
 
        return (Node *) make_orclause(FastListValue(&args));
    }
index 7a6a3775d64a03582dbd74f5f570487d24798b86..181f52e114365e9a80bdaf8a54dffecb2baf000d 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.31 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.32 2003/08/04 00:43:16 momjian Exp $
  *
  * DESCRIPTION
  *   These routines take the parse tree and pick out the
@@ -80,8 +80,8 @@ compute_return_type(TypeName *returnType, Oid languageOid,
            if (languageOid == SQLlanguageId)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                        errmsg("SQL function cannot return shell type %s",
-                               TypeNameToString(returnType))));
+                      errmsg("SQL function cannot return shell type %s",
+                             TypeNameToString(returnType))));
            else
                ereport(NOTICE,
                        (errcode(ERRCODE_WRONG_OBJECT_TYPE),
@@ -147,8 +147,8 @@ compute_parameter_types(List *argTypes, Oid languageOid,
        if (parameterCount >= FUNC_MAX_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_TOO_MANY_ARGUMENTS),
-                    errmsg("functions cannot have more than %d arguments",
-                           FUNC_MAX_ARGS)));
+                  errmsg("functions cannot have more than %d arguments",
+                         FUNC_MAX_ARGS)));
 
        toid = LookupTypeName(t);
        if (OidIsValid(toid))
@@ -159,8 +159,8 @@ compute_parameter_types(List *argTypes, Oid languageOid,
                if (languageOid == SQLlanguageId)
                    ereport(ERROR,
                            (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                            errmsg("SQL function cannot accept shell type %s",
-                                   TypeNameToString(t))));
+                      errmsg("SQL function cannot accept shell type %s",
+                             TypeNameToString(t))));
                else
                    ereport(NOTICE,
                            (errcode(ERRCODE_WRONG_OBJECT_TYPE),
@@ -330,8 +330,8 @@ compute_attributes_with_style(List *parameters, bool *isStrict_p, char *volatili
        else
            ereport(WARNING,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("unrecognized function attribute \"%s\" ignored",
-                           param->defname)));
+                errmsg("unrecognized function attribute \"%s\" ignored",
+                       param->defname)));
    }
 }
 
@@ -558,7 +558,7 @@ RemoveFunction(RemoveFuncStmt *stmt)
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                 errmsg("\"%s\" is an aggregate function",
                        NameListToString(functionName)),
-                errhint("Use DROP AGGREGATE to drop aggregate functions.")));
+           errhint("Use DROP AGGREGATE to drop aggregate functions.")));
 
    if (((Form_pg_proc) GETSTRUCT(tup))->prolang == INTERNALlanguageId)
    {
@@ -664,7 +664,7 @@ RenameFunction(List *name, List *argtypes, const char *newname)
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                 errmsg("\"%s\" is an aggregate function",
                        NameListToString(name)),
-                errhint("Use ALTER AGGREGATE to rename aggregate functions.")));
+        errhint("Use ALTER AGGREGATE to rename aggregate functions.")));
 
    namespaceOid = procForm->pronamespace;
 
@@ -728,7 +728,7 @@ SetFunctionReturnType(Oid funcOid, Oid newRetType)
        elog(ERROR, "cache lookup failed for function %u", funcOid);
    procForm = (Form_pg_proc) GETSTRUCT(tup);
 
-   if (procForm->prorettype != OPAQUEOID) /* caller messed up */
+   if (procForm->prorettype != OPAQUEOID)      /* caller messed up */
        elog(ERROR, "function %u doesn't return OPAQUE", funcOid);
 
    /* okay to overwrite copied tuple */
@@ -815,7 +815,7 @@ CreateCast(CreateCastStmt *stmt)
    if (sourcetypeid == targettypeid)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                errmsg("source data type and target data type are the same")));
+         errmsg("source data type and target data type are the same")));
 
    /* No shells, no pseudo-types allowed */
    if (!get_typisdefined(sourcetypeid))
@@ -878,10 +878,11 @@ CreateCast(CreateCastStmt *stmt)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
                     errmsg("return data type of cast function must match target data type")));
+
        /*
         * Restricting the volatility of a cast function may or may not be
         * a good idea in the abstract, but it definitely breaks many old
-        * user-defined types.  Disable this check --- tgl 2/1/03
+        * user-defined types.  Disable this check --- tgl 2/1/03
         */
 #ifdef NOT_USED
        if (procstruct->provolatile == PROVOLATILE_VOLATILE)
@@ -892,7 +893,7 @@ CreateCast(CreateCastStmt *stmt)
        if (procstruct->proisagg)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                    errmsg("cast function must not be an aggregate function")));
+            errmsg("cast function must not be an aggregate function")));
        if (procstruct->proretset)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
@@ -902,12 +903,12 @@ CreateCast(CreateCastStmt *stmt)
    }
    else
    {
-       int16   typ1len;
-       int16   typ2len;
-       bool    typ1byval;
-       bool    typ2byval;
-       char    typ1align;
-       char    typ2align;
+       int16       typ1len;
+       int16       typ2len;
+       bool        typ1byval;
+       bool        typ2byval;
+       char        typ1align;
+       char        typ2align;
 
        /* indicates binary coercibility */
        funcid = InvalidOid;
@@ -924,7 +925,7 @@ CreateCast(CreateCastStmt *stmt)
        /*
         * Also, insist that the types match as to size, alignment, and
         * pass-by-value attributes; this provides at least a crude check
-        * that they have similar representations.  A pair of types that
+        * that they have similar representations.  A pair of types that
         * fail this test should certainly not be equated.
         */
        get_typlenbyvalalign(sourcetypeid, &typ1len, &typ1byval, &typ1align);
@@ -958,9 +959,9 @@ CreateCast(CreateCastStmt *stmt)
    relation = heap_openr(CastRelationName, RowExclusiveLock);
 
    /*
-    * Check for duplicate.  This is just to give a friendly error message,
-    * the unique index would catch it anyway (so no need to sweat about
-    * race conditions).
+    * Check for duplicate.  This is just to give a friendly error
+    * message, the unique index would catch it anyway (so no need to
+    * sweat about race conditions).
     */
    tuple = SearchSysCache(CASTSOURCETARGET,
                           ObjectIdGetDatum(sourcetypeid),
index 4cd66fd1b5dc7bcedce8071d703b62eca0cc983b..5e3cec954d39b57d9ead67a8137fe19495f1e831 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.103 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.104 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 /* non-export function prototypes */
 static void CheckPredicate(List *predList);
 static void ComputeIndexAttrs(IndexInfo *indexInfo, Oid *classOidP,
-              List *attList,
-              Oid relId,
-              char *accessMethodName, Oid accessMethodId);
+                 List *attList,
+                 Oid relId,
+                 char *accessMethodName, Oid accessMethodId);
 static Oid GetIndexOpClass(List *opclass, Oid attrType,
-              char *accessMethodName, Oid accessMethodId);
+               char *accessMethodName, Oid accessMethodId);
 static Oid GetDefaultOpClass(Oid attrType, Oid accessMethodId);
 
 /*
@@ -157,8 +157,8 @@ DefineIndex(RangeVar *heapRelation,
    if (unique && !accessMethodForm->amcanunique)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("access method \"%s\" does not support UNIQUE indexes",
-                       accessMethodName)));
+          errmsg("access method \"%s\" does not support UNIQUE indexes",
+                 accessMethodName)));
    if (numberOfAttributes > 1 && !accessMethodForm->amcanmulticol)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -192,16 +192,16 @@ DefineIndex(RangeVar *heapRelation,
    }
 
    /*
-    * Check that all of the attributes in a primary key are marked
-    * as not null, otherwise attempt to ALTER TABLE .. SET NOT NULL
+    * Check that all of the attributes in a primary key are marked as not
+    * null, otherwise attempt to ALTER TABLE .. SET NOT NULL
     */
    if (primary)
    {
-       List   *keys;
+       List       *keys;
 
        foreach(keys, attributeList)
        {
-           IndexElem   *key = (IndexElem *) lfirst(keys);
+           IndexElem  *key = (IndexElem *) lfirst(keys);
            HeapTuple   atttuple;
 
            if (!key->name)
@@ -216,15 +216,16 @@ DefineIndex(RangeVar *heapRelation,
            atttuple = SearchSysCacheAttName(relationId, key->name);
            if (HeapTupleIsValid(atttuple))
            {
-               if (! ((Form_pg_attribute) GETSTRUCT(atttuple))->attnotnull)
+               if (!((Form_pg_attribute) GETSTRUCT(atttuple))->attnotnull)
                {
                    /*
                     * Try to make it NOT NULL.
                     *
                     * XXX: Shouldn't the ALTER TABLE .. SET NOT NULL cascade
                     * to child tables?  Currently, since the PRIMARY KEY
-                    * itself doesn't cascade, we don't cascade the notnull
-                    * constraint either; but this is pretty debatable.
+                    * itself doesn't cascade, we don't cascade the
+                    * notnull constraint either; but this is pretty
+                    * debatable.
                     */
                    AlterTableAlterColumnSetNotNull(relationId, false,
                                                    key->name);
@@ -236,8 +237,8 @@ DefineIndex(RangeVar *heapRelation,
                /* This shouldn't happen if parser did its job ... */
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_COLUMN),
-                        errmsg("column \"%s\" named in key does not exist",
-                               key->name)));
+                     errmsg("column \"%s\" named in key does not exist",
+                            key->name)));
            }
        }
    }
@@ -248,7 +249,7 @@ DefineIndex(RangeVar *heapRelation,
     */
    indexInfo = makeNode(IndexInfo);
    indexInfo->ii_NumIndexAttrs = numberOfAttributes;
-   indexInfo->ii_Expressions = NIL; /* for now */
+   indexInfo->ii_Expressions = NIL;    /* for now */
    indexInfo->ii_ExpressionsState = NIL;
    indexInfo->ii_Predicate = cnfPred;
    indexInfo->ii_PredicateState = NIL;
@@ -308,7 +309,7 @@ CheckPredicate(List *predList)
    if (contain_mutable_functions((Node *) predList))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                errmsg("functions in index predicate must be marked IMMUTABLE")));
+       errmsg("functions in index predicate must be marked IMMUTABLE")));
 }
 
 static void
@@ -351,7 +352,7 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
        else if (attribute->expr && IsA(attribute->expr, Var))
        {
            /* Tricky tricky, he wrote (column) ... treat as simple attr */
-           Var    *var = (Var *) attribute->expr;
+           Var        *var = (Var *) attribute->expr;
 
            indexInfo->ii_KeyAttrNumbers[attn] = var->varattno;
            atttype = get_atttype(relId, var->varattno);
@@ -360,30 +361,30 @@ ComputeIndexAttrs(IndexInfo *indexInfo,
        {
            /* Index expression */
            Assert(attribute->expr != NULL);
-           indexInfo->ii_KeyAttrNumbers[attn] = 0; /* marks expression */
+           indexInfo->ii_KeyAttrNumbers[attn] = 0;     /* marks expression */
            indexInfo->ii_Expressions = lappend(indexInfo->ii_Expressions,
                                                attribute->expr);
            atttype = exprType(attribute->expr);
 
            /*
-            * We don't currently support generation of an actual query plan
-            * for an index expression, only simple scalar expressions;
-            * hence these restrictions.
+            * We don't currently support generation of an actual query
+            * plan for an index expression, only simple scalar
+            * expressions; hence these restrictions.
             */
            if (contain_subplans(attribute->expr))
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("cannot use sub-select in index expression")));
+                  errmsg("cannot use sub-select in index expression")));
            if (contain_agg_clause(attribute->expr))
                ereport(ERROR,
                        (errcode(ERRCODE_GROUPING_ERROR),
-                        errmsg("cannot use aggregate in index expression")));
+                   errmsg("cannot use aggregate in index expression")));
 
            /*
             * A expression using mutable functions is probably wrong,
-            * since if you aren't going to get the same result for the same
-            * data every time, it's not clear what the index entries mean at
-            * all.
+            * since if you aren't going to get the same result for the
+            * same data every time, it's not clear what the index entries
+            * mean at all.
             */
            if (contain_mutable_functions(attribute->expr))
                ereport(ERROR,
@@ -413,21 +414,20 @@ GetIndexOpClass(List *opclass, Oid attrType,
                opInputType;
 
    /*
-    * Release 7.0 removed network_ops, timespan_ops, and
-    * datetime_ops, so we ignore those opclass names
-    * so the default *_ops is used.  This can be
-    * removed in some later release.  bjm 2000/02/07
+    * Release 7.0 removed network_ops, timespan_ops, and datetime_ops, so
+    * we ignore those opclass names so the default *_ops is used.  This
+    * can be removed in some later release.  bjm 2000/02/07
     *
-    * Release 7.1 removes lztext_ops, so suppress that too
-    * for a while.  tgl 2000/07/30
+    * Release 7.1 removes lztext_ops, so suppress that too for a while.  tgl
+    * 2000/07/30
     *
-    * Release 7.2 renames timestamp_ops to timestamptz_ops,
-    * so suppress that too for awhile.  I'm starting to
-    * think we need a better approach.  tgl 2000/10/01
+    * Release 7.2 renames timestamp_ops to timestamptz_ops, so suppress that
+    * too for awhile.  I'm starting to think we need a better approach.
+    * tgl 2000/10/01
     */
    if (length(opclass) == 1)
    {
-       char   *claname = strVal(lfirst(opclass));
+       char       *claname = strVal(lfirst(opclass));
 
        if (strcmp(claname, "network_ops") == 0 ||
            strcmp(claname, "timespan_ops") == 0 ||
@@ -499,8 +499,8 @@ GetIndexOpClass(List *opclass, Oid attrType,
    if (!IsBinaryCoercible(attrType, opInputType))
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("operator class \"%s\" does not accept data type %s",
-                       NameListToString(opclass), format_type_be(attrType))));
+            errmsg("operator class \"%s\" does not accept data type %s",
+                 NameListToString(opclass), format_type_be(attrType))));
 
    ReleaseSysCache(tuple);
 
@@ -607,7 +607,7 @@ ReindexIndex(RangeVar *indexRelation, bool force /* currently unused */ )
    tuple = SearchSysCache(RELOID,
                           ObjectIdGetDatum(indOid),
                           0, 0, 0);
-   if (!HeapTupleIsValid(tuple)) /* shouldn't happen */
+   if (!HeapTupleIsValid(tuple))       /* shouldn't happen */
        elog(ERROR, "cache lookup failed for relation %u", indOid);
 
    if (((Form_pg_class) GETSTRUCT(tuple))->relkind != RELKIND_INDEX)
@@ -785,7 +785,8 @@ ReindexDatabase(const char *dbname, bool force, bool all)
    for (i = 0; i < relcnt; i++)
    {
        StartTransactionCommand();
-       SetQuerySnapshot();     /* might be needed for functions in indexes */
+       SetQuerySnapshot();     /* might be needed for functions in
+                                * indexes */
        if (reindex_relation(relids[i], force))
            ereport(NOTICE,
                    (errmsg("relation %u was reindexed", relids[i])));
index 60b041466f1a923af1096a60ab7961e6f62272b5..52792bc31abd9d97bcf3e7b45cd69cf13b050d7e 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/opclasscmds.c,v 1.15 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/opclasscmds.c,v 1.16 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -103,13 +103,13 @@ DefineOpClass(CreateOpClassStmt *stmt)
     * Currently, we require superuser privileges to create an opclass.
     * This seems necessary because we have no way to validate that the
     * offered set of operators and functions are consistent with the AM's
-    * expectations.  It would be nice to provide such a check someday,
-    * if it can be done without solving the halting problem :-(
+    * expectations.  It would be nice to provide such a check someday, if
+    * it can be done without solving the halting problem :-(
     */
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to create an operator class")));
+              errmsg("must be superuser to create an operator class")));
 
    /* Look up the datatype */
    typeoid = typenameTypeId(stmt->datatype);
@@ -157,8 +157,8 @@ DefineOpClass(CreateOpClassStmt *stmt)
                if (operators[item->number - 1] != InvalidOid)
                    ereport(ERROR,
                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                            errmsg("operator number %d appears more than once",
-                                   item->number)));
+                     errmsg("operator number %d appears more than once",
+                            item->number)));
                if (item->args != NIL)
                {
                    TypeName   *typeName1 = (TypeName *) lfirst(item->args);
@@ -211,7 +211,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
                if (OidIsValid(storageoid))
                    ereport(ERROR,
                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                            errmsg("storage type specified more than once")));
+                      errmsg("storage type specified more than once")));
                storageoid = typenameTypeId(item->storedtype);
                break;
            default:
@@ -532,7 +532,7 @@ RemoveOpClass(RemoveOpClassStmt *stmt)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
                 errmsg("operator class \"%s\" does not exist for access method \"%s\"",
-                       NameListToString(stmt->opclassname), stmt->amname)));
+                   NameListToString(stmt->opclassname), stmt->amname)));
 
    opcID = HeapTupleGetOid(tuple);
 
@@ -681,7 +681,7 @@ RenameOpClass(List *name, const char *access_method, const char *newname)
        tup = SearchSysCacheCopy(CLAOID,
                                 ObjectIdGetDatum(opcOid),
                                 0, 0, 0);
-       if (!HeapTupleIsValid(tup)) /* should not happen */
+       if (!HeapTupleIsValid(tup))     /* should not happen */
            elog(ERROR, "cache lookup failed for opclass %u", opcOid);
 
        namespaceOid = ((Form_pg_opclass) GETSTRUCT(tup))->opcnamespace;
index 6a4d479c1217225f6317f7199ec6300318b2876d..ddc088fe2f5bd3a67a6c01f4b263c263a57c1f0c 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/operatorcmds.c,v 1.10 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/operatorcmds.c,v 1.11 2003/08/04 00:43:16 momjian Exp $
  *
  * DESCRIPTION
  *   The "DefineFoo" routines take the parse tree and pick out the
@@ -103,7 +103,7 @@ DefineOperator(List *names, List *parameters)
            if (typeName1->setof)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                        errmsg("setof type not allowed for operator argument")));
+               errmsg("setof type not allowed for operator argument")));
        }
        else if (strcasecmp(defel->defname, "rightarg") == 0)
        {
@@ -111,7 +111,7 @@ DefineOperator(List *names, List *parameters)
            if (typeName2->setof)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_FUNCTION_DEFINITION),
-                        errmsg("setof type not allowed for operator argument")));
+               errmsg("setof type not allowed for operator argument")));
        }
        else if (strcasecmp(defel->defname, "procedure") == 0)
            functionName = defGetQualifiedName(defel);
index cf4a0638717a452a65e1855508c20b914704ff40..aa5a5b9ea610bf72ea2b757c7070e0fd5d0132fd 100644 (file)
@@ -4,17 +4,17 @@
  *   Utility commands affecting portals (that is, SQL cursor commands)
  *
  * Note: see also tcop/pquery.c, which implements portal operations for
- * the FE/BE protocol.  This module uses pquery.c for some operations.
+ * the FE/BE protocol. This module uses pquery.c for some operations.
  * And both modules depend on utils/mmgr/portalmem.c, which controls
  * storage management for portals (but doesn't run any queries in them).
- * 
+ *
  *
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/portalcmds.c,v 1.19 2003/08/01 13:53:36 petere Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/portalcmds.c,v 1.20 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,7 +36,7 @@
  *     Execute SQL DECLARE CURSOR command.
  */
 void
-PerformCursorOpen(DeclareCursorStmt *stmt)
+PerformCursorOpen(DeclareCursorStmt * stmt)
 {
    List       *rewritten;
    Query      *query;
@@ -64,7 +64,8 @@ PerformCursorOpen(DeclareCursorStmt *stmt)
    /*
     * The query has been through parse analysis, but not rewriting or
     * planning as yet.  Note that the grammar ensured we have a SELECT
-    * query, so we are not expecting rule rewriting to do anything strange.
+    * query, so we are not expecting rule rewriting to do anything
+    * strange.
     */
    rewritten = QueryRewrite((Query *) stmt->query);
    if (length(rewritten) != 1 || !IsA(lfirst(rewritten), Query))
@@ -86,8 +87,9 @@ PerformCursorOpen(DeclareCursorStmt *stmt)
    plan = planner(query, true, stmt->options);
 
    /*
-    * Create a portal and copy the query and plan into its memory context.
-    * (If a duplicate cursor name already exists, warn and drop it.)
+    * Create a portal and copy the query and plan into its memory
+    * context. (If a duplicate cursor name already exists, warn and drop
+    * it.)
     */
    portal = CreatePortal(stmt->portalname, true, false);
 
@@ -98,7 +100,7 @@ PerformCursorOpen(DeclareCursorStmt *stmt)
 
    PortalDefineQuery(portal,
                      NULL,     /* unfortunately don't have sourceText */
-                     "SELECT", /* cursor's query is always a SELECT */
+                     "SELECT", /* cursor's query is always a SELECT */
                      makeList1(query),
                      makeList1(plan),
                      PortalGetHeapMemory(portal));
@@ -108,9 +110,9 @@ PerformCursorOpen(DeclareCursorStmt *stmt)
    /*
     * Set up options for portal.
     *
-    * If the user didn't specify a SCROLL type, allow or disallow
-    * scrolling based on whether it would require any additional
-    * runtime overhead to do so.
+    * If the user didn't specify a SCROLL type, allow or disallow scrolling
+    * based on whether it would require any additional runtime overhead
+    * to do so.
     */
    portal->cursorOptions = stmt->options;
    if (!(portal->cursorOptions & (CURSOR_OPT_SCROLL | CURSOR_OPT_NO_SCROLL)))
@@ -129,8 +131,8 @@ PerformCursorOpen(DeclareCursorStmt *stmt)
    Assert(portal->strategy == PORTAL_ONE_SELECT);
 
    /*
-    * We're done; the query won't actually be run until PerformPortalFetch
-    * is called.
+    * We're done; the query won't actually be run until
+    * PerformPortalFetch is called.
     */
 }
 
@@ -169,7 +171,7 @@ PerformPortalFetch(FetchStmt *stmt,
        /* FIXME: shouldn't this be an ERROR? */
        ereport(WARNING,
                (errcode(ERRCODE_UNDEFINED_CURSOR),
-                errmsg("portal \"%s\" does not exist", stmt->portalname)));
+             errmsg("portal \"%s\" does not exist", stmt->portalname)));
        if (completionTag)
            strcpy(completionTag, stmt->ismove ? "MOVE 0" : "FETCH 0");
        return;
@@ -219,7 +221,7 @@ PerformPortalClose(const char *name)
        ereport(WARNING,
                (errcode(ERRCODE_UNDEFINED_CURSOR),
                 errmsg("portal \"%s\" does not exist", name),
-                errfunction("PerformPortalClose"))); /* for ecpg */
+                errfunction("PerformPortalClose")));   /* for ecpg */
        return;
    }
 
@@ -249,7 +251,8 @@ PortalCleanup(Portal portal, bool isError)
    /*
     * Shut down executor, if still running.  We skip this during error
     * abort, since other mechanisms will take care of releasing executor
-    * resources, and we can't be sure that ExecutorEnd itself wouldn't fail.
+    * resources, and we can't be sure that ExecutorEnd itself wouldn't
+    * fail.
     */
    queryDesc = PortalGetQueryDesc(portal);
    if (queryDesc)
@@ -271,14 +274,14 @@ PortalCleanup(Portal portal, bool isError)
 void
 PersistHoldablePortal(Portal portal)
 {
-   QueryDesc *queryDesc = PortalGetQueryDesc(portal);
+   QueryDesc  *queryDesc = PortalGetQueryDesc(portal);
    MemoryContext savePortalContext;
    MemoryContext saveQueryContext;
    MemoryContext oldcxt;
 
    /*
-    * If we're preserving a holdable portal, we had better be
-    * inside the transaction that originally created it.
+    * If we're preserving a holdable portal, we had better be inside the
+    * transaction that originally created it.
     */
    Assert(portal->createXact == GetCurrentTransactionId());
    Assert(queryDesc != NULL);
@@ -321,9 +324,8 @@ PersistHoldablePortal(Portal portal)
    MemoryContextSwitchTo(PortalContext);
 
    /*
-    * Rewind the executor: we need to store the entire result set in
-    * the tuplestore, so that subsequent backward FETCHs can be
-    * processed.
+    * Rewind the executor: we need to store the entire result set in the
+    * tuplestore, so that subsequent backward FETCHs can be processed.
     */
    ExecutorRewind(queryDesc);
 
@@ -351,17 +353,17 @@ PersistHoldablePortal(Portal portal)
    /*
     * Reset the position in the result set: ideally, this could be
     * implemented by just skipping straight to the tuple # that we need
-    * to be at, but the tuplestore API doesn't support that. So we
-    * start at the beginning of the tuplestore and iterate through it
-    * until we reach where we need to be.  FIXME someday?
+    * to be at, but the tuplestore API doesn't support that. So we start
+    * at the beginning of the tuplestore and iterate through it until we
+    * reach where we need to be.  FIXME someday?
     */
    MemoryContextSwitchTo(portal->holdContext);
 
    if (!portal->atEnd)
    {
-       long    store_pos;
+       long        store_pos;
 
-       if (portal->posOverflow)        /* oops, cannot trust portalPos */
+       if (portal->posOverflow)    /* oops, cannot trust portalPos */
            ereport(ERROR,
                    (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
                     errmsg("could not reposition held cursor")));
@@ -370,8 +372,8 @@ PersistHoldablePortal(Portal portal)
 
        for (store_pos = 0; store_pos < portal->portalPos; store_pos++)
        {
-           HeapTuple tup;
-           bool should_free;
+           HeapTuple   tup;
+           bool        should_free;
 
            tup = tuplestore_gettuple(portal->holdStore, true,
                                      &should_free);
@@ -389,8 +391,8 @@ PersistHoldablePortal(Portal portal)
    /*
     * We can now release any subsidiary memory of the portal's heap
     * context; we'll never use it again.  The executor already dropped
-    * its context, but this will clean up anything that glommed onto
-    * the portal's heap via PortalContext.
+    * its context, but this will clean up anything that glommed onto the
+    * portal's heap via PortalContext.
     */
    MemoryContextDeleteChildren(PortalGetHeapMemory(portal));
 }
index cd58d7fc7b6867e406cceb9f33fa624768e2c1fb..d0fabd1ad311bbacc915fd45b5b2711d5d1e43e8 100644 (file)
@@ -10,7 +10,7 @@
  * Copyright (c) 2002-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/prepare.c,v 1.21 2003/07/28 00:09:14 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/prepare.c,v 1.22 2003/08/04 00:43:16 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -39,7 +39,7 @@ static HTAB *prepared_queries = NULL;
 
 static void InitQueryHashTable(void);
 static ParamListInfo EvaluateParams(EState *estate,
-                                   List *params, List *argtypes);
+              List *params, List *argtypes);
 
 /*
  * Implements the 'PREPARE' utility statement.
@@ -90,12 +90,12 @@ PrepareQuery(PrepareStmt *stmt)
    /* Rewrite the query. The result could be 0, 1, or many queries. */
    query_list = QueryRewrite(stmt->query);
 
-   /* Generate plans for queries.  Snapshot is already set. */
+   /* Generate plans for queries.  Snapshot is already set. */
    plan_list = pg_plan_queries(query_list, false);
 
    /* Save the results. */
    StorePreparedStatement(stmt->name,
-                          NULL, /* text form not available */
+                          NULL,    /* text form not available */
                           commandTag,
                           query_list,
                           plan_list,
@@ -131,8 +131,8 @@ ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest)
    if (entry->argtype_list != NIL)
    {
        /*
-        * Need an EState to evaluate parameters; must not delete it
-        * till end of query, in case parameters are pass-by-reference.
+        * Need an EState to evaluate parameters; must not delete it till
+        * end of query, in case parameters are pass-by-reference.
         */
        estate = CreateExecutorState();
        paramLI = EvaluateParams(estate, stmt->params, entry->argtype_list);
@@ -144,15 +144,15 @@ ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest)
    portal = CreateNewPortal();
 
    /*
-    * For CREATE TABLE / AS EXECUTE, make a copy of the stored query
-    * so that we can modify its destination (yech, but this has
-    * always been ugly).  For regular EXECUTE we can just use the
-    * stored query where it sits, since the executor is read-only.
+    * For CREATE TABLE / AS EXECUTE, make a copy of the stored query so
+    * that we can modify its destination (yech, but this has always been
+    * ugly).  For regular EXECUTE we can just use the stored query where
+    * it sits, since the executor is read-only.
     */
    if (stmt->into)
    {
        MemoryContext oldContext;
-       Query  *query;
+       Query      *query;
 
        oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
 
@@ -208,11 +208,11 @@ ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest)
 static ParamListInfo
 EvaluateParams(EState *estate, List *params, List *argtypes)
 {
-   int             nargs = length(argtypes);
-   ParamListInfo   paramLI;
-   List           *exprstates;
-   List           *l;
-   int             i = 0;
+   int         nargs = length(argtypes);
+   ParamListInfo paramLI;
+   List       *exprstates;
+   List       *l;
+   int         i = 0;
 
    /* Parser should have caught this error, but check for safety */
    if (length(params) != nargs)
@@ -229,7 +229,7 @@ EvaluateParams(EState *estate, List *params, List *argtypes)
        bool        isNull;
 
        paramLI[i].value = ExecEvalExprSwitchContext(n,
-                                                    GetPerTupleExprContext(estate),
+                                         GetPerTupleExprContext(estate),
                                                     &isNull,
                                                     NULL);
        paramLI[i].kind = PARAM_NUM;
@@ -273,7 +273,7 @@ InitQueryHashTable(void)
  * to the hash entry, so the caller can dispose of their copy.
  *
  * Exception: commandTag is presumed to be a pointer to a constant string,
- * or possibly NULL, so it need not be copied.  Note that commandTag should
+ * or possibly NULL, so it need not be copied. Note that commandTag should
  * be NULL only if the original query (before rewriting) was empty.
  */
 void
@@ -367,9 +367,9 @@ FetchPreparedStatement(const char *stmt_name, bool throwError)
    if (prepared_queries)
    {
        /*
-        * We can't just use the statement name as supplied by the user: the
-        * hash package is picky enough that it needs to be NULL-padded out to
-        * the appropriate length to work correctly.
+        * We can't just use the statement name as supplied by the user:
+        * the hash package is picky enough that it needs to be
+        * NULL-padded out to the appropriate length to work correctly.
         */
        MemSet(key, 0, sizeof(key));
        strncpy(key, stmt_name, sizeof(key));
@@ -412,9 +412,9 @@ FetchPreparedStatementParams(const char *stmt_name)
  * Note: the result is created or copied into current memory context.
  */
 TupleDesc
-FetchPreparedStatementResultDesc(PreparedStatement *stmt)
+FetchPreparedStatementResultDesc(PreparedStatement * stmt)
 {
-   Query  *query;
+   Query      *query;
 
    switch (ChoosePortalStrategy(stmt->query_list))
    {
@@ -476,7 +476,7 @@ DropPreparedStatement(const char *stmt_name, bool showError)
 void
 ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate)
 {
-   ExecuteStmt    *execstmt = (ExecuteStmt *) stmt->query->utilityStmt;
+   ExecuteStmt *execstmt = (ExecuteStmt *) stmt->query->utilityStmt;
    PreparedStatement *entry;
    List       *l,
               *query_list,
@@ -499,8 +499,8 @@ ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate)
    if (entry->argtype_list != NIL)
    {
        /*
-        * Need an EState to evaluate parameters; must not delete it
-        * till end of query, in case parameters are pass-by-reference.
+        * Need an EState to evaluate parameters; must not delete it till
+        * end of query, in case parameters are pass-by-reference.
         */
        estate = CreateExecutorState();
        paramLI = EvaluateParams(estate, execstmt->params,
@@ -510,8 +510,8 @@ ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate)
    /* Explain each query */
    foreach(l, query_list)
    {
-       Query     *query = (Query *) lfirst(l);
-       Plan      *plan = (Plan *) lfirst(plan_list);
+       Query      *query = (Query *) lfirst(l);
+       Plan       *plan = (Plan *) lfirst(plan_list);
        bool        is_last_query;
 
        plan_list = lnext(plan_list);
@@ -533,7 +533,7 @@ ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate)
                if (query->commandType != CMD_SELECT)
                    ereport(ERROR,
                            (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                            errmsg("prepared statement is not a SELECT")));
+                         errmsg("prepared statement is not a SELECT")));
 
                /* Copy the query so we can modify it */
                query = copyObject(query);
index 69000b29bc76476382f3db690b523dfd948b40a2..b0a4702a7158475f134f2cc7335b5ac91ac0b7a3 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.47 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.48 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -60,7 +60,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to create procedural language")));
+            errmsg("must be superuser to create procedural language")));
 
    /*
     * Translate the language name and check that this language doesn't
@@ -85,7 +85,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
    if (funcrettype != LANGUAGE_HANDLEROID)
    {
        /*
-        * We allow OPAQUE just so we can load old dump files.  When we
+        * We allow OPAQUE just so we can load old dump files.  When we
         * see a handler function declared OPAQUE, change it to
         * LANGUAGE_HANDLER.
         */
@@ -183,7 +183,7 @@ DropProceduralLanguage(DropPLangStmt *stmt)
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to drop procedural language")));
+              errmsg("must be superuser to drop procedural language")));
 
    /*
     * Translate the language name, check that this language exist and is
@@ -225,7 +225,7 @@ DropProceduralLanguageById(Oid langOid)
    langTup = SearchSysCache(LANGOID,
                             ObjectIdGetDatum(langOid),
                             0, 0, 0);
-   if (!HeapTupleIsValid(langTup)) /* should not happen */
+   if (!HeapTupleIsValid(langTup))     /* should not happen */
        elog(ERROR, "cache lookup failed for language %u", langOid);
 
    simple_heap_delete(rel, &langTup->t_self);
@@ -266,7 +266,7 @@ RenameLanguage(const char *oldname, const char *newname)
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to rename procedural language")));
+            errmsg("must be superuser to rename procedural language")));
 
    /* rename */
    namestrcpy(&(((Form_pg_language) GETSTRUCT(tup))->lanname), newname);
index 5ad81634f4157750fc3cfcb91608566b57161009..4eb285daa33075664bd9e5dc7bca5ccb7b125665 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/schemacmds.c,v 1.14 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/schemacmds.c,v 1.15 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -98,7 +98,7 @@ CreateSchemaCommand(CreateSchemaStmt *stmt)
        ereport(ERROR,
                (errcode(ERRCODE_RESERVED_NAME),
                 errmsg("unacceptable schema name \"%s\"", schemaName),
-                errdetail("The prefix \"pg_\" is reserved for system schemas.")));
+       errdetail("The prefix \"pg_\" is reserved for system schemas.")));
 
    /* Create the schema's namespace */
    namespaceId = NamespaceCreate(schemaName, owner_userid);
@@ -215,7 +215,7 @@ RemoveSchemaById(Oid schemaOid)
    tup = SearchSysCache(NAMESPACEOID,
                         ObjectIdGetDatum(schemaOid),
                         0, 0, 0);
-   if (!HeapTupleIsValid(tup)) /* should not happen */
+   if (!HeapTupleIsValid(tup)) /* should not happen */
        elog(ERROR, "cache lookup failed for namespace %u", schemaOid);
 
    simple_heap_delete(relation, &tup->t_self);
@@ -248,9 +248,9 @@ RenameSchema(const char *oldname, const char *newname)
 
    /* make sure the new name doesn't exist */
    if (HeapTupleIsValid(
-           SearchSysCache(NAMESPACENAME,
-                          CStringGetDatum(newname),
-                          0, 0, 0)))
+                        SearchSysCache(NAMESPACENAME,
+                                       CStringGetDatum(newname),
+                                       0, 0, 0)))
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_SCHEMA),
                 errmsg("schema \"%s\" already exists", newname)));
@@ -270,7 +270,7 @@ RenameSchema(const char *oldname, const char *newname)
        ereport(ERROR,
                (errcode(ERRCODE_RESERVED_NAME),
                 errmsg("unacceptable schema name \"%s\"", newname),
-                errdetail("The prefix \"pg_\" is reserved for system schemas.")));
+       errdetail("The prefix \"pg_\" is reserved for system schemas.")));
 
    /* rename */
    namestrcpy(&(((Form_pg_namespace) GETSTRUCT(tup))->nspname), newname);
index 7ce7810fbca87850698238aabc8b4a4e201cd951..01544a015b35396ed7fa52d09d0916d402b283ea 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.99 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.100 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,7 +68,7 @@ static SeqTable seqtab = NULL;    /* Head of list of SeqTable items */
 
 
 static void init_sequence(RangeVar *relation,
-                         SeqTable *p_elm, Relation *p_rel);
+             SeqTable *p_elm, Relation *p_rel);
 static Form_pg_sequence read_info(SeqTable elm, Relation rel, Buffer *buf);
 static void init_params(List *options, Form_pg_sequence new);
 static void do_setval(RangeVar *sequence, int64 next, bool iscalled);
@@ -97,10 +97,10 @@ DefineSequence(CreateSeqStmt *seq)
    /* Values are NULL (or false) by default */
    new.last_value = 0;
    new.increment_by = 0;
-   new.max_value = 0; 
+   new.max_value = 0;
    new.min_value = 0;
    new.cache_value = 0;
-   new.is_cycled = false; 
+   new.is_cycled = false;
 
    /* Check and set values */
    init_params(seq->options, &new);
@@ -299,10 +299,10 @@ DefineSequence(CreateSeqStmt *seq)
 /*
  * AlterSequence
  *
- * Modify the defition of a sequence relation 
+ * Modify the defition of a sequence relation
  */
 void
-AlterSequence(AlterSeqStmt *stmt)
+AlterSequence(AlterSeqStmt * stmt)
 {
    SeqTable    elm;
    Relation    seqrel;
@@ -324,7 +324,7 @@ AlterSequence(AlterSeqStmt *stmt)
    page = BufferGetPage(buf);
 
    new.increment_by = seq->increment_by;
-   new.max_value = seq->max_value; 
+   new.max_value = seq->max_value;
    new.min_value = seq->min_value;
    new.cache_value = seq->cache_value;
    new.is_cycled = seq->is_cycled;
@@ -346,9 +346,9 @@ AlterSequence(AlterSeqStmt *stmt)
    }
 
    /* save info in local cache */
-   elm->last = new.last_value;     /* last returned number */
-   elm->cached = new.last_value;   /* last cached number (forget cached
-                                    * values) */
+   elm->last = new.last_value; /* last returned number */
+   elm->cached = new.last_value;       /* last cached number (forget
+                                        * cached values) */
 
    START_CRIT_SECTION();
 
@@ -494,9 +494,9 @@ nextval(PG_FUNCTION_ARGS)
 
                    snprintf(buf, sizeof(buf), INT64_FORMAT, maxv);
                    ereport(ERROR,
-                           (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                            errmsg("%s.nextval: reached MAXVALUE (%s)",
-                                   sequence->relname, buf)));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("%s.nextval: reached MAXVALUE (%s)",
+                             sequence->relname, buf)));
                }
                next = minv;
            }
@@ -517,9 +517,9 @@ nextval(PG_FUNCTION_ARGS)
 
                    snprintf(buf, sizeof(buf), INT64_FORMAT, minv);
                    ereport(ERROR,
-                           (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                            errmsg("%s.nextval: reached MINVALUE (%s)",
-                                   sequence->relname, buf)));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("%s.nextval: reached MINVALUE (%s)",
+                             sequence->relname, buf)));
                }
                next = maxv;
            }
@@ -895,9 +895,9 @@ init_params(List *options, Form_pg_sequence new)
                         errmsg("conflicting or redundant options")));
            increment_by = defel;
        }
+
        /*
-        * start is for a new sequence
-        * restart is for alter
+        * start is for a new sequence restart is for alter
         */
        else if (strcmp(defel->defname, "start") == 0 ||
                 strcmp(defel->defname, "restart") == 0)
@@ -963,9 +963,9 @@ init_params(List *options, Form_pg_sequence new)
        || (max_value != (DefElem *) NULL && !max_value->arg))
    {
        if (new->increment_by > 0)
-           new->max_value = SEQ_MAXVALUE;  /* ascending seq */
+           new->max_value = SEQ_MAXVALUE;      /* ascending seq */
        else
-           new->max_value = -1;            /* descending seq */
+           new->max_value = -1;    /* descending seq */
    }
    else if (max_value != (DefElem *) NULL)
        new->max_value = defGetInt64(max_value);
@@ -975,9 +975,9 @@ init_params(List *options, Form_pg_sequence new)
        || (min_value != (DefElem *) NULL && !min_value->arg))
    {
        if (new->increment_by > 0)
-           new->min_value = 1;             /* ascending seq */
+           new->min_value = 1; /* ascending seq */
        else
-           new->min_value = SEQ_MINVALUE;  /* descending seq */
+           new->min_value = SEQ_MINVALUE;      /* descending seq */
    }
    else if (min_value != (DefElem *) NULL)
        new->min_value = defGetInt64(min_value);
@@ -996,7 +996,7 @@ init_params(List *options, Form_pg_sequence new)
    }
 
    /* START WITH */
-   if (new->last_value == 0 && last_value == (DefElem *) NULL) 
+   if (new->last_value == 0 && last_value == (DefElem *) NULL)
    {
        if (new->increment_by > 0)
            new->last_value = new->min_value;   /* ascending seq */
@@ -1015,8 +1015,8 @@ init_params(List *options, Form_pg_sequence new)
        snprintf(bufm, sizeof(bufm), INT64_FORMAT, new->min_value);
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("START value (%s) can't be less than MINVALUE (%s)",
-                       bufs, bufm)));
+             errmsg("START value (%s) can't be less than MINVALUE (%s)",
+                    bufs, bufm)));
    }
    if (new->last_value > new->max_value)
    {
@@ -1027,8 +1027,8 @@ init_params(List *options, Form_pg_sequence new)
        snprintf(bufm, sizeof(bufm), INT64_FORMAT, new->max_value);
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("START value (%s) can't be greater than MAXVALUE (%s)",
-                       bufs, bufm)));
+          errmsg("START value (%s) can't be greater than MAXVALUE (%s)",
+                 bufs, bufm)));
    }
 
    /* CACHE */
index b3108053d9d9b937afe2a4b1df077004f6d6f42e..6e503fdac543453a015f451096b9ff48d12c7f9a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.76 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.77 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
  */
 typedef struct OnCommitItem
 {
-   Oid             relid;          /* relid of relation */
-   OnCommitAction  oncommit;       /* what to do at end of xact */
+   Oid         relid;          /* relid of relation */
+   OnCommitAction oncommit;    /* what to do at end of xact */
 
    /*
     * If this entry was created during this xact, it should be deleted at
     * xact abort.  Conversely, if this entry was deleted during this
     * xact, it should be removed at xact commit.  We leave deleted
-    * entries in the list until commit so that we can roll back if needed.
+    * entries in the list until commit so that we can roll back if
+    * needed.
     */
    bool        created_in_cur_xact;
    bool        deleted_in_cur_xact;
-} OnCommitItem;
+}  OnCommitItem;
 
 static List *on_commits = NIL;
 
@@ -82,14 +83,14 @@ static void setRelhassubclassInRelation(Oid relationId, bool relhassubclass);
 static bool needs_toast_table(Relation rel);
 static void AlterTableAddCheckConstraint(Relation rel, Constraint *constr);
 static void AlterTableAddForeignKeyConstraint(Relation rel,
-                                             FkConstraint *fkconstraint);
+                                 FkConstraint *fkconstraint);
 static int transformColumnNameList(Oid relId, List *colList,
-                                  int16 *attnums, Oid *atttypids);
+                       int16 *attnums, Oid *atttypids);
 static int transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid,
-                                     List **attnamelist,
-                                     int16 *attnums, Oid *atttypids);
-static Oid transformFkeyCheckAttrs(Relation pkrel,
-                                   int numattrs, int16 *attnums);
+                          List **attnamelist,
+                          int16 *attnums, Oid *atttypids);
+static Oid transformFkeyCheckAttrs(Relation pkrel,
+                       int numattrs, int16 *attnums);
 static void validateForeignKeyConstraint(FkConstraint *fkconstraint,
                             Relation rel, Relation pkrel);
 static void createForeignKeyTriggers(Relation rel, FkConstraint *fkconstraint,
@@ -206,8 +207,8 @@ DefineRelation(CreateStmt *stmt, char relkind)
                    if (strcmp(check[i].ccname, cdef->name) == 0)
                        ereport(ERROR,
                                (errcode(ERRCODE_DUPLICATE_OBJECT),
-                                errmsg("duplicate CHECK constraint name \"%s\"",
-                                       cdef->name)));
+                        errmsg("duplicate CHECK constraint name \"%s\"",
+                               cdef->name)));
                }
                check[ncheck].ccname = cdef->name;
            }
@@ -399,7 +400,7 @@ TruncateRelation(const RangeVar *relation)
    if (isOtherTempNamespace(RelationGetNamespace(rel)))
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("cannot truncate temp tables of other processes")));
+             errmsg("cannot truncate temp tables of other processes")));
 
    /*
     * Don't allow truncate on tables which are referenced by foreign keys
@@ -435,8 +436,8 @@ TruncateRelation(const RangeVar *relation)
    heap_close(fkeyRel, AccessShareLock);
 
    /*
-    * Do the real work using the same technique as cluster, but
-    * without the data-copying portion
+    * Do the real work using the same technique as cluster, but without
+    * the data-copying portion
     */
    rebuild_relation(rel, InvalidOid);
 
@@ -570,8 +571,8 @@ MergeAttributes(List *schema, List *supers, bool istemp,
        if (!istemp && isTempNamespace(RelationGetNamespace(relation)))
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                    errmsg("cannot inherit from temporary relation \"%s\"",
-                           parent->relname)));
+                 errmsg("cannot inherit from temporary relation \"%s\"",
+                        parent->relname)));
 
        /*
         * We should have an UNDER permission flag for this, but for now,
@@ -652,7 +653,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
                                    attributeName),
                             errdetail("%s versus %s",
                                       TypeNameToString(def->typename),
-                                      format_type_be(attribute->atttypid))));
+                                 format_type_be(attribute->atttypid))));
                def->inhcount++;
                /* Merge of NOT NULL constraints = OR 'em together */
                def->is_not_null |= attribute->attnotnull;
@@ -803,11 +804,11 @@ MergeAttributes(List *schema, List *supers, bool istemp,
                    def->typename->typmod != newdef->typename->typmod)
                    ereport(ERROR,
                            (errcode(ERRCODE_DATATYPE_MISMATCH),
-                            errmsg("attribute \"%s\" has a type conflict",
-                                   attributeName),
+                          errmsg("attribute \"%s\" has a type conflict",
+                                 attributeName),
                             errdetail("%s versus %s",
                                       TypeNameToString(def->typename),
-                                      TypeNameToString(newdef->typename))));
+                                  TypeNameToString(newdef->typename))));
                /* Mark the column as locally defined */
                def->is_local = true;
                /* Merge of NOT NULL constraints = OR 'em together */
@@ -1230,8 +1231,8 @@ renameatt(Oid myrelid,
                             0, 0))
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" already exists",
-                       newattname, RelationGetRelationName(targetrelation))));
+            errmsg("attribute \"%s\" of relation \"%s\" already exists",
+                 newattname, RelationGetRelationName(targetrelation))));
 
    namestrcpy(&(attform->attname), newattname);
 
@@ -1257,7 +1258,7 @@ renameatt(Oid myrelid,
 
        /*
         * Scan through index columns to see if there's any simple index
-        * entries for this attribute.  We ignore expressional entries.
+        * entries for this attribute.  We ignore expressional entries.
         */
        indextup = SearchSysCache(INDEXRELID,
                                  ObjectIdGetDatum(indexoid),
@@ -1270,6 +1271,7 @@ renameatt(Oid myrelid,
        {
            if (attnum != indexform->indkey[i])
                continue;
+
            /*
             * Found one, rename it.
             */
@@ -1279,6 +1281,7 @@ renameatt(Oid myrelid,
                                        0, 0);
            if (!HeapTupleIsValid(atttup))
                continue;       /* should we raise an error? */
+
            /*
             * Update the (copied) attribute tuple.
             */
@@ -1366,7 +1369,7 @@ renamerel(Oid myrelid, const char *newrelname)
    reltup = SearchSysCacheCopy(RELOID,
                                PointerGetDatum(myrelid),
                                0, 0, 0);
-   if (!HeapTupleIsValid(reltup)) /* shouldn't happen */
+   if (!HeapTupleIsValid(reltup))      /* shouldn't happen */
        elog(ERROR, "cache lookup failed for relation %u", myrelid);
 
    if (get_relname_relid(newrelname, namespaceId) != InvalidOid)
@@ -1743,7 +1746,7 @@ AlterTableAddColumn(Oid myrelid,
                ereport(ERROR,
                        (errcode(ERRCODE_DATATYPE_MISMATCH),
                         errmsg("child table \"%s\" has different type for column \"%s\"",
-                               get_rel_name(childrelid), colDef->colname)));
+                           get_rel_name(childrelid), colDef->colname)));
 
            /*
             * XXX if we supported NOT NULL or defaults, would need to do
@@ -1782,7 +1785,7 @@ AlterTableAddColumn(Oid myrelid,
        if (find_inheritance_children(myrelid) != NIL)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
-                    errmsg("attribute must be added to child tables too")));
+                errmsg("attribute must be added to child tables too")));
    }
 
    /*
@@ -1801,14 +1804,14 @@ AlterTableAddColumn(Oid myrelid,
    if (colDef->raw_default || colDef->cooked_default)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("adding columns with defaults is not implemented"),
-                errhint("Add the column, then use ALTER TABLE SET DEFAULT.")));
+              errmsg("adding columns with defaults is not implemented"),
+         errhint("Add the column, then use ALTER TABLE SET DEFAULT.")));
 
    if (colDef->is_not_null)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                 errmsg("adding NOT NULL columns is not implemented"),
-                errhint("Add the column, then use ALTER TABLE SET NOT NULL.")));
+        errhint("Add the column, then use ALTER TABLE SET NOT NULL.")));
 
    pgclass = heap_openr(RelationRelationName, RowExclusiveLock);
 
@@ -1829,8 +1832,8 @@ AlterTableAddColumn(Oid myrelid,
                             0, 0))
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" already exists",
-                       colDef->colname, RelationGetRelationName(rel))));
+            errmsg("attribute \"%s\" of relation \"%s\" already exists",
+                   colDef->colname, RelationGetRelationName(rel))));
 
    minattnum = ((Form_pg_class) GETSTRUCT(reltup))->relnatts;
    maxatts = minattnum + 1;
@@ -2014,8 +2017,8 @@ AlterTableAlterColumnDropNotNull(Oid myrelid, bool recurse,
    if (attnum == InvalidAttrNumber)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       colName, RelationGetRelationName(rel))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   colName, RelationGetRelationName(rel))));
 
    /* Prevent them from altering a system attribute */
    if (attnum < 0)
@@ -2057,8 +2060,8 @@ AlterTableAlterColumnDropNotNull(Oid myrelid, bool recurse,
                if (indexStruct->indkey[i] == attnum)
                    ereport(ERROR,
                            (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
-                            errmsg("attribute \"%s\" is in a primary key",
-                                   colName)));
+                          errmsg("attribute \"%s\" is in a primary key",
+                                 colName)));
            }
        }
 
@@ -2158,8 +2161,8 @@ AlterTableAlterColumnSetNotNull(Oid myrelid, bool recurse,
    if (attnum == InvalidAttrNumber)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       colName, RelationGetRelationName(rel))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   colName, RelationGetRelationName(rel))));
 
    /* Prevent them from altering a system attribute */
    if (attnum < 0)
@@ -2286,8 +2289,8 @@ AlterTableAlterColumnDefault(Oid myrelid, bool recurse,
    if (attnum == InvalidAttrNumber)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       colName, RelationGetRelationName(rel))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   colName, RelationGetRelationName(rel))));
 
    /* Prevent them from altering a system attribute */
    if (attnum < 0)
@@ -2450,8 +2453,8 @@ AlterTableAlterColumnFlags(Oid myrelid, bool recurse,
    if (!HeapTupleIsValid(tuple))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       colName, RelationGetRelationName(rel))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   colName, RelationGetRelationName(rel))));
    attrtuple = (Form_pg_attribute) GETSTRUCT(tuple);
 
    if (attrtuple->attnum < 0)
@@ -2476,8 +2479,8 @@ AlterTableAlterColumnFlags(Oid myrelid, bool recurse,
        else
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("column datatype %s can only have storage \"plain\"",
-                           format_type_be(attrtuple->atttypid))));
+            errmsg("column datatype %s can only have storage \"plain\"",
+                   format_type_be(attrtuple->atttypid))));
    }
 
    simple_heap_update(attrelation, &tuple->t_self, tuple);
@@ -2573,7 +2576,7 @@ AlterTableAlterOids(Oid myrelid, bool recurse, bool setOid)
                    (errmsg("table \"%s\" is already WITHOUT OIDS",
                            RelationGetRelationName(rel))));
        heap_close(class_rel, RowExclusiveLock);
-       heap_close(rel, NoLock); /* close rel, but keep lock! */
+       heap_close(rel, NoLock);    /* close rel, but keep lock! */
        return;
    }
 
@@ -2601,8 +2604,8 @@ AlterTableAlterOids(Oid myrelid, bool recurse, bool setOid)
        attrel = heap_open(RelOid_pg_attribute, RowExclusiveLock);
 
        /*
-        * Oids are being removed from the relation, so we need
-        * to remove the oid pg_attribute record relating.
+        * Oids are being removed from the relation, so we need to remove
+        * the oid pg_attribute record relating.
         */
        atttup = SearchSysCache(ATTNUM,
                                ObjectIdGetDatum(myrelid),
@@ -2621,7 +2624,7 @@ AlterTableAlterOids(Oid myrelid, bool recurse, bool setOid)
 
    heap_close(class_rel, RowExclusiveLock);
 
-   heap_close(rel, NoLock);        /* close rel, but keep lock! */
+   heap_close(rel, NoLock);    /* close rel, but keep lock! */
 }
 
 /*
@@ -2663,8 +2666,8 @@ AlterTableDropColumn(Oid myrelid, bool recurse, bool recursing,
    if (attnum == InvalidAttrNumber)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       colName, RelationGetRelationName(rel))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   colName, RelationGetRelationName(rel))));
 
    /* Can't drop a system attribute */
    /* XXX perhaps someday allow dropping OID? */
@@ -2712,7 +2715,7 @@ AlterTableDropColumn(Oid myrelid, bool recurse, bool recursing,
                     colName, childrelid);
            childatt = (Form_pg_attribute) GETSTRUCT(tuple);
 
-           if (childatt->attinhcount <= 0) /* shouldn't happen */
+           if (childatt->attinhcount <= 0)     /* shouldn't happen */
                elog(ERROR, "relation %u has non-inherited attribute \"%s\"",
                     childrelid, colName);
            childatt->attinhcount--;
@@ -2731,9 +2734,9 @@ AlterTableDropColumn(Oid myrelid, bool recurse, bool recursing,
    }
 
    /*
-    * Propagate to children if desired.  Unlike most other ALTER routines,
-    * we have to do this one level of recursion at a time; we can't use
-    * find_all_inheritors to do it in one pass.
+    * Propagate to children if desired.  Unlike most other ALTER
+    * routines, we have to do this one level of recursion at a time; we
+    * can't use find_all_inheritors to do it in one pass.
     */
    if (recurse)
    {
@@ -2763,7 +2766,7 @@ AlterTableDropColumn(Oid myrelid, bool recurse, bool recursing,
                     colName, childrelid);
            childatt = (Form_pg_attribute) GETSTRUCT(tuple);
 
-           if (childatt->attinhcount <= 0) /* shouldn't happen */
+           if (childatt->attinhcount <= 0)     /* shouldn't happen */
                elog(ERROR, "relation %u has non-inherited attribute \"%s\"",
                     childrelid, colName);
 
@@ -2882,18 +2885,18 @@ AlterTableAddConstraint(Oid myrelid, bool recurse,
                    {
                        if (ConstraintNameIsUsed(CONSTRAINT_RELATION,
                                                 RelationGetRelid(rel),
-                                                RelationGetNamespace(rel),
+                                              RelationGetNamespace(rel),
                                                 constr->name))
                            ereport(ERROR,
                                    (errcode(ERRCODE_DUPLICATE_OBJECT),
                                     errmsg("constraint \"%s\" for relation \"%s\" already exists",
                                            constr->name,
-                                           RelationGetRelationName(rel))));
+                                        RelationGetRelationName(rel))));
                    }
                    else
                        constr->name = GenerateConstraintName(CONSTRAINT_RELATION,
-                                                             RelationGetRelid(rel),
-                                                             RelationGetNamespace(rel),
+                                                  RelationGetRelid(rel),
+                                              RelationGetNamespace(rel),
                                                              &counter);
 
                    /*
@@ -2923,14 +2926,14 @@ AlterTableAddConstraint(Oid myrelid, bool recurse,
                    if (fkconstraint->constr_name)
                    {
                        if (ConstraintNameIsUsed(CONSTRAINT_RELATION,
-                                                  RelationGetRelid(rel),
+                                                RelationGetRelid(rel),
                                               RelationGetNamespace(rel),
                                              fkconstraint->constr_name))
                            ereport(ERROR,
                                    (errcode(ERRCODE_DUPLICATE_OBJECT),
                                     errmsg("constraint \"%s\" for relation \"%s\" already exists",
                                            fkconstraint->constr_name,
-                                           RelationGetRelationName(rel))));
+                                        RelationGetRelationName(rel))));
                    }
                    else
                        fkconstraint->constr_name = GenerateConstraintName(CONSTRAINT_RELATION,
@@ -2959,7 +2962,7 @@ AlterTableAddConstraint(Oid myrelid, bool recurse,
 /*
  * Add a check constraint to a single table
  *
- * Subroutine for AlterTableAddConstraint.  Must already hold exclusive
+ * Subroutine for AlterTableAddConstraint. Must already hold exclusive
  * lock on the rel, and have done appropriate validity/permissions checks
  * for it.
  */
@@ -2979,13 +2982,13 @@ AlterTableAddCheckConstraint(Relation rel, Constraint *constr)
    Node       *expr;
 
    /*
-    * We need to make a parse state and range
-    * table to allow us to do transformExpr()
+    * We need to make a parse state and range table to allow us to do
+    * transformExpr()
     */
    pstate = make_parsestate(NULL);
    rte = addRangeTableEntryForRelation(pstate,
                                        RelationGetRelid(rel),
-                                       makeAlias(RelationGetRelationName(rel), NIL),
+                           makeAlias(RelationGetRelationName(rel), NIL),
                                        false,
                                        true);
    addRTEtoQuery(pstate, rte, true, true);
@@ -3006,8 +3009,8 @@ AlterTableAddCheckConstraint(Relation rel, Constraint *constr)
    if (length(pstate->p_rtable) != 1)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                errmsg("CHECK constraint may only reference relation \"%s\"",
-                       RelationGetRelationName(rel))));
+           errmsg("CHECK constraint may only reference relation \"%s\"",
+                  RelationGetRelationName(rel))));
 
    /*
     * No subplans or aggregates, either...
@@ -3070,15 +3073,13 @@ AlterTableAddCheckConstraint(Relation rel, Constraint *constr)
    if (!successful)
        ereport(ERROR,
                (errcode(ERRCODE_CHECK_VIOLATION),
-                errmsg("CHECK constraint \"%s\" is violated at some row(s)",
-                       constr->name)));
+            errmsg("CHECK constraint \"%s\" is violated at some row(s)",
+                   constr->name)));
 
    /*
-    * Call AddRelationRawConstraints to do
-    * the real adding -- It duplicates some
-    * of the above, but does not check the
-    * validity of the constraint against
-    * tuples already in the table.
+    * Call AddRelationRawConstraints to do the real adding -- It
+    * duplicates some of the above, but does not check the validity of
+    * the constraint against tuples already in the table.
     */
    AddRelationRawConstraints(rel, NIL, makeList1(constr));
 }
@@ -3086,7 +3087,7 @@ AlterTableAddCheckConstraint(Relation rel, Constraint *constr)
 /*
  * Add a foreign-key constraint to a single table
  *
- * Subroutine for AlterTableAddConstraint.  Must already hold exclusive
+ * Subroutine for AlterTableAddConstraint. Must already hold exclusive
  * lock on the rel, and have done appropriate validity/permissions checks
  * for it.
  */
@@ -3106,12 +3107,11 @@ AlterTableAddForeignKeyConstraint(Relation rel, FkConstraint *fkconstraint)
    Oid         constrOid;
 
    /*
-    * Grab an exclusive lock on the pk table, so that
-    * someone doesn't delete rows out from under us.
-    * (Although a lesser lock would do for that purpose,
-    * we'll need exclusive lock anyway to add triggers to
-    * the pk table; trying to start with a lesser lock
-    * will just create a risk of deadlock.)
+    * Grab an exclusive lock on the pk table, so that someone doesn't
+    * delete rows out from under us. (Although a lesser lock would do for
+    * that purpose, we'll need exclusive lock anyway to add triggers to
+    * the pk table; trying to start with a lesser lock will just create a
+    * risk of deadlock.)
     */
    pkrel = heap_openrv(fkconstraint->pktable, AccessExclusiveLock);
 
@@ -3152,8 +3152,8 @@ AlterTableAddForeignKeyConstraint(Relation rel, FkConstraint *fkconstraint)
                 errmsg("cannot reference temporary table from permanent table constraint")));
 
    /*
-    * Look up the referencing attributes to make sure they
-    * exist, and record their attnums and type OIDs.
+    * Look up the referencing attributes to make sure they exist, and
+    * record their attnums and type OIDs.
     */
    for (i = 0; i < INDEX_MAX_KEYS; i++)
    {
@@ -3166,10 +3166,10 @@ AlterTableAddForeignKeyConstraint(Relation rel, FkConstraint *fkconstraint)
                                     fkattnum, fktypoid);
 
    /*
-    * If the attribute list for the referenced table was omitted,
-    * lookup the definition of the primary key and use it.  Otherwise,
-    * validate the supplied attribute list.  In either case, discover
-    * the index OID and the attnums and type OIDs of the attributes.
+    * If the attribute list for the referenced table was omitted, lookup
+    * the definition of the primary key and use it.  Otherwise, validate
+    * the supplied attribute list.  In either case, discover the index
+    * OID and the attnums and type OIDs of the attributes.
     */
    if (fkconstraint->pk_attrs == NIL)
    {
@@ -3208,8 +3208,8 @@ AlterTableAddForeignKeyConstraint(Relation rel, FkConstraint *fkconstraint)
    }
 
    /*
-    * Check that the constraint is satisfied by existing
-    * rows (we can skip this during table creation).
+    * Check that the constraint is satisfied by existing rows (we can
+    * skip this during table creation).
     */
    if (!fkconstraint->skip_validation)
        validateForeignKeyConstraint(fkconstraint, rel, pkrel);
@@ -3225,7 +3225,8 @@ AlterTableAddForeignKeyConstraint(Relation rel, FkConstraint *fkconstraint)
                                      RelationGetRelid(rel),
                                      fkattnum,
                                      numfks,
-                                     InvalidOid, /* not a domain constraint */
+                                     InvalidOid,       /* not a domain
+                                                        * constraint */
                                      RelationGetRelid(pkrel),
                                      pkattnum,
                                      numpks,
@@ -3233,7 +3234,7 @@ AlterTableAddForeignKeyConstraint(Relation rel, FkConstraint *fkconstraint)
                                      fkconstraint->fk_del_action,
                                      fkconstraint->fk_matchtype,
                                      indexOid,
-                                     NULL, /* no check constraint */
+                                     NULL,     /* no check constraint */
                                      NULL,
                                      NULL);
 
@@ -3276,8 +3277,8 @@ transformColumnNameList(Oid relId, List *colList,
        if (attnum >= INDEX_MAX_KEYS)
            ereport(ERROR,
                    (errcode(ERRCODE_TOO_MANY_COLUMNS),
-                    errmsg("cannot have more than %d keys in a foreign key",
-                           INDEX_MAX_KEYS)));
+                errmsg("cannot have more than %d keys in a foreign key",
+                       INDEX_MAX_KEYS)));
        attnums[attnum] = ((Form_pg_attribute) GETSTRUCT(atttuple))->attnum;
        atttypids[attnum] = ((Form_pg_attribute) GETSTRUCT(atttuple))->atttypid;
        ReleaseSysCache(atttuple);
@@ -3291,7 +3292,7 @@ transformColumnNameList(Oid relId, List *colList,
  * transformFkeyGetPrimaryKey -
  *
  * Look up the names, attnums, and types of the primary key attributes
- * for the pkrel.  Used when the column list in the REFERENCES specification
+ * for the pkrel.  Used when the column list in the REFERENCES specification
  * is omitted.
  */
 static int
@@ -3339,12 +3340,12 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid,
    if (indexStruct == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                errmsg("there is no PRIMARY KEY for referenced table \"%s\"",
-                       RelationGetRelationName(pkrel))));
+           errmsg("there is no PRIMARY KEY for referenced table \"%s\"",
+                  RelationGetRelationName(pkrel))));
 
    /*
-    * Now build the list of PK attributes from the indkey definition
-    * (we assume a primary key cannot have expressional elements)
+    * Now build the list of PK attributes from the indkey definition (we
+    * assume a primary key cannot have expressional elements)
     */
    *attnamelist = NIL;
    for (i = 0; i < indexStruct->indnatts; i++)
@@ -3389,7 +3390,8 @@ transformFkeyCheckAttrs(Relation pkrel,
    {
        HeapTuple   indexTuple;
        Form_pg_index indexStruct;
-       int         i, j;
+       int         i,
+                   j;
 
        indexoid = lfirsto(indexoidscan);
        indexTuple = SearchSysCache(INDEXRELID,
@@ -3453,7 +3455,7 @@ transformFkeyCheckAttrs(Relation pkrel,
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_FOREIGN_KEY),
                 errmsg("there is no UNIQUE constraint matching given keys for referenced table \"%s\"",
-            RelationGetRelationName(pkrel))));
+                       RelationGetRelationName(pkrel))));
 
    freeList(indexoidlist);
 
@@ -3969,17 +3971,17 @@ AlterTableOwner(Oid relationOid, int32 newOwnerSysId)
 void
 AlterTableClusterOn(Oid relOid, const char *indexName)
 {
-   Relation        rel,
-                   pg_index;
-   List           *index;
-   Oid             indexOid;
-   HeapTuple       indexTuple;
-   Form_pg_index   indexForm;
-   
+   Relation    rel,
+               pg_index;
+   List       *index;
+   Oid         indexOid;
+   HeapTuple   indexTuple;
+   Form_pg_index indexForm;
+
    rel = heap_open(relOid, AccessExclusiveLock);
 
    indexOid = get_relname_relid(indexName, rel->rd_rel->relnamespace);
-   
+
    if (!OidIsValid(indexOid))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
@@ -3994,36 +3996,37 @@ AlterTableClusterOn(Oid relOid, const char *indexName)
    indexForm = (Form_pg_index) GETSTRUCT(indexTuple);
 
    /*
-    * If this is the same index the relation was previously
-    * clustered on, no need to do anything.
+    * If this is the same index the relation was previously clustered on,
+    * no need to do anything.
     */
    if (indexForm->indisclustered)
    {
        ereport(NOTICE,
-               (errmsg("table \"%s\" is already being clustered on index \"%s\"",
-                       NameStr(rel->rd_rel->relname), indexName)));
+       (errmsg("table \"%s\" is already being clustered on index \"%s\"",
+               NameStr(rel->rd_rel->relname), indexName)));
        ReleaseSysCache(indexTuple);
        heap_close(rel, NoLock);
        return;
    }
 
    pg_index = heap_openr(IndexRelationName, RowExclusiveLock);
-   
+
    /*
     * Now check each index in the relation and set the bit where needed.
     */
-   foreach (index, RelationGetIndexList(rel))
+   foreach(index, RelationGetIndexList(rel))
    {
-       HeapTuple       idxtuple;
-       Form_pg_index   idxForm;
-       
+       HeapTuple   idxtuple;
+       Form_pg_index idxForm;
+
        indexOid = lfirsto(index);
        idxtuple = SearchSysCacheCopy(INDEXRELID,
-                                     ObjectIdGetDatum(indexOid),
+                                     ObjectIdGetDatum(indexOid),
                                      0, 0, 0);
        if (!HeapTupleIsValid(idxtuple))
            elog(ERROR, "cache lookup failed for index %u", indexOid);
        idxForm = (Form_pg_index) GETSTRUCT(idxtuple);
+
        /*
         * Unset the bit if set.  We know it's wrong because we checked
         * this earlier.
@@ -4100,7 +4103,7 @@ AlterTableCreateToastTable(Oid relOid, bool silent)
    if (shared_relation && IsUnderPostmaster)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                errmsg("shared relations cannot be toasted after initdb")));
+            errmsg("shared relations cannot be toasted after initdb")));
 
    /*
     * Is it already toasted?
@@ -4331,12 +4334,12 @@ needs_toast_table(Relation rel)
 void
 register_on_commit_action(Oid relid, OnCommitAction action)
 {
-   OnCommitItem    *oc;
+   OnCommitItem *oc;
    MemoryContext oldcxt;
 
    /*
-    * We needn't bother registering the relation unless there is an ON COMMIT
-    * action we need to take.
+    * We needn't bother registering the relation unless there is an ON
+    * COMMIT action we need to take.
     */
    if (action == ONCOMMIT_NOOP || action == ONCOMMIT_PRESERVE_ROWS)
        return;
@@ -4366,7 +4369,7 @@ remove_on_commit_action(Oid relid)
 
    foreach(l, on_commits)
    {
-       OnCommitItem  *oc = (OnCommitItem *) lfirst(l);
+       OnCommitItem *oc = (OnCommitItem *) lfirst(l);
 
        if (oc->relid == relid)
        {
@@ -4389,7 +4392,7 @@ PreCommit_on_commit_actions(void)
 
    foreach(l, on_commits)
    {
-       OnCommitItem  *oc = (OnCommitItem *) lfirst(l);
+       OnCommitItem *oc = (OnCommitItem *) lfirst(l);
 
        /* Ignore entry if already dropped in this xact */
        if (oc->deleted_in_cur_xact)
@@ -4403,23 +4406,25 @@ PreCommit_on_commit_actions(void)
                break;
            case ONCOMMIT_DELETE_ROWS:
                heap_truncate(oc->relid);
-               CommandCounterIncrement(); /* XXX needed? */
+               CommandCounterIncrement();      /* XXX needed? */
                break;
            case ONCOMMIT_DROP:
-           {
-               ObjectAddress object;
+               {
+                   ObjectAddress object;
 
-               object.classId = RelOid_pg_class;
-               object.objectId = oc->relid;
-               object.objectSubId = 0;
-               performDeletion(&object, DROP_CASCADE);
-               /*
-                * Note that table deletion will call remove_on_commit_action,
-                * so the entry should get marked as deleted.
-                */
-               Assert(oc->deleted_in_cur_xact);
-               break;
-           }
+                   object.classId = RelOid_pg_class;
+                   object.objectId = oc->relid;
+                   object.objectSubId = 0;
+                   performDeletion(&object, DROP_CASCADE);
+
+                   /*
+                    * Note that table deletion will call
+                    * remove_on_commit_action, so the entry should get
+                    * marked as deleted.
+                    */
+                   Assert(oc->deleted_in_cur_xact);
+                   break;
+               }
        }
    }
 }
@@ -4442,7 +4447,7 @@ AtEOXact_on_commit_actions(bool isCommit)
    l = on_commits;
    while (l != NIL)
    {
-       OnCommitItem  *oc = (OnCommitItem *) lfirst(l);
+       OnCommitItem *oc = (OnCommitItem *) lfirst(l);
 
        if (isCommit ? oc->deleted_in_cur_xact :
            oc->created_in_cur_xact)
index 6e5b38804ff592519736c80116348d5167f8a4a9..d3e969c7e4f16f9f1700a55fa15d6d34baf67b03 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.153 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.154 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 static void InsertTrigger(TriggerDesc *trigdesc, Trigger *trigger, int indx);
 static HeapTuple GetTupleForTrigger(EState *estate,
-                                   ResultRelInfo *relinfo,
-                                   ItemPointer tid,
-                                   CommandId cid,
-                                   TupleTableSlot **newSlot);
+                  ResultRelInfo *relinfo,
+                  ItemPointer tid,
+                  CommandId cid,
+                  TupleTableSlot **newSlot);
 static HeapTuple ExecCallTriggerFunc(TriggerData *trigdata,
                    FmgrInfo *finfo,
                    MemoryContext per_tuple_context);
 static void DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
-                        bool row_trigger, HeapTuple oldtup, HeapTuple newtup);
+                  bool row_trigger, HeapTuple oldtup, HeapTuple newtup);
 static void DeferredTriggerExecute(DeferredTriggerEvent event, int itemno,
-                      Relation rel, TriggerDesc *trigdesc, FmgrInfo *finfo,
+                   Relation rel, TriggerDesc *trigdesc, FmgrInfo *finfo,
                       MemoryContext per_tuple_context);
 
 
@@ -97,18 +97,19 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
    else if (stmt->isconstraint)
    {
        /*
-        * If this trigger is a constraint (and a foreign key one)
-        * then we really need a constrrelid.  Since we don't have one,
-        * we'll try to generate one from the argument information.
+        * If this trigger is a constraint (and a foreign key one) then we
+        * really need a constrrelid.  Since we don't have one, we'll try
+        * to generate one from the argument information.
         *
-        * This is really just a workaround for a long-ago pg_dump bug
-        * that omitted the FROM clause in dumped CREATE CONSTRAINT TRIGGER
-        * commands.  We don't want to bomb out completely here if we can't
-        * determine the correct relation, because that would prevent loading
-        * the dump file.  Instead, NOTICE here and ERROR in the trigger.
+        * This is really just a workaround for a long-ago pg_dump bug that
+        * omitted the FROM clause in dumped CREATE CONSTRAINT TRIGGER
+        * commands.  We don't want to bomb out completely here if we
+        * can't determine the correct relation, because that would
+        * prevent loading the dump file.  Instead, NOTICE here and ERROR
+        * in the trigger.
         */
-       bool    needconstrrelid = false;
-       void   *elem = NULL;
+       bool        needconstrrelid = false;
+       void       *elem = NULL;
 
        if (strncmp(strVal(llast(stmt->funcname)), "RI_FKey_check_", 14) == 0)
        {
@@ -265,8 +266,8 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
        if (namestrcmp(&(pg_trigger->tgname), trigname) == 0)
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_OBJECT),
-                    errmsg("trigger \"%s\" for relation \"%s\" already exists",
-                           trigname, stmt->relation->relname)));
+             errmsg("trigger \"%s\" for relation \"%s\" already exists",
+                    trigname, stmt->relation->relname)));
        found++;
    }
    systable_endscan(tgscan);
@@ -280,7 +281,7 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
    if (funcrettype != TRIGGEROID)
    {
        /*
-        * We allow OPAQUE just so we can load old dump files.  When we
+        * We allow OPAQUE just so we can load old dump files.  When we
         * see a trigger function declared OPAQUE, change it to TRIGGER.
         */
        if (funcrettype == OPAQUEOID)
@@ -480,8 +481,8 @@ DropTrigger(Oid relid, const char *trigname, DropBehavior behavior)
    if (!HeapTupleIsValid(tup))
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                errmsg("trigger \"%s\" for relation \"%s\" does not exist",
-                       trigname, get_rel_name(relid))));
+             errmsg("trigger \"%s\" for relation \"%s\" does not exist",
+                    trigname, get_rel_name(relid))));
 
    if (!pg_class_ownercheck(relid, GetUserId()))
        aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS,
@@ -576,7 +577,7 @@ RemoveTriggerById(Oid trigOid)
        elog(ERROR, "cache lookup failed for relation %u", relid);
    classForm = (Form_pg_class) GETSTRUCT(tuple);
 
-   if (classForm->reltriggers == 0) /* should not happen */
+   if (classForm->reltriggers == 0)    /* should not happen */
        elog(ERROR, "relation \"%s\" has reltriggers = 0",
             RelationGetRelationName(rel));
    classForm->reltriggers--;
@@ -650,8 +651,8 @@ renametrig(Oid relid,
    if (HeapTupleIsValid(tuple = systable_getnext(tgscan)))
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_OBJECT),
-                errmsg("trigger \"%s\" for relation \"%s\" already exists",
-                       newname, RelationGetRelationName(targetrel))));
+             errmsg("trigger \"%s\" for relation \"%s\" already exists",
+                    newname, RelationGetRelationName(targetrel))));
    systable_endscan(tgscan);
 
    /*
@@ -693,8 +694,8 @@ renametrig(Oid relid,
    {
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_OBJECT),
-                errmsg("trigger \"%s\" for relation \"%s\" does not exist",
-                       oldname, RelationGetRelationName(targetrel))));
+             errmsg("trigger \"%s\" for relation \"%s\" does not exist",
+                    oldname, RelationGetRelationName(targetrel))));
    }
 
    systable_endscan(tgscan);
@@ -762,7 +763,7 @@ RelationBuildTriggers(Relation relation)
 
        build->tgoid = HeapTupleGetOid(htup);
        build->tgname = DatumGetCString(DirectFunctionCall1(nameout,
-                                   NameGetDatum(&pg_trigger->tgname)));
+                                    NameGetDatum(&pg_trigger->tgname)));
        build->tgfoid = pg_trigger->tgfoid;
        build->tgtype = pg_trigger->tgtype;
        build->tgenabled = pg_trigger->tgenabled;
@@ -927,8 +928,8 @@ CopyTriggerDesc(TriggerDesc *trigdesc)
        trigger->tgname = pstrdup(trigger->tgname);
        if (trigger->tgnargs > 0)
        {
-           char  **newargs;
-           int16   j;
+           char      **newargs;
+           int16       j;
 
            newargs = (char **) palloc(trigger->tgnargs * sizeof(char *));
            for (j = 0; j < trigger->tgnargs; j++)
@@ -1101,7 +1102,7 @@ equalTriggerDescs(TriggerDesc *trigdesc1, TriggerDesc *trigdesc2)
        return false;
    return true;
 }
-#endif /* NOT_USED */
+#endif   /* NOT_USED */
 
 /*
  * Call a trigger function.
@@ -1166,10 +1167,10 @@ ExecCallTriggerFunc(TriggerData *trigdata,
 void
 ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo)
 {
-   TriggerDesc *trigdesc;
-   int          ntrigs;
-   int         *tgindx;
-   int          i;
+   TriggerDesc *trigdesc;
+   int         ntrigs;
+   int        *tgindx;
+   int         i;
    TriggerData LocTriggerData;
 
    trigdesc = relinfo->ri_TrigDesc;
@@ -1190,10 +1191,10 @@ ExecBSInsertTriggers(EState *estate, ResultRelInfo *relinfo)
 
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = TRIGGER_EVENT_INSERT |
-                             TRIGGER_EVENT_BEFORE;
-   LocTriggerData.tg_relation  = relinfo->ri_RelationDesc;
-   LocTriggerData.tg_newtuple  = NULL;
-   LocTriggerData.tg_trigtuple = NULL;
+       TRIGGER_EVENT_BEFORE;
+   LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
+   LocTriggerData.tg_newtuple = NULL;
+   LocTriggerData.tg_trigtuple = NULL;
    for (i = 0; i < ntrigs; i++)
    {
        Trigger    *trigger = &trigdesc->triggers[tgindx[i]];
@@ -1209,7 +1210,7 @@ ExecBSInsertTriggers(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")));
+             errmsg("BEFORE STATEMENT trigger cannot return a value")));
    }
 }
 
@@ -1242,8 +1243,8 @@ ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo,
 
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = TRIGGER_EVENT_INSERT |
-                             TRIGGER_EVENT_ROW |
-                             TRIGGER_EVENT_BEFORE;
+       TRIGGER_EVENT_ROW |
+       TRIGGER_EVENT_BEFORE;
    LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
    LocTriggerData.tg_newtuple = NULL;
    for (i = 0; i < ntrigs; i++)
@@ -1279,10 +1280,10 @@ ExecARInsertTriggers(EState *estate, ResultRelInfo *relinfo,
 void
 ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo)
 {
-   TriggerDesc *trigdesc;
-   int          ntrigs;
-   int         *tgindx;
-   int          i;
+   TriggerDesc *trigdesc;
+   int         ntrigs;
+   int        *tgindx;
+   int         i;
    TriggerData LocTriggerData;
 
    trigdesc = relinfo->ri_TrigDesc;
@@ -1303,10 +1304,10 @@ ExecBSDeleteTriggers(EState *estate, ResultRelInfo *relinfo)
 
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = TRIGGER_EVENT_DELETE |
-                             TRIGGER_EVENT_BEFORE;
-   LocTriggerData.tg_relation  = relinfo->ri_RelationDesc;
-   LocTriggerData.tg_newtuple  = NULL;
-   LocTriggerData.tg_trigtuple = NULL;
+       TRIGGER_EVENT_BEFORE;
+   LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
+   LocTriggerData.tg_newtuple = NULL;
+   LocTriggerData.tg_trigtuple = NULL;
    for (i = 0; i < ntrigs; i++)
    {
        Trigger    *trigger = &trigdesc->triggers[tgindx[i]];
@@ -1322,7 +1323,7 @@ ExecBSDeleteTriggers(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")));
+             errmsg("BEFORE STATEMENT trigger cannot return a value")));
    }
 }
 
@@ -1361,8 +1362,8 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo,
 
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = TRIGGER_EVENT_DELETE |
-                             TRIGGER_EVENT_ROW |
-                             TRIGGER_EVENT_BEFORE;
+       TRIGGER_EVENT_ROW |
+       TRIGGER_EVENT_BEFORE;
    LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
    LocTriggerData.tg_newtuple = NULL;
    for (i = 0; i < ntrigs; i++)
@@ -1408,10 +1409,10 @@ ExecARDeleteTriggers(EState *estate, ResultRelInfo *relinfo,
 void
 ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo)
 {
-   TriggerDesc *trigdesc;
-   int          ntrigs;
-   int         *tgindx;
-   int          i;
+   TriggerDesc *trigdesc;
+   int         ntrigs;
+   int        *tgindx;
+   int         i;
    TriggerData LocTriggerData;
 
    trigdesc = relinfo->ri_TrigDesc;
@@ -1432,10 +1433,10 @@ ExecBSUpdateTriggers(EState *estate, ResultRelInfo *relinfo)
 
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = TRIGGER_EVENT_UPDATE |
-                             TRIGGER_EVENT_BEFORE;
-   LocTriggerData.tg_relation  = relinfo->ri_RelationDesc;
-   LocTriggerData.tg_newtuple  = NULL;
-   LocTriggerData.tg_trigtuple = NULL;
+       TRIGGER_EVENT_BEFORE;
+   LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
+   LocTriggerData.tg_newtuple = NULL;
+   LocTriggerData.tg_trigtuple = NULL;
    for (i = 0; i < ntrigs; i++)
    {
        Trigger    *trigger = &trigdesc->triggers[tgindx[i]];
@@ -1451,7 +1452,7 @@ ExecBSUpdateTriggers(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")));
+             errmsg("BEFORE STATEMENT trigger cannot return a value")));
    }
 }
 
@@ -1498,8 +1499,8 @@ ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo,
 
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = TRIGGER_EVENT_UPDATE |
-                             TRIGGER_EVENT_ROW |
-                             TRIGGER_EVENT_BEFORE;
+       TRIGGER_EVENT_ROW |
+       TRIGGER_EVENT_BEFORE;
    LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
    for (i = 0; i < ntrigs; i++)
    {
@@ -1639,19 +1640,20 @@ ltrmark:;
  * ----------
  */
 
-typedef struct DeferredTriggersData {
-       /* Internal data is held in a per-transaction memory context */
-   MemoryContext           deftrig_cxt;
-       /* ALL DEFERRED or ALL IMMEDIATE */
-   bool                    deftrig_all_isset;
-   bool                    deftrig_all_isdeferred;
-       /* Per trigger state */
-   List                   *deftrig_trigstates;
-       /* List of pending deferred triggers. Previous comment below */
-   DeferredTriggerEvent    deftrig_events;
-   DeferredTriggerEvent    deftrig_events_imm;
-   DeferredTriggerEvent    deftrig_event_tail;
-} DeferredTriggersData;
+typedef struct DeferredTriggersData
+{
+   /* Internal data is held in a per-transaction memory context */
+   MemoryContext deftrig_cxt;
+   /* ALL DEFERRED or ALL IMMEDIATE */
+   bool        deftrig_all_isset;
+   bool        deftrig_all_isdeferred;
+   /* Per trigger state */
+   List       *deftrig_trigstates;
+   /* List of pending deferred triggers. Previous comment below */
+   DeferredTriggerEvent deftrig_events;
+   DeferredTriggerEvent deftrig_events_imm;
+   DeferredTriggerEvent deftrig_event_tail;
+}  DeferredTriggersData;
 
 /* ----------
  * deftrig_events, deftrig_event_tail:
@@ -1661,8 +1663,8 @@ typedef struct DeferredTriggersData {
  * Because this can grow pretty large, we don't use separate List nodes,
  * but instead thread the list through the dte_next fields of the member
  * nodes.  Saves just a few bytes per entry, but that adds up.
- * 
- * deftrig_events_imm holds the tail pointer as of the last 
+ *
+ * deftrig_events_imm holds the tail pointer as of the last
  * deferredTriggerInvokeEvents call; we can use this to avoid rescanning
  * entries unnecessarily.  It is NULL if deferredTriggerInvokeEvents
  * hasn't run since the last state change.
@@ -1674,7 +1676,7 @@ typedef struct DeferredTriggersData {
 
 typedef DeferredTriggersData *DeferredTriggers;
 
-static DeferredTriggers    deferredTriggers;
+static DeferredTriggers deferredTriggers;
 
 /* ----------
  * deferredTriggerCheckState()
@@ -1783,7 +1785,7 @@ deferredTriggerAddEvent(DeferredTriggerEvent event)
  */
 static void
 DeferredTriggerExecute(DeferredTriggerEvent event, int itemno,
-                      Relation rel, TriggerDesc *trigdesc, FmgrInfo *finfo,
+                   Relation rel, TriggerDesc *trigdesc, FmgrInfo *finfo,
                       MemoryContext per_tuple_context)
 {
    Oid         tgoid = event->dte_item[itemno].dti_tgoid;
@@ -1817,7 +1819,7 @@ DeferredTriggerExecute(DeferredTriggerEvent event, int itemno,
     */
    LocTriggerData.type = T_TriggerData;
    LocTriggerData.tg_event = (event->dte_event & TRIGGER_EVENT_OPMASK) |
-                             (event->dte_event & TRIGGER_EVENT_ROW);
+       (event->dte_event & TRIGGER_EVENT_ROW);
    LocTriggerData.tg_relation = rel;
 
    LocTriggerData.tg_trigger = NULL;
@@ -1899,12 +1901,12 @@ deferredTriggerInvokeEvents(bool immediate_only)
     * are going to discard the whole event queue on return anyway, so no
     * need to bother with "retail" pfree's.
     *
-    * If immediate_only is true, we need only scan from where the end of
-    * the queue was at the previous deferredTriggerInvokeEvents call;
-    * any non-deferred events before that point are already fired.
-    * (But if the deferral state changes, we must reset the saved position
-    * to the beginning of the queue, so as to process all events once with
-    * the new states.  See DeferredTriggerSetState.)
+    * If immediate_only is true, we need only scan from where the end of the
+    * queue was at the previous deferredTriggerInvokeEvents call; any
+    * non-deferred events before that point are already fired. (But if
+    * the deferral state changes, we must reset the saved position to the
+    * beginning of the queue, so as to process all events once with the
+    * new states.  See DeferredTriggerSetState.)
     */
 
    /* Make a per-tuple memory context for trigger function calls */
@@ -1916,9 +1918,9 @@ deferredTriggerInvokeEvents(bool immediate_only)
                              ALLOCSET_DEFAULT_MAXSIZE);
 
    /*
-    * If immediate_only is true, then the only events that could need firing
-    * are those since deftrig_events_imm.  (But if deftrig_events_imm is
-    * NULL, we must scan the entire list.)
+    * If immediate_only is true, then the only events that could need
+    * firing are those since deftrig_events_imm.  (But if
+    * deftrig_events_imm is NULL, we must scan the entire list.)
     */
    if (immediate_only && deferredTriggers->deftrig_events_imm != NULL)
    {
@@ -1984,17 +1986,18 @@ deferredTriggerInvokeEvents(bool immediate_only)
                    rel = heap_open(event->dte_relid, NoLock);
 
                    /*
-                    * Copy relation's trigger info so that we have a stable
-                    * copy no matter what the called triggers do.
+                    * Copy relation's trigger info so that we have a
+                    * stable copy no matter what the called triggers do.
                     */
                    trigdesc = CopyTriggerDesc(rel->trigdesc);
 
-                   if (trigdesc == NULL) /* should not happen */
+                   if (trigdesc == NULL)       /* should not happen */
                        elog(ERROR, "relation %u has no triggers",
                             event->dte_relid);
 
                    /*
-                    * Allocate space to cache fmgr lookup info for triggers.
+                    * Allocate space to cache fmgr lookup info for
+                    * triggers.
                     */
                    finfo = (FmgrInfo *)
                        palloc0(trigdesc->numtriggers * sizeof(FmgrInfo));
@@ -2089,21 +2092,23 @@ void
 DeferredTriggerBeginXact(void)
 {
    /*
-    * This will be changed to a special context when
-    * the nested transactions project moves forward.
+    * This will be changed to a special context when the nested
+    * transactions project moves forward.
     */
    MemoryContext cxt = TopTransactionContext;
+
    deferredTriggers = (DeferredTriggers) MemoryContextAlloc(TopTransactionContext,
-           sizeof(DeferredTriggersData));
+                                          sizeof(DeferredTriggersData));
 
    /*
     * Create the per transaction memory context
     */
    deferredTriggers->deftrig_cxt = AllocSetContextCreate(cxt,
-                                       "DeferredTriggerXact",
-                                       ALLOCSET_DEFAULT_MINSIZE,
-                                       ALLOCSET_DEFAULT_INITSIZE,
-                                       ALLOCSET_DEFAULT_MAXSIZE);
+                                                  "DeferredTriggerXact",
+                                               ALLOCSET_DEFAULT_MINSIZE,
+                                              ALLOCSET_DEFAULT_INITSIZE,
+                                              ALLOCSET_DEFAULT_MAXSIZE);
+
    /*
     * If unspecified, constraints default to IMMEDIATE, per SQL
     */
@@ -2174,7 +2179,7 @@ DeferredTriggerAbortXact(void)
     * Ignore call if we aren't in a transaction.
     */
    if (deferredTriggers == NULL)
-           return;
+       return;
 
    /*
     * Forget everything we know about deferred triggers.
@@ -2255,7 +2260,7 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
            if (strlen(cname) == 0)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_NAME),
-                        errmsg("unnamed constraints cannot be set explicitly")));
+               errmsg("unnamed constraints cannot be set explicitly")));
 
            /*
             * Setup to scan pg_trigger by tgconstrname ...
@@ -2304,7 +2309,7 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
            if (!found)
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_OBJECT),
-                        errmsg("constraint \"%s\" does not exist", cname)));
+                    errmsg("constraint \"%s\" does not exist", cname)));
        }
        heap_close(tgrel, AccessShareLock);
 
@@ -2349,9 +2354,10 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
     * CONSTRAINTS command applies retroactively. This happens "for free"
     * since we have already made the necessary modifications to the
     * constraints, and deferredTriggerEndQuery() is called by
-    * finish_xact_command().  But we must reset deferredTriggerInvokeEvents'
-    * tail pointer to make it rescan the entire list, in case some deferred
-    * events are now immediately invokable.
+    * finish_xact_command().  But we must reset
+    * deferredTriggerInvokeEvents' tail pointer to make it rescan the
+    * entire list, in case some deferred events are now immediately
+    * invokable.
     */
    deferredTriggers->deftrig_events_imm = NULL;
 }
@@ -2416,7 +2422,7 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event, bool row_trigger,
     */
    for (i = 0; i < ntriggers; i++)
    {
-       Trigger *trigger = &trigdesc->triggers[tgindx[i]];
+       Trigger    *trigger = &trigdesc->triggers[tgindx[i]];
 
        if (trigger->tgenabled)
            n_enabled_triggers++;
@@ -2455,7 +2461,7 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event, bool row_trigger,
 
        ev_item = &(new_event->dte_item[i]);
        ev_item->dti_tgoid = trigger->tgoid;
-       ev_item->dti_state = 
+       ev_item->dti_state =
            ((trigger->tgdeferrable) ?
             TRIGGER_DEFERRED_DEFERRABLE : 0) |
            ((trigger->tginitdeferred) ?
@@ -2464,9 +2470,7 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event, bool row_trigger,
        if (row_trigger && (trigdesc->n_before_row[event] > 0))
            ev_item->dti_state |= TRIGGER_DEFERRED_HAS_BEFORE;
        else if (!row_trigger && (trigdesc->n_before_statement[event] > 0))
-       {
            ev_item->dti_state |= TRIGGER_DEFERRED_HAS_BEFORE;
-       }
    }
 
    MemoryContextSwitchTo(oldcxt);
index 275143c15175c2a4350e6a5fd7b527a2b5003790..57bc7c5f71f60c4ddf8de5b67c4a979ffe4d7af4 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/typecmds.c,v 1.40 2003/08/01 00:15:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/typecmds.c,v 1.41 2003/08/04 00:43:17 momjian Exp $
  *
  * DESCRIPTION
  *   The "DefineFoo" routines take the parse tree and pick out the
 /* result structure for get_rels_with_domain() */
 typedef struct
 {
-   Relation rel;               /* opened and locked relation */
-   int     natts;              /* number of attributes of interest */
-   int     *atts;              /* attribute numbers */
+   Relation    rel;            /* opened and locked relation */
+   int         natts;          /* number of attributes of interest */
+   int        *atts;           /* attribute numbers */
    /* atts[] is of allocated length RelationGetNumberOfAttributes(rel) */
-} RelToCheck;
+}  RelToCheck;
 
 
 static Oid findTypeInputFunction(List *procname, Oid typeOid);
@@ -80,9 +80,9 @@ static Oid    findTypeSendFunction(List *procname, Oid typeOid);
 static List *get_rels_with_domain(Oid domainOid, LOCKMODE lockmode);
 static void domainOwnerCheck(HeapTuple tup, TypeName *typename);
 static char *domainAddConstraint(Oid domainOid, Oid domainNamespace,
-                                Oid baseTypeOid,
-                                int typMod, Constraint *constr,
-                                int *counter, char *domainName);
+                   Oid baseTypeOid,
+                   int typMod, Constraint *constr,
+                   int *counter, char *domainName);
 
 
 /*
@@ -105,7 +105,7 @@ DefineType(List *names, List *parameters)
    bool        byValue = false;
    char        delimiter = DEFAULT_TYPDELIM;
    char        alignment = 'i';    /* default alignment */
-   char        storage = 'p';      /* default TOAST storage method */
+   char        storage = 'p';  /* default TOAST storage method */
    Oid         inputOid;
    Oid         outputOid;
    Oid         receiveOid = InvalidOid;
@@ -237,8 +237,8 @@ DefineType(List *names, List *parameters)
 
    /*
     * Look to see if type already exists (presumably as a shell; if not,
-    * TypeCreate will complain).  If it doesn't, create it as a shell,
-    * so that the OID is known for use in the I/O function definitions.
+    * TypeCreate will complain).  If it doesn't, create it as a shell, so
+    * that the OID is known for use in the I/O function definitions.
     */
    typoid = GetSysCacheOid(TYPENAMENSP,
                            CStringGetDatum(typeName),
@@ -492,7 +492,7 @@ DefineDomain(CreateDomainStmt *stmt)
    List       *listptr;
    Oid         basetypeoid;
    Oid         domainoid;
-   Form_pg_type    baseType;
+   Form_pg_type baseType;
    int         counter = 0;
 
    /* Convert list of names to a name and namespace */
@@ -508,10 +508,11 @@ DefineDomain(CreateDomainStmt *stmt)
 
    /*
     * Domainnames, unlike typenames don't need to account for the '_'
-    * prefix.  So they can be one character longer.  (This test is presently
-    * useless since the parser will have truncated the name to fit.  But
-    * leave it here since we may someday support arrays of domains, in
-    * which case we'll be back to needing to enforce NAMEDATALEN-2.)
+    * prefix.  So they can be one character longer.  (This test is
+    * presently useless since the parser will have truncated the name to
+    * fit.  But leave it here since we may someday support arrays of
+    * domains, in which case we'll be back to needing to enforce
+    * NAMEDATALEN-2.)
     */
    if (strlen(domainName) > (NAMEDATALEN - 1))
        ereport(ERROR,
@@ -581,8 +582,8 @@ DefineDomain(CreateDomainStmt *stmt)
    basetypelem = baseType->typelem;
 
    /*
-    * Run through constraints manually to avoid the additional
-    * processing conducted by DefineRelation() and friends.
+    * Run through constraints manually to avoid the additional processing
+    * conducted by DefineRelation() and friends.
     */
    foreach(listptr, schema)
    {
@@ -594,7 +595,7 @@ DefineDomain(CreateDomainStmt *stmt)
        if (IsA(newConstraint, FkConstraint))
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("FOREIGN KEY constraints not supported for domains")));
+           errmsg("FOREIGN KEY constraints not supported for domains")));
 
        /* otherwise it should be a plain Constraint */
        if (!IsA(newConstraint, Constraint))
@@ -606,6 +607,7 @@ DefineDomain(CreateDomainStmt *stmt)
        switch (constr->contype)
        {
            case CONSTR_DEFAULT:
+
                /*
                 * The inherited default value may be overridden by the
                 * user with the DEFAULT <expr> statement.
@@ -643,7 +645,7 @@ DefineDomain(CreateDomainStmt *stmt)
                if (nullDefined && !typNotNull)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
-                            errmsg("conflicting NULL/NOT NULL constraints")));
+                      errmsg("conflicting NULL/NOT NULL constraints")));
                typNotNull = true;
                nullDefined = true;
                break;
@@ -652,41 +654,42 @@ DefineDomain(CreateDomainStmt *stmt)
                if (nullDefined && typNotNull)
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
-                            errmsg("conflicting NULL/NOT NULL constraints")));
+                      errmsg("conflicting NULL/NOT NULL constraints")));
                typNotNull = false;
                nullDefined = true;
-               break;
+               break;
+
+           case CONSTR_CHECK:
 
-           case CONSTR_CHECK:
                /*
-                * Check constraints are handled after domain creation, as they
-                * require the Oid of the domain
+                * Check constraints are handled after domain creation, as
+                * they require the Oid of the domain
                 */
-               break;
+               break;
 
                /*
                 * All else are error cases
                 */
-           case CONSTR_UNIQUE:
-               ereport(ERROR,
+           case CONSTR_UNIQUE:
+               ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("UNIQUE constraints not supported for domains")));
-               break;
+               errmsg("UNIQUE constraints not supported for domains")));
+               break;
 
-           case CONSTR_PRIMARY:
-               ereport(ERROR,
+           case CONSTR_PRIMARY:
+               ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("PRIMARY KEY constraints not supported for domains")));
-               break;
+               break;
 
-           case CONSTR_ATTR_DEFERRABLE:
-           case CONSTR_ATTR_NOT_DEFERRABLE:
-           case CONSTR_ATTR_DEFERRED:
-           case CONSTR_ATTR_IMMEDIATE:
-               ereport(ERROR,
+           case CONSTR_ATTR_DEFERRABLE:
+           case CONSTR_ATTR_NOT_DEFERRABLE:
+           case CONSTR_ATTR_DEFERRED:
+           case CONSTR_ATTR_IMMEDIATE:
+               ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("deferrability constraints not supported for domains")));
-               break;
+               break;
 
            default:
                elog(ERROR, "unrecognized constraint subtype: %d",
@@ -715,15 +718,16 @@ DefineDomain(CreateDomainStmt *stmt)
                   basetypeoid, /* base type ID */
                   defaultValue,    /* default type value (text) */
                   defaultValueBin,     /* default type value (binary) */
-                  byValue,             /* passed by value */
-                  alignment,           /* required alignment */
-                  storage,             /* TOAST strategy */
-                  stmt->typename->typmod, /* typeMod value */
-                  typNDims,            /* Array dimensions for base type */
-                  typNotNull);         /* Type NOT NULL */
+                  byValue,     /* passed by value */
+                  alignment,   /* required alignment */
+                  storage,     /* TOAST strategy */
+                  stmt->typename->typmod,      /* typeMod value */
+                  typNDims,    /* Array dimensions for base type */
+                  typNotNull); /* Type NOT NULL */
 
    /*
-    * Process constraints which refer to the domain ID returned by TypeCreate
+    * Process constraints which refer to the domain ID returned by
+    * TypeCreate
     */
    foreach(listptr, schema)
    {
@@ -733,16 +737,16 @@ DefineDomain(CreateDomainStmt *stmt)
 
        switch (constr->contype)
        {
-           case CONSTR_CHECK:
+           case CONSTR_CHECK:
                domainAddConstraint(domainoid, domainNamespace,
                                    basetypeoid, stmt->typename->typmod,
                                    constr, &counter, domainName);
-               break;
+               break;
 
-           /* Other constraint types were fully processed above */
+               /* Other constraint types were fully processed above */
 
            default:
-               break;
+               break;
        }
    }
 
@@ -834,8 +838,8 @@ findTypeInputFunction(List *procname, Oid typeOid)
     * Input functions can take a single argument of type CSTRING, or
     * three arguments (string, element OID, typmod).
     *
-    * For backwards compatibility we allow OPAQUE in place of CSTRING;
-    * if we see this, we issue a NOTICE and fix up the pg_proc entry.
+    * For backwards compatibility we allow OPAQUE in place of CSTRING; if we
+    * see this, we issue a NOTICE and fix up the pg_proc entry.
     */
    MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
@@ -874,9 +878,10 @@ findTypeInputFunction(List *procname, Oid typeOid)
                (errmsg("changing argument type of function %s from OPAQUE to CSTRING",
                        NameListToString(procname))));
        SetFunctionArgType(procOid, 0, CSTRINGOID);
+
        /*
-        * Need CommandCounterIncrement since DefineType will likely
-        * try to alter the pg_proc tuple again.
+        * Need CommandCounterIncrement since DefineType will likely try
+        * to alter the pg_proc tuple again.
         */
        CommandCounterIncrement();
 
@@ -905,8 +910,8 @@ findTypeOutputFunction(List *procname, Oid typeOid)
     * arguments (data value, element OID).
     *
     * For backwards compatibility we allow OPAQUE in place of the actual
-    * type name; if we see this, we issue a NOTICE and fix up the
-    * pg_proc entry.
+    * type name; if we see this, we issue a NOTICE and fix up the pg_proc
+    * entry.
     */
    MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
@@ -940,12 +945,13 @@ findTypeOutputFunction(List *procname, Oid typeOid)
    {
        /* Found, but must complain and fix the pg_proc entry */
        ereport(NOTICE,
-               (errmsg("changing argument type of function %s from OPAQUE to %s",
-                       NameListToString(procname), format_type_be(typeOid))));
+       (errmsg("changing argument type of function %s from OPAQUE to %s",
+               NameListToString(procname), format_type_be(typeOid))));
        SetFunctionArgType(procOid, 0, typeOid);
+
        /*
-        * Need CommandCounterIncrement since DefineType will likely
-        * try to alter the pg_proc tuple again.
+        * Need CommandCounterIncrement since DefineType will likely try
+        * to alter the pg_proc tuple again.
         */
        CommandCounterIncrement();
 
@@ -1050,7 +1056,7 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist)
    if (coldeflist == NIL)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                errmsg("composite type must have at least one attribute")));
+            errmsg("composite type must have at least one attribute")));
 
    /*
     * now create the parameters for keys/inheritance etc. All of them are
@@ -1072,7 +1078,7 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist)
 /*
  * AlterDomainDefault
  *
- * Routine implementing ALTER DOMAIN SET/DROP DEFAULT statements. 
+ * Routine implementing ALTER DOMAIN SET/DROP DEFAULT statements.
  */
 void
 AlterDomainDefault(List *names, Node *defaultRaw)
@@ -1083,12 +1089,12 @@ AlterDomainDefault(List *names, Node *defaultRaw)
    ParseState *pstate;
    Relation    rel;
    char       *defaultValue;
-   Node       *defaultExpr = NULL; /* NULL if no default specified */
+   Node       *defaultExpr = NULL;     /* NULL if no default specified */
    Datum       new_record[Natts_pg_type];
    char        new_record_nulls[Natts_pg_type];
    char        new_record_repl[Natts_pg_type];
    HeapTuple   newtuple;
-   Form_pg_type    typTup;
+   Form_pg_type typTup;
 
    /* Make a TypeName so we can use standard type lookup machinery */
    typename = makeNode(TypeName);
@@ -1113,7 +1119,7 @@ AlterDomainDefault(List *names, Node *defaultRaw)
    if (!HeapTupleIsValid(tup))
        elog(ERROR, "cache lookup failed for type %u", domainoid);
 
-   /* Doesn't return if user isn't allowed to alter the domain */ 
+   /* Doesn't return if user isn't allowed to alter the domain */
    domainOwnerCheck(tup, typename);
 
    /* Setup new tuple */
@@ -1129,9 +1135,10 @@ AlterDomainDefault(List *names, Node *defaultRaw)
    {
        /* Create a dummy ParseState for transformExpr */
        pstate = make_parsestate(NULL);
+
        /*
-        * Cook the colDef->raw_expr into an expression. Note:
-        * Name is strictly for error message
+        * Cook the colDef->raw_expr into an expression. Note: Name is
+        * strictly for error message
         */
        defaultExpr = cookDefault(pstate, defaultRaw,
                                  typTup->typbasetype,
@@ -1139,27 +1146,29 @@ AlterDomainDefault(List *names, Node *defaultRaw)
                                  NameStr(typTup->typname));
 
        /*
-        * Expression must be stored as a nodeToString result, but
-        * we also require a valid textual representation (mainly
-        * to make life easier for pg_dump).
+        * Expression must be stored as a nodeToString result, but we also
+        * require a valid textual representation (mainly to make life
+        * easier for pg_dump).
         */
        defaultValue = deparse_expression(defaultExpr,
-                                 deparse_context_for(NameStr(typTup->typname),
-                                                     InvalidOid),
+                           deparse_context_for(NameStr(typTup->typname),
+                                               InvalidOid),
                                          false, false);
+
        /*
         * Form an updated tuple with the new default and write it back.
         */
        new_record[Anum_pg_type_typdefaultbin - 1] = DirectFunctionCall1(textin,
-                                                       CStringGetDatum(
-                                                           nodeToString(defaultExpr)));
+                                                        CStringGetDatum(
+                                            nodeToString(defaultExpr)));
 
        new_record_repl[Anum_pg_type_typdefaultbin - 1] = 'r';
        new_record[Anum_pg_type_typdefault - 1] = DirectFunctionCall1(textin,
-                                                   CStringGetDatum(defaultValue));
+                                         CStringGetDatum(defaultValue));
        new_record_repl[Anum_pg_type_typdefault - 1] = 'r';
    }
-   else /* Default is NULL, drop it */
+   else
+/* Default is NULL, drop it */
    {
        new_record_nulls[Anum_pg_type_typdefaultbin - 1] = 'n';
        new_record_repl[Anum_pg_type_typdefaultbin - 1] = 'r';
@@ -1168,7 +1177,7 @@ AlterDomainDefault(List *names, Node *defaultRaw)
    }
 
    newtuple = heap_modifytuple(tup, 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);
 
@@ -1178,7 +1187,7 @@ AlterDomainDefault(List *names, Node *defaultRaw)
    GenerateTypeDependencies(typTup->typnamespace,
                             domainoid,
                             typTup->typrelid,
-                            0, /* relation kind is n/a */
+                            0, /* relation kind is n/a */
                             typTup->typinput,
                             typTup->typoutput,
                             typTup->typreceive,
@@ -1186,7 +1195,7 @@ AlterDomainDefault(List *names, Node *defaultRaw)
                             typTup->typelem,
                             typTup->typbasetype,
                             defaultExpr,
-                            true); /* Rebuild is true */
+                            true);     /* Rebuild is true */
 
    /* Clean up */
    heap_close(rel, NoLock);
@@ -1196,7 +1205,7 @@ AlterDomainDefault(List *names, Node *defaultRaw)
 /*
  * AlterDomainNotNull
  *
- * Routine implementing ALTER DOMAIN SET/DROP NOT NULL statements. 
+ * Routine implementing ALTER DOMAIN SET/DROP NOT NULL statements.
  */
 void
 AlterDomainNotNull(List *names, bool notNull)
@@ -1205,7 +1214,7 @@ AlterDomainNotNull(List *names, bool notNull)
    Oid         domainoid;
    Relation    typrel;
    HeapTuple   tup;
-   Form_pg_type    typTup;
+   Form_pg_type typTup;
 
    /* Make a TypeName so we can use standard type lookup machinery */
    typename = makeNode(TypeName);
@@ -1231,7 +1240,7 @@ AlterDomainNotNull(List *names, bool notNull)
        elog(ERROR, "cache lookup failed for type %u", domainoid);
    typTup = (Form_pg_type) GETSTRUCT(tup);
 
-   /* Doesn't return if user isn't allowed to alter the domain */ 
+   /* Doesn't return if user isn't allowed to alter the domain */
    domainOwnerCheck(tup, typename);
 
    /* Is the domain already set to the desired constraint? */
@@ -1248,15 +1257,15 @@ AlterDomainNotNull(List *names, bool notNull)
    /* Adding a NOT NULL constraint requires checking existing columns */
    if (notNull)
    {
-       List   *rels;
-       List   *rt;
+       List       *rels;
+       List       *rt;
 
        /* Fetch relation list with attributes based on this domain */
        /* ShareLock is sufficient to prevent concurrent data changes */
 
        rels = get_rels_with_domain(domainoid, ShareLock);
 
-       foreach (rt, rels)
+       foreach(rt, rels)
        {
            RelToCheck *rtc = (RelToCheck *) lfirst(rt);
            Relation    testrel = rtc->rel;
@@ -1268,14 +1277,14 @@ AlterDomainNotNull(List *names, bool notNull)
            scan = heap_beginscan(testrel, SnapshotNow, 0, NULL);
            while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
            {
-               int     i;
+               int         i;
 
                /* Test attributes that are of the domain */
                for (i = 0; i < rtc->natts; i++)
                {
-                   int     attnum = rtc->atts[i];
-                   Datum   d;
-                   bool    isNull;
+                   int         attnum = rtc->atts[i];
+                   Datum       d;
+                   bool        isNull;
 
                    d = heap_getattr(tuple, attnum, tupdesc, &isNull);
 
@@ -1284,7 +1293,7 @@ AlterDomainNotNull(List *names, bool notNull)
                                (errcode(ERRCODE_NOT_NULL_VIOLATION),
                                 errmsg("relation \"%s\" attribute \"%s\" contains NULL values",
                                        RelationGetRelationName(testrel),
-                                       NameStr(tupdesc->attrs[attnum - 1]->attname))));
+                        NameStr(tupdesc->attrs[attnum - 1]->attname))));
                }
            }
            heap_endscan(scan);
@@ -1295,7 +1304,7 @@ AlterDomainNotNull(List *names, bool notNull)
    }
 
    /*
-    * Okay to update pg_type row.  We can scribble on typTup because it's
+    * Okay to update pg_type row.  We can scribble on typTup because it's
     * a copy.
     */
    typTup->typnotnull = notNull;
@@ -1321,7 +1330,7 @@ AlterDomainDropConstraint(List *names, const char *constrName, DropBehavior beha
    Oid         domainoid;
    HeapTuple   tup;
    Relation    rel;
-   Form_pg_type    typTup;
+   Form_pg_type typTup;
    Relation    conrel;
    SysScanDesc conscan;
    ScanKeyData key[1];
@@ -1350,7 +1359,7 @@ AlterDomainDropConstraint(List *names, const char *constrName, DropBehavior beha
    if (!HeapTupleIsValid(tup))
        elog(ERROR, "cache lookup failed for type %u", domainoid);
 
-   /* Doesn't return if user isn't allowed to alter the domain */ 
+   /* Doesn't return if user isn't allowed to alter the domain */
    domainOwnerCheck(tup, typename);
 
    /* Grab an appropriate lock on the pg_constraint relation */
@@ -1403,15 +1412,15 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
    Oid         domainoid;
    Relation    typrel;
    HeapTuple   tup;
-   Form_pg_type    typTup;
-   List   *rels;
-   List   *rt;
-   EState *estate;
+   Form_pg_type typTup;
+   List       *rels;
+   List       *rt;
+   EState     *estate;
    ExprContext *econtext;
-   char   *ccbin;
-   Expr   *expr;
-   ExprState *exprstate;
-   int     counter = 0;
+   char       *ccbin;
+   Expr       *expr;
+   ExprState  *exprstate;
+   int         counter = 0;
    Constraint *constr;
 
    /* Make a TypeName so we can use standard type lookup machinery */
@@ -1438,14 +1447,14 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
        elog(ERROR, "cache lookup failed for type %u", domainoid);
    typTup = (Form_pg_type) GETSTRUCT(tup);
 
-   /* Doesn't return if user isn't allowed to alter the domain */ 
+   /* Doesn't return if user isn't allowed to alter the domain */
    domainOwnerCheck(tup, typename);
 
    /* Check for unsupported constraint types */
    if (IsA(newConstraint, FkConstraint))
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("FOREIGN KEY constraints not supported for domains")));
+          errmsg("FOREIGN KEY constraints not supported for domains")));
 
    /* otherwise it should be a plain Constraint */
    if (!IsA(newConstraint, Constraint))
@@ -1469,20 +1478,20 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
                     errmsg("use ALTER DOMAIN .. [ SET | DROP ] NOT NULL instead")));
            break;
 
-       case CONSTR_CHECK:
+       case CONSTR_CHECK:
            /* processed below */
-           break;
+           break;
 
        case CONSTR_UNIQUE:
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("UNIQUE constraints not supported for domains")));
+               errmsg("UNIQUE constraints not supported for domains")));
            break;
 
        case CONSTR_PRIMARY:
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("PRIMARY KEY constraints not supported for domains")));
+           errmsg("PRIMARY KEY constraints not supported for domains")));
            break;
 
        case CONSTR_ATTR_DEFERRABLE:
@@ -1501,18 +1510,18 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
    }
 
    /*
-    * Since all other constraint types throw errors, this must be
-    * a check constraint.  First, process the constraint expression
-    * and add an entry to pg_constraint.
+    * Since all other constraint types throw errors, this must be a check
+    * constraint.  First, process the constraint expression and add an
+    * entry to pg_constraint.
     */
 
    ccbin = domainAddConstraint(HeapTupleGetOid(tup), typTup->typnamespace,
                                typTup->typbasetype, typTup->typtypmod,
-                               constr, &counter, NameStr(typTup->typname));
+                            constr, &counter, NameStr(typTup->typname));
 
    /*
-    * Test all values stored in the attributes based on the domain
-    * the constraint is being added to.
+    * Test all values stored in the attributes based on the domain the
+    * constraint is being added to.
     */
    expr = (Expr *) stringToNode(ccbin);
 
@@ -1528,7 +1537,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
 
    rels = get_rels_with_domain(domainoid, ShareLock);
 
-   foreach (rt, rels)
+   foreach(rt, rels)
    {
        RelToCheck *rtc = (RelToCheck *) lfirst(rt);
        Relation    testrel = rtc->rel;
@@ -1540,15 +1549,15 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
        scan = heap_beginscan(testrel, SnapshotNow, 0, NULL);
        while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
        {
-           int     i;
+           int         i;
 
            /* Test attributes that are of the domain */
            for (i = 0; i < rtc->natts; i++)
            {
-               int     attnum = rtc->atts[i];
-               Datum   d;
-               bool    isNull;
-               Datum   conResult;
+               int         attnum = rtc->atts[i];
+               Datum       d;
+               bool        isNull;
+               Datum       conResult;
 
                d = heap_getattr(tuple, attnum, tupdesc, &isNull);
 
@@ -1564,7 +1573,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
                            (errcode(ERRCODE_CHECK_VIOLATION),
                             errmsg("relation \"%s\" attribute \"%s\" contains values that violate the new constraint",
                                    RelationGetRelationName(testrel),
-                                   NameStr(tupdesc->attrs[attnum - 1]->attname))));
+                        NameStr(tupdesc->attrs[attnum - 1]->attname))));
            }
 
            ResetExprContext(econtext);
@@ -1610,7 +1619,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint)
 static List *
 get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
 {
-   List *result = NIL;
+   List       *result = NIL;
    Relation    depRel;
    ScanKeyData key[2];
    SysScanDesc depScan;
@@ -1634,10 +1643,10 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
 
    while (HeapTupleIsValid(depTup = systable_getnext(depScan)))
    {
-       Form_pg_depend      pg_depend = (Form_pg_depend) GETSTRUCT(depTup);
+       Form_pg_depend pg_depend = (Form_pg_depend) GETSTRUCT(depTup);
        RelToCheck *rtc = NULL;
        List       *rellist;
-       Form_pg_attribute   pg_att;
+       Form_pg_attribute pg_att;
        int         ptr;
 
        /* Ignore dependees that aren't user columns of tables */
@@ -1675,10 +1684,10 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
        }
 
        /*
-        * Confirm column has not been dropped, and is of the expected type.
-        * This defends against an ALTER DROP COLUMN occuring just before
-        * we acquired lock ... but if the whole table were dropped, we'd
-        * still have a problem.
+        * Confirm column has not been dropped, and is of the expected
+        * type. This defends against an ALTER DROP COLUMN occuring just
+        * before we acquired lock ... but if the whole table were
+        * dropped, we'd still have a problem.
         */
        if (pg_depend->objsubid > RelationGetNumberOfAttributes(rtc->rel))
            continue;
@@ -1687,16 +1696,16 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
            continue;
 
        /*
-        * Okay, add column to result.  We store the columns in column-number
-        * order; this is just a hack to improve predictability of regression
-        * test output ...
+        * Okay, add column to result.  We store the columns in
+        * column-number order; this is just a hack to improve
+        * predictability of regression test output ...
         */
        Assert(rtc->natts < RelationGetNumberOfAttributes(rtc->rel));
 
        ptr = rtc->natts++;
-       while (ptr > 0 && rtc->atts[ptr-1] > pg_depend->objsubid)
+       while (ptr > 0 && rtc->atts[ptr - 1] > pg_depend->objsubid)
        {
-           rtc->atts[ptr] = rtc->atts[ptr-1];
+           rtc->atts[ptr] = rtc->atts[ptr - 1];
            ptr--;
        }
        rtc->atts[ptr] = pg_depend->objsubid;
@@ -1719,7 +1728,7 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
 static void
 domainOwnerCheck(HeapTuple tup, TypeName *typename)
 {
-   Form_pg_type    typTup = (Form_pg_type) GETSTRUCT(tup);
+   Form_pg_type typTup = (Form_pg_type) GETSTRUCT(tup);
 
    /* Check that this is actually a domain */
    if (typTup->typtype != 'd')
@@ -1746,7 +1755,7 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
    char       *ccsrc;
    char       *ccbin;
    ParseState *pstate;
-   CoerceToDomainValue  *domVal;
+   CoerceToDomainValue *domVal;
 
    /*
     * Assign or validate constraint name
@@ -1759,8 +1768,8 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
                                 constr->name))
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_OBJECT),
-                    errmsg("constraint \"%s\" for domain \"%s\" already exists",
-                           constr->name, domainName)));
+            errmsg("constraint \"%s\" for domain \"%s\" already exists",
+                   constr->name, domainName)));
    }
    else
        constr->name = GenerateConstraintName(CONSTRAINT_DOMAIN,
@@ -1775,10 +1784,10 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
 
    /*
     * Set up a CoerceToDomainValue to represent the occurrence of VALUE
-    * in the expression.  Note that it will appear to have the type of the
-    * base type, not the domain.  This seems correct since within the
-    * check expression, we should not assume the input value can be considered
-    * a member of the domain.
+    * in the expression.  Note that it will appear to have the type of
+    * the base type, not the domain.  This seems correct since within the
+    * check expression, we should not assume the input value can be
+    * considered a member of the domain.
     */
    domVal = makeNode(CoerceToDomainValue);
    domVal->typeId = baseTypeOid;
@@ -1841,13 +1850,13 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
    /*
     * Store the constraint in pg_constraint
     */
-   CreateConstraintEntry(constr->name,     /* Constraint Name */
-                         domainNamespace,  /* namespace */
+   CreateConstraintEntry(constr->name, /* Constraint Name */
+                         domainNamespace,      /* namespace */
                          CONSTRAINT_CHECK,     /* Constraint Type */
                          false,    /* Is Deferrable */
                          false,    /* Is Deferred */
-                         InvalidOid,       /* not a relation constraint */
-                         NULL, 
+                         InvalidOid,   /* not a relation constraint */
+                         NULL,
                          0,
                          domainOid,    /* domain constraint */
                          InvalidOid,   /* Foreign key fields */
@@ -1857,13 +1866,13 @@ domainAddConstraint(Oid domainOid, Oid domainNamespace, Oid baseTypeOid,
                          ' ',
                          ' ',
                          InvalidOid,
-                         expr,     /* Tree form check constraint */
+                         expr, /* Tree form check constraint */
                          ccbin,    /* Binary form check constraint */
-                         ccsrc);   /* Source form check constraint */
+                         ccsrc);       /* Source form check constraint */
 
    /*
-    * Return the compiled constraint expression so the calling routine can
-    * perform any additional required tests.
+    * Return the compiled constraint expression so the calling routine
+    * can perform any additional required tests.
     */
    return ccbin;
 }
@@ -1893,7 +1902,7 @@ GetDomainConstraints(Oid typeOid)
        Form_pg_type typTup;
        ScanKeyData key[1];
        SysScanDesc scan;
-       
+
        tup = SearchSysCache(TYPEOID,
                             ObjectIdGetDatum(typeOid),
                             0, 0, 0);
@@ -1915,17 +1924,20 @@ GetDomainConstraints(Oid typeOid)
 
        while (HeapTupleIsValid(conTup = systable_getnext(scan)))
        {
-           Form_pg_constraint  c = (Form_pg_constraint) GETSTRUCT(conTup);
-           Datum   val;
-           bool    isNull;
-           Expr   *check_expr;
+           Form_pg_constraint c = (Form_pg_constraint) GETSTRUCT(conTup);
+           Datum       val;
+           bool        isNull;
+           Expr       *check_expr;
            DomainConstraintState *r;
 
            /* Ignore non-CHECK constraints (presently, shouldn't be any) */
            if (c->contype != CONSTRAINT_CHECK)
                continue;
 
-           /* Not expecting conbin to be NULL, but we'll test for it anyway */
+           /*
+            * Not expecting conbin to be NULL, but we'll test for it
+            * anyway
+            */
            val = fastgetattr(conTup, Anum_pg_constraint_conbin,
                              conRel->rd_att, &isNull);
            if (isNull)
@@ -1945,8 +1957,8 @@ GetDomainConstraints(Oid typeOid)
            r->check_expr = ExecInitExpr(check_expr, NULL);
 
            /*
-            * use lcons() here because constraints of lower domains should
-            * be applied earlier.
+            * use lcons() here because constraints of lower domains
+            * should be applied earlier.
             */
            result = lcons(r, result);
        }
@@ -2003,7 +2015,7 @@ AlterTypeOwner(List *names, AclId newOwnerSysId)
    Oid         typeOid;
    Relation    rel;
    HeapTuple   tup;
-   Form_pg_type    typTup;
+   Form_pg_type typTup;
 
    /* Make a TypeName so we can use standard type lookup machinery */
    typename = makeNode(TypeName);
index 36416a5232fe14dfabc5ffa72990d5e1eae0031b..117eef1e7505d0cadedbf355d10b2ba63419d16d 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.122 2003/08/01 00:15:19 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.123 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -146,12 +146,12 @@ write_group_file(Relation grel)
    if (fp == NULL)
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not write temp file \"%s\": %m", tempname)));
+             errmsg("could not write temp file \"%s\": %m", tempname)));
 
    /*
-    * Read pg_group and write the file.  Note we use SnapshotSelf to ensure
-    * we see all effects of current transaction.  (Perhaps could do a
-    * CommandCounterIncrement beforehand, instead?)
+    * Read pg_group and write the file.  Note we use SnapshotSelf to
+    * ensure we see all effects of current transaction.  (Perhaps could
+    * do a CommandCounterIncrement beforehand, instead?)
     */
    scan = heap_beginscan(grel, SnapshotSelf, 0, NULL);
    while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
@@ -212,7 +212,7 @@ write_group_file(Relation grel)
                if (usename[j] != '\0')
                {
                    ereport(LOG,
-                           (errmsg("invalid user name \"%s\"", usename)));
+                         (errmsg("invalid user name \"%s\"", usename)));
                    continue;
                }
 
@@ -245,7 +245,7 @@ write_group_file(Relation grel)
    if (ferror(fp))
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not write temp file \"%s\": %m", tempname)));
+             errmsg("could not write temp file \"%s\": %m", tempname)));
    FreeFile(fp);
 
    /*
@@ -294,12 +294,12 @@ write_user_file(Relation urel)
    if (fp == NULL)
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not write temp file \"%s\": %m", tempname)));
+             errmsg("could not write temp file \"%s\": %m", tempname)));
 
    /*
-    * Read pg_shadow and write the file.  Note we use SnapshotSelf to ensure
-    * we see all effects of current transaction.  (Perhaps could do a
-    * CommandCounterIncrement beforehand, instead?)
+    * Read pg_shadow and write the file.  Note we use SnapshotSelf to
+    * ensure we see all effects of current transaction.  (Perhaps could
+    * do a CommandCounterIncrement beforehand, instead?)
     */
    scan = heap_beginscan(urel, SnapshotSelf, 0, NULL);
    while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
@@ -376,7 +376,7 @@ write_user_file(Relation urel)
    if (ferror(fp))
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not write temp file \"%s\": %m", tempname)));
+             errmsg("could not write temp file \"%s\": %m", tempname)));
    FreeFile(fp);
 
    /*
@@ -430,10 +430,10 @@ AtEOXact_UpdatePasswordFile(bool isCommit)
    Relation    urel = NULL;
    Relation    grel = NULL;
 
-   if (! (user_file_update_needed || group_file_update_needed))
+   if (!(user_file_update_needed || group_file_update_needed))
        return;
 
-   if (! isCommit)
+   if (!isCommit)
    {
        user_file_update_needed = false;
        group_file_update_needed = false;
@@ -441,12 +441,12 @@ AtEOXact_UpdatePasswordFile(bool isCommit)
    }
 
    /*
-    * We use ExclusiveLock to ensure that only one backend writes the flat
-    * file(s) at a time.  That's sufficient because it's okay to allow plain
-    * reads of the tables in parallel.  There is some chance of a deadlock
-    * here (if we were triggered by a user update of pg_shadow or pg_group,
-    * which likely won't have gotten a strong enough lock), so get the locks
-    * we need before writing anything.
+    * We use ExclusiveLock to ensure that only one backend writes the
+    * flat file(s) at a time.  That's sufficient because it's okay to
+    * allow plain reads of the tables in parallel.  There is some chance
+    * of a deadlock here (if we were triggered by a user update of
+    * pg_shadow or pg_group, which likely won't have gotten a strong
+    * enough lock), so get the locks we need before writing anything.
     */
    if (user_file_update_needed)
        urel = heap_openr(ShadowRelationName, ExclusiveLock);
@@ -1088,7 +1088,7 @@ DropUser(DropUserStmt *stmt)
            ereport(ERROR,
                    (errcode(ERRCODE_OBJECT_IN_USE),
                     errmsg("user \"%s\" cannot be dropped", user),
-                    errdetail("The user owns database \"%s\".", dbname)));
+                  errdetail("The user owns database \"%s\".", dbname)));
        }
 
        heap_endscan(scan);
@@ -1172,10 +1172,10 @@ RenameUser(const char *oldname, const char *newname)
                 errmsg("user \"%s\" does not exist", oldname)));
 
    /*
-    * XXX Client applications probably store the session user
-    * somewhere, so renaming it could cause confusion.  On the other
-    * hand, there may not be an actual problem besides a little
-    * confusion, so think about this and decide.
+    * XXX Client applications probably store the session user somewhere,
+    * so renaming it could cause confusion.  On the other hand, there may
+    * not be an actual problem besides a little confusion, so think about
+    * this and decide.
     */
    if (((Form_pg_shadow) GETSTRUCT(tup))->usesysid == GetSessionUserId())
        ereport(ERROR,
@@ -1221,14 +1221,14 @@ CheckPgUserAclNotNull(void)
    htup = SearchSysCache(RELOID,
                          ObjectIdGetDatum(RelOid_pg_shadow),
                          0, 0, 0);
-   if (!HeapTupleIsValid(htup)) /* should not happen, we hope */
+   if (!HeapTupleIsValid(htup))    /* should not happen, we hope */
        elog(ERROR, "cache lookup failed for relation %u", RelOid_pg_shadow);
 
    if (heap_attisnull(htup, Anum_pg_class_relacl))
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("before using passwords you must revoke permissions on %s",
-                       ShadowRelationName),
+       errmsg("before using passwords you must revoke permissions on %s",
+              ShadowRelationName),
                 errdetail("This restriction is to prevent unprivileged users from reading the passwords."),
                 errhint("Try 'REVOKE ALL ON \"%s\" FROM PUBLIC'.",
                         ShadowRelationName)));
index e73ace27c27398d4ddeab88d4cd69d8293f3d876..9dc0d9a8996096fb995efbb9ab2e0e019fd331a0 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.257 2003/07/20 21:56:34 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.258 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -287,24 +287,25 @@ vacuum(VacuumStmt *vacstmt)
 
        if (vacstmt->vacuum)
        {
-           if (! vacuum_rel(relid, vacstmt, RELKIND_RELATION))
-               all_rels = false; /* forget about updating dbstats */
+           if (!vacuum_rel(relid, vacstmt, RELKIND_RELATION))
+               all_rels = false;       /* forget about updating dbstats */
        }
        if (vacstmt->analyze)
        {
            MemoryContext old_context = NULL;
 
            /*
-            * If we vacuumed, use new transaction for analyze.
-            * Otherwise, we can use the outer transaction, but we still
-            * need to call analyze_rel in a memory context that will be
-            * cleaned up on return (else we leak memory while processing
-            * multiple tables).
+            * If we vacuumed, use new transaction for analyze. Otherwise,
+            * we can use the outer transaction, but we still need to call
+            * analyze_rel in a memory context that will be cleaned up on
+            * return (else we leak memory while processing multiple
+            * tables).
             */
            if (vacstmt->vacuum)
            {
                StartTransactionCommand();
-               SetQuerySnapshot(); /* might be needed for functions in indexes */
+               SetQuerySnapshot();     /* might be needed for functions
+                                        * in indexes */
            }
            else
                old_context = MemoryContextSwitchTo(anl_context);
@@ -734,7 +735,8 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, char expected_relkind)
 
    /* Begin a transaction for vacuuming this relation */
    StartTransactionCommand();
-   SetQuerySnapshot();         /* might be needed for functions in indexes */
+   SetQuerySnapshot();         /* might be needed for functions in
+                                * indexes */
 
    /*
     * Check for user-requested abort.  Note we want this to be inside a
@@ -812,7 +814,8 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, char expected_relkind)
    {
        relation_close(onerel, lmode);
        CommitTransactionCommand();
-       return true;            /* assume no long-lived data in temp tables */
+       return true;            /* assume no long-lived data in temp
+                                * tables */
    }
 
    /*
@@ -860,7 +863,7 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, char expected_relkind)
     */
    if (toast_relid != InvalidOid)
    {
-       if (! vacuum_rel(toast_relid, vacstmt, RELKIND_TOASTVALUE))
+       if (!vacuum_rel(toast_relid, vacstmt, RELKIND_TOASTVALUE))
            result = false;     /* failed to vacuum the TOAST table? */
    }
 
@@ -1087,8 +1090,8 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
        if (PageIsNew(page))
        {
            ereport(WARNING,
-                   (errmsg("relation \"%s\" page %u is uninitialized --- fixing",
-                           relname, blkno)));
+           (errmsg("relation \"%s\" page %u is uninitialized --- fixing",
+                   relname, blkno)));
            PageInit(page, BufferGetPageSize(buf), 0);
            vacpage->free = ((PageHeader) page)->pd_upper - ((PageHeader) page)->pd_lower;
            free_space += vacpage->free;
@@ -1314,7 +1317,8 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
 
        /*
         * Include the page in empty_end_pages if it will be empty after
-        * vacuuming; this is to keep us from using it as a move destination.
+        * vacuuming; this is to keep us from using it as a move
+        * destination.
         */
        if (notup)
        {
@@ -1382,9 +1386,9 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
                    RelationGetRelationName(onerel),
                    tups_vacuumed, num_tuples, nblocks),
             errdetail("%.0f dead tuples cannot be removed yet.\n"
-                      "Nonremovable tuples range from %lu to %lu bytes long.\n"
+               "Nonremovable tuples range from %lu to %lu bytes long.\n"
                       "There were %.0f unused item pointers.\n"
-                      "Total free space (including removable tuples) is %.0f bytes.\n"
+        "Total free space (including removable tuples) is %.0f bytes.\n"
                       "%u pages are or will become empty, including %u at the end of the table.\n"
                       "%u pages containing %.0f free bytes are potential move destinations.\n"
                       "%s",
@@ -2380,8 +2384,8 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
    /*
     * It'd be cleaner to make this report at the bottom of this routine,
     * but then the rusage would double-count the second pass of index
-    * vacuuming.  So do it here and ignore the relatively small amount
-    * of processing that occurs below.
+    * vacuuming.  So do it here and ignore the relatively small amount of
+    * processing that occurs below.
     */
    ereport(elevel,
            (errmsg("\"%s\": moved %u tuples, truncated %u to %u pages",
@@ -2735,7 +2739,7 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
                    stats->num_index_tuples,
                    stats->num_pages),
             errdetail("%.0f index tuples were removed.\n"
-                      "%u index pages have been deleted, %u are currently reusable.\n"
+        "%u index pages have been deleted, %u are currently reusable.\n"
                       "%s",
                       stats->tuples_removed,
                       stats->pages_deleted, stats->pages_free,
@@ -2752,7 +2756,7 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
            ereport(WARNING,
                    (errmsg("index \"%s\" contains %.0f tuples, but table contains %.0f tuples",
                            RelationGetRelationName(indrel),
-                           stats->num_index_tuples, num_tuples + keep_tuples),
+                     stats->num_index_tuples, num_tuples + keep_tuples),
                     errhint("Rebuild the index with REINDEX.")));
    }
 
@@ -2837,13 +2841,14 @@ vac_update_fsm(Relation onerel, VacPageList fraged_pages,
 
    /*
     * We only report pages with free space at least equal to the average
-    * request size --- this avoids cluttering FSM with uselessly-small bits
-    * of space.  Although FSM would discard pages with little free space
-    * anyway, it's important to do this prefiltering because (a) it reduces
-    * the time spent holding the FSM lock in RecordRelationFreeSpace, and
-    * (b) FSM uses the number of pages reported as a statistic for guiding
-    * space management.  If we didn't threshold our reports the same way
-    * vacuumlazy.c does, we'd be skewing that statistic.
+    * request size --- this avoids cluttering FSM with uselessly-small
+    * bits of space.  Although FSM would discard pages with little free
+    * space anyway, it's important to do this prefiltering because (a) it
+    * reduces the time spent holding the FSM lock in
+    * RecordRelationFreeSpace, and (b) FSM uses the number of pages
+    * reported as a statistic for guiding space management.  If we didn't
+    * threshold our reports the same way vacuumlazy.c does, we'd be
+    * skewing that statistic.
     */
    threshold = GetAvgFSMRequestSize(&onerel->rd_node);
 
index f0be98a23ed1803fab412f59c1a2c878248ebf91..65af960be8e9847b823783d8fcc2dc146a059171 100644 (file)
@@ -31,7 +31,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.29 2003/07/20 21:56:34 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.30 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -79,7 +79,7 @@ typedef struct LVRelStats
    bool        fs_is_heap;     /* are we using heap organization? */
    int         num_free_pages; /* current # of entries */
    int         max_free_pages; /* # slots allocated in array */
-   PageFreeSpaceInfo *free_pages;  /* array or heap of blkno/avail */
+   PageFreeSpaceInfo *free_pages;      /* array or heap of blkno/avail */
 } LVRelStats;
 
 
@@ -162,7 +162,7 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt)
     */
    possibly_freeable = vacrelstats->rel_pages - vacrelstats->nonempty_pages;
    if (possibly_freeable >= REL_TRUNCATE_MINIMUM ||
-       possibly_freeable >= vacrelstats->rel_pages / REL_TRUNCATE_FRACTION)
+    possibly_freeable >= vacrelstats->rel_pages / REL_TRUNCATE_FRACTION)
        lazy_truncate_heap(onerel, vacrelstats);
 
    /* Update shared free space map with final free space info */
@@ -659,7 +659,7 @@ lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats)
                    stats->num_index_tuples,
                    stats->num_pages),
             errdetail("%.0f index tuples were removed.\n"
-                      "%u index pages have been deleted, %u are currently reusable.\n"
+        "%u index pages have been deleted, %u are currently reusable.\n"
                       "%s",
                       stats->tuples_removed,
                       stats->pages_deleted, stats->pages_free,
@@ -966,16 +966,18 @@ lazy_record_free_space(LVRelStats *vacrelstats,
    /*
     * A page with less than stats->threshold free space will be forgotten
     * immediately, and never passed to the free space map.  Removing the
-    * uselessly small entries early saves cycles, and in particular reduces
-    * the amount of time we spend holding the FSM lock when we finally call
-    * RecordRelationFreeSpace.  Since the FSM will probably drop pages with
-    * little free space anyway, there's no point in making this really small.
+    * uselessly small entries early saves cycles, and in particular
+    * reduces the amount of time we spend holding the FSM lock when we
+    * finally call RecordRelationFreeSpace.  Since the FSM will probably
+    * drop pages with little free space anyway, there's no point in
+    * making this really small.
     *
-    * XXX Is it worth trying to measure average tuple size, and using that to
-    * adjust the threshold?  Would be worthwhile if FSM has no stats yet
-    * for this relation.  But changing the threshold as we scan the rel
-    * might lead to bizarre behavior, too.  Also, it's probably better if
-    * vacuum.c has the same thresholding behavior as we do here.
+    * XXX Is it worth trying to measure average tuple size, and using that
+    * to adjust the threshold?  Would be worthwhile if FSM has no stats
+    * yet for this relation.  But changing the threshold as we scan the
+    * rel might lead to bizarre behavior, too.  Also, it's probably
+    * better if vacuum.c has the same thresholding behavior as we do
+    * here.
     */
    if (avail < vacrelstats->threshold)
        return;
@@ -996,7 +998,7 @@ lazy_record_free_space(LVRelStats *vacrelstats,
    /*----------
     * The rest of this routine works with "heap" organization of the
     * free space arrays, wherein we maintain the heap property
-    *          avail[(j-1) div 2] <= avail[j]  for 0 < j < n.
+    *          avail[(j-1) div 2] <= avail[j]  for 0 < j < n.
     * In particular, the zero'th element always has the smallest available
     * space and can be discarded to make room for a new page with more space.
     * See Knuth's discussion of heap-based priority queues, sec 5.2.3;
index e0b041636e6f3965a7378e8cd44c95509dddaa07..07dfca13c84284d73b8cd90cca43f5fbda8592f8 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.85 2003/07/29 00:03:18 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.86 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -34,7 +34,7 @@
  * to duplicate the test in AC_STRUCT_TIMEZONE.
  */
 #ifdef HAVE_TZNAME
-#ifndef tzname /* For SGI.  */
+#ifndef tzname                 /* For SGI.  */
 extern char *tzname[];
 #endif
 #endif
@@ -273,12 +273,11 @@ static void
 clear_tz(void)
 {
    /*
-    * unsetenv() works fine, but is BSD, not POSIX, and is not
-    * available under Solaris, among others. Apparently putenv()
-    * called as below clears the process-specific environment
-    * variables.  Other reasonable arguments to putenv() (e.g.
-    * "TZ=", "TZ", "") result in a core dump (under Linux
-    * anyway). - thomas 1998-01-26
+    * unsetenv() works fine, but is BSD, not POSIX, and is not available
+    * under Solaris, among others. Apparently putenv() called as below
+    * clears the process-specific environment variables.  Other
+    * reasonable arguments to putenv() (e.g. "TZ=", "TZ", "") result in a
+    * core dump (under Linux anyway). - thomas 1998-01-26
     */
    if (tzbuf[0] == 'T')
    {
@@ -298,14 +297,14 @@ clear_tz(void)
  *
  * If tzname[1] is a nonempty string, *or* the global timezone variable is
  * not zero, then tzset must have recognized the TZ value as something
- * different from UTC.  Return true.
+ * different from UTC. Return true.
  *
  * Otherwise, check to see if the TZ name is a known spelling of "UTC"
  * (ie, appears in our internal tables as a timezone equivalent to UTC).
  * If so, accept it.
  *
  * This will reject nonstandard spellings of UTC unless tzset() chose to
- * set tzname[1] as well as tzname[0].  The glibc version of tzset() will
+ * set tzname[1] as well as tzname[0]. The glibc version of tzset() will
  * do so, but on other systems we may be tightening the spec a little.
  *
  * Another problem is that on some platforms (eg HPUX), if tzset thinks the
@@ -337,8 +336,8 @@ tzset_succeeded(const char *tz)
        return true;
 
    /*
-    * Check for known spellings of "UTC".  Note we must downcase the input
-    * before passing it to DecodePosixTimezone().
+    * Check for known spellings of "UTC".  Note we must downcase the
+    * input before passing it to DecodePosixTimezone().
     */
    StrNCpy(tztmp, tz, sizeof(tztmp));
    for (cp = tztmp; *cp; cp++)
@@ -368,7 +367,7 @@ tz_acceptable(void)
 
    /*
     * To detect leap-second timekeeping, compute the time_t value for
-    * local midnight, 2000-01-01.  Insist that this be a multiple of 60;
+    * local midnight, 2000-01-01.  Insist that this be a multiple of 60;
     * any partial-minute offset has to be due to leap seconds.
     */
    MemSet(&tt, 0, sizeof(tt));
@@ -399,7 +398,7 @@ assign_timezone(const char *value, bool doit, bool interactive)
     */
    if (!have_saved_tz)
    {
-       char   *orig_tz = getenv("TZ");
+       char       *orig_tz = getenv("TZ");
 
        if (orig_tz)
            StrNCpy(orig_tzbuf, orig_tz, sizeof(orig_tzbuf));
@@ -434,9 +433,9 @@ assign_timezone(const char *value, bool doit, bool interactive)
 
        /*
         * Try to parse it.  XXX an invalid interval format will result in
-        * ereport, 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.
+        * ereport, 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.
         */
        interval = DatumGetIntervalP(DirectFunctionCall3(interval_in,
                                                    CStringGetDatum(val),
@@ -455,7 +454,7 @@ assign_timezone(const char *value, bool doit, bool interactive)
        if (doit)
        {
            /* Here we change from SQL to Unix sign convention */
-           CTimeZone = - interval->time;
+           CTimeZone = -interval->time;
            HasCTZSet = true;
        }
        pfree(interval);
@@ -471,22 +470,22 @@ assign_timezone(const char *value, bool doit, bool interactive)
            if (doit)
            {
                /* Here we change from SQL to Unix sign convention */
-               CTimeZone = - hours * 3600;
+               CTimeZone = -hours * 3600;
                HasCTZSet = true;
            }
        }
        else if (strcasecmp(value, "UNKNOWN") == 0)
        {
            /*
-            * UNKNOWN is the value shown as the "default" for TimeZone
-            * in guc.c.  We interpret it as meaning the original TZ
-            * inherited from the environment.  Note that if there is an
-            * original TZ setting, we will return that rather than UNKNOWN
-            * as the canonical spelling.
+            * UNKNOWN is the value shown as the "default" for TimeZone in
+            * guc.c.  We interpret it as meaning the original TZ
+            * inherited from the environment.  Note that if there is an
+            * original TZ setting, we will return that rather than
+            * UNKNOWN as the canonical spelling.
             */
            if (doit)
            {
-               bool    ok;
+               bool        ok;
 
                /* Revert to original setting of TZ, whatever it was */
                if (orig_tzbuf[0])
@@ -516,14 +515,14 @@ assign_timezone(const char *value, bool doit, bool interactive)
             * Otherwise assume it is a timezone name.
             *
             * We have to actually apply the change before we can have any
-            * hope of checking it.  So, save the old value in case we have
-            * to back out.  Note that it's possible the old setting is in
-            * tzbuf, so we'd better copy it.
+            * hope of checking it.  So, save the old value in case we
+            * have to back out.  Note that it's possible the old setting
+            * is in tzbuf, so we'd better copy it.
             */
-           char    save_tzbuf[TZBUF_LEN];
-           char   *save_tz;
-           bool    known,
-                   acceptable;
+           char        save_tzbuf[TZBUF_LEN];
+           char       *save_tz;
+           bool        known,
+                       acceptable;
 
            save_tz = getenv("TZ");
            if (save_tz)
@@ -563,8 +562,8 @@ assign_timezone(const char *value, bool doit, bool interactive)
                {
                    ereport(interactive ? ERROR : LOG,
                            (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                            errmsg("timezone \"%s\" appears to use leap seconds",
-                                   value),
+                   errmsg("timezone \"%s\" appears to use leap seconds",
+                          value),
                             errdetail("PostgreSQL does not support leap seconds")));
                    return NULL;
                }
@@ -609,7 +608,7 @@ show_timezone(void)
        Interval    interval;
 
        interval.month = 0;
-       interval.time = - CTimeZone;
+       interval.time = -CTimeZone;
 
        tzn = DatumGetCString(DirectFunctionCall1(interval_out,
                                          IntervalPGetDatum(&interval)));
@@ -703,16 +702,16 @@ assign_client_encoding(const char *value, bool doit, bool interactive)
    /*
     * Note: if we are in startup phase then SetClientEncoding may not be
     * able to really set the encoding.  In this case we will assume that
-    * the encoding is okay, and InitializeClientEncoding() will fix things
-    * once initialization is complete.
+    * the encoding is okay, and InitializeClientEncoding() will fix
+    * things once initialization is complete.
     */
    if (SetClientEncoding(encoding, doit) < 0)
    {
        if (interactive)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("conversion between %s and %s is not supported",
-                           value, GetDatabaseEncodingName())));
+                 errmsg("conversion between %s and %s is not supported",
+                        value, GetDatabaseEncodingName())));
        return NULL;
    }
    return value;
@@ -758,12 +757,12 @@ assign_session_authorization(const char *value, bool doit, bool interactive)
        /* not a saved ID, so look it up */
        HeapTuple   userTup;
 
-       if (! IsTransactionState())
+       if (!IsTransactionState())
        {
            /*
             * Can't do catalog lookups, so fail.  The upshot of this is
-            * that session_authorization cannot be set in postgresql.conf,
-            * which seems like a good thing anyway.
+            * that session_authorization cannot be set in
+            * postgresql.conf, which seems like a good thing anyway.
             */
            return NULL;
        }
@@ -782,7 +781,7 @@ assign_session_authorization(const char *value, bool doit, bool interactive)
 
        usesysid = ((Form_pg_shadow) GETSTRUCT(userTup))->usesysid;
        is_superuser = ((Form_pg_shadow) GETSTRUCT(userTup))->usesuper;
-       
+
        ReleaseSysCache(userTup);
    }
 
index e12ae0af6868a6f2a4811590b9f123b172c5d04d..9c3b372b3f7107dc7950db35468a163f33ffaabd 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/view.c,v 1.75 2003/08/01 00:15:20 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/view.c,v 1.76 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -190,8 +190,8 @@ checkViewTupleDesc(TupleDesc newdesc, TupleDesc olddesc)
            newattr->atttypmod != oldattr->atttypmod)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TABLE_DEFINITION),
-                    errmsg("cannot change datatype of view column \"%s\"",
-                           NameStr(oldattr->attname))));
+                  errmsg("cannot change datatype of view column \"%s\"",
+                         NameStr(oldattr->attname))));
        /* We can ignore the remaining attributes of an attribute... */
    }
 
index 61974827b3bb185726acc627895fc7a6e80f7493..9267d362dddd618bd4c13f4421c19e4d6e2fdf12 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.72 2003/07/21 17:05:00 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execAmi.c,v 1.73 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -48,7 +48,7 @@
  * ----------------------------------------------------------------
  */
 void
-ExecReScan(PlanState *node, ExprContext *exprCtxt)
+ExecReScan(PlanState * node, ExprContext *exprCtxt)
 {
    /* If collecting timing stats, update them */
    if (node->instrument)
@@ -61,7 +61,7 @@ ExecReScan(PlanState *node, ExprContext *exprCtxt)
 
        foreach(lst, node->initPlan)
        {
-           SubPlanState  *sstate = (SubPlanState *) lfirst(lst);
+           SubPlanState *sstate = (SubPlanState *) lfirst(lst);
            PlanState  *splan = sstate->planstate;
 
            if (splan->plan->extParam != NULL)  /* don't care about child
@@ -72,7 +72,7 @@ ExecReScan(PlanState *node, ExprContext *exprCtxt)
        }
        foreach(lst, node->subPlan)
        {
-           SubPlanState  *sstate = (SubPlanState *) lfirst(lst);
+           SubPlanState *sstate = (SubPlanState *) lfirst(lst);
            PlanState  *splan = sstate->planstate;
 
            if (splan->plan->extParam != NULL)
@@ -177,7 +177,7 @@ ExecReScan(PlanState *node, ExprContext *exprCtxt)
  * Marks the current scan position.
  */
 void
-ExecMarkPos(PlanState *node)
+ExecMarkPos(PlanState * node)
 {
    switch (nodeTag(node))
    {
@@ -218,7 +218,7 @@ ExecMarkPos(PlanState *node)
  * restores the scan position previously saved with ExecMarkPos()
  */
 void
-ExecRestrPos(PlanState *node)
+ExecRestrPos(PlanState * node)
 {
    switch (nodeTag(node))
    {
@@ -302,16 +302,16 @@ ExecSupportsBackwardScan(Plan *node)
                return false;
 
        case T_Append:
-       {
-           List   *l;
-
-           foreach(l, ((Append *) node)->appendplans)
            {
-               if (!ExecSupportsBackwardScan((Plan *) lfirst(l)))
-                   return false;
+               List       *l;
+
+               foreach(l, ((Append *) node)->appendplans)
+               {
+                   if (!ExecSupportsBackwardScan((Plan *) lfirst(l)))
+                       return false;
+               }
+               return true;
            }
-           return true;
-       }
 
        case T_SeqScan:
        case T_IndexScan:
index 3f9c6d0d47d4435e0ed3c7d20771a7c11e84ef71..8b0962ba9be56f83577c4e6779ff2c9d34801afb 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execGrouping.c,v 1.4 2003/07/21 17:05:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execGrouping.c,v 1.5 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -249,7 +249,7 @@ execTuplesHashPrepare(TupleDesc tupdesc,
        eq_function = oprfuncid(optup);
        ReleaseSysCache(optup);
        hash_function = get_op_hash_function(eq_opr);
-       if (!OidIsValid(hash_function)) /* should not happen */
+       if (!OidIsValid(hash_function)) /* should not happen */
            elog(ERROR, "could not find hash function for hash operator %u",
                 eq_opr);
        fmgr_info(eq_function, &(*eqfunctions)[i]);
@@ -289,8 +289,8 @@ BuildTupleHashTable(int numCols, AttrNumber *keyColIdx,
                    int nbuckets, Size entrysize,
                    MemoryContext tablecxt, MemoryContext tempcxt)
 {
-   TupleHashTable  hashtable;
-   Size            tabsize;
+   TupleHashTable hashtable;
+   Size        tabsize;
 
    Assert(nbuckets > 0);
    Assert(entrysize >= sizeof(TupleHashEntryData));
@@ -411,9 +411,9 @@ LookupTupleHashEntry(TupleHashTable hashtable, TupleTableSlot *slot,
  * Iterator state must be initialized with ResetTupleHashIterator() macro.
  */
 TupleHashEntry
-ScanTupleHashTable(TupleHashTable hashtable, TupleHashIterator *state)
+ScanTupleHashTable(TupleHashTable hashtable, TupleHashIterator * state)
 {
-   TupleHashEntry  entry;
+   TupleHashEntry entry;
 
    entry = state->next_entry;
    while (entry == NULL)
index ded748d5bf81e13cb8891ad4ab4e88edccbaa61c..ae58bb130f719b4a5d0d75fd8c969d0db83a8378 100644 (file)
@@ -26,7 +26,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.212 2003/08/01 00:15:20 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.213 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,7 +68,7 @@ static void initResultRelInfo(ResultRelInfo *resultRelInfo,
                  Index resultRelationIndex,
                  List *rangeTable,
                  CmdType operation);
-static TupleTableSlot *ExecutePlan(EState *estate, PlanState *planstate,
+static TupleTableSlot *ExecutePlan(EState *estate, PlanState * planstate,
            CmdType operation,
            long numberTuples,
            ScanDirection direction,
@@ -87,7 +87,7 @@ static void EndEvalPlanQual(EState *estate);
 static void ExecCheckRTEPerms(RangeTblEntry *rte, CmdType operation);
 static void ExecCheckXactReadOnly(Query *parsetree, CmdType operation);
 static void EvalPlanQualStart(evalPlanQual *epq, EState *estate,
-                             evalPlanQual *priorepq);
+                 evalPlanQual *priorepq);
 static void EvalPlanQualStop(evalPlanQual *epq);
 
 /* end of local decls */
@@ -100,7 +100,7 @@ static void EvalPlanQualStop(evalPlanQual *epq);
  *     query plan
  *
  * Takes a QueryDesc previously created by CreateQueryDesc (it's not real
- * clear why we bother to separate the two functions, but...).  The tupDesc
+ * clear why we bother to separate the two functions, but...). The tupDesc
  * field of the QueryDesc is filled in to describe the tuples that will be
  * returned, and the internal fields (estate and planstate) are set up.
  *
@@ -122,8 +122,8 @@ ExecutorStart(QueryDesc *queryDesc, bool explainOnly)
    Assert(queryDesc->estate == NULL);
 
    /*
-    * If the transaction is read-only, we need to check if any writes
-    * are planned to non-temporary tables.
+    * If the transaction is read-only, we need to check if any writes are
+    * planned to non-temporary tables.
     */
    if (!explainOnly)
        ExecCheckXactReadOnly(queryDesc->parsetree, queryDesc->operation);
@@ -362,8 +362,8 @@ ExecCheckRTEPerms(RangeTblEntry *rte, CmdType operation)
 
    /*
     * Otherwise, only plain-relation RTEs need to be checked here.
-    * Function RTEs are checked by init_fcache when the function is prepared
-    * for execution. Join and special RTEs need no checks.
+    * Function RTEs are checked by init_fcache when the function is
+    * prepared for execution. Join and special RTEs need no checks.
     */
    if (rte->rtekind != RTE_RELATION)
        return;
@@ -435,7 +435,7 @@ ExecCheckXactReadOnly(Query *parsetree, CmdType operation)
    if (operation == CMD_DELETE || operation == CMD_INSERT
        || operation == CMD_UPDATE)
    {
-       List *lp;
+       List       *lp;
 
        foreach(lp, parsetree->rtable)
        {
@@ -474,9 +474,9 @@ static void
 InitPlan(QueryDesc *queryDesc, bool explainOnly)
 {
    CmdType     operation = queryDesc->operation;
-   Query *parseTree = queryDesc->parsetree;
-   Plan *plan = queryDesc->plantree;
-   EState *estate = queryDesc->estate;
+   Query      *parseTree = queryDesc->parsetree;
+   Plan       *plan = queryDesc->plantree;
+   EState     *estate = queryDesc->estate;
    PlanState  *planstate;
    List       *rangeTable;
    Relation    intoRelationDesc;
@@ -484,8 +484,8 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
    TupleDesc   tupType;
 
    /*
-    * Do permissions checks.  It's sufficient to examine the query's
-    * top rangetable here --- subplan RTEs will be checked during
+    * Do permissions checks.  It's sufficient to examine the query's top
+    * rangetable here --- subplan RTEs will be checked during
     * ExecInitSubPlan().
     */
    ExecCheckRTPerms(parseTree->rtable, operation);
@@ -570,10 +570,11 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
    if (operation == CMD_SELECT && parseTree->into != NULL)
    {
        do_select_into = true;
+
        /*
-        * For now, always create OIDs in SELECT INTO; this is for backwards
-        * compatibility with pre-7.3 behavior.  Eventually we might want
-        * to allow the user to choose.
+        * For now, always create OIDs in SELECT INTO; this is for
+        * backwards compatibility with pre-7.3 behavior.  Eventually we
+        * might want to allow the user to choose.
         */
        estate->es_force_oids = true;
    }
@@ -640,12 +641,12 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
    tupType = ExecGetResultType(planstate);
 
    /*
-    * Initialize the junk filter if needed.  SELECT and INSERT queries need a
-    * filter if there are any junk attrs in the tlist.  INSERT and SELECT
-    * INTO also need a filter if the top plan node is a scan node that's not
-    * doing projection (else we'll be scribbling on the scan tuple!)  UPDATE
-    * and DELETE always need a filter, since there's always a junk 'ctid'
-    * attribute present --- no need to look first.
+    * Initialize the junk filter if needed.  SELECT and INSERT queries
+    * need a filter if there are any junk attrs in the tlist.  INSERT and
+    * SELECT INTO also need a filter if the top plan node is a scan node
+    * that's not doing projection (else we'll be scribbling on the scan
+    * tuple!)  UPDATE and DELETE always need a filter, since there's
+    * always a junk 'ctid' attribute present --- no need to look first.
     */
    {
        bool        junk_filter_needed = false;
@@ -752,8 +753,8 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
 
    /*
     * If doing SELECT INTO, initialize the "into" relation.  We must wait
-    * till now so we have the "clean" result tuple type to create the
-    * new table from.
+    * till now so we have the "clean" result tuple type to create the new
+    * table from.
     *
     * If EXPLAIN, skip creating the "into" relation.
     */
@@ -795,16 +796,16 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
        FreeTupleDesc(tupdesc);
 
        /*
-        * Advance command counter so that the newly-created
-        * relation's catalog tuples will be visible to heap_open.
+        * Advance command counter so that the newly-created relation's
+        * catalog tuples will be visible to heap_open.
         */
        CommandCounterIncrement();
 
        /*
-        * If necessary, create a TOAST table for the into
-        * relation. Note that AlterTableCreateToastTable ends
-        * with CommandCounterIncrement(), so that the TOAST table
-        * will be visible for insertion.
+        * If necessary, create a TOAST table for the into relation. Note
+        * that AlterTableCreateToastTable ends with
+        * CommandCounterIncrement(), so that the TOAST table will be
+        * visible for insertion.
         */
        AlterTableCreateToastTable(intoRelationId, true);
 
@@ -841,19 +842,19 @@ initResultRelInfo(ResultRelInfo *resultRelInfo,
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                     errmsg("cannot change sequence relation \"%s\"",
-                           RelationGetRelationName(resultRelationDesc))));
+                         RelationGetRelationName(resultRelationDesc))));
            break;
        case RELKIND_TOASTVALUE:
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                     errmsg("cannot change toast relation \"%s\"",
-                           RelationGetRelationName(resultRelationDesc))));
+                         RelationGetRelationName(resultRelationDesc))));
            break;
        case RELKIND_VIEW:
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                     errmsg("cannot change view relation \"%s\"",
-                           RelationGetRelationName(resultRelationDesc))));
+                         RelationGetRelationName(resultRelationDesc))));
            break;
    }
 
@@ -894,7 +895,7 @@ initResultRelInfo(ResultRelInfo *resultRelInfo,
  * ----------------------------------------------------------------
  */
 void
-ExecEndPlan(PlanState *planstate, EState *estate)
+ExecEndPlan(PlanState * planstate, EState *estate)
 {
    ResultRelInfo *resultRelInfo;
    int         i;
@@ -964,18 +965,18 @@ ExecEndPlan(PlanState *planstate, EState *estate)
  */
 static TupleTableSlot *
 ExecutePlan(EState *estate,
-           PlanState *planstate,
+           PlanState * planstate,
            CmdType operation,
            long numberTuples,
            ScanDirection direction,
            DestReceiver *dest)
 {
-   JunkFilter          *junkfilter;
-   TupleTableSlot      *slot;
-   ItemPointer          tupleid = NULL;
-   ItemPointerData      tuple_ctid;
-   long                 current_tuple_count;
-   TupleTableSlot      *result;
+   JunkFilter *junkfilter;
+   TupleTableSlot *slot;
+   ItemPointer tupleid = NULL;
+   ItemPointerData tuple_ctid;
+   long        current_tuple_count;
+   TupleTableSlot *result;
 
    /*
     * initialize local variables
@@ -1199,7 +1200,7 @@ lnext:    ;
 
        /*
         * check our tuple count.. if we've processed the proper number
-        * then quit, else loop again and process more tuples.  Zero
+        * then quit, else loop again and process more tuples.  Zero
         * numberTuples means no limit.
         */
        current_tuple_count++;
@@ -1309,7 +1310,7 @@ ExecInsert(TupleTableSlot *slot,
 
    /* BEFORE ROW INSERT Triggers */
    if (resultRelInfo->ri_TrigDesc &&
-       resultRelInfo->ri_TrigDesc->n_before_row[TRIGGER_EVENT_INSERT] > 0)
+     resultRelInfo->ri_TrigDesc->n_before_row[TRIGGER_EVENT_INSERT] > 0)
    {
        HeapTuple   newtuple;
 
@@ -1686,13 +1687,13 @@ ExecConstraints(ResultRelInfo *resultRelInfo,
                ereport(ERROR,
                        (errcode(ERRCODE_NOT_NULL_VIOLATION),
                         errmsg("null value for attribute \"%s\" violates NOT NULL constraint",
-                               NameStr(rel->rd_att->attrs[attrChk - 1]->attname))));
+                   NameStr(rel->rd_att->attrs[attrChk - 1]->attname))));
        }
    }
 
    if (constr->num_check > 0)
    {
-       const char     *failed;
+       const char *failed;
 
        if ((failed = ExecRelCheck(resultRelInfo, slot, estate)) != NULL)
            ereport(ERROR,
@@ -1884,10 +1885,11 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
     * integrated with the Param mechanism somehow, so that the upper plan
     * nodes know that their children's outputs have changed.
     *
-    * Note that the stack of free evalPlanQual nodes is quite useless at
-    * the moment, since it only saves us from pallocing/releasing the
+    * Note that the stack of free evalPlanQual nodes is quite useless at the
+    * moment, since it only saves us from pallocing/releasing the
     * evalPlanQual nodes themselves.  But it will be useful once we
-    * implement ReScan instead of end/restart for re-using PlanQual nodes.
+    * implement ReScan instead of end/restart for re-using PlanQual
+    * nodes.
     */
    if (endNode)
    {
@@ -1898,10 +1900,11 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
    /*
     * Initialize new recheck query.
     *
-    * Note: if we were re-using PlanQual plans via ExecReScan, we'd need
-    * to instead copy down changeable state from the top plan (including
-    * es_result_relation_info, es_junkFilter) and reset locally changeable
-    * state in the epq (including es_param_exec_vals, es_evTupleNull).
+    * Note: if we were re-using PlanQual plans via ExecReScan, we'd need to
+    * instead copy down changeable state from the top plan (including
+    * es_result_relation_info, es_junkFilter) and reset locally
+    * changeable state in the epq (including es_param_exec_vals,
+    * es_evTupleNull).
     */
    EvalPlanQualStart(epq, estate, epq->next);
 
@@ -2016,9 +2019,9 @@ EvalPlanQualStart(evalPlanQual *epq, EState *estate, evalPlanQual *priorepq)
 
    /*
     * The epqstates share the top query's copy of unchanging state such
-    * as the snapshot, rangetable, result-rel info, and external Param info.
-    * They need their own copies of local state, including a tuple table,
-    * es_param_exec_vals, etc.
+    * as the snapshot, rangetable, result-rel info, and external Param
+    * info. They need their own copies of local state, including a tuple
+    * table, es_param_exec_vals, etc.
     */
    epqstate->es_direction = ForwardScanDirection;
    epqstate->es_snapshot = estate->es_snapshot;
@@ -2036,11 +2039,11 @@ EvalPlanQualStart(evalPlanQual *epq, EState *estate, evalPlanQual *priorepq)
    epqstate->es_instrument = estate->es_instrument;
    epqstate->es_force_oids = estate->es_force_oids;
    epqstate->es_topPlan = estate->es_topPlan;
+
    /*
-    * Each epqstate must have its own es_evTupleNull state, but
-    * all the stack entries share es_evTuple state.  This allows
-    * sub-rechecks to inherit the value being examined by an
-    * outer recheck.
+    * Each epqstate must have its own es_evTupleNull state, but all the
+    * stack entries share es_evTuple state.  This allows sub-rechecks to
+    * inherit the value being examined by an outer recheck.
     */
    epqstate->es_evTupleNull = (bool *) palloc0(rtsize * sizeof(bool));
    if (priorepq == NULL)
index f73f2d718527af079694f5d174bed3c1d9447366..1c34e1d1a4b3b80be95d131344799c9c5222ebd7 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execProcnode.c,v 1.37 2003/07/21 17:05:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execProcnode.c,v 1.38 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -52,7 +52,7 @@
  *   * ExecInitNode() notices that it is looking at a nest loop and
  *     as the code below demonstrates, it calls ExecInitNestLoop().
  *     Eventually this calls ExecInitNode() on the right and left subplans
- *     and so forth until the entire plan is initialized.  The result
+ *     and so forth until the entire plan is initialized.  The result
  *     of ExecInitNode() is a plan state tree built with the same structure
  *     as the underlying plan tree.
  *
@@ -226,7 +226,7 @@ ExecInitNode(Plan *node, EState *estate)
    subps = NIL;
    foreach(subp, node->initPlan)
    {
-       SubPlan    *subplan = (SubPlan *) lfirst(subp);
+       SubPlan    *subplan = (SubPlan *) lfirst(subp);
        SubPlanState *sstate;
 
        Assert(IsA(subplan, SubPlan));
@@ -237,9 +237,9 @@ ExecInitNode(Plan *node, EState *estate)
    result->initPlan = subps;
 
    /*
-    * Initialize any subPlans present in this node.  These were found
-    * by ExecInitExpr during initialization of the PlanState.  Note we
-    * must do this after initializing initPlans, in case their arguments
+    * Initialize any subPlans present in this node.  These were found by
+    * ExecInitExpr during initialization of the PlanState.  Note we must
+    * do this after initializing initPlans, in case their arguments
     * contain subPlans (is that actually possible? perhaps not).
     */
    subps = NIL;
@@ -268,7 +268,7 @@ ExecInitNode(Plan *node, EState *estate)
  * ----------------------------------------------------------------
  */
 TupleTableSlot *
-ExecProcNode(PlanState *node)
+ExecProcNode(PlanState * node)
 {
    TupleTableSlot *result;
 
@@ -280,7 +280,7 @@ ExecProcNode(PlanState *node)
    if (node == NULL)
        return NULL;
 
-   if (node->chgParam != NULL) /* something changed */
+   if (node->chgParam != NULL) /* something changed */
        ExecReScan(node, NULL); /* let ReScan handle this */
 
    if (node->instrument)
@@ -484,7 +484,7 @@ ExecCountSlotsNode(Plan *node)
  * ----------------------------------------------------------------
  */
 void
-ExecEndNode(PlanState *node)
+ExecEndNode(PlanState * node)
 {
    List       *subp;
 
index 891019f0ae79d4a9562d8e4760eb869949d1db71..d509122f29bd06eac6f2090cbb53d7b0637f7d9d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.138 2003/08/01 00:15:21 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.139 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 /* static function decls */
-static Datum ExecEvalAggref(AggrefExprState *aggref,
-                           ExprContext *econtext,
-                           bool *isNull);
-static Datum ExecEvalArrayRef(ArrayRefExprState *astate,
-                             ExprContext *econtext,
-                             bool *isNull, ExprDoneCond *isDone);
+static Datum ExecEvalAggref(AggrefExprState * aggref,
+              ExprContext *econtext,
+              bool *isNull);
+static Datum ExecEvalArrayRef(ArrayRefExprState * astate,
+                ExprContext *econtext,
+                bool *isNull, ExprDoneCond *isDone);
 static Datum ExecEvalVar(Var *variable, ExprContext *econtext, bool *isNull);
 static Datum ExecEvalParam(Param *expression, ExprContext *econtext,
-                          bool *isNull);
-static Datum ExecEvalFunc(FuncExprState *fcache, ExprContext *econtext,
+             bool *isNull);
+static Datum ExecEvalFunc(FuncExprState * fcache, ExprContext *econtext,
             bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalOper(FuncExprState *fcache, ExprContext *econtext,
+static Datum ExecEvalOper(FuncExprState * fcache, ExprContext *econtext,
             bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalDistinct(FuncExprState *fcache, ExprContext *econtext,
+static Datum ExecEvalDistinct(FuncExprState * fcache, ExprContext *econtext,
                 bool *isNull);
-static Datum ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
-                                  ExprContext *econtext, bool *isNull);
+static Datum ExecEvalScalarArrayOp(ScalarArrayOpExprState * sstate,
+                     ExprContext *econtext, bool *isNull);
 static ExprDoneCond ExecEvalFuncArgs(FunctionCallInfo fcinfo,
                 List *argList, ExprContext *econtext);
-static Datum ExecEvalNot(BoolExprState *notclause, ExprContext *econtext,
-                        bool *isNull);
-static Datum ExecEvalOr(BoolExprState *orExpr, ExprContext *econtext,
-                       bool *isNull);
-static Datum ExecEvalAnd(BoolExprState *andExpr, ExprContext *econtext,
-                        bool *isNull);
-static Datum ExecEvalCase(CaseExprState *caseExpr, ExprContext *econtext,
+static Datum ExecEvalNot(BoolExprState * notclause, ExprContext *econtext,
+           bool *isNull);
+static Datum ExecEvalOr(BoolExprState * orExpr, ExprContext *econtext,
+          bool *isNull);
+static Datum ExecEvalAnd(BoolExprState * andExpr, ExprContext *econtext,
+           bool *isNull);
+static Datum ExecEvalCase(CaseExprState * caseExpr, ExprContext *econtext,
             bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalArray(ArrayExprState *astate,
-                          ExprContext *econtext,
-                          bool *isNull);
-static Datum ExecEvalCoalesce(CoalesceExprState *coalesceExpr,
-                             ExprContext *econtext,
-                             bool *isNull);
-static Datum ExecEvalNullIf(FuncExprState *nullIfExpr, ExprContext *econtext,
-                           bool *isNull);
-static Datum ExecEvalNullTest(GenericExprState *nstate,
-                             ExprContext *econtext,
-                             bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalBooleanTest(GenericExprState *bstate,
-                                ExprContext *econtext,
-                                bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalCoerceToDomain(CoerceToDomainState *cstate,
+static Datum ExecEvalArray(ArrayExprState * astate,
+             ExprContext *econtext,
+             bool *isNull);
+static Datum ExecEvalCoalesce(CoalesceExprState * coalesceExpr,
+                ExprContext *econtext,
+                bool *isNull);
+static Datum ExecEvalNullIf(FuncExprState * nullIfExpr, ExprContext *econtext,
+              bool *isNull);
+static Datum ExecEvalNullTest(GenericExprState * nstate,
+                ExprContext *econtext,
+                bool *isNull, ExprDoneCond *isDone);
+static Datum ExecEvalBooleanTest(GenericExprState * bstate,
+                   ExprContext *econtext,
+                   bool *isNull, ExprDoneCond *isDone);
+static Datum ExecEvalCoerceToDomain(CoerceToDomainState * cstate,
                       ExprContext *econtext,
                       bool *isNull, ExprDoneCond *isDone);
-static Datum ExecEvalCoerceToDomainValue(CoerceToDomainValue *conVal,
-                      ExprContext *econtext, bool *isNull);
-static Datum ExecEvalFieldSelect(GenericExprState *fstate,
-                                ExprContext *econtext,
-                                bool *isNull, ExprDoneCond *isDone);
+static Datum ExecEvalCoerceToDomainValue(CoerceToDomainValue * conVal,
+                           ExprContext *econtext, bool *isNull);
+static Datum ExecEvalFieldSelect(GenericExprState * fstate,
+                   ExprContext *econtext,
+                   bool *isNull, ExprDoneCond *isDone);
 
 
 /*----------
@@ -127,7 +127,7 @@ static Datum ExecEvalFieldSelect(GenericExprState *fstate,
  *----------
  */
 static Datum
-ExecEvalArrayRef(ArrayRefExprState *astate,
+ExecEvalArrayRef(ArrayRefExprState * astate,
                 ExprContext *econtext,
                 bool *isNull,
                 ExprDoneCond *isDone)
@@ -301,7 +301,7 @@ ExecEvalArrayRef(ArrayRefExprState *astate,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalAggref(AggrefExprState *aggref, ExprContext *econtext, bool *isNull)
+ExecEvalAggref(AggrefExprState * aggref, ExprContext *econtext, bool *isNull)
 {
    if (econtext->ecxt_aggvalues == NULL)       /* safety check */
        elog(ERROR, "no aggregates in this expression context");
@@ -382,8 +382,8 @@ ExecEvalVar(Var *variable, ExprContext *econtext, bool *isNull)
     *
     * XXX this is a horrid crock: since the pointer to the slot might live
     * longer than the current evaluation context, we are forced to copy
-    * the tuple and slot into a long-lived context --- we use
-    * the econtext's per-query memory which should be safe enough.  This
+    * the tuple and slot into a long-lived context --- we use the
+    * econtext's per-query memory which should be safe enough.  This
     * represents a serious memory leak if many such tuples are processed
     * in one command, however.  We ought to redesign the representation
     * of whole-tuple datums so that this is not necessary.
@@ -439,7 +439,8 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
    {
        /*
         * PARAM_EXEC params (internal executor parameters) are stored in
-        * the ecxt_param_exec_vals array, and can be accessed by array index.
+        * the ecxt_param_exec_vals array, and can be accessed by array
+        * index.
         */
        ParamExecData *prm;
 
@@ -457,9 +458,9 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
    else
    {
        /*
-        * All other parameter types must be sought in ecxt_param_list_info.
-        * NOTE: The last entry in the param array is always an
-        * entry with kind == PARAM_INVALID.
+        * All other parameter types must be sought in
+        * ecxt_param_list_info. NOTE: The last entry in the param array
+        * is always an entry with kind == PARAM_INVALID.
         */
        ParamListInfo paramList = econtext->ecxt_param_list_info;
        char       *thisParamName = expression->paramname;
@@ -488,8 +489,8 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
                }
                if (!matchFound)
                    paramList++;
-           } /* while */
-       } /* if */
+           }                   /* while */
+       }                       /* if */
 
        if (!matchFound)
        {
@@ -605,7 +606,7 @@ GetAttributeByName(TupleTableSlot *slot, char *attname, bool *isNull)
  * init_fcache - initialize a FuncExprState node during first use
  */
 void
-init_fcache(Oid foid, FuncExprState *fcache, MemoryContext fcacheCxt)
+init_fcache(Oid foid, FuncExprState * fcache, MemoryContext fcacheCxt)
 {
    AclResult   aclresult;
 
@@ -678,7 +679,7 @@ ExecEvalFuncArgs(FunctionCallInfo fcinfo,
  * Evaluate the arguments to a function and then the function itself.
  */
 Datum
-ExecMakeFunctionResult(FuncExprState *fcache,
+ExecMakeFunctionResult(FuncExprState * fcache,
                       ExprContext *econtext,
                       bool *isNull,
                       ExprDoneCond *isDone)
@@ -881,7 +882,7 @@ ExecMakeFunctionResult(FuncExprState *fcache,
  * object. (If function returns an empty set, we just return NULL instead.)
  */
 Tuplestorestate *
-ExecMakeTableFunctionResult(ExprState *funcexpr,
+ExecMakeTableFunctionResult(ExprState * funcexpr,
                            ExprContext *econtext,
                            TupleDesc expectedDesc,
                            TupleDesc *returnDesc)
@@ -899,14 +900,14 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
    bool        returnsTuple = false;
 
    /*
-    * Normally the passed expression tree will be a FuncExprState, since the
-    * grammar only allows a function call at the top level of a table
-    * function reference.  However, if the function doesn't return set then
-    * the planner might have replaced the function call via constant-folding
-    * or inlining.  So if we see any other kind of expression node, execute
-    * it via the general ExecEvalExpr() code; the only difference is that
-    * we don't get a chance to pass a special ReturnSetInfo to any functions
-    * buried in the expression.
+    * Normally the passed expression tree will be a FuncExprState, since
+    * the grammar only allows a function call at the top level of a table
+    * function reference.  However, if the function doesn't return set
+    * then the planner might have replaced the function call via
+    * constant-folding or inlining.  So if we see any other kind of
+    * expression node, execute it via the general ExecEvalExpr() code;
+    * the only difference is that we don't get a chance to pass a special
+    * ReturnSetInfo to any functions buried in the expression.
     */
    if (funcexpr && IsA(funcexpr, FuncExprState) &&
        IsA(funcexpr->expr, FuncExpr))
@@ -924,7 +925,7 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
         */
        if (fcache->func.fn_oid == InvalidOid)
        {
-           FuncExpr *func = (FuncExpr *) fcache->xprstate.expr;
+           FuncExpr   *func = (FuncExpr *) fcache->xprstate.expr;
 
            init_fcache(func->funcid, fcache, econtext->ecxt_per_query_memory);
        }
@@ -933,9 +934,9 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
         * Evaluate the function's argument list.
         *
         * Note: ideally, we'd do this in the per-tuple context, but then the
-        * argument values would disappear when we reset the context in the
-        * inner loop.  So do it in caller context.  Perhaps we should make a
-        * separate context just to hold the evaluated arguments?
+        * argument values would disappear when we reset the context in
+        * the inner loop.  So do it in caller context.  Perhaps we should
+        * make a separate context just to hold the evaluated arguments?
         */
        MemSet(&fcinfo, 0, sizeof(fcinfo));
        fcinfo.flinfo = &(fcache->func);
@@ -990,7 +991,8 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
    rsinfo.setDesc = NULL;
 
    /*
-    * Switch to short-lived context for calling the function or expression.
+    * Switch to short-lived context for calling the function or
+    * expression.
     */
    callerContext = MemoryContextSwitchTo(econtext->ecxt_per_tuple_memory);
 
@@ -1004,9 +1006,9 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
        HeapTuple   tuple;
 
        /*
-        * reset per-tuple memory context before each call of the
-        * function or expression. This cleans up any local memory the
-        * function may leak when called.
+        * reset per-tuple memory context before each call of the function
+        * or expression. This cleans up any local memory the function may
+        * leak when called.
         */
        ResetExprContext(econtext);
 
@@ -1157,7 +1159,7 @@ ExecMakeTableFunctionResult(ExprState *funcexpr,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalFunc(FuncExprState *fcache,
+ExecEvalFunc(FuncExprState * fcache,
             ExprContext *econtext,
             bool *isNull,
             ExprDoneCond *isDone)
@@ -1167,7 +1169,7 @@ ExecEvalFunc(FuncExprState *fcache,
     */
    if (fcache->func.fn_oid == InvalidOid)
    {
-       FuncExpr *func = (FuncExpr *) fcache->xprstate.expr;
+       FuncExpr   *func = (FuncExpr *) fcache->xprstate.expr;
 
        init_fcache(func->funcid, fcache, econtext->ecxt_per_query_memory);
    }
@@ -1180,7 +1182,7 @@ ExecEvalFunc(FuncExprState *fcache,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalOper(FuncExprState *fcache,
+ExecEvalOper(FuncExprState * fcache,
             ExprContext *econtext,
             bool *isNull,
             ExprDoneCond *isDone)
@@ -1190,7 +1192,7 @@ ExecEvalOper(FuncExprState *fcache,
     */
    if (fcache->func.fn_oid == InvalidOid)
    {
-       OpExpr *op = (OpExpr *) fcache->xprstate.expr;
+       OpExpr     *op = (OpExpr *) fcache->xprstate.expr;
 
        init_fcache(op->opfuncid, fcache, econtext->ecxt_per_query_memory);
    }
@@ -1210,7 +1212,7 @@ ExecEvalOper(FuncExprState *fcache,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalDistinct(FuncExprState *fcache,
+ExecEvalDistinct(FuncExprState * fcache,
                 ExprContext *econtext,
                 bool *isNull)
 {
@@ -1242,7 +1244,7 @@ ExecEvalDistinct(FuncExprState *fcache,
    if (argDone != ExprSingleResult)
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("IS DISTINCT FROM does not support set arguments")));
+            errmsg("IS DISTINCT FROM does not support set arguments")));
    Assert(fcinfo.nargs == 2);
 
    if (fcinfo.argnull[0] && fcinfo.argnull[1])
@@ -1272,11 +1274,11 @@ ExecEvalDistinct(FuncExprState *fcache,
  *
  * Evaluate "scalar op ANY/ALL (array)".  The operator always yields boolean,
  * and we combine the results across all array elements using OR and AND
- * (for ANY and ALL respectively).  Of course we short-circuit as soon as
+ * (for ANY and ALL respectively). Of course we short-circuit as soon as
  * the result is known.
  */
 static Datum
-ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
+ExecEvalScalarArrayOp(ScalarArrayOpExprState * sstate,
                      ExprContext *econtext, bool *isNull)
 {
    ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) sstate->fxprstate.xprstate.expr;
@@ -1310,12 +1312,12 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
    if (argDone != ExprSingleResult)
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("op ANY/ALL (array) does not support set arguments")));
+          errmsg("op ANY/ALL (array) does not support set arguments")));
    Assert(fcinfo.nargs == 2);
 
    /*
-    * If the array is NULL then we return NULL --- it's not very meaningful
-    * to do anything else, even if the operator isn't strict.
+    * If the array is NULL then we return NULL --- it's not very
+    * meaningful to do anything else, even if the operator isn't strict.
     */
    if (fcinfo.argnull[1])
    {
@@ -1334,6 +1336,7 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
    nitems = ArrayGetNItems(ARR_NDIM(arr), ARR_DIMS(arr));
    if (nitems <= 0)
        return BoolGetDatum(!useOr);
+
    /*
     * If the scalar is NULL, and the function is strict, return NULL.
     * This is just to avoid having to test for strictness inside the
@@ -1347,8 +1350,8 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
    }
 
    /*
-    * We arrange to look up info about the element type only
-    * once per series of calls, assuming the element type doesn't change
+    * We arrange to look up info about the element type only once per
+    * series of calls, assuming the element type doesn't change
     * underneath us.
     */
    if (sstate->element_type != ARR_ELEMTYPE(arr))
@@ -1370,8 +1373,8 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
    s = (char *) ARR_DATA_PTR(arr);
    for (i = 0; i < nitems; i++)
    {
-       Datum   elt;
-       Datum   thisresult;
+       Datum       elt;
+       Datum       thisresult;
 
        /* Get array element */
        elt = fetch_att(s, typbyval, typlen);
@@ -1394,7 +1397,7 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
            {
                result = BoolGetDatum(true);
                resultnull = false;
-               break;      /* needn't look at any more elements */
+               break;          /* needn't look at any more elements */
            }
        }
        else
@@ -1403,7 +1406,7 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
            {
                result = BoolGetDatum(false);
                resultnull = false;
-               break;      /* needn't look at any more elements */
+               break;          /* needn't look at any more elements */
            }
        }
    }
@@ -1428,7 +1431,7 @@ ExecEvalScalarArrayOp(ScalarArrayOpExprState *sstate,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalNot(BoolExprState *notclause, ExprContext *econtext, bool *isNull)
+ExecEvalNot(BoolExprState * notclause, ExprContext *econtext, bool *isNull)
 {
    ExprState  *clause;
    Datum       expr_value;
@@ -1456,7 +1459,7 @@ ExecEvalNot(BoolExprState *notclause, ExprContext *econtext, bool *isNull)
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalOr(BoolExprState *orExpr, ExprContext *econtext, bool *isNull)
+ExecEvalOr(BoolExprState * orExpr, ExprContext *econtext, bool *isNull)
 {
    List       *clauses;
    List       *clause;
@@ -1504,7 +1507,7 @@ ExecEvalOr(BoolExprState *orExpr, ExprContext *econtext, bool *isNull)
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalAnd(BoolExprState *andExpr, ExprContext *econtext, bool *isNull)
+ExecEvalAnd(BoolExprState * andExpr, ExprContext *econtext, bool *isNull)
 {
    List       *clauses;
    List       *clause;
@@ -1552,7 +1555,7 @@ ExecEvalAnd(BoolExprState *andExpr, ExprContext *econtext, bool *isNull)
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalCase(CaseExprState *caseExpr, ExprContext *econtext,
+ExecEvalCase(CaseExprState * caseExpr, ExprContext *econtext,
             bool *isNull, ExprDoneCond *isDone)
 {
    List       *clauses;
@@ -1610,22 +1613,22 @@ ExecEvalCase(CaseExprState *caseExpr, ExprContext *econtext,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalArray(ArrayExprState *astate, ExprContext *econtext,
+ExecEvalArray(ArrayExprState * astate, ExprContext *econtext,
              bool *isNull)
 {
-   ArrayExpr   *arrayExpr = (ArrayExpr *) astate->xprstate.expr;
+   ArrayExpr  *arrayExpr = (ArrayExpr *) astate->xprstate.expr;
    ArrayType  *result;
-   List   *element;
-   Oid     element_type = arrayExpr->element_typeid;
-   int     ndims = arrayExpr->ndims;
-   int     dims[MAXDIM];
-   int     lbs[MAXDIM];
+   List       *element;
+   Oid         element_type = arrayExpr->element_typeid;
+   int         ndims = arrayExpr->ndims;
+   int         dims[MAXDIM];
+   int         lbs[MAXDIM];
 
    if (ndims == 1)
    {
-       int     nelems;
-       Datum  *dvalues;
-       int     i = 0;
+       int         nelems;
+       Datum      *dvalues;
+       int         i = 0;
 
        nelems = length(astate->elements);
 
@@ -1683,7 +1686,7 @@ ExecEvalArray(ArrayExprState *astate, ExprContext *econtext,
        /* loop through and get data area from each element */
        foreach(element, astate->elements)
        {
-           ExprState   *e = (ExprState *) lfirst(element);
+           ExprState  *e = (ExprState *) lfirst(element);
            bool        eisnull;
            Datum       arraydatum;
            ArrayType  *array;
@@ -1718,8 +1721,8 @@ ExecEvalArray(ArrayExprState *astate, ExprContext *econtext,
                           elem_ndims * sizeof(int)) != 0)
                    ereport(ERROR,
                            (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                            errmsg("multidimensional arrays must have array "
-                                   "expressions with matching dimensions")));
+                       errmsg("multidimensional arrays must have array "
+                              "expressions with matching dimensions")));
            }
 
            elem_ndatabytes = ARR_SIZE(array) - ARR_OVERHEAD(elem_ndims);
@@ -1767,16 +1770,16 @@ ExecEvalArray(ArrayExprState *astate, ExprContext *econtext,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalCoalesce(CoalesceExprState *coalesceExpr, ExprContext *econtext,
+ExecEvalCoalesce(CoalesceExprState * coalesceExpr, ExprContext *econtext,
                 bool *isNull)
 {
-   List *arg;
+   List       *arg;
 
    /* Simply loop through until something NOT NULL is found */
    foreach(arg, coalesceExpr->args)
    {
-       ExprState *e = (ExprState *) lfirst(arg);
-       Datum value;
+       ExprState  *e = (ExprState *) lfirst(arg);
+       Datum       value;
 
        value = ExecEvalExpr(e, econtext, isNull, NULL);
        if (!*isNull)
@@ -1787,7 +1790,7 @@ ExecEvalCoalesce(CoalesceExprState *coalesceExpr, ExprContext *econtext,
    *isNull = true;
    return (Datum) 0;
 }
-   
+
 /* ----------------------------------------------------------------
  *     ExecEvalNullIf
  *
@@ -1797,7 +1800,7 @@ ExecEvalCoalesce(CoalesceExprState *coalesceExpr, ExprContext *econtext,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalNullIf(FuncExprState *fcache, ExprContext *econtext,
+ExecEvalNullIf(FuncExprState * fcache, ExprContext *econtext,
               bool *isNull)
 {
    Datum       result;
@@ -1856,7 +1859,7 @@ ExecEvalNullIf(FuncExprState *fcache, ExprContext *econtext,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalNullTest(GenericExprState *nstate,
+ExecEvalNullTest(GenericExprState * nstate,
                 ExprContext *econtext,
                 bool *isNull,
                 ExprDoneCond *isDone)
@@ -1901,7 +1904,7 @@ ExecEvalNullTest(GenericExprState *nstate,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalBooleanTest(GenericExprState *bstate,
+ExecEvalBooleanTest(GenericExprState * bstate,
                    ExprContext *econtext,
                    bool *isNull,
                    ExprDoneCond *isDone)
@@ -1987,7 +1990,7 @@ ExecEvalBooleanTest(GenericExprState *bstate,
  * datum) otherwise throw an error.
  */
 static Datum
-ExecEvalCoerceToDomain(CoerceToDomainState *cstate, ExprContext *econtext,
+ExecEvalCoerceToDomain(CoerceToDomainState * cstate, ExprContext *econtext,
                       bool *isNull, ExprDoneCond *isDone)
 {
    CoerceToDomain *ctest = (CoerceToDomain *) cstate->xprstate.expr;
@@ -2009,43 +2012,44 @@ ExecEvalCoerceToDomain(CoerceToDomainState *cstate, ExprContext *econtext,
                if (*isNull)
                    ereport(ERROR,
                            (errcode(ERRCODE_NOT_NULL_VIOLATION),
-                            errmsg("domain %s does not allow NULL values",
-                                   format_type_be(ctest->resulttype))));
+                          errmsg("domain %s does not allow NULL values",
+                                 format_type_be(ctest->resulttype))));
                break;
            case DOM_CONSTRAINT_CHECK:
-           {
-               Datum   conResult;
-               bool    conIsNull;
-               Datum   save_datum;
-               bool    save_isNull;
-
-               /*
-                * Set up value to be returned by CoerceToDomainValue nodes.
-                * We must save and restore prior setting of econtext's
-                * domainValue fields, in case this node is itself within
-                * a check expression for another domain.
-                */
-               save_datum = econtext->domainValue_datum;
-               save_isNull = econtext->domainValue_isNull;
+               {
+                   Datum       conResult;
+                   bool        conIsNull;
+                   Datum       save_datum;
+                   bool        save_isNull;
 
-               econtext->domainValue_datum = result;
-               econtext->domainValue_isNull = *isNull;
+                   /*
+                    * Set up value to be returned by CoerceToDomainValue
+                    * nodes. We must save and restore prior setting of
+                    * econtext's domainValue fields, in case this node is
+                    * itself within a check expression for another
+                    * domain.
+                    */
+                   save_datum = econtext->domainValue_datum;
+                   save_isNull = econtext->domainValue_isNull;
 
-               conResult = ExecEvalExpr(con->check_expr,
-                                        econtext, &conIsNull, NULL);
+                   econtext->domainValue_datum = result;
+                   econtext->domainValue_isNull = *isNull;
 
-               if (!conIsNull &&
-                   !DatumGetBool(conResult))
-                   ereport(ERROR,
-                           (errcode(ERRCODE_CHECK_VIOLATION),
-                            errmsg("value for domain %s violates CHECK constraint \"%s\"",
-                                   format_type_be(ctest->resulttype),
-                                   con->name)));
-               econtext->domainValue_datum = save_datum;
-               econtext->domainValue_isNull = save_isNull;
+                   conResult = ExecEvalExpr(con->check_expr,
+                                            econtext, &conIsNull, NULL);
 
-               break;
-           }
+                   if (!conIsNull &&
+                       !DatumGetBool(conResult))
+                       ereport(ERROR,
+                               (errcode(ERRCODE_CHECK_VIOLATION),
+                                errmsg("value for domain %s violates CHECK constraint \"%s\"",
+                                       format_type_be(ctest->resulttype),
+                                       con->name)));
+                   econtext->domainValue_datum = save_datum;
+                   econtext->domainValue_isNull = save_isNull;
+
+                   break;
+               }
            default:
                elog(ERROR, "unrecognized constraint type: %d",
                     (int) con->constrainttype);
@@ -2063,7 +2067,7 @@ ExecEvalCoerceToDomain(CoerceToDomainState *cstate, ExprContext *econtext,
  * Return the value stored by CoerceToDomain.
  */
 static Datum
-ExecEvalCoerceToDomainValue(CoerceToDomainValue *conVal,
+ExecEvalCoerceToDomainValue(CoerceToDomainValue * conVal,
                            ExprContext *econtext, bool *isNull)
 {
    *isNull = econtext->domainValue_isNull;
@@ -2077,7 +2081,7 @@ ExecEvalCoerceToDomainValue(CoerceToDomainValue *conVal,
  * ----------------------------------------------------------------
  */
 static Datum
-ExecEvalFieldSelect(GenericExprState *fstate,
+ExecEvalFieldSelect(GenericExprState * fstate,
                    ExprContext *econtext,
                    bool *isNull,
                    ExprDoneCond *isDone)
@@ -2141,7 +2145,7 @@ ExecEvalFieldSelect(GenericExprState *fstate,
  * ----------------------------------------------------------------
  */
 Datum
-ExecEvalExpr(ExprState *expression,
+ExecEvalExpr(ExprState * expression,
             ExprContext *econtext,
             bool *isNull,
             ExprDoneCond *isDone)
@@ -2308,7 +2312,7 @@ ExecEvalExpr(ExprState *expression,
  * Same as above, but get into the right allocation context explicitly.
  */
 Datum
-ExecEvalExprSwitchContext(ExprState *expression,
+ExecEvalExprSwitchContext(ExprState * expression,
                          ExprContext *econtext,
                          bool *isNull,
                          ExprDoneCond *isDone)
@@ -2327,7 +2331,7 @@ ExecEvalExprSwitchContext(ExprState *expression,
  * ExecInitExpr: prepare an expression tree for execution
  *
  * This function builds and returns an ExprState tree paralleling the given
- * Expr node tree.  The ExprState tree can then be handed to ExecEvalExpr
+ * Expr node tree. The ExprState tree can then be handed to ExecEvalExpr
  * for execution.  Because the Expr tree itself is read-only as far as
  * ExecInitExpr and ExecEvalExpr are concerned, several different executions
  * of the same plan tree can occur concurrently.
@@ -2337,7 +2341,7 @@ ExecEvalExprSwitchContext(ExprState *expression,
  * the same as the per-query context of the associated ExprContext.
  *
  * Any Aggref and SubPlan nodes found in the tree are added to the lists
- * of such nodes held by the parent PlanState.  Otherwise, we do very little
+ * of such nodes held by the parent PlanState. Otherwise, we do very 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 us
@@ -2356,7 +2360,7 @@ ExecEvalExprSwitchContext(ExprState *expression,
  * This case should usually come through ExecPrepareExpr, not directly here.
  */
 ExprState *
-ExecInitExpr(Expr *node, PlanState *parent)
+ExecInitExpr(Expr *node, PlanState * parent)
 {
    ExprState  *state;
 
@@ -2373,7 +2377,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_Aggref:
            {
-               Aggref   *aggref = (Aggref *) node;
+               Aggref     *aggref = (Aggref *) node;
                AggrefExprState *astate = makeNode(AggrefExprState);
 
                if (parent && IsA(parent, AggState))
@@ -2389,8 +2393,8 @@ ExecInitExpr(Expr *node, PlanState *parent)
                    /*
                     * Complain if the aggregate's argument contains any
                     * aggregates; nested agg functions are semantically
-                    * nonsensical.  (This should have been caught earlier,
-                    * but we defend against it here anyway.)
+                    * nonsensical.  (This should have been caught
+                    * earlier, but we defend against it here anyway.)
                     */
                    if (naggs != aggstate->numaggs)
                        ereport(ERROR,
@@ -2433,41 +2437,41 @@ ExecInitExpr(Expr *node, PlanState *parent)
 
                fstate->args = (List *)
                    ExecInitExpr((Expr *) funcexpr->args, parent);
-               fstate->func.fn_oid = InvalidOid; /* not initialized */
+               fstate->func.fn_oid = InvalidOid;       /* not initialized */
                state = (ExprState *) fstate;
            }
            break;
        case T_OpExpr:
            {
-               OpExpr   *opexpr = (OpExpr *) node;
+               OpExpr     *opexpr = (OpExpr *) node;
                FuncExprState *fstate = makeNode(FuncExprState);
 
                fstate->args = (List *)
                    ExecInitExpr((Expr *) opexpr->args, parent);
-               fstate->func.fn_oid = InvalidOid; /* not initialized */
+               fstate->func.fn_oid = InvalidOid;       /* not initialized */
                state = (ExprState *) fstate;
            }
            break;
        case T_DistinctExpr:
            {
-               DistinctExpr   *distinctexpr = (DistinctExpr *) node;
+               DistinctExpr *distinctexpr = (DistinctExpr *) node;
                FuncExprState *fstate = makeNode(FuncExprState);
 
                fstate->args = (List *)
                    ExecInitExpr((Expr *) distinctexpr->args, parent);
-               fstate->func.fn_oid = InvalidOid; /* not initialized */
+               fstate->func.fn_oid = InvalidOid;       /* not initialized */
                state = (ExprState *) fstate;
            }
            break;
        case T_ScalarArrayOpExpr:
            {
-               ScalarArrayOpExpr   *opexpr = (ScalarArrayOpExpr *) node;
+               ScalarArrayOpExpr *opexpr = (ScalarArrayOpExpr *) node;
                ScalarArrayOpExprState *sstate = makeNode(ScalarArrayOpExprState);
 
                sstate->fxprstate.args = (List *)
                    ExecInitExpr((Expr *) opexpr->args, parent);
-               sstate->fxprstate.func.fn_oid = InvalidOid; /* not initialized */
-               sstate->element_type = InvalidOid; /* ditto */
+               sstate->fxprstate.func.fn_oid = InvalidOid;     /* not initialized */
+               sstate->element_type = InvalidOid;      /* ditto */
                state = (ExprState *) sstate;
            }
            break;
@@ -2484,7 +2488,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
        case T_SubPlan:
            {
                /* Keep this in sync with ExecInitExprInitPlan, below */
-               SubPlan *subplan = (SubPlan *) node;
+               SubPlan    *subplan = (SubPlan *) node;
                SubPlanState *sstate = makeNode(SubPlanState);
 
                if (!parent)
@@ -2492,7 +2496,8 @@ ExecInitExpr(Expr *node, PlanState *parent)
 
                /*
                 * Here we just add the SubPlanState nodes to
-                * parent->subPlan.  The subplans will be initialized later.
+                * parent->subPlan.  The subplans will be initialized
+                * later.
                 */
                parent->subPlan = lcons(sstate, parent->subPlan);
                sstate->sub_estate = NULL;
@@ -2508,7 +2513,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_FieldSelect:
            {
-               FieldSelect   *fselect = (FieldSelect *) node;
+               FieldSelect *fselect = (FieldSelect *) node;
                GenericExprState *gstate = makeNode(GenericExprState);
 
                gstate->arg = ExecInitExpr(fselect->arg, parent);
@@ -2517,7 +2522,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_RelabelType:
            {
-               RelabelType   *relabel = (RelabelType *) node;
+               RelabelType *relabel = (RelabelType *) node;
                GenericExprState *gstate = makeNode(GenericExprState);
 
                gstate->arg = ExecInitExpr(relabel->arg, parent);
@@ -2552,10 +2557,10 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_ArrayExpr:
            {
-               ArrayExpr      *arrayexpr = (ArrayExpr *) node;
+               ArrayExpr  *arrayexpr = (ArrayExpr *) node;
                ArrayExprState *astate = makeNode(ArrayExprState);
-               FastList        outlist;
-               List           *inlist;
+               FastList    outlist;
+               List       *inlist;
 
                FastListInit(&outlist);
                foreach(inlist, arrayexpr->elements)
@@ -2585,8 +2590,8 @@ ExecInitExpr(Expr *node, PlanState *parent)
                FastListInit(&outlist);
                foreach(inlist, coalesceexpr->args)
                {
-                   Expr *e = (Expr *) lfirst(inlist);
-                   ExprState *estate;
+                   Expr       *e = (Expr *) lfirst(inlist);
+                   ExprState  *estate;
 
                    estate = ExecInitExpr(e, parent);
                    FastAppend(&outlist, estate);
@@ -2602,7 +2607,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
 
                fstate->args = (List *)
                    ExecInitExpr((Expr *) nullifexpr->args, parent);
-               fstate->func.fn_oid = InvalidOid; /* not initialized */
+               fstate->func.fn_oid = InvalidOid;       /* not initialized */
                state = (ExprState *) fstate;
            }
            break;
@@ -2617,7 +2622,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_BooleanTest:
            {
-               BooleanTest   *btest = (BooleanTest *) node;
+               BooleanTest *btest = (BooleanTest *) node;
                GenericExprState *gstate = makeNode(GenericExprState);
 
                gstate->arg = ExecInitExpr(btest->arg, parent);
@@ -2626,7 +2631,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_CoerceToDomain:
            {
-               CoerceToDomain   *ctest = (CoerceToDomain *) node;
+               CoerceToDomain *ctest = (CoerceToDomain *) node;
                CoerceToDomainState *cstate = makeNode(CoerceToDomainState);
 
                cstate->arg = ExecInitExpr(ctest->arg, parent);
@@ -2636,7 +2641,7 @@ ExecInitExpr(Expr *node, PlanState *parent)
            break;
        case T_TargetEntry:
            {
-               TargetEntry   *tle = (TargetEntry *) node;
+               TargetEntry *tle = (TargetEntry *) node;
                GenericExprState *gstate = makeNode(GenericExprState);
 
                gstate->arg = ExecInitExpr(tle->expr, parent);
@@ -2673,12 +2678,12 @@ ExecInitExpr(Expr *node, PlanState *parent)
 
 /*
  * ExecInitExprInitPlan --- initialize a subplan expr that's being handled
- * as an InitPlan.  This is identical to ExecInitExpr's handling of a regular
+ * as an InitPlan. This is identical to ExecInitExpr's handling of a regular
  * subplan expr, except we do NOT want to add the node to the parent's
  * subplan list.
  */
 SubPlanState *
-ExecInitExprInitPlan(SubPlan *node, PlanState *parent)
+ExecInitExprInitPlan(SubPlan *node, PlanState * parent)
 {
    SubPlanState *sstate = makeNode(SubPlanState);
 
@@ -2704,7 +2709,7 @@ ExecInitExprInitPlan(SubPlan *node, PlanState *parent)
  * This differs from ExecInitExpr in that we don't assume the caller is
  * already running in the EState's per-query context.  Also, we apply
  * fix_opfuncids() to the passed expression tree to be sure it is ready
- * to run.  (In ordinary Plan trees the planner will have fixed opfuncids,
+ * to run. (In ordinary Plan trees the planner will have fixed opfuncids,
  * but callers outside the executor will not have done this.)
  */
 ExprState *
@@ -2988,8 +2993,8 @@ ExecTargetList(List *targetlist,
                    if (itemIsDone[resind] == ExprEndResult)
                    {
                        /*
-                        * Oh dear, this item is returning an empty
-                        * set. Guess we can't make a tuple after all.
+                        * Oh dear, this item is returning an empty set.
+                        * Guess we can't make a tuple after all.
                         */
                        *isDone = ExprEndResult;
                        break;
index 9352c79d81e57825d0922cfeab7184657390ec5a..35007cf0cc0ef5a59bc446c7bd5f3ac139f8010f 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execScan.c,v 1.23 2003/02/03 15:07:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execScan.c,v 1.24 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -45,7 +45,7 @@ static bool tlist_matches_tupdesc(List *tlist, Index varno, TupleDesc tupdesc);
  * ----------------------------------------------------------------
  */
 TupleTableSlot *
-ExecScan(ScanState *node,
+ExecScan(ScanState * node,
         ExecScanAccessMtd accessMtd)   /* function returning a tuple */
 {
    EState     *estate;
@@ -134,9 +134,10 @@ ExecScan(ScanState *node,
            if (projInfo)
            {
                /*
-                * Form a projection tuple, store it in the result tuple slot
-                * and return it --- unless we find we can project no tuples
-                * from this scan tuple, in which case continue scan.
+                * Form a projection tuple, store it in the result tuple
+                * slot and return it --- unless we find we can project no
+                * tuples from this scan tuple, in which case continue
+                * scan.
                 */
                resultSlot = ExecProject(projInfo, &isDone);
                if (isDone != ExprEndResult)
@@ -175,13 +176,13 @@ ExecScan(ScanState *node,
  * ExecAssignScanType must have been called already.
  */
 void
-ExecAssignScanProjectionInfo(ScanState *node)
+ExecAssignScanProjectionInfo(ScanState * node)
 {
-   Scan   *scan = (Scan *) node->ps.plan;
+   Scan       *scan = (Scan *) node->ps.plan;
 
    if (tlist_matches_tupdesc(scan->plan.targetlist,
                              scan->scanrelid,
-                             node->ss_ScanTupleSlot->ttc_tupleDescriptor))
+                           node->ss_ScanTupleSlot->ttc_tupleDescriptor))
        node->ps.ps_ProjInfo = NULL;
    else
        ExecAssignProjectionInfo(&node->ps);
@@ -190,13 +191,13 @@ ExecAssignScanProjectionInfo(ScanState *node)
 static bool
 tlist_matches_tupdesc(List *tlist, Index varno, TupleDesc tupdesc)
 {
-   int     numattrs = tupdesc->natts;
-   int     attrno;
+   int         numattrs = tupdesc->natts;
+   int         attrno;
 
    for (attrno = 1; attrno <= numattrs; attrno++)
    {
        Form_pg_attribute att_tup = tupdesc->attrs[attrno - 1];
-       Var    *var;
+       Var        *var;
 
        if (tlist == NIL)
            return false;       /* tlist too short */
index 976c152236cdb30bfdc4997ca69e5751844d2c11..c2145b7eca854bb3c394f9bca6101ec952e968be 100644 (file)
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.67 2003/07/21 17:05:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.68 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -482,7 +482,7 @@ ExecSetSlotDescriptorIsNew(TupleTableSlot *slot,        /* slot to change */
  * ----------------
  */
 void
-ExecInitResultTupleSlot(EState *estate, PlanState *planstate)
+ExecInitResultTupleSlot(EState *estate, PlanState * planstate)
 {
    INIT_SLOT_DEFS;
    INIT_SLOT_ALLOC;
@@ -494,7 +494,7 @@ ExecInitResultTupleSlot(EState *estate, PlanState *planstate)
  * ----------------
  */
 void
-ExecInitScanTupleSlot(EState *estate, ScanState *scanstate)
+ExecInitScanTupleSlot(EState *estate, ScanState * scanstate)
 {
    INIT_SLOT_DEFS;
    INIT_SLOT_ALLOC;
@@ -807,7 +807,7 @@ do_text_output_multiline(TupOutputState *tstate, char *text)
        if (eol)
            *eol++ = '\0';
        else
-           eol = text + strlen(text);
+           eol = text +strlen(text);
 
        do_tup_output(tstate, &text);
        text = eol;
index ca4ff192f442d07581b81445dce5553780a5f542..f87708d392773d249e8509b9b46792740f4f15d5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.100 2003/05/28 16:03:56 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.101 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -166,8 +166,8 @@ CreateExecutorState(void)
                                     ALLOCSET_DEFAULT_MAXSIZE);
 
    /*
-    * Make the EState node within the per-query context.  This way,
-    * we don't need a separate pfree() operation for it at shutdown.
+    * Make the EState node within the per-query context.  This way, we
+    * don't need a separate pfree() operation for it at shutdown.
     */
    oldcontext = MemoryContextSwitchTo(qcontext);
 
@@ -248,6 +248,7 @@ FreeExecutorState(EState *estate)
        FreeExprContext((ExprContext *) lfirst(estate->es_exprcontexts));
        /* FreeExprContext removed the list link for us */
    }
+
    /*
     * Free the per-query memory context, thereby releasing all working
     * memory, including the EState node itself.
@@ -310,10 +311,10 @@ CreateExprContext(EState *estate)
    econtext->ecxt_callbacks = NULL;
 
    /*
-    * Link the ExprContext into the EState to ensure it is shut down
-    * when the EState is freed.  Because we use lcons(), shutdowns will
-    * occur in reverse order of creation, which may not be essential
-    * but can't hurt.
+    * Link the ExprContext into the EState to ensure it is shut down when
+    * the EState is freed.  Because we use lcons(), shutdowns will occur
+    * in reverse order of creation, which may not be essential but can't
+    * hurt.
     */
    estate->es_exprcontexts = lcons(econtext, estate->es_exprcontexts);
 
@@ -377,14 +378,14 @@ MakePerTupleExprContext(EState *estate)
 /* ----------------
  *     ExecAssignExprContext
  *
- *     This initializes the ps_ExprContext field.  It is only necessary
+ *     This initializes the ps_ExprContext field.  It is only necessary
  *     to do this for nodes which use ExecQual or ExecProject
- *     because those routines require an econtext. Other nodes that
+ *     because those routines require an econtext. Other nodes that
  *     don't have to evaluate expressions don't need to do this.
  * ----------------
  */
 void
-ExecAssignExprContext(EState *estate, PlanState *planstate)
+ExecAssignExprContext(EState *estate, PlanState * planstate)
 {
    planstate->ps_ExprContext = CreateExprContext(estate);
 }
@@ -394,7 +395,7 @@ ExecAssignExprContext(EState *estate, PlanState *planstate)
  * ----------------
  */
 void
-ExecAssignResultType(PlanState *planstate,
+ExecAssignResultType(PlanState * planstate,
                     TupleDesc tupDesc, bool shouldFree)
 {
    TupleTableSlot *slot = planstate->ps_ResultTupleSlot;
@@ -407,7 +408,7 @@ ExecAssignResultType(PlanState *planstate,
  * ----------------
  */
 void
-ExecAssignResultTypeFromOuterPlan(PlanState *planstate)
+ExecAssignResultTypeFromOuterPlan(PlanState * planstate)
 {
    PlanState  *outerPlan;
    TupleDesc   tupDesc;
@@ -423,7 +424,7 @@ ExecAssignResultTypeFromOuterPlan(PlanState *planstate)
  * ----------------
  */
 void
-ExecAssignResultTypeFromTL(PlanState *planstate)
+ExecAssignResultTypeFromTL(PlanState * planstate)
 {
    bool        hasoid = false;
    TupleDesc   tupDesc;
@@ -445,9 +446,9 @@ ExecAssignResultTypeFromTL(PlanState *planstate)
     * each of the child plans of the topmost Append plan.  So, this is
     * ugly but it works, for now ...
     *
-    * SELECT INTO is also pretty grotty, because we don't yet have the
-    * INTO relation's descriptor at this point; we have to look aside
-    * at a flag set by InitPlan().
+    * SELECT INTO is also pretty grotty, because we don't yet have the INTO
+    * relation's descriptor at this point; we have to look aside at a
+    * flag set by InitPlan().
     */
    if (planstate->state->es_force_oids)
        hasoid = true;
@@ -465,9 +466,9 @@ ExecAssignResultTypeFromTL(PlanState *planstate)
    }
 
    /*
-    * ExecTypeFromTL needs the parse-time representation of the tlist, not
-    * a list of ExprStates.  This is good because some plan nodes don't
-    * bother to set up planstate->targetlist ...
+    * ExecTypeFromTL needs the parse-time representation of the tlist,
+    * not a list of ExprStates.  This is good because some plan nodes
+    * don't bother to set up planstate->targetlist ...
     */
    tupDesc = ExecTypeFromTL(planstate->plan->targetlist, hasoid);
    ExecAssignResultType(planstate, tupDesc, true);
@@ -478,7 +479,7 @@ ExecAssignResultTypeFromTL(PlanState *planstate)
  * ----------------
  */
 TupleDesc
-ExecGetResultType(PlanState *planstate)
+ExecGetResultType(PlanState * planstate)
 {
    TupleTableSlot *slot = planstate->ps_ResultTupleSlot;
 
@@ -524,7 +525,7 @@ ExecBuildProjectionInfo(List *targetList,
  * ----------------
  */
 void
-ExecAssignProjectionInfo(PlanState *planstate)
+ExecAssignProjectionInfo(PlanState * planstate)
 {
    planstate->ps_ProjInfo =
        ExecBuildProjectionInfo(planstate->targetlist,
@@ -543,7 +544,7 @@ ExecAssignProjectionInfo(PlanState *planstate)
  * ----------------
  */
 void
-ExecFreeExprContext(PlanState *planstate)
+ExecFreeExprContext(PlanState * planstate)
 {
    ExprContext *econtext;
 
@@ -575,7 +576,7 @@ ExecFreeExprContext(PlanState *planstate)
  * ----------------
  */
 TupleDesc
-ExecGetScanType(ScanState *scanstate)
+ExecGetScanType(ScanState * scanstate)
 {
    TupleTableSlot *slot = scanstate->ss_ScanTupleSlot;
 
@@ -587,7 +588,7 @@ ExecGetScanType(ScanState *scanstate)
  * ----------------
  */
 void
-ExecAssignScanType(ScanState *scanstate,
+ExecAssignScanType(ScanState * scanstate,
                   TupleDesc tupDesc, bool shouldFree)
 {
    TupleTableSlot *slot = scanstate->ss_ScanTupleSlot;
@@ -600,7 +601,7 @@ ExecAssignScanType(ScanState *scanstate,
  * ----------------
  */
 void
-ExecAssignScanTypeFromOuterPlan(ScanState *scanstate)
+ExecAssignScanTypeFromOuterPlan(ScanState * scanstate)
 {
    PlanState  *outerPlan;
    TupleDesc   tupDesc;
@@ -795,8 +796,8 @@ ExecInsertIndexTuples(TupleTableSlot *slot,
 
    /*
     * We will use the EState's per-tuple context for evaluating
-    * predicates and index expressions (creating it if it's not
-    * already there).
+    * predicates and index expressions (creating it if it's not already
+    * there).
     */
    econtext = GetPerTupleExprContext(estate);
 
@@ -841,8 +842,8 @@ ExecInsertIndexTuples(TupleTableSlot *slot,
 
        /*
         * FormIndexDatum fills in its datum and null parameters with
-        * attribute information taken from the given heap tuple.
-        * It also computes any expressions needed.
+        * attribute information taken from the given heap tuple. It also
+        * computes any expressions needed.
         */
        FormIndexDatum(indexInfo,
                       heapTuple,
@@ -878,7 +879,7 @@ ExecInsertIndexTuples(TupleTableSlot *slot,
  *     Add changed parameters to a plan node's chgParam set
  */
 void
-UpdateChangedParamSet(PlanState *node, Bitmapset *newchg)
+UpdateChangedParamSet(PlanState * node, Bitmapset * newchg)
 {
    Bitmapset  *parmset;
 
@@ -887,6 +888,7 @@ UpdateChangedParamSet(PlanState *node, Bitmapset *newchg)
     * Don't include anything else into its chgParam set.
     */
    parmset = bms_intersect(node->plan->allParam, newchg);
+
    /*
     * Keep node->chgParam == NULL if there's not actually any members;
     * this allows the simplest possible tests in executor node files.
index c8df7ccb83ca96f076627038b4c10aba90953013..ebc3cbcac37bc2c3b1c45fe67932ea03a764659e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/functions.c,v 1.69 2003/07/28 18:33:18 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/functions.c,v 1.70 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,8 +29,8 @@
 
 
 /*
- * We have an execution_state record for each query in a function.  Each
- * record contains a querytree and plantree for its query.  If the query
+ * We have an execution_state record for each query in a function. Each
+ * record contains a querytree and plantree for its query. If the query
  * is currently in F_EXEC_RUN state then there's a QueryDesc too.
  */
 typedef enum
@@ -83,7 +83,7 @@ static void postquel_start(execution_state *es, SQLFunctionCachePtr fcache);
 static TupleTableSlot *postquel_getnext(execution_state *es);
 static void postquel_end(execution_state *es);
 static void postquel_sub_params(SQLFunctionCachePtr fcache,
-                               FunctionCallInfo fcinfo);
+                   FunctionCallInfo fcinfo);
 static Datum postquel_execute(execution_state *es,
                 FunctionCallInfo fcinfo,
                 SQLFunctionCachePtr fcache);
@@ -177,11 +177,11 @@ init_sql_fcache(FmgrInfo *finfo)
    if (rettype == ANYARRAYOID || rettype == ANYELEMENTOID)
    {
        rettype = get_fn_expr_rettype(finfo);
-       if (rettype == InvalidOid) /* this probably should not happen */
+       if (rettype == InvalidOid)      /* this probably should not happen */
            ereport(ERROR,
                    (errcode(ERRCODE_DATATYPE_MISMATCH),
                     errmsg("could not determine actual result type for function declared %s",
-                           format_type_be(procedureStruct->prorettype))));
+                         format_type_be(procedureStruct->prorettype))));
    }
 
    /* Now look up the actual result type */
@@ -226,7 +226,7 @@ init_sql_fcache(FmgrInfo *finfo)
        fcache->funcSlot = NULL;
 
    /*
-    * Parse and plan the queries.  We need the argument type info to pass
+    * Parse and plan the queries.  We need the argument type info to pass
     * to the parser.
     */
    nargs = procedureStruct->pronargs;
@@ -234,7 +234,7 @@ init_sql_fcache(FmgrInfo *finfo)
 
    if (nargs > 0)
    {
-       int     argnum;
+       int         argnum;
 
        argOidVect = (Oid *) palloc(nargs * sizeof(Oid));
        memcpy(argOidVect,
@@ -243,7 +243,7 @@ init_sql_fcache(FmgrInfo *finfo)
        /* Resolve any polymorphic argument types */
        for (argnum = 0; argnum < nargs; argnum++)
        {
-           Oid     argtype = argOidVect[argnum];
+           Oid         argtype = argOidVect[argnum];
 
            if (argtype == ANYARRAYOID || argtype == ANYELEMENTOID)
            {
@@ -309,7 +309,7 @@ postquel_getnext(execution_state *es)
 
    /*
     * If it's the function's last command, and it's a SELECT, fetch one
-    * row at a time so we can return the results.  Otherwise just run it
+    * row at a time so we can return the results.  Otherwise just run it
     * to completion.
     */
    if (LAST_POSTQUEL_COMMAND(es) && es->qd->operation == CMD_SELECT)
@@ -655,14 +655,14 @@ sql_exec_error_callback(void *arg)
    /*
     * Try to determine where in the function we failed.  If there is a
     * query with non-null QueryDesc, finger it.  (We check this rather
-    * than looking for F_EXEC_RUN state, so that errors during ExecutorStart
-    * or ExecutorEnd are blamed on the appropriate query; see postquel_start
-    * and postquel_end.)
+    * than looking for F_EXEC_RUN state, so that errors during
+    * ExecutorStart or ExecutorEnd are blamed on the appropriate query;
+    * see postquel_start and postquel_end.)
     */
    if (fcache)
    {
        execution_state *es;
-       int     query_num;
+       int         query_num;
 
        es = fcache->func_state;
        query_num = 1;
index f0537cf5d90988b9404d3c06295dde525b1fcd1d..5cf448e772a5d61d918d7ce72258ba91cbc9bfe0 100644 (file)
@@ -45,7 +45,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.112 2003/08/01 00:15:21 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.113 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -173,12 +173,12 @@ typedef struct AggStatePerGroupData
     * later input value. Only the first non-NULL input will be
     * auto-substituted.
     */
-} AggStatePerGroupData;
+}  AggStatePerGroupData;
 
 /*
  * To implement hashed aggregation, we need a hashtable that stores a
  * representative tuple and an array of AggStatePerGroup structs for each
- * distinct set of GROUP BY column values.  We compute the hash key from
+ * distinct set of GROUP BY column values. We compute the hash key from
  * the GROUP BY columns.
  */
 typedef struct AggHashEntryData *AggHashEntry;
@@ -188,27 +188,27 @@ typedef struct AggHashEntryData
    TupleHashEntryData shared;  /* common header for hash table entries */
    /* per-aggregate transition status array - must be last! */
    AggStatePerGroupData pergroup[1];   /* VARIABLE LENGTH ARRAY */
-} AggHashEntryData;                /* VARIABLE LENGTH STRUCT */
+}  AggHashEntryData;   /* VARIABLE LENGTH STRUCT */
 
 
 static void initialize_aggregates(AggState *aggstate,
-                                 AggStatePerAgg peragg,
-                                 AggStatePerGroup pergroup);
+                     AggStatePerAgg peragg,
+                     AggStatePerGroup pergroup);
 static void advance_transition_function(AggState *aggstate,
-                                       AggStatePerAgg peraggstate,
-                                       AggStatePerGroup pergroupstate,
-                                       Datum newVal, bool isNull);
+                           AggStatePerAgg peraggstate,
+                           AggStatePerGroup pergroupstate,
+                           Datum newVal, bool isNull);
 static void advance_aggregates(AggState *aggstate, AggStatePerGroup pergroup);
 static void process_sorted_aggregate(AggState *aggstate,
-                                    AggStatePerAgg peraggstate,
-                                    AggStatePerGroup pergroupstate);
+                        AggStatePerAgg peraggstate,
+                        AggStatePerGroup pergroupstate);
 static void finalize_aggregate(AggState *aggstate,
-                              AggStatePerAgg peraggstate,
-                              AggStatePerGroup pergroupstate,
-                              Datum *resultVal, bool *resultIsNull);
+                  AggStatePerAgg peraggstate,
+                  AggStatePerGroup pergroupstate,
+                  Datum *resultVal, bool *resultIsNull);
 static void build_hash_table(AggState *aggstate);
 static AggHashEntry lookup_hash_entry(AggState *aggstate,
-                                     TupleTableSlot *slot);
+                 TupleTableSlot *slot);
 static TupleTableSlot *agg_retrieve_direct(AggState *aggstate);
 static void agg_fill_hash_table(AggState *aggstate);
 static TupleTableSlot *agg_retrieve_hash_table(AggState *aggstate);
@@ -231,7 +231,7 @@ initialize_aggregates(AggState *aggstate,
    {
        AggStatePerAgg peraggstate = &peragg[aggno];
        AggStatePerGroup pergroupstate = &pergroup[aggno];
-       Aggref *aggref = peraggstate->aggref;
+       Aggref     *aggref = peraggstate->aggref;
 
        /*
         * Start a fresh sort operation for each DISTINCT aggregate.
@@ -265,18 +265,18 @@ initialize_aggregates(AggState *aggstate,
 
            oldContext = MemoryContextSwitchTo(aggstate->aggcontext);
            pergroupstate->transValue = datumCopy(peraggstate->initValue,
-                                                 peraggstate->transtypeByVal,
-                                                 peraggstate->transtypeLen);
+                                            peraggstate->transtypeByVal,
+                                             peraggstate->transtypeLen);
            MemoryContextSwitchTo(oldContext);
        }
        pergroupstate->transValueIsNull = peraggstate->initValueIsNull;
 
        /*
-        * If the initial value for the transition state doesn't exist in the
-        * pg_aggregate table then we will let the first non-NULL value
-        * returned from the outer procNode become the initial value. (This is
-        * useful for aggregates like max() and min().)  The noTransValue flag
-        * signals that we still need to do this.
+        * If the initial value for the transition state doesn't exist in
+        * the pg_aggregate table then we will let the first non-NULL
+        * value returned from the outer procNode become the initial
+        * value. (This is useful for aggregates like max() and min().)
+        * The noTransValue flag signals that we still need to do this.
         */
        pergroupstate->noTransValue = peraggstate->initValueIsNull;
    }
@@ -299,8 +299,8 @@ advance_transition_function(AggState *aggstate,
    if (peraggstate->transfn.fn_strict)
    {
        /*
-        * For a strict transfn, nothing happens at a NULL input
-        * tuple; we just keep the prior transValue.
+        * For a strict transfn, nothing happens at a NULL input tuple; we
+        * just keep the prior transValue.
         */
        if (isNull)
            return;
@@ -314,12 +314,13 @@ advance_transition_function(AggState *aggstate,
             * here is OK.)
             *
             * We must copy the datum into aggcontext if it is pass-by-ref.
-            * We do not need to pfree the old transValue, since it's NULL.
+            * We do not need to pfree the old transValue, since it's
+            * NULL.
             */
            oldContext = MemoryContextSwitchTo(aggstate->aggcontext);
            pergroupstate->transValue = datumCopy(newVal,
-                                                 peraggstate->transtypeByVal,
-                                                 peraggstate->transtypeLen);
+                                            peraggstate->transtypeByVal,
+                                             peraggstate->transtypeLen);
            pergroupstate->transValueIsNull = false;
            pergroupstate->noTransValue = false;
            MemoryContextSwitchTo(oldContext);
@@ -363,12 +364,12 @@ advance_transition_function(AggState *aggstate,
    newVal = FunctionCallInvoke(&fcinfo);
 
    /*
-    * If pass-by-ref datatype, must copy the new value into aggcontext and
-    * pfree the prior transValue.  But if transfn returned a pointer to its
-    * first input, we don't need to do anything.
+    * If pass-by-ref datatype, must copy the new value into aggcontext
+    * and pfree the prior transValue.  But if transfn returned a pointer
+    * to its first input, we don't need to do anything.
     */
    if (!peraggstate->transtypeByVal &&
-       DatumGetPointer(newVal) != DatumGetPointer(pergroupstate->transValue))
+   DatumGetPointer(newVal) != DatumGetPointer(pergroupstate->transValue))
    {
        if (!fcinfo.isnull)
        {
@@ -388,7 +389,7 @@ advance_transition_function(AggState *aggstate,
 }
 
 /*
- * Advance all the aggregates for one input tuple.  The input tuple
+ * Advance all the aggregates for one input tuple. The input tuple
  * has been stored in tmpcontext->ecxt_scantuple, so that it is accessible
  * to ExecEvalExpr.  pergroup is the array of per-group structs to use
  * (this might be in a hashtable entry).
@@ -467,8 +468,8 @@ process_sorted_aggregate(AggState *aggstate,
            continue;
 
        /*
-        * Clear and select the working context for evaluation of
-        * the equality function and transition function.
+        * Clear and select the working context for evaluation of the
+        * equality function and transition function.
         */
        MemoryContextReset(workcontext);
        oldContext = MemoryContextSwitchTo(workcontext);
@@ -570,9 +571,9 @@ finalize_aggregate(AggState *aggstate,
 static void
 build_hash_table(AggState *aggstate)
 {
-   Agg            *node = (Agg *) aggstate->ss.ps.plan;
-   MemoryContext   tmpmem = aggstate->tmpcontext->ecxt_per_tuple_memory;
-   Size            entrysize;
+   Agg        *node = (Agg *) aggstate->ss.ps.plan;
+   MemoryContext tmpmem = aggstate->tmpcontext->ecxt_per_tuple_memory;
+   Size        entrysize;
 
    Assert(node->aggstrategy == AGG_HASHED);
    Assert(node->numGroups > 0);
@@ -622,9 +623,9 @@ lookup_hash_entry(AggState *aggstate, TupleTableSlot *slot)
  *   the appropriate attribute for each aggregate function use (Aggref
  *   node) appearing in the targetlist or qual of the node.  The number
  *   of tuples to aggregate over depends on whether grouped or plain
- *   aggregation is selected.  In grouped aggregation, we produce a result
+ *   aggregation is selected.  In grouped aggregation, we produce a result
  *   row for each group; in plain aggregation there's a single result row
- *   for the whole query.  In either case, the value of each aggregate is
+ *   for the whole query.  In either case, the value of each aggregate is
  *   stored in the expression context to be used when ExecProject evaluates
  *   the result tuple.
  */
@@ -641,9 +642,7 @@ ExecAgg(AggState *node)
        return agg_retrieve_hash_table(node);
    }
    else
-   {
        return agg_retrieve_direct(node);
-   }
 }
 
 /*
@@ -736,7 +735,7 @@ agg_retrieve_direct(AggState *aggstate)
                           firstSlot,
                           InvalidBuffer,
                           true);
-           aggstate->grp_firstTuple = NULL; /* don't keep two pointers */
+           aggstate->grp_firstTuple = NULL;    /* don't keep two pointers */
 
            /* set up for first advance_aggregates call */
            tmpcontext->ecxt_scantuple = firstSlot;
@@ -773,7 +772,7 @@ agg_retrieve_direct(AggState *aggstate)
                                         firstSlot->ttc_tupleDescriptor,
                                         node->numCols, node->grpColIdx,
                                         aggstate->eqfunctions,
-                                        tmpcontext->ecxt_per_tuple_memory))
+                                     tmpcontext->ecxt_per_tuple_memory))
                    {
                        /*
                         * Save the first input tuple of the next group.
@@ -806,15 +805,15 @@ agg_retrieve_direct(AggState *aggstate)
         * anything), create a dummy all-nulls input tuple for use by
         * ExecProject. 99.44% of the time this is a waste of cycles,
         * because ordinarily the projected output tuple's targetlist
-        * cannot contain any direct (non-aggregated) references to
-        * input columns, so the dummy tuple will not be referenced.
-        * However there are special cases where this isn't so --- in
-        * particular an UPDATE involving an aggregate will have a
-        * targetlist reference to ctid.  We need to return a null for
-        * ctid in that situation, not coredump.
+        * cannot contain any direct (non-aggregated) references to input
+        * columns, so the dummy tuple will not be referenced. However
+        * there are special cases where this isn't so --- in particular
+        * an UPDATE involving an aggregate will have a targetlist
+        * reference to ctid.  We need to return a null for ctid in that
+        * situation, not coredump.
         *
-        * The values returned for the aggregates will be the initial
-        * values of the transition functions.
+        * The values returned for the aggregates will be the initial values
+        * of the transition functions.
         */
        if (TupIsNull(firstSlot))
        {
@@ -872,7 +871,7 @@ agg_fill_hash_table(AggState *aggstate)
 {
    PlanState  *outerPlan;
    ExprContext *tmpcontext;
-   AggHashEntry    entry;
+   AggHashEntry entry;
    TupleTableSlot *outerslot;
 
    /*
@@ -883,8 +882,8 @@ agg_fill_hash_table(AggState *aggstate)
    tmpcontext = aggstate->tmpcontext;
 
    /*
-    * Process each outer-plan tuple, and then fetch the next one,
-    * until we exhaust the outer plan.
+    * Process each outer-plan tuple, and then fetch the next one, until
+    * we exhaust the outer plan.
     */
    for (;;)
    {
@@ -921,8 +920,8 @@ agg_retrieve_hash_table(AggState *aggstate)
    bool       *aggnulls;
    AggStatePerAgg peragg;
    AggStatePerGroup pergroup;
-   TupleHashTable  hashtable;
-   AggHashEntry    entry;
+   TupleHashTable hashtable;
+   AggHashEntry entry;
    TupleTableSlot *firstSlot;
    TupleTableSlot *resultSlot;
    int         aggno;
@@ -1045,20 +1044,20 @@ ExecInitAgg(Agg *node, EState *estate)
    aggstate->hashtable = NULL;
 
    /*
-    * Create expression contexts.  We need two, one for per-input-tuple
-    * processing and one for per-output-tuple processing.  We cheat a little
-    * by using ExecAssignExprContext() to build both.
+    * Create expression contexts.  We need two, one for per-input-tuple
+    * processing and one for per-output-tuple processing.  We cheat a
+    * little by using ExecAssignExprContext() to build both.
     */
    ExecAssignExprContext(estate, &aggstate->ss.ps);
    aggstate->tmpcontext = aggstate->ss.ps.ps_ExprContext;
    ExecAssignExprContext(estate, &aggstate->ss.ps);
 
    /*
-    * We also need a long-lived memory context for holding hashtable
-    * data structures and transition values.  NOTE: the details of what
-    * is stored in aggcontext and what is stored in the regular per-query
-    * memory context are driven by a simple decision: we want to reset the
-    * aggcontext in ExecReScanAgg to recover no-longer-wanted space.
+    * We also need a long-lived memory context for holding hashtable data
+    * structures and transition values.  NOTE: the details of what is
+    * stored in aggcontext and what is stored in the regular per-query
+    * memory context are driven by a simple decision: we want to reset
+    * the aggcontext in ExecReScanAgg to recover no-longer-wanted space.
     */
    aggstate->aggcontext =
        AllocSetContextCreate(CurrentMemoryContext,
@@ -1079,10 +1078,10 @@ ExecInitAgg(Agg *node, EState *estate)
     * initialize child expressions
     *
     * Note: ExecInitExpr finds Aggrefs for us, and also checks that no aggs
-    * contain other agg calls in their arguments.  This would make no sense
-    * under SQL semantics anyway (and it's forbidden by the spec).  Because
-    * that is true, we don't need to worry about evaluating the aggs in any
-    * particular order.
+    * contain other agg calls in their arguments.  This would make no
+    * sense under SQL semantics anyway (and it's forbidden by the spec).
+    * Because that is true, we don't need to worry about evaluating the
+    * aggs in any particular order.
     */
    aggstate->ss.ps.targetlist = (List *)
        ExecInitExpr((Expr *) node->plan.targetlist,
@@ -1116,19 +1115,20 @@ ExecInitAgg(Agg *node, EState *estate)
    if (numaggs <= 0)
    {
        /*
-        * This is not an error condition: we might be using the Agg node just
-        * to do hash-based grouping.  Even in the regular case,
-        * constant-expression simplification could optimize away all of the
-        * Aggrefs in the targetlist and qual.  So keep going, but force local
-        * copy of numaggs positive so that palloc()s below don't choke.
+        * This is not an error condition: we might be using the Agg node
+        * just to do hash-based grouping.  Even in the regular case,
+        * constant-expression simplification could optimize away all of
+        * the Aggrefs in the targetlist and qual.  So keep going, but
+        * force local copy of numaggs positive so that palloc()s below
+        * don't choke.
         */
        numaggs = 1;
    }
 
    /*
-    * If we are grouping, precompute fmgr lookup data for inner loop.
-    * We need both equality and hashing functions to do it by hashing,
-    * but only equality if not hashing.
+    * If we are grouping, precompute fmgr lookup data for inner loop. We
+    * need both equality and hashing functions to do it by hashing, but
+    * only equality if not hashing.
     */
    if (node->numCols > 0)
    {
@@ -1146,8 +1146,8 @@ ExecInitAgg(Agg *node, EState *estate)
    }
 
    /*
-    * Set up aggregate-result storage in the output expr context, and also
-    * allocate my private per-agg working storage
+    * Set up aggregate-result storage in the output expr context, and
+    * also allocate my private per-agg working storage
     */
    econtext = aggstate->ss.ps.ps_ExprContext;
    econtext->ecxt_aggvalues = (Datum *) palloc0(sizeof(Datum) * numaggs);
@@ -1174,8 +1174,8 @@ ExecInitAgg(Agg *node, EState *estate)
     * unchanging fields of the per-agg data.  We also detect duplicate
     * aggregates (for example, "SELECT sum(x) ... HAVING sum(x) > 0").
     * When duplicates are detected, we only make an AggStatePerAgg struct
-    * for the first one.  The clones are simply pointed at the same result
-    * entry by giving them duplicate aggno values.
+    * for the first one.  The clones are simply pointed at the same
+    * result entry by giving them duplicate aggno values.
     */
    aggno = -1;
    foreach(alist, aggstate->aggs)
@@ -1425,9 +1425,9 @@ ExecReScanAgg(AggState *node, ExprContext *exprCtxt)
    if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED)
    {
        /*
-        * In the hashed case, if we haven't yet built the hash table
-        * then we can just return; nothing done yet, so nothing to undo.
-        * If subnode's chgParam is not NULL then it will be re-scanned by
+        * In the hashed case, if we haven't yet built the hash table then
+        * we can just return; nothing done yet, so nothing to undo. If
+        * subnode's chgParam is not NULL then it will be re-scanned by
         * ExecProcNode, else no reason to re-scan it at all.
         */
        if (!node->table_filled)
index e79d37fd857e184c86dac00482a63de1a248b376..7fc8caac2a9e88d8aad399684af1f868467c12d6 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeAppend.c,v 1.52 2003/02/09 00:30:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeAppend.c,v 1.53 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -355,7 +355,7 @@ ExecReScanAppend(AppendState *node, ExprContext *exprCtxt)
 
    for (i = node->as_firstplan; i <= node->as_lastplan; i++)
    {
-       PlanState *subnode = node->appendplans[i];
+       PlanState  *subnode = node->appendplans[i];
 
        /*
         * ExecReScan doesn't know about my subplans, so I have to do
index 69053708cda60fef3dd7ee3267e1be3eb3d3c27f..a4eb9065c0630a76018f48c0345fa1dcf8d6db4c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeHash.c,v 1.77 2003/07/21 17:05:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeHash.c,v 1.78 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -244,7 +244,7 @@ ExecHashTableCreate(Hash *node, List *hashOperators)
    i = 0;
    foreach(ho, hashOperators)
    {
-       Oid     hashfn;
+       Oid         hashfn;
 
        hashfn = get_op_hash_function(lfirsto(ho));
        if (!OidIsValid(hashfn))
index bc3ecdfeeda3356399076897e40eb29bc5e32f79..a45e007aff294ae7daeee230ae5676def9904fa8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.53 2003/07/21 17:05:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.54 2003/08/04 00:43:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,8 +22,8 @@
 #include "utils/memutils.h"
 
 
-static TupleTableSlot *ExecHashJoinOuterGetTuple(PlanState *node,
-                                                HashJoinState *hjstate);
+static TupleTableSlot *ExecHashJoinOuterGetTuple(PlanState * node,
+                         HashJoinState *hjstate);
 static TupleTableSlot *ExecHashJoinGetSavedTuple(HashJoinState *hjstate,
                          BufFile *file,
                          TupleTableSlot *tupleSlot);
@@ -94,10 +94,10 @@ ExecHashJoin(HashJoinState *node)
 
    /*
     * If we're doing an IN join, we want to return at most one row per
-    * outer tuple; so we can stop scanning the inner scan if we matched on
-    * the previous try.
+    * outer tuple; so we can stop scanning the inner scan if we matched
+    * on the previous try.
     */
-   if (node->js.jointype == JOIN_IN && 
+   if (node->js.jointype == JOIN_IN &&
        node->hj_MatchedOuter)
        node->hj_NeedNewOuter = true;
 
@@ -244,7 +244,10 @@ ExecHashJoin(HashJoinState *node)
                    }
                }
 
-               /* If we didn't return a tuple, may need to set NeedNewOuter */
+               /*
+                * If we didn't return a tuple, may need to set
+                * NeedNewOuter
+                */
                if (node->js.jointype == JOIN_IN)
                {
                    node->hj_NeedNewOuter = true;
@@ -365,7 +368,7 @@ ExecInitHashJoin(HashJoin *node, EState *estate)
        case JOIN_LEFT:
            hjstate->hj_NullInnerTupleSlot =
                ExecInitNullTupleSlot(estate,
-                                     ExecGetResultType(innerPlanState(hjstate)));
+                            ExecGetResultType(innerPlanState(hjstate)));
            break;
        default:
            elog(ERROR, "unrecognized join type: %d",
@@ -407,10 +410,10 @@ ExecInitHashJoin(HashJoin *node, EState *estate)
    hjstate->hj_CurTuple = (HashJoinTuple) NULL;
 
    /*
-    * The planner already made a list of the inner hashkeys for us,
-    * but we also need a list of the outer hashkeys, as well as a list
-    * of the hash operator OIDs.  Both lists of exprs must then be prepared
-    * for execution.
+    * The planner already made a list of the inner hashkeys for us, but
+    * we also need a list of the outer hashkeys, as well as a list of the
+    * hash operator OIDs.  Both lists of exprs must then be prepared for
+    * execution.
     */
    hjstate->hj_InnerHashKeys = (List *)
        ExecInitExpr((Expr *) hashNode->hashkeys,
@@ -496,7 +499,7 @@ ExecEndHashJoin(HashJoinState *node)
  */
 
 static TupleTableSlot *
-ExecHashJoinOuterGetTuple(PlanState *node, HashJoinState *hjstate)
+ExecHashJoinOuterGetTuple(PlanState * node, HashJoinState *hjstate)
 {
    HashJoinTable hashtable = hjstate->hj_HashTable;
    int         curbatch = hashtable->curbatch;
@@ -701,11 +704,11 @@ ExecReScanHashJoin(HashJoinState *node, ExprContext *exprCtxt)
    Assert(node->hj_HashTable != NULL);
 
    /*
-    * In a multi-batch join, we currently have to do rescans the hard way,
-    * primarily because batch temp files may have already been released.
-    * But if it's a single-batch join, and there is no parameter change
-    * for the inner subnode, then we can just re-use the existing hash
-    * table without rebuilding it.
+    * In a multi-batch join, we currently have to do rescans the hard
+    * way, primarily because batch temp files may have already been
+    * released. But if it's a single-batch join, and there is no
+    * parameter change for the inner subnode, then we can just re-use the
+    * existing hash table without rebuilding it.
     */
    if (node->hj_HashTable->nbatch == 0 &&
        ((PlanState *) node)->righttree->chgParam == NULL)
@@ -718,6 +721,7 @@ ExecReScanHashJoin(HashJoinState *node, ExprContext *exprCtxt)
        node->hj_hashdone = false;
        ExecHashTableDestroy(node->hj_HashTable);
        node->hj_HashTable = NULL;
+
        /*
         * if chgParam of subnode is not null then plan will be re-scanned
         * by first ExecProcNode.
@@ -736,8 +740,8 @@ ExecReScanHashJoin(HashJoinState *node, ExprContext *exprCtxt)
    node->hj_MatchedOuter = false;
 
    /*
-    * if chgParam of subnode is not null then plan will be re-scanned
-    * by first ExecProcNode.
+    * if chgParam of subnode is not null then plan will be re-scanned by
+    * first ExecProcNode.
     */
    if (((PlanState *) node)->lefttree->chgParam == NULL)
        ExecReScan(((PlanState *) node)->lefttree, exprCtxt);
index 017a378f9daddcf5f8200ec91d6ebf8a0d8d6e53..d01d4cfa7c7a6034b73a19d14162d06270c92b8e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.80 2003/07/21 17:05:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.81 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -290,7 +290,8 @@ ExecIndexReScan(IndexScanState *node, ExprContext *exprCtxt)
    int         j;
 
    estate = node->ss.ps.state;
-   econtext = node->iss_RuntimeContext;    /* context for runtime keys */
+   econtext = node->iss_RuntimeContext;        /* context for runtime
+                                                * keys */
    numIndices = node->iss_NumIndices;
    scanDescs = node->iss_ScanDescs;
    scanKeys = node->iss_ScanKeys;
@@ -882,7 +883,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate)
                        reloid)));
 
    indexstate->ss.ss_currentRelation = currentRelation;
-   indexstate->ss.ss_currentScanDesc = NULL;       /* no heap scan here */
+   indexstate->ss.ss_currentScanDesc = NULL;   /* no heap scan here */
 
    /*
     * get the scan type from the relation descriptor.
index 4b1145e258c00a423a2233b1887409fbd55f68ff..7477bd4304289f309ffdf9c76a714544982e94a8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeLimit.c,v 1.15 2003/07/21 17:05:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeLimit.c,v 1.16 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -55,17 +55,21 @@ ExecLimit(LimitState *node)
    switch (node->lstate)
    {
        case LIMIT_INITIAL:
+
            /*
             * If backwards scan, just return NULL without changing state.
             */
            if (!ScanDirectionIsForward(direction))
                return NULL;
+
            /*
-            * First call for this scan, so compute limit/offset. (We can't do
-            * this any earlier, because parameters from upper nodes may not
-            * be set until now.)  This also sets position = 0.
+            * First call for this scan, so compute limit/offset. (We
+            * can't do this any earlier, because parameters from upper
+            * nodes may not be set until now.)  This also sets position =
+            * 0.
             */
            recompute_limits(node);
+
            /*
             * Check for empty window; if so, treat like empty subplan.
             */
@@ -74,6 +78,7 @@ ExecLimit(LimitState *node)
                node->lstate = LIMIT_EMPTY;
                return NULL;
            }
+
            /*
             * Fetch rows from subplan until we reach position > offset.
             */
@@ -83,8 +88,8 @@ ExecLimit(LimitState *node)
                if (TupIsNull(slot))
                {
                    /*
-                    * The subplan returns too few tuples for us to produce
-                    * any output at all.
+                    * The subplan returns too few tuples for us to
+                    * produce any output at all.
                     */
                    node->lstate = LIMIT_EMPTY;
                    return NULL;
@@ -93,6 +98,7 @@ ExecLimit(LimitState *node)
                if (++node->position > node->offset)
                    break;
            }
+
            /*
             * Okay, we have the first tuple of the window.
             */
@@ -100,9 +106,10 @@ ExecLimit(LimitState *node)
            break;
 
        case LIMIT_EMPTY:
+
            /*
             * The subplan is known to return no tuples (or not more than
-            * OFFSET tuples, in general).  So we return no tuples.
+            * OFFSET tuples, in general).  So we return no tuples.
             */
            return NULL;
 
@@ -113,7 +120,8 @@ ExecLimit(LimitState *node)
                 * Forwards scan, so check for stepping off end of window.
                 * If we are at the end of the window, return NULL without
                 * advancing the subplan or the position variable; but
-                * change the state machine state to record having done so.
+                * change the state machine state to record having done
+                * so.
                 */
                if (!node->noCount &&
                    node->position >= node->offset + node->count)
@@ -121,6 +129,7 @@ ExecLimit(LimitState *node)
                    node->lstate = LIMIT_WINDOWEND;
                    return NULL;
                }
+
                /*
                 * Get next tuple from subplan, if any.
                 */
@@ -136,14 +145,16 @@ ExecLimit(LimitState *node)
            else
            {
                /*
-                * Backwards scan, so check for stepping off start of window.
-                * As above, change only state-machine status if so.
+                * Backwards scan, so check for stepping off start of
+                * window. As above, change only state-machine status if
+                * so.
                 */
                if (node->position <= node->offset + 1)
                {
                    node->lstate = LIMIT_WINDOWSTART;
                    return NULL;
                }
+
                /*
                 * Get previous tuple from subplan; there should be one!
                 */
@@ -158,9 +169,11 @@ ExecLimit(LimitState *node)
        case LIMIT_SUBPLANEOF:
            if (ScanDirectionIsForward(direction))
                return NULL;
+
            /*
             * Backing up from subplan EOF, so re-fetch previous tuple;
-            * there should be one!  Note previous tuple must be in window.
+            * there should be one!  Note previous tuple must be in
+            * window.
             */
            slot = ExecProcNode(outerPlan);
            if (TupIsNull(slot))
@@ -173,9 +186,10 @@ ExecLimit(LimitState *node)
        case LIMIT_WINDOWEND:
            if (ScanDirectionIsForward(direction))
                return NULL;
+
            /*
-            * Backing up from window end: simply re-return the last
-            * tuple fetched from the subplan.
+            * Backing up from window end: simply re-return the last tuple
+            * fetched from the subplan.
             */
            slot = node->subSlot;
            node->lstate = LIMIT_INWINDOW;
@@ -185,6 +199,7 @@ ExecLimit(LimitState *node)
        case LIMIT_WINDOWSTART:
            if (!ScanDirectionIsForward(direction))
                return NULL;
+
            /*
             * Advancing after having backed off window start: simply
             * re-return the last tuple fetched from the subplan.
index 39968c65e0cffe113c4c7cff6a519470a45f2f20..afd08e80945de54c340ec9147408685d4553ab49 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.42 2003/03/27 16:51:27 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.43 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -79,15 +79,15 @@ ExecMaterial(MaterialState *node)
        {
            /*
             * When reversing direction at tuplestore EOF, the first
-            * getheaptuple call will fetch the last-added tuple; but
-            * we want to return the one before that, if possible.
-            * So do an extra fetch.
+            * getheaptuple call will fetch the last-added tuple; but we
+            * want to return the one before that, if possible. So do an
+            * extra fetch.
             */
            heapTuple = tuplestore_getheaptuple(tuplestorestate,
                                                forward,
                                                &should_free);
            if (heapTuple == NULL)
-               return NULL;        /* the tuplestore must be empty */
+               return NULL;    /* the tuplestore must be empty */
            if (should_free)
                heap_freetuple(heapTuple);
        }
@@ -129,10 +129,11 @@ ExecMaterial(MaterialState *node)
        }
        heapTuple = outerslot->val;
        should_free = false;
+
        /*
         * Append returned tuple to tuplestore, too.  NOTE: because the
-        * tuplestore is certainly in EOF state, its read position will move
-        * forward over the added tuple.  This is what we want.
+        * tuplestore is certainly in EOF state, its read position will
+        * move forward over the added tuple.  This is what we want.
         */
        tuplestore_puttuple(tuplestorestate, (void *) heapTuple);
    }
@@ -293,8 +294,8 @@ ExecMaterialReScan(MaterialState *node, ExprContext *exprCtxt)
     * If subnode is to be rescanned then we forget previous stored
     * results; we have to re-read the subplan and re-store.
     *
-    * Otherwise we can just rewind and rescan the stored output.
-    * The state of the subnode does not change.
+    * Otherwise we can just rewind and rescan the stored output. The state
+    * of the subnode does not change.
     */
    if (((PlanState *) node)->lefttree->chgParam != NULL)
    {
@@ -303,7 +304,5 @@ ExecMaterialReScan(MaterialState *node, ExprContext *exprCtxt)
        node->eof_underlying = false;
    }
    else
-   {
        tuplestore_rescan((Tuplestorestate *) node->tuplestorestate);
-   }
 }
index 57249d7d9701b2a7ece3127bd89b2f2307e9ddff..081ce24cb19c992bde4569d46e706505c04e717e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.58 2003/07/21 17:05:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.59 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -102,7 +102,7 @@ static bool MergeCompare(List *eqQual, List *compareQual, ExprContext *econtext)
  */
 static void
 MJFormSkipQuals(List *qualList, List **ltQuals, List **gtQuals,
-               PlanState *parent)
+               PlanState * parent)
 {
    List       *ltexprs,
               *gtexprs,
@@ -358,9 +358,9 @@ ExecMergeJoin(MergeJoinState *node)
    List       *otherqual;
    bool        qualResult;
    bool        compareResult;
-   PlanState   *innerPlan;
+   PlanState  *innerPlan;
    TupleTableSlot *innerTupleSlot;
-   PlanState   *outerPlan;
+   PlanState  *outerPlan;
    TupleTableSlot *outerTupleSlot;
    ExprContext *econtext;
    bool        doFillOuter;
@@ -644,7 +644,7 @@ ExecMergeJoin(MergeJoinState *node)
                     * tuple, and return it if it passes the non-join
                     * quals.
                     */
-                   node->mj_MatchedInner = true; /* do it only once */
+                   node->mj_MatchedInner = true;       /* do it only once */
 
                    ResetExprContext(econtext);
 
@@ -720,7 +720,7 @@ ExecMergeJoin(MergeJoinState *node)
                     * tuple, and return it if it passes the non-join
                     * quals.
                     */
-                   node->mj_MatchedOuter = true; /* do it only once */
+                   node->mj_MatchedOuter = true;       /* do it only once */
 
                    ResetExprContext(econtext);
 
@@ -1004,7 +1004,7 @@ ExecMergeJoin(MergeJoinState *node)
                     * tuple, and return it if it passes the non-join
                     * quals.
                     */
-                   node->mj_MatchedOuter = true; /* do it only once */
+                   node->mj_MatchedOuter = true;       /* do it only once */
 
                    ResetExprContext(econtext);
 
@@ -1181,7 +1181,7 @@ ExecMergeJoin(MergeJoinState *node)
                     * tuple, and return it if it passes the non-join
                     * quals.
                     */
-                   node->mj_MatchedInner = true; /* do it only once */
+                   node->mj_MatchedInner = true;       /* do it only once */
 
                    ResetExprContext(econtext);
 
@@ -1266,7 +1266,7 @@ ExecMergeJoin(MergeJoinState *node)
                     * tuple, and return it if it passes the non-join
                     * quals.
                     */
-                   node->mj_MatchedInner = true; /* do it only once */
+                   node->mj_MatchedInner = true;       /* do it only once */
 
                    ResetExprContext(econtext);
 
@@ -1333,7 +1333,7 @@ ExecMergeJoin(MergeJoinState *node)
                     * tuple, and return it if it passes the non-join
                     * quals.
                     */
-                   node->mj_MatchedOuter = true; /* do it only once */
+                   node->mj_MatchedOuter = true;       /* do it only once */
 
                    ResetExprContext(econtext);
 
@@ -1462,12 +1462,12 @@ ExecInitMergeJoin(MergeJoin *node, EState *estate)
        case JOIN_LEFT:
            mergestate->mj_NullInnerTupleSlot =
                ExecInitNullTupleSlot(estate,
-                              ExecGetResultType(innerPlanState(mergestate)));
+                         ExecGetResultType(innerPlanState(mergestate)));
            break;
        case JOIN_RIGHT:
            mergestate->mj_NullOuterTupleSlot =
                ExecInitNullTupleSlot(estate,
-                              ExecGetResultType(outerPlanState(mergestate)));
+                         ExecGetResultType(outerPlanState(mergestate)));
 
            /*
             * Can't handle right or full join with non-nil extra
@@ -1481,10 +1481,10 @@ ExecInitMergeJoin(MergeJoin *node, EState *estate)
        case JOIN_FULL:
            mergestate->mj_NullOuterTupleSlot =
                ExecInitNullTupleSlot(estate,
-                              ExecGetResultType(outerPlanState(mergestate)));
+                         ExecGetResultType(outerPlanState(mergestate)));
            mergestate->mj_NullInnerTupleSlot =
                ExecInitNullTupleSlot(estate,
-                              ExecGetResultType(innerPlanState(mergestate)));
+                         ExecGetResultType(innerPlanState(mergestate)));
 
            /*
             * Can't handle right or full join with non-nil extra
index 2b69da95e8239d76b149e19c1fa86663e4b8f146..66dbd8c063d4cb96b9535f934c2fd69dbdc27f95 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeNestloop.c,v 1.33 2003/07/21 17:05:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeNestloop.c,v 1.34 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -103,8 +103,8 @@ ExecNestLoop(NestLoopState *node)
 
    /*
     * If we're doing an IN join, we want to return at most one row per
-    * outer tuple; so we can stop scanning the inner scan if we matched on
-    * the previous try.
+    * outer tuple; so we can stop scanning the inner scan if we matched
+    * on the previous try.
     */
    if (node->js.jointype == JOIN_IN &&
        node->nl_MatchedOuter)
@@ -330,7 +330,7 @@ ExecInitNestLoop(NestLoop *node, EState *estate)
        case JOIN_LEFT:
            nlstate->nl_NullInnerTupleSlot =
                ExecInitNullTupleSlot(estate,
-                              ExecGetResultType(innerPlanState(nlstate)));
+                            ExecGetResultType(innerPlanState(nlstate)));
            break;
        default:
            elog(ERROR, "unrecognized join type: %d",
@@ -404,7 +404,7 @@ ExecEndNestLoop(NestLoopState *node)
 void
 ExecReScanNestLoop(NestLoopState *node, ExprContext *exprCtxt)
 {
-   PlanState   *outerPlan = outerPlanState(node);
+   PlanState  *outerPlan = outerPlanState(node);
 
    /*
     * If outerPlan->chgParam is not null then plan will be automatically
index 9ea75eb3ce77ed295ac22633ac737ec719c10c49..194ed1921697c21035b68b9fb28a5ac258c48ab2 100644 (file)
@@ -34,7 +34,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeResult.c,v 1.24 2002/12/15 16:17:46 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeResult.c,v 1.25 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -64,7 +64,7 @@ ExecResult(ResultState *node)
 {
    TupleTableSlot *outerTupleSlot;
    TupleTableSlot *resultSlot;
-   PlanState   *outerPlan;
+   PlanState  *outerPlan;
    ExprContext *econtext;
    ExprDoneCond isDone;
 
index 47d2e4eb4970ae539a5d90a558bb993835afb353..4721fc5bf6a80ba2ab8922769cf1004c9c9723f5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.43 2003/02/03 15:07:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.44 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -29,8 +29,8 @@
 #include "executor/nodeSeqscan.h"
 #include "parser/parsetree.h"
 
-static void InitScanRelation(SeqScanState *node, EState *estate);
-static TupleTableSlot *SeqNext(SeqScanState *node);
+static void InitScanRelation(SeqScanState * node, EState *estate);
+static TupleTableSlot *SeqNext(SeqScanState * node);
 
 /* ----------------------------------------------------------------
  *                     Scan Support
@@ -43,7 +43,7 @@ static TupleTableSlot *SeqNext(SeqScanState *node);
  * ----------------------------------------------------------------
  */
 static TupleTableSlot *
-SeqNext(SeqScanState *node)
+SeqNext(SeqScanState * node)
 {
    HeapTuple   tuple;
    HeapScanDesc scandesc;
@@ -123,7 +123,7 @@ SeqNext(SeqScanState *node)
  */
 
 TupleTableSlot *
-ExecSeqScan(SeqScanState *node)
+ExecSeqScan(SeqScanState * node)
 {
    /*
     * use SeqNext as access method
@@ -139,7 +139,7 @@ ExecSeqScan(SeqScanState *node)
  * ----------------------------------------------------------------
  */
 static void
-InitScanRelation(SeqScanState *node, EState *estate)
+InitScanRelation(SeqScanState * node, EState *estate)
 {
    Index       relid;
    List       *rangeTable;
@@ -252,7 +252,7 @@ ExecCountSlotsSeqScan(SeqScan *node)
  * ----------------------------------------------------------------
  */
 void
-ExecEndSeqScan(SeqScanState *node)
+ExecEndSeqScan(SeqScanState * node)
 {
    Relation    relation;
    HeapScanDesc scanDesc;
@@ -302,7 +302,7 @@ ExecEndSeqScan(SeqScanState *node)
  * ----------------------------------------------------------------
  */
 void
-ExecSeqReScan(SeqScanState *node, ExprContext *exprCtxt)
+ExecSeqReScan(SeqScanState * node, ExprContext *exprCtxt)
 {
    EState     *estate;
    Index       scanrelid;
@@ -332,7 +332,7 @@ ExecSeqReScan(SeqScanState *node, ExprContext *exprCtxt)
  * ----------------------------------------------------------------
  */
 void
-ExecSeqMarkPos(SeqScanState *node)
+ExecSeqMarkPos(SeqScanState * node)
 {
    HeapScanDesc scan;
 
@@ -347,7 +347,7 @@ ExecSeqMarkPos(SeqScanState *node)
  * ----------------------------------------------------------------
  */
 void
-ExecSeqRestrPos(SeqScanState *node)
+ExecSeqRestrPos(SeqScanState * node)
 {
    HeapScanDesc scan;
 
index a42e8f18e26f4149c38fabe59aac71b120722299..0fe888c803cf99dddadd5c0df0d5f169db29989b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSubplan.c,v 1.51 2003/07/21 17:05:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSubplan.c,v 1.52 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "utils/lsyscache.h"
 
 
-static Datum ExecHashSubPlan(SubPlanState *node,
-                            ExprContext *econtext,
-                            bool *isNull);
-static Datum ExecScanSubPlan(SubPlanState *node,
-                            ExprContext *econtext,
-                            bool *isNull);
-static void buildSubPlanHash(SubPlanState *node);
+static Datum ExecHashSubPlan(SubPlanState * node,
+               ExprContext *econtext,
+               bool *isNull);
+static Datum ExecScanSubPlan(SubPlanState * node,
+               ExprContext *econtext,
+               bool *isNull);
+static void buildSubPlanHash(SubPlanState * node);
 static bool findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot);
 static bool tupleAllNulls(HeapTuple tuple);
 
@@ -45,11 +45,11 @@ static bool tupleAllNulls(HeapTuple tuple);
  * ----------------------------------------------------------------
  */
 Datum
-ExecSubPlan(SubPlanState *node,
+ExecSubPlan(SubPlanState * node,
            ExprContext *econtext,
            bool *isNull)
 {
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
 
    if (subplan->setParam != NIL)
        elog(ERROR, "cannot set parent params from subquery");
@@ -64,11 +64,11 @@ ExecSubPlan(SubPlanState *node,
  * ExecHashSubPlan: store subselect result in an in-memory hash table
  */
 static Datum
-ExecHashSubPlan(SubPlanState *node,
+ExecHashSubPlan(SubPlanState * node,
                ExprContext *econtext,
                bool *isNull)
 {
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
    PlanState  *planstate = node->planstate;
    ExprContext *innerecontext = node->innerecontext;
    TupleTableSlot *slot;
@@ -79,8 +79,8 @@ ExecHashSubPlan(SubPlanState *node,
        elog(ERROR, "hashed subplan with direct correlation not supported");
 
    /*
-    * If first time through or we need to rescan the subplan, build
-    * the hash table.
+    * If first time through or we need to rescan the subplan, build the
+    * hash table.
     */
    if (node->hashtable == NULL || planstate->chgParam != NULL)
        buildSubPlanHash(node);
@@ -94,19 +94,19 @@ ExecHashSubPlan(SubPlanState *node,
        return BoolGetDatum(false);
 
    /*
-    * Evaluate lefthand expressions and form a projection tuple.
-    * First we have to set the econtext to use (hack alert!).
+    * Evaluate lefthand expressions and form a projection tuple. First we
+    * have to set the econtext to use (hack alert!).
     */
    node->projLeft->pi_exprContext = econtext;
    slot = ExecProject(node->projLeft, NULL);
    tup = slot->val;
 
    /*
-    * Note: because we are typically called in a per-tuple context,
-    * we have to explicitly clear the projected tuple before returning.
-    * Otherwise, we'll have a double-free situation: the per-tuple context
-    * will probably be reset before we're called again, and then the tuple
-    * slot will think it still needs to free the tuple.
+    * Note: because we are typically called in a per-tuple context, we
+    * have to explicitly clear the projected tuple before returning.
+    * Otherwise, we'll have a double-free situation: the per-tuple
+    * context will probably be reset before we're called again, and then
+    * the tuple slot will think it still needs to free the tuple.
     */
 
    /*
@@ -116,20 +116,20 @@ ExecHashSubPlan(SubPlanState *node,
    ResetExprContext(innerecontext);
 
    /*
-    * If the LHS is all non-null, probe for an exact match in the
-    * main hash table.  If we find one, the result is TRUE.
-    * Otherwise, scan the partly-null table to see if there are any
-    * rows that aren't provably unequal to the LHS; if so, the result
-    * is UNKNOWN.  (We skip that part if we don't care about UNKNOWN.)
-    * Otherwise, the result is FALSE.
+    * If the LHS is all non-null, probe for an exact match in the main
+    * hash table.  If we find one, the result is TRUE. Otherwise, scan
+    * the partly-null table to see if there are any rows that aren't
+    * provably unequal to the LHS; if so, the result is UNKNOWN.  (We
+    * skip that part if we don't care about UNKNOWN.) Otherwise, the
+    * result is FALSE.
     *
-    * Note: the reason we can avoid a full scan of the main hash table
-    * is that the combining operators are assumed never to yield NULL
-    * when both inputs are non-null.  If they were to do so, we might
-    * need to produce UNKNOWN instead of FALSE because of an UNKNOWN
-    * result in comparing the LHS to some main-table entry --- which
-    * is a comparison we will not even make, unless there's a chance
-    * match of hash keys.
+    * Note: the reason we can avoid a full scan of the main hash table is
+    * that the combining operators are assumed never to yield NULL when
+    * both inputs are non-null.  If they were to do so, we might need to
+    * produce UNKNOWN instead of FALSE because of an UNKNOWN result in
+    * comparing the LHS to some main-table entry --- which is a
+    * comparison we will not even make, unless there's a chance match of
+    * hash keys.
     */
    if (HeapTupleNoNulls(tup))
    {
@@ -151,14 +151,14 @@ ExecHashSubPlan(SubPlanState *node,
    }
 
    /*
-    * When the LHS is partly or wholly NULL, we can never return TRUE.
-    * If we don't care about UNKNOWN, just return FALSE.  Otherwise,
-    * if the LHS is wholly NULL, immediately return UNKNOWN.  (Since the
-    * combining operators are strict, the result could only be FALSE if the
-    * sub-select were empty, but we already handled that case.)  Otherwise,
-    * we must scan both the main and partly-null tables to see if there are
-    * any rows that aren't provably unequal to the LHS; if so, the result is
-    * UNKNOWN.  Otherwise, the result is FALSE.
+    * When the LHS is partly or wholly NULL, we can never return TRUE. If
+    * we don't care about UNKNOWN, just return FALSE.  Otherwise, if the
+    * LHS is wholly NULL, immediately return UNKNOWN.  (Since the
+    * combining operators are strict, the result could only be FALSE if
+    * the sub-select were empty, but we already handled that case.)
+    * Otherwise, we must scan both the main and partly-null tables to see
+    * if there are any rows that aren't provably unequal to the LHS; if
+    * so, the result is UNKNOWN.  Otherwise, the result is FALSE.
     */
    if (node->hashnulls == NULL)
    {
@@ -194,11 +194,11 @@ ExecHashSubPlan(SubPlanState *node,
  * ExecScanSubPlan: default case where we have to rescan subplan each time
  */
 static Datum
-ExecScanSubPlan(SubPlanState *node,
+ExecScanSubPlan(SubPlanState * node,
                ExprContext *econtext,
                bool *isNull)
 {
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
    PlanState  *planstate = node->planstate;
    SubLinkType subLinkType = subplan->subLinkType;
    bool        useOr = subplan->useOr;
@@ -218,14 +218,14 @@ ExecScanSubPlan(SubPlanState *node,
    oldcontext = MemoryContextSwitchTo(node->sub_estate->es_query_cxt);
 
    /*
-    * Set Params of this plan from parent plan correlation values.
-    * (Any calculation we have to do is done in the parent econtext,
-    * since the Param values don't need to have per-query lifetime.)
+    * Set Params of this plan from parent plan correlation values. (Any
+    * calculation we have to do is done in the parent econtext, since the
+    * Param values don't need to have per-query lifetime.)
     */
    pvar = node->args;
    foreach(lst, subplan->parParam)
    {
-       int     paramid = lfirsti(lst);
+       int         paramid = lfirsti(lst);
        ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]);
 
        Assert(pvar != NIL);
@@ -241,23 +241,24 @@ ExecScanSubPlan(SubPlanState *node,
    ExecReScan(planstate, NULL);
 
    /*
-    * For all sublink types except EXPR_SUBLINK and ARRAY_SUBLINK, the result
-    * is boolean as are the results of the combining operators. We combine
-    * results within a tuple (if there are multiple columns) using OR
-    * semantics if "useOr" is true, AND semantics if not. We then combine
-    * results across tuples (if the subplan produces more than one) using OR
-    * semantics for ANY_SUBLINK or AND semantics for ALL_SUBLINK.
-    * (MULTIEXPR_SUBLINK doesn't allow multiple tuples from the subplan.)
-    * NULL results from the combining operators are handled according to
-    * the usual SQL semantics for OR and AND.  The result for no input
-    * tuples is FALSE for ANY_SUBLINK, TRUE for ALL_SUBLINK, NULL for
-    * MULTIEXPR_SUBLINK.
+    * For all sublink types except EXPR_SUBLINK and ARRAY_SUBLINK, the
+    * result is boolean as are the results of the combining operators. We
+    * combine results within a tuple (if there are multiple columns)
+    * using OR semantics if "useOr" is true, AND semantics if not. We
+    * then combine results across tuples (if the subplan produces more
+    * than one) using OR semantics for ANY_SUBLINK or AND semantics for
+    * ALL_SUBLINK. (MULTIEXPR_SUBLINK doesn't allow multiple tuples from
+    * the subplan.) NULL results from the combining operators are handled
+    * according to the usual SQL semantics for OR and AND.  The result
+    * for no input tuples is FALSE for ANY_SUBLINK, TRUE for ALL_SUBLINK,
+    * NULL for MULTIEXPR_SUBLINK.
     *
     * For EXPR_SUBLINK we require the subplan to produce no more than one
-    * tuple, else an error is raised. For ARRAY_SUBLINK we allow the subplan
-    * to produce more than one tuple. In either case, if zero tuples are
-    * produced, we return NULL. Assuming we get a tuple, we just use its
-    * first column (there can be only one non-junk column in this case).
+    * tuple, else an error is raised. For ARRAY_SUBLINK we allow the
+    * subplan to produce more than one tuple. In either case, if zero
+    * tuples are produced, we return NULL. Assuming we get a tuple, we
+    * just use its first column (there can be only one non-junk column in
+    * this case).
     */
    result = BoolGetDatum(subLinkType == ALL_SUBLINK);
    *isNull = false;
@@ -311,8 +312,8 @@ ExecScanSubPlan(SubPlanState *node,
 
        if (subLinkType == ARRAY_SUBLINK)
        {
-           Datum   dvalue;
-           bool    disnull;
+           Datum       dvalue;
+           bool        disnull;
 
            found = true;
            /* stash away current value */
@@ -346,7 +347,8 @@ ExecScanSubPlan(SubPlanState *node,
            bool        expnull;
 
            /*
-            * Load up the Param representing this column of the sub-select.
+            * Load up the Param representing this column of the
+            * sub-select.
             */
            prmdata = &(econtext->ecxt_param_exec_vals[paramid]);
            Assert(prmdata->execPlan == NULL);
@@ -432,8 +434,8 @@ ExecScanSubPlan(SubPlanState *node,
    {
        /*
         * deal with empty subplan result.  result/isNull were previously
-        * initialized correctly for all sublink types except EXPR, ARRAY, and
-        * MULTIEXPR; for those, return NULL.
+        * initialized correctly for all sublink types except EXPR, ARRAY,
+        * and MULTIEXPR; for those, return NULL.
         */
        if (subLinkType == EXPR_SUBLINK ||
            subLinkType == ARRAY_SUBLINK ||
@@ -459,9 +461,9 @@ ExecScanSubPlan(SubPlanState *node,
  * buildSubPlanHash: load hash table by scanning subplan output.
  */
 static void
-buildSubPlanHash(SubPlanState *node)
+buildSubPlanHash(SubPlanState * node)
 {
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
    PlanState  *planstate = node->planstate;
    int         ncols = length(node->exprs);
    ExprContext *innerecontext = node->innerecontext;
@@ -474,19 +476,19 @@ buildSubPlanHash(SubPlanState *node)
    Assert(!subplan->useOr);
 
    /*
-    * If we already had any hash tables, destroy 'em; then create
-    * empty hash table(s).
+    * If we already had any hash tables, destroy 'em; then create empty
+    * hash table(s).
     *
-    * If we need to distinguish accurately between FALSE and UNKNOWN
-    * (i.e., NULL) results of the IN operation, then we have to store
-    * subplan output rows that are partly or wholly NULL.  We store such
-    * rows in a separate hash table that we expect will be much smaller
-    * than the main table.  (We can use hashing to eliminate partly-null
-    * rows that are not distinct.  We keep them separate to minimize the
-    * cost of the inevitable full-table searches; see findPartialMatch.)
+    * If we need to distinguish accurately between FALSE and UNKNOWN (i.e.,
+    * NULL) results of the IN operation, then we have to store subplan
+    * output rows that are partly or wholly NULL.  We store such rows in
+    * a separate hash table that we expect will be much smaller than the
+    * main table.  (We can use hashing to eliminate partly-null rows that
+    * are not distinct.  We keep them separate to minimize the cost of
+    * the inevitable full-table searches; see findPartialMatch.)
     *
-    * If it's not necessary to distinguish FALSE and UNKNOWN, then we
-    * don't need to store subplan output rows that contain NULL.
+    * If it's not necessary to distinguish FALSE and UNKNOWN, then we don't
+    * need to store subplan output rows that contain NULL.
     */
    MemoryContextReset(node->tablecxt);
    node->hashtable = NULL;
@@ -529,7 +531,8 @@ buildSubPlanHash(SubPlanState *node)
 
    /*
     * We are probably in a short-lived expression-evaluation context.
-    * Switch to the child plan's per-query context for calling ExecProcNode.
+    * Switch to the child plan's per-query context for calling
+    * ExecProcNode.
     */
    oldcontext = MemoryContextSwitchTo(node->sub_estate->es_query_cxt);
 
@@ -539,8 +542,9 @@ buildSubPlanHash(SubPlanState *node)
    ExecReScan(planstate, NULL);
 
    /*
-    * Scan the subplan and load the hash table(s).  Note that when there are
-    * duplicate rows coming out of the sub-select, only one copy is stored.
+    * Scan the subplan and load the hash table(s).  Note that when there
+    * are duplicate rows coming out of the sub-select, only one copy is
+    * stored.
     */
    for (slot = ExecProcNode(planstate);
         !TupIsNull(slot);
@@ -572,9 +576,9 @@ buildSubPlanHash(SubPlanState *node)
 
        /*
         * If result contains any nulls, store separately or not at all.
-        * (Since we know the projection tuple has no junk columns, we
-        * can just look at the overall hasnull info bit, instead of
-        * groveling through the columns.)
+        * (Since we know the projection tuple has no junk columns, we can
+        * just look at the overall hasnull info bit, instead of groveling
+        * through the columns.)
         */
        if (HeapTupleNoNulls(tup))
        {
@@ -621,7 +625,7 @@ findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot)
    HeapTuple   tuple = slot->val;
    TupleDesc   tupdesc = slot->ttc_tupleDescriptor;
    TupleHashIterator hashiter;
-   TupleHashEntry  entry;
+   TupleHashEntry entry;
 
    ResetTupleHashIterator(&hashiter);
    while ((entry = ScanTupleHashTable(hashtable, &hashiter)) != NULL)
@@ -643,8 +647,8 @@ findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot)
 static bool
 tupleAllNulls(HeapTuple tuple)
 {
-   int     ncols = tuple->t_data->t_natts;
-   int     i;
+   int         ncols = tuple->t_data->t_natts;
+   int         i;
 
    for (i = 1; i <= ncols; i++)
    {
@@ -659,15 +663,15 @@ tupleAllNulls(HeapTuple tuple)
  * ----------------------------------------------------------------
  */
 void
-ExecInitSubPlan(SubPlanState *node, EState *estate)
+ExecInitSubPlan(SubPlanState * node, EState *estate)
 {
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
    EState     *sp_estate;
    MemoryContext oldcontext;
 
    /*
-    * Do access checking on the rangetable entries in the subquery.
-    * Here, we assume the subquery is a SELECT.
+    * Do access checking on the rangetable entries in the subquery. Here,
+    * we assume the subquery is a SELECT.
     */
    ExecCheckRTPerms(subplan->rtable, CMD_SELECT);
 
@@ -690,9 +694,9 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
     * create an EState for the subplan
     *
     * The subquery needs its own EState because it has its own rangetable.
-    * It shares our Param ID space, however.  XXX if rangetable access were
-    * done differently, the subquery could share our EState, which would
-    * eliminate some thrashing about in this module...
+    * It shares our Param ID space, however.  XXX if rangetable access
+    * were done differently, the subquery could share our EState, which
+    * would eliminate some thrashing about in this module...
     */
    sp_estate = CreateExecutorState();
    node->sub_estate = sp_estate;
@@ -721,9 +725,9 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
     * to set params for parent plan then mark parameters as needing
     * evaluation.
     *
-    * Note that in the case of un-correlated subqueries we don't care
-    * about setting parent->chgParam here: indices take care about
-    * it, for others - it doesn't matter...
+    * Note that in the case of un-correlated subqueries we don't care about
+    * setting parent->chgParam here: indices take care about it, for
+    * others - it doesn't matter...
     */
    if (subplan->setParam != NIL)
    {
@@ -731,7 +735,7 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
 
        foreach(lst, subplan->setParam)
        {
-           int     paramid = lfirsti(lst);
+           int         paramid = lfirsti(lst);
            ParamExecData *prm = &(estate->es_param_exec_vals[paramid]);
 
            prm->execPlan = node;
@@ -744,8 +748,8 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
     */
    if (subplan->useHashTable)
    {
-       int     ncols,
-               i;
+       int         ncols,
+                   i;
        TupleDesc   tupDesc;
        TupleTable  tupTable;
        TupleTableSlot *slot;
@@ -768,15 +772,16 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
        ncols = length(node->exprs);
        node->keyColIdx = (AttrNumber *) palloc(ncols * sizeof(AttrNumber));
        for (i = 0; i < ncols; i++)
-           node->keyColIdx[i] = i+1;
+           node->keyColIdx[i] = i + 1;
+
        /*
         * We use ExecProject to evaluate the lefthand and righthand
         * expression lists and form tuples.  (You might think that we
         * could use the sub-select's output tuples directly, but that is
         * not the case if we had to insert any run-time coercions of the
         * sub-select's output datatypes; anyway this avoids storing any
-        * resjunk columns that might be in the sub-select's output.)
-        * Run through the combining expressions to build tlists for the
+        * resjunk columns that might be in the sub-select's output.) Run
+        * through the combining expressions to build tlists for the
         * lefthand and righthand sides.  We need both the ExprState list
         * (for ExecProject) and the underlying parse Exprs (for
         * ExecTypeFromTL).
@@ -791,7 +796,7 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
        i = 1;
        foreach(lexpr, node->exprs)
        {
-           FuncExprState  *fstate = (FuncExprState *) lfirst(lexpr);
+           FuncExprState *fstate = (FuncExprState *) lfirst(lexpr);
            OpExpr     *opexpr = (OpExpr *) fstate->xprstate.expr;
            ExprState  *exstate;
            Expr       *expr;
@@ -834,34 +839,34 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
            rightptlist = lappend(rightptlist, tle);
 
            /* Lookup the combining function */
-           fmgr_info(opexpr->opfuncid, &node->eqfunctions[i-1]);
-           node->eqfunctions[i-1].fn_expr = (Node *) opexpr;
+           fmgr_info(opexpr->opfuncid, &node->eqfunctions[i - 1]);
+           node->eqfunctions[i - 1].fn_expr = (Node *) opexpr;
 
            /* Lookup the associated hash function */
            hashfn = get_op_hash_function(opexpr->opno);
            if (!OidIsValid(hashfn))
                elog(ERROR, "could not find hash function for hash operator %u",
                     opexpr->opno);
-           fmgr_info(hashfn, &node->hashfunctions[i-1]);
+           fmgr_info(hashfn, &node->hashfunctions[i - 1]);
 
            i++;
        }
 
        /*
-        * Create a tupletable to hold these tuples.  (Note: we never bother
-        * to free the tupletable explicitly; that's okay because it will
-        * never store raw disk tuples that might have associated buffer
-        * pins.  The only resource involved is memory, which will be
-        * cleaned up by freeing the query context.)
+        * Create a tupletable to hold these tuples.  (Note: we never
+        * bother to free the tupletable explicitly; that's okay because
+        * it will never store raw disk tuples that might have associated
+        * buffer pins.  The only resource involved is memory, which will
+        * be cleaned up by freeing the query context.)
         */
        tupTable = ExecCreateTupleTable(2);
 
        /*
         * Construct tupdescs, slots and projection nodes for left and
-        * right sides.  The lefthand expressions will be evaluated in
-        * the parent plan node's exprcontext, which we don't have access
-        * to here.  Fortunately we can just pass NULL for now and fill it
-        * in later (hack alert!).  The righthand expressions will be
+        * right sides.  The lefthand expressions will be evaluated in the
+        * parent plan node's exprcontext, which we don't have access to
+        * here.  Fortunately we can just pass NULL for now and fill it in
+        * later (hack alert!).  The righthand expressions will be
         * evaluated in our own innerecontext.
         */
        tupDesc = ExecTypeFromTL(leftptlist, false);
@@ -894,11 +899,11 @@ ExecInitSubPlan(SubPlanState *node, EState *estate)
  * ----------------------------------------------------------------
  */
 void
-ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
+ExecSetParamPlan(SubPlanState * node, ExprContext *econtext)
 {
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
    PlanState  *planstate = node->planstate;
-   SubLinkType subLinkType = subplan->subLinkType;
+   SubLinkType subLinkType = subplan->subLinkType;
    MemoryContext oldcontext;
    TupleTableSlot *slot;
    List       *lst;
@@ -928,7 +933,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
        if (subLinkType == EXISTS_SUBLINK)
        {
            /* There can be only one param... */
-           int     paramid = lfirsti(subplan->setParam);
+           int         paramid = lfirsti(subplan->setParam);
            ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]);
 
            prm->execPlan = NULL;
@@ -940,8 +945,8 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
 
        if (subLinkType == ARRAY_SUBLINK)
        {
-           Datum   dvalue;
-           bool    disnull;
+           Datum       dvalue;
+           bool        disnull;
 
            found = true;
            /* stash away current value */
@@ -963,8 +968,8 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
        found = true;
 
        /*
-        * We need to copy the subplan's tuple into our own context,
-        * in case any of the params are pass-by-ref type --- the pointers
+        * We need to copy the subplan's tuple into our own context, in
+        * case any of the params are pass-by-ref type --- the pointers
         * stored in the param structs will point at this copied tuple!
         * node->curTuple keeps track of the copied tuple for eventual
         * freeing.
@@ -981,7 +986,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
         */
        foreach(lst, subplan->setParam)
        {
-           int     paramid = lfirsti(lst);
+           int         paramid = lfirsti(lst);
            ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]);
 
            prm->execPlan = NULL;
@@ -995,7 +1000,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
        if (subLinkType == EXISTS_SUBLINK)
        {
            /* There can be only one param... */
-           int     paramid = lfirsti(subplan->setParam);
+           int         paramid = lfirsti(subplan->setParam);
            ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]);
 
            prm->execPlan = NULL;
@@ -1006,7 +1011,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
        {
            foreach(lst, subplan->setParam)
            {
-               int     paramid = lfirsti(lst);
+               int         paramid = lfirsti(lst);
                ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]);
 
                prm->execPlan = NULL;
@@ -1018,7 +1023,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
    else if (subLinkType == ARRAY_SUBLINK)
    {
        /* There can be only one param... */
-       int     paramid = lfirsti(subplan->setParam);
+       int         paramid = lfirsti(subplan->setParam);
        ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]);
 
        Assert(astate != NULL);
@@ -1036,7 +1041,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
  * ----------------------------------------------------------------
  */
 void
-ExecEndSubPlan(SubPlanState *node)
+ExecEndSubPlan(SubPlanState * node)
 {
    if (node->needShutdown)
    {
@@ -1056,10 +1061,10 @@ ExecEndSubPlan(SubPlanState *node)
  * Mark an initplan as needing recalculation
  */
 void
-ExecReScanSetParamPlan(SubPlanState *node, PlanState *parent)
+ExecReScanSetParamPlan(SubPlanState * node, PlanState * parent)
 {
    PlanState  *planstate = node->planstate;
-   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
+   SubPlan    *subplan = (SubPlan *) node->xprstate.expr;
    EState     *estate = parent->state;
    List       *lst;
 
@@ -1080,7 +1085,7 @@ ExecReScanSetParamPlan(SubPlanState *node, PlanState *parent)
     */
    foreach(lst, subplan->setParam)
    {
-       int     paramid = lfirsti(lst);
+       int         paramid = lfirsti(lst);
        ParamExecData *prm = &(estate->es_param_exec_vals[paramid]);
 
        prm->execPlan = node;
index ba4804fcebb4d48aefdefbb12a13c7f727e95354..deec07ae6bb6b671d9e05f16d3c95293c1619dc4 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSubqueryscan.c,v 1.18 2003/02/09 00:30:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSubqueryscan.c,v 1.19 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -160,10 +160,11 @@ ExecInitSubqueryScan(SubqueryScan *node, EState *estate)
    Assert(rte->rtekind == RTE_SUBQUERY);
 
    /*
-    * The subquery needs its own EState because it has its own rangetable.
-    * It shares our Param ID space, however.  XXX if rangetable access were
-    * done differently, the subquery could share our EState, which would
-    * eliminate some thrashing about in this module...
+    * The subquery needs its own EState because it has its own
+    * rangetable. It shares our Param ID space, however.  XXX if
+    * rangetable access were done differently, the subquery could share
+    * our EState, which would eliminate some thrashing about in this
+    * module...
     */
    sp_estate = CreateExecutorState();
    subquerystate->sss_SubEState = sp_estate;
@@ -259,9 +260,9 @@ ExecSubqueryReScan(SubqueryScanState *node, ExprContext *exprCtxt)
 
    /*
     * ExecReScan doesn't know about my subplan, so I have to do
-    * changed-parameter signaling myself.  This is just as well,
-    * because the subplan has its own memory context in which its
-    * chgParam state lives.
+    * changed-parameter signaling myself.  This is just as well, because
+    * the subplan has its own memory context in which its chgParam state
+    * lives.
     */
    if (node->ss.ps.chgParam != NULL)
        UpdateChangedParamSet(node->subplan, node->ss.ps.chgParam);
index fb012a5cc4018fca22465c0a7b68e6d5d765e860..18e172209d18b723ecfd590626110752490aeca1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.38 2003/02/02 19:08:57 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.39 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -57,9 +57,9 @@ 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.
     *
-    * We return the first tuple from each group of duplicates (or the
-    * last tuple of each group, when moving backwards).  At either end
-    * of the subplan, clear priorTuple so that we correctly return the
+    * We return the first tuple from each group of duplicates (or the last
+    * tuple of each group, when moving backwards).  At either end of the
+    * subplan, clear priorTuple so that we correctly return the
     * first/last tuple when reversing direction.
     */
    for (;;)
index 4d554aef1edcc0772e41d1fafb5e3daba728ec72..b25f0a79ffa3f8ad5ce4e0f60254340e897ce16f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.99 2003/07/21 17:05:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.100 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -95,8 +95,8 @@ SPI_connect(void)
    /*
     * Create memory contexts for this procedure
     *
-    * XXX it would be better to use PortalContext as the parent context,
-    * but we may not be inside a portal (consider deferred-trigger
+    * XXX it would be better to use PortalContext as the parent context, but
+    * we may not be inside a portal (consider deferred-trigger
     * execution).
     */
    _SPI_current->procCxt = AllocSetContextCreate(TopTransactionContext,
@@ -799,7 +799,7 @@ SPI_cursor_open(const char *name, void *plan, Datum *Values, const char *Nulls)
     */
    PortalDefineQuery(portal,
                      NULL,     /* unfortunately don't have sourceText */
-                     "SELECT", /* cursor's query is always a SELECT */
+                     "SELECT", /* cursor's query is always a SELECT */
                      makeList1(queryTree),
                      makeList1(planTree),
                      PortalGetHeapMemory(portal));
@@ -1007,9 +1007,9 @@ _SPI_execute(const char *src, int tcount, _SPI_plan *plan)
    /*
     * Do parse analysis and rule rewrite for each raw parsetree.
     *
-    * We save the querytrees from each raw parsetree as a separate
-    * sublist.  This allows _SPI_execute_plan() to know where the
-    * boundaries between original queries fall.
+    * We save the querytrees from each raw parsetree as a separate sublist.
+    * This allows _SPI_execute_plan() to know where the boundaries
+    * between original queries fall.
     */
    query_list_list = NIL;
    plan_list = NIL;
@@ -1136,8 +1136,8 @@ _SPI_execute_plan(_SPI_plan *plan, Datum *Values, const char *Nulls,
 
    foreach(query_list_list_item, query_list_list)
    {
-       List   *query_list = lfirst(query_list_list_item);
-       List   *query_list_item;
+       List       *query_list = lfirst(query_list_list_item);
+       List       *query_list_item;
 
        /* Reset state for each original parsetree */
        /* (at most one of its querytrees will be marked canSetTag) */
@@ -1148,7 +1148,7 @@ _SPI_execute_plan(_SPI_plan *plan, Datum *Values, const char *Nulls,
 
        foreach(query_list_item, query_list)
        {
-           Query  *queryTree = (Query *) lfirst(query_list_item);
+           Query      *queryTree = (Query *) lfirst(query_list_item);
            Plan       *planTree;
            QueryDesc  *qdesc;
            DestReceiver *dest;
@@ -1190,10 +1190,10 @@ _SPI_pquery(QueryDesc *queryDesc, bool runit, int tcount)
    {
        case CMD_SELECT:
            res = SPI_OK_SELECT;
-           if (queryDesc->parsetree->into != NULL) /* select into table */
+           if (queryDesc->parsetree->into != NULL)     /* select into table */
            {
                res = SPI_OK_SELINTO;
-               queryDesc->dest = None_Receiver; /* don't output results */
+               queryDesc->dest = None_Receiver;        /* don't output results */
            }
            break;
        case CMD_INSERT:
@@ -1351,7 +1351,7 @@ _SPI_checktuples(void)
    SPITupleTable *tuptable = _SPI_current->tuptable;
    bool        failed = false;
 
-   if (tuptable == NULL)   /* spi_dest_startup was not called */
+   if (tuptable == NULL)       /* spi_dest_startup was not called */
        failed = true;
    else if (processed != (tuptable->alloced - tuptable->free))
        failed = true;
@@ -1372,7 +1372,8 @@ _SPI_copy_plan(_SPI_plan *plan, int location)
        parentcxt = _SPI_current->procCxt;
    else if (location == _SPI_CPLAN_TOPCXT)
        parentcxt = TopMemoryContext;
-   else                        /* (this case not currently used) */
+   else
+/* (this case not currently used) */
        parentcxt = CurrentMemoryContext;
 
    /*
index 3d8479faee24fa352487e160a76e47e689e7b742..0989eb3e270f569131826de844306b130b03f9e4 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/tstoreReceiver.c,v 1.6 2003/05/08 18:16:36 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/tstoreReceiver.c,v 1.7 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 typedef struct
 {
-   DestReceiver        pub;
-   Tuplestorestate    *tstore;
-   MemoryContext       cxt;
-} TStoreState;
+   DestReceiver pub;
+   Tuplestorestate *tstore;
+   MemoryContext cxt;
+}  TStoreState;
 
 
 /*
index 03251beed907b7c93bc49f2acb86b84a99d2d9a1..9424070e50692f549f38fee61169e8968040a279 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *   $Id: stringinfo.c,v 1.34 2003/04/24 21:16:43 tgl Exp $
+ *   $Id: stringinfo.c,v 1.35 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -62,7 +62,7 @@ initStringInfo(StringInfo str)
  * strcat.
  */
 void
-appendStringInfo(StringInfo str, const char *fmt, ...)
+appendStringInfo(StringInfo str, const char *fmt,...)
 {
    for (;;)
    {
@@ -86,7 +86,7 @@ appendStringInfo(StringInfo str, const char *fmt, ...)
  * appendStringInfoVA
  *
  * Attempt to format text data under the control of fmt (an sprintf-style
- * format string) and append it to whatever is already in str.  If successful
+ * format string) and append it to whatever is already in str. If successful
  * return true; if not (because there's not enough space), return false
  * without modifying str.  Typically the caller would enlarge str and retry
  * on false return --- see appendStringInfo for standard usage pattern.
@@ -113,9 +113,9 @@ appendStringInfoVA(StringInfo str, const char *fmt, va_list args)
        return false;
 
    /*
-    * Assert check here is to catch buggy vsnprintf that overruns
-    * the specified buffer length.  Solaris 7 in 64-bit mode is
-    * an example of a platform with such a bug.
+    * Assert check here is to catch buggy vsnprintf that overruns the
+    * specified buffer length.  Solaris 7 in 64-bit mode is an example of
+    * a platform with such a bug.
     */
 #ifdef USE_ASSERT_CHECKING
    str->data[str->maxlen - 1] = '\0';
index 9c80651d5fbd1299cecc8fc2e1fb7f3682c72802..9b9ffecbca89417ad9214c454437ecdbc7378e90 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.108 2003/07/28 06:27:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.109 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -221,8 +221,8 @@ pg_krb5_init(void)
    if (retval)
    {
        ereport(LOG,
-               (errmsg("kerberos sname_to_principal(\"%s\") returned error %d",
-                       PG_KRB_SRVNAM, retval)));
+        (errmsg("kerberos sname_to_principal(\"%s\") returned error %d",
+                PG_KRB_SRVNAM, retval)));
        com_err("postgres", retval,
                "while getting server principal for service \"%s\"",
                PG_KRB_SRVNAM);
@@ -432,7 +432,7 @@ ClientAuthentication(Port *port)
             * out the less clueful good guys.
             */
            {
-               char    hostinfo[NI_MAXHOST];
+               char        hostinfo[NI_MAXHOST];
 
                getnameinfo_all(&port->raddr.addr, port->raddr.salen,
                                hostinfo, sizeof(hostinfo),
@@ -441,15 +441,15 @@ ClientAuthentication(Port *port)
 
 #ifdef USE_SSL
                ereport(FATAL,
-                       (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
-                        errmsg("no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s",
-                               hostinfo, port->user_name, port->database_name,
-                               port->ssl ? gettext("SSL on") : gettext("SSL off"))));
+                  (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
+                   errmsg("no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s",
+                          hostinfo, port->user_name, port->database_name,
+                  port->ssl ? gettext("SSL on") : gettext("SSL off"))));
 #else
                ereport(FATAL,
-                       (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
-                        errmsg("no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"",
-                               hostinfo, port->user_name, port->database_name)));
+                  (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
+                   errmsg("no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"",
+                      hostinfo, port->user_name, port->database_name)));
 #endif
                break;
            }
@@ -460,7 +460,7 @@ ClientAuthentication(Port *port)
                || port->laddr.addr.ss_family != AF_INET)
                ereport(FATAL,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("kerberos 4 only supports IPv4 connections")));
+                  errmsg("kerberos 4 only supports IPv4 connections")));
            sendAuthRequest(port, AUTH_REQ_KRB4);
            status = pg_krb4_recvauth(port);
            break;
@@ -492,7 +492,7 @@ ClientAuthentication(Port *port)
                if (setsockopt(port->sock, 0, LOCAL_CREDS, &on, sizeof(on)) < 0)
                    ereport(FATAL,
                            (errcode_for_socket_access(),
-                            errmsg("failed to enable credential receipt: %m")));
+                    errmsg("failed to enable credential receipt: %m")));
            }
 #endif
            if (port->raddr.addr.ss_family == AF_UNIX)
@@ -755,22 +755,22 @@ recv_password_packet(Port *port)
    if (PG_PROTOCOL_MAJOR(port->proto) >= 3)
    {
        /* Expect 'p' message type */
-       int     mtype;
+       int         mtype;
 
        mtype = pq_getbyte();
        if (mtype != 'p')
        {
            /*
             * If the client just disconnects without offering a password,
-            * don't make a log entry.  This is legal per protocol spec and
-            * in fact commonly done by psql, so complaining just clutters
-            * the log.
+            * don't make a log entry.  This is legal per protocol spec
+            * and in fact commonly done by psql, so complaining just
+            * clutters the log.
             */
            if (mtype != EOF)
                ereport(COMMERROR,
                        (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                        errmsg("expected password response, got msg type %d",
-                               mtype)));
+                   errmsg("expected password response, got msg type %d",
+                          mtype)));
            return NULL;        /* EOF or bad message type */
        }
    }
@@ -782,7 +782,7 @@ recv_password_packet(Port *port)
    }
 
    initStringInfo(&buf);
-   if (pq_getmessage(&buf, 1000)) /* receive password */
+   if (pq_getmessage(&buf, 1000))      /* receive password */
    {
        /* EOF - pq_getmessage already logged a suitable message */
        pfree(buf.data);
@@ -804,7 +804,7 @@ recv_password_packet(Port *port)
            (errmsg("received password packet")));
 
    /*
-    * Return the received string.  Note we do not attempt to do any
+    * Return the received string.  Note we do not attempt to do any
     * character-set conversion on it; since we don't yet know the
     * client's encoding, there wouldn't be much point.
     */
index 00bd01b6aef73fee49d48392e73a1dda7a220825..5a33712243cbfcd30b30b2887ecb0d1a6400efa8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.66 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.67 2003/08/04 00:43:18 momjian Exp $
  *
  * NOTES
  *   This should be moved to a more appropriate place.  It is here
@@ -372,7 +372,7 @@ lo_import(PG_FUNCTION_ARGS)
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to use server-side lo_import()"),
+             errmsg("must be superuser to use server-side lo_import()"),
                 errhint("Anyone can use the client-side lo_import() provided by libpq.")));
 #endif
 
@@ -439,7 +439,7 @@ lo_export(PG_FUNCTION_ARGS)
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to use server-side lo_export()"),
+             errmsg("must be superuser to use server-side lo_export()"),
                 errhint("Anyone can use the client-side lo_export() provided by libpq.")));
 #endif
 
index 0bd4f7874148d23b3ff8d0b82e8b206ad572a81d..7089b5077a92712e51493c33403e3d7ee930d2f5 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.37 2003/07/27 21:49:53 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/be-secure.c,v 1.38 2003/08/04 00:43:18 momjian Exp $
  *
  *   Since the server static private key ($DataDir/server.key)
  *   will normally be stored unencrypted so that the database
@@ -187,7 +187,6 @@ OvOzKGtwcTqO/1wV5gKkzu1ZVswVUQd5Gg8lJicwqRWyyNRczDDoG9jVDxmogKTH\n\
 AaqLulO7R8Ifa1SwF2DteSGVtgWEN8gDpN3RBmmPTDngyF2DHb5qmpnznwtFKdTL\n\
 KWbuHn491xNO25CQWMtem80uKw+pTnisBRF/454n1Jnhub144YRBoN8CAQI=\n\
 -----END DH PARAMETERS-----\n";
-
 #endif
 
 /* ------------------------------------------------------------ */
@@ -258,7 +257,7 @@ secure_read(Port *port, void *ptr, size_t len)
 #ifdef USE_SSL
    if (port->ssl)
    {
-   rloop:
+rloop:
        n = SSL_read(port->ssl, ptr, len);
        switch (SSL_get_error(port->ssl, n))
        {
@@ -328,7 +327,7 @@ secure_write(Port *port, void *ptr, size_t len)
            if (port->ssl->state != SSL_ST_OK)
                ereport(COMMERROR,
                        (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                        errmsg("SSL failed to send renegotiation request")));
+                   errmsg("SSL failed to send renegotiation request")));
            port->ssl->state |= SSL_ST_ACCEPT;
            SSL_do_handshake(port->ssl);
            if (port->ssl->state != SSL_ST_OK)
@@ -338,7 +337,7 @@ secure_write(Port *port, void *ptr, size_t len)
            port->count = 0;
        }
 
-   wloop:
+wloop:
        n = SSL_write(port->ssl, ptr, len);
        switch (SSL_get_error(port->ssl, n))
        {
@@ -436,7 +435,7 @@ load_dh_file(int keylength)
            (codes & DH_CHECK_P_NOT_SAFE_PRIME))
        {
            elog(LOG,
-                "DH error (%s): neither suitable generator or safe prime",
+              "DH error (%s): neither suitable generator or safe prime",
                 fnbuf);
            return NULL;
        }
@@ -620,21 +619,21 @@ initialize_SSL(void)
        if (!SSL_CTX_use_certificate_file(SSL_context, fnbuf, SSL_FILETYPE_PEM))
            ereport(FATAL,
                    (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                    errmsg("could not load server certificate file \"%s\": %s",
-                           fnbuf, SSLerrmessage())));
+             errmsg("could not load server certificate file \"%s\": %s",
+                    fnbuf, SSLerrmessage())));
 
        snprintf(fnbuf, sizeof(fnbuf), "%s/server.key", DataDir);
        if (stat(fnbuf, &buf) == -1)
            ereport(FATAL,
                    (errcode_for_file_access(),
-                    errmsg("could not access private key file \"%s\": %m",
-                           fnbuf)));
+                  errmsg("could not access private key file \"%s\": %m",
+                         fnbuf)));
        if (!S_ISREG(buf.st_mode) || (buf.st_mode & (S_IRWXG | S_IRWXO)) ||
            buf.st_uid != getuid())
            ereport(FATAL,
                    (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                    errmsg("unsafe permissions on private key file \"%s\"",
-                           fnbuf),
+                 errmsg("unsafe permissions on private key file \"%s\"",
+                        fnbuf),
                     errdetail("File must be owned by the database user and must have no permissions for \"group\" or \"other\".")));
 
        if (!SSL_CTX_use_PrivateKey_file(SSL_context, fnbuf, SSL_FILETYPE_PEM))
index c1443e56744bc3d822433c7e3b39c47b81dc4c38..9629a47aa9ef2e0badb7b6252ef2ad207d4b73c3 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/libpq/crypt.c,v 1.54 2003/07/22 19:00:10 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/crypt.c,v 1.55 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -119,7 +119,10 @@ md5_crypt_verify(const Port *port, const char *user, char *client_pass)
        default:
            if (isMD5(shadow_pass))
            {
-               /* Encrypt user-supplied password to match MD5 in pg_shadow */
+               /*
+                * Encrypt user-supplied password to match MD5 in
+                * pg_shadow
+                */
                crypt_client_pass = palloc(MD5_PASSWD_LEN + 1);
                if (!EncryptMD5(client_pass,
                                port->user_name,
index f9f77cda574ffc6be1423a3b3d3c87041e45b2bc..1c42d1a7d43cddb39eba153ae7e7d17b08796993 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.109 2003/08/01 23:24:28 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.110 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -392,7 +392,7 @@ get_group_line(const char *group)
 /*
  * Lookup a user name in the pg_shadow file
  */
-List **
+List     **
 get_user_line(const char *user)
 {
    return (List **) bsearch((void *) user,
@@ -416,7 +416,7 @@ check_group(char *group, char *user)
    {
        foreach(l, lnext(lnext(*line)))
            if (strcmp(lfirst(l), user) == 0)
-               return true;
+           return true;
    }
 
    return false;
@@ -547,13 +547,14 @@ static void
 parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
 {
    int         line_number;
-   char            *token;
-   char            *db;
-   char            *user;
-   struct addrinfo     *file_ip_addr = NULL, *file_ip_mask = NULL;
-   struct addrinfo     hints;
-   struct sockaddr_storage *mask;
-   char            *cidr_slash;
+   char       *token;
+   char       *db;
+   char       *user;
+   struct addrinfo *file_ip_addr = NULL,
+              *file_ip_mask = NULL;
+   struct addrinfo hints;
+   struct sockaddr_storage *mask;
+   char       *cidr_slash;
    int         ret;
 
    Assert(line != NIL);
@@ -595,11 +596,11 @@ parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
            return;
    }
    else if (strcmp(token, "host") == 0
-           || strcmp(token, "hostssl") == 0
-           || strcmp(token, "hostnossl") == 0)
+            || strcmp(token, "hostssl") == 0
+            || strcmp(token, "hostnossl") == 0)
    {
 
-       if (token[4] == 's')  /* "hostssl" */
+       if (token[4] == 's')    /* "hostssl" */
        {
 #ifdef USE_SSL
            /* Record does not match if we are not on an SSL connection */
@@ -616,7 +617,7 @@ parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
 #endif
        }
 #ifdef USE_SSL
-       else if (token[4] == 'n')  /* "hostnossl" */
+       else if (token[4] == 'n')       /* "hostnossl" */
        {
            /* Record does not match if we are on an SSL connection */
            if (port->ssl)
@@ -643,7 +644,7 @@ parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
        token = lfirst(line);
 
        /* Check if it has a CIDR suffix and if so isolate it */
-       cidr_slash = strchr(token,'/');
+       cidr_slash = strchr(token, '/');
        if (cidr_slash)
            *cidr_slash = '\0';
 
@@ -698,7 +699,7 @@ parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
            if (ret || !file_ip_mask)
                goto hba_syntax;
 
-           mask = (struct sockaddr_storage *)file_ip_mask->ai_addr;
+           mask = (struct sockaddr_storage *) file_ip_mask->ai_addr;
 
            if (file_ip_addr->ai_family != mask->ss_family)
                goto hba_syntax;
@@ -714,7 +715,7 @@ parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
 
        /* Must meet network restrictions */
        if (!rangeSockAddr(&port->raddr.addr,
-                          (struct sockaddr_storage *)file_ip_addr->ai_addr,
+                      (struct sockaddr_storage *) file_ip_addr->ai_addr,
                           mask))
            goto hba_freeaddr;
 
@@ -743,8 +744,8 @@ hba_syntax:
    else
        ereport(LOG,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                errmsg("missing field in pg_hba.conf file at end of line %d",
-                       line_number)));
+           errmsg("missing field in pg_hba.conf file at end of line %d",
+                  line_number)));
 
    *error_p = true;
 
@@ -1012,8 +1013,8 @@ ident_syntax:
    else
        ereport(LOG,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                errmsg("missing entry in pg_ident.conf file at end of line %d",
-                       line_number)));
+         errmsg("missing entry in pg_ident.conf file at end of line %d",
+                line_number)));
 
    *error_p = true;
 }
@@ -1044,7 +1045,7 @@ check_ident_usermap(const char *usermap_name,
    {
        ereport(LOG,
                (errcode(ERRCODE_CONFIG_FILE_ERROR),
-                errmsg("cannot use IDENT authentication without usermap field")));
+       errmsg("cannot use IDENT authentication without usermap field")));
        found_entry = false;
    }
    else if (strcmp(usermap_name, "sameuser") == 0)
@@ -1215,11 +1216,13 @@ ident_inet(const SockAddr remote_addr,
    char        ident_port[NI_MAXSERV];
    char        ident_query[80];
    char        ident_response[80 + IDENT_USERNAME_MAX];
-   struct addrinfo *ident_serv = NULL, *la = NULL, hints;
+   struct addrinfo *ident_serv = NULL,
+              *la = NULL,
+               hints;
 
    /*
-    * Might look a little weird to first convert it to text and
-    * then back to sockaddr, but it's protocol independent.
+    * Might look a little weird to first convert it to text and then back
+    * to sockaddr, but it's protocol independent.
     */
    getnameinfo_all(&remote_addr.addr, remote_addr.salen,
                    remote_addr_s, sizeof(remote_addr_s),
@@ -1254,22 +1257,23 @@ ident_inet(const SockAddr remote_addr,
    rc = getaddrinfo_all(local_addr_s, NULL, &hints, &la);
    if (rc || !la)
        return false;           /* we don't expect this to happen */
-   
+
    sock_fd = socket(ident_serv->ai_family, ident_serv->ai_socktype,
                     ident_serv->ai_protocol);
    if (sock_fd < 0)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
-                errmsg("could not create socket for IDENT connection: %m")));
+           errmsg("could not create socket for IDENT connection: %m")));
        ident_return = false;
        goto ident_inet_done;
    }
+
    /*
     * Bind to the address which the client originally contacted,
     * otherwise the ident server won't be able to match up the right
-    * connection. This is necessary if the PostgreSQL server is
-    * running on an IP alias.
+    * connection. This is necessary if the PostgreSQL server is running
+    * on an IP alias.
     */
    rc = bind(sock_fd, la->ai_addr, la->ai_addrlen);
    if (rc != 0)
@@ -1282,7 +1286,7 @@ ident_inet(const SockAddr remote_addr,
        goto ident_inet_done;
    }
 
-   rc = connect(sock_fd, ident_serv->ai_addr, 
+   rc = connect(sock_fd, ident_serv->ai_addr,
                 ident_serv->ai_addrlen);
    if (rc != 0)
    {
@@ -1354,12 +1358,12 @@ ident_unix(int sock, char *ident_user)
 {
 #if defined(HAVE_GETPEEREID)
    /* OpenBSD style:  */
-   uid_t uid;
-   gid_t gid;
+   uid_t       uid;
+   gid_t       gid;
    struct passwd *pass;
 
    errno = 0;
-   if (getpeereid(sock,&uid,&gid) != 0)
+   if (getpeereid(sock, &uid, &gid) != 0)
    {
        /* We didn't get a valid credentials struct. */
        ereport(LOG,
@@ -1491,8 +1495,7 @@ ident_unix(int sock, char *ident_user)
    return false;
 #endif
 }
-
-#endif /* HAVE_UNIX_SOCKETS */
+#endif   /* HAVE_UNIX_SOCKETS */
 
 
 /*
index 8fd3941266cc6a48160788d8411a03f73fddd6dc..a17c817c65cffc8afc25798446570afaf4bf2418 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/ip.c,v 1.17 2003/08/01 17:53:41 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/ip.c,v 1.18 2003/08/04 00:43:18 momjian Exp $
  *
  * This file and the IPV6 implementation were initially provided by
  * Nigel Kukard <[email protected]>, Linux Based Systems Design
 #endif
 #include <arpa/inet.h>
 #include <sys/file.h>
-
 #endif
 
 #include "libpq/ip.h"
 
 
-static int rangeSockAddrAF_INET(const struct sockaddr_in *addr,
-           const struct sockaddr_in *netaddr,
-           const struct sockaddr_in *netmask);
+static int rangeSockAddrAF_INET(const struct sockaddr_in * addr,
+                    const struct sockaddr_in * netaddr,
+                    const struct sockaddr_in * netmask);
+
 #ifdef HAVE_IPV6
-static int rangeSockAddrAF_INET6(const struct sockaddr_in6 *addr,
-           const struct sockaddr_in6 *netaddr,
-           const struct sockaddr_in6 *netmask);
+static int rangeSockAddrAF_INET6(const struct sockaddr_in6 * addr,
+                     const struct sockaddr_in6 * netaddr,
+                     const struct sockaddr_in6 * netmask);
 #endif
 
 #ifdef HAVE_UNIX_SOCKETS
-static int getaddrinfo_unix(const char *path,
-           const struct addrinfo *hintsp,
-           struct addrinfo **result);
-
-static int getnameinfo_unix(const struct sockaddr_un *sa, int salen,
-                            char *node, int nodelen,
-                            char *service, int servicelen,
-                            int flags);
+static int getaddrinfo_unix(const char *path,
+                const struct addrinfo * hintsp,
+                struct addrinfo ** result);
+
+static int getnameinfo_unix(const struct sockaddr_un * sa, int salen,
+                char *node, int nodelen,
+                char *service, int servicelen,
+                int flags);
 #endif
 
 
@@ -66,7 +66,7 @@ static int    getnameinfo_unix(const struct sockaddr_un *sa, int salen,
  */
 int
 getaddrinfo_all(const char *hostname, const char *servname,
-               const struct addrinfo *hintp, struct addrinfo **result)
+               const struct addrinfo * hintp, struct addrinfo ** result)
 {
 #ifdef HAVE_UNIX_SOCKETS
    if (hintp != NULL && hintp->ai_family == AF_UNIX)
@@ -89,7 +89,7 @@ getaddrinfo_all(const char *hostname, const char *servname,
  * not safe to look at ai_family in the addrinfo itself.
  */
 void
-freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai)
+freeaddrinfo_all(int hint_ai_family, struct addrinfo * ai)
 {
 #ifdef HAVE_UNIX_SOCKETS
    if (hint_ai_family == AF_UNIX)
@@ -123,12 +123,12 @@ freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai)
  * guaranteed to be filled with something even on failure return.
  */
 int
-getnameinfo_all(const struct sockaddr_storage *addr, int salen,
+getnameinfo_all(const struct sockaddr_storage * addr, int salen,
                char *node, int nodelen,
                char *service, int servicelen,
                int flags)
 {
-   int     rc;
+   int         rc;
 
 #ifdef HAVE_UNIX_SOCKETS
    if (addr && addr->ss_family == AF_UNIX)
@@ -166,8 +166,8 @@ getnameinfo_all(const struct sockaddr_storage *addr, int salen,
  * -------
  */
 static int
-getaddrinfo_unix(const char *path, const struct addrinfo *hintsp,
-                struct addrinfo **result)
+getaddrinfo_unix(const char *path, const struct addrinfo * hintsp,
+                struct addrinfo ** result)
 {
    struct addrinfo hints;
    struct addrinfo *aip;
@@ -178,9 +178,7 @@ getaddrinfo_unix(const char *path, const struct addrinfo *hintsp,
    MemSet(&hints, 0, sizeof(hints));
 
    if (strlen(path) >= sizeof(unp->sun_path))
-   {
        return EAI_FAIL;
-   }
 
    if (hintsp == NULL)
    {
@@ -234,139 +232,123 @@ getaddrinfo_unix(const char *path, const struct addrinfo *hintsp,
  * Convert an address to a hostname.
  */
 static int
-getnameinfo_unix(const struct sockaddr_un *sa, int salen,
+getnameinfo_unix(const struct sockaddr_un * sa, int salen,
                 char *node, int nodelen,
                 char *service, int servicelen,
                 int flags)
 {
-   int     ret = -1;
+   int         ret = -1;
 
    /* Invalid arguments. */
    if (sa == NULL || sa->sun_family != AF_UNIX ||
        (node == NULL && service == NULL))
-   {
        return EAI_FAIL;
-   }
 
    /* We don't support those. */
    if ((node && !(flags & NI_NUMERICHOST))
        || (service && !(flags & NI_NUMERICSERV)))
-   {
        return EAI_FAIL;
-   }
 
    if (node)
    {
        ret = snprintf(node, nodelen, "%s", "localhost");
        if (ret == -1 || ret > nodelen)
-       {
            return EAI_MEMORY;
-       }
    }
 
    if (service)
    {
        ret = snprintf(service, servicelen, "%s", sa->sun_path);
        if (ret == -1 || ret > servicelen)
-       {
            return EAI_MEMORY;
-       }
    }
 
    return 0;
 }
-
 #endif   /* HAVE_UNIX_SOCKETS */
 
 
 int
-rangeSockAddr(const struct sockaddr_storage *addr,
-       const struct sockaddr_storage *netaddr,
-       const struct sockaddr_storage *netmask)
+rangeSockAddr(const struct sockaddr_storage * addr,
+             const struct sockaddr_storage * netaddr,
+             const struct sockaddr_storage * netmask)
 {
    if (addr->ss_family == AF_INET)
-       return rangeSockAddrAF_INET((struct sockaddr_in *)addr,
-           (struct sockaddr_in *)netaddr,
-           (struct sockaddr_in *)netmask);
+       return rangeSockAddrAF_INET((struct sockaddr_in *) addr,
+                                   (struct sockaddr_in *) netaddr,
+                                   (struct sockaddr_in *) netmask);
 #ifdef HAVE_IPV6
    else if (addr->ss_family == AF_INET6)
-       return rangeSockAddrAF_INET6((struct sockaddr_in6 *)addr,
-           (struct sockaddr_in6 *)netaddr,
-           (struct sockaddr_in6 *)netmask);
+       return rangeSockAddrAF_INET6((struct sockaddr_in6 *) addr,
+                                    (struct sockaddr_in6 *) netaddr,
+                                    (struct sockaddr_in6 *) netmask);
 #endif
    else
        return 0;
 }
 
 /*
- *  SockAddr_cidr_mask - make a network mask of the appropriate family
- *    and required number of significant bits
+ * SockAddr_cidr_mask - make a network mask of the appropriate family
+ *   and required number of significant bits
  *
  * Note: Returns a static pointer for the mask, so it's not thread safe,
- *       and a second call will overwrite the data.
+ *      and a second call will overwrite the data.
  */
 int
-SockAddr_cidr_mask(struct sockaddr_storage **mask, char *numbits, int family)
+SockAddr_cidr_mask(struct sockaddr_storage ** mask, char *numbits, int family)
 {
-   long            bits;
-   char            *endptr;
-static struct sockaddr_storage sock;
-   struct sockaddr_in  mask4;
+   long        bits;
+   char       *endptr;
+   static struct sockaddr_storage sock;
+   struct sockaddr_in mask4;
+
 #ifdef HAVE_IPV6
-   struct sockaddr_in6 mask6;
+   struct sockaddr_in6 mask6;
 #endif
 
    bits = strtol(numbits, &endptr, 10);
 
    if (*numbits == '\0' || *endptr != '\0')
-   {
        return -1;
-   }
 
    if ((bits < 0) || (family == AF_INET && bits > 32)
 #ifdef HAVE_IPV6
        || (family == AF_INET6 && bits > 128)
 #endif
        )
-   {
        return -1;
-   }
 
    *mask = &sock;
 
    switch (family)
    {
        case AF_INET:
-           mask4.sin_addr.s_addr = 
+           mask4.sin_addr.s_addr =
                htonl((0xffffffffUL << (32 - bits))
-                   & 0xffffffffUL);
-           memcpy(&sock, &mask4, sizeof(mask4));           
+                     & 0xffffffffUL);
+           memcpy(&sock, &mask4, sizeof(mask4));
            break;
 #ifdef HAVE_IPV6
        case AF_INET6:
-       {
-           int i;
-           
-           for (i = 0; i < 16; i++)
            {
-               if (bits <= 0)
-               {
-                   mask6.sin6_addr.s6_addr[i] = 0;
-               }
-               else if (bits >= 8)
-               {
-                   mask6.sin6_addr.s6_addr[i] = 0xff;
-               }
-               else
+               int         i;
+
+               for (i = 0; i < 16; i++)
                {
-                   mask6.sin6_addr.s6_addr[i] =
-                       (0xff << (8 - bits)) & 0xff;
+                   if (bits <= 0)
+                       mask6.sin6_addr.s6_addr[i] = 0;
+                   else if (bits >= 8)
+                       mask6.sin6_addr.s6_addr[i] = 0xff;
+                   else
+                   {
+                       mask6.sin6_addr.s6_addr[i] =
+                           (0xff << (8 - bits)) & 0xff;
+                   }
+                   bits -= 8;
                }
-               bits -= 8;
+               memcpy(&sock, &mask6, sizeof(mask6));
+               break;
            }
-           memcpy(&sock, &mask6, sizeof(mask6));
-           break;
-       }
 #endif
        default:
            return -1;
@@ -377,8 +359,8 @@ static  struct sockaddr_storage sock;
 }
 
 static int
-rangeSockAddrAF_INET(const struct sockaddr_in *addr, const struct sockaddr_in *netaddr,
-                    const struct sockaddr_in *netmask)
+rangeSockAddrAF_INET(const struct sockaddr_in * addr, const struct sockaddr_in * netaddr,
+                    const struct sockaddr_in * netmask)
 {
    if (((addr->sin_addr.s_addr ^ netaddr->sin_addr.s_addr) &
         netmask->sin_addr.s_addr) == 0)
@@ -390,9 +372,9 @@ rangeSockAddrAF_INET(const struct sockaddr_in *addr, const struct sockaddr_in *n
 
 #ifdef HAVE_IPV6
 static int
-rangeSockAddrAF_INET6(const struct sockaddr_in6 *addr,
-       const struct sockaddr_in6 *netaddr,
-       const struct sockaddr_in6 *netmask)
+rangeSockAddrAF_INET6(const struct sockaddr_in6 * addr,
+                     const struct sockaddr_in6 * netaddr,
+                     const struct sockaddr_in6 * netmask)
 {
    int         i;
 
@@ -405,6 +387,5 @@ rangeSockAddrAF_INET6(const struct sockaddr_in6 *addr,
 
    return 1;
 }
-#endif
-
 
+#endif
index dbf639fc74fc536a1ada30306bd5733f53d95aec..05adff56a604b98587fd5a41482281e5dacd8657 100644 (file)
@@ -14,7 +14,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/md5.c,v 1.19 2002/10/03 17:09:41 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/md5.c,v 1.20 2003/08/04 00:43:18 momjian Exp $
  */
 
 
@@ -35,8 +35,8 @@
 #include "postgres_fe.h"
 #ifndef WIN32
 #include "libpq/crypt.h"
-#endif /* WIN32 */
-#endif /* FRONTEND */
+#endif   /* WIN32 */
+#endif   /* FRONTEND */
 
 #ifdef MD5_ODBC
 #include "md5.h"
index 2f6d0245bf509f99d02f8ee001cd94c4871661a7..5ae7e1ae2c942e9417cbdcfbe58bae68d90b1cc1 100644 (file)
@@ -30,7 +30,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.161 2003/07/27 21:49:53 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.162 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -151,6 +151,7 @@ pq_close(void)
    {
        /* Cleanly shut down SSL layer */
        secure_close(MyProcPort);
+
        /*
         * Formerly we did an explicit close() here, but it seems better
         * to leave the socket open until the process dies.  This allows
@@ -208,10 +209,11 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
    int         maxconn;
    int         one = 1;
    int         ret;
-   char            portNumberStr[64];
-   char            *service;
-   struct addrinfo     *addrs = NULL, *addr;
-   struct addrinfo     hint;
+   char        portNumberStr[64];
+   char       *service;
+   struct addrinfo *addrs = NULL,
+              *addr;
+   struct addrinfo hint;
    int         listen_index = 0;
    int         added = 0;
 
@@ -245,8 +247,8 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
                            hostName, service, gai_strerror(ret))));
        else
            ereport(LOG,
-                   (errmsg("could not translate service \"%s\" to address: %s",
-                           service, gai_strerror(ret))));
+            (errmsg("could not translate service \"%s\" to address: %s",
+                    service, gai_strerror(ret))));
        freeaddrinfo_all(hint.ai_family, addrs);
        return STATUS_ERROR;
    }
@@ -255,9 +257,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
    {
        if (!IS_AF_UNIX(family) && IS_AF_UNIX(addr->ai_family))
        {
-           /* Only set up a unix domain socket when
-            * they really asked for it.  The service/port
-            * is different in that case.
+           /*
+            * Only set up a unix domain socket when they really asked for
+            * it.  The service/port is different in that case.
             */
            continue;
        }
@@ -285,7 +287,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
        if (!IS_AF_UNIX(addr->ai_family))
        {
            if ((setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
-               (char *) &one, sizeof(one))) == -1)
+                           (char *) &one, sizeof(one))) == -1)
            {
                ereport(LOG,
                        (errcode_for_socket_access(),
@@ -299,7 +301,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
        if (addr->ai_family == AF_INET6)
        {
            if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY,
-               (char *)&one, sizeof(one)) == -1)
+                          (char *) &one, sizeof(one)) == -1)
            {
                ereport(LOG,
                        (errcode_for_socket_access(),
@@ -311,10 +313,10 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
 #endif
 
        /*
-        * Note: This might fail on some OS's, like Linux
-        * older than 2.4.21-pre3, that don't have the IPV6_V6ONLY
-        * socket option, and map ipv4 addresses to ipv6.  It will
-        * show ::ffff:ipv4 for all ipv4 connections.
+        * Note: This might fail on some OS's, like Linux older than
+        * 2.4.21-pre3, that don't have the IPV6_V6ONLY socket option, and
+        * map ipv4 addresses to ipv6.  It will show ::ffff:ipv4 for all
+        * ipv4 connections.
         */
        err = bind(fd, addr->ai_addr, addr->ai_addrlen);
        if (err < 0)
@@ -323,12 +325,12 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
                    (errcode_for_socket_access(),
                     errmsg("failed to bind server socket: %m"),
                     (IS_AF_UNIX(addr->ai_family)) ?
-                    errhint("Is another postmaster already running on port %d?"
-                            " If not, remove socket node \"%s\" and retry.",
-                            (int) portNumber, sock_path) :
-                    errhint("Is another postmaster already running on port %d?"
-                            " If not, wait a few seconds and retry.",
-                            (int) portNumber)));
+             errhint("Is another postmaster already running on port %d?"
+                     " If not, remove socket node \"%s\" and retry.",
+                     (int) portNumber, sock_path) :
+             errhint("Is another postmaster already running on port %d?"
+                     " If not, wait a few seconds and retry.",
+                     (int) portNumber)));
            closesocket(fd);
            continue;
        }
@@ -345,10 +347,10 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
 #endif
 
        /*
-        * Select appropriate accept-queue length limit.  PG_SOMAXCONN
-        * is only intended to provide a clamp on the request on
-        * platforms where an overly large request provokes a kernel
-        * error (are there any?).
+        * Select appropriate accept-queue length limit.  PG_SOMAXCONN is
+        * only intended to provide a clamp on the request on platforms
+        * where an overly large request provokes a kernel error (are
+        * there any?).
         */
        maxconn = MaxBackends * 2;
        if (maxconn > PG_SOMAXCONN)
@@ -465,7 +467,6 @@ Setup_AF_UNIX(void)
    }
    return STATUS_OK;
 }
-
 #endif   /* HAVE_UNIX_SOCKETS */
 
 
@@ -485,8 +486,8 @@ StreamConnection(int server_fd, Port *port)
    /* accept connection and fill in the client (remote) address */
    port->raddr.salen = sizeof(port->raddr.addr);
    if ((port->sock = accept(server_fd,
-            (struct sockaddr *) &port->raddr.addr,
-            &port->raddr.salen)) < 0)
+                            (struct sockaddr *) & port->raddr.addr,
+                            &port->raddr.salen)) < 0)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
@@ -495,6 +496,7 @@ StreamConnection(int server_fd, Port *port)
    }
 
 #ifdef SCO_ACCEPT_BUG
+
    /*
     * UnixWare 7+ and OpenServer 5.0.4 are known to have this bug, but it
     * shouldn't hurt to catch it for all versions of those platforms.
@@ -571,19 +573,19 @@ TouchSocketFile(void)
    if (sock_path[0] != '\0')
    {
        /*
-        * utime() is POSIX standard, utimes() is a common alternative.
-        * If we have neither, there's no way to affect the mod or access
+        * utime() is POSIX standard, utimes() is a common alternative. If
+        * we have neither, there's no way to affect the mod or access
         * time of the socket :-(
         *
         * In either path, we ignore errors; there's no point in complaining.
         */
 #ifdef HAVE_UTIME
        utime(sock_path, NULL);
-#else /* !HAVE_UTIME */
+#else                          /* !HAVE_UTIME */
 #ifdef HAVE_UTIMES
        utimes(sock_path, NULL);
-#endif /* HAVE_UTIMES */
-#endif /* HAVE_UTIME */
+#endif   /* HAVE_UTIMES */
+#endif   /* HAVE_UTIME */
    }
 }
 
@@ -634,9 +636,10 @@ pq_recvbuf(void)
                continue;       /* Ok if interrupted */
 
            /*
-            * Careful: an ereport() that tries to write to the client would
-            * cause recursion to here, leading to stack overflow and core
-            * dump!  This message must go *only* to the postmaster log.
+            * Careful: an ereport() that tries to write to the client
+            * would cause recursion to here, leading to stack overflow
+            * and core dump!  This message must go *only* to the
+            * postmaster log.
             */
            ereport(COMMERROR,
                    (errcode_for_socket_access(),
@@ -646,8 +649,8 @@ pq_recvbuf(void)
        if (r == 0)
        {
            /*
-            * EOF detected.  We used to write a log message here, but it's
-            * better to expect the ultimate caller to do that.
+            * EOF detected.  We used to write a log message here, but
+            * it's better to expect the ultimate caller to do that.
             */
            return EOF;
        }
@@ -894,9 +897,10 @@ pq_flush(void)
                continue;       /* Ok if we were interrupted */
 
            /*
-            * Careful: an ereport() that tries to write to the client would
-            * cause recursion to here, leading to stack overflow and core
-            * dump!  This message must go *only* to the postmaster log.
+            * Careful: an ereport() that tries to write to the client
+            * would cause recursion to here, leading to stack overflow
+            * and core dump!  This message must go *only* to the
+            * postmaster log.
             *
             * If a client disconnects while we're in the midst of output, we
             * might write quite a bit of data before we get to a safe
index 8b04dbe70558c816dd1be5367de061b5b17d3f83..d5b1baded297f9370e97d44d7c6e184cdcbd7d34 100644 (file)
@@ -24,7 +24,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/libpq/pqformat.c,v 1.32 2003/07/22 19:00:10 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/pqformat.c,v 1.33 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
  *     pq_getmsgbyte   - get a raw byte from a message buffer
  *     pq_getmsgint    - get a binary integer from a message buffer
  *     pq_getmsgint64  - get a binary 8-byte int from a message buffer
- *     pq_getmsgfloat4 - get a float4 from a message buffer
- *     pq_getmsgfloat8 - get a float8 from a message buffer
+ *     pq_getmsgfloat4 - get a float4 from a message buffer
+ *     pq_getmsgfloat8 - get a float8 from a message buffer
  *     pq_getmsgbytes  - get raw data from a message buffer
- *     pq_copymsgbytes - copy raw data from a message buffer
+ *     pq_copymsgbytes - copy raw data from a message buffer
  *     pq_getmsgtext   - get a counted text string (with conversion)
- *     pq_getmsgstring - get a null-terminated text string (with conversion)
+ *     pq_getmsgstring - get a null-terminated text string (with conversion)
  *     pq_getmsgend    - verify message fully consumed
  */
 
@@ -90,10 +90,12 @@ void
 pq_beginmessage(StringInfo buf, char msgtype)
 {
    initStringInfo(buf);
+
    /*
     * We stash the message type into the buffer's cursor field, expecting
-    * that the pq_sendXXX routines won't touch it.  We could alternatively
-    * make it the first byte of the buffer contents, but this seems easier.
+    * that the pq_sendXXX routines won't touch it.  We could
+    * alternatively make it the first byte of the buffer contents, but
+    * this seems easier.
     */
    buf->cursor = msgtype;
 }
@@ -122,7 +124,7 @@ pq_sendbytes(StringInfo buf, const char *data, int datalen)
  *     pq_sendcountedtext - append a counted text string (with character set conversion)
  *
  * The data sent to the frontend by this routine is a 4-byte count field
- * followed by the string.  The count includes itself or not, as per the
+ * followed by the string. The count includes itself or not, as per the
  * countincludesself flag (pre-3.0 protocol requires it to include itself).
  * The passed text string need not be null-terminated, and the data sent
  * to the frontend isn't either.
@@ -173,9 +175,7 @@ pq_sendtext(StringInfo buf, const char *str, int slen)
        pfree(p);
    }
    else
-   {
        appendBinaryStringInfo(buf, str, slen);
-   }
 }
 
 /* --------------------------------
@@ -200,9 +200,7 @@ pq_sendstring(StringInfo buf, const char *str)
        pfree(p);
    }
    else
-   {
        appendBinaryStringInfo(buf, str, slen + 1);
-   }
 }
 
 /* --------------------------------
@@ -281,9 +279,9 @@ pq_sendfloat4(StringInfo buf, float4 f)
 {
    union
    {
-       float4  f;
-       uint32  i;
-   } swap;
+       float4      f;
+       uint32      i;
+   }           swap;
 
    swap.f = f;
    swap.i = htonl(swap.i);
@@ -308,9 +306,9 @@ pq_sendfloat8(StringInfo buf, float8 f)
 #ifdef INT64_IS_BUSTED
    union
    {
-       float8  f;
-       uint32  h[2];
-   } swap;
+       float8      f;
+       uint32      h[2];
+   }           swap;
 
    swap.f = f;
    swap.h[0] = htonl(swap.h[0]);
@@ -332,9 +330,9 @@ pq_sendfloat8(StringInfo buf, float8 f)
 #else
    union
    {
-       float8  f;
-       int64   i;
-   } swap;
+       float8      f;
+       int64       i;
+   }           swap;
 
    swap.f = f;
    pq_sendint64(buf, swap.i);
@@ -515,7 +513,7 @@ pq_getmsgint64(StringInfo msg)
 }
 
 /* --------------------------------
- *     pq_getmsgfloat4 - get a float4 from a message buffer
+ *     pq_getmsgfloat4 - get a float4 from a message buffer
  *
  * See notes for pq_sendfloat4.
  * --------------------------------
@@ -525,16 +523,16 @@ pq_getmsgfloat4(StringInfo msg)
 {
    union
    {
-       float4  f;
-       uint32  i;
-   } swap;
+       float4      f;
+       uint32      i;
+   }           swap;
 
    swap.i = pq_getmsgint(msg, 4);
    return swap.f;
 }
 
 /* --------------------------------
- *     pq_getmsgfloat8 - get a float8 from a message buffer
+ *     pq_getmsgfloat8 - get a float8 from a message buffer
  *
  * See notes for pq_sendfloat8.
  * --------------------------------
@@ -545,9 +543,9 @@ pq_getmsgfloat8(StringInfo msg)
 #ifdef INT64_IS_BUSTED
    union
    {
-       float8  f;
-       uint32  h[2];
-   } swap;
+       float8      f;
+       uint32      h[2];
+   }           swap;
 
    /* Have to figure out endianness by testing... */
    if (((uint32) 1) == htonl((uint32) 1))
@@ -566,9 +564,9 @@ pq_getmsgfloat8(StringInfo msg)
 #else
    union
    {
-       float8  f;
-       int64   i;
-   } swap;
+       float8      f;
+       int64       i;
+   }           swap;
 
    swap.i = pq_getmsgint64(msg);
    return swap.f;
@@ -597,7 +595,7 @@ pq_getmsgbytes(StringInfo msg, int datalen)
 }
 
 /* --------------------------------
- *     pq_copymsgbytes - copy raw data from a message buffer
+ *     pq_copymsgbytes - copy raw data from a message buffer
  *
  *     Same as above, except data is copied to caller's buffer.
  * --------------------------------
@@ -623,8 +621,8 @@ pq_copymsgbytes(StringInfo msg, char *buf, int datalen)
 char *
 pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes)
 {
-   char   *str;
-   char   *p;
+   char       *str;
+   char       *p;
 
    if (rawbytes < 0 || rawbytes > (msg->len - msg->cursor))
        ereport(ERROR,
@@ -635,9 +633,7 @@ pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes)
 
    p = (char *) pg_client_to_server((unsigned char *) str, rawbytes);
    if (p != str)               /* actual conversion has been done? */
-   {
        *nbytes = strlen(p);
-   }
    else
    {
        p = (char *) palloc(rawbytes + 1);
@@ -649,7 +645,7 @@ pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes)
 }
 
 /* --------------------------------
- *     pq_getmsgstring - get a null-terminated text string (with conversion)
+ *     pq_getmsgstring - get a null-terminated text string (with conversion)
  *
  *     May return a pointer directly into the message buffer, or a pointer
  *     to a palloc'd conversion result.
@@ -658,14 +654,15 @@ pq_getmsgtext(StringInfo msg, int rawbytes, int *nbytes)
 const char *
 pq_getmsgstring(StringInfo msg)
 {
-   char   *str;
-   int     slen;
+   char       *str;
+   int         slen;
 
    str = &msg->data[msg->cursor];
+
    /*
     * It's safe to use strlen() here because a StringInfo is guaranteed
-    * to have a trailing null byte.  But check we found a null inside
-    * the message.
+    * to have a trailing null byte.  But check we found a null inside the
+    * message.
     */
    slen = strlen(str);
    if (msg->cursor + slen >= msg->len)
index 862194b17d57aaf2dc3433994209e2bc9e1ab110..fcc6ea5a7e51e21ed920bbecc15b7ae332d08f8d 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.59 2003/07/27 21:49:53 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.60 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -163,6 +163,7 @@ main(int argc, char *argv[])
    {
 #ifndef WIN32
 #ifndef __BEOS__
+
        /*
         * Make sure we are not running as root.
         *
@@ -175,8 +176,8 @@ main(int argc, char *argv[])
                    gettext("\"root\" execution of the PostgreSQL server is not permitted.\n"
                            "The server must be started under an unprivileged user id to prevent\n"
                            "possible system security compromise.  See the documentation for\n"
-                           "more information on how to properly start the server.\n"
-                       ));
+               "more information on how to properly start the server.\n"
+                           ));
            exit(1);
        }
 #endif   /* !__BEOS__ */
@@ -193,16 +194,16 @@ main(int argc, char *argv[])
        if (getuid() != geteuid())
        {
            fprintf(stderr,
-                   gettext("%s: real and effective user ids must match\n"),
+                gettext("%s: real and effective user ids must match\n"),
                    argv[0]);
            exit(1);
        }
-#endif /* !WIN32 */
+#endif   /* !WIN32 */
    }
 
    /*
-    * Now dispatch to one of PostmasterMain, PostgresMain, GucInfoMain, or
-    * BootstrapMain depending on the program name (and possibly first
+    * Now dispatch to one of PostmasterMain, PostgresMain, GucInfoMain,
+    * or BootstrapMain depending on the program name (and possibly first
     * argument) we were called with.  The lack of consistency here is
     * historical.
     */
@@ -223,8 +224,8 @@ main(int argc, char *argv[])
 
    /*
     * If the first argument is "--help-config", then invoke runtime
-    * configuration option display mode.
-    * We remove "--help-config" from the arguments passed on to GucInfoMain.
+    * configuration option display mode. We remove "--help-config" from
+    * the arguments passed on to GucInfoMain.
     */
    if (argc > 1 && strcmp(new_argv[1], "--help-config") == 0)
        exit(GucInfoMain(argc - 1, new_argv + 1));
@@ -246,7 +247,7 @@ main(int argc, char *argv[])
    pw_name_persist = strdup(pw->pw_name);
 #else
    {
-       long namesize = 256 /* UNLEN */ + 1;    
+       long        namesize = 256 /* UNLEN */ + 1;
 
        pw_name_persist = malloc(namesize);
        if (!GetUserName(pw_name_persist, &namesize))
index c4576cf3b3d52dcc039ae611c0c1634a1098bb4a..e444f449e1922dcf992bd9a56ff85182ac31eb09 100644 (file)
@@ -14,7 +14,7 @@
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/bitmapset.c,v 1.3 2003/07/22 23:30:37 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/bitmapset.c,v 1.4 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -38,7 +38,7 @@
  * where x's are unspecified bits.  The two's complement negative is formed
  * by inverting all the bits and adding one.  Inversion gives
  *             yyyyyy01111
- * where each y is the inverse of the corresponding x.  Incrementing gives
+ * where each y is the inverse of the corresponding x. Incrementing gives
  *             yyyyyy10000
  * and then ANDing with the original value gives
  *             00000010000
  */
 
 static const uint8 rightmost_one_pos[256] = {
-   0,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   5,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   6,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   5,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   7,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   5,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   6,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   5,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0,
-   4,  0,  1,  0,  2,  0,  1,  0,  3,  0,  1,  0,  2,  0,  1,  0
+   0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
+   4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
 };
 
 static const uint8 number_of_ones[256] = {
-   0,  1,  1,  2,  1,  2,  2,  3,  1,  2,  2,  3,  2,  3,  3,  4,
-   1,  2,  2,  3,  2,  3,  3,  4,  2,  3,  3,  4,  3,  4,  4,  5,
-   1,  2,  2,  3,  2,  3,  3,  4,  2,  3,  3,  4,  3,  4,  4,  5,
-   2,  3,  3,  4,  3,  4,  4,  5,  3,  4,  4,  5,  4,  5,  5,  6,
-   1,  2,  2,  3,  2,  3,  3,  4,  2,  3,  3,  4,  3,  4,  4,  5,
-   2,  3,  3,  4,  3,  4,  4,  5,  3,  4,  4,  5,  4,  5,  5,  6,
-   2,  3,  3,  4,  3,  4,  4,  5,  3,  4,  4,  5,  4,  5,  5,  6,
-   3,  4,  4,  5,  4,  5,  5,  6,  4,  5,  5,  6,  5,  6,  6,  7,
-   1,  2,  2,  3,  2,  3,  3,  4,  2,  3,  3,  4,  3,  4,  4,  5,
-   2,  3,  3,  4,  3,  4,  4,  5,  3,  4,  4,  5,  4,  5,  5,  6,
-   2,  3,  3,  4,  3,  4,  4,  5,  3,  4,  4,  5,  4,  5,  5,  6,
-   3,  4,  4,  5,  4,  5,  5,  6,  4,  5,  5,  6,  5,  6,  6,  7,
-   2,  3,  3,  4,  3,  4,  4,  5,  3,  4,  4,  5,  4,  5,  5,  6,
-   3,  4,  4,  5,  4,  5,  5,  6,  4,  5,  5,  6,  5,  6,  6,  7,
-   3,  4,  4,  5,  4,  5,  5,  6,  4,  5,  5,  6,  5,  6,  6,  7,
-   4,  5,  5,  6,  5,  6,  6,  7,  5,  6,  6,  7,  6,  7,  7,  8
+   0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
+   1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+   1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+   2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+   1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+   2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+   2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+   3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+   1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+   2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+   2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+   3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+   2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+   3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+   3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+   4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
 };
 
 
@@ -107,7 +107,7 @@ static const uint8 number_of_ones[256] = {
  * bms_copy - make a palloc'd copy of a bitmapset
  */
 Bitmapset *
-bms_copy(const Bitmapset *a)
+bms_copy(const Bitmapset * a)
 {
    Bitmapset  *result;
    size_t      size;
@@ -127,7 +127,7 @@ bms_copy(const Bitmapset *a)
  * be reported as equal to a palloc'd value containing no members.
  */
 bool
-bms_equal(const Bitmapset *a, const Bitmapset *b)
+bms_equal(const Bitmapset * a, const Bitmapset * b)
 {
    const Bitmapset *shorter;
    const Bitmapset *longer;
@@ -143,9 +143,7 @@ bms_equal(const Bitmapset *a, const Bitmapset *b)
        return bms_is_empty(b);
    }
    else if (b == NULL)
-   {
        return bms_is_empty(a);
-   }
    /* Identify shorter and longer input */
    if (a->nwords <= b->nwords)
    {
@@ -199,7 +197,7 @@ bms_make_singleton(int x)
  * Same as pfree except for allowing NULL input
  */
 void
-bms_free(Bitmapset *a)
+bms_free(Bitmapset * a)
 {
    if (a)
        pfree(a);
@@ -216,7 +214,7 @@ bms_free(Bitmapset *a)
  * bms_union - set union
  */
 Bitmapset *
-bms_union(const Bitmapset *a, const Bitmapset *b)
+bms_union(const Bitmapset * a, const Bitmapset * b)
 {
    Bitmapset  *result;
    const Bitmapset *other;
@@ -242,9 +240,7 @@ bms_union(const Bitmapset *a, const Bitmapset *b)
    /* And union the shorter input into the result */
    otherlen = other->nwords;
    for (i = 0; i < otherlen; i++)
-   {
        result->words[i] |= other->words[i];
-   }
    return result;
 }
 
@@ -252,7 +248,7 @@ bms_union(const Bitmapset *a, const Bitmapset *b)
  * bms_intersect - set intersection
  */
 Bitmapset *
-bms_intersect(const Bitmapset *a, const Bitmapset *b)
+bms_intersect(const Bitmapset * a, const Bitmapset * b)
 {
    Bitmapset  *result;
    const Bitmapset *other;
@@ -276,9 +272,7 @@ bms_intersect(const Bitmapset *a, const Bitmapset *b)
    /* And intersect the longer input with the result */
    resultlen = result->nwords;
    for (i = 0; i < resultlen; i++)
-   {
        result->words[i] &= other->words[i];
-   }
    return result;
 }
 
@@ -286,7 +280,7 @@ bms_intersect(const Bitmapset *a, const Bitmapset *b)
  * bms_difference - set difference (ie, A without members of B)
  */
 Bitmapset *
-bms_difference(const Bitmapset *a, const Bitmapset *b)
+bms_difference(const Bitmapset * a, const Bitmapset * b)
 {
    Bitmapset  *result;
    int         shortlen;
@@ -302,9 +296,7 @@ bms_difference(const Bitmapset *a, const Bitmapset *b)
    /* And remove b's bits from result */
    shortlen = Min(a->nwords, b->nwords);
    for (i = 0; i < shortlen; i++)
-   {
-       result->words[i] &= ~ b->words[i];
-   }
+       result->words[i] &= ~b->words[i];
    return result;
 }
 
@@ -312,7 +304,7 @@ bms_difference(const Bitmapset *a, const Bitmapset *b)
  * bms_is_subset - is A a subset of B?
  */
 bool
-bms_is_subset(const Bitmapset *a, const Bitmapset *b)
+bms_is_subset(const Bitmapset * a, const Bitmapset * b)
 {
    int         shortlen;
    int         longlen;
@@ -327,7 +319,7 @@ bms_is_subset(const Bitmapset *a, const Bitmapset *b)
    shortlen = Min(a->nwords, b->nwords);
    for (i = 0; i < shortlen; i++)
    {
-       if ((a->words[i] & ~ b->words[i]) != 0)
+       if ((a->words[i] & ~b->words[i]) != 0)
            return false;
    }
    /* Check extra words */
@@ -347,7 +339,7 @@ bms_is_subset(const Bitmapset *a, const Bitmapset *b)
  * bms_is_member - is X a member of A?
  */
 bool
-bms_is_member(int x, const Bitmapset *a)
+bms_is_member(int x, const Bitmapset * a)
 {
    int         wordnum,
                bitnum;
@@ -370,7 +362,7 @@ bms_is_member(int x, const Bitmapset *a)
  * bms_overlap - do sets overlap (ie, have a nonempty intersection)?
  */
 bool
-bms_overlap(const Bitmapset *a, const Bitmapset *b)
+bms_overlap(const Bitmapset * a, const Bitmapset * b)
 {
    int         shortlen;
    int         i;
@@ -392,7 +384,7 @@ bms_overlap(const Bitmapset *a, const Bitmapset *b)
  * bms_nonempty_difference - do sets have a nonempty difference?
  */
 bool
-bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b)
+bms_nonempty_difference(const Bitmapset * a, const Bitmapset * b)
 {
    int         shortlen;
    int         i;
@@ -406,7 +398,7 @@ bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b)
    shortlen = Min(a->nwords, b->nwords);
    for (i = 0; i < shortlen; i++)
    {
-       if ((a->words[i] & ~ b->words[i]) != 0)
+       if ((a->words[i] & ~b->words[i]) != 0)
            return true;
    }
    /* Check extra words in a */
@@ -424,11 +416,11 @@ bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b)
  * Raises error if |a| is not 1.
  */
 int
-bms_singleton_member(const Bitmapset *a)
+bms_singleton_member(const Bitmapset * a)
 {
-   int     result = -1;
-   int     nwords;
-   int     wordnum;
+   int         result = -1;
+   int         nwords;
+   int         wordnum;
 
    if (a == NULL)
        elog(ERROR, "bitmapset is empty");
@@ -459,11 +451,11 @@ bms_singleton_member(const Bitmapset *a)
  * bms_num_members - count members of set
  */
 int
-bms_num_members(const Bitmapset *a)
+bms_num_members(const Bitmapset * a)
 {
-   int     result = 0;
-   int     nwords;
-   int     wordnum;
+   int         result = 0;
+   int         nwords;
+   int         wordnum;
 
    if (a == NULL)
        return 0;
@@ -488,11 +480,11 @@ bms_num_members(const Bitmapset *a)
  * This is faster than making an exact count with bms_num_members().
  */
 BMS_Membership
-bms_membership(const Bitmapset *a)
+bms_membership(const Bitmapset * a)
 {
    BMS_Membership result = BMS_EMPTY_SET;
-   int     nwords;
-   int     wordnum;
+   int         nwords;
+   int         wordnum;
 
    if (a == NULL)
        return BMS_EMPTY_SET;
@@ -517,10 +509,10 @@ bms_membership(const Bitmapset *a)
  * This is even faster than bms_membership().
  */
 bool
-bms_is_empty(const Bitmapset *a)
+bms_is_empty(const Bitmapset * a)
 {
-   int     nwords;
-   int     wordnum;
+   int         nwords;
+   int         wordnum;
 
    if (a == NULL)
        return true;
@@ -552,7 +544,7 @@ bms_is_empty(const Bitmapset *a)
  * Input set is modified or recycled!
  */
 Bitmapset *
-bms_add_member(Bitmapset *a, int x)
+bms_add_member(Bitmapset * a, int x)
 {
    int         wordnum,
                bitnum;
@@ -573,9 +565,7 @@ bms_add_member(Bitmapset *a, int x)
        result = bms_make_singleton(x);
        nwords = a->nwords;
        for (i = 0; i < nwords; i++)
-       {
            result->words[i] |= a->words[i];
-       }
        pfree(a);
        return result;
    }
@@ -592,7 +582,7 @@ bms_add_member(Bitmapset *a, int x)
  * Input set is modified in-place!
  */
 Bitmapset *
-bms_del_member(Bitmapset *a, int x)
+bms_del_member(Bitmapset * a, int x)
 {
    int         wordnum,
                bitnum;
@@ -604,9 +594,7 @@ bms_del_member(Bitmapset *a, int x)
    wordnum = WORDNUM(x);
    bitnum = BITNUM(x);
    if (wordnum < a->nwords)
-   {
-       a->words[wordnum] &= ~ ((bitmapword) 1 << bitnum);
-   }
+       a->words[wordnum] &= ~((bitmapword) 1 << bitnum);
    return a;
 }
 
@@ -614,7 +602,7 @@ bms_del_member(Bitmapset *a, int x)
  * bms_add_members - like bms_union, but left input is recycled
  */
 Bitmapset *
-bms_add_members(Bitmapset *a, const Bitmapset *b)
+bms_add_members(Bitmapset * a, const Bitmapset * b)
 {
    Bitmapset  *result;
    const Bitmapset *other;
@@ -640,9 +628,7 @@ bms_add_members(Bitmapset *a, const Bitmapset *b)
    /* And union the shorter input into the result */
    otherlen = other->nwords;
    for (i = 0; i < otherlen; i++)
-   {
        result->words[i] |= other->words[i];
-   }
    if (result != a)
        pfree(a);
    return result;
@@ -652,7 +638,7 @@ bms_add_members(Bitmapset *a, const Bitmapset *b)
  * bms_int_members - like bms_intersect, but left input is recycled
  */
 Bitmapset *
-bms_int_members(Bitmapset *a, const Bitmapset *b)
+bms_int_members(Bitmapset * a, const Bitmapset * b)
 {
    int         shortlen;
    int         i;
@@ -668,13 +654,9 @@ bms_int_members(Bitmapset *a, const Bitmapset *b)
    /* Intersect b into a; we need never copy */
    shortlen = Min(a->nwords, b->nwords);
    for (i = 0; i < shortlen; i++)
-   {
        a->words[i] &= b->words[i];
-   }
    for (; i < a->nwords; i++)
-   {
        a->words[i] = 0;
-   }
    return a;
 }
 
@@ -682,7 +664,7 @@ bms_int_members(Bitmapset *a, const Bitmapset *b)
  * bms_del_members - like bms_difference, but left input is recycled
  */
 Bitmapset *
-bms_del_members(Bitmapset *a, const Bitmapset *b)
+bms_del_members(Bitmapset * a, const Bitmapset * b)
 {
    int         shortlen;
    int         i;
@@ -695,9 +677,7 @@ bms_del_members(Bitmapset *a, const Bitmapset *b)
    /* Remove b's bits from a; we need never copy */
    shortlen = Min(a->nwords, b->nwords);
    for (i = 0; i < shortlen; i++)
-   {
-       a->words[i] &= ~ b->words[i];
-   }
+       a->words[i] &= ~b->words[i];
    return a;
 }
 
@@ -705,7 +685,7 @@ bms_del_members(Bitmapset *a, const Bitmapset *b)
  * bms_join - like bms_union, but *both* inputs are recycled
  */
 Bitmapset *
-bms_join(Bitmapset *a, Bitmapset *b)
+bms_join(Bitmapset * a, Bitmapset * b)
 {
    Bitmapset  *result;
    Bitmapset  *other;
@@ -731,9 +711,7 @@ bms_join(Bitmapset *a, Bitmapset *b)
    /* And union the shorter input into the result */
    otherlen = other->nwords;
    for (i = 0; i < otherlen; i++)
-   {
        result->words[i] |= other->words[i];
-   }
    if (other != result)        /* pure paranoia */
        pfree(other);
    return result;
@@ -742,24 +720,22 @@ bms_join(Bitmapset *a, Bitmapset *b)
 /*----------
  * bms_first_member - find and remove first member of a set
  *
- * Returns -1 if set is empty.  NB: set is destructively modified!
+ * Returns -1 if set is empty. NB: set is destructively modified!
  *
  * This is intended as support for iterating through the members of a set.
  * The typical pattern is
  *
  *         tmpset = bms_copy(inputset);
  *         while ((x = bms_first_member(tmpset)) >= 0)
- *         {
  *             process member x;
- *         }
  *         bms_free(tmpset);
  *----------
  */
 int
-bms_first_member(Bitmapset *a)
+bms_first_member(Bitmapset * a)
 {
-   int     nwords;
-   int     wordnum;
+   int         nwords;
+   int         wordnum;
 
    if (a == NULL)
        return -1;
@@ -770,10 +746,10 @@ bms_first_member(Bitmapset *a)
 
        if (w != 0)
        {
-           int     result;
+           int         result;
 
            w = RIGHTMOST_ONE(w);
-           a->words[wordnum] &= ~ w;
+           a->words[wordnum] &= ~w;
 
            result = wordnum * BITS_PER_BITMAPWORD;
            while ((w & 255) == 0)
index 6945e98d5d772fe0ee0c538597b09240877a6266..03349efdc740eb6ed44f07a4aa9fd90fefa2cf4f 100644 (file)
@@ -4,7 +4,7 @@
  *   Copy functions for Postgres tree nodes.
  *
  * NOTE: we currently support copying all node types found in parse and
- * plan trees.  We do not support copying executor state trees; there
+ * plan trees. We do not support copying executor state trees; there
  * is no need for that, and no point in maintaining all the code that
  * would be needed.  We also do not support copying Path trees, mainly
  * because the circular linkages between RelOptInfo and Path nodes can't
@@ -15,7 +15,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.260 2003/07/22 23:30:37 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.261 2003/08/04 00:43:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,7 +30,7 @@
 
 /*
  * Macros to simplify copying of different kinds of fields.  Use these
- * wherever possible to reduce the chance for silly typos.  Note that these
+ * wherever possible to reduce the chance for silly typos. Note that these
  * hard-wire the convention that the local variables in a Copy routine are
  * named 'newnode' and 'from'.
  */
@@ -639,7 +639,7 @@ _copyRangeVar(RangeVar *from)
 
 /*
  * We don't need a _copyExpr because Expr is an abstract supertype which
- * should never actually get instantiated.  Also, since it has no common
+ * should never actually get instantiated. Also, since it has no common
  * fields except NodeTag, there's no need for a helper routine to factor
  * out copying the common fields...
  */
@@ -755,9 +755,9 @@ _copyArrayRef(ArrayRef *from)
  * _copyFuncExpr
  */
 static FuncExpr *
-_copyFuncExpr(FuncExpr *from)
+_copyFuncExpr(FuncExpr * from)
 {
-   FuncExpr       *newnode = makeNode(FuncExpr);
+   FuncExpr   *newnode = makeNode(FuncExpr);
 
    COPY_SCALAR_FIELD(funcid);
    COPY_SCALAR_FIELD(funcresulttype);
@@ -772,7 +772,7 @@ _copyFuncExpr(FuncExpr *from)
  * _copyOpExpr
  */
 static OpExpr *
-_copyOpExpr(OpExpr *from)
+_copyOpExpr(OpExpr * from)
 {
    OpExpr     *newnode = makeNode(OpExpr);
 
@@ -789,9 +789,9 @@ _copyOpExpr(OpExpr *from)
  * _copyDistinctExpr (same as OpExpr)
  */
 static DistinctExpr *
-_copyDistinctExpr(DistinctExpr *from)
+_copyDistinctExpr(DistinctExpr * from)
 {
-   DistinctExpr       *newnode = makeNode(DistinctExpr);
+   DistinctExpr *newnode = makeNode(DistinctExpr);
 
    COPY_SCALAR_FIELD(opno);
    COPY_SCALAR_FIELD(opfuncid);
@@ -806,9 +806,9 @@ _copyDistinctExpr(DistinctExpr *from)
  * _copyScalarArrayOpExpr
  */
 static ScalarArrayOpExpr *
-_copyScalarArrayOpExpr(ScalarArrayOpExpr *from)
+_copyScalarArrayOpExpr(ScalarArrayOpExpr * from)
 {
-   ScalarArrayOpExpr      *newnode = makeNode(ScalarArrayOpExpr);
+   ScalarArrayOpExpr *newnode = makeNode(ScalarArrayOpExpr);
 
    COPY_SCALAR_FIELD(opno);
    COPY_SCALAR_FIELD(opfuncid);
@@ -822,9 +822,9 @@ _copyScalarArrayOpExpr(ScalarArrayOpExpr *from)
  * _copyBoolExpr
  */
 static BoolExpr *
-_copyBoolExpr(BoolExpr *from)
+_copyBoolExpr(BoolExpr * from)
 {
-   BoolExpr       *newnode = makeNode(BoolExpr);
+   BoolExpr   *newnode = makeNode(BoolExpr);
 
    COPY_SCALAR_FIELD(boolop);
    COPY_NODE_FIELD(args);
@@ -940,9 +940,9 @@ _copyCaseWhen(CaseWhen *from)
  * _copyArrayExpr
  */
 static ArrayExpr *
-_copyArrayExpr(ArrayExpr *from)
+_copyArrayExpr(ArrayExpr * from)
 {
-   ArrayExpr *newnode = makeNode(ArrayExpr);
+   ArrayExpr  *newnode = makeNode(ArrayExpr);
 
    COPY_SCALAR_FIELD(array_typeid);
    COPY_SCALAR_FIELD(element_typeid);
@@ -956,7 +956,7 @@ _copyArrayExpr(ArrayExpr *from)
  * _copyCoalesceExpr
  */
 static CoalesceExpr *
-_copyCoalesceExpr(CoalesceExpr *from)
+_copyCoalesceExpr(CoalesceExpr * from)
 {
    CoalesceExpr *newnode = makeNode(CoalesceExpr);
 
@@ -970,9 +970,9 @@ _copyCoalesceExpr(CoalesceExpr *from)
  * _copyNullIfExpr (same as OpExpr)
  */
 static NullIfExpr *
-_copyNullIfExpr(NullIfExpr *from)
+_copyNullIfExpr(NullIfExpr * from)
 {
-   NullIfExpr     *newnode = makeNode(NullIfExpr);
+   NullIfExpr *newnode = makeNode(NullIfExpr);
 
    COPY_SCALAR_FIELD(opno);
    COPY_SCALAR_FIELD(opfuncid);
@@ -1015,7 +1015,7 @@ _copyBooleanTest(BooleanTest *from)
  * _copyCoerceToDomain
  */
 static CoerceToDomain *
-_copyCoerceToDomain(CoerceToDomain *from)
+_copyCoerceToDomain(CoerceToDomain * from)
 {
    CoerceToDomain *newnode = makeNode(CoerceToDomain);
 
@@ -1031,7 +1031,7 @@ _copyCoerceToDomain(CoerceToDomain *from)
  * _copyCoerceToDomainValue
  */
 static CoerceToDomainValue *
-_copyCoerceToDomainValue(CoerceToDomainValue *from)
+_copyCoerceToDomainValue(CoerceToDomainValue * from)
 {
    CoerceToDomainValue *newnode = makeNode(CoerceToDomainValue);
 
@@ -1045,7 +1045,7 @@ _copyCoerceToDomainValue(CoerceToDomainValue *from)
  * _copySetToDefault
  */
 static SetToDefault *
-_copySetToDefault(SetToDefault *from)
+_copySetToDefault(SetToDefault * from)
 {
    SetToDefault *newnode = makeNode(SetToDefault);
 
@@ -1148,7 +1148,7 @@ _copyRestrictInfo(RestrictInfo *from)
 
    COPY_NODE_FIELD(clause);
    COPY_SCALAR_FIELD(ispusheddown);
-   COPY_NODE_FIELD(subclauseindices); /* XXX probably bad */
+   COPY_NODE_FIELD(subclauseindices);  /* XXX probably bad */
    COPY_SCALAR_FIELD(eval_cost);
    COPY_SCALAR_FIELD(this_selec);
    COPY_BITMAPSET_FIELD(left_relids);
@@ -1191,7 +1191,7 @@ _copyJoinInfo(JoinInfo *from)
  * _copyInClauseInfo
  */
 static InClauseInfo *
-_copyInClauseInfo(InClauseInfo *from)
+_copyInClauseInfo(InClauseInfo * from)
 {
    InClauseInfo *newnode = makeNode(InClauseInfo);
 
@@ -1532,9 +1532,9 @@ _copyQuery(Query *from)
 
    /*
     * We do not copy the other planner internal fields: base_rel_list,
-    * other_rel_list, join_rel_list, equi_key_list, query_pathkeys.
-    * That would get us into copying RelOptInfo/Path trees, which we don't
-    * want to do.  It is necessary to copy in_info_list and hasJoinRTEs
+    * other_rel_list, join_rel_list, equi_key_list, query_pathkeys. That
+    * would get us into copying RelOptInfo/Path trees, which we don't
+    * want to do.  It is necessary to copy in_info_list and hasJoinRTEs
     * for the benefit of inheritance_planner(), which may try to copy a
     * Query in which these are already set.
     */
@@ -1633,7 +1633,7 @@ _copyAlterTableStmt(AlterTableStmt *from)
 }
 
 static AlterDomainStmt *
-_copyAlterDomainStmt(AlterDomainStmt *from)
+_copyAlterDomainStmt(AlterDomainStmt * from)
 {
    AlterDomainStmt *newnode = makeNode(AlterDomainStmt);
 
@@ -1644,7 +1644,7 @@ _copyAlterDomainStmt(AlterDomainStmt *from)
    COPY_SCALAR_FIELD(behavior);
 
    return newnode;
-} 
+}
 
 static GrantStmt *
 _copyGrantStmt(GrantStmt *from)
@@ -1685,7 +1685,7 @@ _copyFuncWithArgs(FuncWithArgs *from)
 }
 
 static DeclareCursorStmt *
-_copyDeclareCursorStmt(DeclareCursorStmt *from)
+_copyDeclareCursorStmt(DeclareCursorStmt * from)
 {
    DeclareCursorStmt *newnode = makeNode(DeclareCursorStmt);
 
@@ -1747,7 +1747,7 @@ _copyCreateStmt(CreateStmt *from)
 }
 
 static InhRelation *
-_copyInhRelation(InhRelation *from)
+_copyInhRelation(InhRelation * from)
 {
    InhRelation *newnode = makeNode(InhRelation);
 
@@ -2118,7 +2118,7 @@ _copyCreateSeqStmt(CreateSeqStmt *from)
 }
 
 static AlterSeqStmt *
-_copyAlterSeqStmt(AlterSeqStmt *from)
+_copyAlterSeqStmt(AlterSeqStmt * from)
 {
    AlterSeqStmt *newnode = makeNode(AlterSeqStmt);
 
@@ -2171,7 +2171,7 @@ _copyCreateTrigStmt(CreateTrigStmt *from)
    COPY_NODE_FIELD(args);
    COPY_SCALAR_FIELD(before);
    COPY_SCALAR_FIELD(row);
-   strcpy(newnode->actions, from->actions); /* in-line string field */
+   strcpy(newnode->actions, from->actions);    /* in-line string field */
    COPY_SCALAR_FIELD(isconstraint);
    COPY_SCALAR_FIELD(deferrable);
    COPY_SCALAR_FIELD(initdeferred);
index 513c17b048c9dc9cb833f5491440fd9e37e40448..924793d07ec594ba5fe546b073e44dcb16a7a82a 100644 (file)
  * be handled easily in a simple depth-first traversal.
  *
  * Currently, in fact, equal() doesn't know how to compare Plan trees
- * either.  This might need to be fixed someday.
+ * either. This might need to be fixed someday.
  *
  *
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.204 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.205 2003/08/04 00:43:19 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -32,8 +32,8 @@
 
 
 /*
- * Macros to simplify comparison of different kinds of fields.  Use these
- * wherever possible to reduce the chance for silly typos.  Note that these
+ * Macros to simplify comparison of different kinds of fields. Use these
+ * wherever possible to reduce the chance for silly typos. Note that these
  * hard-wire the convention that the local variables in an Equal routine are
  * named 'a' and 'b'.
  */
@@ -135,7 +135,7 @@ _equalRangeVar(RangeVar *a, RangeVar *b)
 
 /*
  * We don't need an _equalExpr because Expr is an abstract supertype which
- * should never actually get instantiated.  Also, since it has no common
+ * should never actually get instantiated. Also, since it has no common
  * fields except NodeTag, there's no need for a helper routine to factor
  * out comparing the common fields...
  */
@@ -224,11 +224,12 @@ _equalArrayRef(ArrayRef *a, ArrayRef *b)
 }
 
 static bool
-_equalFuncExpr(FuncExpr *a, FuncExpr *b)
+_equalFuncExpr(FuncExpr * a, FuncExpr * b)
 {
    COMPARE_SCALAR_FIELD(funcid);
    COMPARE_SCALAR_FIELD(funcresulttype);
    COMPARE_SCALAR_FIELD(funcretset);
+
    /*
     * Special-case COERCE_DONTCARE, so that pathkeys can build coercion
     * nodes that are equal() to both explicit and implicit coercions.
@@ -244,14 +245,15 @@ _equalFuncExpr(FuncExpr *a, FuncExpr *b)
 }
 
 static bool
-_equalOpExpr(OpExpr *a, OpExpr *b)
+_equalOpExpr(OpExpr * a, OpExpr * b)
 {
    COMPARE_SCALAR_FIELD(opno);
+
    /*
-    * Special-case opfuncid: it is allowable for it to differ if one
-    * node contains zero and the other doesn't.  This just means that the
-    * one node isn't as far along in the parse/plan pipeline and hasn't
-    * had the opfuncid cache filled yet.
+    * Special-case opfuncid: it is allowable for it to differ if one node
+    * contains zero and the other doesn't.  This just means that the one
+    * node isn't as far along in the parse/plan pipeline and hasn't had
+    * the opfuncid cache filled yet.
     */
    if (a->opfuncid != b->opfuncid &&
        a->opfuncid != 0 &&
@@ -266,14 +268,15 @@ _equalOpExpr(OpExpr *a, OpExpr *b)
 }
 
 static bool
-_equalDistinctExpr(DistinctExpr *a, DistinctExpr *b)
+_equalDistinctExpr(DistinctExpr * a, DistinctExpr * b)
 {
    COMPARE_SCALAR_FIELD(opno);
+
    /*
-    * Special-case opfuncid: it is allowable for it to differ if one
-    * node contains zero and the other doesn't.  This just means that the
-    * one node isn't as far along in the parse/plan pipeline and hasn't
-    * had the opfuncid cache filled yet.
+    * Special-case opfuncid: it is allowable for it to differ if one node
+    * contains zero and the other doesn't.  This just means that the one
+    * node isn't as far along in the parse/plan pipeline and hasn't had
+    * the opfuncid cache filled yet.
     */
    if (a->opfuncid != b->opfuncid &&
        a->opfuncid != 0 &&
@@ -288,14 +291,15 @@ _equalDistinctExpr(DistinctExpr *a, DistinctExpr *b)
 }
 
 static bool
-_equalScalarArrayOpExpr(ScalarArrayOpExpr *a, ScalarArrayOpExpr *b)
+_equalScalarArrayOpExpr(ScalarArrayOpExpr * a, ScalarArrayOpExpr * b)
 {
    COMPARE_SCALAR_FIELD(opno);
+
    /*
-    * Special-case opfuncid: it is allowable for it to differ if one
-    * node contains zero and the other doesn't.  This just means that the
-    * one node isn't as far along in the parse/plan pipeline and hasn't
-    * had the opfuncid cache filled yet.
+    * Special-case opfuncid: it is allowable for it to differ if one node
+    * contains zero and the other doesn't.  This just means that the one
+    * node isn't as far along in the parse/plan pipeline and hasn't had
+    * the opfuncid cache filled yet.
     */
    if (a->opfuncid != b->opfuncid &&
        a->opfuncid != 0 &&
@@ -309,7 +313,7 @@ _equalScalarArrayOpExpr(ScalarArrayOpExpr *a, ScalarArrayOpExpr *b)
 }
 
 static bool
-_equalBoolExpr(BoolExpr *a, BoolExpr *b)
+_equalBoolExpr(BoolExpr * a, BoolExpr * b)
 {
    COMPARE_SCALAR_FIELD(boolop);
    COMPARE_NODE_FIELD(args);
@@ -366,6 +370,7 @@ _equalRelabelType(RelabelType *a, RelabelType *b)
    COMPARE_NODE_FIELD(arg);
    COMPARE_SCALAR_FIELD(resulttype);
    COMPARE_SCALAR_FIELD(resulttypmod);
+
    /*
     * Special-case COERCE_DONTCARE, so that pathkeys can build coercion
     * nodes that are equal() to both explicit and implicit coercions.
@@ -399,7 +404,7 @@ _equalCaseWhen(CaseWhen *a, CaseWhen *b)
 }
 
 static bool
-_equalArrayExpr(ArrayExpr *a, ArrayExpr *b)
+_equalArrayExpr(ArrayExpr * a, ArrayExpr * b)
 {
    COMPARE_SCALAR_FIELD(array_typeid);
    COMPARE_SCALAR_FIELD(element_typeid);
@@ -410,7 +415,7 @@ _equalArrayExpr(ArrayExpr *a, ArrayExpr *b)
 }
 
 static bool
-_equalCoalesceExpr(CoalesceExpr *a, CoalesceExpr *b)
+_equalCoalesceExpr(CoalesceExpr * a, CoalesceExpr * b)
 {
    COMPARE_SCALAR_FIELD(coalescetype);
    COMPARE_NODE_FIELD(args);
@@ -419,14 +424,15 @@ _equalCoalesceExpr(CoalesceExpr *a, CoalesceExpr *b)
 }
 
 static bool
-_equalNullIfExpr(NullIfExpr *a, NullIfExpr *b)
+_equalNullIfExpr(NullIfExpr * a, NullIfExpr * b)
 {
    COMPARE_SCALAR_FIELD(opno);
+
    /*
-    * Special-case opfuncid: it is allowable for it to differ if one
-    * node contains zero and the other doesn't.  This just means that the
-    * one node isn't as far along in the parse/plan pipeline and hasn't
-    * had the opfuncid cache filled yet.
+    * Special-case opfuncid: it is allowable for it to differ if one node
+    * contains zero and the other doesn't.  This just means that the one
+    * node isn't as far along in the parse/plan pipeline and hasn't had
+    * the opfuncid cache filled yet.
     */
    if (a->opfuncid != b->opfuncid &&
        a->opfuncid != 0 &&
@@ -459,11 +465,12 @@ _equalBooleanTest(BooleanTest *a, BooleanTest *b)
 }
 
 static bool
-_equalCoerceToDomain(CoerceToDomain *a, CoerceToDomain *b)
+_equalCoerceToDomain(CoerceToDomain * a, CoerceToDomain * b)
 {
    COMPARE_NODE_FIELD(arg);
    COMPARE_SCALAR_FIELD(resulttype);
    COMPARE_SCALAR_FIELD(resulttypmod);
+
    /*
     * Special-case COERCE_DONTCARE, so that pathkeys can build coercion
     * nodes that are equal() to both explicit and implicit coercions.
@@ -477,7 +484,7 @@ _equalCoerceToDomain(CoerceToDomain *a, CoerceToDomain *b)
 }
 
 static bool
-_equalCoerceToDomainValue(CoerceToDomainValue *a, CoerceToDomainValue *b)
+_equalCoerceToDomainValue(CoerceToDomainValue * a, CoerceToDomainValue * b)
 {
    COMPARE_SCALAR_FIELD(typeId);
    COMPARE_SCALAR_FIELD(typeMod);
@@ -486,7 +493,7 @@ _equalCoerceToDomainValue(CoerceToDomainValue *a, CoerceToDomainValue *b)
 }
 
 static bool
-_equalSetToDefault(SetToDefault *a, SetToDefault *b)
+_equalSetToDefault(SetToDefault * a, SetToDefault * b)
 {
    COMPARE_SCALAR_FIELD(typeId);
    COMPARE_SCALAR_FIELD(typeMod);
@@ -554,11 +561,13 @@ _equalRestrictInfo(RestrictInfo *a, RestrictInfo *b)
 {
    COMPARE_NODE_FIELD(clause);
    COMPARE_SCALAR_FIELD(ispusheddown);
+
    /*
-    * We ignore subclauseindices, eval_cost, this_selec, left/right_relids,
-    * left/right_pathkey, and left/right_bucketsize, since they may not be
-    * set yet, and should be derivable from the clause anyway.  Probably it's
-    * not really necessary to compare any of these remaining fields ...
+    * We ignore subclauseindices, eval_cost, this_selec,
+    * left/right_relids, left/right_pathkey, and left/right_bucketsize,
+    * since they may not be set yet, and should be derivable from the
+    * clause anyway.  Probably it's not really necessary to compare any
+    * of these remaining fields ...
     */
    COMPARE_SCALAR_FIELD(mergejoinoperator);
    COMPARE_SCALAR_FIELD(left_sortop);
@@ -578,7 +587,7 @@ _equalJoinInfo(JoinInfo *a, JoinInfo *b)
 }
 
 static bool
-_equalInClauseInfo(InClauseInfo *a, InClauseInfo *b)
+_equalInClauseInfo(InClauseInfo * a, InClauseInfo * b)
 {
    COMPARE_BITMAPSET_FIELD(lefthand);
    COMPARE_BITMAPSET_FIELD(righthand);
@@ -620,9 +629,9 @@ _equalQuery(Query *a, Query *b)
 
    /*
     * We do not check the other planner internal fields: base_rel_list,
-    * other_rel_list, join_rel_list, equi_key_list, query_pathkeys.
-    * They might not be set yet, and in any case they should be derivable
-    * from the other fields.
+    * other_rel_list, join_rel_list, equi_key_list, query_pathkeys. They
+    * might not be set yet, and in any case they should be derivable from
+    * the other fields.
     */
    return true;
 }
@@ -706,7 +715,7 @@ _equalAlterTableStmt(AlterTableStmt *a, AlterTableStmt *b)
 }
 
 static bool
-_equalAlterDomainStmt(AlterDomainStmt *a, AlterDomainStmt *b)
+_equalAlterDomainStmt(AlterDomainStmt * a, AlterDomainStmt * b)
 {
    COMPARE_SCALAR_FIELD(subtype);
    COMPARE_NODE_FIELD(typename);
@@ -750,7 +759,7 @@ _equalFuncWithArgs(FuncWithArgs *a, FuncWithArgs *b)
 }
 
 static bool
-_equalDeclareCursorStmt(DeclareCursorStmt *a, DeclareCursorStmt *b)
+_equalDeclareCursorStmt(DeclareCursorStmt * a, DeclareCursorStmt * b)
 {
    COMPARE_STRING_FIELD(portalname);
    COMPARE_SCALAR_FIELD(options);
@@ -802,7 +811,7 @@ _equalCreateStmt(CreateStmt *a, CreateStmt *b)
 }
 
 static bool
-_equalInhRelation(InhRelation *a, InhRelation *b)
+_equalInhRelation(InhRelation * a, InhRelation * b)
 {
    COMPARE_NODE_FIELD(relation);
    COMPARE_SCALAR_FIELD(including_defaults);
@@ -1113,7 +1122,7 @@ _equalCreateSeqStmt(CreateSeqStmt *a, CreateSeqStmt *b)
 }
 
 static bool
-_equalAlterSeqStmt(AlterSeqStmt *a, AlterSeqStmt *b)
+_equalAlterSeqStmt(AlterSeqStmt * a, AlterSeqStmt * b)
 {
    COMPARE_NODE_FIELD(sequence);
    COMPARE_NODE_FIELD(options);
@@ -1156,7 +1165,7 @@ _equalCreateTrigStmt(CreateTrigStmt *a, CreateTrigStmt *b)
    COMPARE_NODE_FIELD(args);
    COMPARE_SCALAR_FIELD(before);
    COMPARE_SCALAR_FIELD(row);
-   if (strcmp(a->actions, b->actions) != 0) /* in-line string field */
+   if (strcmp(a->actions, b->actions) != 0)    /* in-line string field */
        return false;
    COMPARE_SCALAR_FIELD(isconstraint);
    COMPARE_SCALAR_FIELD(deferrable);
@@ -1400,7 +1409,7 @@ _equalParamRef(ParamRef *a, ParamRef *b)
 static bool
 _equalAConst(A_Const *a, A_Const *b)
 {
-   if (!equal(&a->val, &b->val)) /* hack for in-line Value field */
+   if (!equal(&a->val, &b->val))       /* hack for in-line Value field */
        return false;
    COMPARE_NODE_FIELD(typename);
 
@@ -1649,9 +1658,9 @@ equal(void *a, void *b)
 
    switch (nodeTag(a))
    {
-       /*
-        * PRIMITIVE NODES
-        */
+           /*
+            * PRIMITIVE NODES
+            */
        case T_Resdom:
            retval = _equalResdom(a, b);
            break;
@@ -1841,7 +1850,7 @@ equal(void *a, void *b)
            retval = _equalCreateStmt(a, b);
            break;
        case T_InhRelation:
-           retval = _equalInhRelation(a,b);
+           retval = _equalInhRelation(a, b);
            break;
        case T_DefineStmt:
            retval = _equalDefineStmt(a, b);
index b0f6821b8c40784edf4a7a2dfdb01c31c4dd9c7e..354134caeaf169b360820aadaee265736c493150 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.51 2003/07/22 23:30:37 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.52 2003/08/04 00:43:19 momjian Exp $
  *
  * NOTES
  *   XXX a few of the following functions are duplicated to handle
@@ -202,7 +202,7 @@ nconc(List *l1, List *l2)
  * since we avoid having to chase down the list again each time.
  */
 void
-FastAppend(FastList *fl, void *datum)
+FastAppend(FastList * fl, void *datum)
 {
    List       *cell = makeList1(datum);
 
@@ -223,7 +223,7 @@ FastAppend(FastList *fl, void *datum)
  * FastAppendi - same for integers
  */
 void
-FastAppendi(FastList *fl, int datum)
+FastAppendi(FastList * fl, int datum)
 {
    List       *cell = makeListi1(datum);
 
@@ -244,7 +244,7 @@ FastAppendi(FastList *fl, int datum)
  * FastAppendo - same for Oids
  */
 void
-FastAppendo(FastList *fl, Oid datum)
+FastAppendo(FastList * fl, Oid datum)
 {
    List       *cell = makeListo1(datum);
 
@@ -267,14 +267,12 @@ FastAppendo(FastList *fl, Oid datum)
  * Note that the cells of the second argument are absorbed into the FastList.
  */
 void
-FastConc(FastList *fl, List *cells)
+FastConc(FastList * fl, List *cells)
 {
    if (cells == NIL)
        return;                 /* nothing to do */
    if (fl->tail)
-   {
        lnext(fl->tail) = cells;
-   }
    else
    {
        /* First cell of list */
@@ -292,14 +290,12 @@ FastConc(FastList *fl, List *cells)
  * Note that the cells of the second argument are absorbed into the first.
  */
 void
-FastConcFast(FastList *fl, FastList *fl2)
+FastConcFast(FastList * fl, FastList * fl2)
 {
    if (fl2->head == NIL)
        return;                 /* nothing to do */
    if (fl->tail)
-   {
        lnext(fl->tail) = fl2->head;
-   }
    else
    {
        /* First cell of list */
@@ -319,9 +315,7 @@ nth(int n, List *l)
 {
    /* XXX assume list is long enough */
    while (n-- > 0)
-   {
        l = lnext(l);
-   }
    return lfirst(l);
 }
 
@@ -781,4 +775,5 @@ lreverse(List *l)
        result = lcons(lfirst(i), result);
    return result;
 }
+
 #endif
index f71bd020ce93a1f3937f7a5acfe4bda87954bbf9..4a4e0c98f5790ad1c5806a5d1d1a815b6066dd42 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/nodes.c,v 1.19 2002/12/16 16:22:46 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/nodes.c,v 1.20 2003/08/04 00:43:19 momjian Exp $
  *
  * HISTORY
  *   Andrew Yu         Oct 20, 1994    file creation
@@ -24,4 +24,4 @@
  * Support for newNode() macro
  */
 
-Node *newNodeMacroHolder;
+Node      *newNodeMacroHolder;
index fba5955379359a2334e8836fe3f987fd67e1504b..9247bb00d2a0e37e7cabc0f3cb2e31d86160dfb2 100644 (file)
@@ -8,12 +8,12 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.214 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.215 2003/08/04 00:43:19 momjian Exp $
  *
  * NOTES
  *   Every node type that can appear in stored rules' parsetrees *must*
  *   have an output function defined here (as well as an input function
- *   in readfuncs.c).  For use in debugging, we also provide output
+ *   in readfuncs.c).  For use in debugging, we also provide output
  *   functions for nodes that appear in raw parsetrees, path, and plan trees.
  *   These nodes however need not have input functions.
  *
@@ -31,8 +31,8 @@
 
 
 /*
- * Macros to simplify output of different kinds of fields.  Use these
- * wherever possible to reduce the chance for silly typos.  Note that these
+ * Macros to simplify output of different kinds of fields. Use these
+ * wherever possible to reduce the chance for silly typos. Note that these
  * hard-wire conventions about the names of the local variables in an Out
  * routine.
  */
@@ -184,7 +184,7 @@ _outOidList(StringInfo str, List *list)
  * an integer List would be.
  */
 static void
-_outBitmapset(StringInfo str, Bitmapset *bms)
+_outBitmapset(StringInfo str, Bitmapset * bms)
 {
    Bitmapset  *tmpset;
    int         x;
@@ -192,9 +192,7 @@ _outBitmapset(StringInfo str, Bitmapset *bms)
    appendStringInfoChar(str, '(');
    tmpset = bms_copy(bms);
    while ((x = bms_first_member(tmpset)) >= 0)
-   {
        appendStringInfo(str, " %d", x);
-   }
    bms_free(tmpset);
    appendStringInfoChar(str, ')');
 }
@@ -633,7 +631,7 @@ _outArrayRef(StringInfo str, ArrayRef *node)
 }
 
 static void
-_outFuncExpr(StringInfo str, FuncExpr *node)
+_outFuncExpr(StringInfo str, FuncExpr * node)
 {
    WRITE_NODE_TYPE("FUNCEXPR");
 
@@ -645,7 +643,7 @@ _outFuncExpr(StringInfo str, FuncExpr *node)
 }
 
 static void
-_outOpExpr(StringInfo str, OpExpr *node)
+_outOpExpr(StringInfo str, OpExpr * node)
 {
    WRITE_NODE_TYPE("OPEXPR");
 
@@ -657,7 +655,7 @@ _outOpExpr(StringInfo str, OpExpr *node)
 }
 
 static void
-_outDistinctExpr(StringInfo str, DistinctExpr *node)
+_outDistinctExpr(StringInfo str, DistinctExpr * node)
 {
    WRITE_NODE_TYPE("DISTINCTEXPR");
 
@@ -669,7 +667,7 @@ _outDistinctExpr(StringInfo str, DistinctExpr *node)
 }
 
 static void
-_outScalarArrayOpExpr(StringInfo str, ScalarArrayOpExpr *node)
+_outScalarArrayOpExpr(StringInfo str, ScalarArrayOpExpr * node)
 {
    WRITE_NODE_TYPE("SCALARARRAYOPEXPR");
 
@@ -680,7 +678,7 @@ _outScalarArrayOpExpr(StringInfo str, ScalarArrayOpExpr *node)
 }
 
 static void
-_outBoolExpr(StringInfo str, BoolExpr *node)
+_outBoolExpr(StringInfo str, BoolExpr * node)
 {
    char       *opstr = NULL;
 
@@ -780,7 +778,7 @@ _outCaseWhen(StringInfo str, CaseWhen *node)
 }
 
 static void
-_outArrayExpr(StringInfo str, ArrayExpr *node)
+_outArrayExpr(StringInfo str, ArrayExpr * node)
 {
    WRITE_NODE_TYPE("ARRAY");
 
@@ -791,7 +789,7 @@ _outArrayExpr(StringInfo str, ArrayExpr *node)
 }
 
 static void
-_outCoalesceExpr(StringInfo str, CoalesceExpr *node)
+_outCoalesceExpr(StringInfo str, CoalesceExpr * node)
 {
    WRITE_NODE_TYPE("COALESCE");
 
@@ -800,7 +798,7 @@ _outCoalesceExpr(StringInfo str, CoalesceExpr *node)
 }
 
 static void
-_outNullIfExpr(StringInfo str, NullIfExpr *node)
+_outNullIfExpr(StringInfo str, NullIfExpr * node)
 {
    WRITE_NODE_TYPE("NULLIFEXPR");
 
@@ -830,7 +828,7 @@ _outBooleanTest(StringInfo str, BooleanTest *node)
 }
 
 static void
-_outCoerceToDomain(StringInfo str, CoerceToDomain *node)
+_outCoerceToDomain(StringInfo str, CoerceToDomain * node)
 {
    WRITE_NODE_TYPE("COERCETODOMAIN");
 
@@ -841,7 +839,7 @@ _outCoerceToDomain(StringInfo str, CoerceToDomain *node)
 }
 
 static void
-_outCoerceToDomainValue(StringInfo str, CoerceToDomainValue *node)
+_outCoerceToDomainValue(StringInfo str, CoerceToDomainValue * node)
 {
    WRITE_NODE_TYPE("COERCETODOMAINVALUE");
 
@@ -850,7 +848,7 @@ _outCoerceToDomainValue(StringInfo str, CoerceToDomainValue *node)
 }
 
 static void
-_outSetToDefault(StringInfo str, SetToDefault *node)
+_outSetToDefault(StringInfo str, SetToDefault * node)
 {
    WRITE_NODE_TYPE("SETTODEFAULT");
 
@@ -979,7 +977,7 @@ _outAppendPath(StringInfo str, AppendPath *node)
 }
 
 static void
-_outResultPath(StringInfo str, ResultPath *node)
+_outResultPath(StringInfo str, ResultPath * node)
 {
    WRITE_NODE_TYPE("RESULTPATH");
 
@@ -990,7 +988,7 @@ _outResultPath(StringInfo str, ResultPath *node)
 }
 
 static void
-_outMaterialPath(StringInfo str, MaterialPath *node)
+_outMaterialPath(StringInfo str, MaterialPath * node)
 {
    WRITE_NODE_TYPE("MATERIALPATH");
 
@@ -1000,7 +998,7 @@ _outMaterialPath(StringInfo str, MaterialPath *node)
 }
 
 static void
-_outUniquePath(StringInfo str, UniquePath *node)
+_outUniquePath(StringInfo str, UniquePath * node)
 {
    WRITE_NODE_TYPE("UNIQUEPATH");
 
@@ -1079,7 +1077,7 @@ _outJoinInfo(StringInfo str, JoinInfo *node)
 }
 
 static void
-_outInClauseInfo(StringInfo str, InClauseInfo *node)
+_outInClauseInfo(StringInfo str, InClauseInfo * node)
 {
    WRITE_NODE_TYPE("INCLAUSEINFO");
 
@@ -1132,7 +1130,7 @@ _outNotifyStmt(StringInfo str, NotifyStmt *node)
 }
 
 static void
-_outDeclareCursorStmt(StringInfo str, DeclareCursorStmt *node)
+_outDeclareCursorStmt(StringInfo str, DeclareCursorStmt * node)
 {
    WRITE_NODE_TYPE("DECLARECURSOR");
 
@@ -1820,9 +1818,11 @@ _outNode(StringInfo str, void *obj)
                break;
 
            default:
+
                /*
                 * This should be an ERROR, but it's too useful to be able
-                * to dump structures that _outNode only understands part of.
+                * to dump structures that _outNode only understands part
+                * of.
                 */
                elog(WARNING, "could not dump unrecognized node type: %d",
                     (int) nodeTag(obj));
index abc3a1b0105c64f7f5ccd90da2382cb373bc3ab8..32af1d92923f08734b28076a80d13764aced7103 100644 (file)
@@ -8,11 +8,11 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.159 2003/07/22 23:30:38 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.160 2003/08/04 00:43:19 momjian Exp $
  *
  * NOTES
  *   Path and Plan nodes do not have any readfuncs support, because we
- *   never have occasion to read them in.  (There was once code here that
+ *   never have occasion to read them in.  (There was once code here that
  *   claimed to read them, but it was broken as well as unused.)  We
  *   never read executor state trees, either.
  *
@@ -28,7 +28,7 @@
 
 /*
  * Macros to simplify reading of different kinds of fields.  Use these
- * wherever possible to reduce the chance for silly typos.  Note that these
+ * wherever possible to reduce the chance for silly typos. Note that these
  * hard-wire conventions about the names of the local variables in a Read
  * routine.
  */
@@ -466,13 +466,14 @@ _readOpExpr(void)
 
    READ_OID_FIELD(opno);
    READ_OID_FIELD(opfuncid);
+
    /*
-    * The opfuncid is stored in the textual format primarily for debugging
-    * and documentation reasons.  We want to always read it as zero to force
-    * it to be re-looked-up in the pg_operator entry.  This ensures that
-    * stored rules don't have hidden dependencies on operators' functions.
-    * (We don't currently support an ALTER OPERATOR command, but might
-    * someday.)
+    * The opfuncid is stored in the textual format primarily for
+    * debugging and documentation reasons.  We want to always read it as
+    * zero to force it to be re-looked-up in the pg_operator entry.  This
+    * ensures that stored rules don't have hidden dependencies on
+    * operators' functions. (We don't currently support an ALTER OPERATOR
+    * command, but might someday.)
     */
    local_node->opfuncid = InvalidOid;
 
@@ -493,13 +494,14 @@ _readDistinctExpr(void)
 
    READ_OID_FIELD(opno);
    READ_OID_FIELD(opfuncid);
+
    /*
-    * The opfuncid is stored in the textual format primarily for debugging
-    * and documentation reasons.  We want to always read it as zero to force
-    * it to be re-looked-up in the pg_operator entry.  This ensures that
-    * stored rules don't have hidden dependencies on operators' functions.
-    * (We don't currently support an ALTER OPERATOR command, but might
-    * someday.)
+    * The opfuncid is stored in the textual format primarily for
+    * debugging and documentation reasons.  We want to always read it as
+    * zero to force it to be re-looked-up in the pg_operator entry.  This
+    * ensures that stored rules don't have hidden dependencies on
+    * operators' functions. (We don't currently support an ALTER OPERATOR
+    * command, but might someday.)
     */
    local_node->opfuncid = InvalidOid;
 
@@ -520,13 +522,14 @@ _readScalarArrayOpExpr(void)
 
    READ_OID_FIELD(opno);
    READ_OID_FIELD(opfuncid);
+
    /*
-    * The opfuncid is stored in the textual format primarily for debugging
-    * and documentation reasons.  We want to always read it as zero to force
-    * it to be re-looked-up in the pg_operator entry.  This ensures that
-    * stored rules don't have hidden dependencies on operators' functions.
-    * (We don't currently support an ALTER OPERATOR command, but might
-    * someday.)
+    * The opfuncid is stored in the textual format primarily for
+    * debugging and documentation reasons.  We want to always read it as
+    * zero to force it to be re-looked-up in the pg_operator entry.  This
+    * ensures that stored rules don't have hidden dependencies on
+    * operators' functions. (We don't currently support an ALTER OPERATOR
+    * command, but might someday.)
     */
    local_node->opfuncid = InvalidOid;
 
@@ -685,13 +688,14 @@ _readNullIfExpr(void)
 
    READ_OID_FIELD(opno);
    READ_OID_FIELD(opfuncid);
+
    /*
-    * The opfuncid is stored in the textual format primarily for debugging
-    * and documentation reasons.  We want to always read it as zero to force
-    * it to be re-looked-up in the pg_operator entry.  This ensures that
-    * stored rules don't have hidden dependencies on operators' functions.
-    * (We don't currently support an ALTER OPERATOR command, but might
-    * someday.)
+    * The opfuncid is stored in the textual format primarily for
+    * debugging and documentation reasons.  We want to always read it as
+    * zero to force it to be re-looked-up in the pg_operator entry.  This
+    * ensures that stored rules don't have hidden dependencies on
+    * operators' functions. (We don't currently support an ALTER OPERATOR
+    * command, but might someday.)
     */
    local_node->opfuncid = InvalidOid;
 
@@ -955,6 +959,7 @@ Node *
 parseNodeString(void)
 {
    void       *return_value;
+
    READ_TEMP_LOCALS();
 
    token = pg_strtok(&length);
index ee06560ca2393b47586e037429fc9ac0f9065966..b1ff994f061ed49a1ba6937cc3b5fb462e9b388a 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_eval.c,v 1.63 2003/07/25 00:01:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_eval.c,v 1.64 2003/08/04 00:43:19 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -48,9 +48,9 @@ geqo_eval(Query *root, List *initial_rels, Gene *tour, int num_gene)
    /*
     * Because gimme_tree considers both left- and right-sided trees,
     * there is no difference between a tour (a,b,c,d,...) and a tour
-    * (b,a,c,d,...) --- the same join orders will be considered.
-    * To avoid redundant cost calculations, we simply reject tours where
-    * tour[0] > tour[1], assigning them an artificially bad fitness.
+    * (b,a,c,d,...) --- the same join orders will be considered. To avoid
+    * redundant cost calculations, we simply reject tours where tour[0] >
+    * tour[1], assigning them an artificially bad fitness.
     *
     * (It would be better to tweak the GEQO logic to not generate such tours
     * in the first place, but I'm not sure of all the implications in the
@@ -65,8 +65,8 @@ geqo_eval(Query *root, List *initial_rels, Gene *tour, int num_gene)
     *
     * Since geqo_eval() will be called many times, we can't afford to let
     * all that memory go unreclaimed until end of statement.  Note we
-    * make the temp context a child of the planner's normal context, so that
-    * it will be freed even if we abort via ereport(ERROR).
+    * make the temp context a child of the planner's normal context, so
+    * that it will be freed even if we abort via ereport(ERROR).
     */
    mycontext = AllocSetContextCreate(CurrentMemoryContext,
                                      "GEQO",
@@ -76,9 +76,9 @@ geqo_eval(Query *root, List *initial_rels, Gene *tour, int num_gene)
    oldcxt = MemoryContextSwitchTo(mycontext);
 
    /*
-    * preserve root->join_rel_list, which gimme_tree changes; without this,
-    * it'll be pointing at recycled storage after the MemoryContextDelete
-    * below.
+    * preserve root->join_rel_list, which gimme_tree changes; without
+    * this, it'll be pointing at recycled storage after the
+    * MemoryContextDelete below.
     */
    savelist = root->join_rel_list;
 
@@ -151,9 +151,10 @@ gimme_tree(Query *root, List *initial_rels,
 
        /*
         * Construct a RelOptInfo representing the previous joinrel joined
-        * to inner_rel.  These are always inner joins.  Note that we expect
-        * the joinrel not to exist in root->join_rel_list yet, and so the
-        * paths constructed for it will only include the ones we want.
+        * to inner_rel.  These are always inner joins.  Note that we
+        * expect the joinrel not to exist in root->join_rel_list yet, and
+        * so the paths constructed for it will only include the ones we
+        * want.
         */
        new_rel = make_join_rel(root, joinrel, inner_rel, JOIN_INNER);
 
index f60fd7d46671aee6e2ef929f88445790259baa4d..c91f16fd0e4b55bebe6479d46cc15d7dcfa1422e 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_main.c,v 1.36 2003/07/25 00:01:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_main.c,v 1.37 2003/08/04 00:43:19 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -229,8 +229,8 @@ geqo(Query *root, int number_of_rels, List *initial_rels)
 
 
    /*
-    * got the cheapest query tree processed by geqo;
-    * first element of the population indicates the best query tree
+    * got the cheapest query tree processed by geqo; first element of the
+    * population indicates the best query tree
     */
    best_tour = (Gene *) pool->data[0].string;
 
index acc9285d005424d6ae271feac12198f55e23e047..329e19c401614a4e49a69befcae473fa31d8c981 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_misc.c,v 1.37 2003/07/25 00:01:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/geqo/geqo_misc.c,v 1.38 2003/08/04 00:43:19 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,7 +42,7 @@ avg_pool(Pool *pool)
 
    /*
     * Since the pool may contain multiple occurrences of DBL_MAX, divide
-    * by pool->size before summing, not after, to avoid overflow.  This
+    * by pool->size before summing, not after, to avoid overflow.  This
     * loses a little in speed and accuracy, but this routine is only used
     * for debug printouts, so we don't care that much.
     */
index 486dede0fb9680e8a08a89bbdef5cab0057c2a05..494f624d4cd917e9fb975ae9d52320259ad3024d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.104 2003/07/25 00:01:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.105 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -50,13 +50,13 @@ static void set_function_pathlist(Query *root, RelOptInfo *rel,
 static RelOptInfo *make_one_rel_by_joins(Query *root, int levels_needed,
                      List *initial_rels);
 static bool subquery_is_pushdown_safe(Query *subquery, Query *topquery,
-                                     bool *differentTypes);
+                         bool *differentTypes);
 static bool recurse_pushdown_safe(Node *setOp, Query *topquery,
-                                 bool *differentTypes);
+                     bool *differentTypes);
 static void compare_tlist_datatypes(List *tlist, List *colTypes,
-                                   bool *differentTypes);
+                       bool *differentTypes);
 static bool qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual,
-                                 bool *differentTypes);
+                     bool *differentTypes);
 static void subquery_push_qual(Query *subquery, Index rti, Node *qual);
 static void recurse_push_qual(Node *setOp, Query *topquery,
                  Index rti, Node *qual);
@@ -290,14 +290,14 @@ set_inherited_rel_pathlist(Query *root, RelOptInfo *rel,
        rel->rows += childrel->rows;
        if (childrel->width > rel->width)
            rel->width = childrel->width;
-       
+
        childvars = FastListValue(&childrel->reltargetlist);
        foreach(parentvars, FastListValue(&rel->reltargetlist))
        {
-           Var    *parentvar = (Var *) lfirst(parentvars);
-           Var    *childvar = (Var *) lfirst(childvars);
-           int     parentndx = parentvar->varattno - rel->min_attr;
-           int     childndx = childvar->varattno - childrel->min_attr;
+           Var        *parentvar = (Var *) lfirst(parentvars);
+           Var        *childvar = (Var *) lfirst(childvars);
+           int         parentndx = parentvar->varattno - rel->min_attr;
+           int         childndx = childvar->varattno - childrel->min_attr;
 
            if (childrel->attr_widths[childndx] > rel->attr_widths[parentndx])
                rel->attr_widths[parentndx] = childrel->attr_widths[childndx];
@@ -343,8 +343,8 @@ set_subquery_pathlist(Query *root, RelOptInfo *rel,
     *
     * There are several cases where we cannot push down clauses.
     * Restrictions involving the subquery are checked by
-    * subquery_is_pushdown_safe().  Restrictions on individual clauses are
-    * checked by qual_is_pushdown_safe().
+    * subquery_is_pushdown_safe().  Restrictions on individual clauses
+    * are checked by qual_is_pushdown_safe().
     *
     * Non-pushed-down clauses will get evaluated as qpquals of the
     * SubqueryScan node.
@@ -725,15 +725,16 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual,
    vars = pull_var_clause(qual, false);
    foreach(vl, vars)
    {
-       Var    *var = (Var *) lfirst(vl);
+       Var        *var = (Var *) lfirst(vl);
        List       *tl;
        TargetEntry *tle = NULL;
 
        Assert(var->varno == rti);
+
        /*
         * We use a bitmapset to avoid testing the same attno more than
-        * once.  (NB: this only works because subquery outputs can't
-        * have negative attnos.)
+        * once.  (NB: this only works because subquery outputs can't have
+        * negative attnos.)
         */
        if (bms_is_member(var->varattno, tested))
            continue;
index e1754a7a694075af23a47fc38cff63d22c9f2f7f..1a0e2da82fdce42343203c01e5ca2afac9f8d9a9 100644 (file)
@@ -49,7 +49,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.111 2003/07/25 00:01:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/costsize.c,v 1.112 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -102,10 +102,10 @@ bool      enable_hashjoin = true;
 
 
 static Selectivity estimate_hash_bucketsize(Query *root, Var *var,
-                                           int nbuckets);
-static bool cost_qual_eval_walker(Node *node, QualCost *total);
+                        int nbuckets);
+static bool cost_qual_eval_walker(Node *node, QualCost * total);
 static Selectivity approx_selectivity(Query *root, List *quals,
-                                     JoinType jointype);
+                  JoinType jointype);
 static void set_rel_width(Query *root, RelOptInfo *rel);
 static double relation_byte_size(double tuples, int width);
 static double page_size(double tuples, int width);
@@ -358,13 +358,13 @@ cost_index(Path *path, Query *root,
     * Normally the indexquals will be removed from the list of restriction
     * clauses that we have to evaluate as qpquals, so we should subtract
     * their costs from baserestrictcost.  But if we are doing a join then
-    * some of the indexquals are join clauses and shouldn't be subtracted.
-    * Rather than work out exactly how much to subtract, we don't subtract
-    * anything.
+    * some of the indexquals are join clauses and shouldn't be
+    * subtracted. Rather than work out exactly how much to subtract, we
+    * don't subtract anything.
     *
     * XXX For a lossy index, not all the quals will be removed and so we
-    * really shouldn't subtract their costs; but detecting that seems more
-    * expensive than it's worth.
+    * really shouldn't subtract their costs; but detecting that seems
+    * more expensive than it's worth.
     */
    startup_cost += baserel->baserestrictcost.startup;
    cpu_per_tuple = cpu_tuple_cost + baserel->baserestrictcost.per_tuple;
@@ -433,8 +433,8 @@ cost_subqueryscan(Path *path, RelOptInfo *baserel)
    /*
     * Cost of path is cost of evaluating the subplan, plus cost of
     * evaluating any restriction clauses that will be attached to the
-    * SubqueryScan node, plus cpu_tuple_cost to account for selection
-    * and projection overhead.
+    * SubqueryScan node, plus cpu_tuple_cost to account for selection and
+    * projection overhead.
     */
    path->startup_cost = baserel->subplan->startup_cost;
    path->total_cost = baserel->subplan->total_cost;
@@ -597,8 +597,9 @@ cost_material(Path *path,
    }
 
    /*
-    * Also charge a small amount per extracted tuple.  We use cpu_tuple_cost
-    * so that it doesn't appear worthwhile to materialize a bare seqscan.
+    * Also charge a small amount per extracted tuple.  We use
+    * cpu_tuple_cost so that it doesn't appear worthwhile to materialize
+    * a bare seqscan.
     */
    run_cost += cpu_tuple_cost * tuples;
 
@@ -631,17 +632,17 @@ cost_agg(Path *path, Query *root,
     * additional cpu_operator_cost per grouping column per input tuple
     * for grouping comparisons.
     *
-    * We will produce a single output tuple if not grouping,
-    * and a tuple per group otherwise.
+    * We will produce a single output tuple if not grouping, and a tuple per
+    * group otherwise.
     *
     * Note: in this cost model, AGG_SORTED and AGG_HASHED have exactly the
-    * same total CPU cost, but AGG_SORTED has lower startup cost.  If the
+    * same total CPU cost, but AGG_SORTED has lower startup cost.  If the
     * input path is already sorted appropriately, AGG_SORTED should be
-    * preferred (since it has no risk of memory overflow).  This will happen
-    * as long as the computed total costs are indeed exactly equal --- but
-    * if there's roundoff error we might do the wrong thing.  So be sure
-    * that the computations below form the same intermediate values in the
-    * same order.
+    * preferred (since it has no risk of memory overflow).  This will
+    * happen as long as the computed total costs are indeed exactly equal
+    * --- but if there's roundoff error we might do the wrong thing.  So
+    * be sure that the computations below form the same intermediate
+    * values in the same order.
     */
    if (aggstrategy == AGG_PLAIN)
    {
@@ -724,26 +725,26 @@ cost_nestloop(NestPath *path, Query *root)
    double      outer_path_rows = PATH_ROWS(outer_path);
    double      inner_path_rows = PATH_ROWS(inner_path);
    double      ntuples;
-   Selectivity joininfactor;
+   Selectivity joininfactor;
 
    if (!enable_nestloop)
        startup_cost += disable_cost;
 
    /*
-    * If we're doing JOIN_IN then we will stop scanning inner tuples for an
-    * outer tuple as soon as we have one match.  Account for the effects of
-    * this by scaling down the cost estimates in proportion to the expected
-    * output size.  (This assumes that all the quals attached to the join are
-    * IN quals, which should be true.)
+    * If we're doing JOIN_IN then we will stop scanning inner tuples for
+    * an outer tuple as soon as we have one match.  Account for the
+    * effects of this by scaling down the cost estimates in proportion to
+    * the expected output size.  (This assumes that all the quals
+    * attached to the join are IN quals, which should be true.)
     *
     * Note: it's probably bogus to use the normal selectivity calculation
     * here when either the outer or inner path is a UniquePath.
     */
    if (path->jointype == JOIN_IN)
    {
-       Selectivity qual_selec = approx_selectivity(root, restrictlist,
+       Selectivity qual_selec = approx_selectivity(root, restrictlist,
                                                    path->jointype);
-       double  qptuples;
+       double      qptuples;
 
        qptuples = ceil(qual_selec * outer_path_rows * inner_path_rows);
        if (qptuples > path->path.parent->rows)
@@ -761,8 +762,8 @@ cost_nestloop(NestPath *path, Query *root)
     * before we can start returning tuples, so the join's startup cost is
     * their sum.  What's not so clear is whether the inner path's
     * startup_cost must be paid again on each rescan of the inner path.
-    * This is not true if the inner path is materialized or is a hashjoin,
-    * but probably is true otherwise.
+    * This is not true if the inner path is materialized or is a
+    * hashjoin, but probably is true otherwise.
     */
    startup_cost += outer_path->startup_cost + inner_path->startup_cost;
    run_cost += outer_path->total_cost - outer_path->startup_cost;
@@ -783,14 +784,15 @@ cost_nestloop(NestPath *path, Query *root)
        (inner_path->total_cost - inner_path->startup_cost) * joininfactor;
 
    /*
-    * Compute number of tuples processed (not number emitted!).
-    * If inner path is an indexscan, be sure to use its estimated output row
-    * count, which may be lower than the restriction-clause-only row count of
-    * its parent.  (We don't include this case in the PATH_ROWS macro because
-    * it applies *only* to a nestloop's inner relation.)  Note: it is correct
-    * to use the unadjusted inner_path_rows in the above calculation for
-    * joininfactor, since otherwise we'd be double-counting the selectivity
-    * of the join clause being used for the index.
+    * Compute number of tuples processed (not number emitted!). If inner
+    * path is an indexscan, be sure to use its estimated output row
+    * count, which may be lower than the restriction-clause-only row
+    * count of its parent.  (We don't include this case in the PATH_ROWS
+    * macro because it applies *only* to a nestloop's inner relation.)
+    * Note: it is correct to use the unadjusted inner_path_rows in the
+    * above calculation for joininfactor, since otherwise we'd be
+    * double-counting the selectivity of the join clause being used for
+    * the index.
     */
    if (IsA(inner_path, IndexPath))
        inner_path_rows = ((IndexPath *) inner_path)->rows;
@@ -831,8 +833,8 @@ cost_mergejoin(MergePath *path, Query *root)
    Cost        startup_cost = 0;
    Cost        run_cost = 0;
    Cost        cpu_per_tuple;
-   Selectivity merge_selec;
-   Selectivity qp_selec;
+   Selectivity merge_selec;
+   Selectivity qp_selec;
    QualCost    merge_qual_cost;
    QualCost    qp_qual_cost;
    RestrictInfo *firstclause;
@@ -847,7 +849,7 @@ cost_mergejoin(MergePath *path, Query *root)
    double      rescanratio;
    Selectivity outerscansel,
                innerscansel;
-   Selectivity joininfactor;
+   Selectivity joininfactor;
    Path        sort_path;      /* dummy for result of cost_sort */
 
    if (!enable_mergejoin)
@@ -856,7 +858,8 @@ cost_mergejoin(MergePath *path, Query *root)
    /*
     * Compute cost and selectivity of the mergequals and qpquals (other
     * restriction clauses) separately.  We use approx_selectivity here
-    * for speed --- in most cases, any errors won't affect the result much.
+    * for speed --- in most cases, any errors won't affect the result
+    * much.
     *
     * Note: it's probably bogus to use the normal selectivity calculation
     * here when either the outer or inner path is a UniquePath.
@@ -876,29 +879,30 @@ cost_mergejoin(MergePath *path, Query *root)
    qptuples = ceil(mergejointuples * qp_selec);
 
    /*
-    * When there are equal merge keys in the outer relation, the mergejoin
-    * must rescan any matching tuples in the inner relation.  This means
-    * re-fetching inner tuples.  Our cost model for this is that a re-fetch
-    * costs the same as an original fetch, which is probably an overestimate;
-    * but on the other hand we ignore the bookkeeping costs of mark/restore.
-    * Not clear if it's worth developing a more refined model.
+    * When there are equal merge keys in the outer relation, the
+    * mergejoin must rescan any matching tuples in the inner relation.
+    * This means re-fetching inner tuples.  Our cost model for this is
+    * that a re-fetch costs the same as an original fetch, which is
+    * probably an overestimate; but on the other hand we ignore the
+    * bookkeeping costs of mark/restore. Not clear if it's worth
+    * developing a more refined model.
     *
     * The number of re-fetches can be 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
+    * 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
     *
-    *  size of join = m1 * n1 + m2 * n2 + ...
+    * size of join = m1 * n1 + m2 * n2 + ...
     *
-    *  number of rescanned tuples = (m1 - 1) * n1 + (m2 - 1) * n2 + ...
-    *      = m1 * n1 + m2 * n2 + ... - (n1 + n2 + ...)
-    *      = size of join - size of inner relation
+    * number of rescanned tuples = (m1 - 1) * n1 + (m2 - 1) * n2 + ... = m1 *
+    * n1 + m2 * n2 + ... - (n1 + n2 + ...) = size of join - size of inner
+    * relation
     *
     * This equation works correctly for outer tuples having no inner match
     * (nk = 0), but not for inner tuples having no outer match (mk = 0);
     * we are effectively subtracting those from the number of rescanned
-    * tuples, when we should not.  Can we do better without expensive
+    * tuples, when we should not.  Can we do better without expensive
     * selectivity computations?
     */
    if (IsA(outer_path, UniquePath))
@@ -953,8 +957,9 @@ cost_mergejoin(MergePath *path, Query *root)
 
    /*
     * Readjust scan selectivities to account for above rounding.  This is
-    * normally an insignificant effect, but when there are only a few rows
-    * in the inputs, failing to do this makes for a large percentage error.
+    * normally an insignificant effect, but when there are only a few
+    * rows in the inputs, failing to do this makes for a large percentage
+    * error.
     */
    outerscansel = outer_rows / outer_path_rows;
    innerscansel = inner_rows / inner_path_rows;
@@ -1002,11 +1007,11 @@ cost_mergejoin(MergePath *path, Query *root)
    /* CPU costs */
 
    /*
-    * If we're doing JOIN_IN then we will stop outputting inner
-    * tuples for an outer tuple as soon as we have one match.  Account for
-    * the effects of this by scaling down the cost estimates in proportion
-    * to the expected output size.  (This assumes that all the quals attached
-    * to the join are IN quals, which should be true.)
+    * If we're doing JOIN_IN then we will stop outputting inner tuples
+    * for an outer tuple as soon as we have one match.  Account for the
+    * effects of this by scaling down the cost estimates in proportion to
+    * the expected output size.  (This assumes that all the quals
+    * attached to the join are IN quals, which should be true.)
     */
    if (path->jpath.jointype == JOIN_IN &&
        qptuples > path->jpath.path.parent->rows)
@@ -1017,9 +1022,9 @@ cost_mergejoin(MergePath *path, Query *root)
    /*
     * The number of tuple comparisons needed is approximately number of
     * outer rows plus number of inner rows plus number of rescanned
-    * tuples (can we refine this?).  At each one, we need to evaluate
-    * the mergejoin quals.  NOTE: JOIN_IN mode does not save any work
-    * here, so do NOT include joininfactor.
+    * tuples (can we refine this?).  At each one, we need to evaluate the
+    * mergejoin quals.  NOTE: JOIN_IN mode does not save any work here,
+    * so do NOT include joininfactor.
     */
    startup_cost += merge_qual_cost.startup;
    run_cost += merge_qual_cost.per_tuple *
@@ -1028,7 +1033,7 @@ cost_mergejoin(MergePath *path, Query *root)
    /*
     * For each tuple that gets through the mergejoin proper, we charge
     * cpu_tuple_cost plus the cost of evaluating additional restriction
-    * clauses that are to be applied at the join.  (This is pessimistic
+    * clauses that are to be applied at the join.  (This is pessimistic
     * since not all of the quals may get evaluated at each tuple.)  This
     * work is skipped in JOIN_IN mode, so apply the factor.
     */
@@ -1059,8 +1064,8 @@ cost_hashjoin(HashPath *path, Query *root)
    Cost        startup_cost = 0;
    Cost        run_cost = 0;
    Cost        cpu_per_tuple;
-   Selectivity hash_selec;
-   Selectivity qp_selec;
+   Selectivity hash_selec;
+   Selectivity qp_selec;
    QualCost    hash_qual_cost;
    QualCost    qp_qual_cost;
    double      hashjointuples;
@@ -1076,7 +1081,7 @@ cost_hashjoin(HashPath *path, Query *root)
    int         physicalbuckets;
    int         numbatches;
    Selectivity innerbucketsize;
-   Selectivity joininfactor;
+   Selectivity joininfactor;
    List       *hcl;
    List       *qpquals;
 
@@ -1086,7 +1091,8 @@ cost_hashjoin(HashPath *path, Query *root)
    /*
     * Compute cost and selectivity of the hashquals and qpquals (other
     * restriction clauses) separately.  We use approx_selectivity here
-    * for speed --- in most cases, any errors won't affect the result much.
+    * for speed --- in most cases, any errors won't affect the result
+    * much.
     *
     * Note: it's probably bogus to use the normal selectivity calculation
     * here when either the outer or inner path is a UniquePath.
@@ -1114,9 +1120,9 @@ cost_hashjoin(HashPath *path, Query *root)
     * Cost of computing hash function: must do it once per input tuple.
     * We charge one cpu_operator_cost for each column's hash function.
     *
-    * XXX when a hashclause is more complex than a single operator,
-    * we really should charge the extra eval costs of the left or right
-    * side, as appropriate, here.  This seems more work than it's worth
+    * XXX when a hashclause is more complex than a single operator, we
+    * really should charge the extra eval costs of the left or right
+    * side, as appropriate, here.  This seems more work than it's worth
     * at the moment.
     */
    startup_cost += cpu_operator_cost * num_hashclauses * inner_path_rows;
@@ -1131,13 +1137,13 @@ cost_hashjoin(HashPath *path, Query *root)
 
    /*
     * Determine bucketsize fraction for inner relation.  We use the
-    * smallest bucketsize estimated for any individual hashclause;
-    * this is undoubtedly conservative.
+    * smallest bucketsize estimated for any individual hashclause; this
+    * is undoubtedly conservative.
     *
-    * BUT: if inner relation has been unique-ified, we can assume it's
-    * good for hashing.  This is important both because it's the right
-    * answer, and because we avoid contaminating the cache with a value
-    * that's wrong for non-unique-ified paths.
+    * BUT: if inner relation has been unique-ified, we can assume it's good
+    * for hashing.  This is important both because it's the right answer,
+    * and because we avoid contaminating the cache with a value that's
+    * wrong for non-unique-ified paths.
     */
    if (IsA(inner_path, UniquePath))
        innerbucketsize = 1.0 / virtualbuckets;
@@ -1152,12 +1158,13 @@ cost_hashjoin(HashPath *path, Query *root)
            Assert(IsA(restrictinfo, RestrictInfo));
 
            /*
-            * First we have to figure out which side of the hashjoin clause
-            * is the inner side.
+            * First we have to figure out which side of the hashjoin
+            * clause is the inner side.
             *
             * Since we tend to visit the same clauses over and over when
-            * planning a large query, we cache the bucketsize estimate in the
-            * RestrictInfo node to avoid repeated lookups of statistics.
+            * planning a large query, we cache the bucketsize estimate in
+            * the RestrictInfo node to avoid repeated lookups of
+            * statistics.
             */
            if (bms_is_subset(restrictinfo->right_relids,
                              inner_path->parent->relids))
@@ -1169,7 +1176,7 @@ cost_hashjoin(HashPath *path, Query *root)
                    /* not cached yet */
                    thisbucketsize =
                        estimate_hash_bucketsize(root,
-                                   (Var *) get_rightop(restrictinfo->clause),
+                              (Var *) get_rightop(restrictinfo->clause),
                                                 virtualbuckets);
                    restrictinfo->right_bucketsize = thisbucketsize;
                }
@@ -1185,7 +1192,7 @@ cost_hashjoin(HashPath *path, Query *root)
                    /* not cached yet */
                    thisbucketsize =
                        estimate_hash_bucketsize(root,
-                                   (Var *) get_leftop(restrictinfo->clause),
+                               (Var *) get_leftop(restrictinfo->clause),
                                                 virtualbuckets);
                    restrictinfo->left_bucketsize = thisbucketsize;
                }
@@ -1217,11 +1224,11 @@ cost_hashjoin(HashPath *path, Query *root)
    /* CPU costs */
 
    /*
-    * If we're doing JOIN_IN then we will stop comparing inner
-    * tuples to an outer tuple as soon as we have one match.  Account for
-    * the effects of this by scaling down the cost estimates in proportion
-    * to the expected output size.  (This assumes that all the quals attached
-    * to the join are IN quals, which should be true.)
+    * If we're doing JOIN_IN then we will stop comparing inner tuples to
+    * an outer tuple as soon as we have one match.  Account for the
+    * effects of this by scaling down the cost estimates in proportion to
+    * the expected output size.  (This assumes that all the quals
+    * attached to the join are IN quals, which should be true.)
     */
    if (path->jpath.jointype == JOIN_IN &&
        qptuples > path->jpath.path.parent->rows)
@@ -1243,7 +1250,7 @@ cost_hashjoin(HashPath *path, Query *root)
    /*
     * For each tuple that gets through the hashjoin proper, we charge
     * cpu_tuple_cost plus the cost of evaluating additional restriction
-    * clauses that are to be applied at the join.  (This is pessimistic
+    * clauses that are to be applied at the join.  (This is pessimistic
     * since not all of the quals may get evaluated at each tuple.)
     */
    startup_cost += qp_qual_cost.startup;
@@ -1254,14 +1261,14 @@ cost_hashjoin(HashPath *path, Query *root)
     * Bias against putting larger relation on inside.  We don't want an
     * absolute prohibition, though, since larger relation might have
     * better bucketsize --- and we can't trust the size estimates
-    * unreservedly, anyway.  Instead, inflate the run cost by the
-    * square root of the size ratio.  (Why square root?  No real good
-    * reason, but it seems reasonable...)
+    * unreservedly, anyway.  Instead, inflate the run cost by the square
+    * root of the size ratio.  (Why square root?  No real good reason,
+    * but it seems reasonable...)
     *
-    * Note: before 7.4 we implemented this by inflating startup cost;
-    * but if there's a disable_cost component in the input paths'
-    * startup cost, that unfairly penalizes the hash.  Probably it'd
-    * be better to keep track of disable penalty separately from cost.
+    * Note: before 7.4 we implemented this by inflating startup cost; but if
+    * there's a disable_cost component in the input paths' startup cost,
+    * that unfairly penalizes the hash.  Probably it'd be better to keep
+    * track of disable penalty separately from cost.
     */
    if (innerbytes > outerbytes && outerbytes > 0)
        run_cost *= sqrt(innerbytes / outerbytes);
@@ -1442,7 +1449,7 @@ estimate_hash_bucketsize(Query *root, Var *var, int nbuckets)
  *     and a per-evaluation component.
  */
 void
-cost_qual_eval(QualCost *cost, List *quals)
+cost_qual_eval(QualCost * cost, List *quals)
 {
    List       *l;
 
@@ -1484,7 +1491,7 @@ cost_qual_eval(QualCost *cost, List *quals)
 }
 
 static bool
-cost_qual_eval_walker(Node *node, QualCost *total)
+cost_qual_eval_walker(Node *node, QualCost * total)
 {
    if (node == NULL)
        return false;
@@ -1502,9 +1509,7 @@ cost_qual_eval_walker(Node *node, QualCost *total)
        IsA(node, OpExpr) ||
        IsA(node, DistinctExpr) ||
        IsA(node, NullIfExpr))
-   {
        total->per_tuple += cpu_operator_cost;
-   }
    else if (IsA(node, ScalarArrayOpExpr))
    {
        /* should charge more than 1 op cost, but how many? */
@@ -1519,47 +1524,48 @@ cost_qual_eval_walker(Node *node, QualCost *total)
    {
        /*
         * A subplan node in an expression typically indicates that the
-        * subplan will be executed on each evaluation, so charge accordingly.
-        * (Sub-selects that can be executed as InitPlans have already been
-        * removed from the expression.)
+        * subplan will be executed on each evaluation, so charge
+        * accordingly. (Sub-selects that can be executed as InitPlans
+        * have already been removed from the expression.)
         *
         * An exception occurs when we have decided we can implement the
         * subplan by hashing.
         *
         */
-       SubPlan    *subplan = (SubPlan *) node;
+       SubPlan    *subplan = (SubPlan *) node;
        Plan       *plan = subplan->plan;
 
        if (subplan->useHashTable)
        {
            /*
             * If we are using a hash table for the subquery outputs, then
-            * the cost of evaluating the query is a one-time cost.
-            * We charge one cpu_operator_cost per tuple for the work of
+            * the cost of evaluating the query is a one-time cost. We
+            * charge one cpu_operator_cost per tuple for the work of
             * loading the hashtable, too.
             */
            total->startup += plan->total_cost +
                cpu_operator_cost * plan->plan_rows;
+
            /*
             * The per-tuple costs include the cost of evaluating the
-            * lefthand expressions, plus the cost of probing the hashtable.
-            * Recursion into the exprs list will handle the lefthand
-            * expressions properly, and will count 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.
+            * lefthand expressions, plus the cost of probing the
+            * hashtable. Recursion into the exprs list will handle the
+            * lefthand expressions properly, and will count 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 actually need to scan.  NOTE: this logic should
-            * agree with the estimates used by make_subplan() in
+            * evaluation.  We need to estimate how much of the output we
+            * will actually need to scan.  NOTE: this logic should agree
+            * with the estimates used by make_subplan() in
             * plan/subselect.c.
             */
-           Cost    plan_run_cost = plan->total_cost - plan->startup_cost;
+           Cost        plan_run_cost = plan->total_cost - plan->startup_cost;
 
            if (subplan->subLinkType == EXISTS_SUBLINK)
            {
@@ -1579,23 +1585,20 @@ cost_qual_eval_walker(Node *node, QualCost *total)
                /* assume we need all tuples */
                total->per_tuple += plan_run_cost;
            }
+
            /*
-            * Also account for subplan's startup cost.
-            * If the subplan is uncorrelated or undirect correlated,
-            * AND its topmost node is a Sort or Material node, assume
-            * that we'll only need to pay its startup cost once;
-            * otherwise assume we pay the startup cost every time.
+            * Also account for subplan's startup cost. If the subplan is
+            * uncorrelated or undirect correlated, AND its topmost node
+            * is a Sort or Material node, assume that we'll only need to
+            * pay its startup cost once; otherwise assume we pay the
+            * startup cost every time.
             */
            if (subplan->parParam == NIL &&
                (IsA(plan, Sort) ||
                 IsA(plan, Material)))
-           {
                total->startup += plan->startup_cost;
-           }
            else
-           {
                total->per_tuple += plan->startup_cost;
-           }
        }
    }
 
@@ -1745,7 +1748,7 @@ set_joinrel_size_estimates(Query *root, RelOptInfo *rel,
    UniquePath *upath;
 
    /*
-    * Compute joinclause selectivity.  Note that we are only considering
+    * Compute joinclause selectivity.  Note that we are only considering
     * clauses that become restriction clauses at this join level; we are
     * not double-counting them because they were not considered in
     * estimating the sizes of the component rels.
@@ -1758,8 +1761,8 @@ set_joinrel_size_estimates(Query *root, RelOptInfo *rel,
    /*
     * Basically, we multiply size of Cartesian product by selectivity.
     *
-    * If we are doing an outer join, take that into account: the output
-    * must be at least as large as the non-nullable input.  (Is there any
+    * If we are doing an outer join, take that into account: the output must
+    * be at least as large as the non-nullable input.  (Is there any
     * chance of being even smarter?)
     *
     * For JOIN_IN and variants, the Cartesian product is figured with
@@ -1823,8 +1826,8 @@ set_joinrel_size_estimates(Query *root, RelOptInfo *rel,
    rel->rows = temp;
 
    /*
-    * We need not compute the output width here, because build_joinrel_tlist
-    * already did.
+    * We need not compute the output width here, because
+    * build_joinrel_tlist already did.
     */
 }
 
@@ -1911,11 +1914,14 @@ set_rel_width(Query *root, RelOptInfo *rel)
 
        Assert(IsA(var, Var));
 
-       /* 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)
        {
-               tuple_width += rel->attr_widths[ndx];
-               continue;
+           tuple_width += rel->attr_widths[ndx];
+           continue;
        }
 
        relid = getrelid(var->varno, root->rtable);
@@ -1931,8 +1937,8 @@ set_rel_width(Query *root, RelOptInfo *rel)
        }
 
        /*
-        * Not a plain relation, or can't find statistics for it.
-        * Estimate using just the type info.
+        * Not a plain relation, or can't find statistics for it. Estimate
+        * using just the type info.
         */
        item_width = get_typavgwidth(var->vartype, var->vartypmod);
        Assert(item_width > 0);
index fa19abe4717a4c7e4012d5575aa2142f4232caa4..67238b5361cccae8b0ea727333a89e3373ab6520 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.145 2003/07/25 00:01:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.146 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -64,9 +64,9 @@ static List *group_clauses_by_indexkey_for_join(Query *root,
                                   Relids outer_relids,
                                   JoinType jointype, bool isouterjoin);
 static bool match_clause_to_indexcol(RelOptInfo *rel, IndexOptInfo *index,
-                                    int indexcol, Oid opclass, Expr *clause);
-static bool match_join_clause_to_indexcol(RelOptInfo *rel, IndexOptInfo *index,
                         int indexcol, Oid opclass, Expr *clause);
+static bool match_join_clause_to_indexcol(RelOptInfo *rel, IndexOptInfo *index,
+                             int indexcol, Oid opclass, Expr *clause);
 static Oid indexable_operator(Expr *clause, Oid opclass,
                   bool indexkey_on_left);
 static bool pred_test(List *predicate_list, List *restrictinfo_list,
@@ -77,8 +77,8 @@ static bool pred_test_recurse_pred(Expr *predicate, Node *clause);
 static bool pred_test_simple_clause(Expr *predicate, Node *clause);
 static Relids indexable_outerrelids(RelOptInfo *rel, IndexOptInfo *index);
 static Path *make_innerjoin_index_path(Query *root,
-                                      RelOptInfo *rel, IndexOptInfo *index,
-                                      List *clausegroups);
+                         RelOptInfo *rel, IndexOptInfo *index,
+                         List *clausegroups);
 static bool match_index_to_operand(Node *operand, int indexcol,
                       RelOptInfo *rel, IndexOptInfo *index);
 static bool match_special_index_operator(Expr *clause, Oid opclass,
@@ -87,7 +87,7 @@ static List *expand_indexqual_condition(Expr *clause, Oid opclass);
 static List *prefix_quals(Node *leftop, Oid opclass,
             Const *prefix, Pattern_Prefix_Status pstatus);
 static List *network_prefix_quals(Node *leftop, Oid expr_op, Oid opclass,
-                                 Datum rightop);
+                    Datum rightop);
 static Datum string_to_datum(const char *str, Oid datatype);
 static Const *string_to_const(const char *str, Oid datatype);
 
@@ -114,7 +114,7 @@ static Const *string_to_const(const char *str, Oid datatype);
  * scan this routine deems potentially interesting for the current query.
  *
  * We also determine the set of other relids that participate in join
- * clauses that could be used with each index.  The actually best innerjoin
+ * clauses that could be used with each index. The actually best innerjoin
  * path will be generated for each outer relation later on, but knowing the
  * set of potential otherrels allows us to identify equivalent outer relations
  * and avoid repeated computation.
@@ -219,10 +219,11 @@ create_index_paths(Query *root, RelOptInfo *rel)
 
        /*
         * 6. Examine join clauses to see which ones are potentially
-        * usable with this index, and generate the set of all other relids
-        * that participate in such join clauses.  We'll use this set later
-        * to recognize outer rels that are equivalent for joining purposes.
-        * We compute both per-index and overall-for-relation sets.
+        * usable with this index, and generate the set of all other
+        * relids that participate in such join clauses.  We'll use this
+        * set later to recognize outer rels that are equivalent for
+        * joining purposes. We compute both per-index and
+        * overall-for-relation sets.
         */
        join_outerrelids = indexable_outerrelids(rel, index);
        index->outer_relids = join_outerrelids;
@@ -274,7 +275,7 @@ match_index_orclauses(RelOptInfo *rel,
             */
            restrictinfo->subclauseindices =
                match_index_orclause(rel, index,
-                                    ((BoolExpr *) restrictinfo->clause)->args,
+                              ((BoolExpr *) restrictinfo->clause)->args,
                                     restrictinfo->subclauseindices);
        }
    }
@@ -422,6 +423,7 @@ extract_or_indexqual_conditions(RelOptInfo *rel,
    Oid        *classes = index->classlist;
 
    FastListInit(&quals);
+
    /*
     * Extract relevant indexclauses in indexkey order.  This is
     * essentially just like group_clauses_by_indexkey() except that the
@@ -576,7 +578,7 @@ group_clauses_by_indexkey(RelOptInfo *rel, IndexOptInfo *index)
  *
  * This is much like group_clauses_by_indexkey(), but we consider both
  * join and restriction clauses.  Any joinclause that uses only otherrels
- * in the specified outer_relids is fair game.  But there must be at least
+ * in the specified outer_relids is fair game. But there must be at least
  * one such joinclause in the final list, otherwise we return NIL indicating
  * that this index isn't interesting as an inner indexscan.  (A scan using
  * only restriction clauses shouldn't be created here, because a regular Path
@@ -641,10 +643,10 @@ group_clauses_by_indexkey_for_join(Query *root,
         */
        if (FastListValue(&clausegroup) != NIL)
        {
-           List *nl;
+           List       *nl;
 
            nl = remove_redundant_join_clauses(root,
-                                              FastListValue(&clausegroup),
+                                            FastListValue(&clausegroup),
                                               jointype);
            FastListFromList(&clausegroup, nl);
        }
@@ -736,9 +738,9 @@ match_clause_to_indexcol(RelOptInfo *rel,
        return false;
 
    /*
-    * Check for clauses of the form:
-    *      (indexkey operator constant) or (constant operator indexkey).
-    * Anything that is a "pseudo constant" expression will do.
+    * Check for clauses of the form: (indexkey operator constant) or
+    * (constant operator indexkey). Anything that is a "pseudo constant"
+    * expression will do.
     */
    if (match_index_to_operand(leftop, indexcol, rel, index) &&
        is_pseudo_constant_clause(rightop))
@@ -747,8 +749,8 @@ match_clause_to_indexcol(RelOptInfo *rel,
            return true;
 
        /*
-        * If we didn't find a member of the index's opclass, see
-        * whether it is a "special" indexable operator.
+        * If we didn't find a member of the index's opclass, see whether
+        * it is a "special" indexable operator.
         */
        if (match_special_index_operator(clause, opclass, true))
            return true;
@@ -762,8 +764,8 @@ match_clause_to_indexcol(RelOptInfo *rel,
            return true;
 
        /*
-        * If we didn't find a member of the index's opclass, see
-        * whether it is a "special" indexable operator.
+        * If we didn't find a member of the index's opclass, see whether
+        * it is a "special" indexable operator.
         */
        if (match_special_index_operator(clause, opclass, false))
            return true;
@@ -824,10 +826,10 @@ match_join_clause_to_indexcol(RelOptInfo *rel,
        return false;
 
    /*
-    * Check for an indexqual that could be handled by a nestloop
-    * join. We need the index key to be compared against an
-    * expression that uses none of the indexed relation's vars and
-    * contains no volatile functions.
+    * Check for an indexqual that could be handled by a nestloop join. We
+    * need the index key to be compared against an expression that uses
+    * none of the indexed relation's vars and contains no volatile
+    * functions.
     */
    if (match_index_to_operand(leftop, indexcol, rel, index))
    {
@@ -1174,10 +1176,11 @@ pred_test_simple_clause(Expr *predicate, Node *clause)
     * 1. Find "btree" strategy numbers for the pred_op and clause_op.
     *
     * We must find a btree opclass that contains both operators, else the
-    * implication can't be determined.  If there are multiple such opclasses,
-    * assume we can use any one to determine the logical relationship of the
-    * two operators and the correct corresponding test operator.  This should
-    * work for any logically consistent opclasses.
+    * implication can't be determined.  If there are multiple such
+    * opclasses, assume we can use any one to determine the logical
+    * relationship of the two operators and the correct corresponding
+    * test operator.  This should work for any logically consistent
+    * opclasses.
     */
    catlist = SearchSysCacheList(AMOPOPID, 1,
                                 ObjectIdGetDatum(pred_op),
@@ -1269,7 +1272,7 @@ pred_test_simple_clause(Expr *predicate, Node *clause)
 
    /* And execute it. */
    test_result = ExecEvalExprSwitchContext(test_exprstate,
-                                           GetPerTupleExprContext(estate),
+                                         GetPerTupleExprContext(estate),
                                            &isNull, NULL);
 
    /* Get back to outer memory context */
@@ -1295,7 +1298,7 @@ pred_test_simple_clause(Expr *predicate, Node *clause)
 /*
  * indexable_outerrelids
  *   Finds all other relids that participate in any indexable join clause
- *   for the specified index.  Returns a set of relids.
+ *   for the specified index.  Returns a set of relids.
  *
  * 'rel' is the relation for which 'index' is defined
  */
@@ -1314,16 +1317,16 @@ indexable_outerrelids(RelOptInfo *rel, IndexOptInfo *index)
        /*
         * Examine each joinclause in the JoinInfo node's list to see if
         * it matches any key of the index.  If so, add the JoinInfo's
-        * otherrels to the result.  We can skip examining other joinclauses
-        * in the same list as soon as we find a match (since by definition
-        * they all have the same otherrels).
+        * otherrels to the result.  We can skip examining other
+        * joinclauses in the same list as soon as we find a match (since
+        * by definition they all have the same otherrels).
         */
        foreach(j, joininfo->jinfo_restrictinfo)
        {
            RestrictInfo *rinfo = (RestrictInfo *) lfirst(j);
-           Expr   *clause = rinfo->clause;
-           int     indexcol = 0;
-           Oid    *classes = index->classlist;
+           Expr       *clause = rinfo->clause;
+           int         indexcol = 0;
+           Oid        *classes = index->classlist;
 
            do
            {
@@ -1398,11 +1401,13 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
        default:
            return NULL;
    }
+
    /*
     * If there are no indexable joinclauses for this rel, exit quickly.
     */
    if (bms_is_empty(rel->index_outer_relids))
        return NULL;
+
    /*
     * Otherwise, we have to do path selection in the memory context of
     * the given rel, so that any created path can be safely attached to
@@ -1410,10 +1415,11 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
     * issue for normal planning, but it is an issue for GEQO planning.)
     */
    oldcontext = MemoryContextSwitchTo(GetMemoryChunkContext(rel));
+
    /*
-    * Intersect the given outer_relids with index_outer_relids
-    * to find the set of outer relids actually relevant for this index.
-    * If there are none, again we can fail immediately.
+    * Intersect the given outer_relids with index_outer_relids to find
+    * the set of outer relids actually relevant for this index. If there
+    * are none, again we can fail immediately.
     */
    outer_relids = bms_intersect(rel->index_outer_relids, outer_relids);
    if (bms_is_empty(outer_relids))
@@ -1422,11 +1428,13 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
        MemoryContextSwitchTo(oldcontext);
        return NULL;
    }
+
    /*
     * Look to see if we already computed the result for this set of
-    * relevant outerrels.  (We include the isouterjoin status in the
+    * relevant outerrels.  (We include the isouterjoin status in the
     * cache lookup key for safety.  In practice I suspect this is not
-    * necessary because it should always be the same for a given innerrel.)
+    * necessary because it should always be the same for a given
+    * innerrel.)
     */
    foreach(jlist, rel->index_inner_paths)
    {
@@ -1441,15 +1449,15 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
    }
 
    /*
-    * For each index of the rel, find the best path; then choose the
-    * best overall.  We cache the per-index results as well as the overall
-    * result.  (This is useful because different indexes may have different
-    * relevant outerrel sets, so different overall outerrel sets might still
-    * map to the same computation for a given index.)
+    * For each index of the rel, find the best path; then choose the best
+    * overall.  We cache the per-index results as well as the overall
+    * result.  (This is useful because different indexes may have
+    * different relevant outerrel sets, so different overall outerrel
+    * sets might still map to the same computation for a given index.)
     */
    foreach(ilist, rel->indexlist)
    {
-       IndexOptInfo  *index = (IndexOptInfo *) lfirst(ilist);
+       IndexOptInfo *index = (IndexOptInfo *) lfirst(ilist);
        Relids      index_outer_relids;
        Path       *path = NULL;
 
@@ -1461,6 +1469,7 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
            bms_free(index_outer_relids);
            continue;
        }
+
        /*
         * Look to see if we already computed the result for this index.
         */
@@ -1471,7 +1480,7 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
                info->isouterjoin == isouterjoin)
            {
                path = info->best_innerpath;
-               bms_free(index_outer_relids); /* not needed anymore */
+               bms_free(index_outer_relids);   /* not needed anymore */
                break;
            }
        }
@@ -1484,9 +1493,9 @@ best_inner_indexscan(Query *root, RelOptInfo *rel,
            clausegroups = group_clauses_by_indexkey_for_join(root,
                                                              rel,
                                                              index,
-                                                             index_outer_relids,
+                                                     index_outer_relids,
                                                              jointype,
-                                                             isouterjoin);
+                                                           isouterjoin);
            if (clausegroups)
            {
                /* make the path */
@@ -1548,9 +1557,9 @@ make_innerjoin_index_path(Query *root,
    pathnode->path.parent = rel;
 
    /*
-    * There's no point in marking the path with any pathkeys, since
-    * it will only ever be used as the inner path of a nestloop, and
-    * so its ordering does not matter.
+    * There's no point in marking the path with any pathkeys, since it
+    * will only ever be used as the inner path of a nestloop, and so its
+    * ordering does not matter.
     */
    pathnode->path.pathkeys = NIL;
 
@@ -1582,19 +1591,19 @@ make_innerjoin_index_path(Query *root,
 
    /*
     * We must compute the estimated number of output rows for the
-    * indexscan.  This is less than rel->rows because of the
-    * additional selectivity of the join clauses.  Since clausegroups
-    * may contain both restriction and join clauses, we have to do a
-    * set union to get the full set of clauses that must be
-    * considered to compute the correct selectivity.  (Without the union
-    * operation, we might have some restriction clauses appearing twice,
-    * which'd mislead restrictlist_selectivity into double-counting their
-    * selectivity.  However, since RestrictInfo nodes aren't copied when
-    * linking them into different lists, it should be sufficient to use
-    * pointer comparison to remove duplicates.)
+    * indexscan.  This is less than rel->rows because of the additional
+    * selectivity of the join clauses.  Since clausegroups may contain
+    * both restriction and join clauses, we have to do a set union to get
+    * the full set of clauses that must be considered to compute the
+    * correct selectivity.  (Without the union operation, we might have
+    * some restriction clauses appearing twice, which'd mislead
+    * restrictlist_selectivity into double-counting their selectivity.
+    * However, since RestrictInfo nodes aren't copied when linking them
+    * into different lists, it should be sufficient to use pointer
+    * comparison to remove duplicates.)
     *
-    * Always assume the join type is JOIN_INNER; even if some of the
-    * join clauses come from other contexts, that's not our problem.
+    * Always assume the join type is JOIN_INNER; even if some of the join
+    * clauses come from other contexts, that's not our problem.
     */
    allclauses = set_ptrUnion(rel->baserestrictinfo, allclauses);
    pathnode->rows = rel->tuples *
@@ -1656,9 +1665,9 @@ match_index_to_operand(Node *operand,
    else
    {
        /*
-        * Index expression; find the correct expression.  (This search could
-        * be avoided, at the cost of complicating all the callers of this
-        * routine; doesn't seem worth it.)
+        * Index expression; find the correct expression.  (This search
+        * could be avoided, at the cost of complicating all the callers
+        * of this routine; doesn't seem worth it.)
         */
        List       *indexprs;
        int         i;
@@ -1677,6 +1686,7 @@ match_index_to_operand(Node *operand,
        if (indexprs == NIL)
            elog(ERROR, "wrong number of index expressions");
        indexkey = (Node *) lfirst(indexprs);
+
        /*
         * Does it match the operand?  Again, strip any relabeling.
         */
@@ -1776,12 +1786,12 @@ match_special_index_operator(Expr *clause, Oid opclass,
        case OID_NAME_LIKE_OP:
            /* the right-hand const is type text for all of these */
            isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Like,
-                                              &prefix, &rest) != Pattern_Prefix_None;
+                                 &prefix, &rest) != Pattern_Prefix_None;
            break;
 
        case OID_BYTEA_LIKE_OP:
            isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Like,
-                                              &prefix, &rest) != Pattern_Prefix_None;
+                                 &prefix, &rest) != Pattern_Prefix_None;
            break;
 
        case OID_TEXT_ICLIKE_OP:
@@ -1789,7 +1799,7 @@ match_special_index_operator(Expr *clause, Oid opclass,
        case OID_NAME_ICLIKE_OP:
            /* the right-hand const is type text for all of these */
            isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Like_IC,
-                                              &prefix, &rest) != Pattern_Prefix_None;
+                                 &prefix, &rest) != Pattern_Prefix_None;
            break;
 
        case OID_TEXT_REGEXEQ_OP:
@@ -1797,7 +1807,7 @@ match_special_index_operator(Expr *clause, Oid opclass,
        case OID_NAME_REGEXEQ_OP:
            /* the right-hand const is type text for all of these */
            isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Regex,
-                                              &prefix, &rest) != Pattern_Prefix_None;
+                                 &prefix, &rest) != Pattern_Prefix_None;
            break;
 
        case OID_TEXT_ICREGEXEQ_OP:
@@ -1805,7 +1815,7 @@ match_special_index_operator(Expr *clause, Oid opclass,
        case OID_NAME_ICREGEXEQ_OP:
            /* the right-hand const is type text for all of these */
            isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Regex_IC,
-                                              &prefix, &rest) != Pattern_Prefix_None;
+                                 &prefix, &rest) != Pattern_Prefix_None;
            break;
 
        case OID_INET_SUB_OP:
@@ -1831,9 +1841,9 @@ match_special_index_operator(Expr *clause, Oid opclass,
     * want to apply.  (A hash index, for example, will not support ">=".)
     * Currently, only btree supports the operators we need.
     *
-    * We insist on the opclass being the specific one we expect,
-    * else we'd do the wrong thing if someone were to make a reverse-sort
-    * opclass with the same operators.
+    * We insist on the opclass being the specific one we expect, else we'd
+    * do the wrong thing if someone were to make a reverse-sort opclass
+    * with the same operators.
     */
    switch (expr_op)
    {
@@ -1896,7 +1906,7 @@ match_special_index_operator(Expr *clause, Oid opclass,
  * The input list is ordered by index key, and so the output list is too.
  * (The latter is not depended on by any part of the planner, so far as I can
  * tell; but some parts of the executor do assume that the indxqual list
- * ultimately delivered to the executor is so ordered.  One such place is
+ * ultimately delivered to the executor is so ordered. One such place is
  * _bt_orderkeys() in the btree support.  Perhaps that ought to be fixed
  * someday --- tgl 7/00)
  */
@@ -1930,7 +1940,7 @@ expand_indexqual_conditions(IndexOptInfo *index, List *clausegroups)
 
    } while (clausegroups != NIL && !DoneMatchingIndexKeys(classes));
 
-   Assert(clausegroups == NIL); /* else more groups than indexkeys... */
+   Assert(clausegroups == NIL);    /* else more groups than indexkeys... */
 
    return FastListValue(&resultquals);
 }
@@ -1953,11 +1963,12 @@ expand_indexqual_condition(Expr *clause, Oid opclass)
 
    switch (expr_op)
    {
-       /*
-        * LIKE and regex operators are not members of any index
-        * opclass, so if we find one in an indexqual list we can
-        * assume that it was accepted by match_special_index_operator().
-        */
+           /*
+            * LIKE and regex operators are not members of any index
+            * opclass, so if we find one in an indexqual list we can
+            * assume that it was accepted by
+            * match_special_index_operator().
+            */
        case OID_TEXT_LIKE_OP:
        case OID_BPCHAR_LIKE_OP:
        case OID_NAME_LIKE_OP:
@@ -2061,22 +2072,22 @@ prefix_quals(Node *leftop, Oid opclass,
    }
 
    /*
-    * If necessary, coerce the prefix constant to the right type.
-    * The given prefix constant is either text or bytea type.
+    * If necessary, coerce the prefix constant to the right type. The
+    * given prefix constant is either text or bytea type.
     */
    if (prefix_const->consttype != datatype)
    {
-       char   *prefix;
+       char       *prefix;
 
        switch (prefix_const->consttype)
        {
            case TEXTOID:
                prefix = DatumGetCString(DirectFunctionCall1(textout,
-                                                            prefix_const->constvalue));
+                                             prefix_const->constvalue));
                break;
            case BYTEAOID:
                prefix = DatumGetCString(DirectFunctionCall1(byteaout,
-                                                            prefix_const->constvalue));
+                                             prefix_const->constvalue));
                break;
            default:
                elog(ERROR, "unexpected const type: %u",
index cf7c4ee433133f40687eaae88892b4fa597c38d6..695b8c9841125ea685506bed257a8670d9ee218c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.79 2003/07/25 00:01:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinpath.c,v 1.80 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -300,7 +300,7 @@ sort_inner_and_outer(Query *root,
  * We always generate a nestloop path for each available outer path.
  * In fact we may generate as many as four: one on the cheapest-total-cost
  * inner path, one on the same with materialization, one on the
- * cheapest-startup-cost inner path (if different), 
+ * cheapest-startup-cost inner path (if different),
  * and one on the best inner-indexscan path (if any).
  *
  * We also consider mergejoins if mergejoin clauses are available. We have
@@ -342,10 +342,10 @@ match_unsorted_outer(Query *root,
 
    /*
     * Nestloop only supports inner, left, and IN joins.  Also, if we are
-    * doing a right or full join, we must use *all* the mergeclauses as join
-    * clauses, else we will not have a valid plan.  (Although these two
-    * flags are currently inverses, keep them separate for clarity and
-    * possible future changes.)
+    * doing a right or full join, we must use *all* the mergeclauses as
+    * join clauses, else we will not have a valid plan.  (Although these
+    * two flags are currently inverses, keep them separate for clarity
+    * and possible future changes.)
     */
    switch (jointype)
    {
@@ -371,8 +371,8 @@ match_unsorted_outer(Query *root,
    }
 
    /*
-    * If we need to unique-ify the inner path, we will consider only
-    * the cheapest inner.
+    * If we need to unique-ify the inner path, we will consider only the
+    * cheapest inner.
     */
    if (jointype == JOIN_UNIQUE_INNER)
    {
@@ -384,9 +384,10 @@ match_unsorted_outer(Query *root,
    else if (nestjoinOK)
    {
        /*
-        * If the cheapest inner path is a join or seqscan, we should consider
-        * materializing it.  (This is a heuristic: we could consider it
-        * always, but for inner indexscans it's probably a waste of time.)
+        * If the cheapest inner path is a join or seqscan, we should
+        * consider materializing it.  (This is a heuristic: we could
+        * consider it always, but for inner indexscans it's probably a
+        * waste of time.)
         */
        if (!(IsA(inner_cheapest_total, IndexPath) ||
              IsA(inner_cheapest_total, TidPath)))
@@ -394,8 +395,8 @@ match_unsorted_outer(Query *root,
                create_material_path(innerrel, inner_cheapest_total);
 
        /*
-        * Get the best innerjoin indexpath (if any) for this outer rel. It's
-        * the same for all outer paths.
+        * Get the best innerjoin indexpath (if any) for this outer rel.
+        * It's the same for all outer paths.
         */
        bestinnerjoin = best_inner_indexscan(root, innerrel,
                                             outerrel->relids, jointype);
@@ -414,8 +415,8 @@ match_unsorted_outer(Query *root,
        int         sortkeycnt;
 
        /*
-        * If we need to unique-ify the outer path, it's pointless to consider
-        * any but the cheapest outer.
+        * If we need to unique-ify the outer path, it's pointless to
+        * consider any but the cheapest outer.
         */
        if (save_jointype == JOIN_UNIQUE_OUTER)
        {
@@ -709,7 +710,7 @@ hash_inner_and_outer(Query *root,
            /* righthand side is inner */
        }
        else if (bms_is_subset(restrictinfo->left_relids, innerrel->relids) &&
-                bms_is_subset(restrictinfo->right_relids, outerrel->relids))
+            bms_is_subset(restrictinfo->right_relids, outerrel->relids))
        {
            /* lefthand side is inner */
        }
@@ -727,9 +728,9 @@ hash_inner_and_outer(Query *root,
         * cheapest-startup-cost outer paths.  There's no need to consider
         * any but the cheapest-total-cost inner path, however.
         */
-       Path *cheapest_startup_outer = outerrel->cheapest_startup_path;
-       Path *cheapest_total_outer = outerrel->cheapest_total_path;
-       Path *cheapest_total_inner = innerrel->cheapest_total_path;
+       Path       *cheapest_startup_outer = outerrel->cheapest_startup_path;
+       Path       *cheapest_total_outer = outerrel->cheapest_total_path;
+       Path       *cheapest_total_inner = innerrel->cheapest_total_path;
 
        /* Unique-ify if need be */
        if (jointype == JOIN_UNIQUE_OUTER)
@@ -840,7 +841,7 @@ select_mergejoin_clauses(RelOptInfo *joinrel,
            /* righthand side is inner */
        }
        else if (bms_is_subset(restrictinfo->left_relids, innerrel->relids) &&
-                bms_is_subset(restrictinfo->right_relids, outerrel->relids))
+            bms_is_subset(restrictinfo->right_relids, outerrel->relids))
        {
            /* lefthand side is inner */
        }
index 023bc397840d5c3018fc2fd07699d2f7980a68a7..81e5080e4b756813aec1c606ebe6a64e51529612 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.61 2003/07/25 00:01:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.62 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 static List *make_rels_by_clause_joins(Query *root,
-                                      RelOptInfo *old_rel,
-                                      List *other_rels);
+                         RelOptInfo *old_rel,
+                         List *other_rels);
 static List *make_rels_by_clauseless_joins(Query *root,
-                                          RelOptInfo *old_rel,
-                                          List *other_rels);
+                             RelOptInfo *old_rel,
+                             List *other_rels);
 
 
 /*
@@ -417,8 +417,8 @@ make_join_rel(Query *root, RelOptInfo *rel1, RelOptInfo *rel2,
 
    /*
     * If we are implementing IN clauses as joins, there are some joins
-    * that are illegal.  Check to see if the proposed join is trouble.
-    * We can skip the work if looking at an outer join, however, because
+    * that are illegal.  Check to see if the proposed join is trouble. We
+    * can skip the work if looking at an outer join, however, because
     * only top-level joins might be affected.
     */
    if (jointype == JOIN_INNER)
@@ -430,8 +430,8 @@ make_join_rel(Query *root, RelOptInfo *rel1, RelOptInfo *rel2,
            InClauseInfo *ininfo = (InClauseInfo *) lfirst(l);
 
            /*
-            * Cannot join if proposed join contains part, but only
-            * part, of the RHS, *and* it contains rels not in the RHS.
+            * Cannot join if proposed join contains part, but only part,
+            * of the RHS, *and* it contains rels not in the RHS.
             */
            if (bms_overlap(ininfo->righthand, joinrelids) &&
                !bms_is_subset(ininfo->righthand, joinrelids) &&
@@ -442,16 +442,17 @@ make_join_rel(Query *root, RelOptInfo *rel1, RelOptInfo *rel2,
            }
 
            /*
-            * No issue unless we are looking at a join of the IN's RHS
-            * to other stuff.
+            * No issue unless we are looking at a join of the IN's RHS to
+            * other stuff.
             */
-           if (! (bms_is_subset(ininfo->righthand, joinrelids) &&
-                  !bms_equal(ininfo->righthand, joinrelids)))
+           if (!(bms_is_subset(ininfo->righthand, joinrelids) &&
+                 !bms_equal(ininfo->righthand, joinrelids)))
                continue;
+
            /*
-            * If we already joined IN's RHS to any part of its LHS in either
-            * input path, then this join is not constrained (the necessary
-            * work was done at a lower level).
+            * If we already joined IN's RHS to any part of its LHS in
+            * either input path, then this join is not constrained (the
+            * necessary work was done at a lower level).
             */
            if (bms_overlap(ininfo->lefthand, rel1->relids) &&
                bms_is_subset(ininfo->righthand, rel1->relids))
@@ -459,6 +460,7 @@ make_join_rel(Query *root, RelOptInfo *rel1, RelOptInfo *rel2,
            if (bms_overlap(ininfo->lefthand, rel2->relids) &&
                bms_is_subset(ininfo->righthand, rel2->relids))
                continue;
+
            /*
             * JOIN_IN technique will work if outerrel includes LHS and
             * innerrel is exactly RHS; conversely JOIN_REVERSE_IN handles
@@ -478,22 +480,14 @@ make_join_rel(Query *root, RelOptInfo *rel1, RelOptInfo *rel2,
            }
            if (bms_is_subset(ininfo->lefthand, rel1->relids) &&
                bms_equal(ininfo->righthand, rel2->relids))
-           {
                jointype = JOIN_IN;
-           }
            else if (bms_is_subset(ininfo->lefthand, rel2->relids) &&
                     bms_equal(ininfo->righthand, rel1->relids))
-           {
                jointype = JOIN_REVERSE_IN;
-           }
            else if (bms_equal(ininfo->righthand, rel1->relids))
-           {
                jointype = JOIN_UNIQUE_OUTER;
-           }
            else if (bms_equal(ininfo->righthand, rel2->relids))
-           {
                jointype = JOIN_UNIQUE_INNER;
-           }
            else
            {
                /* invalid join path */
index a078b3f5a93064a021453e95fd4ba7818b26bbf1..40d2de41417cef77dfcc5933beed663e48bcc98b 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.51 2003/06/15 22:51:45 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/orindxpath.c,v 1.52 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -99,7 +99,7 @@ create_or_index_paths(Query *root, RelOptInfo *rel)
 
                best_or_subclause_indices(root,
                                          rel,
-                                         ((BoolExpr *) restrictinfo->clause)->args,
+                              ((BoolExpr *) restrictinfo->clause)->args,
                                          restrictinfo->subclauseindices,
                                          pathnode);
 
index 9fec73e2603bd7ff77c8df602dd9b8c87899b821..beb51a6996656f83715db0356c13b3afc5e80e60 100644 (file)
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/pathkeys.c,v 1.51 2003/07/25 00:01:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/pathkeys.c,v 1.52 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -198,8 +198,8 @@ generate_implied_equalities(Query *root)
        /*
         * Collect info about relids mentioned in each item.  For this
         * routine we only really care whether there are any at all in
-        * each item, but process_implied_equality() needs the exact
-        * sets, so we may as well pull them here.
+        * each item, but process_implied_equality() needs the exact sets,
+        * so we may as well pull them here.
         */
        relids = (Relids *) palloc(nitems * sizeof(Relids));
        have_consts = false;
@@ -233,8 +233,8 @@ generate_implied_equalities(Query *root)
 
                /*
                 * If it's "const = const" then just ignore it altogether.
-                * There is no place in the restrictinfo structure to store
-                * it.  (If the two consts are in fact unequal, then
+                * There is no place in the restrictinfo structure to
+                * store it.  (If the two consts are in fact unequal, then
                 * propagating the comparison to Vars will cause us to
                 * produce zero rows out, as expected.)
                 */
@@ -242,12 +242,12 @@ generate_implied_equalities(Query *root)
                {
                    /*
                     * Tell process_implied_equality to delete the clause,
-                    * not add it, if it's "var = var" and we have constants
-                    * present in the list.
+                    * not add it, if it's "var = var" and we have
+                    * constants present in the list.
                     */
-                   bool    delete_it = (have_consts &&
-                                        i1_is_variable &&
-                                        i2_is_variable);
+                   bool        delete_it = (have_consts &&
+                                            i1_is_variable &&
+                                            i2_is_variable);
 
                    process_implied_equality(root,
                                             item1->key, item2->key,
@@ -751,20 +751,21 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery)
         * element might match none, one, or more of the output columns
         * that are visible to the outer query.  This means we may have
         * multiple possible representations of the sub_pathkey in the
-        * context of the outer query.  Ideally we would generate them all
-        * and put them all into a pathkey list of the outer query, thereby
-        * propagating equality knowledge up to the outer query.  Right now
-        * we cannot do so, because the outer query's canonical pathkey
-        * sets are already frozen when this is called.  Instead we prefer
-        * the one that has the highest "score" (number of canonical pathkey
-        * peers, plus one if it matches the outer query_pathkeys).
-        * This is the most likely to be useful in the outer query.
+        * context of the outer query.  Ideally we would generate them all
+        * and put them all into a pathkey list of the outer query,
+        * thereby propagating equality knowledge up to the outer query.
+        * Right now we cannot do so, because the outer query's canonical
+        * pathkey sets are already frozen when this is called.  Instead
+        * we prefer the one that has the highest "score" (number of
+        * canonical pathkey peers, plus one if it matches the outer
+        * query_pathkeys). This is the most likely to be useful in the
+        * outer query.
         */
        foreach(j, sub_pathkey)
        {
            PathKeyItem *sub_item = (PathKeyItem *) lfirst(j);
-           Node   *sub_key = sub_item->key;
-           List   *k;
+           Node       *sub_key = sub_item->key;
+           List       *k;
 
            foreach(k, subquery->targetList)
            {
@@ -774,9 +775,9 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery)
                    equal(tle->expr, sub_key))
                {
                    /* Found a representation for this sub_key */
-                   Var    *outer_var;
+                   Var        *outer_var;
                    PathKeyItem *outer_item;
-                   int     score;
+                   int         score;
 
                    outer_var = makeVar(rel->relid,
                                        tle->resdom->resno,
@@ -802,8 +803,8 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery)
        }
 
        /*
-        * If we couldn't find a representation of this sub_pathkey,
-        * we're done (we can't use the ones to its right, either).
+        * If we couldn't find a representation of this sub_pathkey, we're
+        * done (we can't use the ones to its right, either).
         */
        if (!best_item)
            break;
@@ -812,8 +813,8 @@ build_subquery_pathkeys(Query *root, RelOptInfo *rel, Query *subquery)
        cpathkey = make_canonical_pathkey(root, best_item);
 
        /*
-        * Eliminate redundant ordering info; could happen if outer
-        * query equijoins subquery keys...
+        * Eliminate redundant ordering info; could happen if outer query
+        * equijoins subquery keys...
         */
        if (!ptrMember(cpathkey, retval))
        {
@@ -920,7 +921,7 @@ make_pathkeys_for_sortclauses(List *sortclauses,
  * many times when dealing with a many-relation query.
  *
  * We have to be careful that the cached values are palloc'd in the same
- * context the RestrictInfo node itself is in.  This is not currently a
+ * context the RestrictInfo node itself is in. This is not currently a
  * problem for normal planning, but it is an issue for GEQO planning.
  */
 void
@@ -1090,7 +1091,7 @@ make_pathkeys_for_mergeclauses(Query *root,
        else
        {
            elog(ERROR, "could not identify which side of mergeclause to use");
-           pathkey = NIL;  /* keep compiler quiet */
+           pathkey = NIL;      /* keep compiler quiet */
        }
 
        /*
index 761f03b967cecf315ebe9abcefeffa387fbf7bf4..60093ec5e3d05cceddb74efcf49a2bff4d7088be 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/tidpath.c,v 1.14 2003/02/08 20:20:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/path/tidpath.c,v 1.15 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -27,7 +27,7 @@
 
 static List *TidqualFromRestrictinfo(Relids relids, List *restrictinfo);
 static bool isEvaluable(int varno, Node *node);
-static Node *TidequalClause(int varno, OpExpr *node);
+static Node *TidequalClause(int varno, OpExpr * node);
 static List *TidqualFromExpr(int varno, Expr *expr);
 
 static bool
@@ -66,7 +66,7 @@ isEvaluable(int varno, Node *node)
  *   or    the left  node if the opclause is ....=CTID
  */
 static Node *
-TidequalClause(int varno, OpExpr *node)
+TidequalClause(int varno, OpExpr * node)
 {
    Node       *rnode = NULL,
               *arg1,
index 9ac746d34a9cfec76a1bffe09ef95c1361adbe5c..e4e7490d82af3e1f14ebcdf9fb34bb2f1e5cb259 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.149 2003/07/25 00:01:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.150 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -40,9 +40,9 @@ static bool use_physical_tlist(RelOptInfo *rel);
 static void disuse_physical_tlist(Plan *plan, Path *path);
 static Join *create_join_plan(Query *root, JoinPath *best_path);
 static Append *create_append_plan(Query *root, AppendPath *best_path);
-static Result *create_result_plan(Query *root, ResultPath *best_path);
-static Material *create_material_plan(Query *root, MaterialPath *best_path);
-static Plan *create_unique_plan(Query *root, UniquePath *best_path);
+static Result *create_result_plan(Query *root, ResultPath * best_path);
+static Material *create_material_plan(Query *root, MaterialPath * best_path);
+static Plan *create_unique_plan(Query *root, UniquePath * best_path);
 static SeqScan *create_seqscan_plan(Path *best_path, List *tlist,
                    List *scan_clauses);
 static IndexScan *create_indexscan_plan(Query *root, IndexPath *best_path,
@@ -63,9 +63,9 @@ static void fix_indxqual_references(List *indexquals, IndexPath *index_path,
                        List **fixed_indexquals,
                        List **recheck_indexquals);
 static void fix_indxqual_sublist(List *indexqual,
-                                Relids baserelids, int baserelid,
-                                IndexOptInfo *index,
-                                List **fixed_quals, List **recheck_quals);
+                    Relids baserelids, int baserelid,
+                    IndexOptInfo *index,
+                    List **fixed_quals, List **recheck_quals);
 static Node *fix_indxqual_operand(Node *node, int baserelid,
                     IndexOptInfo *index,
                     Oid *opclass);
@@ -98,9 +98,9 @@ static MergeJoin *make_mergejoin(List *tlist,
               Plan *lefttree, Plan *righttree,
               JoinType jointype);
 static Sort *make_sort(Query *root, List *tlist, Plan *lefttree, int numCols,
-                      AttrNumber *sortColIdx, Oid *sortOperators);
+         AttrNumber *sortColIdx, Oid *sortOperators);
 static Sort *make_sort_from_pathkeys(Query *root, Plan *lefttree,
-                                    Relids relids, List *pathkeys);
+                       Relids relids, List *pathkeys);
 
 
 /*
@@ -148,7 +148,7 @@ create_plan(Query *root, Path *best_path)
            break;
        case T_Material:
            plan = (Plan *) create_material_plan(root,
-                                                (MaterialPath *) best_path);
+                                            (MaterialPath *) best_path);
            break;
        case T_Unique:
            plan = (Plan *) create_unique_plan(root,
@@ -192,12 +192,12 @@ create_scan_plan(Query *root, Path *best_path)
    Scan       *plan;
 
    /*
-    * For table scans, rather than using the relation targetlist (which is
-    * only those Vars actually needed by the query), we prefer to generate a
-    * tlist containing all Vars in order.  This will allow the executor to
-    * optimize away projection of the table tuples, if possible.  (Note that
-    * planner.c may replace the tlist we generate here, forcing projection to
-    * occur.)
+    * For table scans, rather than using the relation targetlist (which
+    * is only those Vars actually needed by the query), we prefer to
+    * generate a tlist containing all Vars in order.  This will allow the
+    * executor to optimize away projection of the table tuples, if
+    * possible.  (Note that planner.c may replace the tlist we generate
+    * here, forcing projection to occur.)
     */
    if (use_physical_tlist(rel))
    {
@@ -274,8 +274,8 @@ build_relation_tlist(RelOptInfo *rel)
    FastListInit(&tlist);
    foreach(v, FastListValue(&rel->reltargetlist))
    {
-       /* Do we really need to copy here?  Not sure */
-       Var    *var = (Var *) copyObject(lfirst(v));
+       /* Do we really need to copy here?  Not sure */
+       Var        *var = (Var *) copyObject(lfirst(v));
 
        FastAppend(&tlist, create_tl_element(var, resdomno));
        resdomno++;
@@ -294,22 +294,24 @@ use_physical_tlist(RelOptInfo *rel)
    int         i;
 
    /*
-    * Currently, can't do this for subquery or function scans.  (This
-    * is mainly because we don't have an equivalent of build_physical_tlist
+    * Currently, can't do this for subquery or function scans.  (This is
+    * mainly because we don't have an equivalent of build_physical_tlist
     * for them; worth adding?)
     */
    if (rel->rtekind != RTE_RELATION)
        return false;
+
    /*
     * Can't do it with inheritance cases either (mainly because Append
     * doesn't project).
     */
    if (rel->reloptkind != RELOPT_BASEREL)
        return false;
+
    /*
-    * Can't do it if any system columns are requested, either.  (This could
-    * possibly be fixed but would take some fragile assumptions in setrefs.c,
-    * I think.)
+    * Can't do it if any system columns are requested, either.  (This
+    * could possibly be fixed but would take some fragile assumptions in
+    * setrefs.c, I think.)
     */
    for (i = rel->min_attr; i <= 0; i++)
    {
@@ -325,7 +327,7 @@ use_physical_tlist(RelOptInfo *rel)
  *
  * If the plan node immediately above a scan would prefer to get only
  * needed Vars and not a physical tlist, it must call this routine to
- * undo the decision made by use_physical_tlist().  Currently, Hash, Sort,
+ * undo the decision made by use_physical_tlist(). Currently, Hash, Sort,
  * and Material nodes want this, so they don't have to store useless columns.
  */
 static void
@@ -441,7 +443,7 @@ create_append_plan(Query *root, AppendPath *best_path)
  *   Returns a Plan node.
  */
 static Result *
-create_result_plan(Query *root, ResultPath *best_path)
+create_result_plan(Query *root, ResultPath * best_path)
 {
    Result     *plan;
    List       *tlist;
@@ -473,7 +475,7 @@ create_result_plan(Query *root, ResultPath *best_path)
  *   Returns a Plan node.
  */
 static Material *
-create_material_plan(Query *root, MaterialPath *best_path)
+create_material_plan(Query *root, MaterialPath * best_path)
 {
    Material   *plan;
    Plan       *subplan;
@@ -498,7 +500,7 @@ create_material_plan(Query *root, MaterialPath *best_path)
  *   Returns a Plan node.
  */
 static Plan *
-create_unique_plan(Query *root, UniquePath *best_path)
+create_unique_plan(Query *root, UniquePath * best_path)
 {
    Plan       *plan;
    Plan       *subplan;
@@ -509,9 +511,9 @@ create_unique_plan(Query *root, UniquePath *best_path)
    subplan = create_plan(root, best_path->subpath);
 
    /*
-    * If the subplan came from an IN subselect (currently always the case),
-    * we need to instantiate the correct output targetlist for the subselect,
-    * rather than using the flattened tlist.
+    * If the subplan came from an IN subselect (currently always the
+    * case), we need to instantiate the correct output targetlist for the
+    * subselect, rather than using the flattened tlist.
     */
    sub_targetlist = NIL;
    foreach(l, root->in_info_list)
@@ -530,8 +532,8 @@ create_unique_plan(Query *root, UniquePath *best_path)
        /*
         * Transform list of plain Vars into targetlist
         */
-       List   *newtlist = NIL;
-       int     resno = 1;
+       List       *newtlist = NIL;
+       int         resno = 1;
 
        foreach(l, sub_targetlist)
        {
@@ -547,12 +549,13 @@ create_unique_plan(Query *root, UniquePath *best_path)
            newtlist = lappend(newtlist, tle);
            resno++;
        }
+
        /*
         * If the top plan node can't do projections, we need to add a
         * Result node to help it along.
         *
-        * Currently, the only non-projection-capable plan type
-        * we can see here is Append.
+        * Currently, the only non-projection-capable plan type we can see
+        * here is Append.
         */
        if (IsA(subplan, Append))
            subplan = (Plan *) make_result(newtlist, NULL, subplan);
@@ -564,16 +567,16 @@ create_unique_plan(Query *root, UniquePath *best_path)
 
    if (best_path->use_hash)
    {
-       int     numGroupCols = length(my_tlist);
-       long    numGroups;
+       int         numGroupCols = length(my_tlist);
+       long        numGroups;
        AttrNumber *groupColIdx;
-       int     i;
+       int         i;
 
        numGroups = (long) Min(best_path->rows, (double) LONG_MAX);
 
        groupColIdx = (AttrNumber *) palloc(numGroupCols * sizeof(AttrNumber));
        for (i = 0; i < numGroupCols; i++)
-           groupColIdx[i] = i+1;
+           groupColIdx[i] = i + 1;
 
        plan = (Plan *) make_agg(root,
                                 my_tlist,
@@ -700,9 +703,7 @@ create_indexscan_plan(Query *root,
 
        FastListInit(&orclauses);
        foreach(orclause, indxqual)
-       {
            FastAppend(&orclauses, make_ands_explicit(lfirst(orclause)));
-       }
        indxqual_or_expr = make_orclause(FastListValue(&orclauses));
 
        qpqual = set_difference(scan_clauses, makeList1(indxqual_or_expr));
@@ -861,9 +862,9 @@ create_nestloop_plan(Query *root,
        /*
         * An index is being used to reduce the number of tuples scanned
         * in the inner relation.  If there are join clauses being used
-        * with the index, we may remove those join clauses from the list of
-        * clauses that have to be checked as qpquals at the join node ---
-        * but only if there's just one indexscan in the inner path
+        * with the index, we may remove those join clauses from the list
+        * of clauses that have to be checked as qpquals at the join node
+        * --- but only if there's just one indexscan in the inner path
         * (otherwise, several different sets of clauses are being ORed
         * together).
         *
@@ -873,13 +874,14 @@ create_nestloop_plan(Query *root,
         * been put in the same joininfo list.
         *
         * This would be a waste of time if the indexpath was an ordinary
-        * indexpath and not a special innerjoin path.  We will skip it in
-        * that case since indexjoinclauses is NIL in an ordinary indexpath.
+        * indexpath and not a special innerjoin path.  We will skip it in
+        * that case since indexjoinclauses is NIL in an ordinary
+        * indexpath.
         */
        IndexPath  *innerpath = (IndexPath *) best_path->innerjoinpath;
        List       *indexjoinclauses = innerpath->indexjoinclauses;
 
-       if (length(indexjoinclauses) == 1) /* single indexscan? */
+       if (length(indexjoinclauses) == 1)      /* single indexscan? */
        {
            joinrestrictclauses =
                select_nonredundant_join_clauses(root,
@@ -947,11 +949,11 @@ create_mergejoin_plan(Query *root,
    joinclauses = set_difference(joinclauses, mergeclauses);
 
    /*
-    * Rearrange mergeclauses, if needed, so that the outer variable
-    * is always on the left.
+    * Rearrange mergeclauses, if needed, so that the outer variable is
+    * always on the left.
     */
    mergeclauses = get_switched_clauses(best_path->path_mergeclauses,
-                                       best_path->jpath.outerjoinpath->parent->relids);
+                        best_path->jpath.outerjoinpath->parent->relids);
 
    /*
     * Create explicit sort nodes for the outer and inner join paths if
@@ -964,7 +966,7 @@ create_mergejoin_plan(Query *root,
        outer_plan = (Plan *)
            make_sort_from_pathkeys(root,
                                    outer_plan,
-                                   best_path->jpath.outerjoinpath->parent->relids,
+                         best_path->jpath.outerjoinpath->parent->relids,
                                    best_path->outersortkeys);
    }
 
@@ -974,7 +976,7 @@ create_mergejoin_plan(Query *root,
        inner_plan = (Plan *)
            make_sort_from_pathkeys(root,
                                    inner_plan,
-                                   best_path->jpath.innerjoinpath->parent->relids,
+                         best_path->jpath.innerjoinpath->parent->relids,
                                    best_path->innersortkeys);
    }
 
@@ -1030,21 +1032,19 @@ create_hashjoin_plan(Query *root,
    joinclauses = set_difference(joinclauses, hashclauses);
 
    /*
-    * Rearrange hashclauses, if needed, so that the outer variable
-    * is always on the left.
+    * Rearrange hashclauses, if needed, so that the outer variable is
+    * always on the left.
     */
    hashclauses = get_switched_clauses(best_path->path_hashclauses,
-                                      best_path->jpath.outerjoinpath->parent->relids);
+                        best_path->jpath.outerjoinpath->parent->relids);
 
    /*
-    * Extract the inner hash keys (right-hand operands of the hashclauses)
-    * to put in the Hash node.
+    * Extract the inner hash keys (right-hand operands of the
+    * hashclauses) to put in the Hash node.
     */
    innerhashkeys = NIL;
    foreach(hcl, hashclauses)
-   {
        innerhashkeys = lappend(innerhashkeys, get_rightop(lfirst(hcl)));
-   }
 
    /* We don't want any excess columns in the hashed tuples */
    disuse_physical_tlist(inner_plan, best_path->jpath.innerjoinpath);
@@ -1362,7 +1362,7 @@ order_qual_clauses(Query *root, List *clauses)
    FastListInit(&withsubplans);
    foreach(l, clauses)
    {
-       Node   *clause = lfirst(l);
+       Node       *clause = lfirst(l);
 
        if (contain_subplans(clause))
            FastAppend(&withsubplans, clause);
@@ -1507,8 +1507,8 @@ make_subqueryscan(List *qptlist,
 
    /*
     * Cost is figured here for the convenience of prepunion.c.  Note this
-    * is only correct for the case where qpqual is empty; otherwise caller
-    * should overwrite cost with a better estimate.
+    * is only correct for the case where qpqual is empty; otherwise
+    * caller should overwrite cost with a better estimate.
     */
    copy_plan_costsize(plan, subplan);
    plan->total_cost += cpu_tuple_cost * subplan->plan_rows;
@@ -1709,7 +1709,7 @@ make_sort(Query *root, List *tlist, Plan *lefttree, int numCols,
  * once as a sort key column; if so, the extra mentions are redundant.
  *
  * Caller is assumed to have allocated the arrays large enough for the
- * max possible number of columns.  Return value is the new column count.
+ * max possible number of columns. Return value is the new column count.
  */
 static int
 add_sort_column(AttrNumber colIdx, Oid sortOp,
@@ -1777,8 +1777,8 @@ make_sort_from_pathkeys(Query *root, Plan *lefttree,
        /*
         * We can sort by any one of the sort key items listed in this
         * sublist.  For now, we take the first one that corresponds to an
-        * available Var in the tlist.  If there isn't any, use the
-        * first one that is an expression in the input's vars.
+        * available Var in the tlist.  If there isn't any, use the first
+        * one that is an expression in the input's vars.
         *
         * XXX if we have a choice, is there any way of figuring out which
         * might be cheapest to execute?  (For example, int4lt is likely
@@ -1805,17 +1805,19 @@ make_sort_from_pathkeys(Query *root, Plan *lefttree,
            }
            if (!j)
                elog(ERROR, "could not find pathkey item to sort");
+
            /*
             * Do we need to insert a Result node?
             *
-            * Currently, the only non-projection-capable plan type
-            * we can see here is Append.
+            * Currently, the only non-projection-capable plan type we can
+            * see here is Append.
             */
            if (IsA(lefttree, Append))
            {
                tlist = copyObject(tlist);
                lefttree = (Plan *) make_result(tlist, NULL, lefttree);
            }
+
            /*
             * Add resjunk entry to input's tlist
             */
@@ -1827,8 +1829,9 @@ make_sort_from_pathkeys(Query *root, Plan *lefttree,
            tlist = lappend(tlist,
                            makeTargetEntry(resdom,
                                            (Expr *) pathkey->key));
-           lefttree->targetlist = tlist; /* just in case NIL before */
+           lefttree->targetlist = tlist;       /* just in case NIL before */
        }
+
        /*
         * The column might already be selected as a sort key, if the
         * pathkeys contain duplicate entries.  (This can happen in
@@ -1836,7 +1839,7 @@ make_sort_from_pathkeys(Query *root, Plan *lefttree,
         * var, for example.)  So enter it only once in the sort arrays.
         */
        numsortkeys = add_sort_column(resdom->resno, pathkey->sortop,
-                                     numsortkeys, sortColIdx, sortOperators);
+                                numsortkeys, sortColIdx, sortOperators);
    }
 
    Assert(numsortkeys > 0);
@@ -1881,10 +1884,11 @@ make_sort_from_sortclauses(Query *root, List *tlist,
 
        /*
         * Check for the possibility of duplicate order-by clauses --- the
-        * parser should have removed 'em, but no point in sorting redundantly.
+        * parser should have removed 'em, but no point in sorting
+        * redundantly.
         */
        numsortkeys = add_sort_column(resdom->resno, sortcl->sortop,
-                                     numsortkeys, sortColIdx, sortOperators);
+                                numsortkeys, sortColIdx, sortOperators);
    }
 
    Assert(numsortkeys > 0);
@@ -1938,10 +1942,11 @@ make_sort_from_groupcols(Query *root,
 
        /*
         * Check for the possibility of duplicate group-by clauses --- the
-        * parser should have removed 'em, but no point in sorting redundantly.
+        * parser should have removed 'em, but no point in sorting
+        * redundantly.
         */
        numsortkeys = add_sort_column(resdom->resno, grpcl->sortop,
-                                     numsortkeys, sortColIdx, sortOperators);
+                                numsortkeys, sortColIdx, sortOperators);
        grpno++;
    }
 
@@ -1973,7 +1978,7 @@ make_material(List *tlist, Plan *lefttree)
  * materialize_finished_plan: stick a Material node atop a completed plan
  *
  * There are a couple of places where we want to attach a Material node
- * after completion of subquery_planner().  This currently requires hackery.
+ * after completion of subquery_planner(). This currently requires hackery.
  * Since subquery_planner has already run SS_finalize_plan on the subplan
  * tree, we have to kluge up parameter lists for the Material node.
  * Possibly this could be fixed by postponing SS_finalize_plan processing
@@ -2032,8 +2037,8 @@ make_agg(Query *root, List *tlist, List *qual,
    plan->total_cost = agg_path.total_cost;
 
    /*
-    * We will produce a single output tuple if not grouping,
-    * and a tuple per group otherwise.
+    * We will produce a single output tuple if not grouping, and a tuple
+    * per group otherwise.
     */
    if (aggstrategy == AGG_PLAIN)
        plan->plan_rows = 1;
@@ -2041,10 +2046,10 @@ make_agg(Query *root, List *tlist, List *qual,
        plan->plan_rows = numGroups;
 
    /*
-    * We also need to account for the cost of evaluation of the qual
-    * (ie, the HAVING clause) and the tlist.  Note that cost_qual_eval
-    * doesn't charge anything for Aggref nodes; this is okay since
-    * they are really comparable to Vars.
+    * We also need to account for the cost of evaluation of the qual (ie,
+    * the HAVING clause) and the tlist.  Note that cost_qual_eval doesn't
+    * charge anything for Aggref nodes; this is okay since they are
+    * really comparable to Vars.
     *
     * See notes in grouping_planner about why this routine and make_group
     * are the only ones in this file that worry about tlist eval cost.
@@ -2100,13 +2105,13 @@ make_group(Query *root,
    /*
     * We also need to account for the cost of evaluation of the tlist.
     *
-    * XXX this double-counts the cost of evaluation of any expressions
-    * used for grouping, since in reality those will have been evaluated
-    * at a lower plan level and will only be copied by the Group node.
-    * Worth fixing?
+    * XXX this double-counts the cost of evaluation of any expressions used
+    * for grouping, since in reality those will have been evaluated at a
+    * lower plan level and will only be copied by the Group node. Worth
+    * fixing?
     *
-    * See notes in grouping_planner about why this routine and make_agg
-    * are the only ones in this file that worry about tlist eval cost.
+    * See notes in grouping_planner about why this routine and make_agg are
+    * the only ones in this file that worry about tlist eval cost.
     */
    cost_qual_eval(&qual_cost, tlist);
    plan->startup_cost += qual_cost.startup;
@@ -2139,15 +2144,15 @@ make_unique(List *tlist, Plan *lefttree, List *distinctList)
 
    /*
     * 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.)
+    * assume all columns get compared at most of the tuples.  (XXX
+    * probably this is an overestimate.)
     */
    plan->total_cost += cpu_operator_cost * plan->plan_rows * numCols;
 
    /*
     * plan->plan_rows is left as a copy of the input subplan's plan_rows;
-    * ie, we assume the filter removes nothing.  The caller must alter this
-    * if he has a better idea.
+    * ie, we assume the filter removes nothing.  The caller must alter
+    * this if he has a better idea.
     */
 
    plan->targetlist = tlist;
index afcb4528326b6912073d31732b45fbc858a265fd..61edf1c22d482bb9bcabe551cd4e355c1f170ff0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.88 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.89 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 static void mark_baserels_for_outer_join(Query *root, Relids rels,
                             Relids outerrels);
 static void distribute_qual_to_rels(Query *root, Node *clause,
-                                   bool ispusheddown,
-                                   bool isdeduced,
-                                   Relids outerjoin_nonnullable,
-                                   Relids qualscope);
+                       bool ispusheddown,
+                       bool isdeduced,
+                       Relids outerjoin_nonnullable,
+                       Relids qualscope);
 static void add_vars_to_targetlist(Query *root, List *vars,
-                                  Relids where_needed);
+                      Relids where_needed);
 static bool qual_is_redundant(Query *root, RestrictInfo *restrictinfo,
                  List *restrictlist);
 static void check_mergejoinable(RestrictInfo *restrictinfo);
@@ -83,9 +83,7 @@ add_base_rels_to_query(Query *root, Node *jtnode)
        List       *l;
 
        foreach(l, f->fromlist)
-       {
            add_base_rels_to_query(root, lfirst(l));
-       }
    }
    else if (IsA(jtnode, JoinExpr))
    {
@@ -93,13 +91,14 @@ add_base_rels_to_query(Query *root, Node *jtnode)
 
        add_base_rels_to_query(root, j->larg);
        add_base_rels_to_query(root, j->rarg);
+
        /*
         * Safety check: join RTEs should not be SELECT FOR UPDATE targets
         */
        if (intMember(j->rtindex, root->rowMarks))
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("SELECT FOR UPDATE cannot be applied to a join")));
+              errmsg("SELECT FOR UPDATE cannot be applied to a join")));
    }
    else
        elog(ERROR, "unrecognized node type: %d",
@@ -247,14 +246,14 @@ distribute_quals_to_rels(Query *root, Node *jtnode)
         * Order of operations here is subtle and critical.  First we
         * recurse to handle sub-JOINs.  Their join quals will be placed
         * without regard for whether this level is an outer join, which
-        * is correct.  Then we place our own join quals, which are restricted
-        * by lower outer joins in any case, and are forced to this level if
-        * this is an outer join and they mention the outer side.  Finally, if
-        * this is an outer join, we mark baserels contained within the inner
-        * side(s) with our own rel set; this will prevent quals above us in
-        * the join tree that use those rels from being pushed down below this
-        * level.  (It's okay for upper quals to be pushed down to the outer
-        * side, however.)
+        * is correct.  Then we place our own join quals, which are
+        * restricted by lower outer joins in any case, and are forced to
+        * this level if this is an outer join and they mention the outer
+        * side.  Finally, if this is an outer join, we mark baserels
+        * contained within the inner side(s) with our own rel set; this
+        * will prevent quals above us in the join tree that use those
+        * rels from being pushed down below this level.  (It's okay for
+        * upper quals to be pushed down to the outer side, however.)
         */
        leftids = distribute_quals_to_rels(root, j->larg);
        rightids = distribute_quals_to_rels(root, j->rarg);
@@ -390,9 +389,10 @@ distribute_qual_to_rels(Query *root, Node *clause,
 
    restrictinfo->clause = (Expr *) clause;
    restrictinfo->subclauseindices = NIL;
-   restrictinfo->eval_cost.startup = -1; /* not computed until needed */
+   restrictinfo->eval_cost.startup = -1;       /* not computed until
+                                                * needed */
    restrictinfo->this_selec = -1;      /* not computed until needed */
-   restrictinfo->left_relids = NULL; /* set below, if join clause */
+   restrictinfo->left_relids = NULL;   /* set below, if join clause */
    restrictinfo->right_relids = NULL;
    restrictinfo->mergejoinoperator = InvalidOid;
    restrictinfo->left_sortop = InvalidOid;
@@ -435,10 +435,10 @@ distribute_qual_to_rels(Query *root, Node *clause,
    if (isdeduced)
    {
        /*
-        * If the qual came from implied-equality deduction, we can evaluate
-        * the qual at its natural semantic level.  It is not affected by
-        * any outer-join rules (else we'd not have decided the vars were
-        * equal).
+        * If the qual came from implied-equality deduction, we can
+        * evaluate the qual at its natural semantic level.  It is not
+        * affected by any outer-join rules (else we'd not have decided
+        * the vars were equal).
         */
        Assert(bms_equal(relids, qualscope));
        can_be_equijoin = true;
@@ -446,12 +446,13 @@ distribute_qual_to_rels(Query *root, Node *clause,
    else if (bms_overlap(relids, outerjoin_nonnullable))
    {
        /*
-        * The qual is attached to an outer join and mentions (some of the)
-        * rels on the nonnullable side.  Force the qual to be evaluated
-        * exactly at the level of joining corresponding to the outer join.
-        * We cannot let it get pushed down into the nonnullable side, since
-        * then we'd produce no output rows, rather than the intended single
-        * null-extended row, for any nonnullable-side rows failing the qual.
+        * The qual is attached to an outer join and mentions (some of
+        * the) rels on the nonnullable side.  Force the qual to be
+        * evaluated exactly at the level of joining corresponding to the
+        * outer join. We cannot let it get pushed down into the
+        * nonnullable side, since then we'd produce no output rows,
+        * rather than the intended single null-extended row, for any
+        * nonnullable-side rows failing the qual.
         *
         * Note: an outer-join qual that mentions only nullable-side rels can
         * be pushed down into the nullable side without changing the join
@@ -464,13 +465,14 @@ distribute_qual_to_rels(Query *root, Node *clause,
    {
        /*
         * For a non-outer-join qual, we can evaluate the qual as soon as
-        * (1) we have all the rels it mentions, and (2) we are at or above
-        * any outer joins that can null any of these rels and are below the
-        * syntactic location of the given qual. To enforce the latter, scan
-        * the base rels listed in relids, and merge their outer-join sets
-        * into the clause's own reference list.  At the time we are called,
-        * the outerjoinset of each baserel will show exactly those outer
-        * joins that are below the qual in the join tree.
+        * (1) we have all the rels it mentions, and (2) we are at or
+        * above any outer joins that can null any of these rels and are
+        * below the syntactic location of the given qual. To enforce the
+        * latter, scan the base rels listed in relids, and merge their
+        * outer-join sets into the clause's own reference list.  At the
+        * time we are called, the outerjoinset of each baserel will show
+        * exactly those outer joins that are below the qual in the join
+        * tree.
         */
        Relids      addrelids = NULL;
        Relids      tmprelids;
@@ -496,9 +498,10 @@ distribute_qual_to_rels(Query *root, Node *clause,
            relids = bms_union(relids, addrelids);
            /* Should still be a subset of current scope ... */
            Assert(bms_is_subset(relids, qualscope));
+
            /*
-            * Because application of the qual will be delayed by outer join,
-            * we mustn't assume its vars are equal everywhere.
+            * Because application of the qual will be delayed by outer
+            * join, we mustn't assume its vars are equal everywhere.
             */
            can_be_equijoin = false;
        }
@@ -518,6 +521,7 @@ distribute_qual_to_rels(Query *root, Node *clause,
    switch (bms_membership(relids))
    {
        case BMS_SINGLETON:
+
            /*
             * There is only one relation participating in 'clause', so
             * 'clause' is a restriction clause for that relation.
@@ -525,28 +529,29 @@ distribute_qual_to_rels(Query *root, Node *clause,
            rel = find_base_rel(root, bms_singleton_member(relids));
 
            /*
-            * Check for a "mergejoinable" clause even though it's not a join
-            * clause.  This is so that we can recognize that "a.x = a.y"
-            * makes x and y eligible to be considered equal, even when they
-            * belong to the same rel.  Without this, we would not recognize
-            * that "a.x = a.y AND a.x = b.z AND a.y = c.q" allows us to
-            * consider z and q equal after their rels are joined.
+            * Check for a "mergejoinable" clause even though it's not a
+            * join clause.  This is so that we can recognize that "a.x =
+            * a.y" makes x and y eligible to be considered equal, even
+            * when they belong to the same rel.  Without this, we would
+            * not recognize that "a.x = a.y AND a.x = b.z AND a.y = c.q"
+            * allows us to consider z and q equal after their rels are
+            * joined.
             */
            if (can_be_equijoin)
                check_mergejoinable(restrictinfo);
 
            /*
-            * If the clause was deduced from implied equality, check to see
-            * whether it is redundant with restriction clauses we already
-            * have for this rel.  Note we cannot apply this check to
-            * user-written clauses, since we haven't found the canonical
-            * pathkey sets yet while processing user clauses.  (NB: no
-            * comparable check is done in the join-clause case; redundancy
-            * will be detected when the join clause is moved into a join
-            * rel's restriction list.)
+            * If the clause was deduced from implied equality, check to
+            * see whether it is redundant with restriction clauses we
+            * already have for this rel.  Note we cannot apply this check
+            * to user-written clauses, since we haven't found the
+            * canonical pathkey sets yet while processing user clauses.
+            * (NB: no comparable check is done in the join-clause case;
+            * redundancy will be detected when the join clause is moved
+            * into a join rel's restriction list.)
             */
            if (!isdeduced ||
-               !qual_is_redundant(root, restrictinfo, rel->baserestrictinfo))
+           !qual_is_redundant(root, restrictinfo, rel->baserestrictinfo))
            {
                /* Add clause to rel's restriction list */
                rel->baserestrictinfo = lappend(rel->baserestrictinfo,
@@ -554,13 +559,14 @@ distribute_qual_to_rels(Query *root, Node *clause,
            }
            break;
        case BMS_MULTIPLE:
+
            /*
-            * 'clause' is a join clause, since there is more than one rel in
-            * the relid set.   Set additional RestrictInfo fields for
-            * joining.  First, does it look like a normal join clause, i.e.,
-            * a binary operator relating expressions that come from distinct
-            * relations?  If so we might be able to use it in a join
-            * algorithm.
+            * 'clause' is a join clause, since there is more than one rel
+            * in the relid set.   Set additional RestrictInfo fields for
+            * joining.  First, does it look like a normal join clause,
+            * i.e., a binary operator relating expressions that come from
+            * distinct relations?  If so we might be able to use it in a
+            * join algorithm.
             */
            if (is_opclause(clause) && length(((OpExpr *) clause)->args) == 2)
            {
@@ -582,9 +588,9 @@ distribute_qual_to_rels(Query *root, Node *clause,
             * Now check for hash or mergejoinable operators.
             *
             * We don't bother setting the hashjoin info if we're not going
-            * to need it.  We do want to know about mergejoinable ops in all
-            * cases, however, because we use mergejoinable ops for other
-            * purposes such as detecting redundant clauses.
+            * to need it.  We do want to know about mergejoinable ops in
+            * all cases, however, because we use mergejoinable ops for
+            * other purposes such as detecting redundant clauses.
             */
            check_mergejoinable(restrictinfo);
            if (enable_hashjoin)
@@ -597,16 +603,18 @@ distribute_qual_to_rels(Query *root, Node *clause,
 
            /*
             * Add vars used in the join clause to targetlists of their
-            * relations, so that they will be emitted by the plan nodes that
-            * scan those relations (else they won't be available at the join
-            * node!).
+            * relations, so that they will be emitted by the plan nodes
+            * that scan those relations (else they won't be available at
+            * the join node!).
             */
            add_vars_to_targetlist(root, vars, relids);
            break;
        default:
+
            /*
-            * 'clause' references no rels, and therefore we have no place to
-            * attach it.  Shouldn't get here if callers are working properly.
+            * 'clause' references no rels, and therefore we have no place
+            * to attach it.  Shouldn't get here if callers are working
+            * properly.
             */
            elog(ERROR, "cannot cope with variable-free clause");
            break;
@@ -634,7 +642,7 @@ distribute_qual_to_rels(Query *root, Node *clause,
  *
  * This processing is a consequence of transitivity of mergejoin equality:
  * if we have mergejoinable clauses A = B and B = C, we can deduce A = C
- * (where = is an appropriate mergejoinable operator).  See path/pathkeys.c
+ * (where = is an appropriate mergejoinable operator). See path/pathkeys.c
  * for more details.
  */
 void
@@ -695,8 +703,8 @@ process_implied_equality(Query *root,
    }
 
    /*
-    * Scan to see if equality is already known.  If so, we're done in
-    * the add case, and done after removing it in the delete case.
+    * Scan to see if equality is already known.  If so, we're done in the
+    * add case, and done after removing it in the delete case.
     */
    foreach(itm, restrictlist)
    {
@@ -719,7 +727,7 @@ process_implied_equality(Query *root,
                {
                    /* delete it from local restrictinfo list */
                    rel1->baserestrictinfo = lremove(restrictinfo,
-                                                    rel1->baserestrictinfo);
+                                                rel1->baserestrictinfo);
                }
                else
                {
@@ -768,9 +776,9 @@ process_implied_equality(Query *root,
                 errmsg("equality operator for types %s and %s should be mergejoinable, but isn't",
                        format_type_be(ltype), format_type_be(rtype))));
 
-   clause = make_opclause(oprid(eq_operator), /* opno */
-                          BOOLOID, /* opresulttype */
-                          false, /* opretset */
+   clause = make_opclause(oprid(eq_operator),  /* opno */
+                          BOOLOID,     /* opresulttype */
+                          false,       /* opretset */
                           (Expr *) item1,
                           (Expr *) item2);
 
@@ -797,9 +805,9 @@ process_implied_equality(Query *root,
  *   too-small selectivity, not to mention wasting time at execution.
  *
  * Note: quals of the form "var = const" are never considered redundant,
- * only those of the form "var = var".  This is needed because when we
+ * only those of the form "var = var". This is needed because when we
  * have constants in an implied-equality set, we use a different strategy
- * that suppresses all "var = var" deductions.  We must therefore keep
+ * that suppresses all "var = var" deductions. We must therefore keep
  * all the "var = const" quals.
  */
 static bool
@@ -858,7 +866,8 @@ qual_is_redundant(Query *root,
     * left side of the new qual.  We traverse the old-quals list
     * repeatedly to transitively expand the exprs list.  If at any point
     * we find we can reach the right-side expr of the new qual, we are
-    * done.  We give up when we can't expand the equalexprs list any more.
+    * done.  We give up when we can't expand the equalexprs list any
+    * more.
     */
    equalexprs = makeList1(newleft);
    do
@@ -945,7 +954,7 @@ check_mergejoinable(RestrictInfo *restrictinfo)
  *   info fields in the restrictinfo.
  *
  *   Currently, we support hashjoin for binary opclauses where
- *   the operator is a hashjoinable operator.  The arguments can be
+ *   the operator is a hashjoinable operator.  The arguments can be
  *   anything --- as long as there are no volatile functions in them.
  */
 static void
index 8883310f66dabb6af8b7b72c3647b0d81153dc0b..4f0ede34520368f56ede8cd8e5f406d88a08d8f6 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.76 2003/07/25 00:01:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planmain.c,v 1.77 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -33,7 +33,7 @@
  *   which may involve joins but not any fancier features.
  *
  * Since query_planner does not handle the toplevel processing (grouping,
- * sorting, etc) it cannot select the best path by itself.  It selects
+ * sorting, etc) it cannot select the best path by itself. It selects
  * two paths: the cheapest path that produces all the required tuples,
  * independent of any ordering considerations, and the cheapest path that
  * produces the expected fraction of the required tuples in the required
@@ -84,7 +84,7 @@ query_planner(Query *root, List *tlist, double tuple_fraction,
    if (root->jointree->fromlist == NIL)
    {
        *cheapest_path = (Path *) create_result_path(NULL, NULL,
-                                           (List *) root->jointree->quals);
+                                        (List *) root->jointree->quals);
        *sorted_path = NULL;
        return;
    }
@@ -125,9 +125,9 @@ query_planner(Query *root, List *tlist, double tuple_fraction,
     * relations.  We also build lists of equijoined keys for pathkey
     * construction.
     *
-    * Note: all subplan nodes will have "flat" (var-only) tlists.
-    * This implies that all expression evaluations are done at the root of
-    * the plan tree.  Once upon a time there was code to try to push
+    * Note: all subplan nodes will have "flat" (var-only) tlists. This
+    * implies that all expression evaluations are done at the root of the
+    * plan tree.  Once upon a time there was code to try to push
     * expensive function calls down to lower plan nodes, but that's dead
     * code and has been for a long time...
     */
@@ -223,7 +223,8 @@ query_planner(Query *root, List *tlist, double tuple_fraction,
    }
 
    /*
-    * If we have constant quals, add a toplevel Result step to process them.
+    * If we have constant quals, add a toplevel Result step to process
+    * them.
     */
    if (constant_quals)
    {
index 1896982f02eacd96a81a4f3c9ed56ad3e362ddb7..c2aec37470ac8a848811de2291370aaf9265ee89 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.157 2003/07/25 00:01:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.158 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 /* Expression kind codes for preprocess_expression */
 #define EXPRKIND_QUAL  0
-#define EXPRKIND_TARGET    1
-#define EXPRKIND_RTFUNC    2
+#define EXPRKIND_TARGET 1
+#define EXPRKIND_RTFUNC 2
 #define EXPRKIND_LIMIT 3
-#define EXPRKIND_ININFO    4
+#define EXPRKIND_ININFO 4
 
 
 static Node *preprocess_expression(Query *parse, Node *expr, int kind);
@@ -59,9 +59,9 @@ static bool hash_safe_grouping(Query *parse);
 static List *make_subplanTargetList(Query *parse, List *tlist,
                       AttrNumber **groupColIdx, bool *need_tlist_eval);
 static void locate_grouping_columns(Query *parse,
-                                   List *tlist,
-                                   List *sub_tlist,
-                                   AttrNumber *groupColIdx);
+                       List *tlist,
+                       List *sub_tlist,
+                       AttrNumber *groupColIdx);
 static List *postprocess_setop_tlist(List *new_tlist, List *orig_tlist);
 
 
@@ -103,9 +103,9 @@ planner(Query *parse, bool isCursor, int cursorOptions)
    {
        /*
         * We have no real idea how many tuples the user will ultimately
-        * FETCH from a cursor, but it seems a good bet that he
-        * doesn't want 'em all.  Optimize for 10% retrieval (you
-        * gotta better number?  Should this be a SETtable parameter?)
+        * FETCH from a cursor, but it seems a good bet that he doesn't
+        * want 'em all.  Optimize for 10% retrieval (you gotta better
+        * number?  Should this be a SETtable parameter?)
         */
        tuple_fraction = 0.10;
    }
@@ -121,8 +121,8 @@ planner(Query *parse, bool isCursor, int cursorOptions)
    Assert(PlannerQueryLevel == 0);
 
    /*
-    * If creating a plan for a scrollable cursor, make sure it can
-    * run backwards on demand.  Add a Material node at the top at need.
+    * If creating a plan for a scrollable cursor, make sure it can run
+    * backwards on demand.  Add a Material node at the top at need.
     */
    if (isCursor && (cursorOptions & CURSOR_OPT_SCROLL))
    {
@@ -181,14 +181,14 @@ subquery_planner(Query *parse, double tuple_fraction)
 
    /*
     * Look for IN clauses at the top level of WHERE, and transform them
-    * into joins.  Note that this step only handles IN clauses originally
-    * at top level of WHERE; if we pull up any subqueries in the next step,
-    * their INs are processed just before pulling them up.
+    * into joins.  Note that this step only handles IN clauses originally
+    * at top level of WHERE; if we pull up any subqueries in the next
+    * step, their INs are processed just before pulling them up.
     */
    parse->in_info_list = NIL;
    if (parse->hasSubLinks)
        parse->jointree->quals = pull_up_IN_clauses(parse,
-                                                   parse->jointree->quals);
+                                                parse->jointree->quals);
 
    /*
     * Check to see if any subqueries in the rangetable can be merged into
@@ -198,10 +198,11 @@ subquery_planner(Query *parse, double tuple_fraction)
        pull_up_subqueries(parse, (Node *) parse->jointree, false);
 
    /*
-    * 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.
+    * 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.
     */
    parse->hasJoinRTEs = false;
    hasOuterJoins = false;
@@ -283,19 +284,20 @@ subquery_planner(Query *parse, double tuple_fraction)
    parse->havingQual = (Node *) newHaving;
 
    /*
-    * If we have any outer joins, try to reduce them to plain inner joins.
-    * This step is most easily done after we've done expression preprocessing.
+    * If we have any outer joins, try to reduce them to plain inner
+    * joins. This step is most easily done after we've done expression
+    * preprocessing.
     */
    if (hasOuterJoins)
        reduce_outer_joins(parse);
 
    /*
-    * See if we can simplify the jointree; opportunities for this may come
-    * from having pulled up subqueries, or from flattening explicit JOIN
-    * syntax.  We must do this after flattening JOIN alias variables, since
-    * eliminating explicit JOIN nodes from the jointree will cause
-    * get_relids_for_join() to fail.  But it should happen after
-    * reduce_outer_joins, anyway.
+    * See if we can simplify the jointree; opportunities for this may
+    * come from having pulled up subqueries, or from flattening explicit
+    * JOIN syntax.  We must do this after flattening JOIN alias
+    * variables, since eliminating explicit JOIN nodes from the jointree
+    * will cause get_relids_for_join() to fail.  But it should happen
+    * after reduce_outer_joins, anyway.
     */
    parse->jointree = (FromExpr *)
        simplify_jointree(parse, (Node *) parse->jointree);
@@ -318,26 +320,26 @@ subquery_planner(Query *parse, double tuple_fraction)
     */
    if (PlannerPlanId != saved_planid || PlannerQueryLevel > 1)
    {
-       Cost    initplan_cost = 0;
+       Cost        initplan_cost = 0;
 
        /* Prepare extParam/allParam sets for all nodes in tree */
        SS_finalize_plan(plan, parse->rtable);
 
        /*
-        * SS_finalize_plan doesn't handle initPlans, so we have to manually
-        * attach them to the topmost plan node, and add their extParams to
-        * the topmost node's, too.
+        * SS_finalize_plan doesn't handle initPlans, so we have to
+        * manually attach them to the topmost plan node, and add their
+        * extParams to the topmost node's, too.
         *
-        * We also add the total_cost of each initPlan to the startup cost
-        * of the top node.  This is a conservative overestimate, since in
-        * fact each initPlan might be executed later than plan startup, or
-        * even not at all.
+        * We also add the total_cost of each initPlan to the startup cost of
+        * the top node.  This is a conservative overestimate, since in
+        * fact each initPlan might be executed later than plan startup,
+        * or even not at all.
         */
        plan->initPlan = PlannerInitPlan;
 
        foreach(lst, plan->initPlan)
        {
-           SubPlan    *initplan = (SubPlan *) lfirst(lst);
+           SubPlan    *initplan = (SubPlan *) lfirst(lst);
 
            plan->extParam = bms_add_members(plan->extParam,
                                             initplan->plan->extParam);
@@ -368,7 +370,8 @@ preprocess_expression(Query *parse, Node *expr, int kind)
    /*
     * If the query has any join RTEs, replace join alias variables with
     * base-relation variables. We must do this before sublink processing,
-    * else sublinks expanded out from join aliases wouldn't get processed.
+    * else sublinks expanded out from join aliases wouldn't get
+    * processed.
     */
    if (parse->hasJoinRTEs)
        expr = flatten_join_alias_vars(parse, expr);
@@ -403,8 +406,8 @@ preprocess_expression(Query *parse, Node *expr, int kind)
        expr = SS_process_sublinks(expr, (kind == EXPRKIND_QUAL));
 
    /*
-    * XXX do not insert anything here unless you have grokked the comments
-    * in SS_replace_correlation_vars ...
+    * XXX do not insert anything here unless you have grokked the
+    * comments in SS_replace_correlation_vars ...
     */
 
    /* Replace uplevel vars with Param nodes */
@@ -498,20 +501,21 @@ inheritance_planner(Query *parse, List *inheritlist)
        /* Generate plan */
        subplan = grouping_planner(subquery, 0.0 /* retrieve all tuples */ );
        subplans = lappend(subplans, subplan);
+
        /*
         * It's possible that additional RTEs got added to the rangetable
         * due to expansion of inherited source tables (see allpaths.c).
         * If so, we must copy 'em back to the main parse tree's rtable.
         *
-        * XXX my goodness this is ugly.  Really need to think about ways
-        * to rein in planner's habit of scribbling on its input.
+        * XXX my goodness this is ugly.  Really need to think about ways to
+        * rein in planner's habit of scribbling on its input.
         */
        subrtlength = length(subquery->rtable);
        if (subrtlength > mainrtlength)
        {
-           List   *subrt = subquery->rtable;
+           List       *subrt = subquery->rtable;
 
-           while (mainrtlength-- > 0) /* wish we had nthcdr() */
+           while (mainrtlength-- > 0)  /* wish we had nthcdr() */
                subrt = lnext(subrt);
            parse->rtable = nconc(parse->rtable, subrt);
            mainrtlength = subrtlength;
@@ -684,7 +688,7 @@ grouping_planner(Query *parse, double tuple_fraction)
         * from tlist if grouping or aggregation is needed.
         */
        sub_tlist = make_subplanTargetList(parse, tlist,
-                                          &groupColIdx, &need_tlist_eval);
+                                        &groupColIdx, &need_tlist_eval);
 
        /*
         * Calculate pathkeys that represent grouping/ordering
@@ -700,8 +704,8 @@ grouping_planner(Query *parse, double tuple_fraction)
         * Also, it's possible that optimization has eliminated all
         * aggregates, and we may as well check for that here.
         *
-        * Note: we do not attempt to detect duplicate aggregates here;
-        * somewhat-overestimated count is okay for our present purposes.
+        * Note: we do not attempt to detect duplicate aggregates here; a
+        * somewhat-overestimated count is okay for our present purposes.
         */
        if (parse->hasAggs)
        {
@@ -892,8 +896,8 @@ grouping_planner(Query *parse, double tuple_fraction)
                      &cheapest_path, &sorted_path);
 
        /*
-        * We couldn't canonicalize group_pathkeys and sort_pathkeys before
-        * running query_planner(), so do it now.
+        * We couldn't canonicalize group_pathkeys and sort_pathkeys
+        * before running query_planner(), so do it now.
         */
        group_pathkeys = canonicalize_pathkeys(parse, group_pathkeys);
        sort_pathkeys = canonicalize_pathkeys(parse, sort_pathkeys);
@@ -903,9 +907,9 @@ grouping_planner(Query *parse, double tuple_fraction)
         */
        if (parse->groupClause)
        {
-           List   *groupExprs;
-           double  cheapest_path_rows;
-           int     cheapest_path_width;
+           List       *groupExprs;
+           double      cheapest_path_rows;
+           int         cheapest_path_width;
 
            /*
             * Beware in this section of the possibility that
@@ -919,13 +923,13 @@ grouping_planner(Query *parse, double tuple_fraction)
            }
            else
            {
-               cheapest_path_rows = 1; /* assume non-set result */
-               cheapest_path_width = 100; /* arbitrary */
+               cheapest_path_rows = 1; /* assume non-set result */
+               cheapest_path_width = 100;      /* arbitrary */
            }
 
            /*
-            * Always estimate the number of groups.  We can't do this until
-            * after running query_planner(), either.
+            * Always estimate the number of groups.  We can't do this
+            * until after running query_planner(), either.
             */
            groupExprs = get_sortgrouplist_exprs(parse->groupClause,
                                                 parse->targetList);
@@ -936,12 +940,13 @@ grouping_planner(Query *parse, double tuple_fraction)
            numGroups = (long) Min(dNumGroups, (double) LONG_MAX);
 
            /*
-            * Check can't-do-it conditions, including whether the grouping
-            * operators are hashjoinable.
+            * Check can't-do-it conditions, including whether the
+            * grouping operators are hashjoinable.
             *
             * Executor doesn't support hashed aggregation with DISTINCT
-            * aggregates.  (Doing so would imply storing *all* the input
-            * values in the hash table, which seems like a certain loser.)
+            * aggregates.  (Doing so would imply storing *all* the input
+            * values in the hash table, which seems like a certain
+            * loser.)
             */
            if (!enable_hashagg || !hash_safe_grouping(parse))
                use_hashed_grouping = false;
@@ -953,32 +958,30 @@ grouping_planner(Query *parse, double tuple_fraction)
            {
                /*
                 * Use hashed grouping if (a) we think we can fit the
-                * hashtable into SortMem, *and* (b) the estimated cost
-                * is no more than doing it the other way.  While avoiding
+                * hashtable into SortMem, *and* (b) the estimated cost is
+                * no more than doing it the other way.  While avoiding
                 * the need for sorted input is usually a win, the fact
                 * that the output won't be sorted may be a loss; so we
                 * need to do an actual cost comparison.
                 *
                 * In most cases we have no good way to estimate the size of
-                * the transition value needed by an aggregate; arbitrarily
-                * assume it is 100 bytes.  Also set the overhead per hashtable
-                * entry at 64 bytes.
+                * the transition value needed by an aggregate;
+                * arbitrarily assume it is 100 bytes.  Also set the
+                * overhead per hashtable entry at 64 bytes.
                 */
-               int     hashentrysize = cheapest_path_width + 64 + numAggs * 100;
+               int         hashentrysize = cheapest_path_width + 64 + numAggs * 100;
 
                if (hashentrysize * dNumGroups <= SortMem * 1024L)
                {
                    /*
                     * Okay, do the cost comparison.  We need to consider
-                    *  cheapest_path + hashagg [+ final sort]
-                    * versus either
-                    *  cheapest_path [+ sort] + group or agg [+ final sort]
-                    * or
-                    *  presorted_path + group or agg [+ final sort]
-                    * where brackets indicate a step that may not be needed.
-                    * We assume query_planner() will have returned a
-                    * presorted path only if it's a winner compared to
-                    * cheapest_path for this purpose.
+                    * cheapest_path + hashagg [+ final sort] versus
+                    * either cheapest_path [+ sort] + group or agg [+
+                    * final sort] or presorted_path + group or agg [+
+                    * final sort] where brackets indicate a step that may
+                    * not be needed. We assume query_planner() will have
+                    * returned a presorted path only if it's a winner
+                    * compared to cheapest_path for this purpose.
                     *
                     * These path variables are dummies that just hold cost
                     * fields; we don't make actual Paths for these steps.
@@ -1065,9 +1068,9 @@ grouping_planner(Query *parse, double tuple_fraction)
        /*
         * Select the best path and create a plan to execute it.
         *
-        * If we are doing hashed grouping, we will always read all the
-        * input tuples, so use the cheapest-total path.  Otherwise,
-        * trust query_planner's decision about which to use.
+        * If we are doing hashed grouping, we will always read all the input
+        * tuples, so use the cheapest-total path.  Otherwise, trust
+        * query_planner's decision about which to use.
         */
        if (sorted_path && !use_hashed_grouping)
        {
@@ -1081,19 +1084,19 @@ grouping_planner(Query *parse, double tuple_fraction)
        }
 
        /*
-        * create_plan() returns a plan with just a "flat" tlist of required
-        * Vars.  Usually we need to insert the sub_tlist as the tlist of the
-        * top plan node.  However, we can skip that if we determined that
-        * whatever query_planner chose to return will be good enough.
+        * create_plan() returns a plan with just a "flat" tlist of
+        * required Vars.  Usually we need to insert the sub_tlist as the
+        * tlist of the top plan node.  However, we can skip that if we
+        * determined that whatever query_planner chose to return will be
+        * good enough.
         */
        if (need_tlist_eval)
        {
            /*
             * If the top-level plan node is one that cannot do expression
-            * evaluation, we must insert a Result node to project the desired
-            * tlist.
-            * Currently, the only plan node we might see here that falls into
-            * that category is Append.
+            * evaluation, we must insert a Result node to project the
+            * desired tlist. Currently, the only plan node we might see
+            * here that falls into that category is Append.
             */
            if (IsA(result_plan, Append))
            {
@@ -1108,23 +1111,25 @@ grouping_planner(Query *parse, double tuple_fraction)
                 */
                result_plan->targetlist = sub_tlist;
            }
+
            /*
             * Also, account for the cost of evaluation of the sub_tlist.
             *
             * Up to now, we have only been dealing with "flat" tlists,
             * containing just Vars.  So their evaluation cost is zero
             * according to the model used by cost_qual_eval() (or if you
-            * prefer, the cost is factored into cpu_tuple_cost).  Thus we can
-            * avoid accounting for tlist cost throughout query_planner() and
-            * subroutines.  But now we've inserted a tlist that might contain
-            * actual operators, sub-selects, etc --- so we'd better account
-            * for its cost.
+            * prefer, the cost is factored into cpu_tuple_cost).  Thus we
+            * can avoid accounting for tlist cost throughout
+            * query_planner() and subroutines.  But now we've inserted a
+            * tlist that might contain actual operators, sub-selects, etc
+            * --- so we'd better account for its cost.
             *
-            * Below this point, any tlist eval cost for added-on nodes should
-            * be accounted for as we create those nodes.  Presently, of the
-            * node types we can add on, only Agg and Group project new tlists
-            * (the rest just copy their input tuples) --- so make_agg() and
-            * make_group() are responsible for computing the added cost.
+            * Below this point, any tlist eval cost for added-on nodes
+            * should be accounted for as we create those nodes.
+            * Presently, of the node types we can add on, only Agg and
+            * Group project new tlists (the rest just copy their input
+            * tuples) --- so make_agg() and make_group() are responsible
+            * for computing the added cost.
             */
            cost_qual_eval(&tlist_cost, sub_tlist);
            result_plan->startup_cost += tlist_cost.startup;
@@ -1135,8 +1140,8 @@ grouping_planner(Query *parse, double tuple_fraction)
        {
            /*
             * Since we're using query_planner's tlist and not the one
-            * make_subplanTargetList calculated, we have to refigure
-            * any grouping-column indexes make_subplanTargetList computed.
+            * make_subplanTargetList calculated, we have to refigure any
+            * grouping-column indexes make_subplanTargetList computed.
             */
            locate_grouping_columns(parse, tlist, result_plan->targetlist,
                                    groupColIdx);
@@ -1180,6 +1185,7 @@ grouping_planner(Query *parse, double tuple_fraction)
                    current_pathkeys = group_pathkeys;
                }
                aggstrategy = AGG_SORTED;
+
                /*
                 * The AGG node will not change the sort ordering of its
                 * groups, so current_pathkeys describes the result too.
@@ -1205,7 +1211,8 @@ grouping_planner(Query *parse, double tuple_fraction)
        else
        {
            /*
-            * If there are no Aggs, we shouldn't have any HAVING qual anymore
+            * If there are no Aggs, we shouldn't have any HAVING qual
+            * anymore
             */
            Assert(parse->havingQual == NULL);
 
@@ -1216,8 +1223,8 @@ grouping_planner(Query *parse, double tuple_fraction)
            if (parse->groupClause)
            {
                /*
-                * Add an explicit sort if we couldn't make the path come out
-                * the way the GROUP node needs it.
+                * Add an explicit sort if we couldn't make the path come
+                * out the way the GROUP node needs it.
                 */
                if (!pathkeys_contained_in(group_pathkeys, current_pathkeys))
                {
@@ -1238,7 +1245,7 @@ grouping_planner(Query *parse, double tuple_fraction)
                /* The Group node won't change sort ordering */
            }
        }
-   } /* end of if (setOperations) */
+   }                           /* end of if (setOperations) */
 
    /*
     * If we were not able to make the plan come out in the right order,
@@ -1264,6 +1271,7 @@ grouping_planner(Query *parse, double tuple_fraction)
    {
        result_plan = (Plan *) make_unique(tlist, result_plan,
                                           parse->distinctClause);
+
        /*
         * If there was grouping or aggregation, leave plan_rows as-is
         * (ie, assume the result was already mostly unique).  If not,
@@ -1272,13 +1280,13 @@ grouping_planner(Query *parse, double tuple_fraction)
         */
        if (!parse->groupClause && !parse->hasAggs)
        {
-           List   *distinctExprs;
+           List       *distinctExprs;
 
            distinctExprs = get_sortgrouplist_exprs(parse->distinctClause,
                                                    parse->targetList);
            result_plan->plan_rows = estimate_num_groups(parse,
                                                         distinctExprs,
-                                                        result_plan->plan_rows);
+                                                result_plan->plan_rows);
        }
    }
 
@@ -1443,7 +1451,7 @@ make_subplanTargetList(Query *parse,
                                                false),
                                     (Expr *) groupexpr);
                sub_tlist = lappend(sub_tlist, te);
-               *need_tlist_eval = true; /* it's not flat anymore */
+               *need_tlist_eval = true;        /* it's not flat anymore */
            }
 
            /* and save its resno */
@@ -1459,7 +1467,7 @@ make_subplanTargetList(Query *parse,
  *     Locate grouping columns in the tlist chosen by query_planner.
  *
  * This is only needed if we don't use the sub_tlist chosen by
- * make_subplanTargetList.  We have to forget the column indexes found
+ * make_subplanTargetList. We have to forget the column indexes found
  * by that routine and re-locate the grouping vars in the real sub_tlist.
  */
 static void
@@ -1528,7 +1536,7 @@ postprocess_setop_tlist(List *new_tlist, List *orig_tlist)
        Assert(orig_tlist != NIL);
        orig_tle = (TargetEntry *) lfirst(orig_tlist);
        orig_tlist = lnext(orig_tlist);
-       if (orig_tle->resdom->resjunk) /* should not happen */
+       if (orig_tle->resdom->resjunk)  /* should not happen */
            elog(ERROR, "resjunk output columns are not implemented");
        Assert(new_tle->resdom->resno == orig_tle->resdom->resno);
        Assert(new_tle->resdom->restype == orig_tle->resdom->restype);
index 18395be022b6e2be465cd3b61fe908d83fee0e09..91396575b3f1b130e333d99bd1797491015ef005 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.94 2003/07/25 00:01:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.95 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,11 +46,11 @@ static void set_join_references(Join *join, List *rtable);
 static void set_uppernode_references(Plan *plan, Index subvarno);
 static bool targetlist_has_non_vars(List *tlist);
 static List *join_references(List *clauses,
-                            List *rtable,
-                            List *outer_tlist,
-                            List *inner_tlist,
-                            Index acceptable_rel,
-                            bool tlists_have_non_vars);
+               List *rtable,
+               List *outer_tlist,
+               List *inner_tlist,
+               Index acceptable_rel,
+               bool tlists_have_non_vars);
 static Node *join_references_mutator(Node *node,
                        join_references_context *context);
 static Node *replace_vars_with_subplan_refs(Node *node,
@@ -60,7 +60,7 @@ static Node *replace_vars_with_subplan_refs(Node *node,
 static Node *replace_vars_with_subplan_refs_mutator(Node *node,
                        replace_vars_with_subplan_refs_context *context);
 static bool fix_opfuncids_walker(Node *node, void *context);
-static void set_sa_opfuncid(ScalarArrayOpExpr *opexpr);
+static void set_sa_opfuncid(ScalarArrayOpExpr * opexpr);
 
 
 /*****************************************************************************
@@ -167,12 +167,13 @@ set_plan_references(Plan *plan, List *rtable)
                              (Node *) ((HashJoin *) plan)->hashclauses);
            break;
        case T_Hash:
+
            /*
             * Hash does not evaluate its targetlist or quals, so don't
-            * touch those (see comments below).  But we do need to fix its
-            * hashkeys.  The hashkeys are a little bizarre because they
-            * need to match the hashclauses of the parent HashJoin node,
-            * so we use join_references to fix them.
+            * touch those (see comments below).  But we do need to fix
+            * its hashkeys.  The hashkeys are a little bizarre because
+            * they need to match the hashclauses of the parent HashJoin
+            * node, so we use join_references to fix them.
             */
            ((Hash *) plan)->hashkeys =
                join_references(((Hash *) plan)->hashkeys,
@@ -180,7 +181,7 @@ set_plan_references(Plan *plan, List *rtable)
                                NIL,
                                plan->lefttree->targetlist,
                                (Index) 0,
-                               targetlist_has_non_vars(plan->lefttree->targetlist));
+                   targetlist_has_non_vars(plan->lefttree->targetlist));
            fix_expr_references(plan,
                                (Node *) ((Hash *) plan)->hashkeys);
            break;
@@ -196,9 +197,9 @@ set_plan_references(Plan *plan, List *rtable)
             * unmodified input tuples).  The optimizer is lazy about
             * creating really valid targetlists for them.  Best to just
             * leave the targetlist alone.  In particular, we do not want
-            * to process subplans for them, since we will likely end
-            * up reprocessing subplans that also appear in lower levels
-            * of the plan tree!
+            * to process subplans for them, since we will likely end up
+            * reprocessing subplans that also appear in lower levels of
+            * the plan tree!
             */
            break;
        case T_Agg:
@@ -253,7 +254,7 @@ set_plan_references(Plan *plan, List *rtable)
 
    foreach(pl, plan->initPlan)
    {
-       SubPlan *sp = (SubPlan *) lfirst(pl);
+       SubPlan    *sp = (SubPlan *) lfirst(pl);
 
        Assert(IsA(sp, SubPlan));
        set_plan_references(sp->plan, sp->rtable);
@@ -284,14 +285,14 @@ fix_expr_references_walker(Node *node, void *context)
    if (IsA(node, OpExpr))
        set_opfuncid((OpExpr *) node);
    else if (IsA(node, DistinctExpr))
-       set_opfuncid((OpExpr *) node); /* rely on struct equivalence */
+       set_opfuncid((OpExpr *) node);  /* rely on struct equivalence */
    else if (IsA(node, ScalarArrayOpExpr))
        set_sa_opfuncid((ScalarArrayOpExpr *) node);
    else if (IsA(node, NullIfExpr))
-       set_opfuncid((OpExpr *) node); /* rely on struct equivalence */
+       set_opfuncid((OpExpr *) node);  /* rely on struct equivalence */
    else if (IsA(node, SubPlan))
    {
-       SubPlan *sp = (SubPlan *) node;
+       SubPlan    *sp = (SubPlan *) node;
 
        set_plan_references(sp->plan, sp->rtable);
    }
@@ -350,10 +351,10 @@ set_join_references(Join *join, List *rtable)
        if (IsA(inner_plan, IndexScan))
        {
            /*
-            * An index is being used to reduce the number of tuples scanned
-            * in the inner relation.  If there are join clauses being used
-            * with the index, we must update their outer-rel var nodes to
-            * refer to the outer side of the join.
+            * An index is being used to reduce the number of tuples
+            * scanned in the inner relation.  If there are join clauses
+            * being used with the index, we must update their outer-rel
+            * var nodes to refer to the outer side of the join.
             */
            IndexScan  *innerscan = (IndexScan *) inner_plan;
            List       *indxqualorig = innerscan->indxqualorig;
@@ -369,17 +370,18 @@ set_join_references(Join *join, List *rtable)
                                                          outer_tlist,
                                                          NIL,
                                                          innerrel,
-                                                         tlists_have_non_vars);
+                                                  tlists_have_non_vars);
                innerscan->indxqual = join_references(innerscan->indxqual,
                                                      rtable,
                                                      outer_tlist,
                                                      NIL,
                                                      innerrel,
-                                                     tlists_have_non_vars);
+                                                  tlists_have_non_vars);
+
                /*
-                * We must fix the inner qpqual too, if it has join clauses
-                * (this could happen if the index is lossy: some indxquals
-                * may get rechecked as qpquals).
+                * We must fix the inner qpqual too, if it has join
+                * clauses (this could happen if the index is lossy: some
+                * indxquals may get rechecked as qpquals).
                 */
                if (NumRelids((Node *) inner_plan->qual) > 1)
                    inner_plan->qual = join_references(inner_plan->qual,
@@ -387,7 +389,7 @@ set_join_references(Join *join, List *rtable)
                                                       outer_tlist,
                                                       NIL,
                                                       innerrel,
-                                                      tlists_have_non_vars);
+                                                  tlists_have_non_vars);
            }
        }
        else if (IsA(inner_plan, TidScan))
@@ -470,8 +472,8 @@ set_uppernode_references(Plan *plan, Index subvarno)
                                                 subplan_targetlist,
                                                 tlist_has_non_vars);
        output_targetlist = lappend(output_targetlist,
-                                 makeTargetEntry(tle->resdom,
-                                                 (Expr *) newexpr));
+                                   makeTargetEntry(tle->resdom,
+                                                   (Expr *) newexpr));
    }
    plan->targetlist = output_targetlist;
 
@@ -491,7 +493,7 @@ set_uppernode_references(Plan *plan, Index subvarno)
 static bool
 targetlist_has_non_vars(List *tlist)
 {
-   List   *l;
+   List       *l;
 
    foreach(l, tlist)
    {
@@ -740,11 +742,11 @@ fix_opfuncids_walker(Node *node, void *context)
    if (IsA(node, OpExpr))
        set_opfuncid((OpExpr *) node);
    else if (IsA(node, DistinctExpr))
-       set_opfuncid((OpExpr *) node); /* rely on struct equivalence */
+       set_opfuncid((OpExpr *) node);  /* rely on struct equivalence */
    else if (IsA(node, ScalarArrayOpExpr))
        set_sa_opfuncid((ScalarArrayOpExpr *) node);
    else if (IsA(node, NullIfExpr))
-       set_opfuncid((OpExpr *) node); /* rely on struct equivalence */
+       set_opfuncid((OpExpr *) node);  /* rely on struct equivalence */
    return expression_tree_walker(node, fix_opfuncids_walker, context);
 }
 
@@ -757,7 +759,7 @@ fix_opfuncids_walker(Node *node, void *context)
  * DistinctExpr and NullIfExpr nodes.
  */
 void
-set_opfuncid(OpExpr *opexpr)
+set_opfuncid(OpExpr * opexpr)
 {
    if (opexpr->opfuncid == InvalidOid)
        opexpr->opfuncid = get_opcode(opexpr->opno);
@@ -768,7 +770,7 @@ set_opfuncid(OpExpr *opexpr)
  *     As above, for ScalarArrayOpExpr nodes.
  */
 static void
-set_sa_opfuncid(ScalarArrayOpExpr *opexpr)
+set_sa_opfuncid(ScalarArrayOpExpr * opexpr)
 {
    if (opexpr->opfuncid == InvalidOid)
        opexpr->opfuncid = get_opcode(opexpr->opno);
index 780bed6c2bfaea3aec47eeacb980dc5a3e845bbe..154804d3d0f7c052e257d5d239161443336f11cd 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.79 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.80 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -71,26 +71,26 @@ typedef struct PlannerParamItem
 {
    Node       *item;           /* the Var, Aggref, or Param */
    Index       abslevel;       /* its absolute query level */
-} PlannerParamItem;
+}  PlannerParamItem;
 
 
 typedef struct finalize_primnode_context
 {
-   Bitmapset   *paramids;      /* Set of PARAM_EXEC paramids found */
-   Bitmapset   *outer_params;  /* Set of accessible outer paramids */
-} finalize_primnode_context;
+   Bitmapset  *paramids;       /* Set of PARAM_EXEC paramids found */
+   Bitmapset  *outer_params;   /* Set of accessible outer paramids */
+}  finalize_primnode_context;
 
 
 static List *convert_sublink_opers(List *lefthand, List *operOids,
-                                  List *targetlist, int rtindex,
-                                  List **righthandIds);
+                     List *targetlist, int rtindex,
+                     List **righthandIds);
 static bool subplan_is_hashable(SubLink *slink, SubPlan *node);
 static Node *replace_correlation_vars_mutator(Node *node, void *context);
 static Node *process_sublinks_mutator(Node *node, bool *isTopQual);
 static Bitmapset *finalize_plan(Plan *plan, List *rtable,
-                               Bitmapset *outer_params,
-                               Bitmapset *valid_params);
-static bool finalize_primnode(Node *node, finalize_primnode_context *context);
+             Bitmapset * outer_params,
+             Bitmapset * valid_params);
+static bool finalize_primnode(Node *node, finalize_primnode_context * context);
 
 
 /*
@@ -125,7 +125,7 @@ replace_outer_var(Var *var)
        pitem = (PlannerParamItem *) lfirst(ppl);
        if (pitem->abslevel == abslevel && IsA(pitem->item, Var))
        {
-           Var    *pvar = (Var *) pitem->item;
+           Var        *pvar = (Var *) pitem->item;
 
            if (pvar->varno == var->varno &&
                pvar->varattno == var->varattno &&
@@ -177,7 +177,7 @@ replace_outer_agg(Aggref *agg)
     * Just make a new slot every time.
     */
    agg = (Aggref *) copyObject(agg);
-   IncrementVarSublevelsUp((Node *) agg, - ((int) agg->agglevelsup), 0);
+   IncrementVarSublevelsUp((Node *) agg, -((int) agg->agglevelsup), 0);
    Assert(agg->agglevelsup == 0);
 
    pitem = (PlannerParamItem *) palloc(sizeof(PlannerParamItem));
@@ -238,7 +238,7 @@ generate_new_param(Oid paramtype, int32 paramtypmod)
 static Node *
 make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
 {
-   SubPlan    *node = makeNode(SubPlan);
+   SubPlan    *node = makeNode(SubPlan);
    Query      *subquery = (Query *) (slink->subselect);
    double      tuple_fraction;
    Plan       *plan;
@@ -268,8 +268,8 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
     * in path/costsize.c.
     *
     * XXX If an ALL/ANY subplan is uncorrelated, we may decide to hash or
-    * materialize its result below.  In that case it would've been better to
-    * specify full retrieval.  At present, however, we can only detect
+    * materialize its result below.  In that case it would've been better
+    * to specify full retrieval.  At present, however, we can only detect
     * correlation or lack of it after we've made the subplan :-(. Perhaps
     * detection of correlation should be done as a separate step.
     * Meanwhile, we don't want to be too optimistic about the percentage
@@ -323,12 +323,13 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
    bms_free(tmpset);
 
    /*
-    * Un-correlated or undirect correlated plans of EXISTS, EXPR, ARRAY, or
-    * MULTIEXPR types can be used as initPlans.  For EXISTS, EXPR, or ARRAY,
-    * we just produce a Param referring to the result of evaluating the
-    * initPlan.  For MULTIEXPR, we must build an AND or OR-clause of the
-    * individual comparison operators, using the appropriate lefthand
-    * side expressions and Params for the initPlan's target items.
+    * Un-correlated or undirect correlated plans of EXISTS, EXPR, ARRAY,
+    * or MULTIEXPR types can be used as initPlans.  For EXISTS, EXPR, or
+    * ARRAY, we just produce a Param referring to the result of
+    * evaluating the initPlan.  For MULTIEXPR, we must build an AND or
+    * OR-clause of the individual comparison operators, using the
+    * appropriate lefthand side expressions and Params for the initPlan's
+    * target items.
     */
    if (node->parParam == NIL && slink->subLinkType == EXISTS_SUBLINK)
    {
@@ -368,7 +369,7 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
    }
    else if (node->parParam == NIL && slink->subLinkType == MULTIEXPR_SUBLINK)
    {
-       List   *exprs;
+       List       *exprs;
 
        /* Convert the lefthand exprs and oper OIDs into executable exprs */
        exprs = convert_sublink_opers(lefthand,
@@ -378,6 +379,7 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
                                      &node->paramIds);
        node->setParam = listCopy(node->paramIds);
        PlannerInitPlan = lappend(PlannerInitPlan, node);
+
        /*
         * The executable expressions are returned to become part of the
         * outer plan's expression tree; they are not kept in the initplan
@@ -402,15 +404,16 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
         */
        if (subplan_is_hashable(slink, node))
            node->useHashTable = true;
+
        /*
-        * Otherwise, we have the option to tack a MATERIAL node onto the top
-        * of the subplan, to reduce the cost of reading it repeatedly.  This
-        * is pointless for a direct-correlated subplan, since we'd have to
-        * recompute its results each time anyway.  For uncorrelated/undirect
-        * correlated subplans, we add MATERIAL if the subplan's top plan node
-        * is anything more complicated than a plain sequential scan, and we
-        * do it even for seqscan if the qual appears selective enough to
-        * eliminate many tuples.
+        * Otherwise, we have the option to tack a MATERIAL node onto the
+        * top of the subplan, to reduce the cost of reading it
+        * repeatedly.  This is pointless for a direct-correlated subplan,
+        * since we'd have to recompute its results each time anyway.  For
+        * uncorrelated/undirect correlated subplans, we add MATERIAL if
+        * the subplan's top plan node is anything more complicated than a
+        * plain sequential scan, and we do it even for seqscan if the
+        * qual appears selective enough to eliminate many tuples.
         */
        else if (node->parParam == NIL)
        {
@@ -448,9 +451,7 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
                    break;
            }
            if (use_material)
-           {
                node->plan = plan = materialize_finished_plan(plan);
-           }
        }
 
        /* Convert the lefthand exprs and oper OIDs into executable exprs */
@@ -470,7 +471,7 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
 
            /*
             * The Var or Aggref has already been adjusted to have the
-            * correct varlevelsup or agglevelsup.  We probably don't even
+            * correct varlevelsup or agglevelsup.  We probably don't even
             * need to copy it again, but be safe.
             */
            args = lappend(args, copyObject(pitem->item));
@@ -485,14 +486,14 @@ make_subplan(SubLink *slink, List *lefthand, bool isTopQual)
 
 /*
  * convert_sublink_opers: given a lefthand-expressions list and a list of
- * operator OIDs, build a list of actually executable expressions.  The
+ * operator OIDs, build a list of actually executable expressions. The
  * righthand sides of the expressions are Params or Vars representing the
  * results of the sub-select.
  *
  * If rtindex is 0, we build Params to represent the sub-select outputs.
  * The paramids of the Params created are returned in the *righthandIds list.
  *
- * If rtindex is not 0, we build Vars using that rtindex as varno.  The
+ * If rtindex is not 0, we build Vars using that rtindex as varno. The
  * Vars themselves are returned in *righthandIds (this is a bit of a type
  * cheat, but we can get away with it).
  */
@@ -549,10 +550,10 @@ convert_sublink_opers(List *lefthand, List *operOids,
        /*
         * Make the expression node.
         *
-        * Note: we use make_op_expr in case runtime type conversion
-        * function calls must be inserted for this operator!  (But we
-        * are not expecting to have to resolve unknown Params, so
-        * it's okay to pass a null pstate.)
+        * Note: we use make_op_expr in case runtime type conversion function
+        * calls must be inserted for this operator!  (But we are not
+        * expecting to have to resolve unknown Params, so it's okay to
+        * pass a null pstate.)
         */
        result = lappend(result,
                         make_op_expr(NULL,
@@ -584,9 +585,9 @@ subplan_is_hashable(SubLink *slink, SubPlan *node)
    List       *opids;
 
    /*
-    * The sublink type must be "= ANY" --- that is, an IN operator.
-    * (We require the operator name to be unqualified, which may be
-    * overly paranoid, or may not be.)  XXX since we also check that the
+    * The sublink type must be "= ANY" --- that is, an IN operator. (We
+    * require the operator name to be unqualified, which may be overly
+    * paranoid, or may not be.)  XXX since we also check that the
     * operators are hashable, the test on operator name may be redundant?
     */
    if (slink->subLinkType != ANY_SUBLINK)
@@ -594,33 +595,37 @@ subplan_is_hashable(SubLink *slink, SubPlan *node)
    if (length(slink->operName) != 1 ||
        strcmp(strVal(lfirst(slink->operName)), "=") != 0)
        return false;
+
    /*
     * The subplan must not have any direct correlation vars --- else we'd
-    * have to recompute its output each time, so that the hashtable wouldn't
-    * gain anything.
+    * have to recompute its output each time, so that the hashtable
+    * wouldn't gain anything.
     */
    if (node->parParam != NIL)
        return false;
+
    /*
-    * The estimated size of the subquery result must fit in SortMem.
-    * (XXX what about hashtable overhead?)
+    * The estimated size of the subquery result must fit in SortMem. (XXX
+    * what about hashtable overhead?)
     */
    subquery_size = node->plan->plan_rows *
        (MAXALIGN(node->plan->plan_width) + MAXALIGN(sizeof(HeapTupleData)));
    if (subquery_size > SortMem * 1024L)
        return false;
+
    /*
-    * The combining operators must be hashable, strict, and self-commutative.
-    * The need for hashability is obvious, since we want to use hashing.
-    * Without strictness, behavior in the presence of nulls is too
-    * unpredictable.  (We actually must assume even more than plain
-    * strictness, see nodeSubplan.c for details.)  And commutativity ensures
-    * that the left and right datatypes are the same; this allows us to
-    * assume that the combining operators are equality for the righthand
-    * datatype, so that they can be used to compare righthand tuples as
-    * well as comparing lefthand to righthand tuples.  (This last restriction
-    * could be relaxed by using two different sets of operators with the
-    * hash table, but there is no obvious usefulness to that at present.)
+    * The combining operators must be hashable, strict, and
+    * self-commutative. The need for hashability is obvious, since we
+    * want to use hashing. Without strictness, behavior in the presence
+    * of nulls is too unpredictable.  (We actually must assume even more
+    * than plain strictness, see nodeSubplan.c for details.)  And
+    * commutativity ensures that the left and right datatypes are the
+    * same; this allows us to assume that the combining operators are
+    * equality for the righthand datatype, so that they can be used to
+    * compare righthand tuples as well as comparing lefthand to righthand
+    * tuples.  (This last restriction could be relaxed by using two
+    * different sets of operators with the hash table, but there is no
+    * obvious usefulness to that at present.)
     */
    foreach(opids, slink->operOids)
    {
@@ -665,25 +670,27 @@ convert_IN_to_join(Query *parse, SubLink *sublink)
    int         rtindex;
    RangeTblEntry *rte;
    RangeTblRef *rtr;
-   InClauseInfo  *ininfo;
+   InClauseInfo *ininfo;
    List       *exprs;
 
    /*
-    * The sublink type must be "= ANY" --- that is, an IN operator.
-    * (We require the operator name to be unqualified, which may be
-    * overly paranoid, or may not be.)
+    * The sublink type must be "= ANY" --- that is, an IN operator. (We
+    * require the operator name to be unqualified, which may be overly
+    * paranoid, or may not be.)
     */
    if (sublink->subLinkType != ANY_SUBLINK)
        return NULL;
    if (length(sublink->operName) != 1 ||
        strcmp(strVal(lfirst(sublink->operName)), "=") != 0)
        return NULL;
+
    /*
     * The sub-select must not refer to any Vars of the parent query.
     * (Vars of higher levels should be okay, though.)
     */
    if (contain_vars_of_level((Node *) subselect, 1))
        return NULL;
+
    /*
     * The left-hand expressions must contain some Vars of the current
     * query, else it's not gonna be a join.
@@ -691,6 +698,7 @@ convert_IN_to_join(Query *parse, SubLink *sublink)
    left_varnos = pull_varnos((Node *) sublink->lefthand);
    if (bms_is_empty(left_varnos))
        return NULL;
+
    /*
     * The left-hand expressions mustn't be volatile.  (Perhaps we should
     * test the combining operators, too?  We'd only need to point the
@@ -698,13 +706,14 @@ convert_IN_to_join(Query *parse, SubLink *sublink)
     */
    if (contain_volatile_functions((Node *) sublink->lefthand))
        return NULL;
+
    /*
     * Okay, pull up the sub-select into top range table and jointree.
     *
     * We rely here on the assumption that the outer query has no references
     * to the inner (necessarily true, other than the Vars that we build
-    * below).  Therefore this is a lot easier than what pull_up_subqueries
-    * has to go through.
+    * below).  Therefore this is a lot easier than what
+    * pull_up_subqueries has to go through.
     */
    rte = addRangeTableEntryForSubquery(NULL,
                                        subselect,
@@ -715,6 +724,7 @@ convert_IN_to_join(Query *parse, SubLink *sublink)
    rtr = makeNode(RangeTblRef);
    rtr->rtindex = rtindex;
    parse->jointree->fromlist = lappend(parse->jointree->fromlist, rtr);
+
    /*
     * Now build the InClauseInfo node.
     */
@@ -722,6 +732,7 @@ convert_IN_to_join(Query *parse, SubLink *sublink)
    ininfo->lefthand = left_varnos;
    ininfo->righthand = bms_make_singleton(rtindex);
    parse->in_info_list = lcons(ininfo, parse->in_info_list);
+
    /*
     * Build the result qual expressions.  As a side effect,
     * ininfo->sub_targetlist is filled with a list of the Vars
@@ -744,9 +755,9 @@ convert_IN_to_join(Query *parse, SubLink *sublink)
  * Since we do not recurse into the arguments of uplevel aggregates, they will
  * get copied to the appropriate subplan args list in the parent query with
  * uplevel vars not replaced by Params, but only adjusted in level (see
- * replace_outer_agg).  That's exactly what we want for the vars of the parent
+ * replace_outer_agg). That's exactly what we want for the vars of the parent
  * level --- but if an aggregate's argument contains any further-up variables,
- * they have to be replaced with Params in their turn.  That will happen when
+ * they have to be replaced with Params in their turn. That will happen when
  * the parent level runs SS_replace_correlation_vars.  Therefore it must do
  * so after expanding its sublinks to subplans.  And we don't want any steps
  * in between, else those steps would never get applied to the aggregate
@@ -796,7 +807,7 @@ SS_process_sublinks(Node *expr, bool isQual)
 static Node *
 process_sublinks_mutator(Node *node, bool *isTopQual)
 {
-   bool    locTopQual;
+   bool        locTopQual;
 
    if (node == NULL)
        return NULL;
@@ -806,11 +817,13 @@ process_sublinks_mutator(Node *node, bool *isTopQual)
        List       *lefthand;
 
        /*
-        * First, recursively process the lefthand-side expressions, if any.
+        * First, recursively process the lefthand-side expressions, if
+        * any.
         */
        locTopQual = false;
        lefthand = (List *)
            process_sublinks_mutator((Node *) sublink->lefthand, &locTopQual);
+
        /*
         * Now build the SubPlan node and make the expr to return.
         */
@@ -818,9 +831,9 @@ process_sublinks_mutator(Node *node, bool *isTopQual)
    }
 
    /*
-    * We should never see a SubPlan expression in the input (since this is
-    * the very routine that creates 'em to begin with).  We shouldn't find
-    * ourselves invoked directly on a Query, either.
+    * We should never see a SubPlan expression in the input (since this
+    * is the very routine that creates 'em to begin with).  We shouldn't
+    * find ourselves invoked directly on a Query, either.
     */
    Assert(!is_subplan(node));
    Assert(!IsA(node, Query));
@@ -854,9 +867,9 @@ SS_finalize_plan(Plan *plan, List *rtable)
    List       *lst;
 
    /*
-    * First, scan the param list to discover the sets of params that
-    * are available from outer query levels and my own query level.
-    * We do this once to save time in the per-plan recursion steps.
+    * First, scan the param list to discover the sets of params that are
+    * available from outer query levels and my own query level. We do
+    * this once to save time in the per-plan recursion steps.
     */
    paramid = 0;
    foreach(lst, PlannerParamList)
@@ -896,7 +909,7 @@ SS_finalize_plan(Plan *plan, List *rtable)
  */
 static Bitmapset *
 finalize_plan(Plan *plan, List *rtable,
-             Bitmapset *outer_params, Bitmapset *valid_params)
+             Bitmapset * outer_params, Bitmapset * valid_params)
 {
    finalize_primnode_context context;
    List       *lst;
@@ -1038,8 +1051,8 @@ finalize_plan(Plan *plan, List *rtable,
    plan->allParam = context.paramids;
 
    /*
-    * For speed at execution time, make sure extParam/allParam are actually
-    * NULL if they are empty sets.
+    * For speed at execution time, make sure extParam/allParam are
+    * actually NULL if they are empty sets.
     */
    if (bms_is_empty(plan->extParam))
    {
@@ -1060,7 +1073,7 @@ finalize_plan(Plan *plan, List *rtable,
  * expression tree to the result set.
  */
 static bool
-finalize_primnode(Node *node, finalize_primnode_context *context)
+finalize_primnode(Node *node, finalize_primnode_context * context)
 {
    if (node == NULL)
        return false;
@@ -1076,12 +1089,12 @@ finalize_primnode(Node *node, finalize_primnode_context *context)
    }
    if (is_subplan(node))
    {
-       SubPlan    *subplan = (SubPlan *) node;
+       SubPlan    *subplan = (SubPlan *) node;
 
        /* Add outer-level params needed by the subplan to paramids */
        context->paramids = bms_join(context->paramids,
-                                    bms_intersect(subplan->plan->extParam,
-                                                  context->outer_params));
+                                  bms_intersect(subplan->plan->extParam,
+                                                context->outer_params));
        /* fall through to recurse into subplan args */
    }
    return expression_tree_walker(node, finalize_primnode,
index 6bddf04206fdec11616e2178387e48b7f3e5d3c7..25617206d4fd3fdd09e3c171ad9e1fe93c146f0f 100644 (file)
@@ -16,7 +16,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepjointree.c,v 1.8 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepjointree.c,v 1.9 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 /* These parameters are set by GUC */
-int        from_collapse_limit;
-int        join_collapse_limit;
+int            from_collapse_limit;
+int            join_collapse_limit;
 
 
 typedef struct reduce_outer_joins_state
 {
    Relids      relids;         /* base relids within this subtree */
-   bool        contains_outer; /* does subtree contain outer join(s)? */
+   bool        contains_outer; /* does subtree contain outer join(s)? */
    List       *sub_states;     /* List of states for subtree components */
-} reduce_outer_joins_state;
+}  reduce_outer_joins_state;
 
 static bool is_simple_subquery(Query *subquery);
 static bool has_nullable_targetlist(Query *subquery);
 static void resolvenew_in_jointree(Node *jtnode, int varno, List *subtlist);
 static reduce_outer_joins_state *reduce_outer_joins_pass1(Node *jtnode);
 static void reduce_outer_joins_pass2(Node *jtnode,
-                                    reduce_outer_joins_state *state,
-                                    Query *parse,
-                                    Relids nonnullable_rels);
+                        reduce_outer_joins_state * state,
+                        Query *parse,
+                        Relids nonnullable_rels);
 static Relids find_nonnullable_rels(Node *node, bool top_level);
 static void fix_in_clause_relids(List *in_info_list, int varno,
-                                Relids subrelids);
+                    Relids subrelids);
 static Node *find_jointree_node_for_rel(Node *jtnode, int relid);
 
 
@@ -84,7 +84,7 @@ pull_up_IN_clauses(Query *parse, Node *node)
        return NULL;
    if (IsA(node, SubLink))
    {
-       SubLink    *sublink = (SubLink *) node;
+       SubLink    *sublink = (SubLink *) node;
        Node       *subst;
 
        /* Is it a convertible IN clause?  If not, return it as-is */
@@ -95,12 +95,12 @@ pull_up_IN_clauses(Query *parse, Node *node)
    }
    if (and_clause(node))
    {
-       List   *newclauses = NIL;
-       List   *oldclauses;
+       List       *newclauses = NIL;
+       List       *oldclauses;
 
        foreach(oldclauses, ((BoolExpr *) node)->args)
        {
-           Node   *oldclause = lfirst(oldclauses);
+           Node       *oldclause = lfirst(oldclauses);
 
            newclauses = lappend(newclauses,
                                 pull_up_IN_clauses(parse,
@@ -172,22 +172,22 @@ pull_up_subqueries(Query *parse, Node *jtnode, bool below_outer_join)
             */
            if (subquery->hasSubLinks)
                subquery->jointree->quals = pull_up_IN_clauses(subquery,
-                                                              subquery->jointree->quals);
+                                             subquery->jointree->quals);
 
            /*
-            * Now, recursively pull up the subquery's subqueries, so
-            * that this routine's processing is complete for its jointree
-            * and rangetable.  NB: if the same subquery is referenced
-            * from multiple jointree items (which can't happen normally,
-            * but might after rule rewriting), then we will invoke this
+            * Now, recursively pull up the subquery's subqueries, so that
+            * this routine's processing is complete for its jointree and
+            * rangetable.  NB: if the same subquery is referenced from
+            * multiple jointree items (which can't happen normally, but
+            * might after rule rewriting), then we will invoke this
             * processing multiple times on that subquery.  OK because
             * nothing will happen after the first time.  We do have to be
             * careful to copy everything we pull up, however, or risk
             * having chunks of structure multiply linked.
             *
             * Note: 'false' is correct here even if we are within an outer
-            * join in the upper query; the lower query starts with a clean
-            * slate for outer-join semantics.
+            * join in the upper query; the lower query starts with a
+            * clean slate for outer-join semantics.
             */
            subquery->jointree = (FromExpr *)
                pull_up_subqueries(subquery, (Node *) subquery->jointree,
@@ -207,8 +207,8 @@ pull_up_subqueries(Query *parse, Node *jtnode, bool below_outer_join)
            OffsetVarNodes((Node *) subquery, rtoffset, 0);
 
            /*
-            * Upper-level vars in subquery are now one level closer to their
-            * parent than before.
+            * Upper-level vars in subquery are now one level closer to
+            * their parent than before.
             */
            IncrementVarSublevelsUp((Node *) subquery, -1, 1);
 
@@ -257,13 +257,14 @@ pull_up_subqueries(Query *parse, Node *jtnode, bool below_outer_join)
            parse->rowMarks = nconc(parse->rowMarks, subquery->rowMarks);
 
            /*
-            * We also have to fix the relid sets of any parent InClauseInfo
-            * nodes.  (This could perhaps be done by ResolveNew, but it
-            * would clutter that routine's API unreasonably.)
+            * We also have to fix the relid sets of any parent
+            * InClauseInfo nodes.  (This could perhaps be done by
+            * ResolveNew, but it would clutter that routine's API
+            * unreasonably.)
             */
            if (parse->in_info_list)
            {
-               Relids  subrelids;
+               Relids      subrelids;
 
                subrelids = get_relids_in_jointree((Node *) subquery->jointree);
                fix_in_clause_relids(parse->in_info_list, varno, subrelids);
@@ -513,14 +514,14 @@ reduce_outer_joins(Query *parse)
    reduce_outer_joins_state *state;
 
    /*
-    * To avoid doing strictness checks on more quals than necessary,
-    * we want to stop descending the jointree as soon as there are no
-    * outer joins below our current point.  This consideration forces
-    * two-pass process.  The first pass gathers information about which
+    * To avoid doing strictness checks on more quals than necessary, we
+    * want to stop descending the jointree as soon as there are no outer
+    * joins below our current point.  This consideration forces a
+    * two-pass process.  The first pass gathers information about which
     * base rels appear below each side of each join clause, and about
-    * whether there are outer join(s) below each side of each join clause.
-    * The second pass examines qual clauses and changes join types as
-    * it descends the tree.
+    * whether there are outer join(s) below each side of each join
+    * clause. The second pass examines qual clauses and changes join
+    * types as it descends the tree.
     */
    state = reduce_outer_joins_pass1((Node *) parse->jointree);
 
@@ -608,7 +609,7 @@ reduce_outer_joins_pass1(Node *jtnode)
  */
 static void
 reduce_outer_joins_pass2(Node *jtnode,
-                        reduce_outer_joins_state *state,
+                        reduce_outer_joins_state * state,
                         Query *parse,
                         Relids nonnullable_rels)
 {
@@ -619,9 +620,7 @@ reduce_outer_joins_pass2(Node *jtnode,
    if (jtnode == NULL)
        elog(ERROR, "reached empty jointree");
    if (IsA(jtnode, RangeTblRef))
-   {
        elog(ERROR, "reached base rel");
-   }
    else if (IsA(jtnode, FromExpr))
    {
        FromExpr   *f = (FromExpr *) jtnode;
@@ -701,10 +700,11 @@ reduce_outer_joins_pass2(Node *jtnode,
            /*
             * If this join is (now) inner, we can add any nonnullability
             * constraints its quals provide to those we got from above.
-            * But if it is outer, we can only pass down the local constraints
-            * into the nullable side, because an outer join never eliminates
-            * any rows from its non-nullable side.  If it's a FULL join then
-            * it doesn't eliminate anything from either side.
+            * But if it is outer, we can only pass down the local
+            * constraints into the nullable side, because an outer join
+            * never eliminates any rows from its non-nullable side.  If
+            * it's a FULL join then it doesn't eliminate anything from
+            * either side.
             */
            if (jointype != JOIN_FULL)
            {
@@ -713,7 +713,8 @@ reduce_outer_joins_pass2(Node *jtnode,
                                                    nonnullable_rels);
            }
            else
-               local_nonnullable = NULL; /* no use in calculating it */
+               local_nonnullable = NULL;       /* no use in calculating
+                                                * it */
 
            if (left_state->contains_outer)
            {
@@ -747,7 +748,7 @@ reduce_outer_joins_pass2(Node *jtnode,
  *
  * We don't use expression_tree_walker here because we don't want to
  * descend through very many kinds of nodes; only the ones we can be sure
- * are strict.  We can descend through the top level of implicit AND'ing,
+ * are strict. We can descend through the top level of implicit AND'ing,
  * but not through any explicit ANDs (or ORs) below that, since those are not
  * strict constructs.  The List case handles the top-level implicit AND list
  * as well as lists of arguments to strict operators/functions.
@@ -785,7 +786,7 @@ find_nonnullable_rels(Node *node, bool top_level)
    }
    else if (IsA(node, OpExpr))
    {
-       OpExpr   *expr = (OpExpr *) node;
+       OpExpr     *expr = (OpExpr *) node;
 
        if (op_strict(expr->opno))
            result = find_nonnullable_rels((Node *) expr->args, false);
@@ -800,7 +801,7 @@ find_nonnullable_rels(Node *node, bool top_level)
    }
    else if (IsA(node, RelabelType))
    {
-       RelabelType   *expr = (RelabelType *) node;
+       RelabelType *expr = (RelabelType *) node;
 
        result = find_nonnullable_rels((Node *) expr->arg, top_level);
    }
@@ -817,7 +818,7 @@ find_nonnullable_rels(Node *node, bool top_level)
    }
    else if (IsA(node, BooleanTest))
    {
-       BooleanTest   *expr = (BooleanTest *) node;
+       BooleanTest *expr = (BooleanTest *) node;
 
        /*
         * Appropriate boolean tests are strict at top level.
@@ -894,10 +895,11 @@ simplify_jointree(Query *parse, Node *jtnode)
                    (childlen + myothers) <= from_collapse_limit)
                {
                    newlist = nconc(newlist, subf->fromlist);
+
                    /*
-                    * By now, the quals have been converted to implicit-AND
-                    * lists, so we just need to join the lists.  NOTE: we
-                    * put the pulled-up quals first.
+                    * By now, the quals have been converted to
+                    * implicit-AND lists, so we just need to join the
+                    * lists.  NOTE: we put the pulled-up quals first.
                     */
                    f->quals = (Node *) nconc((List *) subf->quals,
                                              (List *) f->quals);
@@ -917,16 +919,17 @@ simplify_jointree(Query *parse, Node *jtnode)
        /* Recursively simplify the children... */
        j->larg = simplify_jointree(parse, j->larg);
        j->rarg = simplify_jointree(parse, j->rarg);
+
        /*
-        * If it is an outer join, we must not flatten it.  An inner join
+        * If it is an outer join, we must not flatten it.  An inner join
         * is semantically equivalent to a FromExpr; we convert it to one,
         * allowing it to be flattened into its parent, if the resulting
         * FromExpr would have no more than join_collapse_limit members.
         */
        if (j->jointype == JOIN_INNER && join_collapse_limit > 1)
        {
-           int     leftlen,
-                   rightlen;
+           int         leftlen,
+                       rightlen;
 
            if (j->larg && IsA(j->larg, FromExpr))
                leftlen = length(((FromExpr *) j->larg)->fromlist);
index 24ea1316e117c7cec527f8de3ad36629f85e4aa3..cbe822448e497248e631fa749805ea5a465b7c3e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepqual.c,v 1.35 2003/05/28 22:32:49 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepqual.c,v 1.36 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "utils/lsyscache.h"
 
 static Expr *flatten_andors(Expr *qual);
-static void flatten_andors_and_walker(FastList *out_list, List *andlist);
-static void flatten_andors_or_walker(FastList *out_list, List *orlist);
+static void flatten_andors_and_walker(FastList * out_list, List *andlist);
+static void flatten_andors_or_walker(FastList * out_list, List *orlist);
 static List *pull_ands(List *andlist);
-static void pull_ands_walker(FastList *out_list, List *andlist);
+static void pull_ands_walker(FastList * out_list, List *andlist);
 static List *pull_ors(List *orlist);
-static void pull_ors_walker(FastList *out_list, List *orlist);
+static void pull_ors_walker(FastList * out_list, List *orlist);
 static Expr *find_nots(Expr *qual);
 static Expr *push_nots(Expr *qual);
 static Expr *find_ors(Expr *qual);
@@ -328,7 +328,7 @@ flatten_andors(Expr *qual)
 }
 
 static void
-flatten_andors_and_walker(FastList *out_list, List *andlist)
+flatten_andors_and_walker(FastList * out_list, List *andlist)
 {
    List       *arg;
 
@@ -344,7 +344,7 @@ flatten_andors_and_walker(FastList *out_list, List *andlist)
 }
 
 static void
-flatten_andors_or_walker(FastList *out_list, List *orlist)
+flatten_andors_or_walker(FastList * out_list, List *orlist)
 {
    List       *arg;
 
@@ -377,7 +377,7 @@ pull_ands(List *andlist)
 }
 
 static void
-pull_ands_walker(FastList *out_list, List *andlist)
+pull_ands_walker(FastList * out_list, List *andlist)
 {
    List       *arg;
 
@@ -410,7 +410,7 @@ pull_ors(List *orlist)
 }
 
 static void
-pull_ors_walker(FastList *out_list, List *orlist)
+pull_ors_walker(FastList * out_list, List *orlist)
 {
    List       *arg;
 
index 9c937f176029e86f73c1f0c702b686331c258fce..d33ff7417d41a873393dcc2f37704757058434d4 100644 (file)
@@ -15,7 +15,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.62 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/preptlist.c,v 1.63 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -174,12 +174,12 @@ expand_targetlist(List *tlist, int command_type,
             *
             * When generating a NULL constant for a dropped column, we label
             * it INT4 (any other guaranteed-to-exist datatype would do as
-            * well).  We can't label it with the dropped column's datatype
-            * since that might not exist anymore.  It does not really
-            * matter what we claim the type is, since NULL is NULL --- its
-            * representation is datatype-independent.  This could perhaps
-            * confuse code comparing the finished plan to the target
-            * relation, however.
+            * well).  We can't label it with the dropped column's
+            * datatype since that might not exist anymore.  It does not
+            * really matter what we claim the type is, since NULL is NULL
+            * --- its representation is datatype-independent.  This could
+            * perhaps confuse code comparing the finished plan to the
+            * target relation, however.
             */
            Oid         atttype = att_tup->atttypid;
            int32       atttypmod = att_tup->atttypmod;
@@ -193,7 +193,7 @@ expand_targetlist(List *tlist, int command_type,
                        new_expr = (Node *) makeConst(atttype,
                                                      att_tup->attlen,
                                                      (Datum) 0,
-                                                     true, /* isnull */
+                                                     true,     /* isnull */
                                                      att_tup->attbyval);
                        new_expr = coerce_to_domain(new_expr,
                                                    InvalidOid,
@@ -206,8 +206,8 @@ expand_targetlist(List *tlist, int command_type,
                        new_expr = (Node *) makeConst(INT4OID,
                                                      sizeof(int32),
                                                      (Datum) 0,
-                                                     true, /* isnull */
-                                                     true /* byval */);
+                                                     true,     /* isnull */
+                                                     true /* byval */ );
                        /* label resdom with INT4, too */
                        atttype = INT4OID;
                        atttypmod = -1;
@@ -228,8 +228,8 @@ expand_targetlist(List *tlist, int command_type,
                        new_expr = (Node *) makeConst(INT4OID,
                                                      sizeof(int32),
                                                      (Datum) 0,
-                                                     true, /* isnull */
-                                                     true /* byval */);
+                                                     true,     /* isnull */
+                                                     true /* byval */ );
                        /* label resdom with INT4, too */
                        atttype = INT4OID;
                        atttypmod = -1;
index 5422d5917289dd0bdb38f56fc37bc736c1a007b9..49ebc82208765516ac966b2334f0c810869cf94c 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.101 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.102 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -427,7 +427,7 @@ generate_setop_tlist(List *colTypes, int flag,
        }
        else
        {
-           expr = coerce_to_common_type(NULL, /* no UNKNOWNs here */
+           expr = coerce_to_common_type(NULL,  /* no UNKNOWNs here */
                                         expr,
                                         colType,
                                         "UNION/INTERSECT/EXCEPT");
@@ -849,11 +849,11 @@ adjust_inherited_attrs_mutator(Node *node,
    if (IsA(node, InClauseInfo))
    {
        /* Copy the InClauseInfo node with correct mutation of subnodes */
-       InClauseInfo   *ininfo;
+       InClauseInfo *ininfo;
 
        ininfo = (InClauseInfo *) expression_tree_mutator(node,
                                          adjust_inherited_attrs_mutator,
-                                                         (void *) context);
+                                                      (void *) context);
        /* now fix InClauseInfo's relid sets */
        ininfo->lefthand = adjust_relid_set(ininfo->lefthand,
                                            context->old_rt_index,
@@ -880,9 +880,9 @@ adjust_inherited_attrs_mutator(Node *node,
            adjust_inherited_attrs_mutator((Node *) oldinfo->clause, context);
 
        /*
-        * We do NOT want to copy the original subclauseindices list, since
-        * the new rel will have different indices.  The list will be rebuilt
-        * when needed during later planning.
+        * We do NOT want to copy the original subclauseindices list,
+        * since the new rel will have different indices.  The list will
+        * be rebuilt when needed during later planning.
         */
        newinfo->subclauseindices = NIL;
 
@@ -896,7 +896,7 @@ adjust_inherited_attrs_mutator(Node *node,
                                                 context->old_rt_index,
                                                 context->new_rt_index);
 
-       newinfo->eval_cost.startup = -1; /* reset these too */
+       newinfo->eval_cost.startup = -1;        /* reset these too */
        newinfo->this_selec = -1;
        newinfo->left_pathkey = NIL;    /* and these */
        newinfo->right_pathkey = NIL;
@@ -925,7 +925,7 @@ adjust_inherited_attrs_mutator(Node *node,
     */
    if (is_subplan(node))
    {
-       SubPlan *subplan;
+       SubPlan    *subplan;
 
        /* Copy the node and process subplan args */
        node = expression_tree_mutator(node, adjust_inherited_attrs_mutator,
@@ -963,7 +963,7 @@ adjust_relid_set(Relids relids, Index oldrelid, Index newrelid)
  *
  * The expressions have already been fixed, but we have to make sure that
  * the target resnos match the child table (they may not, in the case of
- * a column that was added after-the-fact by ALTER TABLE).  In some cases
+ * a column that was added after-the-fact by ALTER TABLE). In some cases
  * this can force us to re-order the tlist to preserve resno ordering.
  * (We do all this work in special cases so that preptlist.c is fast for
  * the typical case.)
index 3ebc1c650e87226807df288ba12fcf10671d6af0..4a419a35dc8d6657396a8e50d40581ea275f66b1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.149 2003/08/03 23:46:37 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/clauses.c,v 1.150 2003/08/04 00:43:20 momjian Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -50,7 +50,7 @@ typedef struct
    int         nargs;
    List       *args;
    int        *usecounts;
-} substitute_actual_parameters_context;
+}  substitute_actual_parameters_context;
 
 static bool contain_agg_clause_walker(Node *node, void *context);
 static bool contain_distinct_agg_clause_walker(Node *node, void *context);
@@ -62,15 +62,15 @@ static bool contain_volatile_functions_walker(Node *node, void *context);
 static bool contain_nonstrict_functions_walker(Node *node, void *context);
 static Node *eval_const_expressions_mutator(Node *node, List *active_fns);
 static Expr *simplify_function(Oid funcid, Oid result_type, List *args,
-                              bool allow_inline, List *active_fns);
+                 bool allow_inline, List *active_fns);
 static Expr *evaluate_function(Oid funcid, Oid result_type, List *args,
-                              HeapTuple func_tuple);
+                 HeapTuple func_tuple);
 static Expr *inline_function(Oid funcid, Oid result_type, List *args,
-                            HeapTuple func_tuple, List *active_fns);
+               HeapTuple func_tuple, List *active_fns);
 static Node *substitute_actual_parameters(Node *expr, int nargs, List *args,
-                                         int *usecounts);
+                            int *usecounts);
 static Node *substitute_actual_parameters_mutator(Node *node,
-                    substitute_actual_parameters_context *context);
+                        substitute_actual_parameters_context * context);
 static void sql_inline_error_callback(void *arg);
 static Expr *evaluate_expr(Expr *expr, Oid result_type);
 
@@ -110,7 +110,7 @@ make_opclause(Oid opno, Oid opresulttype, bool opretset,
 Node *
 get_leftop(Expr *clause)
 {
-   OpExpr *expr = (OpExpr *) clause;
+   OpExpr     *expr = (OpExpr *) clause;
 
    if (expr->args != NIL)
        return lfirst(expr->args);
@@ -127,7 +127,7 @@ get_leftop(Expr *clause)
 Node *
 get_rightop(Expr *clause)
 {
-   OpExpr *expr = (OpExpr *) clause;
+   OpExpr     *expr = (OpExpr *) clause;
 
    if (expr->args != NIL && lnext(expr->args) != NIL)
        return lfirst(lnext(expr->args));
@@ -408,7 +408,7 @@ count_agg_clause_walker(Node *node, int *count)
        if (contain_agg_clause((Node *) ((Aggref *) node)->target))
            ereport(ERROR,
                    (errcode(ERRCODE_GROUPING_ERROR),
-                    errmsg("aggregate function calls may not be nested")));
+                 errmsg("aggregate function calls may not be nested")));
 
        /*
         * Having checked that, we need not recurse into the argument.
@@ -454,7 +454,7 @@ expression_returns_set_walker(Node *node, void *context)
    }
    if (IsA(node, OpExpr))
    {
-       OpExpr   *expr = (OpExpr *) node;
+       OpExpr     *expr = (OpExpr *) node;
 
        if (expr->opretset)
            return true;
@@ -556,7 +556,7 @@ contain_mutable_functions_walker(Node *node, void *context)
    }
    if (IsA(node, OpExpr))
    {
-       OpExpr   *expr = (OpExpr *) node;
+       OpExpr     *expr = (OpExpr *) node;
 
        if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
            return true;
@@ -564,7 +564,7 @@ contain_mutable_functions_walker(Node *node, void *context)
    }
    if (IsA(node, DistinctExpr))
    {
-       DistinctExpr   *expr = (DistinctExpr *) node;
+       DistinctExpr *expr = (DistinctExpr *) node;
 
        if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
            return true;
@@ -572,7 +572,7 @@ contain_mutable_functions_walker(Node *node, void *context)
    }
    if (IsA(node, ScalarArrayOpExpr))
    {
-       ScalarArrayOpExpr   *expr = (ScalarArrayOpExpr *) node;
+       ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node;
 
        if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
            return true;
@@ -580,7 +580,7 @@ contain_mutable_functions_walker(Node *node, void *context)
    }
    if (IsA(node, NullIfExpr))
    {
-       NullIfExpr   *expr = (NullIfExpr *) node;
+       NullIfExpr *expr = (NullIfExpr *) node;
 
        if (op_volatile(expr->opno) != PROVOLATILE_IMMUTABLE)
            return true;
@@ -588,7 +588,7 @@ contain_mutable_functions_walker(Node *node, void *context)
    }
    if (IsA(node, SubLink))
    {
-       SubLink    *sublink = (SubLink *) node;
+       SubLink    *sublink = (SubLink *) node;
        List       *opid;
 
        foreach(opid, sublink->operOids)
@@ -639,7 +639,7 @@ contain_volatile_functions_walker(Node *node, void *context)
    }
    if (IsA(node, OpExpr))
    {
-       OpExpr   *expr = (OpExpr *) node;
+       OpExpr     *expr = (OpExpr *) node;
 
        if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
            return true;
@@ -647,7 +647,7 @@ contain_volatile_functions_walker(Node *node, void *context)
    }
    if (IsA(node, DistinctExpr))
    {
-       DistinctExpr   *expr = (DistinctExpr *) node;
+       DistinctExpr *expr = (DistinctExpr *) node;
 
        if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
            return true;
@@ -655,7 +655,7 @@ contain_volatile_functions_walker(Node *node, void *context)
    }
    if (IsA(node, ScalarArrayOpExpr))
    {
-       ScalarArrayOpExpr   *expr = (ScalarArrayOpExpr *) node;
+       ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node;
 
        if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
            return true;
@@ -663,7 +663,7 @@ contain_volatile_functions_walker(Node *node, void *context)
    }
    if (IsA(node, NullIfExpr))
    {
-       NullIfExpr   *expr = (NullIfExpr *) node;
+       NullIfExpr *expr = (NullIfExpr *) node;
 
        if (op_volatile(expr->opno) == PROVOLATILE_VOLATILE)
            return true;
@@ -671,7 +671,7 @@ contain_volatile_functions_walker(Node *node, void *context)
    }
    if (IsA(node, SubLink))
    {
-       SubLink    *sublink = (SubLink *) node;
+       SubLink    *sublink = (SubLink *) node;
        List       *opid;
 
        foreach(opid, sublink->operOids)
@@ -698,7 +698,7 @@ contain_volatile_functions_walker(Node *node, void *context)
  * could produce non-NULL output with a NULL input.
  *
  * XXX we do not examine sub-selects to see if they contain uses of
- * nonstrict functions.    It's not real clear if that is correct or not...
+ * nonstrict functions. It's not real clear if that is correct or not...
  * for the current usage it does not matter, since inline_function()
  * rejects cases with sublinks.
  */
@@ -723,7 +723,7 @@ contain_nonstrict_functions_walker(Node *node, void *context)
    }
    if (IsA(node, OpExpr))
    {
-       OpExpr   *expr = (OpExpr *) node;
+       OpExpr     *expr = (OpExpr *) node;
 
        if (!op_strict(expr->opno))
            return true;
@@ -766,7 +766,7 @@ contain_nonstrict_functions_walker(Node *node, void *context)
        return true;
    if (IsA(node, SubLink))
    {
-       SubLink    *sublink = (SubLink *) node;
+       SubLink    *sublink = (SubLink *) node;
        List       *opid;
 
        foreach(opid, sublink->operOids)
@@ -981,7 +981,7 @@ NumRelids(Node *clause)
  * XXX the clause is destructively modified!
  */
 void
-CommuteClause(OpExpr *clause)
+CommuteClause(OpExpr * clause)
 {
    Oid         opoid;
    Node       *temp;
@@ -1062,18 +1062,20 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
        args = (List *) expression_tree_mutator((Node *) expr->args,
                                          eval_const_expressions_mutator,
                                                (void *) active_fns);
+
        /*
-        * Code for op/func reduction is pretty bulky, so split it out
-        * as a separate function.
+        * Code for op/func reduction is pretty bulky, so split it out as
+        * a separate function.
         */
        simple = simplify_function(expr->funcid, expr->funcresulttype, args,
                                   true, active_fns);
        if (simple)             /* successfully simplified it */
            return (Node *) simple;
+
        /*
         * The expression cannot be simplified any further, so build and
-        * return a replacement FuncExpr node using the possibly-simplified
-        * arguments.
+        * return a replacement FuncExpr node using the
+        * possibly-simplified arguments.
         */
        newexpr = makeNode(FuncExpr);
        newexpr->funcid = expr->funcid;
@@ -1098,19 +1100,22 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
        args = (List *) expression_tree_mutator((Node *) expr->args,
                                          eval_const_expressions_mutator,
                                                (void *) active_fns);
+
        /*
-        * Need to get OID of underlying function.  Okay to scribble on
+        * Need to get OID of underlying function.  Okay to scribble on
         * input to this extent.
         */
        set_opfuncid(expr);
+
        /*
-        * Code for op/func reduction is pretty bulky, so split it out
-        * as a separate function.
+        * Code for op/func reduction is pretty bulky, so split it out as
+        * a separate function.
         */
        simple = simplify_function(expr->opfuncid, expr->opresulttype, args,
                                   true, active_fns);
        if (simple)             /* successfully simplified it */
            return (Node *) simple;
+
        /*
         * The expression cannot be simplified any further, so build and
         * return a replacement OpExpr node using the possibly-simplified
@@ -1136,8 +1141,8 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
        DistinctExpr *newexpr;
 
        /*
-        * Reduce constants in the DistinctExpr's arguments.  We know args is
-        * either NIL or a List node, so we can call
+        * Reduce constants in the DistinctExpr's arguments.  We know args
+        * is either NIL or a List node, so we can call
         * expression_tree_mutator directly rather than recursing to self.
         */
        args = (List *) expression_tree_mutator((Node *) expr->args,
@@ -1145,9 +1150,9 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
                                                (void *) active_fns);
 
        /*
-        * We must do our own check for NULLs because
-        * DistinctExpr has different results for NULL input
-        * than the underlying operator does.
+        * We must do our own check for NULLs because DistinctExpr has
+        * different results for NULL input than the underlying operator
+        * does.
         */
        foreach(arg, args)
        {
@@ -1175,10 +1180,12 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
            /* (NOT okay to try to inline it, though!) */
 
            /*
-            * Need to get OID of underlying function.  Okay to scribble on
-            * input to this extent.
+            * Need to get OID of underlying function.  Okay to scribble
+            * on input to this extent.
             */
-           set_opfuncid((OpExpr *) expr); /* rely on struct equivalence */
+           set_opfuncid((OpExpr *) expr);      /* rely on struct
+                                                * equivalence */
+
            /*
             * Code for op/func reduction is pretty bulky, so split it out
             * as a separate function.
@@ -1191,7 +1198,7 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
                 * Since the underlying operator is "=", must negate its
                 * result
                 */
-               Const  *csimple = (Const *) simple;
+               Const      *csimple = (Const *) simple;
 
                Assert(IsA(csimple, Const));
                csimple->constvalue =
@@ -1359,8 +1366,7 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
    if (IsA(node, SubPlan))
    {
        /*
-        * Return a SubPlan unchanged --- too late to do anything
-        * with it.
+        * Return a SubPlan unchanged --- too late to do anything with it.
         *
         * XXX should we ereport() here instead?  Probably this routine
         * should never be invoked after SubPlan creation.
@@ -1487,16 +1493,16 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
    }
    if (IsA(node, ArrayExpr))
    {
-       ArrayExpr *arrayexpr = (ArrayExpr *) node;
-       ArrayExpr *newarray;
-       bool all_const = true;
+       ArrayExpr  *arrayexpr = (ArrayExpr *) node;
+       ArrayExpr  *newarray;
+       bool        all_const = true;
        FastList    newelems;
-       List *element;
+       List       *element;
 
        FastListInit(&newelems);
        foreach(element, arrayexpr->elements)
        {
-           Node *e;
+           Node       *e;
 
            e = eval_const_expressions_mutator((Node *) lfirst(element),
                                               active_fns);
@@ -1522,19 +1528,20 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
        CoalesceExpr *coalesceexpr = (CoalesceExpr *) node;
        CoalesceExpr *newcoalesce;
        FastList    newargs;
-       List *arg;
+       List       *arg;
 
        FastListInit(&newargs);
        foreach(arg, coalesceexpr->args)
        {
-           Node *e;
+           Node       *e;
 
            e = eval_const_expressions_mutator((Node *) lfirst(arg),
                                               active_fns);
-           /* 
-            * We can remove null constants from the list.
-            * For a non-null constant, if it has not been preceded by any
-            * other non-null-constant expressions then that is the result.
+
+           /*
+            * We can remove null constants from the list. For a non-null
+            * constant, if it has not been preceded by any other
+            * non-null-constant expressions then that is the result.
             */
            if (IsA(e, Const))
            {
@@ -1555,10 +1562,11 @@ eval_const_expressions_mutator(Node *node, List *active_fns)
    {
        /*
         * We can optimize field selection from a whole-row Var into a
-        * simple Var.  (This case won't be generated directly by the
-        * parser, because ParseComplexProjection short-circuits it.
-        * But it can arise while simplifying functions.)  If the argument
-        * isn't a whole-row Var, just fall through to do generic processing.
+        * simple Var.  (This case won't be generated directly by the
+        * parser, because ParseComplexProjection short-circuits it. But
+        * it can arise while simplifying functions.)  If the argument
+        * isn't a whole-row Var, just fall through to do generic
+        * processing.
         */
        FieldSelect *fselect = (FieldSelect *) node;
        Var        *argvar = (Var *) fselect->arg;
@@ -1604,12 +1612,12 @@ simplify_function(Oid funcid, Oid result_type, List *args,
    Expr       *newexpr;
 
    /*
-    * We have two strategies for simplification: either execute the function
-    * to deliver a constant result, or expand in-line the body of the
-    * function definition (which only works for simple SQL-language
-    * functions, but that is a common case).  In either case we need access
-    * to the function's pg_proc tuple, so fetch it just once to use in both
-    * attempts.
+    * We have two strategies for simplification: either execute the
+    * function to deliver a constant result, or expand in-line the body
+    * of the function definition (which only works for simple
+    * SQL-language functions, but that is a common case).  In either case
+    * we need access to the function's pg_proc tuple, so fetch it just
+    * once to use in both attempts.
     */
    func_tuple = SearchSysCache(PROCOID,
                                ObjectIdGetDatum(funcid),
@@ -1668,15 +1676,15 @@ evaluate_function(Oid funcid, Oid result_type, List *args,
    /*
     * If the function is strict and has a constant-NULL input, it will
     * never be called at all, so we can replace the call by a NULL
-    * constant, even if there are other inputs that aren't constant,
-    * and even if the function is not otherwise immutable.
+    * constant, even if there are other inputs that aren't constant, and
+    * even if the function is not otherwise immutable.
     */
    if (funcform->proisstrict && has_null_input)
        return (Expr *) makeNullConst(result_type);
 
    /*
-    * Otherwise, can simplify only if the function is immutable and
-    * all inputs are constants. (For a non-strict function, constant NULL
+    * Otherwise, can simplify only if the function is immutable and all
+    * inputs are constants. (For a non-strict function, constant NULL
     * inputs are treated the same as constant non-NULL inputs.)
     */
    if (funcform->provolatile != PROVOLATILE_IMMUTABLE ||
@@ -1692,7 +1700,7 @@ evaluate_function(Oid funcid, Oid result_type, List *args,
    newexpr->funcid = funcid;
    newexpr->funcresulttype = result_type;
    newexpr->funcretset = false;
-   newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */
+   newexpr->funcformat = COERCE_EXPLICIT_CALL; /* doesn't matter */
    newexpr->args = args;
 
    return evaluate_expr((Expr *) newexpr, result_type);
@@ -1712,7 +1720,7 @@ evaluate_function(Oid funcid, Oid result_type, List *args,
  * do not re-expand them.  Also, if a parameter is used more than once
  * in the SQL-function body, we require it not to contain any volatile
  * functions (volatiles might deliver inconsistent answers) nor to be
- * unreasonably expensive to evaluate.  The expensiveness check not only
+ * unreasonably expensive to evaluate. The expensiveness check not only
  * prevents us from doing multiple evaluations of an expensive parameter
  * at runtime, but is a safety value to limit growth of an expression due
  * to repeated inlining.
@@ -1747,7 +1755,7 @@ inline_function(Oid funcid, Oid result_type, List *args,
 
    /*
     * Forget it if the function is not SQL-language or has other
-    * showstopper properties.  (The nargs check is just paranoia.)
+    * showstopper properties.  (The nargs check is just paranoia.)
     */
    if (funcform->prolang != SQLlanguageId ||
        funcform->prosecdef ||
@@ -1755,7 +1763,10 @@ inline_function(Oid funcid, Oid result_type, List *args,
        funcform->pronargs != length(args))
        return NULL;
 
-   /* Forget it if declared return type is not base, domain, or polymorphic */
+   /*
+    * Forget it if declared return type is not base, domain, or
+    * polymorphic
+    */
    result_typtype = get_typtype(funcform->prorettype);
    if (result_typtype != 'b' &&
        result_typtype != 'd')
@@ -1788,8 +1799,8 @@ inline_function(Oid funcid, Oid result_type, List *args,
    }
 
    /*
-    * Setup error traceback support for ereport().  This is so that we can
-    * finger the function that bad information came from.
+    * Setup error traceback support for ereport().  This is so that we
+    * can finger the function that bad information came from.
     */
    sqlerrcontext.callback = sql_inline_error_callback;
    sqlerrcontext.arg = funcform;
@@ -1818,9 +1829,9 @@ inline_function(Oid funcid, Oid result_type, List *args,
 
    /*
     * We just do parsing and parse analysis, not rewriting, because
-    * rewriting will not affect table-free-SELECT-only queries, which is all
-    * that we care about.  Also, we can punt as soon as we detect more than
-    * one command in the function body.
+    * rewriting will not affect table-free-SELECT-only queries, which is
+    * all that we care about.  Also, we can punt as soon as we detect
+    * more than one command in the function body.
     */
    raw_parsetree_list = pg_parse_query(src);
    if (length(raw_parsetree_list) != 1)
@@ -1863,8 +1874,8 @@ inline_function(Oid funcid, Oid result_type, List *args,
     * then it wasn't type-checked at definition time; must do so now.
     * (This will raise an error if wrong, but that's okay since the
     * function would fail at runtime anyway.  Note we do not try this
-    * until we have verified that no rewriting was needed; that's probably
-    * not important, but let's be careful.)
+    * until we have verified that no rewriting was needed; that's
+    * probably not important, but let's be careful.)
     */
    if (polymorphic)
        check_sql_fn_retval(result_type, get_typtype(result_type),
@@ -1875,9 +1886,9 @@ inline_function(Oid funcid, Oid result_type, List *args,
     * set, and it mustn't be more volatile than the surrounding function
     * (this is to avoid breaking hacks that involve pretending a function
     * is immutable when it really ain't).  If the surrounding function is
-    * declared strict, then the expression must contain only strict constructs
-    * and must use all of the function parameters (this is overkill, but
-    * an exact analysis is hard).
+    * declared strict, then the expression must contain only strict
+    * constructs and must use all of the function parameters (this is
+    * overkill, but an exact analysis is hard).
     */
    if (expression_returns_set(newexpr))
        goto fail;
@@ -1886,7 +1897,7 @@ inline_function(Oid funcid, Oid result_type, List *args,
        contain_mutable_functions(newexpr))
        goto fail;
    else if (funcform->provolatile == PROVOLATILE_STABLE &&
-       contain_volatile_functions(newexpr))
+            contain_volatile_functions(newexpr))
        goto fail;
 
    if (funcform->proisstrict &&
@@ -1907,7 +1918,7 @@ inline_function(Oid funcid, Oid result_type, List *args,
    i = 0;
    foreach(arg, args)
    {
-       Node   *param = lfirst(arg);
+       Node       *param = lfirst(arg);
 
        if (usecounts[i] == 0)
        {
@@ -1932,6 +1943,7 @@ inline_function(Oid funcid, Oid result_type, List *args,
            if (eval_cost.startup + eval_cost.per_tuple >
                10 * cpu_operator_cost)
                goto fail;
+
            /*
             * Check volatility last since this is more expensive than the
             * above tests
@@ -1943,8 +1955,8 @@ inline_function(Oid funcid, Oid result_type, List *args,
    }
 
    /*
-    * Whew --- we can make the substitution.  Copy the modified expression
-    * out of the temporary memory context, and clean up.
+    * Whew --- we can make the substitution.  Copy the modified
+    * expression out of the temporary memory context, and clean up.
     */
    MemoryContextSwitchTo(oldcxt);
 
@@ -1981,7 +1993,7 @@ substitute_actual_parameters(Node *expr, int nargs, List *args,
 {
    substitute_actual_parameters_context context;
 
-   context.nargs = nargs;
+   context.nargs = nargs;
    context.args = args;
    context.usecounts = usecounts;
 
@@ -1990,7 +2002,7 @@ substitute_actual_parameters(Node *expr, int nargs, List *args,
 
 static Node *
 substitute_actual_parameters_mutator(Node *node,
-                                    substitute_actual_parameters_context *context)
+                         substitute_actual_parameters_context * context)
 {
    if (node == NULL)
        return NULL;
@@ -2059,10 +2071,10 @@ evaluate_expr(Expr *expr, Oid result_type)
    /*
     * And evaluate it.
     *
-    * It is OK to use a default econtext because none of the
-    * ExecEvalExpr() code used in this situation will use econtext.  That
-    * might seem fortuitous, but it's not so unreasonable --- a constant
-    * expression does not depend on context, by definition, n'est ce pas?
+    * It is OK to use a default econtext because none of the ExecEvalExpr()
+    * code used in this situation will use econtext.  That might seem
+    * fortuitous, but it's not so unreasonable --- a constant expression
+    * does not depend on context, by definition, n'est ce pas?
     */
    const_val = ExecEvalExprSwitchContext(exprstate,
                                          GetPerTupleExprContext(estate),
@@ -2177,7 +2189,7 @@ evaluate_expr(Expr *expr, Oid result_type)
  *
  * expression_tree_walker will handle SubPlan nodes by recursing normally
  * into the "exprs" and "args" lists (which are expressions belonging to
- * the outer plan).  It will not touch the completed subplan, however.  Since
+ * the outer plan).  It will not touch the completed subplan, however. Since
  * there is no link to the original Query, it is not possible to recurse into
  * subselects of an already-planned expression tree.  This is OK for current
  * uses, but may need to be revisited in future.
@@ -2283,6 +2295,7 @@ expression_tree_walker(Node *node,
                if (expression_tree_walker((Node *) sublink->lefthand,
                                           walker, context))
                    return true;
+
                /*
                 * Also invoke the walker on the sublink's Query node, so
                 * it can recurse into the sub-query if it wants to.
@@ -2292,7 +2305,7 @@ expression_tree_walker(Node *node,
            break;
        case T_SubPlan:
            {
-               SubPlan *subplan = (SubPlan *) node;
+               SubPlan    *subplan = (SubPlan *) node;
 
                /* recurse into the exprs list, but not into the Plan */
                if (expression_tree_walker((Node *) subplan->exprs,
@@ -2457,12 +2470,12 @@ query_tree_walker(Query *query,
                /* nothing to do */
                break;
            case RTE_SUBQUERY:
-               if (! (flags & QTW_IGNORE_RT_SUBQUERIES))
+               if (!(flags & QTW_IGNORE_RT_SUBQUERIES))
                    if (walker(rte->subquery, context))
                        return true;
                break;
            case RTE_JOIN:
-               if (! (flags & QTW_IGNORE_JOINALIASES))
+               if (!(flags & QTW_IGNORE_JOINALIASES))
                    if (walker(rte->joinaliasvars, context))
                        return true;
                break;
@@ -2622,8 +2635,8 @@ expression_tree_mutator(Node *node,
            break;
        case T_DistinctExpr:
            {
-               DistinctExpr   *expr = (DistinctExpr *) node;
-               DistinctExpr   *newnode;
+               DistinctExpr *expr = (DistinctExpr *) node;
+               DistinctExpr *newnode;
 
                FLATCOPY(newnode, expr, DistinctExpr);
                MUTATE(newnode->args, expr->args, List *);
@@ -2632,8 +2645,8 @@ expression_tree_mutator(Node *node,
            break;
        case T_ScalarArrayOpExpr:
            {
-               ScalarArrayOpExpr   *expr = (ScalarArrayOpExpr *) node;
-               ScalarArrayOpExpr   *newnode;
+               ScalarArrayOpExpr *expr = (ScalarArrayOpExpr *) node;
+               ScalarArrayOpExpr *newnode;
 
                FLATCOPY(newnode, expr, ScalarArrayOpExpr);
                MUTATE(newnode->args, expr->args, List *);
@@ -2657,6 +2670,7 @@ expression_tree_mutator(Node *node,
 
                FLATCOPY(newnode, sublink, SubLink);
                MUTATE(newnode->lefthand, sublink->lefthand, List *);
+
                /*
                 * Also invoke the mutator on the sublink's Query node, so
                 * it can recurse into the sub-query if it wants to.
@@ -2667,8 +2681,8 @@ expression_tree_mutator(Node *node,
            break;
        case T_SubPlan:
            {
-               SubPlan    *subplan = (SubPlan *) node;
-               SubPlan    *newnode;
+               SubPlan    *subplan = (SubPlan *) node;
+               SubPlan    *newnode;
 
                FLATCOPY(newnode, subplan, SubPlan);
                /* transform exprs list */
@@ -2725,8 +2739,8 @@ expression_tree_mutator(Node *node,
            break;
        case T_ArrayExpr:
            {
-               ArrayExpr *arrayexpr = (ArrayExpr *) node;
-               ArrayExpr *newnode;
+               ArrayExpr  *arrayexpr = (ArrayExpr *) node;
+               ArrayExpr  *newnode;
 
                FLATCOPY(newnode, arrayexpr, ArrayExpr);
                MUTATE(newnode->elements, arrayexpr->elements, List *);
@@ -2745,8 +2759,8 @@ expression_tree_mutator(Node *node,
            break;
        case T_NullIfExpr:
            {
-               NullIfExpr   *expr = (NullIfExpr *) node;
-               NullIfExpr   *newnode;
+               NullIfExpr *expr = (NullIfExpr *) node;
+               NullIfExpr *newnode;
 
                FLATCOPY(newnode, expr, NullIfExpr);
                MUTATE(newnode->args, expr->args, List *);
@@ -2891,7 +2905,7 @@ expression_tree_mutator(Node *node,
  * indicated items.  (More flag bits may be added as needed.)
  *
  * Normally the Query node itself is copied, but some callers want it to be
- * modified in-place; they must pass QTW_DONT_COPY_QUERY in flags.  All
+ * modified in-place; they must pass QTW_DONT_COPY_QUERY in flags. All
  * modified substructure is safely copied in any case.
  */
 Query *
@@ -2905,9 +2919,9 @@ query_tree_mutator(Query *query,
 
    Assert(query != NULL && IsA(query, Query));
 
-   if (! (flags & QTW_DONT_COPY_QUERY))
+   if (!(flags & QTW_DONT_COPY_QUERY))
    {
-       Query  *newquery;
+       Query      *newquery;
 
        FLATCOPY(newquery, query, Query);
        query = newquery;
@@ -2933,7 +2947,7 @@ query_tree_mutator(Query *query,
                /* nothing to do, don't bother to make a copy */
                break;
            case RTE_SUBQUERY:
-               if (! (flags & QTW_IGNORE_RT_SUBQUERIES))
+               if (!(flags & QTW_IGNORE_RT_SUBQUERIES))
                {
                    FLATCOPY(newrte, rte, RangeTblEntry);
                    CHECKFLATCOPY(newrte->subquery, rte->subquery, Query);
@@ -2942,7 +2956,7 @@ query_tree_mutator(Query *query,
                }
                break;
            case RTE_JOIN:
-               if (! (flags & QTW_IGNORE_JOINALIASES))
+               if (!(flags & QTW_IGNORE_JOINALIASES))
                {
                    FLATCOPY(newrte, rte, RangeTblEntry);
                    MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *);
index 599dcf44d9b037385a0a72723b3d87f34dac8d26..add36b55d3b39da450ab5abeb6e857f9c73a6d5e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/joininfo.c,v 1.34 2003/02/08 20:20:55 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/joininfo.c,v 1.35 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -73,7 +73,7 @@ make_joininfo_node(RelOptInfo *this_rel, Relids join_relids)
  *   appropriate rel node if necessary).
  *
  * Note that the same copy of the restrictinfo node is linked to by all the
- * lists it is in.  This allows us to exploit caching of information about
+ * lists it is in. This allows us to exploit caching of information about
  * the restriction clause (but we must be careful that the information does
  * not depend on context).
  *
@@ -109,9 +109,10 @@ add_join_clause_to_rels(Query *root,
                                      unjoined_relids);
        joininfo->jinfo_restrictinfo = lappend(joininfo->jinfo_restrictinfo,
                                               restrictinfo);
+
        /*
         * Can't bms_free(unjoined_relids) because new joininfo node may
-        * link to it.  We could avoid leaking memory by doing bms_copy()
+        * link to it.  We could avoid leaking memory by doing bms_copy()
         * in make_joininfo_node, but for now speed seems better.
         */
    }
@@ -156,13 +157,14 @@ remove_join_clause_from_rels(Query *root,
        joininfo = find_joininfo_node(find_base_rel(root, cur_relid),
                                      unjoined_relids);
        Assert(joininfo);
+
        /*
-        * Remove the restrictinfo from the list.  Pointer comparison
-        * is sufficient.
+        * Remove the restrictinfo from the list.  Pointer comparison is
+        * sufficient.
         */
        Assert(ptrMember(restrictinfo, joininfo->jinfo_restrictinfo));
        joininfo->jinfo_restrictinfo = lremove(restrictinfo,
-                                              joininfo->jinfo_restrictinfo);
+                                          joininfo->jinfo_restrictinfo);
        bms_free(unjoined_relids);
    }
    bms_free(tmprelids);
index 61ab51747c13405027d7c3e5bc038589c0edccef..3a14d6b871f0aba1b26b5225ab5e8ccc6ac1236a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.93 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.94 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -159,7 +159,7 @@ set_cheapest(RelOptInfo *parent_rel)
 
    parent_rel->cheapest_startup_path = cheapest_startup_path;
    parent_rel->cheapest_total_path = cheapest_total_path;
-   parent_rel->cheapest_unique_path = NULL; /* computed only if needed */
+   parent_rel->cheapest_unique_path = NULL;    /* computed only if needed */
 }
 
 /*
@@ -452,7 +452,7 @@ create_result_path(RelOptInfo *rel, Path *subpath, List *constantqual)
    ResultPath *pathnode = makeNode(ResultPath);
 
    pathnode->path.pathtype = T_Result;
-   pathnode->path.parent = rel; /* may be NULL */
+   pathnode->path.parent = rel;    /* may be NULL */
 
    if (subpath)
        pathnode->path.pathkeys = subpath->pathkeys;
@@ -545,8 +545,8 @@ create_unique_path(Query *root, RelOptInfo *rel, Path *subpath)
    pathnode->path.parent = rel;
 
    /*
-    * Treat the output as always unsorted, since we don't necessarily have
-    * pathkeys to represent it.
+    * Treat the output as always unsorted, since we don't necessarily
+    * have pathkeys to represent it.
     */
    pathnode->path.pathkeys = NIL;
 
@@ -591,26 +591,28 @@ create_unique_path(Query *root, RelOptInfo *rel, Path *subpath)
              subpath->total_cost,
              rel->rows,
              rel->width);
+
    /*
     * 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.
+    * assume all columns get compared at most of the tuples.  (XXX
+    * probably this is an overestimate.)  This should agree with
+    * make_unique.
     */
    sort_path.total_cost += cpu_operator_cost * rel->rows * numCols;
 
    /*
     * Is it safe to use a hashed implementation?  If so, estimate and
-    * compare costs.  We only try this if we know the targetlist for
-    * sure (else we can't be sure about the datatypes involved).
+    * compare costs.  We only try this if we know the targetlist for sure
+    * (else we can't be sure about the datatypes involved).
     */
    pathnode->use_hash = false;
    if (enable_hashagg && sub_targetlist && hash_safe_tlist(sub_targetlist))
    {
        /*
-        * Estimate the overhead per hashtable entry at 64 bytes (same
-        * as in planner.c).
+        * Estimate the overhead per hashtable entry at 64 bytes (same as
+        * in planner.c).
         */
-       int     hashentrysize = rel->width + 64;
+       int         hashentrysize = rel->width + 64;
 
        if (hashentrysize * pathnode->rows <= SortMem * 1024L)
        {
@@ -647,7 +649,7 @@ create_unique_path(Query *root, RelOptInfo *rel, Path *subpath)
  * We assume hashed aggregation will work if the datatype's equality operator
  * is marked hashjoinable.
  *
- * XXX this probably should be somewhere else.  See also hash_safe_grouping
+ * XXX this probably should be somewhere else. See also hash_safe_grouping
  * in plan/planner.c.
  */
 static bool
@@ -788,6 +790,7 @@ create_mergejoin_path(Query *root,
    if (innersortkeys &&
        pathkeys_contained_in(innersortkeys, inner_path->pathkeys))
        innersortkeys = NIL;
+
    /*
     * If we are not sorting the inner path, we may need a materialize
     * node to ensure it can be marked/restored.  (Sort does support
index 6823f03267eba1fde2f89f5ff34ba4abfe6b10e4..3ae98ed25364675b0b1ea205e1bcffec9a063d27 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.85 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.86 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -65,7 +65,8 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
    rel->max_attr = RelationGetNumberOfAttributes(relation);
 
    /*
-    * Make list of indexes.  Ignore indexes on system catalogs if told to.
+    * Make list of indexes.  Ignore indexes on system catalogs if told
+    * to.
     */
    if (IsIgnoringSystemIndexes() && IsSystemClass(relation->rd_rel))
        hasindex = false;
@@ -99,8 +100,8 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
            info->ncolumns = ncolumns = index->indnatts;
 
            /*
-            * Need to make classlist and ordering arrays large enough to put
-            * a terminating 0 at the end of each one.
+            * Need to make classlist and ordering arrays large enough to
+            * put a terminating 0 at the end of each one.
             */
            info->indexkeys = (int *) palloc(sizeof(int) * ncolumns);
            info->classlist = (Oid *) palloc0(sizeof(Oid) * (ncolumns + 1));
@@ -118,7 +119,8 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
            info->amcostestimate = index_cost_estimator(indexRelation);
 
            /*
-            * Fetch the ordering operators associated with the index, if any.
+            * Fetch the ordering operators associated with the index, if
+            * any.
             */
            amorderstrategy = indexRelation->rd_am->amorderstrategy;
            if (amorderstrategy != 0)
@@ -135,8 +137,8 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
            /*
             * Fetch the index expressions and predicate, if any.  We must
             * modify the copies we obtain from the relcache to have the
-            * correct varno for the parent relation, so that they match up
-            * correctly against qual clauses.
+            * correct varno for the parent relation, so that they match
+            * up correctly against qual clauses.
             */
            info->indexprs = RelationGetIndexExpressions(indexRelation);
            info->indpred = RelationGetIndexPredicate(indexRelation);
@@ -177,7 +179,7 @@ get_relation_info(Oid relationObjectId, RelOptInfo *rel)
  * Exception: if there are any dropped columns, we punt and return NIL.
  * Ideally we would like to handle the dropped-column case too.  However this
  * creates problems for ExecTypeFromTL, which may be asked to build a tupdesc
- * for a tlist that includes vars of no-longer-existent types.  In theory we
+ * for a tlist that includes vars of no-longer-existent types. In theory we
  * could dig out the required info from the pg_attribute entries of the
  * relation, but that data is not readily available to ExecTypeFromTL.
  * For now, we don't apply the physical-tlist optimization when there are
@@ -389,11 +391,11 @@ has_unique_index(RelOptInfo *rel, AttrNumber attno)
        IndexOptInfo *index = (IndexOptInfo *) lfirst(ilist);
 
        /*
-        * Note: ignore partial indexes, since they don't allow us to conclude
-        * that all attr values are distinct.  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.
+        * Note: ignore partial indexes, since they don't allow us to
+        * conclude that all attr values are distinct.  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 &&
index 9a4a2069765f28d2ef9c439b5fb86ed90c67de2f..cc8632899e8e631f17f6f1561cc642c93872e53d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/relnode.c,v 1.50 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/relnode.c,v 1.51 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -322,7 +322,8 @@ build_join_rel(Query *root,
 
    /*
     * Create a new tlist containing just the vars that need to be output
-    * from this join (ie, are needed for higher joinclauses or final output).
+    * from this join (ie, are needed for higher joinclauses or final
+    * output).
     */
    build_joinrel_tlist(root, joinrel);
 
@@ -389,8 +390,8 @@ build_joinrel_tlist(Query *root, RelOptInfo *joinrel)
 
        foreach(vars, FastListValue(&baserel->reltargetlist))
        {
-           Var    *var = (Var *) lfirst(vars);
-           int     ndx = var->varattno - baserel->min_attr;
+           Var        *var = (Var *) lfirst(vars);
+           int         ndx = var->varattno - baserel->min_attr;
 
            if (bms_nonempty_difference(baserel->attr_needed[ndx], relids))
            {
index 334fc5784cf435f2e51048bd2e354b1207053485..673e76c8c310d69c57590de137cfb0dcaee39202 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/restrictinfo.c,v 1.17 2003/06/15 22:51:45 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/restrictinfo.c,v 1.18 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,9 +21,9 @@
 
 
 static bool join_clause_is_redundant(Query *root,
-                                    RestrictInfo *rinfo,
-                                    List *reference_list,
-                                    JoinType jointype);
+                        RestrictInfo *rinfo,
+                        List *reference_list,
+                        JoinType jointype);
 
 
 /*
@@ -174,7 +174,7 @@ select_nonredundant_join_clauses(Query *root,
  * left and right pathkeys, which uniquely identify the sets of equijoined
  * variables in question.  All the members of a pathkey set that are in the
  * left relation have already been forced to be equal; likewise for those in
- * the right relation.  So, we need to have only one clause that checks
+ * the right relation. So, we need to have only one clause that checks
  * equality between any set member on the left and any member on the right;
  * by transitivity, all the rest are then equal.
  *
@@ -228,10 +228,9 @@ join_clause_is_redundant(Query *root,
        if (redundant)
        {
            /*
-            * It looks redundant, now check for "var = const" case.
-            * If left_relids/right_relids are set, then there are
-            * definitely vars on both sides; else we must check the
-            * hard way.
+            * It looks redundant, now check for "var = const" case. If
+            * left_relids/right_relids are set, then there are definitely
+            * vars on both sides; else we must check the hard way.
             */
            if (rinfo->left_relids)
                return true;    /* var = var, so redundant */
index 26d7d6fb245d12e86805fefef43c8bc56e01ff3b..10568371425256688f060c6432928ee8167361e4 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.58 2003/07/25 00:01:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/tlist.c,v 1.59 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -211,8 +211,8 @@ get_sortgroupclause_expr(SortClause *sortClause, List *targetList)
 List *
 get_sortgrouplist_exprs(List *sortClauses, List *targetList)
 {
-   List   *result = NIL;
-   List   *l;
+   List       *result = NIL;
+   List       *l;
 
    foreach(l, sortClauses)
    {
index bdd5baf521adf1447b5855776c723088bec1a95c..edbb5f085cdbc1469c03a7a7709be9efc62200b2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.51 2003/06/06 15:04:02 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.52 2003/08/04 00:43:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -39,7 +39,7 @@ typedef struct
 {
    int         min_varlevel;
    int         sublevels_up;
-} find_minimum_var_level_context;
+}  find_minimum_var_level_context;
 
 typedef struct
 {
@@ -61,7 +61,7 @@ static bool contain_var_clause_walker(Node *node, void *context);
 static bool contain_vars_of_level_walker(Node *node, int *sublevels_up);
 static bool contain_vars_above_level_walker(Node *node, int *sublevels_up);
 static bool find_minimum_var_level_walker(Node *node,
-                      find_minimum_var_level_context *context);
+                             find_minimum_var_level_context * context);
 static bool pull_var_clause_walker(Node *node,
                       pull_var_clause_context *context);
 static Node *flatten_join_alias_vars_mutator(Node *node,
@@ -242,12 +242,12 @@ contain_var_clause_walker(Node *node, void *context)
  *
  *   Returns true if any such Var found.
  *
- * Will recurse into sublinks.  Also, may be invoked directly on a Query.
+ * Will recurse into sublinks. Also, may be invoked directly on a Query.
  */
 bool
 contain_vars_of_level(Node *node, int levelsup)
 {
-   int     sublevels_up = levelsup;
+   int         sublevels_up = levelsup;
 
    return query_or_expression_tree_walker(node,
                                           contain_vars_of_level_walker,
@@ -286,20 +286,20 @@ contain_vars_of_level_walker(Node *node, int *sublevels_up)
 /*
  * contain_vars_above_level
  *   Recursively scan a clause to discover whether it contains any Var nodes
- *   above the specified query level.  (For example, pass zero to detect
+ *   above the specified query level.  (For example, pass zero to detect
  *   all nonlocal Vars.)
  *
  *   Returns true if any such Var found.
  *
- * Will recurse into sublinks.  Also, may be invoked directly on a Query.
+ * Will recurse into sublinks. Also, may be invoked directly on a Query.
  */
 bool
 contain_vars_above_level(Node *node, int levelsup)
 {
-   int     sublevels_up = levelsup;
+   int         sublevels_up = levelsup;
 
    return query_or_expression_tree_walker(node,
-                                          contain_vars_above_level_walker,
+                                        contain_vars_above_level_walker,
                                           (void *) &sublevels_up,
                                           0);
 }
@@ -344,7 +344,7 @@ contain_vars_above_level_walker(Node *node, int *sublevels_up)
  *
  *   -1 is returned if the clause has no variables at all.
  *
- * Will recurse into sublinks.  Also, may be invoked directly on a Query.
+ * Will recurse into sublinks. Also, may be invoked directly on a Query.
  */
 int
 find_minimum_var_level(Node *node)
@@ -364,13 +364,13 @@ find_minimum_var_level(Node *node)
 
 static bool
 find_minimum_var_level_walker(Node *node,
-                             find_minimum_var_level_context *context)
+                             find_minimum_var_level_context * context)
 {
    if (node == NULL)
        return false;
    if (IsA(node, Var))
    {
-       int     varlevelsup = ((Var *) node)->varlevelsup;
+       int         varlevelsup = ((Var *) node)->varlevelsup;
 
        /* convert levelsup to frame of reference of original query */
        varlevelsup -= context->sublevels_up;
@@ -381,6 +381,7 @@ find_minimum_var_level_walker(Node *node,
                context->min_varlevel > varlevelsup)
            {
                context->min_varlevel = varlevelsup;
+
                /*
                 * As soon as we find a local variable, we can abort the
                 * tree traversal, since min_varlevel is then certainly 0.
@@ -390,14 +391,16 @@ find_minimum_var_level_walker(Node *node,
            }
        }
    }
+
    /*
-    * An Aggref must be treated like a Var of its level.  Normally we'd get
-    * the same result from looking at the Vars in the aggregate's argument,
-    * but this fails in the case of a Var-less aggregate call (COUNT(*)).
+    * An Aggref must be treated like a Var of its level.  Normally we'd
+    * get the same result from looking at the Vars in the aggregate's
+    * argument, but this fails in the case of a Var-less aggregate call
+    * (COUNT(*)).
     */
    if (IsA(node, Aggref))
    {
-       int     agglevelsup = ((Aggref *) node)->agglevelsup;
+       int         agglevelsup = ((Aggref *) node)->agglevelsup;
 
        /* convert levelsup to frame of reference of original query */
        agglevelsup -= context->sublevels_up;
@@ -408,6 +411,7 @@ find_minimum_var_level_walker(Node *node,
                context->min_varlevel > agglevelsup)
            {
                context->min_varlevel = agglevelsup;
+
                /*
                 * As soon as we find a local aggregate, we can abort the
                 * tree traversal, since min_varlevel is then certainly 0.
@@ -519,6 +523,7 @@ flatten_join_alias_vars_mutator(Node *node,
        Assert(var->varattno > 0);
        /* Okay, must expand it */
        newvar = (Node *) nth(var->varattno - 1, rte->joinaliasvars);
+
        /*
         * If we are expanding an alias carried down from an upper query,
         * must adjust its varlevelsup fields.
@@ -534,11 +539,11 @@ flatten_join_alias_vars_mutator(Node *node,
    if (IsA(node, InClauseInfo))
    {
        /* Copy the InClauseInfo node with correct mutation of subnodes */
-       InClauseInfo   *ininfo;
+       InClauseInfo *ininfo;
 
        ininfo = (InClauseInfo *) expression_tree_mutator(node,
-                                                         flatten_join_alias_vars_mutator,
-                                                         (void *) context);
+                                        flatten_join_alias_vars_mutator,
+                                                      (void *) context);
        /* now fix InClauseInfo's relid sets */
        if (context->sublevels_up == 0)
        {
index ef8fa510abd87125e8751adce13445a756d97b7a..3cbdcc6231d0c53a5afdcd9e8e7115ca1d9bdf2d 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.283 2003/08/01 00:15:22 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.284 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -89,7 +89,7 @@ typedef struct
 {
    Oid        *paramTypes;
    int         numParams;
-} check_parameter_resolution_context;
+}  check_parameter_resolution_context;
 
 
 static List *do_parse_analyze(Node *parseTree, ParseState *pstate);
@@ -106,7 +106,7 @@ static Query *transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt);
 static Node *transformSetOperationTree(ParseState *pstate, SelectStmt *stmt);
 static Query *transformUpdateStmt(ParseState *pstate, UpdateStmt *stmt);
 static Query *transformDeclareCursorStmt(ParseState *pstate,
-                                        DeclareCursorStmt *stmt);
+                          DeclareCursorStmt * stmt);
 static Query *transformPrepareStmt(ParseState *pstate, PrepareStmt *stmt);
 static Query *transformExecuteStmt(ParseState *pstate, ExecuteStmt *stmt);
 static Query *transformCreateStmt(ParseState *pstate, CreateStmt *stmt,
@@ -114,18 +114,18 @@ static Query *transformCreateStmt(ParseState *pstate, CreateStmt *stmt,
 static Query *transformAlterTableStmt(ParseState *pstate, AlterTableStmt *stmt,
                        List **extras_before, List **extras_after);
 static void transformColumnDefinition(ParseState *pstate,
-                                     CreateStmtContext *cxt,
-                                     ColumnDef *column);
+                         CreateStmtContext *cxt,
+                         ColumnDef *column);
 static void transformTableConstraint(ParseState *pstate,
-                                    CreateStmtContext *cxt,
-                                    Constraint *constraint);
+                        CreateStmtContext *cxt,
+                        Constraint *constraint);
 static void transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
-                                InhRelation *inhrelation);
+                    InhRelation * inhrelation);
 static void transformIndexConstraints(ParseState *pstate,
-                                     CreateStmtContext *cxt);
+                         CreateStmtContext *cxt);
 static void transformFKConstraints(ParseState *pstate,
-                                  CreateStmtContext *cxt,
-                                  bool isAddConstraint);
+                      CreateStmtContext *cxt,
+                      bool isAddConstraint);
 static void applyColumnNames(List *dst, List *src);
 static List *getSetColTypes(ParseState *pstate, Node *node);
 static void transformForUpdate(Query *qry, List *forUpdate);
@@ -135,7 +135,7 @@ static bool relationHasPrimaryKey(Oid relationOid);
 static void release_pstate_resources(ParseState *pstate);
 static FromExpr *makeFromExpr(List *fromlist, Node *quals);
 static bool check_parameter_resolution_walker(Node *node,
-                      check_parameter_resolution_context *context);
+                          check_parameter_resolution_context * context);
 
 
 /*
@@ -229,6 +229,7 @@ static List *
 do_parse_analyze(Node *parseTree, ParseState *pstate)
 {
    List       *result = NIL;
+
    /* Lists to return extra commands from transformation */
    List       *extras_before = NIL;
    List       *extras_after = NIL;
@@ -258,9 +259,10 @@ do_parse_analyze(Node *parseTree, ParseState *pstate)
 
    /*
     * Make sure that only the original query is marked original. We have
-    * to do this explicitly since recursive calls of do_parse_analyze will
-    * have marked some of the added-on queries as "original".  Also mark
-    * only the original query as allowed to set the command-result tag.
+    * to do this explicitly since recursive calls of do_parse_analyze
+    * will have marked some of the added-on queries as "original".  Also
+    * mark only the original query as allowed to set the command-result
+    * tag.
     */
    foreach(listscan, result)
    {
@@ -419,7 +421,7 @@ transformStmt(ParseState *pstate, Node *parseTree,
 
        case T_DeclareCursorStmt:
            result = transformDeclareCursorStmt(pstate,
-                                               (DeclareCursorStmt *) parseTree);
+                                       (DeclareCursorStmt *) parseTree);
            break;
 
        default:
@@ -593,10 +595,10 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
         *
         * HACK: unknown-type constants and params in the INSERT's targetlist
         * are copied up as-is rather than being referenced as subquery
-        * outputs.  This is to ensure that when we try to coerce them
-        * to the target column's datatype, the right things happen (see
-        * special cases in coerce_type).  Otherwise, this fails:
-        *      INSERT INTO foo SELECT 'bar', ... FROM baz
+        * outputs.  This is to ensure that when we try to coerce them to
+        * the target column's datatype, the right things happen (see
+        * special cases in coerce_type).  Otherwise, this fails: INSERT
+        * INTO foo SELECT 'bar', ... FROM baz
         */
        qry->targetList = NIL;
        foreach(tl, selectQuery->targetList)
@@ -608,7 +610,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
            if (resnode->resjunk)
                continue;
            if (tle->expr &&
-               (IsA(tle->expr, Const) || IsA(tle->expr, Param)) &&
+               (IsA(tle->expr, Const) ||IsA(tle->expr, Param)) &&
                exprType((Node *) tle->expr) == UNKNOWNOID)
                expr = tle->expr;
            else
@@ -661,7 +663,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
        if (icolumns == NIL || attnos == NIL)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("INSERT has more expressions than target columns")));
+            errmsg("INSERT has more expressions than target columns")));
 
        col = (ResTarget *) lfirst(icolumns);
        Assert(IsA(col, ResTarget));
@@ -675,15 +677,14 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
    }
 
    /*
-    * Ensure that the targetlist has the same number of entries that
-    * were present in the columns list.  Don't do the check unless
-    * an explicit columns list was given, though.
-    * statements.
+    * Ensure that the targetlist has the same number of entries that were
+    * present in the columns list.  Don't do the check unless an explicit
+    * columns list was given, though. statements.
     */
    if (stmt->cols != NIL && (icolumns != NIL || attnos != NIL))
        ereport(ERROR,
                (errcode(ERRCODE_SYNTAX_ERROR),
-                errmsg("INSERT has more target columns than expressions")));
+            errmsg("INSERT has more target columns than expressions")));
 
    /* done building the range table and jointree */
    qry->rtable = pstate->p_rtable;
@@ -1054,7 +1055,7 @@ transformColumnDefinition(ParseState *pstate, CreateStmtContext *cxt,
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("conflicting NULL/NOT NULL declarations for \"%s.%s\"",
-                                   cxt->relation->relname, column->colname)));
+                             cxt->relation->relname, column->colname)));
                column->is_not_null = FALSE;
                saw_nullable = true;
                break;
@@ -1064,7 +1065,7 @@ transformColumnDefinition(ParseState *pstate, CreateStmtContext *cxt,
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("conflicting NULL/NOT NULL declarations for \"%s.%s\"",
-                                   cxt->relation->relname, column->colname)));
+                             cxt->relation->relname, column->colname)));
                column->is_not_null = TRUE;
                saw_nullable = true;
                break;
@@ -1074,7 +1075,7 @@ transformColumnDefinition(ParseState *pstate, CreateStmtContext *cxt,
                    ereport(ERROR,
                            (errcode(ERRCODE_SYNTAX_ERROR),
                             errmsg("multiple DEFAULT values specified for \"%s.%s\"",
-                                   cxt->relation->relname, column->colname)));
+                             cxt->relation->relname, column->colname)));
                column->raw_default = constraint->raw_expr;
                Assert(constraint->cooked_expr == NULL);
                break;
@@ -1170,7 +1171,7 @@ transformTableConstraint(ParseState *pstate, CreateStmtContext *cxt,
  */
 static void
 transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
-                    InhRelation *inhRelation)
+                    InhRelation * inhRelation)
 {
    AttrNumber  parent_attno;
 
@@ -1188,7 +1189,7 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
                        inhRelation->relation->relname)));
 
    /*
-    * Check for SELECT privilages 
+    * Check for SELECT privilages
     */
    aclresult = pg_class_aclcheck(RelationGetRelid(relation), GetUserId(),
                                  ACL_SELECT);
@@ -1200,8 +1201,8 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
    constr = tupleDesc->constr;
 
    /*
-    * Insert the inherited attributes into the cxt for the
-    * new table definition.
+    * Insert the inherited attributes into the cxt for the new table
+    * definition.
     */
    for (parent_attno = 1; parent_attno <= tupleDesc->natts;
         parent_attno++)
@@ -1220,8 +1221,8 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
        /*
         * Create a new inherited column.
         *
-        * For constraints, ONLY the NOT NULL constraint is inherited
-        * by the new column definition per SQL99.
+        * For constraints, ONLY the NOT NULL constraint is inherited by the
+        * new column definition per SQL99.
         */
        def = makeNode(ColumnDef);
        def->colname = pstrdup(attributeName);
@@ -1265,9 +1266,8 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
            Assert(this_default != NULL);
 
            /*
-            * If default expr could contain any vars, we'd need to
-            * fix 'em, but it can't; so default is ready to apply to
-            * child.
+            * If default expr could contain any vars, we'd need to fix
+            * 'em, but it can't; so default is ready to apply to child.
             */
 
            def->cooked_default = pstrdup(this_default);
@@ -1275,9 +1275,9 @@ transformInhRelation(ParseState *pstate, CreateStmtContext *cxt,
    }
 
    /*
-    * Close the parent rel, but keep our AccessShareLock on it until
-    * xact commit.  That will prevent someone else from deleting or
-    * ALTERing the parent before the child is committed.
+    * Close the parent rel, but keep our AccessShareLock on it until xact
+    * commit.  That will prevent someone else from deleting or ALTERing
+    * the parent before the child is committed.
     */
    heap_close(relation, NoLock);
 }
@@ -1340,8 +1340,8 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
        /*
         * Make sure referenced keys exist.  If we are making a PRIMARY
         * KEY index, also make sure they are NOT NULL, if possible.
-        * (Although we could leave it to DefineIndex to mark the columns NOT
-        * NULL, it's more efficient to get it right the first time.)
+        * (Although we could leave it to DefineIndex to mark the columns
+        * NOT NULL, it's more efficient to get it right the first time.)
         */
        foreach(keys, constraint->keys)
        {
@@ -1390,8 +1390,8 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
                    if (rel->rd_rel->relkind != RELKIND_RELATION)
                        ereport(ERROR,
                                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                                errmsg("inherited table \"%s\" is not a relation",
-                                       inh->relname)));
+                       errmsg("inherited table \"%s\" is not a relation",
+                              inh->relname)));
                    for (count = 0; count < rel->rd_att->natts; count++)
                    {
                        Form_pg_attribute inhattr = rel->rd_att->attrs[count];
@@ -1402,11 +1402,13 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
                        if (strcmp(key, inhname) == 0)
                        {
                            found = true;
+
                            /*
                             * We currently have no easy way to force an
-                            * inherited column to be NOT NULL at creation, if
-                            * its parent wasn't so already.  We leave it to
-                            * DefineIndex to fix things up in this case.
+                            * inherited column to be NOT NULL at
+                            * creation, if its parent wasn't so already.
+                            * We leave it to DefineIndex to fix things up
+                            * in this case.
                             */
                            break;
                        }
@@ -1425,9 +1427,10 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
                if (HeapTupleIsValid(atttuple))
                {
                    found = true;
+
                    /*
-                    * If it's not already NOT NULL, leave it to DefineIndex
-                    * to fix later.
+                    * If it's not already NOT NULL, leave it to
+                    * DefineIndex to fix later.
                     */
                    ReleaseSysCache(atttuple);
                }
@@ -1436,8 +1439,8 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
            if (!found)
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_COLUMN),
-                        errmsg("column \"%s\" named in key does not exist",
-                               key)));
+                     errmsg("column \"%s\" named in key does not exist",
+                            key)));
 
            /* Check for PRIMARY KEY(foo, foo) */
            foreach(columns, index->indexParams)
@@ -1446,10 +1449,10 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
                if (iparam->name && strcmp(key, iparam->name) == 0)
                    ereport(ERROR,
                            (errcode(ERRCODE_DUPLICATE_COLUMN),
-                            /* translator: second %s is PRIMARY KEY or UNIQUE */
-                            errmsg("column \"%s\" appears twice in %s constraint",
-                                   key,
-                                   index->primary ? "PRIMARY KEY" : "UNIQUE")));
+                   /* translator: second %s is PRIMARY KEY or UNIQUE */
+                   errmsg("column \"%s\" appears twice in %s constraint",
+                          key,
+                          index->primary ? "PRIMARY KEY" : "UNIQUE")));
            }
 
            /* OK, add it to the index definition */
@@ -1543,7 +1546,7 @@ transformIndexConstraints(ParseState *pstate, CreateStmtContext *cxt)
        ereport(NOTICE,
                (errmsg("%s / %s%s will create implicit index \"%s\" for table \"%s\"",
                        cxt->stmtType,
-                       (strcmp(cxt->stmtType, "ALTER TABLE") == 0) ? "ADD " : "",
+              (strcmp(cxt->stmtType, "ALTER TABLE") == 0) ? "ADD " : "",
                        (index->primary ? "PRIMARY KEY" : "UNIQUE"),
                        index->idxname, cxt->relation->relname)));
    }
@@ -1557,13 +1560,13 @@ transformFKConstraints(ParseState *pstate, CreateStmtContext *cxt,
        return;
 
    ereport(NOTICE,
-           (errmsg("%s will create implicit trigger(s) for FOREIGN KEY check(s)",
-                   cxt->stmtType)));
+   (errmsg("%s will create implicit trigger(s) for FOREIGN KEY check(s)",
+           cxt->stmtType)));
 
    /*
     * For ALTER TABLE ADD CONSTRAINT, nothing to do.  For CREATE TABLE or
-    * ALTER TABLE ADD COLUMN, gin up an ALTER TABLE ADD CONSTRAINT command
-    * to execute after the basic command is complete.
+    * ALTER TABLE ADD COLUMN, gin up an ALTER TABLE ADD CONSTRAINT
+    * command to execute after the basic command is complete.
     *
     * Note: the ADD CONSTRAINT command must also execute after any index
     * creation commands.  Thus, this should run after
@@ -1575,7 +1578,7 @@ transformFKConstraints(ParseState *pstate, CreateStmtContext *cxt,
        AlterTableStmt *alterstmt = makeNode(AlterTableStmt);
        List       *fkclist;
 
-       alterstmt->subtype = 'c'; /* preprocessed add constraint */
+       alterstmt->subtype = 'c';       /* preprocessed add constraint */
        alterstmt->relation = cxt->relation;
        alterstmt->name = NULL;
        alterstmt->def = (Node *) cxt->fkconstraints;
@@ -1628,7 +1631,7 @@ transformIndexStmt(ParseState *pstate, IndexStmt *stmt)
    /* take care of any index expressions */
    foreach(l, stmt->indexParams)
    {
-       IndexElem   *ielem = (IndexElem *) lfirst(l);
+       IndexElem  *ielem = (IndexElem *) lfirst(l);
 
        if (ielem->expr)
        {
@@ -1641,6 +1644,7 @@ transformIndexStmt(ParseState *pstate, IndexStmt *stmt)
                addRTEtoQuery(pstate, rte, false, true);
            }
            ielem->expr = transformExpr(pstate, ielem->expr);
+
            /*
             * We check only that the result type is legitimate; this is
             * for consistency with what transformWhereClause() checks for
@@ -1649,7 +1653,7 @@ transformIndexStmt(ParseState *pstate, IndexStmt *stmt)
            if (expression_returns_set(ielem->expr))
                ereport(ERROR,
                        (errcode(ERRCODE_DATATYPE_MISMATCH),
-                        errmsg("index expression may not return a set")));
+                      errmsg("index expression may not return a set")));
        }
    }
 
@@ -1829,10 +1833,10 @@ transformRuleStmt(ParseState *pstate, RuleStmt *stmt,
            sub_qry = getInsertSelectQuery(top_subqry, NULL);
 
            /*
-            * If the sub_qry is a setop, we cannot attach any qualifications
-            * to it, because the planner won't notice them.  This could
-            * perhaps be relaxed someday, but for now, we may as well reject
-            * such a rule immediately.
+            * If the sub_qry is a setop, we cannot attach any
+            * qualifications to it, because the planner won't notice
+            * them.  This could perhaps be relaxed someday, but for now,
+            * we may as well reject such a rule immediately.
             */
            if (sub_qry->setOperations != NULL && stmt->whereClause != NULL)
                ereport(ERROR,
@@ -1854,12 +1858,12 @@ transformRuleStmt(ParseState *pstate, RuleStmt *stmt,
                case CMD_SELECT:
                    if (has_old)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                                errmsg("ON SELECT rule may not use OLD")));
+                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
+                             errmsg("ON SELECT rule may not use OLD")));
                    if (has_new)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                                errmsg("ON SELECT rule may not use NEW")));
+                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
+                             errmsg("ON SELECT rule may not use NEW")));
                    break;
                case CMD_UPDATE:
                    /* both are OK */
@@ -1867,14 +1871,14 @@ transformRuleStmt(ParseState *pstate, RuleStmt *stmt,
                case CMD_INSERT:
                    if (has_old)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                                errmsg("ON INSERT rule may not use OLD")));
+                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
+                             errmsg("ON INSERT rule may not use OLD")));
                    break;
                case CMD_DELETE:
                    if (has_new)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                                errmsg("ON DELETE rule may not use NEW")));
+                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
+                             errmsg("ON DELETE rule may not use NEW")));
                    break;
                default:
                    elog(ERROR, "unrecognized event type: %d",
@@ -1902,9 +1906,10 @@ transformRuleStmt(ParseState *pstate, RuleStmt *stmt,
            if (has_old || (has_new && stmt->event == CMD_UPDATE))
            {
                /*
-                * If sub_qry is a setop, manipulating its jointree will do
-                * no good at all, because the jointree is dummy.  (This
-                * should be a can't-happen case because of prior tests.)
+                * If sub_qry is a setop, manipulating its jointree will
+                * do no good at all, because the jointree is dummy.
+                * (This should be a can't-happen case because of prior
+                * tests.)
                 */
                if (sub_qry->setOperations != NULL)
                    ereport(ERROR,
@@ -1978,7 +1983,7 @@ transformSelectStmt(ParseState *pstate, SelectStmt *stmt)
    qry->sortClause = transformSortClause(pstate,
                                          stmt->sortClause,
                                          qry->targetList,
-                                         true /* fix unknowns */);
+                                         true /* fix unknowns */ );
 
    qry->groupClause = transformGroupClause(pstate,
                                            stmt->groupClause,
@@ -2107,10 +2112,10 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt)
     * make lists of the dummy vars and their names for use in parsing
     * ORDER BY.
     *
-    * Note: we use leftmostRTI as the varno of the dummy variables.
-    * It shouldn't matter too much which RT index they have, as long
-    * as they have one that corresponds to a real RT entry; else funny
-    * things may happen when the tree is mashed by rule rewriting.
+    * Note: we use leftmostRTI as the varno of the dummy variables. It
+    * shouldn't matter too much which RT index they have, as long as they
+    * have one that corresponds to a real RT entry; else funny things may
+    * happen when the tree is mashed by rule rewriting.
     */
    qry->targetList = NIL;
    targetvars = NIL;
@@ -2144,8 +2149,8 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt)
    /*
     * Handle SELECT INTO/CREATE TABLE AS.
     *
-    * Any column names from CREATE TABLE AS need to be attached to both
-    * the top level and the leftmost subquery.  We do not do this earlier
+    * Any column names from CREATE TABLE AS need to be attached to both the
+    * top level and the leftmost subquery.  We do not do this earlier
     * because we do *not* want the targetnames list to be affected.
     */
    qry->into = into;
@@ -2192,7 +2197,7 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt)
    qry->sortClause = transformSortClause(pstate,
                                          sortClause,
                                          qry->targetList,
-                                         false /* no unknowns expected */);
+                                     false /* no unknowns expected */ );
 
    pstate->p_namespace = sv_namespace;
    pstate->p_rtable = sv_rtable;
@@ -2290,9 +2295,9 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt)
 
        /*
         * Check for bogus references to Vars on the current query level
-        * (but upper-level references are okay).
-        * Normally this can't happen because the namespace will be empty,
-        * but it could happen if we are inside a rule.
+        * (but upper-level references are okay). Normally this can't
+        * happen because the namespace will be empty, but it could happen
+        * if we are inside a rule.
         */
        if (pstate->p_namespace)
        {
@@ -2352,8 +2357,8 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt)
        if (length(lcoltypes) != length(rcoltypes))
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("each %s query must have the same number of columns",
-                           context)));
+            errmsg("each %s query must have the same number of columns",
+                   context)));
        op->colTypes = NIL;
        while (lcoltypes != NIL)
        {
@@ -2422,7 +2427,7 @@ applyColumnNames(List *dst, List *src)
    if (length(src) > length(dst))
        ereport(ERROR,
                (errcode(ERRCODE_SYNTAX_ERROR),
-                errmsg("CREATE TABLE AS specifies too many column names")));
+            errmsg("CREATE TABLE AS specifies too many column names")));
 
    while (src != NIL && dst != NIL)
    {
@@ -2538,8 +2543,8 @@ transformAlterTableStmt(ParseState *pstate, AlterTableStmt *stmt,
     * handling are 'A'dd column and Add 'C'onstraint.  These largely
     * re-use code from CREATE TABLE.
     *
-    * If we need to do any parse transformation, get exclusive lock on
-    * the relation to make sure it won't change before we execute the
+    * If we need to do any parse transformation, get exclusive lock on the
+    * relation to make sure it won't change before we execute the
     * command.
     */
    switch (stmt->subtype)
@@ -2574,7 +2579,7 @@ transformAlterTableStmt(ParseState *pstate, AlterTableStmt *stmt,
            *extras_before = nconc(*extras_before, cxt.blist);
            *extras_after = nconc(cxt.alist, *extras_after);
 
-           heap_close(rel, NoLock); /* close rel, keep lock */
+           heap_close(rel, NoLock);    /* close rel, keep lock */
            break;
 
        case 'C':
@@ -2614,7 +2619,7 @@ transformAlterTableStmt(ParseState *pstate, AlterTableStmt *stmt,
            *extras_before = nconc(*extras_before, cxt.blist);
            *extras_after = nconc(cxt.alist, *extras_after);
 
-           heap_close(rel, NoLock); /* close rel, keep lock */
+           heap_close(rel, NoLock);    /* close rel, keep lock */
            break;
 
        case 'c':
@@ -2638,7 +2643,7 @@ transformAlterTableStmt(ParseState *pstate, AlterTableStmt *stmt,
 }
 
 static Query *
-transformDeclareCursorStmt(ParseState *pstate, DeclareCursorStmt *stmt)
+transformDeclareCursorStmt(ParseState *pstate, DeclareCursorStmt * stmt)
 {
    Query      *result = makeNode(Query);
    List       *extras_before = NIL,
@@ -2672,7 +2677,7 @@ transformPrepareStmt(ParseState *pstate, PrepareStmt *stmt)
 {
    Query      *result = makeNode(Query);
    List       *argtype_oids = NIL;     /* argtype OIDs in a list */
-   Oid        *argtoids = NULL;        /* and as an array */
+   Oid        *argtoids = NULL;    /* and as an array */
    int         nargs;
    List       *queries;
 
@@ -2757,11 +2762,11 @@ transformExecuteStmt(ParseState *pstate, ExecuteStmt *stmt)
            if (pstate->p_hasSubLinks)
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("cannot use sub-select in EXECUTE parameter")));
+                 errmsg("cannot use sub-select in EXECUTE parameter")));
            if (pstate->p_hasAggs)
                ereport(ERROR,
                        (errcode(ERRCODE_GROUPING_ERROR),
-                        errmsg("cannot use aggregate in EXECUTE parameter")));
+                  errmsg("cannot use aggregate in EXECUTE parameter")));
 
            given_type_id = exprType(expr);
            expected_type_id = lfirsto(paramtypes);
@@ -2801,15 +2806,15 @@ CheckSelectForUpdate(Query *qry)
    if (qry->distinctClause != NIL)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("SELECT FOR UPDATE is not allowed with DISTINCT clause")));
+       errmsg("SELECT FOR UPDATE is not allowed with DISTINCT clause")));
    if (qry->groupClause != NIL)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("SELECT FOR UPDATE is not allowed with GROUP BY clause")));
+       errmsg("SELECT FOR UPDATE is not allowed with GROUP BY clause")));
    if (qry->hasAggs)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("SELECT FOR UPDATE is not allowed with AGGREGATE")));
+            errmsg("SELECT FOR UPDATE is not allowed with AGGREGATE")));
 }
 
 static void
@@ -2915,7 +2920,7 @@ relationHasPrimaryKey(Oid relationOid)
        indexTuple = SearchSysCache(INDEXRELID,
                                    ObjectIdGetDatum(indexoid),
                                    0, 0, 0);
-       if (!HeapTupleIsValid(indexTuple)) /* should not happen */
+       if (!HeapTupleIsValid(indexTuple))      /* should not happen */
            elog(ERROR, "cache lookup failed for index %u", indexoid);
        result = ((Form_pg_index) GETSTRUCT(indexTuple))->indisprimary;
        ReleaseSysCache(indexTuple);
@@ -2981,7 +2986,7 @@ transformConstraintAttrs(List *constraintList)
                        !IsA(lastprimarynode, FkConstraint))
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("misplaced NOT DEFERRABLE clause")));
+                            errmsg("misplaced NOT DEFERRABLE clause")));
                    if (saw_deferrability)
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
@@ -2999,7 +3004,7 @@ transformConstraintAttrs(List *constraintList)
                        !IsA(lastprimarynode, FkConstraint))
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("misplaced INITIALLY DEFERRED clause")));
+                        errmsg("misplaced INITIALLY DEFERRED clause")));
                    if (saw_initially)
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
@@ -3023,7 +3028,7 @@ transformConstraintAttrs(List *constraintList)
                        !IsA(lastprimarynode, FkConstraint))
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("misplaced INITIALLY IMMEDIATE clause")));
+                       errmsg("misplaced INITIALLY IMMEDIATE clause")));
                    if (saw_initially)
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
@@ -3135,10 +3140,10 @@ analyzeCreateSchemaStmt(CreateSchemaStmt *stmt)
                        elp->relation->schemaname = cxt.schemaname;
                    else if (strcmp(cxt.schemaname, elp->relation->schemaname) != 0)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_SCHEMA_DEFINITION),
-                                errmsg("CREATE specifies a schema (%s)"
-                            " different from the one being created (%s)",
-                            elp->relation->schemaname, cxt.schemaname)));
+                            (errcode(ERRCODE_INVALID_SCHEMA_DEFINITION),
+                             errmsg("CREATE specifies a schema (%s)"
+                           " different from the one being created (%s)",
+                           elp->relation->schemaname, cxt.schemaname)));
 
                    /*
                     * XXX todo: deal with constraints
@@ -3156,10 +3161,10 @@ analyzeCreateSchemaStmt(CreateSchemaStmt *stmt)
                        elp->view->schemaname = cxt.schemaname;
                    else if (strcmp(cxt.schemaname, elp->view->schemaname) != 0)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_SCHEMA_DEFINITION),
-                                errmsg("CREATE specifies a schema (%s)"
-                            " different from the one being created (%s)",
-                            elp->view->schemaname, cxt.schemaname)));
+                            (errcode(ERRCODE_INVALID_SCHEMA_DEFINITION),
+                             errmsg("CREATE specifies a schema (%s)"
+                           " different from the one being created (%s)",
+                               elp->view->schemaname, cxt.schemaname)));
 
                    /*
                     * XXX todo: deal with references between views
@@ -3195,7 +3200,7 @@ analyzeCreateSchemaStmt(CreateSchemaStmt *stmt)
  */
 static bool
 check_parameter_resolution_walker(Node *node,
-                                 check_parameter_resolution_context *context)
+                           check_parameter_resolution_context * context)
 {
    if (node == NULL)
        return false;
@@ -3207,17 +3212,17 @@ check_parameter_resolution_walker(Node *node,
        {
            int         paramno = param->paramid;
 
-           if (paramno <= 0 ||     /* shouldn't happen, but... */
+           if (paramno <= 0 || /* shouldn't happen, but... */
                paramno > context->numParams)
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_PARAMETER),
                         errmsg("there is no parameter $%d", paramno)));
 
-           if (param->paramtype != context->paramTypes[paramno-1])
+           if (param->paramtype != context->paramTypes[paramno - 1])
                ereport(ERROR,
                        (errcode(ERRCODE_AMBIGUOUS_PARAMETER),
-                        errmsg("could not determine datatype of parameter $%d",
-                               paramno)));
+                 errmsg("could not determine datatype of parameter $%d",
+                        paramno)));
        }
        return false;
    }
index 90eaf18bf5fcf616189d8fc4178f30f2a77ead65..d9ef4ed74d88531f885a77d7023030beafb6ec38 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_agg.c,v 1.55 2003/07/19 20:20:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_agg.c,v 1.56 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -44,7 +44,7 @@ static bool check_ungrouped_columns_walker(Node *node,
  *     Finish initial transformation of an aggregate call
  *
  * parse_func.c has recognized the function as an aggregate, and has set
- * up all the fields of the Aggref except agglevelsup.  Here we must
+ * up all the fields of the Aggref except agglevelsup. Here we must
  * determine which query level the aggregate actually belongs to, set
  * agglevelsup accordingly, and mark p_hasAggs true in the corresponding
  * pstate level.
@@ -56,22 +56,22 @@ transformAggregateCall(ParseState *pstate, Aggref *agg)
 
    /*
     * The aggregate's level is the same as the level of the lowest-level
-    * variable or aggregate in its argument; or if it contains no variables
-    * at all, we presume it to be local.
+    * variable or aggregate in its argument; or if it contains no
+    * variables at all, we presume it to be local.
     */
    min_varlevel = find_minimum_var_level((Node *) agg->target);
 
    /*
     * An aggregate can't directly contain another aggregate call of the
-    * same level (though outer aggs are okay).  We can skip this check
-    * if we didn't find any local vars or aggs.
+    * same level (though outer aggs are okay).  We can skip this check if
+    * we didn't find any local vars or aggs.
     */
    if (min_varlevel == 0)
    {
        if (checkExprHasAggs((Node *) agg->target))
            ereport(ERROR,
                    (errcode(ERRCODE_GROUPING_ERROR),
-                    errmsg("aggregate function calls may not be nested")));
+                 errmsg("aggregate function calls may not be nested")));
    }
 
    if (min_varlevel < 0)
@@ -142,17 +142,17 @@ parseCheckAggregates(ParseState *pstate, Query *qry)
        if (checkExprHasAggs(expr))
            ereport(ERROR,
                    (errcode(ERRCODE_GROUPING_ERROR),
-                    errmsg("aggregates not allowed in GROUP BY clause")));
+                  errmsg("aggregates not allowed in GROUP BY clause")));
        groupClauses = lcons(expr, groupClauses);
        if (!IsA(expr, Var))
            have_non_var_grouping = true;
    }
 
    /*
-    * 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.
+    * 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.
     */
    hasJoinRTEs = false;
    foreach(lst, pstate->p_rtable)
@@ -168,7 +168,7 @@ parseCheckAggregates(ParseState *pstate, Query *qry)
 
    if (hasJoinRTEs)
        groupClauses = (List *) flatten_join_alias_vars(qry,
-                                                       (Node *) groupClauses);
+                                                 (Node *) groupClauses);
 
    /*
     * Check the targetlist and HAVING clause for ungrouped variables.
@@ -235,22 +235,22 @@ check_ungrouped_columns_walker(Node *node,
 
    /*
     * If we find an aggregate call of the original level, do not recurse
-    * into its arguments; ungrouped vars in the arguments are not an error.
-    * We can also skip looking at the arguments of aggregates of higher
-    * levels, since they could not possibly contain Vars that are of concern
-    * to us (see transformAggregateCall).  We do need to look into the
-    * arguments of aggregates of lower levels, however.
+    * into its arguments; ungrouped vars in the arguments are not an
+    * error. We can also skip looking at the arguments of aggregates of
+    * higher levels, since they could not possibly contain Vars that are
+    * of concern to us (see transformAggregateCall).  We do need to look
+    * into the arguments of aggregates of lower levels, however.
     */
    if (IsA(node, Aggref) &&
        (int) ((Aggref *) node)->agglevelsup >= context->sublevels_up)
        return false;
 
    /*
-    * If we have any GROUP BY items that are not simple Vars,
-    * check to see if subexpression as a whole matches any GROUP BY item.
-    * We need to do this at every recursion level so that we recognize
-    * GROUPed-BY expressions before reaching variables within them.
-    * But this only works at the outer query level, as noted above.
+    * If we have any GROUP BY items that are not simple Vars, check to
+    * see if subexpression as a whole matches any GROUP BY item. We need
+    * to do this at every recursion level so that we recognize GROUPed-BY
+    * expressions before reaching variables within them. But this only
+    * works at the outer query level, as noted above.
     */
    if (context->have_non_var_grouping && context->sublevels_up == 0)
    {
@@ -264,7 +264,7 @@ check_ungrouped_columns_walker(Node *node,
    /*
     * If we have an ungrouped Var of the original query level, we have a
     * failure.  Vars below the original query level are not a problem,
-    * and neither are Vars from above it.  (If such Vars are ungrouped as
+    * and neither are Vars from above it.  (If such Vars are ungrouped as
     * far as their own query level is concerned, that's someone else's
     * problem...)
     */
@@ -276,6 +276,7 @@ check_ungrouped_columns_walker(Node *node,
 
        if (var->varlevelsup != context->sublevels_up)
            return false;       /* it's not local to my query, ignore */
+
        /*
         * Check for a match, if we didn't do it above.
         */
@@ -283,13 +284,13 @@ check_ungrouped_columns_walker(Node *node,
        {
            foreach(gl, context->groupClauses)
            {
-               Var    *gvar = (Var *) lfirst(gl);
+               Var        *gvar = (Var *) lfirst(gl);
 
                if (IsA(gvar, Var) &&
                    gvar->varno == var->varno &&
                    gvar->varattno == var->varattno &&
                    gvar->varlevelsup == 0)
-                   return false; /* acceptable, we're okay */
+                   return false;       /* acceptable, we're okay */
            }
        }
 
@@ -365,10 +366,10 @@ build_aggregate_fnexprs(Oid agg_input_type,
    (void) get_func_signature(transfn_oid, transfn_arg_types, &transfn_nargs);
 
    /*
-    * Build arg list to use in the transfn FuncExpr node. We really
-    * only care that transfn can discover the actual argument types
-    * at runtime using get_fn_expr_argtype(), so it's okay to use
-    * Param nodes that don't correspond to any real Param.
+    * Build arg list to use in the transfn FuncExpr node. We really only
+    * care that transfn can discover the actual argument types at runtime
+    * using get_fn_expr_argtype(), so it's okay to use Param nodes that
+    * don't correspond to any real Param.
     */
    arg0 = makeNode(Param);
    arg0->paramkind = PARAM_EXEC;
@@ -385,33 +386,31 @@ build_aggregate_fnexprs(Oid agg_input_type,
        args = makeList2(arg0, arg1);
    }
    else
-   {
        args = makeList1(arg0);
+
+   *transfnexpr = (Expr *) makeFuncExpr(transfn_oid,
+                                        agg_state_type,
+                                        args,
+                                        COERCE_DONTCARE);
+
+   /* see if we have a final function */
+   if (!OidIsValid(finalfn_oid))
+   {
+       *finalfnexpr = NULL;
+       return;
    }
 
-   *transfnexpr = (Expr *) makeFuncExpr(transfn_oid,
-                                       agg_state_type,
-                                       args,
-                                       COERCE_DONTCARE);
-
-   /* see if we have a final function */
-   if (!OidIsValid(finalfn_oid))
-   {
-      *finalfnexpr = NULL;
-      return;
-   }
-
-   /*
-   * Build expr tree for final function
-   */
+   /*
+    * Build expr tree for final function
+    */
    arg0 = makeNode(Param);
    arg0->paramkind = PARAM_EXEC;
    arg0->paramid = -1;
    arg0->paramtype = agg_state_type;
    args = makeList1(arg0);
 
-   *finalfnexpr = (Expr *) makeFuncExpr(finalfn_oid,
-                                       agg_result_type,
-                                       args,
-                                       COERCE_DONTCARE);
+   *finalfnexpr = (Expr *) makeFuncExpr(finalfn_oid,
+                                        agg_result_type,
+                                        args,
+                                        COERCE_DONTCARE);
 }
index 4b61d59b4a62044f46ce5e6a8abcda94bf567b34..59cf2516999b1ab6cc7986dc374b235febe1378e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.118 2003/07/19 20:20:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.119 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -60,8 +60,8 @@ static Node *buildMergedJoinVar(ParseState *pstate, JoinType jointype,
 static TargetEntry *findTargetlistEntry(ParseState *pstate, Node *node,
                    List *tlist, int clause);
 static List *addTargetToSortList(ParseState *pstate, TargetEntry *tle,
-                                List *sortlist, List *targetlist,
-                                List *opname, bool resolveUnknown);
+                   List *sortlist, List *targetlist,
+                   List *opname, bool resolveUnknown);
 
 
 /*
@@ -337,7 +337,7 @@ transformJoinOnClause(ParseState *pstate, JoinExpr *j,
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
                     errmsg("JOIN/ON clause refers to \"%s\", which is not part of JOIN",
-                           rt_fetch(varno, pstate->p_rtable)->eref->aliasname)));
+                  rt_fetch(varno, pstate->p_rtable)->eref->aliasname)));
        }
    }
    bms_free(clause_varnos);
@@ -422,17 +422,19 @@ transformRangeSubselect(ParseState *pstate, RangeSubselect *r)
                 errmsg("sub-select in FROM may not have SELECT INTO")));
 
    /*
-    * The subquery cannot make use of any variables from FROM items created
-    * earlier in the current query.  Per SQL92, the scope of a FROM item
-    * does not include other FROM items.  Formerly we hacked the namespace
-    * so that the other variables weren't even visible, but it seems more
-    * useful to leave them visible and give a specific error message.
+    * The subquery cannot make use of any variables from FROM items
+    * created earlier in the current query.  Per SQL92, the scope of a
+    * FROM item does not include other FROM items.  Formerly we hacked
+    * the namespace so that the other variables weren't even visible, but
+    * it seems more useful to leave them visible and give a specific
+    * error message.
     *
     * XXX this will need further work to support SQL99's LATERAL() feature,
     * wherein such references would indeed be legal.
     *
     * We can skip groveling through the subquery if there's not anything
-    * visible in the current query.  Also note that outer references are OK.
+    * visible in the current query.  Also note that outer references are
+    * OK.
     */
    if (pstate->p_namespace)
    {
@@ -482,9 +484,9 @@ transformRangeFunction(ParseState *pstate, RangeFunction *r)
 
    /*
     * The function parameters cannot make use of any variables from other
-    * FROM items.  (Compare to transformRangeSubselect(); the coding is
-    * different though because we didn't parse as a sub-select with its own
-    * level of namespace.)
+    * FROM items.  (Compare to transformRangeSubselect(); the coding is
+    * different though because we didn't parse as a sub-select with its
+    * own level of namespace.)
     *
     * XXX this will need further work to support SQL99's LATERAL() feature,
     * wherein such references would indeed be legal.
@@ -1017,7 +1019,7 @@ transformLimitClause(ParseState *pstate, Node *clause,
    {
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                /* translator: %s is name of a SQL construct, eg LIMIT */
+       /* translator: %s is name of a SQL construct, eg LIMIT */
                 errmsg("argument of %s must not contain variables",
                        constructName)));
    }
@@ -1025,7 +1027,7 @@ transformLimitClause(ParseState *pstate, Node *clause,
    {
        ereport(ERROR,
                (errcode(ERRCODE_GROUPING_ERROR),
-                /* translator: %s is name of a SQL construct, eg LIMIT */
+       /* translator: %s is name of a SQL construct, eg LIMIT */
                 errmsg("argument of %s must not contain aggregates",
                        constructName)));
    }
@@ -1033,7 +1035,7 @@ transformLimitClause(ParseState *pstate, Node *clause,
    {
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                /* translator: %s is name of a SQL construct, eg LIMIT */
+       /* translator: %s is name of a SQL construct, eg LIMIT */
                 errmsg("argument of %s must not contain sub-selects",
                        constructName)));
    }
@@ -1135,7 +1137,11 @@ findTargetlistEntry(ParseState *pstate, Node *node, List *tlist, int clause)
                        if (!equal(target_result->expr, tle->expr))
                            ereport(ERROR,
                                    (errcode(ERRCODE_AMBIGUOUS_COLUMN),
-                                    /* translator: first %s is name of a SQL construct, eg ORDER BY */
+
+                           /*
+                            * translator: first %s is name of a SQL
+                            * construct, eg ORDER BY
+                            */
                                     errmsg("%s \"%s\" is ambiguous",
                                            clauseText[clause], name)));
                    }
@@ -1157,7 +1163,7 @@ findTargetlistEntry(ParseState *pstate, Node *node, List *tlist, int clause)
        if (!IsA(val, Integer))
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    /* translator: %s is name of a SQL construct, eg ORDER BY */
+           /* translator: %s is name of a SQL construct, eg ORDER BY */
                     errmsg("non-integer constant in %s",
                            clauseText[clause])));
        target_pos = intVal(val);
@@ -1174,7 +1180,7 @@ findTargetlistEntry(ParseState *pstate, Node *node, List *tlist, int clause)
        }
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                /* translator: %s is name of a SQL construct, eg ORDER BY */
+       /* translator: %s is name of a SQL construct, eg ORDER BY */
                 errmsg("%s position %d is not in target list",
                        clauseText[clause], target_pos)));
    }
@@ -1250,10 +1256,10 @@ transformGroupClause(ParseState *pstate, List *grouplist,
        /*
         * If the GROUP BY clause matches the ORDER BY clause, we want to
         * adopt the ordering operators from the latter rather than using
-        * the default ops.  This allows "GROUP BY foo ORDER BY foo DESC" to
-        * be done with only one sort step.  Note we are assuming that any
-        * user-supplied ordering operator will bring equal values together,
-        * which is all that GROUP BY needs.
+        * the default ops.  This allows "GROUP BY foo ORDER BY foo DESC"
+        * to be done with only one sort step.  Note we are assuming that
+        * any user-supplied ordering operator will bring equal values
+        * together, which is all that GROUP BY needs.
         */
        if (sortClause &&
            ((SortClause *) lfirst(sortClause))->tleSortGroupRef ==
@@ -1422,7 +1428,7 @@ transformDistinctClause(ParseState *pstate, List *distinctlist,
                        break;
                    }
                }
-               if (slitem == NIL) /* should not happen */
+               if (slitem == NIL)      /* should not happen */
                    elog(ERROR, "failed to add DISTINCT ON clause to target list");
            }
        }
index 351bc00c70f584fb1db2874f1600ea9b96153d52..9995fcc832b76f6d711543dc753c1cfaca7f92b2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.106 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.107 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,8 +30,8 @@
 
 
 static Node *coerce_type_typmod(Node *node,
-                               Oid targetTypeId, int32 targetTypMod,
-                               CoercionForm cformat, bool isExplicit);
+                  Oid targetTypeId, int32 targetTypMod,
+                  CoercionForm cformat, bool isExplicit);
 
 
 /*
@@ -39,12 +39,12 @@ static Node *coerce_type_typmod(Node *node,
  *     Convert an expression to a target type and typmod.
  *
  * This is the general-purpose entry point for arbitrary type coercion
- * operations.  Direct use of the component operations can_coerce_type,
+ * operations. Direct use of the component operations can_coerce_type,
  * coerce_type, and coerce_type_typmod should be restricted to special
  * cases (eg, when the conversion is expected to succeed).
  *
  * Returns the possibly-transformed expression tree, or NULL if the type
- * conversion is not possible.  (We do this, rather than ereport'ing directly,
+ * conversion is not possible. (We do this, rather than ereport'ing directly,
  * so that callers can generate custom error messages indicating context.)
  *
  * pstate - parse state (can be NULL, see coerce_type)
@@ -66,14 +66,14 @@ coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype,
    else if (ccontext >= COERCION_ASSIGNMENT)
    {
        /*
-        * String hacks to get transparent conversions for char and varchar:
-        * if a coercion to text is available, use it for forced coercions to
-        * char(n) or varchar(n) or domains thereof.
+        * String hacks to get transparent conversions for char and
+        * varchar: if a coercion to text is available, use it for forced
+        * coercions to char(n) or varchar(n) or domains thereof.
         *
         * This is pretty grotty, but seems easier to maintain than providing
         * entries in pg_cast that parallel all the ones for text.
         */
-       Oid     targetbasetype = getBaseType(targettype);
+       Oid         targetbasetype = getBaseType(targettype);
 
        if (targetbasetype == BPCHAROID || targetbasetype == VARCHAROID)
        {
@@ -91,7 +91,10 @@ coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype,
                }
                else
                {
-                   /* need a RelabelType if no typmod coercion will be performed */
+                   /*
+                    * need a RelabelType if no typmod coercion will be
+                    * performed
+                    */
                    if (targettypmod < 0)
                        expr = (Node *) makeRelabelType((Expr *) expr,
                                                        targettype, -1,
@@ -127,13 +130,13 @@ coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype,
  * The caller should already have determined that the coercion is possible;
  * see can_coerce_type.
  *
- * No coercion to a typmod (length) is performed here.  The caller must
+ * No coercion to a typmod (length) is performed here. The caller must
  * call coerce_type_typmod as well, if a typmod constraint is wanted.
  * (But if the target type is a domain, it may internally contain a
  * typmod constraint, which will be applied inside coerce_to_domain.)
  *
  * pstate is only used in the case that we are able to resolve the type of
- * a previously UNKNOWN Param.  It is okay to pass pstate = NULL if the
+ * a previously UNKNOWN Param. It is okay to pass pstate = NULL if the
  * caller does not want type information updated for Params.
  */
 Node *
@@ -191,8 +194,9 @@ coerce_type(ParseState *pstate, Node *node,
             * Any length constraint will be applied later by our caller.
             *
             * Note that we call stringTypeDatum using the domain's pg_type
-            * row, if it's a domain.  This works because the domain row has
-            * the same typinput and typelem as the base type --- ugly...
+            * row, if it's a domain.  This works because the domain row
+            * has the same typinput and typelem as the base type ---
+            * ugly...
             */
            newcon->constvalue = stringTypeDatum(targetType, val, -1);
            pfree(val);
@@ -232,12 +236,12 @@ coerce_type(ParseState *pstate, Node *node,
                    (errcode(ERRCODE_UNDEFINED_PARAMETER),
                     errmsg("there is no parameter $%d", paramno)));
 
-       if (toppstate->p_paramtypes[paramno-1] == UNKNOWNOID)
+       if (toppstate->p_paramtypes[paramno - 1] == UNKNOWNOID)
        {
            /* We've successfully resolved the type */
-           toppstate->p_paramtypes[paramno-1] = targetTypeId;
+           toppstate->p_paramtypes[paramno - 1] = targetTypeId;
        }
-       else if (toppstate->p_paramtypes[paramno-1] == targetTypeId)
+       else if (toppstate->p_paramtypes[paramno - 1] == targetTypeId)
        {
            /* We previously resolved the type, and it matches */
        }
@@ -246,10 +250,10 @@ coerce_type(ParseState *pstate, Node *node,
            /* Ooops */
            ereport(ERROR,
                    (errcode(ERRCODE_AMBIGUOUS_PARAMETER),
-                    errmsg("inconsistent types deduced for parameter $%d",
-                           paramno),
+                  errmsg("inconsistent types deduced for parameter $%d",
+                         paramno),
                     errdetail("%s versus %s",
-                              format_type_be(toppstate->p_paramtypes[paramno-1]),
+                   format_type_be(toppstate->p_paramtypes[paramno - 1]),
                               format_type_be(targetTypeId))));
        }
 
@@ -298,7 +302,7 @@ coerce_type(ParseState *pstate, Node *node,
             * higher-level code.
             *
             * Also, domains may have value restrictions beyond the base type
-            * that must be accounted for.  If the destination is a domain
+            * that must be accounted for.  If the destination is a domain
             * then we won't need a RelabelType node.
             */
            result = coerce_to_domain(node, InvalidOid, targetTypeId,
@@ -306,10 +310,11 @@ coerce_type(ParseState *pstate, Node *node,
            if (result == node)
            {
                /*
-                * XXX could we label result with exprTypmod(node) instead of
-                * default -1 typmod, to save a possible length-coercion
-                * later? Would work if both types have same interpretation of
-                * typmod, which is likely but not certain.
+                * XXX could we label result with exprTypmod(node) instead
+                * of default -1 typmod, to save a possible
+                * length-coercion later? Would work if both types have
+                * same interpretation of typmod, which is likely but not
+                * certain.
                 */
                result = (Node *) makeRelabelType((Expr *) result,
                                                  targetTypeId, -1,
@@ -386,7 +391,7 @@ can_coerce_type(int nargs, Oid *input_typeids, Oid *target_typeids,
        if (targetTypeId == ANYARRAYOID ||
            targetTypeId == ANYELEMENTOID)
        {
-           have_generics = true; /* do more checking later */
+           have_generics = true;       /* do more checking later */
            continue;
        }
 
@@ -437,7 +442,7 @@ Node *
 coerce_to_domain(Node *arg, Oid baseTypeId, Oid typeId, CoercionForm cformat)
 {
    CoerceToDomain *result;
-   int32   typmod;
+   int32       typmod;
 
    /* Get the base type if it hasn't been supplied */
    if (baseTypeId == InvalidOid)
@@ -448,17 +453,18 @@ coerce_to_domain(Node *arg, Oid baseTypeId, Oid typeId, CoercionForm cformat)
        return arg;
 
    /*
-    * If the domain applies a typmod to its base type, build the appropriate
-    * coercion step.  Mark it implicit for display purposes, because we don't
-    * want it shown separately by ruleutils.c; but the isExplicit flag passed
-    * to the conversion function depends on the manner in which the domain
-    * coercion is invoked, so that the semantics of implicit and explicit
-    * coercion differ.  (Is that really the behavior we want?)
+    * If the domain applies a typmod to its base type, build the
+    * appropriate coercion step.  Mark it implicit for display purposes,
+    * because we don't want it shown separately by ruleutils.c; but the
+    * isExplicit flag passed to the conversion function depends on the
+    * manner in which the domain coercion is invoked, so that the
+    * semantics of implicit and explicit coercion differ.  (Is that
+    * really the behavior we want?)
     *
     * NOTE: because we apply this as part of the fixed expression structure,
-    * ALTER DOMAIN cannot alter the typtypmod.  But it's unclear that that
-    * would be safe to do anyway, without lots of knowledge about what the
-    * base type thinks the typmod means.
+    * ALTER DOMAIN cannot alter the typtypmod.  But it's unclear that
+    * that would be safe to do anyway, without lots of knowledge about
+    * what the base type thinks the typmod means.
     */
    typmod = get_typtypmod(typeId);
    if (typmod >= 0)
@@ -467,9 +473,10 @@ coerce_to_domain(Node *arg, Oid baseTypeId, Oid typeId, CoercionForm cformat)
                                 (cformat != COERCE_IMPLICIT_CAST));
 
    /*
-    * Now build the domain coercion node.  This represents run-time checking
-    * of any constraints currently attached to the domain.  This also
-    * ensures that the expression is properly labeled as to result type.
+    * Now build the domain coercion node.  This represents run-time
+    * checking of any constraints currently attached to the domain.  This
+    * also ensures that the expression is properly labeled as to result
+    * type.
     */
    result = makeNode(CoerceToDomain);
    result->arg = (Expr *) arg;
@@ -568,15 +575,15 @@ coerce_to_boolean(ParseState *pstate, Node *node,
        if (node == NULL)
            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))));
+           /* 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))));
    }
 
    if (expression_returns_set(node))
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                /* translator: %s is name of a SQL construct, eg WHERE */
+       /* translator: %s is name of a SQL construct, eg WHERE */
                 errmsg("argument of %s must not return a set",
                        constructName)));
 
@@ -607,15 +614,15 @@ coerce_to_integer(ParseState *pstate, Node *node,
        if (node == NULL)
            ereport(ERROR,
                    (errcode(ERRCODE_DATATYPE_MISMATCH),
-                    /* translator: first %s is name of a SQL construct, eg LIMIT */
-                    errmsg("argument of %s must be type integer, not type %s",
-                           constructName, format_type_be(inputTypeId))));
+           /* translator: first %s is name of a SQL construct, eg LIMIT */
+              errmsg("argument of %s must be type integer, not type %s",
+                     constructName, format_type_be(inputTypeId))));
    }
 
    if (expression_returns_set(node))
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                /* translator: %s is name of a SQL construct, eg LIMIT */
+       /* translator: %s is name of a SQL construct, eg LIMIT */
                 errmsg("argument of %s must not return a set",
                        constructName)));
 
@@ -664,19 +671,24 @@ select_common_type(List *typeids, const char *context)
                 */
                ereport(ERROR,
                        (errcode(ERRCODE_DATATYPE_MISMATCH),
-                        /* translator: first %s is name of a SQL construct, eg CASE */
+
+               /*
+                * translator: first %s is name of a SQL construct, eg
+                * CASE
+                */
                         errmsg("%s types %s and %s cannot be matched",
                                context,
                                format_type_be(ptype),
                                format_type_be(ntype))));
            }
            else if (!IsPreferredType(pcategory, ptype) &&
-                    can_coerce_type(1, &ptype, &ntype, COERCION_IMPLICIT) &&
-                    !can_coerce_type(1, &ntype, &ptype, COERCION_IMPLICIT))
+                can_coerce_type(1, &ptype, &ntype, COERCION_IMPLICIT) &&
+                 !can_coerce_type(1, &ntype, &ptype, COERCION_IMPLICIT))
            {
                /*
-                * take new type if can coerce to it implicitly but not the
-                * other way; but if we have a preferred type, stay on it.
+                * take new type if can coerce to it implicitly but not
+                * the other way; but if we have a preferred type, stay on
+                * it.
                 */
                ptype = ntype;
                pcategory = TypeCategory(ptype);
@@ -725,7 +737,7 @@ coerce_to_common_type(ParseState *pstate, Node *node,
    else
        ereport(ERROR,
                (errcode(ERRCODE_CANNOT_COERCE),
-                /* translator: first %s is name of a SQL construct, eg CASE */
+       /* translator: first %s is name of a SQL construct, eg CASE */
                 errmsg("%s could not convert type %s to %s",
                        context,
                        format_type_be(inputTypeId),
@@ -744,8 +756,8 @@ coerce_to_common_type(ParseState *pstate, Node *node,
  *   and must in fact be varlena arrays.
  * 2) All arguments declared ANYELEMENT must have matching datatypes.
  * 3) If there are arguments of both ANYELEMENT and ANYARRAY, make sure
- *    the actual ANYELEMENT datatype is in fact the element type for
- *    the actual ANYARRAY datatype.
+ *   the actual ANYELEMENT datatype is in fact the element type for
+ *   the actual ANYARRAY datatype.
  *
  * If we have UNKNOWN input (ie, an untyped literal) for any ANYELEMENT
  * or ANYARRAY argument, assume it is okay.
@@ -763,13 +775,13 @@ check_generic_type_consistency(Oid *actual_arg_types,
    Oid         array_typelem;
 
    /*
-    * Loop through the arguments to see if we have any that are
-    * ANYARRAY or ANYELEMENT. If so, require the actual types to be
+    * Loop through the arguments to see if we have any that are ANYARRAY
+    * or ANYELEMENT. If so, require the actual types to be
     * self-consistent
     */
    for (j = 0; j < nargs; j++)
    {
-       Oid     actual_type = actual_arg_types[j];
+       Oid         actual_type = actual_arg_types[j];
 
        if (declared_arg_types[j] == ANYELEMENTOID)
        {
@@ -798,7 +810,10 @@ check_generic_type_consistency(Oid *actual_arg_types,
 
        if (!OidIsValid(elem_typeid))
        {
-           /* if we don't have an element type yet, use the one we just got */
+           /*
+            * if we don't have an element type yet, use the one we just
+            * got
+            */
            elem_typeid = array_typelem;
        }
        else if (array_typelem != elem_typeid)
@@ -831,23 +846,23 @@ check_generic_type_consistency(Oid *actual_arg_types,
  * if it is declared ANYARRAY or ANYELEMENT:
  *
  * 1) If return type is ANYARRAY, and any argument is ANYARRAY, use the
- *    argument's actual type as the function's return type.
+ *   argument's actual type as the function's return type.
  * 2) If return type is ANYARRAY, no argument is ANYARRAY, but any argument
- *    is ANYELEMENT, use the actual type of the argument to determine
- *    the function's return type, i.e. the element type's corresponding
- *    array type.
+ *   is ANYELEMENT, use the actual type of the argument to determine
+ *   the function's return type, i.e. the element type's corresponding
+ *   array type.
  * 3) If return type is ANYARRAY, no argument is ANYARRAY or ANYELEMENT,
- *    generate an ERROR. This condition is prevented by CREATE FUNCTION
- *    and is therefore not expected here.
+ *   generate an ERROR. This condition is prevented by CREATE FUNCTION
+ *   and is therefore not expected here.
  * 4) If return type is ANYELEMENT, and any argument is ANYELEMENT, use the
- *    argument's actual type as the function's return type.
+ *   argument's actual type as the function's return type.
  * 5) If return type is ANYELEMENT, no argument is ANYELEMENT, but any
- *    argument is ANYARRAY, use the actual type of the argument to determine
- *    the function's return type, i.e. the array type's corresponding
- *    element type.
+ *   argument is ANYARRAY, use the actual type of the argument to determine
+ *   the function's return type, i.e. the array type's corresponding
+ *   element type.
  * 6) If return type is ANYELEMENT, no argument is ANYARRAY or ANYELEMENT,
- *    generate an ERROR. This condition is prevented by CREATE FUNCTION
- *    and is therefore not expected here.
+ *   generate an ERROR. This condition is prevented by CREATE FUNCTION
+ *   and is therefore not expected here.
  */
 Oid
 enforce_generic_type_consistency(Oid *actual_arg_types,
@@ -863,13 +878,13 @@ enforce_generic_type_consistency(Oid *actual_arg_types,
    Oid         array_typelem = InvalidOid;
 
    /*
-    * Loop through the arguments to see if we have any that are
-    * ANYARRAY or ANYELEMENT. If so, require the actual types to be
+    * Loop through the arguments to see if we have any that are ANYARRAY
+    * or ANYELEMENT. If so, require the actual types to be
     * self-consistent
     */
    for (j = 0; j < nargs; j++)
    {
-       Oid     actual_type = actual_arg_types[j];
+       Oid         actual_type = actual_arg_types[j];
 
        if (declared_arg_types[j] == ANYELEMENTOID)
        {
@@ -882,7 +897,7 @@ enforce_generic_type_consistency(Oid *actual_arg_types,
            if (OidIsValid(elem_typeid) && actual_type != elem_typeid)
                ereport(ERROR,
                        (errcode(ERRCODE_DATATYPE_MISMATCH),
-                        errmsg("arguments declared ANYELEMENT are not all alike"),
+               errmsg("arguments declared ANYELEMENT are not all alike"),
                         errdetail("%s versus %s",
                                   format_type_be(elem_typeid),
                                   format_type_be(actual_type))));
@@ -899,7 +914,7 @@ enforce_generic_type_consistency(Oid *actual_arg_types,
            if (OidIsValid(array_typeid) && actual_type != array_typeid)
                ereport(ERROR,
                        (errcode(ERRCODE_DATATYPE_MISMATCH),
-                        errmsg("arguments declared ANYARRAY are not all alike"),
+                errmsg("arguments declared ANYARRAY are not all alike"),
                         errdetail("%s versus %s",
                                   format_type_be(array_typeid),
                                   format_type_be(actual_type))));
@@ -921,12 +936,15 @@ enforce_generic_type_consistency(Oid *actual_arg_types,
        if (!OidIsValid(array_typelem))
            ereport(ERROR,
                    (errcode(ERRCODE_DATATYPE_MISMATCH),
-                    errmsg("argument declared ANYARRAY is not an array but %s",
-                           format_type_be(array_typeid))));
+             errmsg("argument declared ANYARRAY is not an array but %s",
+                    format_type_be(array_typeid))));
 
        if (!OidIsValid(elem_typeid))
        {
-           /* if we don't have an element type yet, use the one we just got */
+           /*
+            * if we don't have an element type yet, use the one we just
+            * got
+            */
            elem_typeid = array_typelem;
        }
        else if (array_typelem != elem_typeid)
@@ -955,15 +973,13 @@ enforce_generic_type_consistency(Oid *actual_arg_types,
    {
        for (j = 0; j < nargs; j++)
        {
-           Oid     actual_type = actual_arg_types[j];
+           Oid         actual_type = actual_arg_types[j];
 
            if (actual_type != UNKNOWNOID)
                continue;
 
            if (declared_arg_types[j] == ANYELEMENTOID)
-           {
                declared_arg_types[j] = elem_typeid;
-           }
            else if (declared_arg_types[j] == ANYARRAYOID)
            {
                if (!OidIsValid(array_typeid))
@@ -989,8 +1005,8 @@ enforce_generic_type_consistency(Oid *actual_arg_types,
            if (!OidIsValid(array_typeid))
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_OBJECT),
-                        errmsg("could not find array type for datatype %s",
-                               format_type_be(elem_typeid))));
+                     errmsg("could not find array type for datatype %s",
+                            format_type_be(elem_typeid))));
        }
        return array_typeid;
    }
@@ -1026,7 +1042,7 @@ resolve_generic_type(Oid declared_type,
        if (context_declared_type == ANYARRAYOID)
        {
            /* Use actual type, but it must be an array */
-           Oid     array_typelem = get_element_type(context_actual_type);
+           Oid         array_typelem = get_element_type(context_actual_type);
 
            if (!OidIsValid(array_typelem))
                ereport(ERROR,
@@ -1038,13 +1054,13 @@ resolve_generic_type(Oid declared_type,
        else if (context_declared_type == ANYELEMENTOID)
        {
            /* Use the array type corresponding to actual type */
-           Oid     array_typeid = get_array_type(context_actual_type);
+           Oid         array_typeid = get_array_type(context_actual_type);
 
            if (!OidIsValid(array_typeid))
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_OBJECT),
-                        errmsg("could not find array type for datatype %s",
-                               format_type_be(context_actual_type))));
+                     errmsg("could not find array type for datatype %s",
+                            format_type_be(context_actual_type))));
            return array_typeid;
        }
    }
@@ -1053,7 +1069,7 @@ resolve_generic_type(Oid declared_type,
        if (context_declared_type == ANYARRAYOID)
        {
            /* Use the element type corresponding to actual type */
-           Oid     array_typelem = get_element_type(context_actual_type);
+           Oid         array_typelem = get_element_type(context_actual_type);
 
            if (!OidIsValid(array_typelem))
                ereport(ERROR,
@@ -1207,8 +1223,8 @@ IsPreferredType(CATEGORY category, Oid type)
        return false;
 
    /*
-    * This switch should agree with TypeCategory(), above.  Note that
-    * at this point, category certainly matches the type.
+    * This switch should agree with TypeCategory(), above.  Note that at
+    * this point, category certainly matches the type.
     */
    switch (category)
    {
@@ -1279,8 +1295,8 @@ IsPreferredType(CATEGORY category, Oid type)
  *     Check if srctype is binary-coercible to targettype.
  *
  * This notion allows us to cheat and directly exchange values without
- * going through the trouble of calling a conversion function.  Note that
- * in general, this should only be an implementation shortcut.  Before 7.4,
+ * going through the trouble of calling a conversion function. Note that
+ * in general, this should only be an implementation shortcut. Before 7.4,
  * this was also used as a heuristic for resolving overloaded functions and
  * operators, but that's basically a bad idea.
  *
@@ -1293,7 +1309,7 @@ IsPreferredType(CATEGORY category, Oid type)
  * ANYARRAY type.
  *
  * This function replaces IsBinaryCompatible(), which was an inherently
- * symmetric test.  Since the pg_cast entries aren't necessarily symmetric,
+ * symmetric test. Since the pg_cast entries aren't necessarily symmetric,
  * the order of the operands is now significant.
  */
 bool
@@ -1415,16 +1431,16 @@ find_coercion_pathway(Oid targetTypeId, Oid sourceTypeId,
    else
    {
        /*
-        * If there's no pg_cast entry, perhaps we are dealing with a
-        * pair of array types.  If so, and if the element types have
-        * suitable cast, use array_type_coerce().
+        * If there's no pg_cast entry, perhaps we are dealing with a pair
+        * of array types.  If so, and if the element types have a
+        * suitable cast, use array_type_coerce().
         */
        Oid         targetElemType;
        Oid         sourceElemType;
        Oid         elemfuncid;
 
        if ((targetElemType = get_element_type(targetTypeId)) != InvalidOid &&
-           (sourceElemType = get_element_type(sourceTypeId)) != InvalidOid)
+        (sourceElemType = get_element_type(sourceTypeId)) != InvalidOid)
        {
            if (find_coercion_pathway(targetElemType, sourceElemType,
                                      ccontext, &elemfuncid))
index eb24c1b615e762ecbc67362070a3a7ce6893947e..b5aac4f9fd6df1e8ab6adf8df1b2666474a888c2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.158 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.159 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -41,7 +41,7 @@ static int    expr_depth_counter = 0;
 bool       Transform_null_equals = false;
 
 static Node *typecast_expression(ParseState *pstate, Node *expr,
-                                TypeName *typename);
+                   TypeName *typename);
 static Node *transformColumnRef(ParseState *pstate, ColumnRef *cref);
 static Node *transformIndirection(ParseState *pstate, Node *basenode,
                     List *indirection);
@@ -130,10 +130,10 @@ transformExpr(ParseState *pstate, Node *expr)
                    toppstate = toppstate->parentParseState;
 
                /* Check parameter number is in range */
-               if (paramno <= 0) /* probably can't happen? */
+               if (paramno <= 0)       /* probably can't happen? */
                    ereport(ERROR,
                            (errcode(ERRCODE_UNDEFINED_PARAMETER),
-                            errmsg("there is no parameter $%d", paramno)));
+                         errmsg("there is no parameter $%d", paramno)));
                if (paramno > toppstate->p_numparams)
                {
                    if (!toppstate->p_variableparams)
@@ -152,20 +152,20 @@ transformExpr(ParseState *pstate, Node *expr)
                    /* Zero out the previously-unreferenced slots */
                    MemSet(toppstate->p_paramtypes + toppstate->p_numparams,
                           0,
-                          (paramno - toppstate->p_numparams) * sizeof(Oid));
+                      (paramno - toppstate->p_numparams) * sizeof(Oid));
                    toppstate->p_numparams = paramno;
                }
                if (toppstate->p_variableparams)
                {
                    /* If not seen before, initialize to UNKNOWN type */
-                   if (toppstate->p_paramtypes[paramno-1] == InvalidOid)
-                       toppstate->p_paramtypes[paramno-1] = UNKNOWNOID;
+                   if (toppstate->p_paramtypes[paramno - 1] == InvalidOid)
+                       toppstate->p_paramtypes[paramno - 1] = UNKNOWNOID;
                }
 
                param = makeNode(Param);
                param->paramkind = PARAM_NUM;
                param->paramid = (AttrNumber) paramno;
-               param->paramtype = toppstate->p_paramtypes[paramno-1];
+               param->paramtype = toppstate->p_paramtypes[paramno - 1];
                result = (Node *) param;
 
                /* handle qualification, if any */
@@ -254,9 +254,9 @@ transformExpr(ParseState *pstate, Node *expr)
                            else
                            {
                                Node       *lexpr = transformExpr(pstate,
-                                                                 a->lexpr);
+                                                              a->lexpr);
                                Node       *rexpr = transformExpr(pstate,
-                                                                 a->rexpr);
+                                                              a->rexpr);
 
                                result = (Node *) make_op(pstate,
                                                          a->name,
@@ -276,8 +276,8 @@ transformExpr(ParseState *pstate, Node *expr)
                            rexpr = coerce_to_boolean(pstate, rexpr, "AND");
 
                            result = (Node *) makeBoolExpr(AND_EXPR,
-                                                          makeList2(lexpr,
-                                                                    rexpr));
+                                                        makeList2(lexpr,
+                                                                rexpr));
                        }
                        break;
                    case AEXPR_OR:
@@ -291,8 +291,8 @@ transformExpr(ParseState *pstate, Node *expr)
                            rexpr = coerce_to_boolean(pstate, rexpr, "OR");
 
                            result = (Node *) makeBoolExpr(OR_EXPR,
-                                                          makeList2(lexpr,
-                                                                    rexpr));
+                                                        makeList2(lexpr,
+                                                                rexpr));
                        }
                        break;
                    case AEXPR_NOT:
@@ -303,7 +303,7 @@ transformExpr(ParseState *pstate, Node *expr)
                            rexpr = coerce_to_boolean(pstate, rexpr, "NOT");
 
                            result = (Node *) makeBoolExpr(NOT_EXPR,
-                                                          makeList1(rexpr));
+                                                      makeList1(rexpr));
                        }
                        break;
                    case AEXPR_OP_ANY:
@@ -314,7 +314,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                                              a->rexpr);
 
                            result = (Node *) make_scalar_array_op(pstate,
-                                                                  a->name,
+                                                                a->name,
                                                                   true,
                                                                   lexpr,
                                                                   rexpr);
@@ -328,7 +328,7 @@ transformExpr(ParseState *pstate, Node *expr)
                                                              a->rexpr);
 
                            result = (Node *) make_scalar_array_op(pstate,
-                                                                  a->name,
+                                                                a->name,
                                                                   false,
                                                                   lexpr,
                                                                   rexpr);
@@ -347,10 +347,12 @@ transformExpr(ParseState *pstate, Node *expr)
                                                      rexpr);
                            if (((OpExpr *) result)->opresulttype != BOOLOID)
                                ereport(ERROR,
-                                       (errcode(ERRCODE_DATATYPE_MISMATCH),
-                                        errmsg("IS DISTINCT FROM requires = operator to yield boolean")));
+                                    (errcode(ERRCODE_DATATYPE_MISMATCH),
+                                     errmsg("IS DISTINCT FROM requires = operator to yield boolean")));
+
                            /*
-                            * We rely on DistinctExpr and OpExpr being same struct
+                            * We rely on DistinctExpr and OpExpr being
+                            * same struct
                             */
                            NodeSetTag(result, T_DistinctExpr);
                        }
@@ -368,10 +370,12 @@ transformExpr(ParseState *pstate, Node *expr)
                                                      rexpr);
                            if (((OpExpr *) result)->opresulttype != BOOLOID)
                                ereport(ERROR,
-                                       (errcode(ERRCODE_DATATYPE_MISMATCH),
-                                        errmsg("NULLIF requires = operator to yield boolean")));
+                                    (errcode(ERRCODE_DATATYPE_MISMATCH),
+                                     errmsg("NULLIF requires = operator to yield boolean")));
+
                            /*
-                            * We rely on NullIfExpr and OpExpr being same struct
+                            * We rely on NullIfExpr and OpExpr being same
+                            * struct
                             */
                            NodeSetTag(result, T_NullIfExpr);
                        }
@@ -425,8 +429,8 @@ transformExpr(ParseState *pstate, Node *expr)
                List       *args;
 
                /*
-                * Transform the list of arguments.  We use a shallow
-                * list copy and then transform-in-place to avoid O(N^2)
+                * Transform the list of arguments.  We use a shallow list
+                * copy and then transform-in-place to avoid O(N^2)
                 * behavior from repeated lappend's.
                 */
                targs = listCopy(fn->args);
@@ -489,7 +493,7 @@ transformExpr(ParseState *pstate, Node *expr)
                        ((TargetEntry *) lfirst(tlist))->resdom->resjunk)
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("sub-select must return a column")));
+                            errmsg("sub-select must return a column")));
                    while ((tlist = lnext(tlist)) != NIL)
                    {
                        if (!((TargetEntry *) lfirst(tlist))->resdom->resjunk)
@@ -499,8 +503,9 @@ transformExpr(ParseState *pstate, Node *expr)
                    }
 
                    /*
-                    * EXPR and ARRAY need no lefthand or combining operator.
-                    * These fields should be NIL already, but make sure.
+                    * EXPR and ARRAY need no lefthand or combining
+                    * operator. These fields should be NIL already, but
+                    * make sure.
                     */
                    sublink->lefthand = NIL;
                    sublink->operName = NIL;
@@ -523,9 +528,10 @@ transformExpr(ParseState *pstate, Node *expr)
                        lfirst(elist) = transformExpr(pstate, lfirst(elist));
 
                    /*
-                    * If the expression is "<> ALL" (with unqualified opname)
-                    * then convert it to "NOT IN".  This is a hack to improve
-                    * efficiency of expressions output by pre-7.4 Postgres.
+                    * If the expression is "<> ALL" (with unqualified
+                    * opname) then convert it to "NOT IN".  This is a
+                    * hack to improve efficiency of expressions output by
+                    * pre-7.4 Postgres.
                     */
                    if (sublink->subLinkType == ALL_SUBLINK &&
                        length(op) == 1 && strcmp(opname, "<>") == 0)
@@ -549,14 +555,14 @@ transformExpr(ParseState *pstate, Node *expr)
                        strcmp(opname, "<>") != 0)
                        ereport(ERROR,
                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                errmsg("row comparison cannot use operator %s",
-                                       opname)));
+                         errmsg("row comparison cannot use operator %s",
+                                opname)));
 
                    /*
-                    * To build the list of combining operator OIDs, we must
-                    * scan subquery's targetlist to find values that will
-                    * be matched against lefthand values.  We need to
-                    * ignore resjunk targets, so doing the outer
+                    * To build the list of combining operator OIDs, we
+                    * must scan subquery's targetlist to find values that
+                    * will be matched against lefthand values.  We need
+                    * to ignore resjunk targets, so doing the outer
                     * iteration over right_list is easier than doing it
                     * over left_list.
                     */
@@ -576,7 +582,7 @@ transformExpr(ParseState *pstate, Node *expr)
                        if (left_list == NIL)
                            ereport(ERROR,
                                    (errcode(ERRCODE_SYNTAX_ERROR),
-                                    errmsg("sub-select has too many columns")));
+                            errmsg("sub-select has too many columns")));
                        lexpr = lfirst(left_list);
                        left_list = lnext(left_list);
 
@@ -596,14 +602,14 @@ transformExpr(ParseState *pstate, Node *expr)
                                    (errcode(ERRCODE_DATATYPE_MISMATCH),
                                     errmsg("operator %s must return boolean, not type %s",
                                            opname,
-                                           format_type_be(opform->oprresult)),
+                                     format_type_be(opform->oprresult)),
                                     errhint("The operator of a quantified predicate subquery must return boolean.")));
 
                        if (get_func_retset(opform->oprcode))
                            ereport(ERROR,
                                    (errcode(ERRCODE_DATATYPE_MISMATCH),
-                                    errmsg("operator %s must not return a set",
-                                           opname),
+                             errmsg("operator %s must not return a set",
+                                    opname),
                                     errhint("The operator of a quantified predicate subquery must return boolean.")));
 
                        sublink->operOids = lappendo(sublink->operOids,
@@ -614,7 +620,7 @@ transformExpr(ParseState *pstate, Node *expr)
                    if (left_list != NIL)
                        ereport(ERROR,
                                (errcode(ERRCODE_SYNTAX_ERROR),
-                                errmsg("sub-select has too few columns")));
+                             errmsg("sub-select has too few columns")));
 
                    if (needNot)
                    {
@@ -657,7 +663,7 @@ transformExpr(ParseState *pstate, Node *expr)
                    neww->expr = (Expr *) transformExpr(pstate, warg);
 
                    neww->expr = (Expr *) coerce_to_boolean(pstate,
-                                                           (Node *) neww->expr,
+                                                    (Node *) neww->expr,
                                                            "CASE/WHEN");
 
                    /*
@@ -747,8 +753,8 @@ transformExpr(ParseState *pstate, Node *expr)
                /* Transform the element expressions */
                foreach(element, a->elements)
                {
-                   Node *e = (Node *) lfirst(element);
-                   Node *newe;
+                   Node       *e = (Node *) lfirst(element);
+                   Node       *newe;
 
                    newe = transformExpr(pstate, e);
                    newelems = lappend(newelems, newe);
@@ -761,8 +767,8 @@ transformExpr(ParseState *pstate, Node *expr)
                /* Coerce arguments to common type if necessary */
                foreach(element, newelems)
                {
-                   Node *e = (Node *) lfirst(element);
-                   Node *newe;
+                   Node       *e = (Node *) lfirst(element);
+                   Node       *newe;
 
                    newe = coerce_to_common_type(pstate, e,
                                                 element_type,
@@ -837,15 +843,15 @@ transformExpr(ParseState *pstate, Node *expr)
            {
                CoalesceExpr *c = (CoalesceExpr *) expr;
                CoalesceExpr *newc = makeNode(CoalesceExpr);
-               List *newargs = NIL;
-               List *newcoercedargs = NIL;
-               List *typeids = NIL;
-               List *args;
+               List       *newargs = NIL;
+               List       *newcoercedargs = NIL;
+               List       *typeids = NIL;
+               List       *args;
 
                foreach(args, c->args)
                {
-                   Node *e = (Node *) lfirst(args);
-                   Node *newe;
+                   Node       *e = (Node *) lfirst(args);
+                   Node       *newe;
 
                    newe = transformExpr(pstate, e);
                    newargs = lappend(newargs, newe);
@@ -857,8 +863,8 @@ transformExpr(ParseState *pstate, Node *expr)
                /* Convert arguments if necessary */
                foreach(args, newargs)
                {
-                   Node *e = (Node *) lfirst(args);
-                   Node *newe;
+                   Node       *e = (Node *) lfirst(args);
+                   Node       *newe;
 
                    newe = coerce_to_common_type(pstate, e,
                                                 newc->coalescetype,
@@ -1026,9 +1032,9 @@ transformColumnRef(ParseState *pstate, ColumnRef *cref)
                     * Not known as a column of any range-table entry.
                     *
                     * Consider the possibility that it's VALUE in a domain
-                    * check expression.  (We handle VALUE as a name, not a
-                    * keyword, to avoid breaking a lot of applications that
-                    * have used VALUE as a column name in the past.)
+                    * check expression.  (We handle VALUE as a name, not
+                    * a keyword, to avoid breaking a lot of applications
+                    * that have used VALUE as a column name in the past.)
                     */
                    if (pstate->p_value_substitute != NULL &&
                        strcmp(name, "value") == 0)
@@ -1059,7 +1065,7 @@ transformColumnRef(ParseState *pstate, ColumnRef *cref)
                    else
                        ereport(ERROR,
                                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                                errmsg("attribute \"%s\" not found", name)));
+                           errmsg("attribute \"%s\" not found", name)));
                }
                break;
            }
@@ -1175,8 +1181,8 @@ transformColumnRef(ParseState *pstate, ColumnRef *cref)
        default:
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("improper qualified name (too many dotted names): %s",
-                           NameListToString(cref->fields))));
+           errmsg("improper qualified name (too many dotted names): %s",
+                  NameListToString(cref->fields))));
            node = NULL;        /* keep compiler quiet */
            break;
    }
@@ -1246,14 +1252,15 @@ exprType(Node *expr)
                    Assert(!tent->resdom->resjunk);
                    if (sublink->subLinkType == EXPR_SUBLINK)
                        type = tent->resdom->restype;
-                   else /* ARRAY_SUBLINK */
+                   else
+/* ARRAY_SUBLINK */
                    {
                        type = get_array_type(tent->resdom->restype);
                        if (!OidIsValid(type))
                            ereport(ERROR,
                                    (errcode(ERRCODE_UNDEFINED_OBJECT),
                                     errmsg("could not find array type for datatype %s",
-                                           format_type_be(tent->resdom->restype))));
+                               format_type_be(tent->resdom->restype))));
                    }
                }
                else
@@ -1266,9 +1273,10 @@ exprType(Node *expr)
        case T_SubPlan:
            {
                /*
-                * Although the parser does not ever deal with already-planned
-                * expression trees, we support SubPlan nodes in this routine
-                * for the convenience of ruleutils.c.
+                * Although the parser does not ever deal with
+                * already-planned expression trees, we support SubPlan
+                * nodes in this routine for the convenience of
+                * ruleutils.c.
                 */
                SubPlan    *subplan = (SubPlan *) expr;
 
@@ -1283,14 +1291,15 @@ exprType(Node *expr)
                    Assert(!tent->resdom->resjunk);
                    if (subplan->subLinkType == EXPR_SUBLINK)
                        type = tent->resdom->restype;
-                   else /* ARRAY_SUBLINK */
+                   else
+/* ARRAY_SUBLINK */
                    {
                        type = get_array_type(tent->resdom->restype);
                        if (!OidIsValid(type))
                            ereport(ERROR,
                                    (errcode(ERRCODE_UNDEFINED_OBJECT),
                                     errmsg("could not find array type for datatype %s",
-                                           format_type_be(tent->resdom->restype))));
+                               format_type_be(tent->resdom->restype))));
                    }
                }
                else
@@ -1337,9 +1346,10 @@ exprType(Node *expr)
            type = ((SetToDefault *) expr)->typeId;
            break;
        case T_RangeVar:
+
            /*
-            * If someone uses a bare relation name in an expression,
-            * we will likely first notice a problem here (see comments in
+            * If someone uses a bare relation name in an expression, we
+            * will likely first notice a problem here (see comments in
             * transformColumnRef()).  Issue an appropriate error message.
             */
            ereport(ERROR,
@@ -1438,14 +1448,14 @@ exprTypmod(Node *expr)
                 * that typmod, else use -1
                 */
                CoalesceExpr *cexpr = (CoalesceExpr *) expr;
-               Oid coalescetype = cexpr->coalescetype;
-               int32 typmod;
-               List *arg;
+               Oid         coalescetype = cexpr->coalescetype;
+               int32       typmod;
+               List       *arg;
 
                typmod = exprTypmod((Node *) lfirst(cexpr->args));
                foreach(arg, cexpr->args)
                {
-                   Node *e = (Node *) lfirst(arg);
+                   Node       *e = (Node *) lfirst(arg);
 
                    if (exprType(e) != coalescetype)
                        return -1;
@@ -1505,9 +1515,9 @@ exprIsLengthCoercion(Node *expr, int32 *coercedTypmod)
        return false;
 
    /*
-    * If it's not a two-argument or three-argument function with the second
-    * argument being an int4 constant, it can't have been created from a
-    * length coercion (it must be a type coercion, instead).
+    * If it's not a two-argument or three-argument function with the
+    * second argument being an int4 constant, it can't have been created
+    * from a length coercion (it must be a type coercion, instead).
     */
    nargs = length(func->args);
    if (nargs < 2 || nargs > 3)
index 40197394501c8c7289d4615972674b9307b69fd1..836f703aae89b5fe88107b093aa690f68c41fa57 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.157 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.158 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -86,8 +86,8 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
    if (nargs > FUNC_MAX_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_TOO_MANY_ARGUMENTS),
-                errmsg("cannot pass more than %d arguments to a function",
-                       FUNC_MAX_ARGS)));
+              errmsg("cannot pass more than %d arguments to a function",
+                     FUNC_MAX_ARGS)));
 
    if (fargs)
    {
@@ -262,9 +262,9 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
        if (agg_star)
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                    errmsg("%s(*) specified, but %s is not an aggregate function",
-                           NameListToString(funcname),
-                           NameListToString(funcname))));
+           errmsg("%s(*) specified, but %s is not an aggregate function",
+                  NameListToString(funcname),
+                  NameListToString(funcname))));
        if (agg_distinct)
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
@@ -298,8 +298,8 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
            else
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_COLUMN),
-                        errmsg("attribute \"%s\" not found in datatype %s",
-                               colname, format_type_be(relTypeId))));
+                     errmsg("attribute \"%s\" not found in datatype %s",
+                            colname, format_type_be(relTypeId))));
        }
 
        /*
@@ -311,8 +311,8 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
                     errmsg("function %s is not unique",
                            func_signature_string(funcname, nargs,
                                                  actual_arg_types)),
-                    errhint("Could not choose a best candidate function. "
-                            "You may need to add explicit typecasts.")));
+                  errhint("Could not choose a best candidate function. "
+                          "You may need to add explicit typecasts.")));
        else
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_FUNCTION),
@@ -392,7 +392,7 @@ int
 func_match_argtypes(int nargs,
                    Oid *input_typeids,
                    FuncCandidateList raw_candidates,
-                   FuncCandidateList *candidates)  /* return value */
+                   FuncCandidateList *candidates)      /* return value */
 {
    FuncCandidateList current_candidate;
    FuncCandidateList next_candidate;
@@ -495,12 +495,13 @@ func_select_candidate(int nargs,
    /*
     * If any input types are domains, reduce them to their base types.
     * This ensures that we will consider functions on the base type to be
-    * "exact matches" in the exact-match heuristic; it also makes it possible
-    * to do something useful with the type-category heuristics.  Note that
-    * this makes it difficult, but not impossible, to use functions declared
-    * to take a domain as an input datatype.  Such a function will be
-    * selected over the base-type function only if it is an exact match at
-    * all argument positions, and so was already chosen by our caller.
+    * "exact matches" in the exact-match heuristic; it also makes it
+    * possible to do something useful with the type-category heuristics.
+    * Note that this makes it difficult, but not impossible, to use
+    * functions declared to take a domain as an input datatype.  Such a
+    * function will be selected over the base-type function only if it is
+    * an exact match at all argument positions, and so was already chosen
+    * by our caller.
     */
    for (i = 0; i < nargs; i++)
        input_base_typeids[i] = getBaseType(input_typeids[i]);
@@ -550,13 +551,14 @@ func_select_candidate(int nargs,
        return candidates;
 
    /*
-    * Still too many candidates? Now look for candidates which have either
-    * exact matches or preferred types at the args that will require coercion.
-    * (Restriction added in 7.4: preferred type must be of same category as
-    * input type; give no preference to cross-category conversions to
-    * preferred types.)  Keep all candidates if none match.
+    * Still too many candidates? Now look for candidates which have
+    * either exact matches or preferred types at the args that will
+    * require coercion. (Restriction added in 7.4: preferred type must be
+    * of same category as input type; give no preference to
+    * cross-category conversions to preferred types.)  Keep all
+    * candidates if none match.
     */
-   for (i = 0; i < nargs; i++)         /* avoid multiple lookups */
+   for (i = 0; i < nargs; i++) /* avoid multiple lookups */
        slot_category[i] = TypeCategory(input_base_typeids[i]);
    ncandidates = 0;
    nbestMatch = 0;
@@ -602,10 +604,11 @@ func_select_candidate(int nargs,
     * Still too many candidates? Try assigning types for the unknown
     * columns.
     *
-    * NOTE: for a binary operator with one unknown and one non-unknown input,
-    * we already tried the heuristic of looking for a candidate with the
-    * known input type on both sides (see binary_oper_exact()).  That's
-    * essentially a special case of the general algorithm we try next.
+    * NOTE: for a binary operator with one unknown and one non-unknown
+    * input, we already tried the heuristic of looking for a candidate
+    * with the known input type on both sides (see binary_oper_exact()).
+    * That's essentially a special case of the general algorithm we try
+    * next.
     *
     * We do this by examining each unknown argument position to see if we
     * can determine a "type category" for it.  If any candidate has an
@@ -815,9 +818,10 @@ func_get_detail(List *funcname,
         * constant to a specific type.
         *
         * The reason we can restrict our check to binary-compatible
-        * coercions here is that we expect non-binary-compatible coercions
-        * to have an implementation function named after the target type.
-        * That function will be found by normal lookup if appropriate.
+        * coercions here is that we expect non-binary-compatible
+        * coercions to have an implementation function named after the
+        * target type. That function will be found by normal lookup if
+        * appropriate.
         *
         * NB: it's important that this code stays in sync with what
         * coerce_type can do, because the caller will try to apply
@@ -895,7 +899,7 @@ func_get_detail(List *funcname,
                {
                    best_candidate = func_select_candidate(nargs,
                                                   current_input_typeids,
-                                              current_candidates);
+                                                    current_candidates);
 
                    /*
                     * If we were able to choose a best candidate, we're
@@ -960,7 +964,7 @@ func_get_detail(List *funcname,
  *     finding all superclasses of that type. A vector of new Oid type
  *     arrays is returned to the caller, listing possible alternative
  *     interpretations of the input typeids as members of their superclasses
- *     rather than the actually given argument types.  The vector is
+ *     rather than the actually given argument types.  The vector is
  *     terminated by a NULL pointer.
  *
  *     The order of this vector is as follows:  all superclasses of the
@@ -1123,14 +1127,14 @@ gen_cross_product(InhPaths *arginh, int nargs)
    /*
     * We also need an extra slot for the terminating NULL in the result
     * array, but that cancels out with the fact that we don't want to
-    * generate the zero-changes case.  So we need exactly nanswers slots.
+    * generate the zero-changes case.  So we need exactly nanswers slots.
     */
    result = (Oid **) palloc(sizeof(Oid *) * nanswers);
    j = 0;
 
    /*
     * Compute the cross product from right to left.  When cur[i] == 0,
-    * generate the original input type at position i.  When cur[i] == k
+    * generate the original input type at position i.  When cur[i] == k
     * for k > 0, generate its k'th supertype.
     */
    MemSet(cur, 0, sizeof(cur));
@@ -1138,7 +1142,7 @@ gen_cross_product(InhPaths *arginh, int nargs)
    for (;;)
    {
        /*
-        * Find a column we can increment.  All the columns after it get
+        * Find a column we can increment.  All the columns after it get
         * reset to zero.  (Essentially, we're adding one to the multi-
         * digit number represented by cur[].)
         */
@@ -1263,8 +1267,8 @@ setup_field_select(Node *input, char *attname, Oid relid)
    if (attno == InvalidAttrNumber)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_COLUMN),
-                errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                       attname, get_rel_name(relid))));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   attname, get_rel_name(relid))));
 
    fselect->arg = (Expr *) input;
    fselect->fieldnum = attno;
@@ -1448,7 +1452,7 @@ find_aggregate_func(List *aggname, Oid basetype, bool noError)
        ereport(ERROR,
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                 errmsg("function %s(%s) is not an aggregate",
-                       NameListToString(aggname), format_type_be(basetype))));
+                 NameListToString(aggname), format_type_be(basetype))));
    }
 
    ReleaseSysCache(ftup);
@@ -1485,7 +1489,7 @@ LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool noError)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
                 errmsg("function %s does not exist",
-                       func_signature_string(funcname, nargs, argtypes))));
+                    func_signature_string(funcname, nargs, argtypes))));
 
    return InvalidOid;
 }
index 5e047400a1eda7474f7f92403ca050996f025e5e..74162a9f8073d267c9c3d42066da5a96e929607c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.79 2003/07/19 20:20:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.80 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -121,8 +121,8 @@ transformArraySubscripts(ParseState *pstate,
    if (elementType == InvalidOid)
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("cannot subscript type %s because it is not an array",
-                       format_type_be(arrayType))));
+           errmsg("cannot subscript type %s because it is not an array",
+                  format_type_be(arrayType))));
 
    /*
     * A list containing only single subscripts refers to a single array
@@ -173,14 +173,14 @@ transformArraySubscripts(ParseState *pstate,
                subexpr = transformExpr(pstate, ai->lidx);
                /* If it's not int4 already, try to coerce */
                subexpr = coerce_to_target_type(pstate,
-                                               subexpr, exprType(subexpr),
+                                             subexpr, exprType(subexpr),
                                                INT4OID, -1,
                                                COERCION_ASSIGNMENT,
                                                COERCE_IMPLICIT_CAST);
                if (subexpr == NULL)
                    ereport(ERROR,
                            (errcode(ERRCODE_DATATYPE_MISMATCH),
-                            errmsg("array subscript must have type integer")));
+                     errmsg("array subscript must have type integer")));
            }
            else
            {
index 68225aae0a3a7097ccb3fbd3bb9100e9c71dd211..c3307a76587e2337842062b82b18ac27b8e6e62a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.71 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_oper.c,v 1.72 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 static Oid binary_oper_exact(Oid arg1, Oid arg2,
                  FuncCandidateList candidates);
 static FuncDetailCode oper_select_candidate(int nargs,
-                                           Oid *input_typeids,
-                                           FuncCandidateList candidates,
-                                           Oid *operOid);
+                     Oid *input_typeids,
+                     FuncCandidateList candidates,
+                     Oid *operOid);
 static const char *op_signature_string(List *op, char oprkind,
-                                      Oid arg1, Oid arg2);
+                   Oid arg1, Oid arg2);
 static void op_error(List *op, char oprkind, Oid arg1, Oid arg2,
-                    FuncDetailCode fdresult);
+        FuncDetailCode fdresult);
 
 
 /*
@@ -140,9 +140,9 @@ equality_oper(Oid argtype, bool noError)
 
    /*
     * If the datatype is an array, then we can use array_eq ... but only
-    * if there is a suitable equality operator for the element type.
-    * (We must run this test first, since compatible_oper will find
-    * array_eq, but would not notice the lack of an element operator.)
+    * if there is a suitable equality operator for the element type. (We
+    * must run this test first, since compatible_oper will find array_eq,
+    * but would not notice the lack of an element operator.)
     */
    elem_type = get_element_type(argtype);
    if (OidIsValid(elem_type))
@@ -184,8 +184,8 @@ equality_oper(Oid argtype, bool noError)
    if (!noError)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                errmsg("could not identify an equality operator for type %s",
-                       format_type_be(argtype))));
+           errmsg("could not identify an equality operator for type %s",
+                  format_type_be(argtype))));
    return NULL;
 }
 
@@ -202,10 +202,10 @@ ordering_oper(Oid argtype, bool noError)
 
    /*
     * If the datatype is an array, then we can use array_lt ... but only
-    * if there is a suitable ordering operator for the element type.
-    * (We must run this test first, since the code below would find
-    * array_lt if there's an element = operator, but would not notice the
-    * lack of an element < operator.)
+    * if there is a suitable ordering operator for the element type. (We
+    * must run this test first, since the code below would find array_lt
+    * if there's an element = operator, but would not notice the lack of
+    * an element < operator.)
     */
    elem_type = get_element_type(argtype);
    if (OidIsValid(elem_type))
@@ -222,15 +222,15 @@ ordering_oper(Oid argtype, bool noError)
    else
    {
        /*
-        * Find the type's equality operator, and use its lsortop (it *must*
-        * be mergejoinable).  We use this definition because for sorting and
-        * grouping purposes, it's important that the equality and ordering
-        * operators are consistent.
+        * Find the type's equality operator, and use its lsortop (it
+        * *must* be mergejoinable).  We use this definition because for
+        * sorting and grouping purposes, it's important that the equality
+        * and ordering operators are consistent.
         */
        optup = equality_oper(argtype, noError);
        if (optup != NULL)
        {
-           Oid     lsortop;
+           Oid         lsortop;
 
            lsortop = ((Form_pg_operator) GETSTRUCT(optup))->oprlsortop;
            ReleaseSysCache(optup);
@@ -247,8 +247,8 @@ ordering_oper(Oid argtype, bool noError)
    if (!noError)
        ereport(ERROR,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                errmsg("could not identify an ordering operator for type %s",
-                       format_type_be(argtype)),
+           errmsg("could not identify an ordering operator for type %s",
+                  format_type_be(argtype)),
                 errhint("Use an explicit ordering operator or modify the query.")));
    return NULL;
 }
@@ -361,13 +361,13 @@ static FuncDetailCode
 oper_select_candidate(int nargs,
                      Oid *input_typeids,
                      FuncCandidateList candidates,
-                     Oid *operOid) /* output argument */
+                     Oid *operOid)     /* output argument */
 {
    int         ncandidates;
 
    /*
-    * Delete any candidates that cannot actually accept the given
-    * input types, whether directly or by coercion.
+    * Delete any candidates that cannot actually accept the given input
+    * types, whether directly or by coercion.
     */
    ncandidates = func_match_argtypes(nargs, input_typeids,
                                      candidates, &candidates);
@@ -385,8 +385,8 @@ oper_select_candidate(int nargs,
    }
 
    /*
-    * Use the same heuristics as for ambiguous functions to resolve
-    * the conflict.
+    * Use the same heuristics as for ambiguous functions to resolve the
+    * conflict.
     */
    candidates = func_select_candidate(nargs, input_typeids, candidates);
 
@@ -397,7 +397,7 @@ oper_select_candidate(int nargs,
    }
 
    *operOid = InvalidOid;
-   return FUNCDETAIL_MULTIPLE; /* failed to select a best candidate */
+   return FUNCDETAIL_MULTIPLE; /* failed to select a best candidate */
 }
 
 
@@ -772,6 +772,7 @@ make_scalar_array_op(ParseState *pstate, List *opname,
 
    ltypeId = exprType(ltree);
    atypeId = exprType(rtree);
+
    /*
     * The right-hand input of the operator will be the element type of
     * the array.  However, if we currently have just an untyped literal
@@ -785,7 +786,7 @@ make_scalar_array_op(ParseState *pstate, List *opname,
        if (!OidIsValid(rtypeId))
            ereport(ERROR,
                    (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                    errmsg("op ANY/ALL (array) requires array on right side")));
+            errmsg("op ANY/ALL (array) requires array on right side")));
    }
 
    /* Now resolve the operator */
@@ -814,15 +815,15 @@ make_scalar_array_op(ParseState *pstate, List *opname,
    if (rettype != BOOLOID)
        ereport(ERROR,
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                errmsg("op ANY/ALL (array) requires operator to yield boolean")));
+       errmsg("op ANY/ALL (array) requires operator to yield boolean")));
    if (get_func_retset(opform->oprcode))
        ereport(ERROR,
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
                 errmsg("op ANY/ALL (array) requires operator not to return a set")));
 
    /*
-    * Now switch back to the array type on the right, arranging for
-    * any needed cast to be applied.
+    * Now switch back to the array type on the right, arranging for any
+    * needed cast to be applied.
     */
    res_atypeId = get_array_type(declared_arg_types[1]);
    if (!OidIsValid(res_atypeId))
index 732699e3ad766c838a4b1788e6da8ad0ae92a529..ee368a236034eab7cdf86632e2bf7f830d5bdd43 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.85 2003/07/20 21:56:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.86 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -33,7 +33,7 @@
 #include "utils/syscache.h"
 
 /* GUC parameter */
-bool add_missing_from;
+bool       add_missing_from;
 
 static Node *scanNameSpaceForRefname(ParseState *pstate, Node *nsnode,
                        const char *refname);
@@ -365,8 +365,8 @@ scanNameSpaceForConflict(ParseState *pstate, Node *nsnode,
            if (strcmp(j->alias->aliasname, aliasname1) == 0)
                ereport(ERROR,
                        (errcode(ERRCODE_DUPLICATE_ALIAS),
-                        errmsg("table name \"%s\" specified more than once",
-                               aliasname1)));
+                    errmsg("table name \"%s\" specified more than once",
+                           aliasname1)));
 
            /*
             * Tables within an aliased join are invisible from outside
@@ -570,8 +570,8 @@ colnameToVar(ParseState *pstate, char *colname)
                if (result)
                    ereport(ERROR,
                            (errcode(ERRCODE_AMBIGUOUS_COLUMN),
-                            errmsg("column reference \"%s\" is ambiguous",
-                                   colname)));
+                          errmsg("column reference \"%s\" is ambiguous",
+                                 colname)));
                result = newresult;
            }
        }
@@ -666,7 +666,7 @@ addRangeTableEntry(ParseState *pstate,
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
                 errmsg("table \"%s\" has %d columns available but %d columns specified",
-                       RelationGetRelationName(rel), maxattrs, numaliases)));
+                  RelationGetRelationName(rel), maxattrs, numaliases)));
 
    /* fill in any unspecified alias columns using actual column names */
    for (varattno = numaliases; varattno < maxattrs; varattno++)
@@ -761,7 +761,7 @@ addRangeTableEntryForRelation(ParseState *pstate,
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
                 errmsg("table \"%s\" has %d columns available but %d columns specified",
-                       RelationGetRelationName(rel), maxattrs, numaliases)));
+                  RelationGetRelationName(rel), maxattrs, numaliases)));
 
    /* fill in any unspecified alias columns using actual column names */
    for (varattno = numaliases; varattno < maxattrs; varattno++)
@@ -957,7 +957,8 @@ addRangeTableEntryForFunction(ParseState *pstate,
        Relation    rel;
        int         maxattrs;
 
-       if (!OidIsValid(funcrelid)) /* shouldn't happen if typtype is 'c' */
+       if (!OidIsValid(funcrelid))     /* shouldn't happen if typtype is
+                                        * 'c' */
            elog(ERROR, "invalid typrelid for complex type %u", funcrettype);
 
        /*
@@ -1003,8 +1004,8 @@ addRangeTableEntryForFunction(ParseState *pstate,
        if (numaliases > 1)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
-                    errmsg("too many column aliases specified for function %s",
-                           funcname)));
+             errmsg("too many column aliases specified for function %s",
+                    funcname)));
        if (numaliases == 0)
            eref->colnames = makeList1(makeString(eref->aliasname));
    }
@@ -1026,8 +1027,8 @@ addRangeTableEntryForFunction(ParseState *pstate,
    else
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("function \"%s\" in FROM has unsupported return type",
-                       funcname)));
+           errmsg("function \"%s\" in FROM has unsupported return type",
+                  funcname)));
 
    /*----------
     * Flags:
@@ -1318,7 +1319,7 @@ expandRTE(ParseState *pstate, RangeTblEntry *rte,
                    int         maxattrs;
                    int         numaliases;
 
-                   if (!OidIsValid(funcrelid)) /* shouldn't happen */
+                   if (!OidIsValid(funcrelid)) /* shouldn't happen */
                        elog(ERROR, "invalid typrelid for complex type %u",
                             funcrettype);
 
@@ -1575,7 +1576,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
                                    ObjectIdGetDatum(rte->relid),
                                    Int16GetDatum(attnum),
                                    0, 0);
-               if (!HeapTupleIsValid(tp)) /* shouldn't happen */
+               if (!HeapTupleIsValid(tp))      /* shouldn't happen */
                    elog(ERROR, "cache lookup failed for attribute %d of relation %u",
                         attnum, rte->relid);
                att_tup = (Form_pg_attribute) GETSTRUCT(tp);
@@ -1632,7 +1633,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
                    HeapTuple   tp;
                    Form_pg_attribute att_tup;
 
-                   if (!OidIsValid(funcrelid)) /* shouldn't happen */
+                   if (!OidIsValid(funcrelid)) /* shouldn't happen */
                        elog(ERROR, "invalid typrelid for complex type %u",
                             funcrettype);
 
@@ -1640,7 +1641,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum,
                                        ObjectIdGetDatum(funcrelid),
                                        Int16GetDatum(attnum),
                                        0, 0);
-                   if (!HeapTupleIsValid(tp)) /* shouldn't happen */
+                   if (!HeapTupleIsValid(tp))  /* shouldn't happen */
                        elog(ERROR, "cache lookup failed for attribute %d of relation %u",
                             attnum, funcrelid);
                    att_tup = (Form_pg_attribute) GETSTRUCT(tp);
@@ -1720,7 +1721,7 @@ get_rte_attribute_is_dropped(RangeTblEntry *rte, AttrNumber attnum)
                                    ObjectIdGetDatum(rte->relid),
                                    Int16GetDatum(attnum),
                                    0, 0);
-               if (!HeapTupleIsValid(tp)) /* shouldn't happen */
+               if (!HeapTupleIsValid(tp))      /* shouldn't happen */
                    elog(ERROR, "cache lookup failed for attribute %d of relation %u",
                         attnum, rte->relid);
                att_tup = (Form_pg_attribute) GETSTRUCT(tp);
@@ -1752,7 +1753,7 @@ get_rte_attribute_is_dropped(RangeTblEntry *rte, AttrNumber attnum)
                                        ObjectIdGetDatum(funcrelid),
                                        Int16GetDatum(attnum),
                                        0, 0);
-                   if (!HeapTupleIsValid(tp)) /* shouldn't happen */
+                   if (!HeapTupleIsValid(tp))  /* shouldn't happen */
                        elog(ERROR, "cache lookup failed for attribute %d of relation %u",
                             attnum, funcrelid);
                    att_tup = (Form_pg_attribute) GETSTRUCT(tp);
@@ -1927,7 +1928,7 @@ warnAutoRange(ParseState *pstate, RangeVar *relation)
        else
            ereport(NOTICE,
                    (errcode(ERRCODE_UNDEFINED_TABLE),
-                    errmsg("adding missing FROM-clause entry for table \"%s\"",
-                           relation->relname)));
+             errmsg("adding missing FROM-clause entry for table \"%s\"",
+                    relation->relname)));
    }
 }
index daeb56b11012f7a9ee02bc4f6a1a40776820ca29..6e10d52723e4db51a43e61bcade1f56cc9bddd74 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.108 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.109 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -66,7 +66,7 @@ transformTargetEntry(ParseState *pstate,
                 errmsg("relation reference \"%s\" cannot be used as a targetlist entry",
                        ((RangeVar *) expr)->relname),
                 errhint("Write \"%s\".* to denote all the columns of the relation.",
-                       ((RangeVar *) expr)->relname)));
+                        ((RangeVar *) expr)->relname)));
 
    type_id = exprType(expr);
    type_mod = exprTypmod(expr);
@@ -152,8 +152,8 @@ transformTargetList(ParseState *pstate, List *targetlist)
                             */
                            if (strcmp(name1, get_database_name(MyDatabaseId)) != 0)
                                ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("cross-database references are not implemented")));
+                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                 errmsg("cross-database references are not implemented")));
                            schemaname = strVal(lsecond(fields));
                            relname = strVal(lthird(fields));
                            break;
@@ -286,7 +286,7 @@ markTargetListOrigin(ParseState *pstate, Resdom *res, Var *var)
        case RTE_JOIN:
            {
                /* Join RTE --- recursively inspect the alias variable */
-               Var    *aliasvar;
+               Var        *aliasvar;
 
                Assert(attnum > 0 && attnum <= length(rte->joinaliasvars));
                aliasvar = (Var *) nth(attnum - 1, rte->joinaliasvars);
@@ -322,7 +322,7 @@ updateTargetListEntry(ParseState *pstate,
                      int attrno,
                      List *indirection)
 {
-   Oid         type_id;        /* type of value provided */
+   Oid         type_id;        /* type of value provided */
    Oid         attrtype;       /* type of target column */
    int32       attrtypmod;
    Resdom     *resnode = tle->resdom;
@@ -341,13 +341,13 @@ updateTargetListEntry(ParseState *pstate,
     * If the expression is a DEFAULT placeholder, insert the attribute's
     * type/typmod into it so that exprType will report the right things.
     * (We expect that the eventually substituted default expression will
-    * in fact have this type and typmod.)  Also, reject trying to update
+    * in fact have this type and typmod.)  Also, reject trying to update
     * an array element with DEFAULT, since there can't be any default for
     * individual elements of a column.
     */
    if (tle->expr && IsA(tle->expr, SetToDefault))
    {
-       SetToDefault   *def = (SetToDefault *) tle->expr;
+       SetToDefault *def = (SetToDefault *) tle->expr;
 
        def->typeId = attrtype;
        def->typeMod = attrtypmod;
@@ -496,8 +496,8 @@ checkInsertTargets(ParseState *pstate, List *cols, List **attrnos)
            if (intMember(attrno, *attrnos))
                ereport(ERROR,
                        (errcode(ERRCODE_DUPLICATE_COLUMN),
-                        errmsg("attribute \"%s\" specified more than once",
-                               name)));
+                     errmsg("attribute \"%s\" specified more than once",
+                            name)));
            *attrnos = lappendi(*attrnos, attrno);
        }
    }
@@ -551,7 +551,7 @@ ExpandAllTables(ParseState *pstate)
    if (!found_table)
        ereport(ERROR,
                (errcode(ERRCODE_SYNTAX_ERROR),
-                errmsg("SELECT * with no tables specified is not valid")));
+             errmsg("SELECT * with no tables specified is not valid")));
 
    return target;
 }
index 5d68ef14a5b87c5d2712c9a83923e1adf484168b..d744823b3b74dea8978e4fcb929464fca8e442dd 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.59 2003/07/20 21:56:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.60 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -91,8 +91,8 @@ LookupTypeName(const TypeName *typename)
        if (attnum == InvalidAttrNumber)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_COLUMN),
-                    errmsg("attribute \"%s\" of relation \"%s\" does not exist",
-                           field, rel->relname)));
+            errmsg("attribute \"%s\" of relation \"%s\" does not exist",
+                   field, rel->relname)));
        restype = get_atttype(relid, attnum);
 
        /* this construct should never have an array indicator */
@@ -229,7 +229,7 @@ typenameType(const TypeName *typename)
    tup = SearchSysCache(TYPEOID,
                         ObjectIdGetDatum(typoid),
                         0, 0, 0);
-   if (!HeapTupleIsValid(tup)) /* should not happen */
+   if (!HeapTupleIsValid(tup)) /* should not happen */
        elog(ERROR, "cache lookup failed for type %u", typoid);
    if (!((Form_pg_type) GETSTRUCT(tup))->typisdefined)
        ereport(ERROR,
index 06518e7db7db4807142d3c25ba85ab5f44c25321..5de018b22bf7dee48b32c2c551883b26370617e5 100644 (file)
@@ -291,8 +291,8 @@ semop(int semId, struct sembuf * sops, int nsops)
        if (sops[i].sem_op < 0)
        {
            /*
-            * Try acquiring the semaphore till we are not interrupted by a
-            * signal
+            * Try acquiring the semaphore till we are not interrupted by
+            * signal
             */
            if (sops[i].sem_flg == IPC_NOWAIT)
            {
index 8810308a14710162d9d3fbf3ba3688953507b58b..b297405b85cf859fad405d1b1139a9ef0305a3da 100644 (file)
@@ -3,7 +3,7 @@
  * available with a PostgreSQL-compatible license. Kudos Wilfredo
  * Sánchez <[email protected]>.
  *
- * $Header: /cvsroot/pgsql/src/backend/port/dynloader/darwin.c,v 1.7 2003/04/13 01:19:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/dynloader/darwin.c,v 1.8 2003/08/04 00:43:21 momjian Exp $
  */
 #include "postgres.h"
 
@@ -58,7 +58,7 @@ char *
 pg_dlerror(void)
 {
    NSLinkEditErrors c;
-   int errorNumber;
+   int         errorNumber;
    const char *fileName;
    const char *errorString = NULL;
 
index f82cfadf6a1386acc65eb6c60272904b94cd90a1..faf06d9bc43acba96e752d1cfe06101ae8dad330 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/port/dynloader/linux.c,v 1.24 2003/07/22 23:30:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/port/dynloader/linux.c,v 1.25 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -131,4 +131,4 @@ pg_dlerror(void)
 #endif
 }
 
-#endif /* !HAVE_DLOPEN */
+#endif   /* !HAVE_DLOPEN */
index 0adbdf8edf4a9702c810a669c2465858070bdcb7..fdc65a069f1c2f6d38385be82cac88a2496937ff 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: linux.h,v 1.19 2002/10/15 16:04:17 tgl Exp $
+ * $Id: linux.h,v 1.20 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -39,7 +39,6 @@
 #define pg_dlsym       dlsym
 #define pg_dlclose     dlclose
 #define pg_dlerror     dlerror
-
 #endif   /* HAVE_DLOPEN */
 
 #endif   /* PORT_PROTOS_H */
index e124ee412086c03971ab0bbb91f583094eec3c34..83194aa77570c9f295859477ad36a3f9204468ac 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/backend/port/dynloader/win32.c,v 1.1 2003/05/15 16:35:29 momjian Exp $ */
+/* $Header: /cvsroot/pgsql/src/backend/port/dynloader/win32.c,v 1.2 2003/08/04 00:43:21 momjian Exp $ */
 
 #include <windows.h>
 
@@ -11,17 +11,17 @@ dlerror(void)
 int
 dlclose(void *handle)
 {
-   return FreeLibrary((HMODULE)handle) ? 0 : 1;
+   return FreeLibrary((HMODULE) handle) ? 0 : 1;
 }
 
 void *
 dlsym(void *handle, const char *symbol)
 {
-   return (void *)GetProcAddress((HMODULE)handle, symbol);
+   return (void *) GetProcAddress((HMODULE) handle, symbol);
 }
 
 void *
 dlopen(const char *path, int mode)
 {
-   return (void *)LoadLibrary(path);
+   return (void *) LoadLibrary(path);
 }
index 6d10d3bb8f2f8c23a29db0286e5d829f3f950a9f..4ae64d788e46c6097e23384a03a4d12049358ee9 100644 (file)
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/port/ipc_test.c,v 1.7 2003/07/27 21:49:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/port/ipc_test.c,v 1.8 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -140,13 +140,13 @@ errstart(int elevel, const char *filename, int lineno,
 }
 
 void
-errfinish(int dummy, ...)
+errfinish(int dummy,...)
 {
    proc_exit(1);
 }
 
 void
-elog_finish(int elevel, const char *fmt, ...)
+elog_finish(int elevel, const char *fmt,...)
 {
    fprintf(stderr, "ERROR: %s\n", fmt);
    proc_exit(1);
@@ -159,28 +159,28 @@ errcode(int sqlerrcode)
 }
 
 int
-errmsg(const char *fmt, ...)
+errmsg(const char *fmt,...)
 {
    fprintf(stderr, "ERROR: %s\n", fmt);
    return 0;                   /* return value does not matter */
 }
 
 int
-errmsg_internal(const char *fmt, ...)
+errmsg_internal(const char *fmt,...)
 {
    fprintf(stderr, "ERROR: %s\n", fmt);
    return 0;                   /* return value does not matter */
 }
 
 int
-errdetail(const char *fmt, ...)
+errdetail(const char *fmt,...)
 {
    fprintf(stderr, "DETAIL: %s\n", fmt);
    return 0;                   /* return value does not matter */
 }
 
 int
-errhint(const char *fmt, ...)
+errhint(const char *fmt,...)
 {
    fprintf(stderr, "HINT: %s\n", fmt);
    return 0;                   /* return value does not matter */
index ae73eff02401b02de77525746a70b76b50034a74..3434618d93bb046a2452ccb49c35cf7c89e9814d 100644 (file)
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/port/posix_sema.c,v 1.8 2003/07/27 21:49:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/port/posix_sema.c,v 1.9 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -114,7 +114,6 @@ PosixSemaphoreCreate(sem_t * sem)
    if (sem_init(sem, 1, 1) < 0)
        elog(FATAL, "sem_init failed: %m");
 }
-
 #endif   /* USE_NAMED_POSIX_SEMAPHORES */
 
 
index 23131f8a67065b634c6ecb639389aae7a4463f3d..2ec342df85e63a8a8c6738edecabbc4a5e1fef3e 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/port/sysv_sema.c,v 1.7 2003/07/27 21:49:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/port/sysv_sema.c,v 1.8 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -121,12 +121,12 @@ InternalIpcSemaphoreCreate(IpcSemaphoreKey semKey, int numSems)
                 (errno == ENOSPC) ?
                 errhint("This error does *not* mean that you have run out of disk space.\n"
                         "It occurs when either the system limit for the maximum number of "
-                        "semaphore sets (SEMMNI), or the system wide maximum number of "
-                        "semaphores (SEMMNS), would be exceeded.  You need to raise the "
+        "semaphore sets (SEMMNI), or the system wide maximum number of "
+       "semaphores (SEMMNS), would be exceeded.  You need to raise the "
                         "respective kernel parameter.  Alternatively, reduce PostgreSQL's "
                         "consumption of semaphores by reducing its max_connections parameter "
                         "(currently %d).\n"
-                        "The PostgreSQL documentation contains more information about "
+         "The PostgreSQL documentation contains more information about "
                         "configuring your system for PostgreSQL.",
                         MaxBackends) : 0));
    }
@@ -149,7 +149,7 @@ IpcSemaphoreInitialize(IpcSemaphoreId semId, int semNum, int value)
                                 semId, semNum, value),
                 (errno == ERANGE) ?
                 errhint("You possibly need to raise your kernel's SEMVMX value to be at least "
-                        "%d.  Look into the PostgreSQL documentation for details.",
+             "%d.  Look into the PostgreSQL documentation for details.",
                         value) : 0));
 }
 
index 3f31f21d8e6857609d48280a6f578d5149efbb52..b7829d7c8c430e33d4b50e6d3acea39bdbc42237 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/port/sysv_shmem.c,v 1.13 2003/07/27 21:49:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/port/sysv_shmem.c,v 1.14 2003/08/04 00:43:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -40,13 +40,13 @@ typedef int IpcMemoryId;        /* shared memory ID returned by shmget(2) */
 
 
 IpcMemoryKey UsedShmemSegID = 0;
-void *UsedShmemSegAddr = NULL;
+void      *UsedShmemSegAddr = NULL;
 
 static void *InternalIpcMemoryCreate(IpcMemoryKey memKey, uint32 size);
 static void IpcMemoryDetach(int status, Datum shmaddr);
 static void IpcMemoryDelete(int status, Datum shmId);
 static PGShmemHeader *PGSharedMemoryAttach(IpcMemoryKey key,
-                                          IpcMemoryId *shmid);
+                    IpcMemoryId *shmid);
 
 
 /*
@@ -90,15 +90,15 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, uint32 size)
         */
        ereport(FATAL,
                (errmsg("could not create shared memory segment: %m"),
-                errdetail("Failed syscall was shmget(key=%d, size=%u, 0%o).",
-                          (int) memKey, size,
-                          IPC_CREAT | IPC_EXCL | IPCProtection),
+           errdetail("Failed syscall was shmget(key=%d, size=%u, 0%o).",
+                     (int) memKey, size,
+                     IPC_CREAT | IPC_EXCL | IPCProtection),
                 (errno == EINVAL) ?
                 errhint("This error usually means that PostgreSQL's request for a shared memory "
                         "segment exceeded your kernel's SHMMAX parameter.  You can either "
                         "reduce the request size or reconfigure the kernel with larger SHMMAX. "
-                        "To reduce the request size (currently %u bytes), reduce "
-                        "PostgreSQL's shared_buffers parameter (currently %d) and/or "
+              "To reduce the request size (currently %u bytes), reduce "
+          "PostgreSQL's shared_buffers parameter (currently %d) and/or "
                         "its max_connections parameter (currently %d).\n"
                         "If the request size is already small, it's possible that it is less than "
                         "your kernel's SHMMIN parameter, in which case raising the request size or "
@@ -108,9 +108,9 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, uint32 size)
                         size, NBuffers, MaxBackends) : 0,
                 (errno == ENOMEM) ?
                 errhint("This error usually means that PostgreSQL's request for a shared "
-                        "memory segment exceeded available memory or swap space. "
-                        "To reduce the request size (currently %u bytes), reduce "
-                        "PostgreSQL's shared_buffers parameter (currently %d) and/or "
+              "memory segment exceeded available memory or swap space. "
+              "To reduce the request size (currently %u bytes), reduce "
+          "PostgreSQL's shared_buffers parameter (currently %d) and/or "
                         "its max_connections parameter (currently %d).\n"
                         "The PostgreSQL documentation contains more information about shared "
                         "memory configuration.",
@@ -120,9 +120,9 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, uint32 size)
                         "It occurs either if all available shared memory IDs have been taken, "
                         "in which case you need to raise the SHMMNI parameter in your kernel, "
                         "or because the system's overall limit for shared memory has been "
-                        "reached.  If you cannot increase the shared memory limit, "
-                        "reduce PostgreSQL's shared memory request (currently %u bytes), "
-                        "by reducing its shared_buffers parameter (currently %d) and/or "
+            "reached.  If you cannot increase the shared memory limit, "
+       "reduce PostgreSQL's shared memory request (currently %u bytes), "
+       "by reducing its shared_buffers parameter (currently %d) and/or "
                         "its max_connections parameter (currently %d).\n"
                         "The PostgreSQL documentation contains more information about shared "
                         "memory configuration.",
@@ -326,13 +326,13 @@ PGSharedMemoryCreate(uint32 size, bool makePrivate, int port)
    hdr->totalsize = size;
    hdr->freeoffset = MAXALIGN(sizeof(PGShmemHeader));
 
-   
+
    if (ExecBackend && UsedShmemSegAddr == NULL && !makePrivate)
    {
        UsedShmemSegAddr = memAddress;
        UsedShmemSegID = NextShmemSegID;
    }
-   
+
    return hdr;
 }
 
@@ -353,7 +353,7 @@ PGSharedMemoryAttach(IpcMemoryKey key, IpcMemoryId *shmid)
    hdr = (PGShmemHeader *) shmat(*shmid,
                                  UsedShmemSegAddr,
 #if defined(solaris) && defined(__sparc__)
-                                 /* use intimate shared memory on Solaris */
+   /* use intimate shared memory on Solaris */
                                  SHM_SHARE_MMU
 #else
                                  0
index 267b461920521333548d77f456785a38ce9d7e2a..7bdd2e09776169f1324703375fdd7b5c6a3165bb 100644 (file)
@@ -17,9 +17,9 @@ typedef struct
 {
    int         m_numSems;
    off_t       m_semaphoreHandles;
-             //offset from beginning of header
+   /* offset from beginning of header */
    off_t       m_semaphoreCounts;
-             //offset from beginning of header
+   /* offset from beginning of header */
 }  win32_sem_set_hdr;
 
 /* Control of a semaphore pool. The pool is an area in which we stored all
@@ -131,7 +131,7 @@ semget(int semKey, int semNum, int flags)
    HANDLE     *sem_handles = NULL;
    int        *sem_counts = NULL;
    int         i;
-   
+
    sec_attrs.nLength = sizeof(sec_attrs);
    sec_attrs.lpSecurityDescriptor = NULL;
    sec_attrs.bInheritHandle = TRUE;
@@ -152,8 +152,8 @@ semget(int semKey, int semNum, int flags)
 
    new_set->m_numSems = semNum;
    new_set->m_semaphoreHandles = sizeof(win32_sem_set_hdr);
-   //array starts after header
-       new_set->m_semaphoreCounts = new_set->m_semaphoreHandles + (sizeof(HANDLE) * semNum);
+   /* array starts after header */
+   new_set->m_semaphoreCounts = new_set->m_semaphoreHandles + (sizeof(HANDLE) * semNum);
 
    sem_handles = (HANDLE *) ((off_t) new_set + new_set->m_semaphoreHandles);
    sem_counts = (int *) ((off_t) new_set + new_set->m_semaphoreCounts);
@@ -186,7 +186,8 @@ semget(int semKey, int semNum, int flags)
        return MAKE_OFFSET(new_set);
    else
    {
-       int i;
+       int         i;
+
        /* Blow away what we've got right now... */
        for (i = 0; i < semNum; ++i)
        {
index 4c8dbe5e163f3dc5c3fea8f88fdd1f5a72db216b..5e603a00b14f28fa577896ef3f31bd1903dd8ac4 100644 (file)
@@ -13,7 +13,7 @@
  *
  * Copyright (c) 2001-2003, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.41 2003/07/28 00:09:15 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.42 2003/08/04 00:43:21 momjian Exp $
  * ----------
  */
 #include "postgres.h"
@@ -85,6 +85,7 @@ static bool pgStatRunningInCollector = FALSE;
 static int pgStatTabstatAlloc = 0;
 static int pgStatTabstatUsed = 0;
 static PgStat_MsgTabstat **pgStatTabstatMessages = NULL;
+
 #define TABSTAT_QUANTUM        4   /* we alloc this many at a time */
 
 static int pgStatXactCommit = 0;
@@ -146,8 +147,10 @@ static void pgstat_recv_resetcounter(PgStat_MsgResetcounter *msg, int len);
 void
 pgstat_init(void)
 {
-   ACCEPT_TYPE_ARG3    alen;
-   struct  addrinfo    *addrs = NULL, *addr, hints;
+   ACCEPT_TYPE_ARG3 alen;
+   struct addrinfo *addrs = NULL,
+              *addr,
+               hints;
    int         ret;
 
    /*
@@ -197,7 +200,7 @@ pgstat_init(void)
                        gai_strerror(ret))));
        goto startup_failed;
    }
-   
+
    for (addr = addrs; addr; addr = addr->ai_next)
    {
 #ifdef HAVE_UNIX_SOCKETS
@@ -233,11 +236,11 @@ pgstat_init(void)
    addrs = NULL;
 
    alen = sizeof(pgStatAddr);
-   if (getsockname(pgStatSock, (struct sockaddr *)&pgStatAddr, &alen) < 0)
+   if (getsockname(pgStatSock, (struct sockaddr *) & pgStatAddr, &alen) < 0)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
-                errmsg("could not get address of socket for statistics: %m")));
+         errmsg("could not get address of socket for statistics: %m")));
        goto startup_failed;
    }
 
@@ -265,7 +268,7 @@ pgstat_init(void)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
-                errmsg("could not set statistics socket to nonblock mode: %m")));
+       errmsg("could not set statistics socket to nonblock mode: %m")));
        goto startup_failed;
    }
 
@@ -276,7 +279,7 @@ pgstat_init(void)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
-                errmsg("could not create pipe for statistics collector: %m")));
+         errmsg("could not create pipe for statistics collector: %m")));
        goto startup_failed;
    }
 
@@ -320,10 +323,10 @@ pgstat_start(void)
 
    /*
     * Do nothing if too soon since last collector start.  This is a
-    * safety valve to protect against continuous respawn attempts if
-    * the collector is dying immediately at launch.  Note that since
-    * we will be re-called from the postmaster main loop, we will get
-    * another chance later.
+    * safety valve to protect against continuous respawn attempts if the
+    * collector is dying immediately at launch.  Note that since we will
+    * be re-called from the postmaster main loop, we will get another
+    * chance later.
     */
    curtime = time(NULL);
    if ((unsigned int) (curtime - last_pgstat_start_time) <
@@ -338,6 +341,7 @@ pgstat_start(void)
    {
        ereport(LOG,
                (errmsg("statistics collector startup skipped")));
+
        /*
         * We can only get here if someone tries to manually turn
         * pgstat_collect_startcollector on after it had been off.
@@ -347,7 +351,8 @@ pgstat_start(void)
    }
 
    /*
-    * Okay, fork off the collector.  Remember its PID for pgstat_ispgstat.
+    * Okay, fork off the collector.  Remember its PID for
+    * pgstat_ispgstat.
     */
 
    fflush(stdout);
@@ -772,7 +777,7 @@ pgstat_reset_counters(void)
    if (!superuser())
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("must be superuser to reset statistics counters")));
+             errmsg("must be superuser to reset statistics counters")));
 
    pgstat_setheader(&msg.m_hdr, PGSTAT_MTYPE_RESETCOUNTER);
    pgstat_send(&msg, sizeof(msg));
@@ -897,7 +902,7 @@ pgstat_initstats(PgStat_Info *stats, Relation rel)
     */
    if (pgStatTabstatUsed >= pgStatTabstatAlloc)
    {
-       int     newAlloc = pgStatTabstatAlloc + TABSTAT_QUANTUM;
+       int         newAlloc = pgStatTabstatAlloc + TABSTAT_QUANTUM;
        PgStat_MsgTabstat *newMessages;
        PgStat_MsgTabstat **msgArray;
 
@@ -1251,7 +1256,7 @@ pgstat_main(void)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
-                errmsg("could not create pipe for statistics buffer: %m")));
+            errmsg("could not create pipe for statistics buffer: %m")));
        exit(1);
    }
 
@@ -1316,7 +1321,7 @@ pgstat_main(void)
        /* assume the problem is out-of-memory */
        ereport(LOG,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
        exit(1);
    }
 
@@ -1394,7 +1399,7 @@ pgstat_main(void)
                continue;
            ereport(LOG,
                    (errcode_for_socket_access(),
-                    errmsg("select failed in statistics collector: %m")));
+                  errmsg("select failed in statistics collector: %m")));
            exit(1);
        }
 
@@ -1436,7 +1441,7 @@ pgstat_main(void)
                        continue;
                    ereport(LOG,
                            (errcode_for_socket_access(),
-                            errmsg("could not read from statistics pipe: %m")));
+                    errmsg("could not read from statistics pipe: %m")));
                    exit(1);
                }
                if (len == 0)   /* EOF on the pipe! */
@@ -1455,7 +1460,7 @@ pgstat_main(void)
                         * that we can restart both processes.
                         */
                        ereport(LOG,
-                               (errmsg("invalid statistics message length")));
+                         (errmsg("invalid statistics message length")));
                        exit(1);
                    }
                }
@@ -1579,7 +1584,7 @@ pgstat_recvbuffer(void)
    int         msg_send = 0;   /* next send index in buffer */
    int         msg_recv = 0;   /* next receive index */
    int         msg_have = 0;   /* number of bytes stored */
-   struct sockaddr_storage fromaddr;
+   struct sockaddr_storage fromaddr;
    int         fromlen;
    bool        overflow = false;
 
@@ -1607,7 +1612,7 @@ pgstat_recvbuffer(void)
    {
        ereport(LOG,
                (errcode_for_socket_access(),
-                errmsg("could not set statistics pipe to nonblock mode: %m")));
+         errmsg("could not set statistics pipe to nonblock mode: %m")));
        exit(1);
    }
 
@@ -1619,7 +1624,7 @@ pgstat_recvbuffer(void)
    {
        ereport(LOG,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
        exit(1);
    }
 
@@ -1692,13 +1697,13 @@ pgstat_recvbuffer(void)
        {
            fromlen = sizeof(fromaddr);
            len = recvfrom(pgStatSock, (char *) &input_buffer,
-               sizeof(PgStat_Msg), 0,
-               (struct sockaddr *) &fromaddr, &fromlen);
+                          sizeof(PgStat_Msg), 0,
+                          (struct sockaddr *) &fromaddr, &fromlen);
            if (len < 0)
            {
                ereport(LOG,
                        (errcode_for_socket_access(),
-                        errmsg("failed to read statistics message: %m")));
+                      errmsg("failed to read statistics message: %m")));
                exit(1);
            }
 
@@ -1887,7 +1892,7 @@ pgstat_add_backend(PgStat_MsgHdr *msg)
    {
        ereport(LOG,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
        exit(1);
    }
 
@@ -1919,7 +1924,7 @@ pgstat_add_backend(PgStat_MsgHdr *msg)
            /* assume the problem is out-of-memory */
            ereport(LOG,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
-                    errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
            exit(1);
        }
    }
@@ -2234,7 +2239,7 @@ pgstat_read_statsfile(HTAB **dbhash, Oid onlydb,
        {
            ereport(LOG,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
-                    errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
            exit(1);
        }
        /* in backend, can do normal error */
@@ -2621,7 +2626,7 @@ pgstat_recv_tabstat(PgStat_MsgTabstat *msg, int len)
        {
            ereport(LOG,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
-                    errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
            exit(1);
        }
 
@@ -2803,7 +2808,7 @@ pgstat_recv_resetcounter(PgStat_MsgResetcounter *msg, int len)
        /* assume the problem is out-of-memory */
        ereport(LOG,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("out of memory in statistics collector --- abort")));
+            errmsg("out of memory in statistics collector --- abort")));
        exit(1);
    }
 }
index 3adea9ab4045e30be7e2b96a19ccd3622c9d57a8..9692c8898ddc63534ea173be5b195eb716b40c63 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.338 2003/08/01 23:25:00 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.339 2003/08/04 00:43:21 momjian Exp $
  *
  * NOTES
  *
@@ -169,14 +169,15 @@ int           ReservedBackends;
 static char *progname = (char *) NULL;
 
 /* The socket(s) we're listening to. */
-#define    MAXLISTEN   10
+#define MAXLISTEN  10
 static int ListenSocket[MAXLISTEN];
 
 /* Used to reduce macros tests */
 #ifdef EXEC_BACKEND
-const bool ExecBackend = true;
+const bool ExecBackend = true;
+
 #else
-const bool ExecBackend = false;
+const bool ExecBackend = false;
 #endif
 
 /*
@@ -210,15 +211,15 @@ bool      LogSourcePort;
 bool       Log_connections = false;
 bool       Db_user_namespace = false;
 
-char       *rendezvous_name;
+char      *rendezvous_name;
 
 /* For FNCTL_NONBLOCK */
 #if defined(WIN32) || defined(__BEOS__)
-long ioctlsocket_ret;
+long       ioctlsocket_ret;
 #endif
 
 /* list of library:init-function to be preloaded */
-char       *preload_libraries_string = NULL;
+char      *preload_libraries_string = NULL;
 
 /* Startup/shutdown state */
 static pid_t StartupPID = 0,
@@ -290,7 +291,8 @@ static void SignalChildren(int signal);
 static int CountChildren(void);
 static bool CreateOptsFile(int argc, char *argv[]);
 static pid_t SSDataBase(int xlop);
-static void postmaster_error(const char *fmt,...)
+static void
+postmaster_error(const char *fmt,...)
 /* This lets gcc check the format string for consistency. */
 __attribute__((format(printf, 1, 2)));
 
@@ -327,8 +329,8 @@ checkDataDir(const char *checkdir)
        else
            ereport(FATAL,
                    (errcode_for_file_access(),
-                    errmsg("could not read permissions of directory \"%s\": %m",
-                           checkdir)));
+            errmsg("could not read permissions of directory \"%s\": %m",
+                   checkdir)));
    }
 
    /*
@@ -357,7 +359,7 @@ checkDataDir(const char *checkdir)
    {
        fprintf(stderr,
                gettext("%s could not find the database system.\n"
-                       "Expected to find it in the PGDATA directory \"%s\",\n"
+                 "Expected to find it in the PGDATA directory \"%s\",\n"
                        "but failed to open file \"%s\": %s\n"),
                progname, checkdir, path, strerror(errno));
        ExitPostmaster(2);
@@ -374,17 +376,16 @@ reg_reply(DNSServiceRegistrationReplyErrorType errorCode, void *context)
 {
 
 }
-
 #endif
 
 int
 PostmasterMain(int argc, char *argv[])
 {
-   int     opt;
-   int     status;
+   int         opt;
+   int         status;
    char        original_extraoptions[MAXPGPATH];
-   char        *potential_DataDir = NULL;
-   int     i;
+   char       *potential_DataDir = NULL;
+   int         i;
 
    *original_extraoptions = '\0';
 
@@ -581,7 +582,7 @@ PostmasterMain(int argc, char *argv[])
 
            default:
                fprintf(stderr,
-                       gettext("Try '%s --help' for more information.\n"),
+                     gettext("Try '%s --help' for more information.\n"),
                        progname);
                ExitPostmaster(1);
        }
@@ -682,8 +683,8 @@ PostmasterMain(int argc, char *argv[])
 #endif
 
    /*
-    * process any libraries that should be preloaded and
-    * optionally pre-initialized
+    * process any libraries that should be preloaded and optionally
+    * pre-initialized
     */
    if (preload_libraries_string)
        process_preload_libraries(preload_libraries_string);
@@ -725,13 +726,14 @@ PostmasterMain(int argc, char *argv[])
    {
        if (VirtualHost && VirtualHost[0])
        {
-           char    *curhost, *endptr;
-           char    c = 0;
+           char       *curhost,
+                      *endptr;
+           char        c = 0;
 
            curhost = VirtualHost;
            for (;;)
            {
-               while (*curhost == ' ') /* skip any extra spaces */
+               while (*curhost == ' ') /* skip any extra spaces */
                    curhost++;
                if (*curhost == '\0')
                    break;
@@ -747,8 +749,8 @@ PostmasterMain(int argc, char *argv[])
                                          ListenSocket, MAXLISTEN);
                if (status != STATUS_OK)
                    ereport(LOG,
-                           (errmsg("could not create listen socket for \"%s\"",
-                                   curhost)));
+                    (errmsg("could not create listen socket for \"%s\"",
+                            curhost)));
                if (endptr)
                {
                    *endptr = c;
@@ -766,10 +768,10 @@ PostmasterMain(int argc, char *argv[])
                                      ListenSocket, MAXLISTEN);
            if (status != STATUS_OK)
                ereport(LOG,
-                       (errmsg("could not create TCP/IP listen socket")));
+                     (errmsg("could not create TCP/IP listen socket")));
        }
 
-#ifdef USE_RENDEZVOUS                   
+#ifdef USE_RENDEZVOUS
        if (rendezvous_name != NULL)
        {
            DNSServiceRegistrationCreate(rendezvous_name,
@@ -777,7 +779,7 @@ PostmasterMain(int argc, char *argv[])
                                         "",
                                         htonl(PostPortNumber),
                                         "",
-                                        (DNSServiceRegistrationReply)reg_reply,
+                                (DNSServiceRegistrationReply) reg_reply,
                                         NULL);
        }
 #endif
@@ -842,8 +844,8 @@ PostmasterMain(int argc, char *argv[])
 
    /*
     * Reset whereToSendOutput from Debug (its starting state) to None.
-    * This prevents ereport from sending log messages to stderr unless the
-    * syslog/stderr switch permits.  We don't do this until the
+    * This prevents ereport from sending log messages to stderr unless
+    * the syslog/stderr switch permits.  We don't do this until the
     * postmaster is fully launched, since startup failures may as well be
     * reported to stderr.
     */
@@ -989,10 +991,11 @@ usage(const char *progname)
 static int
 ServerLoop(void)
 {
-   fd_set          readmask;
+   fd_set      readmask;
    int         nSockets;
-   struct timeval      now, later;
-   struct timezone     tz;
+   struct timeval now,
+               later;
+   struct timezone tz;
    int         i;
 
    gettimeofday(&now, &tz);
@@ -1090,8 +1093,8 @@ ServerLoop(void)
        }
 
        /*
-        * New connection pending on any of our sockets? If so,
-        * fork a child process to deal with it.
+        * New connection pending on any of our sockets? If so, fork a
+        * child process to deal with it.
         */
        for (i = 0; i < MAXLISTEN; i++)
        {
@@ -1105,8 +1108,8 @@ ServerLoop(void)
                    BackendStartup(port);
 
                    /*
-                    * We no longer need the open socket
-                    * or port structure in this process
+                    * We no longer need the open socket or port structure
+                    * in this process
                     */
                    StreamClose(port->sock);
                    ConnFree(port);
@@ -1136,7 +1139,7 @@ initMasks(fd_set *rmask)
 
    for (i = 0; i < MAXLISTEN; i++)
    {
-       int fd = ListenSocket[i];
+       int         fd = ListenSocket[i];
 
        if (fd == -1)
            break;
@@ -1173,7 +1176,7 @@ ProcessStartupPacket(Port *port, bool SSLdone)
    {
        /*
         * EOF after SSLdone probably means the client didn't like our
-        * response to NEGOTIATE_SSL_CODE.  That's not an error condition,
+        * response to NEGOTIATE_SSL_CODE.  That's not an error condition,
         * so don't clutter the log with a complaint.
         */
        if (!SSLdone)
@@ -1197,9 +1200,9 @@ ProcessStartupPacket(Port *port, bool SSLdone)
 
    /*
     * Allocate at least the size of an old-style startup packet, plus one
-    * extra byte, and make sure all are zeroes.  This ensures we will have
-    * null termination of all strings, in both fixed- and variable-length
-    * packet layouts.
+    * extra byte, and make sure all are zeroes.  This ensures we will
+    * have null termination of all strings, in both fixed- and
+    * variable-length packet layouts.
     */
    if (len <= (int32) sizeof(StartupPacket))
        buf = palloc0(sizeof(StartupPacket) + 1);
@@ -1243,7 +1246,7 @@ ProcessStartupPacket(Port *port, bool SSLdone)
        {
            ereport(COMMERROR,
                    (errcode_for_socket_access(),
-                    errmsg("failed to send SSL negotiation response: %m")));
+                errmsg("failed to send SSL negotiation response: %m")));
            return STATUS_ERROR;    /* close the connection */
        }
 
@@ -1259,41 +1262,41 @@ ProcessStartupPacket(Port *port, bool SSLdone)
    /* Could add additional special packet types here */
 
    /*
-    * Set FrontendProtocol now so that ereport() knows what format to send
-    * if we fail during startup.
+    * Set FrontendProtocol now so that ereport() knows what format to
+    * send if we fail during startup.
     */
    FrontendProtocol = proto;
 
    /* Check we can handle the protocol the frontend is using. */
 
    if (PG_PROTOCOL_MAJOR(proto) < PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST) ||
-       PG_PROTOCOL_MAJOR(proto) > PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) ||
-       (PG_PROTOCOL_MAJOR(proto) == PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) &&
-        PG_PROTOCOL_MINOR(proto) > PG_PROTOCOL_MINOR(PG_PROTOCOL_LATEST)))
+     PG_PROTOCOL_MAJOR(proto) > PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) ||
+   (PG_PROTOCOL_MAJOR(proto) == PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST) &&
+    PG_PROTOCOL_MINOR(proto) > PG_PROTOCOL_MINOR(PG_PROTOCOL_LATEST)))
        ereport(FATAL,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                 errmsg("unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u",
-                       PG_PROTOCOL_MAJOR(proto), PG_PROTOCOL_MINOR(proto),
+                     PG_PROTOCOL_MAJOR(proto), PG_PROTOCOL_MINOR(proto),
                        PG_PROTOCOL_MAJOR(PG_PROTOCOL_EARLIEST),
                        PG_PROTOCOL_MAJOR(PG_PROTOCOL_LATEST),
                        PG_PROTOCOL_MINOR(PG_PROTOCOL_LATEST))));
 
    /*
     * Now fetch parameters out of startup packet and save them into the
-    * Port structure.  All data structures attached to the Port struct
+    * Port structure.  All data structures attached to the Port struct
     * must be allocated in TopMemoryContext so that they won't disappear
-    * when we pass them to PostgresMain (see BackendFork).  We need not worry
-    * about leaking this storage on failure, since we aren't in the postmaster
-    * process anymore.
+    * when we pass them to PostgresMain (see BackendFork).  We need not
+    * worry about leaking this storage on failure, since we aren't in the
+    * postmaster process anymore.
     */
    oldcontext = MemoryContextSwitchTo(TopMemoryContext);
 
    if (PG_PROTOCOL_MAJOR(proto) >= 3)
    {
-       int32   offset = sizeof(ProtocolVersion);
+       int32       offset = sizeof(ProtocolVersion);
 
        /*
-        * Scan packet body for name/option pairs.  We can assume any
+        * Scan packet body for name/option pairs.  We can assume any
         * string beginning within the packet body is null-terminated,
         * thanks to zeroing extra byte above.
         */
@@ -1301,9 +1304,9 @@ ProcessStartupPacket(Port *port, bool SSLdone)
 
        while (offset < len)
        {
-           char   *nameptr = ((char *) buf) + offset;
-           int32   valoffset;
-           char   *valptr;
+           char       *nameptr = ((char *) buf) + offset;
+           int32       valoffset;
+           char       *valptr;
 
            if (*nameptr == '\0')
                break;          /* found packet terminator */
@@ -1328,11 +1331,12 @@ ProcessStartupPacket(Port *port, bool SSLdone)
            }
            offset = valoffset + strlen(valptr) + 1;
        }
+
        /*
         * If we didn't find a packet terminator exactly at the end of the
         * given packet length, complain.
         */
-       if (offset != len-1)
+       if (offset != len - 1)
            ereport(FATAL,
                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
                     errmsg("invalid startup packet layout: expected terminator as last byte")));
@@ -1340,10 +1344,11 @@ ProcessStartupPacket(Port *port, bool SSLdone)
    else
    {
        /*
-        * Get the parameters from the old-style, fixed-width-fields startup
-        * packet as C strings.  The packet destination was cleared first so a
-        * short packet has zeros silently added.  We have to be prepared to
-        * truncate the pstrdup result for oversize fields, though.
+        * Get the parameters from the old-style, fixed-width-fields
+        * startup packet as C strings.  The packet destination was
+        * cleared first so a short packet has zeros silently added.  We
+        * have to be prepared to truncate the pstrdup result for oversize
+        * fields, though.
         */
        StartupPacket *packet = (StartupPacket *) buf;
 
@@ -1363,7 +1368,7 @@ ProcessStartupPacket(Port *port, bool SSLdone)
    if (port->user_name == NULL || port->user_name[0] == '\0')
        ereport(FATAL,
                (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
-                errmsg("no PostgreSQL user name specified in startup packet")));
+        errmsg("no PostgreSQL user name specified in startup packet")));
 
    /* The database defaults to the user name. */
    if (port->database_name == NULL || port->database_name[0] == '\0')
@@ -1468,10 +1473,8 @@ processCancelRequest(Port *port, void *pkt)
        return;
    }
    else if (ExecBackend)
-   {
        AttachSharedMemoryAndSemaphores();
-   }
-   
+
    /* See if we have a matching backend */
 
    for (curr = DLGetHead(BackendList); curr; curr = DLGetSucc(curr))
@@ -1590,7 +1593,7 @@ ConnFree(Port *conn)
 void
 ClosePostmasterPorts(bool pgstat_too)
 {
-   int i;
+   int         i;
 
    /* Close the listen sockets */
    for (i = 0; i < MAXLISTEN; i++)
@@ -1639,7 +1642,7 @@ SIGHUP_handler(SIGNAL_ARGS)
    if (Shutdown <= SmartShutdown)
    {
        ereport(LOG,
-               (errmsg("received SIGHUP, reloading configuration files")));
+            (errmsg("received SIGHUP, reloading configuration files")));
        ProcessConfigFile(PGC_SIGHUP);
 #ifdef EXEC_BACKEND
        write_nondefault_variables(PGC_SIGHUP);
@@ -1806,9 +1809,9 @@ reaper(SIGNAL_ARGS)
 #endif
 
        /*
-        * Check if this child was the statistics collector. If so,
-        * try to start a new one.  (If fail, we'll try again in
-        * future cycles of the main loop.)
+        * Check if this child was the statistics collector. If so, try to
+        * start a new one.  (If fail, we'll try again in future cycles of
+        * the main loop.)
         */
        if (pgstat_ispgstat(pid))
        {
@@ -1883,7 +1886,7 @@ reaper(SIGNAL_ARGS)
         */
        CleanupProc(pid, exitstatus);
 
-   } /* loop over pending child-death reports */
+   }                           /* loop over pending child-death reports */
 #endif
 
    if (FatalError)
@@ -1895,7 +1898,7 @@ reaper(SIGNAL_ARGS)
        if (DLGetHead(BackendList) || StartupPID > 0 || ShutdownPID > 0)
            goto reaper_done;
        ereport(LOG,
-               (errmsg("all server processes terminated; reinitializing")));
+           (errmsg("all server processes terminated; reinitializing")));
 
        shmem_exit(0);
        reset_shared(PostPortNumber);
@@ -1979,11 +1982,11 @@ CleanupProc(int pid,
    if (!FatalError)
    {
        LogChildExit(LOG,
-                    (pid == CheckPointPID) ? gettext("checkpoint process") :
+                (pid == CheckPointPID) ? gettext("checkpoint process") :
                     gettext("server process"),
                     pid, exitstatus);
        ereport(LOG,
-               (errmsg("terminating any other active server processes")));
+             (errmsg("terminating any other active server processes")));
    }
 
    curr = DLGetHead(BackendList);
@@ -2045,26 +2048,29 @@ LogChildExit(int lev, const char *procname, int pid, int exitstatus)
 {
    if (WIFEXITED(exitstatus))
        ereport(lev,
-               /*
-                * translator: %s is a noun phrase describing a child process,
-                * such as "server process"
-                */
+
+       /*
+        * translator: %s is a noun phrase describing a child process,
+        * such as "server process"
+        */
                (errmsg("%s (pid %d) exited with exit code %d",
                        procname, pid, WEXITSTATUS(exitstatus))));
    else if (WIFSIGNALED(exitstatus))
        ereport(lev,
-               /*
-                * translator: %s is a noun phrase describing a child process,
-                * such as "server process"
-                */
+
+       /*
+        * translator: %s is a noun phrase describing a child process,
+        * such as "server process"
+        */
                (errmsg("%s (pid %d) was terminated by signal %d",
                        procname, pid, WTERMSIG(exitstatus))));
    else
        ereport(lev,
-               /*
-                * translator: %s is a noun phrase describing a child process,
-                * such as "server process"
-                */
+
+       /*
+        * translator: %s is a noun phrase describing a child process,
+        * such as "server process"
+        */
                (errmsg("%s (pid %d) exited with unexpected status %d",
                        procname, pid, exitstatus)));
 }
@@ -2195,7 +2201,7 @@ BackendStartup(Port *port)
        free(bn);
        errno = save_errno;
        ereport(LOG,
-               (errmsg("could not fork new process for connection: %m")));
+             (errmsg("could not fork new process for connection: %m")));
        report_fork_failure_to_client(port, save_errno);
        return STATUS_ERROR;
    }
@@ -2284,18 +2290,19 @@ split_opts(char **argv, int *argcp, char *s)
 static int
 BackendFork(Port *port)
 {
-   char        **av;
-   int     maxac;
-   int     ac;
+   char      **av;
+   int         maxac;
+   int         ac;
    char        debugbuf[32];
    char        protobuf[32];
+
 #ifdef EXEC_BACKEND
    char        pbuf[NAMEDATALEN + 256];
 #endif
-   int     i;
-   int     status;
-   struct timeval  now;
-   struct timezone tz;
+   int         i;
+   int         status;
+   struct timeval now;
+   struct timezone tz;
    char        remote_host[NI_MAXHOST];
    char        remote_port[NI_MAXSERV];
 
@@ -2324,8 +2331,8 @@ BackendFork(Port *port)
    MyProcPid = getpid();
 
    /*
-    * Initialize libpq and enable reporting of ereport errors to the client.
-    * Must do this now because authentication uses libpq to send
+    * Initialize libpq and enable reporting of ereport errors to the
+    * client. Must do this now because authentication uses libpq to send
     * messages.
     */
    pq_init();                  /* initialize libpq to talk to client */
@@ -2350,7 +2357,7 @@ BackendFork(Port *port)
    if (getnameinfo_all(&port->raddr.addr, port->raddr.salen,
                        remote_host, sizeof(remote_host),
                        remote_port, sizeof(remote_port),
-                       (log_hostname ? 0 : NI_NUMERICHOST) | NI_NUMERICSERV))
+                  (log_hostname ? 0 : NI_NUMERICHOST) | NI_NUMERICSERV))
    {
        getnameinfo_all(&port->raddr.addr, port->raddr.salen,
                        remote_host, sizeof(remote_host),
@@ -2366,7 +2373,7 @@ BackendFork(Port *port)
    if (LogSourcePort)
    {
        /* modify remote_host for use in ps status */
-       char    tmphost[NI_MAXHOST];
+       char        tmphost[NI_MAXHOST];
 
        snprintf(tmphost, sizeof(tmphost), "%s:%s", remote_host, remote_port);
        StrNCpy(remote_host, tmphost, sizeof(remote_host));
@@ -2484,14 +2491,15 @@ BackendFork(Port *port)
     */
    av[ac++] = "-p";
 #ifdef EXEC_BACKEND
-   Assert(UsedShmemSegID != 0 && UsedShmemSegAddr != NULL);
+   Assert(UsedShmemSegID != 0 && UsedShmemSegAddr != NULL);
    /* database name at the end because it might contain commas */
    snprintf(pbuf, NAMEDATALEN + 256, "%d,%d,%d,%p,%s", port->sock, canAcceptConnections(),
-                   UsedShmemSegID, UsedShmemSegAddr, port->database_name);
+            UsedShmemSegID, UsedShmemSegAddr, port->database_name);
    av[ac++] = pbuf;
 #else
    av[ac++] = port->database_name;
 #endif
+
    /*
     * Pass the (insecure) option switches from the connection request.
     * (It's OK to mangle port->cmdline_options now.)
@@ -2507,7 +2515,7 @@ BackendFork(Port *port)
     * Release postmaster's working memory context so that backend can
     * recycle the space.  Note this does not trash *MyProcPort, because
     * ConnCreate() allocated that space with malloc() ... else we'd need
-    * to copy the Port data here.  Also, subsidiary data such as the
+    * to copy the Port data here.  Also, subsidiary data such as the
     * username isn't lost either; see ProcessStartupPacket().
     */
    MemoryContextSwitchTo(TopMemoryContext);
@@ -2565,21 +2573,21 @@ sigusr1_handler(SIGNAL_ARGS)
        if (CheckPointWarning != 0)
        {
            /*
-            *  This only times checkpoints forced by running out of
-            *  segment files.  Other checkpoints could reduce
-            *  the frequency of forced checkpoints.
+            * This only times checkpoints forced by running out of
+            * segment files.  Other checkpoints could reduce the
+            * frequency of forced checkpoints.
             */
-           time_t  now = time(NULL);
+           time_t      now = time(NULL);
 
            if (LastSignalledCheckpoint != 0)
            {
-               int     elapsed_secs = now - LastSignalledCheckpoint;
+               int         elapsed_secs = now - LastSignalledCheckpoint;
 
                if (elapsed_secs < CheckPointWarning)
                    ereport(LOG,
                            (errmsg("checkpoints are occurring too frequently (%d seconds apart)",
                                    elapsed_secs),
-                            errhint("Consider increasing CHECKPOINT_SEGMENTS.")));
+                   errhint("Consider increasing CHECKPOINT_SEGMENTS.")));
            }
            LastSignalledCheckpoint = now;
        }
@@ -2763,6 +2771,7 @@ SSDataBase(int xlop)
        int         ac = 0;
        char        nbbuf[32];
        char        xlbuf[32];
+
 #ifdef EXEC_BACKEND
        char        pbuf[NAMEDATALEN + 256];
 #endif
@@ -2817,10 +2826,10 @@ SSDataBase(int xlop)
 
        av[ac++] = "-p";
 #ifdef EXEC_BACKEND
-       Assert(UsedShmemSegID != 0 && UsedShmemSegAddr != NULL);
+       Assert(UsedShmemSegID != 0 && UsedShmemSegAddr != NULL);
        /* database name at the end because it might contain commas */
        snprintf(pbuf, NAMEDATALEN + 256, "%d,%p,%s", UsedShmemSegID,
-                       UsedShmemSegAddr, "template1");
+                UsedShmemSegAddr, "template1");
        av[ac++] = pbuf;
 #else
        av[ac++] = "template1";
@@ -2850,7 +2859,7 @@ SSDataBase(int xlop)
                break;
            case BS_XLOG_CHECKPOINT:
                ereport(LOG,
-                       (errmsg("could not fork checkpoint process: %m")));
+                     (errmsg("could not fork checkpoint process: %m")));
                break;
            case BS_XLOG_SHUTDOWN:
                ereport(LOG,
index eb250556822c5be5ffd6fe9196d45acf6c4ce0b4..da2b79b5f0974448754c76cb4970710612d0f63e 100644 (file)
@@ -2,21 +2,21 @@
  * colorings of characters
  * This file is #included by regcomp.c.
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -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.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regc_color.c,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regc_color.c,v 1.2 2003/08/04 00:43:21 momjian Exp $
  *
  *
  * Note that there are some incestuous relationships between this code and
@@ -37,8 +37,8 @@
 
 
 
-#define    CISERR()    VISERR(cm->v)
-#define    CERR(e)     VERR(cm->v, (e))
+#define CISERR()   VISERR(cm->v)
+#define CERR(e)        VERR(cm->v, (e))
 
 
 
  * initcm - set up new colormap
  */
 static void
-initcm(struct vars *v,
-      struct colormap *cm)
+initcm(struct vars * v,
+      struct colormap * cm)
 {
-   int i;
-   int j;
+   int         i;
+   int         j;
    union tree *t;
    union tree *nextt;
    struct colordesc *cd;
@@ -63,21 +63,22 @@ initcm(struct vars *v,
    cm->max = 0;
    cm->free = 0;
 
-   cd = cm->cd;            /* cm->cd[WHITE] */
+   cd = cm->cd;                /* cm->cd[WHITE] */
    cd->sub = NOSUB;
    cd->arcs = NULL;
    cd->flags = 0;
    cd->nchrs = CHR_MAX - CHR_MIN + 1;
 
    /* upper levels of tree */
-   for (t = &cm->tree[0], j = NBYTS-1; j > 0; t = nextt, j--) {
+   for (t = &cm->tree[0], j = NBYTS - 1; j > 0; t = nextt, j--)
+   {
        nextt = t + 1;
-       for (i = BYTTAB-1; i >= 0; i--)
+       for (i = BYTTAB - 1; i >= 0; i--)
            t->tptr[i] = nextt;
    }
    /* bottom level is solid white */
-   t = &cm->tree[NBYTS-1];
-   for (i = BYTTAB-1; i >= 0; i--)
+   t = &cm->tree[NBYTS - 1];
+   for (i = BYTTAB - 1; i >= 0; i--)
        t->tcolor[i] = WHITE;
    cd->block = t;
 }
@@ -86,16 +87,17 @@ initcm(struct vars *v,
  * freecm - free dynamically-allocated things in a colormap
  */
 static void
-freecm(struct colormap *cm)
+freecm(struct colormap * cm)
 {
-   size_t i;
+   size_t      i;
    union tree *cb;
 
    cm->magic = 0;
    if (NBYTS > 1)
        cmtreefree(cm, cm->tree, 0);
    for (i = 1; i <= cm->max; i++)      /* skip WHITE */
-       if (!UNUSEDCOLOR(&cm->cd[i])) {
+       if (!UNUSEDCOLOR(&cm->cd[i]))
+       {
            cb = cm->cd[i].block;
            if (cb != NULL)
                FREE(cb);
@@ -108,24 +110,29 @@ freecm(struct colormap *cm)
  * cmtreefree - free a non-terminal part of a colormap tree
  */
 static void
-cmtreefree(struct colormap *cm,
-          union tree *tree,
+cmtreefree(struct colormap * cm,
+          union tree * tree,
           int level)           /* level number (top == 0) of this block */
 {
-   int i;
+   int         i;
    union tree *t;
-   union tree *fillt = &cm->tree[level+1];
+   union tree *fillt = &cm->tree[level + 1];
    union tree *cb;
 
-   assert(level < NBYTS-1);    /* this level has pointers */
-   for (i = BYTTAB-1; i >= 0; i--) {
+   assert(level < NBYTS - 1);  /* this level has pointers */
+   for (i = BYTTAB - 1; i >= 0; i--)
+   {
        t = tree->tptr[i];
        assert(t != NULL);
-       if (t != fillt) {
-           if (level < NBYTS-2) {  /* more pointer blocks below */
-               cmtreefree(cm, t, level+1);
+       if (t != fillt)
+       {
+           if (level < NBYTS - 2)
+           {                   /* more pointer blocks below */
+               cmtreefree(cm, t, level + 1);
                FREE(t);
-           } else {        /* color block below */
+           }
+           else
+           {                   /* color block below */
                cb = cm->cd[t->tcolor[0]].block;
                if (t != cb)    /* not a solid block */
                    FREE(t);
@@ -137,22 +144,22 @@ cmtreefree(struct colormap *cm,
 /*
  * setcolor - set the color of a character in a colormap
  */
-static color           /* previous color */
-setcolor(struct colormap *cm,
+static color               /* previous color */
+setcolor(struct colormap * cm,
         chr c,
         pcolor co)
 {
-   uchr uc = c;
-   int shift;
-   int level;
-   int b;
-   int bottom;
+   uchr        uc = c;
+   int         shift;
+   int         level;
+   int         b;
+   int         bottom;
    union tree *t;
    union tree *newt;
    union tree *fillt;
    union tree *lastt;
    union tree *cb;
-   color prev;
+   color       prev;
 
    assert(cm->magic == CMMAGIC);
    if (CISERR() || co == COLORLESS)
@@ -160,27 +167,30 @@ setcolor(struct colormap *cm,
 
    t = cm->tree;
    for (level = 0, shift = BYTBITS * (NBYTS - 1); shift > 0;
-                       level++, shift -= BYTBITS) {
+        level++, shift -= BYTBITS)
+   {
        b = (uc >> shift) & BYTMASK;
        lastt = t;
        t = lastt->tptr[b];
        assert(t != NULL);
-       fillt = &cm->tree[level+1];
+       fillt = &cm->tree[level + 1];
        bottom = (shift <= BYTBITS) ? 1 : 0;
        cb = (bottom) ? cm->cd[t->tcolor[0]].block : fillt;
-       if (t == fillt || t == cb) {    /* must allocate a new block */
-           newt = (union tree *)MALLOC((bottom) ?
-               sizeof(struct colors) : sizeof(struct ptrs));
-           if (newt == NULL) {
+       if (t == fillt || t == cb)
+       {                       /* must allocate a new block */
+           newt = (union tree *) MALLOC((bottom) ?
+                           sizeof(struct colors) : sizeof(struct ptrs));
+           if (newt == NULL)
+           {
                CERR(REG_ESPACE);
                return COLORLESS;
            }
            if (bottom)
                memcpy(VS(newt->tcolor), VS(t->tcolor),
-                           BYTTAB*sizeof(color));
+                      BYTTAB * sizeof(color));
            else
                memcpy(VS(newt->tptr), VS(t->tptr),
-                       BYTTAB*sizeof(union tree *));
+                      BYTTAB * sizeof(union tree *));
            t = newt;
            lastt->tptr[b] = t;
        }
@@ -188,7 +198,7 @@ setcolor(struct colormap *cm,
 
    b = uc & BYTMASK;
    prev = t->tcolor[b];
-   t->tcolor[b] = (color)co;
+   t->tcolor[b] = (color) co;
    return prev;
 }
 
@@ -196,51 +206,59 @@ setcolor(struct colormap *cm,
  * maxcolor - report largest color number in use
  */
 static color
-maxcolor(struct colormap *cm)
+maxcolor(struct colormap * cm)
 {
    if (CISERR())
        return COLORLESS;
 
-   return (color)cm->max;
+   return (color) cm->max;
 }
 
 /*
  * newcolor - find a new color (must be subject of setcolor at once)
- * Beware:  may relocate the colordescs.
+ * Beware: may relocate the colordescs.
  */
-static color           /* COLORLESS for error */
-newcolor(struct colormap *cm)
+static color               /* COLORLESS for error */
+newcolor(struct colormap * cm)
 {
    struct colordesc *cd;
    struct colordesc *new;
-   size_t n;
+   size_t      n;
 
    if (CISERR())
        return COLORLESS;
 
-   if (cm->free != 0) {
+   if (cm->free != 0)
+   {
        assert(cm->free > 0);
-       assert((size_t)cm->free < cm->ncds);
+       assert((size_t) cm->free < cm->ncds);
        cd = &cm->cd[cm->free];
        assert(UNUSEDCOLOR(cd));
        assert(cd->arcs == NULL);
        cm->free = cd->sub;
-   } else if (cm->max < cm->ncds - 1) {
+   }
+   else if (cm->max < cm->ncds - 1)
+   {
        cm->max++;
        cd = &cm->cd[cm->max];
-   } else {
+   }
+   else
+   {
        /* oops, must allocate more */
        n = cm->ncds * 2;
-       if (cm->cd == cm->cdspace) {
-           new = (struct colordesc *)MALLOC(n *
-                       sizeof(struct colordesc));
+       if (cm->cd == cm->cdspace)
+       {
+           new = (struct colordesc *) MALLOC(n *
+                                             sizeof(struct colordesc));
            if (new != NULL)
                memcpy(VS(new), VS(cm->cdspace), cm->ncds *
-                       sizeof(struct colordesc));
-       } else
-           new = (struct colordesc *)REALLOC(cm->cd,
-                       n * sizeof(struct colordesc));
-       if (new == NULL) {
+                      sizeof(struct colordesc));
+       }
+       else
+           new = (struct colordesc *) REALLOC(cm->cd,
+                                          n * sizeof(struct colordesc));
+       if (new == NULL)
+       {
            CERR(REG_ESPACE);
            return COLORLESS;
        }
@@ -257,18 +275,19 @@ newcolor(struct colormap *cm)
    cd->flags = 0;
    cd->block = NULL;
 
-   return (color)(cd - cm->cd);
+   return (color) (cd - cm->cd);
 }
 
 /*
  * freecolor - free a color (must have no arcs or subcolor)
  */
 static void
-freecolor(struct colormap *cm,
+freecolor(struct colormap * cm,
          pcolor co)
 {
    struct colordesc *cd = &cm->cd[co];
-   color pco, nco;         /* for freelist scan */
+   color       pco,
+               nco;            /* for freelist scan */
 
    assert(co >= 0);
    if (co == WHITE)
@@ -278,35 +297,43 @@ freecolor(struct colormap *cm,
    assert(cd->sub == NOSUB);
    assert(cd->nchrs == 0);
    cd->flags = FREECOL;
-   if (cd->block != NULL) {
+   if (cd->block != NULL)
+   {
        FREE(cd->block);
-       cd->block = NULL;   /* just paranoia */
+       cd->block = NULL;       /* just paranoia */
    }
 
-   if ((size_t)co == cm->max) {
+   if ((size_t) co == cm->max)
+   {
        while (cm->max > WHITE && UNUSEDCOLOR(&cm->cd[cm->max]))
            cm->max--;
        assert(cm->free >= 0);
-       while ((size_t)cm->free > cm->max)
+       while ((size_t) cm->free > cm->max)
            cm->free = cm->cd[cm->free].sub;
-       if (cm->free > 0) {
+       if (cm->free > 0)
+       {
            assert(cm->free < cm->max);
            pco = cm->free;
            nco = cm->cd[pco].sub;
            while (nco > 0)
-               if ((size_t)nco > cm->max) {
+               if ((size_t) nco > cm->max)
+               {
                    /* take this one out of freelist */
                    nco = cm->cd[nco].sub;
                    cm->cd[pco].sub = nco;
-               } else {
+               }
+               else
+               {
                    assert(nco < cm->max);
                    pco = nco;
                    nco = cm->cd[pco].sub;
                }
        }
-   } else {
+   }
+   else
+   {
        cd->sub = cm->free;
-       cm->free = (color)(cd - cm->cd);
+       cm->free = (color) (cd - cm->cd);
    }
 }
 
@@ -314,9 +341,9 @@ freecolor(struct colormap *cm,
  * pseudocolor - allocate a false color, to be managed by other means
  */
 static color
-pseudocolor(struct colormap *cm)
+pseudocolor(struct colormap * cm)
 {
-   color co;
+   color       co;
 
    co = newcolor(cm);
    if (CISERR())
@@ -330,10 +357,10 @@ pseudocolor(struct colormap *cm)
  * subcolor - allocate a new subcolor (if necessary) to this chr
  */
 static color
-subcolor(struct colormap *cm, chr c)
+subcolor(struct colormap * cm, chr c)
 {
-   color co;           /* current color of c */
-   color sco;          /* new subcolor */
+   color       co;             /* current color of c */
+   color       sco;            /* new subcolor */
 
    co = GETCOLOR(cm, c);
    sco = newsub(cm, co);
@@ -341,8 +368,8 @@ subcolor(struct colormap *cm, chr c)
        return COLORLESS;
    assert(sco != COLORLESS);
 
-   if (co == sco)      /* already in an open subcolor */
-       return co;  /* rest is redundant */
+   if (co == sco)              /* already in an open subcolor */
+       return co;              /* rest is redundant */
    cm->cd[co].nchrs--;
    cm->cd[sco].nchrs++;
    setcolor(cm, c, sco);
@@ -353,17 +380,19 @@ subcolor(struct colormap *cm, chr c)
  * newsub - allocate a new subcolor (if necessary) for a color
  */
 static color
-newsub(struct colormap *cm,
+newsub(struct colormap * cm,
       pcolor co)
 {
-   color sco;          /* new subcolor */
+   color       sco;            /* new subcolor */
 
    sco = cm->cd[co].sub;
-   if (sco == NOSUB) {     /* color has no open subcolor */
-       if (cm->cd[co].nchrs == 1)  /* optimization */
+   if (sco == NOSUB)
+   {                           /* color has no open subcolor */
+       if (cm->cd[co].nchrs == 1)      /* optimization */
            return co;
-       sco = newcolor(cm); /* must create subcolor */
-       if (sco == COLORLESS) {
+       sco = newcolor(cm);     /* must create subcolor */
+       if (sco == COLORLESS)
+       {
            assert(CISERR());
            return COLORLESS;
        }
@@ -379,23 +408,23 @@ newsub(struct colormap *cm,
  * subrange - allocate new subcolors to this range of chrs, fill in arcs
  */
 static void
-subrange(struct vars *v,
+subrange(struct vars * v,
         chr from,
         chr to,
-        struct state *lp,
-        struct state *rp)
+        struct state * lp,
+        struct state * rp)
 {
-   uchr uf;
-   int i;
+   uchr        uf;
+   int         i;
 
    assert(from <= to);
 
    /* first, align "from" on a tree-block boundary */
-   uf = (uchr)from;
-   i = (int)( ((uf + BYTTAB-1) & (uchr)~BYTMASK) - uf );
+   uf = (uchr) from;
+   i = (int) (((uf + BYTTAB - 1) & (uchr) ~ BYTMASK) - uf);
    for (; from <= to && i > 0; i--, from++)
        newarc(v->nfa, PLAIN, subcolor(v->cm, from), lp, rp);
-   if (from > to)          /* didn't reach a boundary */
+   if (from > to)              /* didn't reach a boundary */
        return;
 
    /* deal with whole blocks */
@@ -411,25 +440,25 @@ subrange(struct vars *v,
  * subblock - allocate new subcolors for one tree block of chrs, fill in arcs
  */
 static void
-subblock(struct vars *v,
+subblock(struct vars * v,
         chr start,             /* first of BYTTAB chrs */
-        struct state *lp,
-        struct state *rp)
+        struct state * lp,
+        struct state * rp)
 {
-   uchr uc = start;
+   uchr        uc = start;
    struct colormap *cm = v->cm;
-   int shift;
-   int level;
-   int i;
-   int b;
+   int         shift;
+   int         level;
+   int         i;
+   int         b;
    union tree *t;
    union tree *cb;
    union tree *fillt;
    union tree *lastt;
-   int previ;
-   int ndone;
-   color co;
-   color sco;
+   int         previ;
+   int         ndone;
+   color       co;
+   color       sco;
 
    assert((uc % BYTTAB) == 0);
 
@@ -437,20 +466,23 @@ subblock(struct vars *v,
    t = cm->tree;
    fillt = NULL;
    for (level = 0, shift = BYTBITS * (NBYTS - 1); shift > 0;
-                       level++, shift -= BYTBITS) {
+        level++, shift -= BYTBITS)
+   {
        b = (uc >> shift) & BYTMASK;
        lastt = t;
        t = lastt->tptr[b];
        assert(t != NULL);
-       fillt = &cm->tree[level+1];
-       if (t == fillt && shift > BYTBITS) {    /* need new ptr block */
-           t = (union tree *)MALLOC(sizeof(struct ptrs));
-           if (t == NULL) {
+       fillt = &cm->tree[level + 1];
+       if (t == fillt && shift > BYTBITS)
+       {                       /* need new ptr block */
+           t = (union tree *) MALLOC(sizeof(struct ptrs));
+           if (t == NULL)
+           {
                CERR(REG_ESPACE);
                return;
            }
            memcpy(VS(t->tptr), VS(fillt->tptr),
-                       BYTTAB*sizeof(union tree *));
+                  BYTTAB * sizeof(union tree *));
            lastt->tptr[b] = t;
        }
    }
@@ -458,13 +490,16 @@ subblock(struct vars *v,
    /* special cases:  fill block or solid block */
    co = t->tcolor[0];
    cb = cm->cd[co].block;
-   if (t == fillt || t == cb) {
+   if (t == fillt || t == cb)
+   {
        /* either way, we want a subcolor solid block */
        sco = newsub(cm, co);
        t = cm->cd[sco].block;
-       if (t == NULL) {    /* must set it up */
-           t = (union tree *)MALLOC(sizeof(struct colors));
-           if (t == NULL) {
+       if (t == NULL)
+       {                       /* must set it up */
+           t = (union tree *) MALLOC(sizeof(struct colors));
+           if (t == NULL)
+           {
                CERR(REG_ESPACE);
                return;
            }
@@ -482,12 +517,14 @@ subblock(struct vars *v,
 
    /* general case, a mixed block to be altered */
    i = 0;
-   while (i < BYTTAB) {
+   while (i < BYTTAB)
+   {
        co = t->tcolor[i];
        sco = newsub(cm, co);
        newarc(v->nfa, PLAIN, sco, lp, rp);
        previ = i;
-       do {
+       do
+       {
            t->tcolor[i++] = sco;
        } while (i < BYTTAB && t->tcolor[i] == co);
        ndone = i - previ;
@@ -500,30 +537,37 @@ subblock(struct vars *v,
  * okcolors - promote subcolors to full colors
  */
 static void
-okcolors(struct nfa *nfa,
-        struct colormap *cm)
+okcolors(struct nfa * nfa,
+        struct colormap * cm)
 {
    struct colordesc *cd;
    struct colordesc *end = CDEND(cm);
    struct colordesc *scd;
    struct arc *a;
-   color co;
-   color sco;
+   color       co;
+   color       sco;
 
-   for (cd = cm->cd, co = 0; cd < end; cd++, co++) {
+   for (cd = cm->cd, co = 0; cd < end; cd++, co++)
+   {
        sco = cd->sub;
-       if (UNUSEDCOLOR(cd) || sco == NOSUB) {
+       if (UNUSEDCOLOR(cd) || sco == NOSUB)
+       {
            /* has no subcolor, no further action */
-       } else if (sco == co) {
+       }
+       else if (sco == co)
+       {
            /* is subcolor, let parent deal with it */
-       } else if (cd->nchrs == 0) {
+       }
+       else if (cd->nchrs == 0)
+       {
            /* parent empty, its arcs change color to subcolor */
            cd->sub = NOSUB;
            scd = &cm->cd[sco];
            assert(scd->nchrs > 0);
            assert(scd->sub == sco);
            scd->sub = NOSUB;
-           while ((a = cd->arcs) != NULL) {
+           while ((a = cd->arcs) != NULL)
+           {
                assert(a->co == co);
                /* uncolorchain(cm, a); */
                cd->arcs = a->colorchain;
@@ -533,14 +577,17 @@ okcolors(struct nfa *nfa,
                scd->arcs = a;
            }
            freecolor(cm, co);
-       } else {
+       }
+       else
+       {
            /* parent's arcs must gain parallel subcolor arcs */
            cd->sub = NOSUB;
            scd = &cm->cd[sco];
            assert(scd->nchrs > 0);
            assert(scd->sub == sco);
            scd->sub = NOSUB;
-           for (a = cd->arcs; a != NULL; a = a->colorchain) {
+           for (a = cd->arcs; a != NULL; a = a->colorchain)
+           {
                assert(a->co == co);
                newarc(nfa, a->type, sco, a->from, a->to);
            }
@@ -552,8 +599,8 @@ okcolors(struct nfa *nfa,
  * colorchain - add this arc to the color chain of its color
  */
 static void
-colorchain(struct colormap *cm,
-          struct arc *a)
+colorchain(struct colormap * cm,
+          struct arc * a)
 {
    struct colordesc *cd = &cm->cd[a->co];
 
@@ -565,32 +612,33 @@ colorchain(struct colormap *cm,
  * uncolorchain - delete this arc from the color chain of its color
  */
 static void
-uncolorchain(struct colormap *cm,
-            struct arc *a)
+uncolorchain(struct colormap * cm,
+            struct arc * a)
 {
    struct colordesc *cd = &cm->cd[a->co];
    struct arc *aa;
 
    aa = cd->arcs;
-   if (aa == a)        /* easy case */
+   if (aa == a)                /* easy case */
        cd->arcs = a->colorchain;
-   else {
+   else
+   {
        for (; aa != NULL && aa->colorchain != a; aa = aa->colorchain)
            continue;
        assert(aa != NULL);
        aa->colorchain = a->colorchain;
    }
-   a->colorchain = NULL;   /* paranoia */
+   a->colorchain = NULL;       /* paranoia */
 }
 
 /*
  * singleton - is this character in its own color?
  */
-static int         /* predicate */
-singleton(struct colormap *cm,
+static int                     /* predicate */
+singleton(struct colormap * cm,
          chr c)
 {
-   color co;           /* color of c */
+   color       co;             /* color of c */
 
    co = GETCOLOR(cm, c);
    if (cm->cd[co].nchrs == 1 && cm->cd[co].sub == NOSUB)
@@ -602,20 +650,20 @@ singleton(struct colormap *cm,
  * rainbow - add arcs of all full colors (but one) between specified states
  */
 static void
-rainbow(struct nfa *nfa,
-       struct colormap *cm,
+rainbow(struct nfa * nfa,
+       struct colormap * cm,
        int type,
        pcolor but,             /* COLORLESS if no exceptions */
-       struct state *from,
-       struct state *to)
+       struct state * from,
+       struct state * to)
 {
    struct colordesc *cd;
    struct colordesc *end = CDEND(cm);
-   color co;
+   color       co;
 
    for (cd = cm->cd, co = 0; cd < end && !CISERR(); cd++, co++)
        if (!UNUSEDCOLOR(cd) && cd->sub != co && co != but &&
-                           !(cd->flags&PSEUDO))
+           !(cd->flags & PSEUDO))
            newarc(nfa, type, co, from, to);
 }
 
@@ -625,20 +673,21 @@ rainbow(struct nfa *nfa,
  * The calling sequence ought to be reconciled with cloneouts().
  */
 static void
-colorcomplement(struct nfa *nfa,
-               struct colormap *cm,
+colorcomplement(struct nfa * nfa,
+               struct colormap * cm,
                int type,
-               struct state *of, /* complements of this guy's PLAIN outarcs */
-               struct state *from,
-               struct state *to)
+               struct state * of,      /* complements of this guy's PLAIN
+                                        * outarcs */
+               struct state * from,
+               struct state * to)
 {
    struct colordesc *cd;
    struct colordesc *end = CDEND(cm);
-   color co;
+   color       co;
 
    assert(of != from);
    for (cd = cm->cd, co = 0; cd < end && !CISERR(); cd++, co++)
-       if (!UNUSEDCOLOR(cd) && !(cd->flags&PSEUDO))
+       if (!UNUSEDCOLOR(cd) && !(cd->flags & PSEUDO))
            if (findarc(of, PLAIN, co) == NULL)
                newarc(nfa, type, co, from, to);
 }
@@ -650,28 +699,29 @@ colorcomplement(struct nfa *nfa,
  * dumpcolors - debugging output
  */
 static void
-dumpcolors(struct colormap *cm,
+dumpcolors(struct colormap * cm,
           FILE *f)
 {
    struct colordesc *cd;
    struct colordesc *end;
-   color co;
-   chr c;
-   char *has;
+   color       co;
+   chr         c;
+   char       *has;
 
-   fprintf(f, "max %ld\n", (long)cm->max);
+   fprintf(f, "max %ld\n", (long) cm->max);
    if (NBYTS > 1)
        fillcheck(cm, cm->tree, 0, f);
    end = CDEND(cm);
-   for (cd = cm->cd + 1, co = 1; cd < end; cd++, co++) /* skip 0 */
-       if (!UNUSEDCOLOR(cd)) {
+   for (cd = cm->cd + 1, co = 1; cd < end; cd++, co++) /* skip 0 */
+       if (!UNUSEDCOLOR(cd))
+       {
            assert(cd->nchrs > 0);
            has = (cd->block != NULL) ? "#" : "";
-           if (cd->flags&PSEUDO)
-               fprintf(f, "#%2ld%s(ps): ", (long)co, has);
+           if (cd->flags & PSEUDO)
+               fprintf(f, "#%2ld%s(ps): ", (long) co, has);
            else
-               fprintf(f, "#%2ld%s(%2d): ", (long)co,
-                           has, cd->nchrs);
+               fprintf(f, "#%2ld%s(%2d): ", (long) co,
+                       has, cd->nchrs);
            /* it's hard to do this more efficiently */
            for (c = CHR_MIN; c < CHR_MAX; c++)
                if (GETCOLOR(cm, c) == co)
@@ -687,24 +737,26 @@ dumpcolors(struct colormap *cm,
  * fillcheck - check proper filling of a tree
  */
 static void
-fillcheck(struct colormap *cm,
-         union tree *tree,
+fillcheck(struct colormap * cm,
+         union tree * tree,
          int level,            /* level number (top == 0) of this block */
          FILE *f)
 {
-   int i;
+   int         i;
    union tree *t;
-   union tree *fillt = &cm->tree[level+1];
+   union tree *fillt = &cm->tree[level + 1];
 
-   assert(level < NBYTS-1);    /* this level has pointers */
-   for (i = BYTTAB-1; i >= 0; i--) {
+   assert(level < NBYTS - 1);  /* this level has pointers */
+   for (i = BYTTAB - 1; i >= 0; i--)
+   {
        t = tree->tptr[i];
        if (t == NULL)
            fprintf(f, "NULL found in filled tree!\n");
        else if (t == fillt)
-           {}
-       else if (level < NBYTS-2)   /* more pointer blocks below */
-           fillcheck(cm, t, level+1, f);
+       {
+       }
+       else if (level < NBYTS - 2)     /* more pointer blocks below */
+           fillcheck(cm, t, level + 1, f);
    }
 }
 
@@ -720,9 +772,9 @@ dumpchr(chr c,
    if (c == '\\')
        fprintf(f, "\\\\");
    else if (c > ' ' && c <= '~')
-       putc((char)c, f);
+       putc((char) c, f);
    else
-       fprintf(f, "\\u%04lx", (long)c);
+       fprintf(f, "\\u%04lx", (long) c);
 }
 
-#endif /* REG_DEBUG */
+#endif   /* REG_DEBUG */
index 3b4e6ddb61b0746b31849c707f3165f861a97c99..502bbeeca7e00166d2127fff751c39d66b1b035e 100644 (file)
@@ -2,21 +2,21 @@
  * Utility functions for handling cvecs
  * This file is #included by regcomp.c.
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -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.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regc_cvec.c,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regc_cvec.c,v 1.2 2003/08/04 00:43:21 momjian Exp $
  *
  */
 
@@ -40,23 +40,24 @@ newcvec(int nchrs,              /* to hold this many chrs... */
        int nranges,            /* ... and this many ranges... */
        int nmcces)             /* ... and this many MCCEs */
 {
-    size_t n;
-    size_t nc;
-    struct cvec *cv;
-
-    nc = (size_t)nchrs + (size_t)nmcces*(MAXMCCE+1) + (size_t)nranges*2;
-    n = sizeof(struct cvec) + (size_t)(nmcces-1)*sizeof(chr *)
-       + nc*sizeof(chr);
-    cv = (struct cvec *)MALLOC(n);
-    if (cv == NULL) {
-   return NULL;
-    }
-    cv->chrspace = nchrs;
-    cv->chrs = (chr *)&cv->mcces[nmcces];  /* chrs just after MCCE ptrs */
-    cv->mccespace = nmcces;
-    cv->ranges = cv->chrs + nchrs + nmcces*(MAXMCCE+1);
-    cv->rangespace = nranges;
-    return clearcvec(cv);
+   size_t      n;
+   size_t      nc;
+   struct cvec *cv;
+
+   nc = (size_t) nchrs + (size_t) nmcces *(MAXMCCE + 1) + (size_t) nranges *2;
+
+   n = sizeof(struct cvec) + (size_t) (nmcces - 1) * sizeof(chr *)
+       + nc * sizeof(chr);
+   cv = (struct cvec *) MALLOC(n);
+   if (cv == NULL)
+       return NULL;
+   cv->chrspace = nchrs;
+   cv->chrs = (chr *) & cv->mcces[nmcces];     /* chrs just after MCCE
+                                                * ptrs */
+   cv->mccespace = nmcces;
+   cv->ranges = cv->chrs + nchrs + nmcces * (MAXMCCE + 1);
+   cv->rangespace = nranges;
+   return clearcvec(cv);
 }
 
 /*
@@ -64,131 +65,125 @@ newcvec(int nchrs,                /* to hold this many chrs... */
  * Returns pointer as convenience.
  */
 static struct cvec *
-clearcvec(struct cvec *cv)
+clearcvec(struct cvec * cv)
 {
-    int i;
-
-    assert(cv != NULL);
-    cv->nchrs = 0;
-    assert(cv->chrs == (chr *)&cv->mcces[cv->mccespace]);
-    cv->nmcces = 0;
-    cv->nmccechrs = 0;
-    cv->nranges = 0;
-    for (i = 0; i < cv->mccespace; i++) {
-   cv->mcces[i] = NULL;
-    }
-
-    return cv;
+   int         i;
+
+   assert(cv != NULL);
+   cv->nchrs = 0;
+   assert(cv->chrs == (chr *) & cv->mcces[cv->mccespace]);
+   cv->nmcces = 0;
+   cv->nmccechrs = 0;
+   cv->nranges = 0;
+   for (i = 0; i < cv->mccespace; i++)
+       cv->mcces[i] = NULL;
+
+   return cv;
 }
 
 /*
  * addchr - add a chr to a cvec
  */
 static void
-addchr(struct cvec *cv,            /* character vector */
-      chr c)               /* character to add */
+addchr(struct cvec * cv,       /* character vector */
+      chr c)                   /* character to add */
 {
-    assert(cv->nchrs < cv->chrspace - cv->nmccechrs);
-    cv->chrs[cv->nchrs++] = (chr)c;
+   assert(cv->nchrs < cv->chrspace - cv->nmccechrs);
+   cv->chrs[cv->nchrs++] = (chr) c;
 }
 
 /*
  * addrange - add a range to a cvec
  */
 static void
-addrange(struct cvec *cv,          /* character vector */
+addrange(struct cvec * cv,     /* character vector */
         chr from,              /* first character of range */
         chr to)                /* last character of range */
 {
-    assert(cv->nranges < cv->rangespace);
-    cv->ranges[cv->nranges*2] = (chr)from;
-    cv->ranges[cv->nranges*2 + 1] = (chr)to;
-    cv->nranges++;
+   assert(cv->nranges < cv->rangespace);
+   cv->ranges[cv->nranges * 2] = (chr) from;
+   cv->ranges[cv->nranges * 2 + 1] = (chr) to;
+   cv->nranges++;
 }
 
 /*
  * addmcce - add an MCCE to a cvec
  */
 static void
-addmcce(struct cvec *cv,           /* character vector */
-       chr *startp,            /* beginning of text */
-       chr *endp)              /* just past end of text */
+addmcce(struct cvec * cv,      /* character vector */
+       chr * startp,           /* beginning of text */
+       chr * endp)             /* just past end of text */
 {
-    int len;
-    int i;
-    chr *s;
-    chr *d;
-
-    if (startp == NULL && endp == NULL) {
-   return;
-    }
-    len = endp - startp;
-    assert(len > 0);
-    assert(cv->nchrs + len < cv->chrspace - cv->nmccechrs);
-    assert(cv->nmcces < cv->mccespace);
-    d = &cv->chrs[cv->chrspace - cv->nmccechrs - len - 1];
-    cv->mcces[cv->nmcces++] = d;
-    for (s = startp, i = len; i > 0; s++, i--) {
-   *d++ = *s;
-    }
-    *d++ = 0;              /* endmarker */
-    assert(d == &cv->chrs[cv->chrspace - cv->nmccechrs]);
-    cv->nmccechrs += len + 1;
+   int         len;
+   int         i;
+   chr        *s;
+   chr        *d;
+
+   if (startp == NULL && endp == NULL)
+       return;
+   len = endp - startp;
+   assert(len > 0);
+   assert(cv->nchrs + len < cv->chrspace - cv->nmccechrs);
+   assert(cv->nmcces < cv->mccespace);
+   d = &cv->chrs[cv->chrspace - cv->nmccechrs - len - 1];
+   cv->mcces[cv->nmcces++] = d;
+   for (s = startp, i = len; i > 0; s++, i--)
+       *d++ = *s;
+   *d++ = 0;                   /* endmarker */
+   assert(d == &cv->chrs[cv->chrspace - cv->nmccechrs]);
+   cv->nmccechrs += len + 1;
 }
 
 /*
  * haschr - does a cvec contain this chr?
  */
-static int             /* predicate */
-haschr(struct cvec *cv,            /* character vector */
-      chr c)               /* character to test for */
+static int                     /* predicate */
+haschr(struct cvec * cv,       /* character vector */
+      chr c)                   /* character to test for */
 {
-    int i;
-    chr *p;
+   int         i;
+   chr        *p;
 
-    for (p = cv->chrs, i = cv->nchrs; i > 0; p++, i--) {
-   if (*p == c) {
-       return 1;
+   for (p = cv->chrs, i = cv->nchrs; i > 0; p++, i--)
+   {
+       if (*p == c)
+           return 1;
    }
-    }
-    for (p = cv->ranges, i = cv->nranges; i > 0; p += 2, i--) {
-   if ((*p <= c) && (c <= *(p+1))) {
-       return 1;
+   for (p = cv->ranges, i = cv->nranges; i > 0; p += 2, i--)
+   {
+       if ((*p <= c) && (c <= *(p + 1)))
+           return 1;
    }
-    }
-    return 0;
+   return 0;
 }
 
 /*
  * getcvec - get a cvec, remembering it as v->cv
  */
 static struct cvec *
-getcvec(struct vars *v,            /* context */
+getcvec(struct vars * v,       /* context */
        int nchrs,              /* to hold this many chrs... */
        int nranges,            /* ... and this many ranges... */
        int nmcces)             /* ... and this many MCCEs */
 {
-    if (v->cv != NULL && nchrs <= v->cv->chrspace &&
-       nranges <= v->cv->rangespace && nmcces <= v->cv->mccespace) {
-   return clearcvec(v->cv);
-    }
-
-    if (v->cv != NULL) {
-   freecvec(v->cv);
-    }
-    v->cv = newcvec(nchrs, nranges, nmcces);
-    if (v->cv == NULL) {
-   ERR(REG_ESPACE);
-    }
-
-    return v->cv;
+   if (v->cv != NULL && nchrs <= v->cv->chrspace &&
+       nranges <= v->cv->rangespace && nmcces <= v->cv->mccespace)
+       return clearcvec(v->cv);
+
+   if (v->cv != NULL)
+       freecvec(v->cv);
+   v->cv = newcvec(nchrs, nranges, nmcces);
+   if (v->cv == NULL)
+       ERR(REG_ESPACE);
+
+   return v->cv;
 }
 
 /*
  * freecvec - free a cvec
  */
 static void
-freecvec(struct cvec *cv)
+freecvec(struct cvec * cv)
 {
-    FREE(cv);
+   FREE(cv);
 }
index 2f1a5840ff29b8ccf0fc5179b9de07f6841692e1..2407e06ef47443cc2e524ef12101488c872e1598 100644 (file)
@@ -2,21 +2,21 @@
  * lexical analyzer
  * This file is #included by regcomp.c.
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regc_lex.c,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regc_lex.c,v 1.2 2003/08/04 00:43:21 momjian Exp $
  *
  */
 
 /* scanning macros (know about v) */
-#define    ATEOS()     (v->now >= v->stop)
-#define    HAVE(n)     (v->stop - v->now >= (n))
-#define    NEXT1(c)    (!ATEOS() && *v->now == CHR(c))
-#define    NEXT2(a,b)  (HAVE(2) && *v->now == CHR(a) && *(v->now+1) == CHR(b))
-#define    NEXT3(a,b,c)    (HAVE(3) && *v->now == CHR(a) && \
+#define ATEOS()        (v->now >= v->stop)
+#define HAVE(n)        (v->stop - v->now >= (n))
+#define NEXT1(c)   (!ATEOS() && *v->now == CHR(c))
+#define NEXT2(a,b) (HAVE(2) && *v->now == CHR(a) && *(v->now+1) == CHR(b))
+#define NEXT3(a,b,c)   (HAVE(3) && *v->now == CHR(a) && \
                        *(v->now+1) == CHR(b) && \
                        *(v->now+2) == CHR(c))
-#define    SET(c)      (v->nexttype = (c))
-#define    SETV(c, n)  (v->nexttype = (c), v->nextvalue = (n))
-#define    RET(c)      return (SET(c), 1)
-#define    RETV(c, n)  return (SETV(c, n), 1)
-#define    FAILW(e)    return (ERR(e), 0)  /* ERR does SET(EOS) */
-#define    LASTTYPE(t) (v->lasttype == (t))
+#define SET(c)     (v->nexttype = (c))
+#define SETV(c, n) (v->nexttype = (c), v->nextvalue = (n))
+#define RET(c)     return (SET(c), 1)
+#define RETV(c, n) return (SETV(c, n), 1)
+#define FAILW(e)   return (ERR(e), 0)  /* ERR does SET(EOS) */
+#define LASTTYPE(t) (v->lasttype == (t))
 
 /* lexical contexts */
-#define    L_ERE   1   /* mainline ERE/ARE */
-#define    L_BRE   2   /* mainline BRE */
-#define    L_Q 3   /* REG_QUOTE */
-#define    L_EBND  4   /* ERE/ARE bound */
-#define    L_BBND  5   /* BRE bound */
-#define    L_BRACK 6   /* brackets */
-#define    L_CEL   7   /* collating element */
-#define    L_ECL   8   /* equivalence class */
-#define    L_CCL   9   /* character class */
-#define    INTOCON(c)  (v->lexcon = (c))
-#define    INCON(con)  (v->lexcon == (con))
+#define L_ERE  1               /* mainline ERE/ARE */
+#define L_BRE  2               /* mainline BRE */
+#define L_Q 3                  /* REG_QUOTE */
+#define L_EBND 4               /* ERE/ARE bound */
+#define L_BBND 5               /* BRE bound */
+#define L_BRACK 6              /* brackets */
+#define L_CEL  7               /* collating element */
+#define L_ECL  8               /* equivalence class */
+#define L_CCL  9               /* character class */
+#define INTOCON(c) (v->lexcon = (c))
+#define INCON(con) (v->lexcon == (con))
 
 /* construct pointer past end of chr array */
-#define    ENDOF(array)    ((array) + sizeof(array)/sizeof(chr))
+#define ENDOF(array)   ((array) + sizeof(array)/sizeof(chr))
 
 /*
  * lexstart - set up lexical stuff, scan leading options
  */
 static void
-lexstart(struct vars *v)
+lexstart(struct vars * v)
 {
-   prefixes(v);            /* may turn on new type bits etc. */
+   prefixes(v);                /* may turn on new type bits etc. */
    NOERR();
 
-   if (v->cflags&REG_QUOTE) {
-       assert(!(v->cflags&(REG_ADVANCED|REG_EXPANDED|REG_NEWLINE)));
+   if (v->cflags & REG_QUOTE)
+   {
+       assert(!(v->cflags & (REG_ADVANCED | REG_EXPANDED | REG_NEWLINE)));
        INTOCON(L_Q);
-   } else if (v->cflags&REG_EXTENDED) {
-       assert(!(v->cflags&REG_QUOTE));
+   }
+   else if (v->cflags & REG_EXTENDED)
+   {
+       assert(!(v->cflags & REG_QUOTE));
        INTOCON(L_ERE);
-   } else {
-       assert(!(v->cflags&(REG_QUOTE|REG_ADVF)));
+   }
+   else
+   {
+       assert(!(v->cflags & (REG_QUOTE | REG_ADVF)));
        INTOCON(L_BRE);
    }
 
    v->nexttype = EMPTY;        /* remember we were at the start */
-   next(v);            /* set up the first token */
+   next(v);                    /* set up the first token */
 }
 
 /*
  * prefixes - implement various special prefixes
  */
 static void
-prefixes(struct vars *v)
+prefixes(struct vars * v)
 {
    /* literal string doesn't get any of this stuff */
-   if (v->cflags&REG_QUOTE)
+   if (v->cflags & REG_QUOTE)
        return;
 
-   /* initial "***" gets special things */ 
+   /* initial "***" gets special things */
    if (HAVE(4) && NEXT3('*', '*', '*'))
-       switch (*(v->now + 3)) {
-       case CHR('?'):      /* "***?" error, msg shows version */
-           ERR(REG_BADPAT);
-           return;     /* proceed no further */
-           break;
-       case CHR('='):      /* "***=" shifts to literal string */
-           NOTE(REG_UNONPOSIX);
-           v->cflags |= REG_QUOTE;
-           v->cflags &= ~(REG_ADVANCED|REG_EXPANDED|REG_NEWLINE);
-           v->now += 4;
-           return;     /* and there can be no more prefixes */
-           break;
-       case CHR(':'):      /* "***:" shifts to AREs */
-           NOTE(REG_UNONPOSIX);
-           v->cflags |= REG_ADVANCED;
-           v->now += 4;
-           break;
-       default:        /* otherwise *** is just an error */
-           ERR(REG_BADRPT);
-           return;
-           break;
+       switch (*(v->now + 3))
+       {
+           case CHR('?'):      /* "***?" error, msg shows version */
+               ERR(REG_BADPAT);
+               return;         /* proceed no further */
+               break;
+           case CHR('='):      /* "***=" shifts to literal string */
+               NOTE(REG_UNONPOSIX);
+               v->cflags |= REG_QUOTE;
+               v->cflags &= ~(REG_ADVANCED | REG_EXPANDED | REG_NEWLINE);
+               v->now += 4;
+               return;         /* and there can be no more prefixes */
+               break;
+           case CHR(':'):      /* "***:" shifts to AREs */
+               NOTE(REG_UNONPOSIX);
+               v->cflags |= REG_ADVANCED;
+               v->now += 4;
+               break;
+           default:            /* otherwise *** is just an error */
+               ERR(REG_BADRPT);
+               return;
+               break;
        }
 
    /* BREs and EREs don't get embedded options */
-   if ((v->cflags&REG_ADVANCED) != REG_ADVANCED)
+   if ((v->cflags & REG_ADVANCED) != REG_ADVANCED)
        return;
 
    /* embedded options (AREs only) */
-   if (HAVE(3) && NEXT2('(', '?') && iscalpha(*(v->now + 2))) {
+   if (HAVE(3) && NEXT2('(', '?') && iscalpha(*(v->now + 2)))
+   {
        NOTE(REG_UNONPOSIX);
        v->now += 2;
        for (; !ATEOS() && iscalpha(*v->now); v->now++)
-           switch (*v->now) {
-           case CHR('b'):      /* BREs (but why???) */
-               v->cflags &= ~(REG_ADVANCED|REG_QUOTE);
-               break;
-           case CHR('c'):      /* case sensitive */
-               v->cflags &= ~REG_ICASE;
-               break;
-           case CHR('e'):      /* plain EREs */
-               v->cflags |= REG_EXTENDED;
-               v->cflags &= ~(REG_ADVF|REG_QUOTE);
-               break;
-           case CHR('i'):      /* case insensitive */
-               v->cflags |= REG_ICASE;
-               break;
-           case CHR('m'):      /* Perloid synonym for n */
-           case CHR('n'):      /* \n affects ^ $ . [^ */
-               v->cflags |= REG_NEWLINE;
-               break;
-           case CHR('p'):      /* ~Perl, \n affects . [^ */
-               v->cflags |= REG_NLSTOP;
-               v->cflags &= ~REG_NLANCH;
-               break;
-           case CHR('q'):      /* literal string */
-               v->cflags |= REG_QUOTE;
-               v->cflags &= ~REG_ADVANCED;
-               break;
-           case CHR('s'):      /* single line, \n ordinary */
-               v->cflags &= ~REG_NEWLINE;
-               break;
-           case CHR('t'):      /* tight syntax */
-               v->cflags &= ~REG_EXPANDED;
-               break;
-           case CHR('w'):      /* weird, \n affects ^ $ only */
-               v->cflags &= ~REG_NLSTOP;
-               v->cflags |= REG_NLANCH;
-               break;
-           case CHR('x'):      /* expanded syntax */
-               v->cflags |= REG_EXPANDED;
-               break;
-           default:
-               ERR(REG_BADOPT);
-               return;
+           switch (*v->now)
+           {
+               case CHR('b'):  /* BREs (but why???) */
+                   v->cflags &= ~(REG_ADVANCED | REG_QUOTE);
+                   break;
+               case CHR('c'):  /* case sensitive */
+                   v->cflags &= ~REG_ICASE;
+                   break;
+               case CHR('e'):  /* plain EREs */
+                   v->cflags |= REG_EXTENDED;
+                   v->cflags &= ~(REG_ADVF | REG_QUOTE);
+                   break;
+               case CHR('i'):  /* case insensitive */
+                   v->cflags |= REG_ICASE;
+                   break;
+               case CHR('m'):  /* Perloid synonym for n */
+               case CHR('n'):  /* \n affects ^ $ . [^ */
+                   v->cflags |= REG_NEWLINE;
+                   break;
+               case CHR('p'):  /* ~Perl, \n affects . [^ */
+                   v->cflags |= REG_NLSTOP;
+                   v->cflags &= ~REG_NLANCH;
+                   break;
+               case CHR('q'):  /* literal string */
+                   v->cflags |= REG_QUOTE;
+                   v->cflags &= ~REG_ADVANCED;
+                   break;
+               case CHR('s'):  /* single line, \n ordinary */
+                   v->cflags &= ~REG_NEWLINE;
+                   break;
+               case CHR('t'):  /* tight syntax */
+                   v->cflags &= ~REG_EXPANDED;
+                   break;
+               case CHR('w'):  /* weird, \n affects ^ $ only */
+                   v->cflags &= ~REG_NLSTOP;
+                   v->cflags |= REG_NLANCH;
+                   break;
+               case CHR('x'):  /* expanded syntax */
+                   v->cflags |= REG_EXPANDED;
+                   break;
+               default:
+                   ERR(REG_BADOPT);
+                   return;
            }
-       if (!NEXT1(')')) {
+       if (!NEXT1(')'))
+       {
            ERR(REG_BADOPT);
            return;
        }
        v->now++;
-       if (v->cflags&REG_QUOTE)
-           v->cflags &= ~(REG_EXPANDED|REG_NEWLINE);
+       if (v->cflags & REG_QUOTE)
+           v->cflags &= ~(REG_EXPANDED | REG_NEWLINE);
    }
 }
 
@@ -191,11 +200,11 @@ prefixes(struct vars *v)
  * implicit assumptions about what sorts of strings can be subroutines.
  */
 static void
-lexnest(struct vars *v,
-       chr *beginp,                /* start of interpolation */
-       chr *endp)              /* one past end of interpolation */
+lexnest(struct vars * v,
+       chr * beginp,           /* start of interpolation */
+       chr * endp)             /* one past end of interpolation */
 {
-   assert(v->savenow == NULL); /* only one level of nesting */
+   assert(v->savenow == NULL); /* only one level of nesting */
    v->savenow = v->now;
    v->savestop = v->stop;
    v->now = beginp;
@@ -205,47 +214,47 @@ lexnest(struct vars *v,
 /*
  * string constants to interpolate as expansions of things like \d
  */
-static chr backd[] = {     /* \d */
+static chr backd[] = {         /* \d */
    CHR('['), CHR('['), CHR(':'),
    CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'),
    CHR(':'), CHR(']'), CHR(']')
 };
-static chr backD[] = {     /* \D */
+static chr backD[] = {         /* \D */
    CHR('['), CHR('^'), CHR('['), CHR(':'),
    CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'),
    CHR(':'), CHR(']'), CHR(']')
 };
-static chr brbackd[] = {   /* \d within brackets */
+static chr brbackd[] = {       /* \d within brackets */
    CHR('['), CHR(':'),
    CHR('d'), CHR('i'), CHR('g'), CHR('i'), CHR('t'),
    CHR(':'), CHR(']')
 };
-static chr backs[] = {     /* \s */
+static chr backs[] = {         /* \s */
    CHR('['), CHR('['), CHR(':'),
    CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'),
    CHR(':'), CHR(']'), CHR(']')
 };
-static chr backS[] = {     /* \S */
+static chr backS[] = {         /* \S */
    CHR('['), CHR('^'), CHR('['), CHR(':'),
    CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'),
    CHR(':'), CHR(']'), CHR(']')
 };
-static chr brbacks[] = {   /* \s within brackets */
+static chr brbacks[] = {       /* \s within brackets */
    CHR('['), CHR(':'),
    CHR('s'), CHR('p'), CHR('a'), CHR('c'), CHR('e'),
    CHR(':'), CHR(']')
 };
-static chr backw[] = {     /* \w */
+static chr backw[] = {         /* \w */
    CHR('['), CHR('['), CHR(':'),
    CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'),
    CHR(':'), CHR(']'), CHR('_'), CHR(']')
 };
-static chr backW[] = {     /* \W */
+static chr backW[] = {         /* \W */
    CHR('['), CHR('^'), CHR('['), CHR(':'),
    CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'),
    CHR(':'), CHR(']'), CHR('_'), CHR(']')
 };
-static chr brbackw[] = {   /* \w within brackets */
+static chr brbackw[] = {       /* \w within brackets */
    CHR('['), CHR(':'),
    CHR('a'), CHR('l'), CHR('n'), CHR('u'), CHR('m'),
    CHR(':'), CHR(']'), CHR('_')
@@ -256,7 +265,7 @@ static chr brbackw[] = {    /* \w within brackets */
  * Possibly ought to inquire whether there is a "word" character class.
  */
 static void
-lexword(struct vars *v)
+lexword(struct vars * v)
 {
    lexnest(v, backw, ENDOF(backw));
 }
@@ -264,60 +273,65 @@ lexword(struct vars *v)
 /*
  * next - get next token
  */
-static int         /* 1 normal, 0 failure */
-next(struct vars *v)
+static int                     /* 1 normal, 0 failure */
+next(struct vars * v)
 {
-   chr c;
+   chr         c;
 
    /* errors yield an infinite sequence of failures */
    if (ISERR())
-       return 0;   /* the error has set nexttype to EOS */
+       return 0;               /* the error has set nexttype to EOS */
 
    /* remember flavor of last token */
    v->lasttype = v->nexttype;
 
    /* REG_BOSONLY */
-   if (v->nexttype == EMPTY && (v->cflags&REG_BOSONLY)) {
+   if (v->nexttype == EMPTY && (v->cflags & REG_BOSONLY))
+   {
        /* at start of a REG_BOSONLY RE */
        RETV(SBEGIN, 0);        /* same as \A */
    }
 
    /* if we're nested and we've hit end, return to outer level */
-   if (v->savenow != NULL && ATEOS()) {
+   if (v->savenow != NULL && ATEOS())
+   {
        v->now = v->savenow;
        v->stop = v->savestop;
        v->savenow = v->savestop = NULL;
    }
 
    /* skip white space etc. if appropriate (not in literal or []) */
-   if (v->cflags&REG_EXPANDED)
-       switch (v->lexcon) {
-       case L_ERE:
-       case L_BRE:
-       case L_EBND:
-       case L_BBND:
-           skip(v);
-           break;
+   if (v->cflags & REG_EXPANDED)
+       switch (v->lexcon)
+       {
+           case L_ERE:
+           case L_BRE:
+           case L_EBND:
+           case L_BBND:
+               skip(v);
+               break;
        }
 
    /* handle EOS, depending on context */
-   if (ATEOS()) {
-       switch (v->lexcon) {
-       case L_ERE:
-       case L_BRE:
-       case L_Q:
-           RET(EOS);
-           break;
-       case L_EBND:
-       case L_BBND:
-           FAILW(REG_EBRACE);
-           break;
-       case L_BRACK:
-       case L_CEL:
-       case L_ECL:
-       case L_CCL:
-           FAILW(REG_EBRACK);
-           break;
+   if (ATEOS())
+   {
+       switch (v->lexcon)
+       {
+           case L_ERE:
+           case L_BRE:
+           case L_Q:
+               RET(EOS);
+               break;
+           case L_EBND:
+           case L_BBND:
+               FAILW(REG_EBRACE);
+               break;
+           case L_BRACK:
+           case L_CEL:
+           case L_ECL:
+           case L_CCL:
+               FAILW(REG_EBRACK);
+               break;
        }
        assert(NOTREACHED);
    }
@@ -326,314 +340,365 @@ next(struct vars *v)
    c = *v->now++;
 
    /* deal with the easy contexts, punt EREs to code below */
-   switch (v->lexcon) {
-   case L_BRE:         /* punt BREs to separate function */
-       return brenext(v, c);
-       break;
-   case L_ERE:         /* see below */
-       break;
-   case L_Q:           /* literal strings are easy */
-       RETV(PLAIN, c);
-       break;
-   case L_BBND:            /* bounds are fairly simple */
-   case L_EBND:
-       switch (c) {
-       case CHR('0'): case CHR('1'): case CHR('2'): case CHR('3'):
-       case CHR('4'): case CHR('5'): case CHR('6'): case CHR('7'):
-       case CHR('8'): case CHR('9'):
-           RETV(DIGIT, (chr)DIGITVAL(c));
+   switch (v->lexcon)
+   {
+       case L_BRE:             /* punt BREs to separate function */
+           return brenext(v, c);
            break;
-       case CHR(','):
-           RET(',');
+       case L_ERE:             /* see below */
            break;
-       case CHR('}'):      /* ERE bound ends with } */
-           if (INCON(L_EBND)) {
-               INTOCON(L_ERE);
-               if ((v->cflags&REG_ADVF) && NEXT1('?')) {
-                   v->now++;
-                   NOTE(REG_UNONPOSIX);
-                   RETV('}', 0);
-               }
-               RETV('}', 1);
-           } else
-               FAILW(REG_BADBR);
-           break;
-       case CHR('\\'):     /* BRE bound ends with \} */
-           if (INCON(L_BBND) && NEXT1('}')) {
-               v->now++;
-               INTOCON(L_BRE);
-               RET('}');
-           } else
-               FAILW(REG_BADBR);
-           break;
-       default:
-           FAILW(REG_BADBR);
+       case L_Q:               /* literal strings are easy */
+           RETV(PLAIN, c);
            break;
-       }
-       assert(NOTREACHED);
-       break;
-   case L_BRACK:           /* brackets are not too hard */
-       switch (c) {
-       case CHR(']'):
-           if (LASTTYPE('['))
-               RETV(PLAIN, c);
-           else {
-               INTOCON((v->cflags&REG_EXTENDED) ?
-                           L_ERE : L_BRE);
-               RET(']');
+       case L_BBND:            /* bounds are fairly simple */
+       case L_EBND:
+           switch (c)
+           {
+               case CHR('0'):
+               case CHR('1'):
+               case CHR('2'):
+               case CHR('3'):
+               case CHR('4'):
+               case CHR('5'):
+               case CHR('6'):
+               case CHR('7'):
+               case CHR('8'):
+               case CHR('9'):
+                   RETV(DIGIT, (chr) DIGITVAL(c));
+                   break;
+               case CHR(','):
+                   RET(',');
+                   break;
+               case CHR('}'):  /* ERE bound ends with } */
+                   if (INCON(L_EBND))
+                   {
+                       INTOCON(L_ERE);
+                       if ((v->cflags & REG_ADVF) && NEXT1('?'))
+                       {
+                           v->now++;
+                           NOTE(REG_UNONPOSIX);
+                           RETV('}', 0);
+                       }
+                       RETV('}', 1);
+                   }
+                   else
+                       FAILW(REG_BADBR);
+                   break;
+               case CHR('\\'): /* BRE bound ends with \} */
+                   if (INCON(L_BBND) && NEXT1('}'))
+                   {
+                       v->now++;
+                       INTOCON(L_BRE);
+                       RET('}');
+                   }
+                   else
+                       FAILW(REG_BADBR);
+                   break;
+               default:
+                   FAILW(REG_BADBR);
+                   break;
            }
+           assert(NOTREACHED);
            break;
-       case CHR('\\'):
-           NOTE(REG_UBBS);
-           if (!(v->cflags&REG_ADVF))
-               RETV(PLAIN, c);
-           NOTE(REG_UNONPOSIX);
-           if (ATEOS())
-               FAILW(REG_EESCAPE);
-           (DISCARD)lexescape(v);
-           switch (v->nexttype) {  /* not all escapes okay here */
-           case PLAIN:
-               return 1;
-               break;
-           case CCLASS:
-               switch (v->nextvalue) {
-               case 'd':
-                   lexnest(v, brbackd, ENDOF(brbackd));
+       case L_BRACK:           /* brackets are not too hard */
+           switch (c)
+           {
+               case CHR(']'):
+                   if (LASTTYPE('['))
+                       RETV(PLAIN, c);
+                   else
+                   {
+                       INTOCON((v->cflags & REG_EXTENDED) ?
+                               L_ERE : L_BRE);
+                       RET(']');
+                   }
+                   break;
+               case CHR('\\'):
+                   NOTE(REG_UBBS);
+                   if (!(v->cflags & REG_ADVF))
+                       RETV(PLAIN, c);
+                   NOTE(REG_UNONPOSIX);
+                   if (ATEOS())
+                       FAILW(REG_EESCAPE);
+                   (DISCARD) lexescape(v);
+                   switch (v->nexttype)
+                   {           /* not all escapes okay here */
+                       case PLAIN:
+                           return 1;
+                           break;
+                       case CCLASS:
+                           switch (v->nextvalue)
+                           {
+                               case 'd':
+                                   lexnest(v, brbackd, ENDOF(brbackd));
+                                   break;
+                               case 's':
+                                   lexnest(v, brbacks, ENDOF(brbacks));
+                                   break;
+                               case 'w':
+                                   lexnest(v, brbackw, ENDOF(brbackw));
+                                   break;
+                               default:
+                                   FAILW(REG_EESCAPE);
+                                   break;
+                           }
+                           /* lexnest done, back up and try again */
+                           v->nexttype = v->lasttype;
+                           return next(v);
+                           break;
+                   }
+                   /* not one of the acceptable escapes */
+                   FAILW(REG_EESCAPE);
                    break;
-               case 's':
-                   lexnest(v, brbacks, ENDOF(brbacks));
+               case CHR('-'):
+                   if (LASTTYPE('[') || NEXT1(']'))
+                       RETV(PLAIN, c);
+                   else
+                       RETV(RANGE, c);
                    break;
-               case 'w':
-                   lexnest(v, brbackw, ENDOF(brbackw));
+               case CHR('['):
+                   if (ATEOS())
+                       FAILW(REG_EBRACK);
+                   switch (*v->now++)
+                   {
+                       case CHR('.'):
+                           INTOCON(L_CEL);
+                           /* might or might not be locale-specific */
+                           RET(COLLEL);
+                           break;
+                       case CHR('='):
+                           INTOCON(L_ECL);
+                           NOTE(REG_ULOCALE);
+                           RET(ECLASS);
+                           break;
+                       case CHR(':'):
+                           INTOCON(L_CCL);
+                           NOTE(REG_ULOCALE);
+                           RET(CCLASS);
+                           break;
+                       default:        /* oops */
+                           v->now--;
+                           RETV(PLAIN, c);
+                           break;
+                   }
+                   assert(NOTREACHED);
                    break;
                default:
-                   FAILW(REG_EESCAPE);
+                   RETV(PLAIN, c);
                    break;
-               }
-               /* lexnest done, back up and try again */
-               v->nexttype = v->lasttype;
-               return next(v);
-               break;
            }
-           /* not one of the acceptable escapes */
-           FAILW(REG_EESCAPE);
+           assert(NOTREACHED);
            break;
-       case CHR('-'):
-           if (LASTTYPE('[') || NEXT1(']'))
-               RETV(PLAIN, c);
+       case L_CEL:             /* collating elements are easy */
+           if (c == CHR('.') && NEXT1(']'))
+           {
+               v->now++;
+               INTOCON(L_BRACK);
+               RETV(END, '.');
+           }
            else
-               RETV(RANGE, c);
+               RETV(PLAIN, c);
            break;
-       case CHR('['):
-           if (ATEOS())
-               FAILW(REG_EBRACK);
-           switch (*v->now++) {
-           case CHR('.'):
-               INTOCON(L_CEL);
-               /* might or might not be locale-specific */
-               RET(COLLEL);
-               break;
-           case CHR('='):
-               INTOCON(L_ECL);
-               NOTE(REG_ULOCALE);
-               RET(ECLASS);
-               break;
-           case CHR(':'):
-               INTOCON(L_CCL);
-               NOTE(REG_ULOCALE);
-               RET(CCLASS);
-               break;
-           default:            /* oops */
-               v->now--;
+       case L_ECL:             /* ditto equivalence classes */
+           if (c == CHR('=') && NEXT1(']'))
+           {
+               v->now++;
+               INTOCON(L_BRACK);
+               RETV(END, '=');
+           }
+           else
                RETV(PLAIN, c);
-               break;
+           break;
+       case L_CCL:             /* ditto character classes */
+           if (c == CHR(':') && NEXT1(']'))
+           {
+               v->now++;
+               INTOCON(L_BRACK);
+               RETV(END, ':');
            }
-           assert(NOTREACHED);
+           else
+               RETV(PLAIN, c);
            break;
        default:
-           RETV(PLAIN, c);
+           assert(NOTREACHED);
            break;
-       }
-       assert(NOTREACHED);
-       break;
-   case L_CEL:         /* collating elements are easy */
-       if (c == CHR('.') && NEXT1(']')) {
-           v->now++;
-           INTOCON(L_BRACK);
-           RETV(END, '.');
-       } else
-           RETV(PLAIN, c);
-       break;
-   case L_ECL:         /* ditto equivalence classes */
-       if (c == CHR('=') && NEXT1(']')) {
-           v->now++;
-           INTOCON(L_BRACK);
-           RETV(END, '=');
-       } else
-           RETV(PLAIN, c);
-       break;
-   case L_CCL:         /* ditto character classes */
-       if (c == CHR(':') && NEXT1(']')) {
-           v->now++;
-           INTOCON(L_BRACK);
-           RETV(END, ':');
-       } else
-           RETV(PLAIN, c);
-       break;
-   default:
-       assert(NOTREACHED);
-       break;
    }
 
    /* that got rid of everything except EREs and AREs */
    assert(INCON(L_ERE));
 
    /* deal with EREs and AREs, except for backslashes */
-   switch (c) {
-   case CHR('|'):
-       RET('|');
-       break;
-   case CHR('*'):
-       if ((v->cflags&REG_ADVF) && NEXT1('?')) {
-           v->now++;
-           NOTE(REG_UNONPOSIX);
-           RETV('*', 0);
-       }
-       RETV('*', 1);
-       break;
-   case CHR('+'):
-       if ((v->cflags&REG_ADVF) && NEXT1('?')) {
-           v->now++;
-           NOTE(REG_UNONPOSIX);
-           RETV('+', 0);
-       }
-       RETV('+', 1);
-       break;
-   case CHR('?'):
-       if ((v->cflags&REG_ADVF) && NEXT1('?')) {
-           v->now++;
-           NOTE(REG_UNONPOSIX);
-           RETV('?', 0);
-       }
-       RETV('?', 1);
-       break;
-   case CHR('{'):      /* bounds start or plain character */
-       if (v->cflags&REG_EXPANDED)
-           skip(v);
-       if (ATEOS() || !iscdigit(*v->now)) {
-           NOTE(REG_UBRACES);
-           NOTE(REG_UUNSPEC);
-           RETV(PLAIN, c);
-       } else {
-           NOTE(REG_UBOUNDS);
-           INTOCON(L_EBND);
-           RET('{');
-       }
-       assert(NOTREACHED);
-       break;
-   case CHR('('):      /* parenthesis, or advanced extension */
-       if ((v->cflags&REG_ADVF) && NEXT1('?')) {
-           NOTE(REG_UNONPOSIX);
-           v->now++;
-           switch (*v->now++) {
-           case CHR(':'):      /* non-capturing paren */
-               RETV('(', 0);
-               break;
-           case CHR('#'):      /* comment */
-               while (!ATEOS() && *v->now != CHR(')'))
-                   v->now++;
-               if (!ATEOS())
-                   v->now++;
-               assert(v->nexttype == v->lasttype);
-               return next(v);
-               break;
-           case CHR('='):      /* positive lookahead */
-               NOTE(REG_ULOOKAHEAD);
-               RETV(LACON, 1);
-               break;
-           case CHR('!'):      /* negative lookahead */
-               NOTE(REG_ULOOKAHEAD);
-               RETV(LACON, 0);
-               break;
-           default:
-               FAILW(REG_BADRPT);
-               break;
+   switch (c)
+   {
+       case CHR('|'):
+           RET('|');
+           break;
+       case CHR('*'):
+           if ((v->cflags & REG_ADVF) && NEXT1('?'))
+           {
+               v->now++;
+               NOTE(REG_UNONPOSIX);
+               RETV('*', 0);
+           }
+           RETV('*', 1);
+           break;
+       case CHR('+'):
+           if ((v->cflags & REG_ADVF) && NEXT1('?'))
+           {
+               v->now++;
+               NOTE(REG_UNONPOSIX);
+               RETV('+', 0);
+           }
+           RETV('+', 1);
+           break;
+       case CHR('?'):
+           if ((v->cflags & REG_ADVF) && NEXT1('?'))
+           {
+               v->now++;
+               NOTE(REG_UNONPOSIX);
+               RETV('?', 0);
+           }
+           RETV('?', 1);
+           break;
+       case CHR('{'):          /* bounds start or plain character */
+           if (v->cflags & REG_EXPANDED)
+               skip(v);
+           if (ATEOS() || !iscdigit(*v->now))
+           {
+               NOTE(REG_UBRACES);
+               NOTE(REG_UUNSPEC);
+               RETV(PLAIN, c);
+           }
+           else
+           {
+               NOTE(REG_UBOUNDS);
+               INTOCON(L_EBND);
+               RET('{');
            }
            assert(NOTREACHED);
-       }
-       if (v->cflags&REG_NOSUB)
-           RETV('(', 0);       /* all parens non-capturing */
-       else
-           RETV('(', 1);
-       break;
-   case CHR(')'):
-       if (LASTTYPE('(')) {
-           NOTE(REG_UUNSPEC);
-       }
-       RETV(')', c);
-       break;
-   case CHR('['):      /* easy except for [[:<:]] and [[:>:]] */
-       if (HAVE(6) &&  *(v->now+0) == CHR('[') &&
-               *(v->now+1) == CHR(':') &&
-               (*(v->now+2) == CHR('<') ||
-                       *(v->now+2) == CHR('>')) &&
-               *(v->now+3) == CHR(':') &&
-               *(v->now+4) == CHR(']') &&
-               *(v->now+5) == CHR(']')) {
-           c = *(v->now+2);
-           v->now += 6;
-           NOTE(REG_UNONPOSIX);
-           RET((c == CHR('<')) ? '<' : '>');
-       }
-       INTOCON(L_BRACK);
-       if (NEXT1('^')) {
-           v->now++;
-           RETV('[', 0);
-       }
-       RETV('[', 1);
-       break;
-   case CHR('.'):
-       RET('.');
-       break;
-   case CHR('^'):
-       RET('^');
-       break;
-   case CHR('$'):
-       RET('$');
-       break;
-   case CHR('\\'):     /* mostly punt backslashes to code below */
-       if (ATEOS())
-           FAILW(REG_EESCAPE);
-       break;
-   default:        /* ordinary character */
-       RETV(PLAIN, c);
-       break;
+           break;
+       case CHR('('):          /* parenthesis, or advanced extension */
+           if ((v->cflags & REG_ADVF) && NEXT1('?'))
+           {
+               NOTE(REG_UNONPOSIX);
+               v->now++;
+               switch (*v->now++)
+               {
+                   case CHR(':'):      /* non-capturing paren */
+                       RETV('(', 0);
+                       break;
+                   case CHR('#'):      /* comment */
+                       while (!ATEOS() && *v->now != CHR(')'))
+                           v->now++;
+                       if (!ATEOS())
+                           v->now++;
+                       assert(v->nexttype == v->lasttype);
+                       return next(v);
+                       break;
+                   case CHR('='):      /* positive lookahead */
+                       NOTE(REG_ULOOKAHEAD);
+                       RETV(LACON, 1);
+                       break;
+                   case CHR('!'):      /* negative lookahead */
+                       NOTE(REG_ULOOKAHEAD);
+                       RETV(LACON, 0);
+                       break;
+                   default:
+                       FAILW(REG_BADRPT);
+                       break;
+               }
+               assert(NOTREACHED);
+           }
+           if (v->cflags & REG_NOSUB)
+               RETV('(', 0);   /* all parens non-capturing */
+           else
+               RETV('(', 1);
+           break;
+       case CHR(')'):
+           if (LASTTYPE('('))
+               NOTE(REG_UUNSPEC);
+           RETV(')', c);
+           break;
+       case CHR('['):          /* easy except for [[:<:]] and [[:>:]] */
+           if (HAVE(6) && *(v->now + 0) == CHR('[') &&
+               *(v->now + 1) == CHR(':') &&
+               (*(v->now + 2) == CHR('<') ||
+                *(v->now + 2) == CHR('>')) &&
+               *(v->now + 3) == CHR(':') &&
+               *(v->now + 4) == CHR(']') &&
+               *(v->now + 5) == CHR(']'))
+           {
+               c = *(v->now + 2);
+               v->now += 6;
+               NOTE(REG_UNONPOSIX);
+               RET((c == CHR('<')) ? '<' : '>');
+           }
+           INTOCON(L_BRACK);
+           if (NEXT1('^'))
+           {
+               v->now++;
+               RETV('[', 0);
+           }
+           RETV('[', 1);
+           break;
+       case CHR('.'):
+           RET('.');
+           break;
+       case CHR('^'):
+           RET('^');
+           break;
+       case CHR('$'):
+           RET('$');
+           break;
+       case CHR('\\'): /* mostly punt backslashes to code below */
+           if (ATEOS())
+               FAILW(REG_EESCAPE);
+           break;
+       default:                /* ordinary character */
+           RETV(PLAIN, c);
+           break;
    }
 
    /* ERE/ARE backslash handling; backslash already eaten */
    assert(!ATEOS());
-   if (!(v->cflags&REG_ADVF)) {    /* only AREs have non-trivial escapes */
-       if (iscalnum(*v->now)) {
+   if (!(v->cflags & REG_ADVF))
+   {                           /* only AREs have non-trivial escapes */
+       if (iscalnum(*v->now))
+       {
            NOTE(REG_UBSALNUM);
            NOTE(REG_UUNSPEC);
        }
        RETV(PLAIN, *v->now++);
    }
-   (DISCARD)lexescape(v);
+   (DISCARD) lexescape(v);
    if (ISERR())
        FAILW(REG_EESCAPE);
-   if (v->nexttype == CCLASS) {    /* fudge at lexical level */
-       switch (v->nextvalue) {
-       case 'd':   lexnest(v, backd, ENDOF(backd)); break;
-       case 'D':   lexnest(v, backD, ENDOF(backD)); break;
-       case 's':   lexnest(v, backs, ENDOF(backs)); break;
-       case 'S':   lexnest(v, backS, ENDOF(backS)); break;
-       case 'w':   lexnest(v, backw, ENDOF(backw)); break;
-       case 'W':   lexnest(v, backW, ENDOF(backW)); break;
-       default:
-           assert(NOTREACHED);
-           FAILW(REG_ASSERT);
-           break;
+   if (v->nexttype == CCLASS)
+   {                           /* fudge at lexical level */
+       switch (v->nextvalue)
+       {
+           case 'd':
+               lexnest(v, backd, ENDOF(backd));
+               break;
+           case 'D':
+               lexnest(v, backD, ENDOF(backD));
+               break;
+           case 's':
+               lexnest(v, backs, ENDOF(backs));
+               break;
+           case 'S':
+               lexnest(v, backS, ENDOF(backS));
+               break;
+           case 'w':
+               lexnest(v, backw, ENDOF(backw));
+               break;
+           case 'W':
+               lexnest(v, backW, ENDOF(backW));
+               break;
+           default:
+               assert(NOTREACHED);
+               FAILW(REG_ASSERT);
+               break;
        }
        /* lexnest done, back up and try again */
        v->nexttype = v->lasttype;
@@ -647,19 +712,20 @@ next(struct vars *v)
  * lexescape - parse an ARE backslash escape (backslash already eaten)
  * Note slightly nonstandard use of the CCLASS type code.
  */
-static int         /* not actually used, but convenient for RETV */
-lexescape(struct vars *v)
+static int                     /* not actually used, but convenient for
+                                * RETV */
+lexescape(struct vars * v)
 {
-   chr c;
-   static chr alert[] = {
+   chr         c;
+   static chr  alert[] = {
        CHR('a'), CHR('l'), CHR('e'), CHR('r'), CHR('t')
    };
-   static chr esc[] = {
+   static chr  esc[] = {
        CHR('E'), CHR('S'), CHR('C')
    };
-   chr *save;
+   chr        *save;
 
-   assert(v->cflags&REG_ADVF);
+   assert(v->cflags & REG_ADVF);
 
    assert(!ATEOS());
    c = *v->now++;
@@ -667,132 +733,142 @@ lexescape(struct vars *v)
        RETV(PLAIN, c);
 
    NOTE(REG_UNONPOSIX);
-   switch (c) {
-   case CHR('a'):
-       RETV(PLAIN, chrnamed(v, alert, ENDOF(alert), CHR('\007')));
-       break;
-   case CHR('A'):
-       RETV(SBEGIN, 0);
-       break;
-   case CHR('b'):
-       RETV(PLAIN, CHR('\b'));
-       break;
-   case CHR('B'):
-       RETV(PLAIN, CHR('\\'));
-       break;
-   case CHR('c'):
-       NOTE(REG_UUNPORT);
-       if (ATEOS())
-           FAILW(REG_EESCAPE);
-       RETV(PLAIN, (chr)(*v->now++ & 037));
-       break;
-   case CHR('d'):
-       NOTE(REG_ULOCALE);
-       RETV(CCLASS, 'd');
-       break;
-   case CHR('D'):
-       NOTE(REG_ULOCALE);
-       RETV(CCLASS, 'D');
-       break;
-   case CHR('e'):
-       NOTE(REG_UUNPORT);
-       RETV(PLAIN, chrnamed(v, esc, ENDOF(esc), CHR('\033')));
-       break;
-   case CHR('f'):
-       RETV(PLAIN, CHR('\f'));
-       break;
-   case CHR('m'):
-       RET('<');
-       break;
-   case CHR('M'):
-       RET('>');
-       break;
-   case CHR('n'):
-       RETV(PLAIN, CHR('\n'));
-       break;
-   case CHR('r'):
-       RETV(PLAIN, CHR('\r'));
-       break;
-   case CHR('s'):
-       NOTE(REG_ULOCALE);
-       RETV(CCLASS, 's');
-       break;
-   case CHR('S'):
-       NOTE(REG_ULOCALE);
-       RETV(CCLASS, 'S');
-       break;
-   case CHR('t'):
-       RETV(PLAIN, CHR('\t'));
-       break;
-   case CHR('u'):
-       c = lexdigits(v, 16, 4, 4);
-       if (ISERR())
-           FAILW(REG_EESCAPE);
-       RETV(PLAIN, c);
-       break;
-   case CHR('U'):
-       c = lexdigits(v, 16, 8, 8);
-       if (ISERR())
-           FAILW(REG_EESCAPE);
-       RETV(PLAIN, c);
-       break;
-   case CHR('v'):
-       RETV(PLAIN, CHR('\v'));
-       break;
-   case CHR('w'):
-       NOTE(REG_ULOCALE);
-       RETV(CCLASS, 'w');
-       break;
-   case CHR('W'):
-       NOTE(REG_ULOCALE);
-       RETV(CCLASS, 'W');
-       break;
-   case CHR('x'):
-       NOTE(REG_UUNPORT);
-       c = lexdigits(v, 16, 1, 255);   /* REs >255 long outside spec */
-       if (ISERR())
-           FAILW(REG_EESCAPE);
-       RETV(PLAIN, c);
-       break;
-   case CHR('y'):
-       NOTE(REG_ULOCALE);
-       RETV(WBDRY, 0);
-       break;
-   case CHR('Y'):
-       NOTE(REG_ULOCALE);
-       RETV(NWBDRY, 0);
-       break;
-   case CHR('Z'):
-       RETV(SEND, 0);
-       break;
-   case CHR('1'): case CHR('2'): case CHR('3'): case CHR('4'):
-   case CHR('5'): case CHR('6'): case CHR('7'): case CHR('8'):
-   case CHR('9'):
-       save = v->now;
-       v->now--;   /* put first digit back */
-       c = lexdigits(v, 10, 1, 255);   /* REs >255 long outside spec */
-       if (ISERR())
-           FAILW(REG_EESCAPE);
-       /* ugly heuristic (first test is "exactly 1 digit?") */
-       if (v->now - save == 0 || (int)c <= v->nsubexp) {
-           NOTE(REG_UBACKREF);
-           RETV(BACKREF, (chr)c);
-       }
-       /* oops, doesn't look like it's a backref after all... */
-       v->now = save;
-       /* and fall through into octal number */
-   case CHR('0'):
-       NOTE(REG_UUNPORT);
-       v->now--;   /* put first digit back */
-       c = lexdigits(v, 8, 1, 3);
-       if (ISERR())
-           FAILW(REG_EESCAPE);
-       RETV(PLAIN, c);
-       break;
-   default:
-       assert(iscalpha(c));
-       FAILW(REG_EESCAPE); /* unknown alphabetic escape */
-       break;
+   switch (c)
+   {
+       case CHR('a'):
+           RETV(PLAIN, chrnamed(v, alert, ENDOF(alert), CHR('\007')));
+           break;
+       case CHR('A'):
+           RETV(SBEGIN, 0);
+           break;
+       case CHR('b'):
+           RETV(PLAIN, CHR('\b'));
+           break;
+       case CHR('B'):
+           RETV(PLAIN, CHR('\\'));
+           break;
+       case CHR('c'):
+           NOTE(REG_UUNPORT);
+           if (ATEOS())
+               FAILW(REG_EESCAPE);
+           RETV(PLAIN, (chr) (*v->now++ & 037));
+           break;
+       case CHR('d'):
+           NOTE(REG_ULOCALE);
+           RETV(CCLASS, 'd');
+           break;
+       case CHR('D'):
+           NOTE(REG_ULOCALE);
+           RETV(CCLASS, 'D');
+           break;
+       case CHR('e'):
+           NOTE(REG_UUNPORT);
+           RETV(PLAIN, chrnamed(v, esc, ENDOF(esc), CHR('\033')));
+           break;
+       case CHR('f'):
+           RETV(PLAIN, CHR('\f'));
+           break;
+       case CHR('m'):
+           RET('<');
+           break;
+       case CHR('M'):
+           RET('>');
+           break;
+       case CHR('n'):
+           RETV(PLAIN, CHR('\n'));
+           break;
+       case CHR('r'):
+           RETV(PLAIN, CHR('\r'));
+           break;
+       case CHR('s'):
+           NOTE(REG_ULOCALE);
+           RETV(CCLASS, 's');
+           break;
+       case CHR('S'):
+           NOTE(REG_ULOCALE);
+           RETV(CCLASS, 'S');
+           break;
+       case CHR('t'):
+           RETV(PLAIN, CHR('\t'));
+           break;
+       case CHR('u'):
+           c = lexdigits(v, 16, 4, 4);
+           if (ISERR())
+               FAILW(REG_EESCAPE);
+           RETV(PLAIN, c);
+           break;
+       case CHR('U'):
+           c = lexdigits(v, 16, 8, 8);
+           if (ISERR())
+               FAILW(REG_EESCAPE);
+           RETV(PLAIN, c);
+           break;
+       case CHR('v'):
+           RETV(PLAIN, CHR('\v'));
+           break;
+       case CHR('w'):
+           NOTE(REG_ULOCALE);
+           RETV(CCLASS, 'w');
+           break;
+       case CHR('W'):
+           NOTE(REG_ULOCALE);
+           RETV(CCLASS, 'W');
+           break;
+       case CHR('x'):
+           NOTE(REG_UUNPORT);
+           c = lexdigits(v, 16, 1, 255);       /* REs >255 long outside
+                                                * spec */
+           if (ISERR())
+               FAILW(REG_EESCAPE);
+           RETV(PLAIN, c);
+           break;
+       case CHR('y'):
+           NOTE(REG_ULOCALE);
+           RETV(WBDRY, 0);
+           break;
+       case CHR('Y'):
+           NOTE(REG_ULOCALE);
+           RETV(NWBDRY, 0);
+           break;
+       case CHR('Z'):
+           RETV(SEND, 0);
+           break;
+       case CHR('1'):
+       case CHR('2'):
+       case CHR('3'):
+       case CHR('4'):
+       case CHR('5'):
+       case CHR('6'):
+       case CHR('7'):
+       case CHR('8'):
+       case CHR('9'):
+           save = v->now;
+           v->now--;           /* put first digit back */
+           c = lexdigits(v, 10, 1, 255);       /* REs >255 long outside
+                                                * spec */
+           if (ISERR())
+               FAILW(REG_EESCAPE);
+           /* ugly heuristic (first test is "exactly 1 digit?") */
+           if (v->now - save == 0 || (int) c <= v->nsubexp)
+           {
+               NOTE(REG_UBACKREF);
+               RETV(BACKREF, (chr) c);
+           }
+           /* oops, doesn't look like it's a backref after all... */
+           v->now = save;
+           /* and fall through into octal number */
+       case CHR('0'):
+           NOTE(REG_UUNPORT);
+           v->now--;           /* put first digit back */
+           c = lexdigits(v, 8, 1, 3);
+           if (ISERR())
+               FAILW(REG_EESCAPE);
+           RETV(PLAIN, c);
+           break;
+       default:
+           assert(iscalpha(c));
+           FAILW(REG_EESCAPE); /* unknown alphabetic escape */
+           break;
    }
    assert(NOTREACHED);
 }
@@ -800,51 +876,79 @@ lexescape(struct vars *v)
 /*
  * lexdigits - slurp up digits and return chr value
  */
-static chr         /* chr value; errors signalled via ERR */
-lexdigits(struct vars *v,
+static chr                 /* chr value; errors signalled via ERR */
+lexdigits(struct vars * v,
          int base,
          int minlen,
          int maxlen)
 {
-   uchr n;         /* unsigned to avoid overflow misbehavior */
-   int len;
-   chr c;
-   int d;
-   const uchr ub = (uchr) base;
+   uchr        n;              /* unsigned to avoid overflow misbehavior */
+   int         len;
+   chr         c;
+   int         d;
+   const uchr  ub = (uchr) base;
 
    n = 0;
-   for (len = 0; len < maxlen && !ATEOS(); len++) {
+   for (len = 0; len < maxlen && !ATEOS(); len++)
+   {
        c = *v->now++;
-       switch (c) {
-       case CHR('0'): case CHR('1'): case CHR('2'): case CHR('3'):
-       case CHR('4'): case CHR('5'): case CHR('6'): case CHR('7'):
-       case CHR('8'): case CHR('9'):
-           d = DIGITVAL(c);
-           break;
-       case CHR('a'): case CHR('A'): d = 10; break;
-       case CHR('b'): case CHR('B'): d = 11; break;
-       case CHR('c'): case CHR('C'): d = 12; break;
-       case CHR('d'): case CHR('D'): d = 13; break;
-       case CHR('e'): case CHR('E'): d = 14; break;
-       case CHR('f'): case CHR('F'): d = 15; break;
-       default:
-           v->now--;   /* oops, not a digit at all */
-           d = -1;
-           break;
+       switch (c)
+       {
+           case CHR('0'):
+           case CHR('1'):
+           case CHR('2'):
+           case CHR('3'):
+           case CHR('4'):
+           case CHR('5'):
+           case CHR('6'):
+           case CHR('7'):
+           case CHR('8'):
+           case CHR('9'):
+               d = DIGITVAL(c);
+               break;
+           case CHR('a'):
+           case CHR('A'):
+               d = 10;
+               break;
+           case CHR('b'):
+           case CHR('B'):
+               d = 11;
+               break;
+           case CHR('c'):
+           case CHR('C'):
+               d = 12;
+               break;
+           case CHR('d'):
+           case CHR('D'):
+               d = 13;
+               break;
+           case CHR('e'):
+           case CHR('E'):
+               d = 14;
+               break;
+           case CHR('f'):
+           case CHR('F'):
+               d = 15;
+               break;
+           default:
+               v->now--;       /* oops, not a digit at all */
+               d = -1;
+               break;
        }
 
-       if (d >= base) {    /* not a plausible digit */
+       if (d >= base)
+       {                       /* not a plausible digit */
            v->now--;
            d = -1;
        }
        if (d < 0)
-           break;      /* NOTE BREAK OUT */
-       n = n*ub + (uchr)d;
+           break;              /* NOTE BREAK OUT */
+       n = n * ub + (uchr) d;
    }
    if (len < minlen)
        ERR(REG_EESCAPE);
 
-   return (chr)n;
+   return (chr) n;
 }
 
 /*
@@ -853,66 +957,71 @@ lexdigits(struct vars *v,
  * This is much like EREs except for all the stupid backslashes and the
  * context-dependency of some things.
  */
-static int         /* 1 normal, 0 failure */
-brenext(struct vars *v,
+static int                     /* 1 normal, 0 failure */
+brenext(struct vars * v,
        chr pc)
 {
-   chr c = (chr)pc;
+   chr         c = (chr) pc;
 
-   switch (c) {
-   case CHR('*'):
-       if (LASTTYPE(EMPTY) || LASTTYPE('(') || LASTTYPE('^'))
+   switch (c)
+   {
+       case CHR('*'):
+           if (LASTTYPE(EMPTY) || LASTTYPE('(') || LASTTYPE('^'))
+               RETV(PLAIN, c);
+           RET('*');
+           break;
+       case CHR('['):
+           if (HAVE(6) && *(v->now + 0) == CHR('[') &&
+               *(v->now + 1) == CHR(':') &&
+               (*(v->now + 2) == CHR('<') ||
+                *(v->now + 2) == CHR('>')) &&
+               *(v->now + 3) == CHR(':') &&
+               *(v->now + 4) == CHR(']') &&
+               *(v->now + 5) == CHR(']'))
+           {
+               c = *(v->now + 2);
+               v->now += 6;
+               NOTE(REG_UNONPOSIX);
+               RET((c == CHR('<')) ? '<' : '>');
+           }
+           INTOCON(L_BRACK);
+           if (NEXT1('^'))
+           {
+               v->now++;
+               RETV('[', 0);
+           }
+           RETV('[', 1);
+           break;
+       case CHR('.'):
+           RET('.');
+           break;
+       case CHR('^'):
+           if (LASTTYPE(EMPTY))
+               RET('^');
+           if (LASTTYPE('('))
+           {
+               NOTE(REG_UUNSPEC);
+               RET('^');
+           }
            RETV(PLAIN, c);
-       RET('*');
-       break;
-   case CHR('['):
-       if (HAVE(6) &&  *(v->now+0) == CHR('[') &&
-               *(v->now+1) == CHR(':') &&
-               (*(v->now+2) == CHR('<') ||
-                       *(v->now+2) == CHR('>')) &&
-               *(v->now+3) == CHR(':') &&
-               *(v->now+4) == CHR(']') &&
-               *(v->now+5) == CHR(']')) {
-           c = *(v->now+2);
-           v->now += 6;
-           NOTE(REG_UNONPOSIX);
-           RET((c == CHR('<')) ? '<' : '>');
-       }
-       INTOCON(L_BRACK);
-       if (NEXT1('^')) {
-           v->now++;
-           RETV('[', 0);
-       }
-       RETV('[', 1);
-       break;
-   case CHR('.'):
-       RET('.');
-       break;
-   case CHR('^'):
-       if (LASTTYPE(EMPTY))
-           RET('^');
-       if (LASTTYPE('(')) {
-           NOTE(REG_UUNSPEC);
-           RET('^');
-       }
-       RETV(PLAIN, c);
-       break;
-   case CHR('$'):
-       if (v->cflags&REG_EXPANDED)
-           skip(v);
-       if (ATEOS())
-           RET('$');
-       if (NEXT2('\\', ')')) {
-           NOTE(REG_UUNSPEC);
-           RET('$');
-       }
-       RETV(PLAIN, c);
-       break;
-   case CHR('\\'):
-       break;      /* see below */
-   default:
-       RETV(PLAIN, c);
-       break;
+           break;
+       case CHR('$'):
+           if (v->cflags & REG_EXPANDED)
+               skip(v);
+           if (ATEOS())
+               RET('$');
+           if (NEXT2('\\', ')'))
+           {
+               NOTE(REG_UUNSPEC);
+               RET('$');
+           }
+           RETV(PLAIN, c);
+           break;
+       case CHR('\\'):
+           break;              /* see below */
+       default:
+           RETV(PLAIN, c);
+           break;
    }
 
    assert(c == CHR('\\'));
@@ -921,39 +1030,47 @@ brenext(struct vars *v,
        FAILW(REG_EESCAPE);
 
    c = *v->now++;
-   switch (c) {
-   case CHR('{'):
-       INTOCON(L_BBND);
-       NOTE(REG_UBOUNDS);
-       RET('{');
-       break;
-   case CHR('('):
-       RETV('(', 1);
-       break;
-   case CHR(')'):
-       RETV(')', c);
-       break;
-   case CHR('<'):
-       NOTE(REG_UNONPOSIX);
-       RET('<');
-       break;
-   case CHR('>'):
-       NOTE(REG_UNONPOSIX);
-       RET('>');
-       break;
-   case CHR('1'): case CHR('2'): case CHR('3'): case CHR('4'):
-   case CHR('5'): case CHR('6'): case CHR('7'): case CHR('8'):
-   case CHR('9'):
-       NOTE(REG_UBACKREF);
-       RETV(BACKREF, (chr)DIGITVAL(c));
-       break;
-   default:
-       if (iscalnum(c)) {
-           NOTE(REG_UBSALNUM);
-           NOTE(REG_UUNSPEC);
-       }
-       RETV(PLAIN, c);
-       break;
+   switch (c)
+   {
+       case CHR('{'):
+           INTOCON(L_BBND);
+           NOTE(REG_UBOUNDS);
+           RET('{');
+           break;
+       case CHR('('):
+           RETV('(', 1);
+           break;
+       case CHR(')'):
+           RETV(')', c);
+           break;
+       case CHR('<'):
+           NOTE(REG_UNONPOSIX);
+           RET('<');
+           break;
+       case CHR('>'):
+           NOTE(REG_UNONPOSIX);
+           RET('>');
+           break;
+       case CHR('1'):
+       case CHR('2'):
+       case CHR('3'):
+       case CHR('4'):
+       case CHR('5'):
+       case CHR('6'):
+       case CHR('7'):
+       case CHR('8'):
+       case CHR('9'):
+           NOTE(REG_UBACKREF);
+           RETV(BACKREF, (chr) DIGITVAL(c));
+           break;
+       default:
+           if (iscalnum(c))
+           {
+               NOTE(REG_UBSALNUM);
+               NOTE(REG_UUNSPEC);
+           }
+           RETV(PLAIN, c);
+           break;
    }
 
    assert(NOTREACHED);
@@ -963,13 +1080,14 @@ brenext(struct vars *v,
  * skip - skip white space and comments in expanded form
  */
 static void
-skip(struct vars *v)
+skip(struct vars * v)
 {
-   chr *start = v->now;
+   chr        *start = v->now;
 
-   assert(v->cflags&REG_EXPANDED);
+   assert(v->cflags & REG_EXPANDED);
 
-   for (;;) {
+   for (;;)
+   {
        while (!ATEOS() && iscspace(*v->now))
            v->now++;
        if (ATEOS() || *v->now != CHR('#'))
@@ -1002,14 +1120,14 @@ newline(void)
  * use that it hardly matters.
  */
 static chr
-chrnamed(struct vars *v,
-        chr *startp,           /* start of name */
-        chr *endp,         /* just past end of name */
+chrnamed(struct vars * v,
+        chr * startp,          /* start of name */
+        chr * endp,            /* just past end of name */
         chr lastresort)        /* what to return if name lookup fails */
 {
-   celt c;
-   int errsave;
-   int e;
+   celt        c;
+   int         errsave;
+   int         e;
    struct cvec *cv;
 
    errsave = v->err;
@@ -1019,10 +1137,10 @@ chrnamed(struct vars *v,
    v->err = errsave;
 
    if (e != 0)
-       return (chr)lastresort;
+       return (chr) lastresort;
 
    cv = range(v, c, c, 0);
    if (cv->nchrs == 0)
-       return (chr)lastresort;
+       return (chr) lastresort;
    return cv->chrs[0];
 }
index 41ea9fe1f29d73c7d1952250ee8feedcf2449755..69c7fd7214a28645280f8e07c3220ec79a3fb399 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * regc_locale.c --
  *
  * This file contains locale-specific regexp routines.
@@ -11,7 +11,7 @@
  * Corporation and other parties.  The following terms apply to all files
  * associated with the software unless explicitly disclaimed in
  * individual files.
- * 
+ *
  * The authors hereby grant permission to use, copy, modify, distribute,
  * and license this software and its documentation for any purpose, provided
  * that existing copyright notices are retained in all copies and that this
  * and need not follow the licensing terms described here, provided that
  * the new terms are clearly indicated on the first page of each file where
  * they apply.
- * 
+ *
  * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
  * FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
  * ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
  * DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
- * 
+ *
  * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
  * IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
  * NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
  * MODIFICATIONS.
- * 
+ *
  * GOVERNMENT USE: If you are acquiring this software on behalf of the
  * U.S. government, the Government shall have only "Restricted Rights"
- * in the software and related documentation as defined in the Federal 
- * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2).  If you
+ * in the software and related documentation as defined in the Federal
+ * Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
  * are acquiring the software on behalf of the Department of Defense, the
  * software shall be classified as "Commercial Computer Software" and the
  * Government shall have only "Restricted Rights" as defined in Clause
  * 252.227-7013 (c) (1) of DFARs.  Notwithstanding the foregoing, the
  * authors grant the U.S. Government and others acting in its behalf
  * permission to use and distribute the software in accordance with the
- * terms specified in this license. 
+ * terms specified in this license.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regc_locale.c,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regc_locale.c,v 1.2 2003/08/04 00:43:21 momjian Exp $
  */
 
 /* ASCII character-name table */
 
-static struct cname {
-    char *name;
-    char code;
-} cnames[] = {
-    {"NUL",        '\0'},
-    {"SOH",        '\001'},
-    {"STX",        '\002'},
-    {"ETX",        '\003'},
-    {"EOT",        '\004'},
-    {"ENQ",        '\005'},
-    {"ACK",        '\006'},
-    {"BEL",        '\007'},
-    {"alert",      '\007'},
-    {"BS",     '\010'},
-    {"backspace",  '\b'},
-    {"HT",     '\011'},
-    {"tab",        '\t'},
-    {"LF",     '\012'},
-    {"newline",        '\n'},
-    {"VT",     '\013'},
-    {"vertical-tab",   '\v'},
-    {"FF",     '\014'},
-    {"form-feed",  '\f'},
-    {"CR",     '\015'},
-    {"carriage-return",    '\r'},
-    {"SO",     '\016'},
-    {"SI",     '\017'},
-    {"DLE",        '\020'},
-    {"DC1",        '\021'},
-    {"DC2",        '\022'},
-    {"DC3",        '\023'},
-    {"DC4",        '\024'},
-    {"NAK",        '\025'},
-    {"SYN",        '\026'},
-    {"ETB",        '\027'},
-    {"CAN",        '\030'},
-    {"EM",     '\031'},
-    {"SUB",        '\032'},
-    {"ESC",        '\033'},
-    {"IS4",        '\034'},
-    {"FS",     '\034'},
-    {"IS3",        '\035'},
-    {"GS",     '\035'},
-    {"IS2",        '\036'},
-    {"RS",     '\036'},
-    {"IS1",        '\037'},
-    {"US",     '\037'},
-    {"space",      ' '},
-    {"exclamation-mark",'!'},
-    {"quotation-mark", '"'},
-    {"number-sign",    '#'},
-    {"dollar-sign",    '$'},
-    {"percent-sign",   '%'},
-    {"ampersand",  '&'},
-    {"apostrophe", '\''},
-    {"left-parenthesis",'('},
-    {"right-parenthesis", ')'},
-    {"asterisk",   '*'},
-    {"plus-sign",  '+'},
-    {"comma",      ','},
-    {"hyphen",     '-'},
-    {"hyphen-minus",   '-'},
-    {"period",     '.'},
-    {"full-stop",  '.'},
-    {"slash",      '/'},
-    {"solidus",        '/'},
-    {"zero",       '0'},
-    {"one",        '1'},
-    {"two",        '2'},
-    {"three",      '3'},
-    {"four",       '4'},
-    {"five",       '5'},
-    {"six",        '6'},
-    {"seven",      '7'},
-    {"eight",      '8'},
-    {"nine",       '9'},
-    {"colon",      ':'},
-    {"semicolon",  ';'},
-    {"less-than-sign", '<'},
-    {"equals-sign",    '='},
-    {"greater-than-sign", '>'},
-    {"question-mark",  '?'},
-    {"commercial-at",  '@'},
-    {"left-square-bracket", '['},
-    {"backslash",  '\\'},
-    {"reverse-solidus",    '\\'},
-    {"right-square-bracket", ']'},
-    {"circumflex", '^'},
-    {"circumflex-accent", '^'},
-    {"underscore", '_'},
-    {"low-line",   '_'},
-    {"grave-accent",   '`'},
-    {"left-brace", '{'},
-    {"left-curly-bracket", '{'},
-    {"vertical-line",  '|'},
-    {"right-brace",    '}'},
-    {"right-curly-bracket", '}'},
-    {"tilde",      '~'},
-    {"DEL",        '\177'},
-    {NULL,     0}
+static struct cname
+{
+   char       *name;
+   char        code;
+}  cnames[] =
+
+{
+   {
+       "NUL", '\0'
+   },
+   {
+       "SOH", '\001'
+   },
+   {
+       "STX", '\002'
+   },
+   {
+       "ETX", '\003'
+   },
+   {
+       "EOT", '\004'
+   },
+   {
+       "ENQ", '\005'
+   },
+   {
+       "ACK", '\006'
+   },
+   {
+       "BEL", '\007'
+   },
+   {
+       "alert", '\007'
+   },
+   {
+       "BS", '\010'
+   },
+   {
+       "backspace", '\b'
+   },
+   {
+       "HT", '\011'
+   },
+   {
+       "tab", '\t'
+   },
+   {
+       "LF", '\012'
+   },
+   {
+       "newline", '\n'
+   },
+   {
+       "VT", '\013'
+   },
+   {
+       "vertical-tab", '\v'
+   },
+   {
+       "FF", '\014'
+   },
+   {
+       "form-feed", '\f'
+   },
+   {
+       "CR", '\015'
+   },
+   {
+       "carriage-return", '\r'
+   },
+   {
+       "SO", '\016'
+   },
+   {
+       "SI", '\017'
+   },
+   {
+       "DLE", '\020'
+   },
+   {
+       "DC1", '\021'
+   },
+   {
+       "DC2", '\022'
+   },
+   {
+       "DC3", '\023'
+   },
+   {
+       "DC4", '\024'
+   },
+   {
+       "NAK", '\025'
+   },
+   {
+       "SYN", '\026'
+   },
+   {
+       "ETB", '\027'
+   },
+   {
+       "CAN", '\030'
+   },
+   {
+       "EM", '\031'
+   },
+   {
+       "SUB", '\032'
+   },
+   {
+       "ESC", '\033'
+   },
+   {
+       "IS4", '\034'
+   },
+   {
+       "FS", '\034'
+   },
+   {
+       "IS3", '\035'
+   },
+   {
+       "GS", '\035'
+   },
+   {
+       "IS2", '\036'
+   },
+   {
+       "RS", '\036'
+   },
+   {
+       "IS1", '\037'
+   },
+   {
+       "US", '\037'
+   },
+   {
+       "space", ' '
+   },
+   {
+       "exclamation-mark", '!'
+   },
+   {
+       "quotation-mark", '"'
+   },
+   {
+       "number-sign", '#'
+   },
+   {
+       "dollar-sign", '$'
+   },
+   {
+       "percent-sign", '%'
+   },
+   {
+       "ampersand", '&'
+   },
+   {
+       "apostrophe", '\''
+   },
+   {
+       "left-parenthesis", '('
+   },
+   {
+       "right-parenthesis", ')'
+   },
+   {
+       "asterisk", '*'
+   },
+   {
+       "plus-sign", '+'
+   },
+   {
+       "comma", ','
+   },
+   {
+       "hyphen", '-'
+   },
+   {
+       "hyphen-minus", '-'
+   },
+   {
+       "period", '.'
+   },
+   {
+       "full-stop", '.'
+   },
+   {
+       "slash", '/'
+   },
+   {
+       "solidus", '/'
+   },
+   {
+       "zero", '0'
+   },
+   {
+       "one", '1'
+   },
+   {
+       "two", '2'
+   },
+   {
+       "three", '3'
+   },
+   {
+       "four", '4'
+   },
+   {
+       "five", '5'
+   },
+   {
+       "six", '6'
+   },
+   {
+       "seven", '7'
+   },
+   {
+       "eight", '8'
+   },
+   {
+       "nine", '9'
+   },
+   {
+       "colon", ':'
+   },
+   {
+       "semicolon", ';'
+   },
+   {
+       "less-than-sign", '<'
+   },
+   {
+       "equals-sign", '='
+   },
+   {
+       "greater-than-sign", '>'
+   },
+   {
+       "question-mark", '?'
+   },
+   {
+       "commercial-at", '@'
+   },
+   {
+       "left-square-bracket", '['
+   },
+   {
+       "backslash", '\\'
+   },
+   {
+       "reverse-solidus", '\\'
+   },
+   {
+       "right-square-bracket", ']'
+   },
+   {
+       "circumflex", '^'
+   },
+   {
+       "circumflex-accent", '^'
+   },
+   {
+       "underscore", '_'
+   },
+   {
+       "low-line", '_'
+   },
+   {
+       "grave-accent", '`'
+   },
+   {
+       "left-brace", '{'
+   },
+   {
+       "left-curly-bracket", '{'
+   },
+   {
+       "vertical-line", '|'
+   },
+   {
+       "right-brace", '}'
+   },
+   {
+       "right-curly-bracket", '}'
+   },
+   {
+       "tilde", '~'
+   },
+   {
+       "DEL", '\177'
+   },
+   {
+       NULL, 0
+   }
 };
 
 /*
@@ -226,132 +421,134 @@ pg_tolower(pg_wchar c)
  * nmcces - how many distinct MCCEs are there?
  */
 static int
-nmcces(struct vars *v)
+nmcces(struct vars * v)
 {
-    /*
-     * No multi-character collating elements defined at the moment.
-     */
-    return 0;
+   /*
+    * No multi-character collating elements defined at the moment.
+    */
+   return 0;
 }
 
 /*
  * nleaders - how many chrs can be first chrs of MCCEs?
  */
 static int
-nleaders(struct vars *v)
+nleaders(struct vars * v)
 {
-    return 0;
+   return 0;
 }
 
 /*
  * allmcces - return a cvec with all the MCCEs of the locale
  */
 static struct cvec *
-allmcces(struct vars *v,           /* context */
-        struct cvec *cv)           /* this is supposed to have enough room */
+allmcces(struct vars * v,      /* context */
+        struct cvec * cv)      /* this is supposed to have enough room */
 {
-    return clearcvec(cv);
+   return clearcvec(cv);
 }
 
 /*
  * element - map collating-element name to celt
  */
 static celt
-element(struct vars *v,            /* context */
-       chr *startp,            /* points to start of name */
-       chr *endp)              /* points just past end of name */
+element(struct vars * v,       /* context */
+       chr * startp,           /* points to start of name */
+       chr * endp)             /* points just past end of name */
 {
-    struct cname *cn;
-    size_t len;
-
-    /* generic:  one-chr names stand for themselves */
-    assert(startp < endp);
-    len = endp - startp;
-    if (len == 1) {
-   return *startp;
-    }
-
-    NOTE(REG_ULOCALE);
-
-    /* search table */
-    for (cn=cnames; cn->name!=NULL; cn++) {
-   if (strlen(cn->name)==len &&
-       pg_char_and_wchar_strncmp(cn->name, startp, len)==0) {
-       break;          /* NOTE BREAK OUT */
+   struct cname *cn;
+   size_t      len;
+
+   /* generic:  one-chr names stand for themselves */
+   assert(startp < endp);
+   len = endp - startp;
+   if (len == 1)
+       return *startp;
+
+   NOTE(REG_ULOCALE);
+
+   /* search table */
+   for (cn = cnames; cn->name != NULL; cn++)
+   {
+       if (strlen(cn->name) == len &&
+           pg_char_and_wchar_strncmp(cn->name, startp, len) == 0)
+       {
+           break;              /* NOTE BREAK OUT */
+       }
    }
-    }
-    if (cn->name != NULL) {
-   return CHR(cn->code);
-    }
-
-    /* couldn't find it */
-    ERR(REG_ECOLLATE);
-    return 0;
+   if (cn->name != NULL)
+       return CHR(cn->code);
+
+   /* couldn't find it */
+   ERR(REG_ECOLLATE);
+   return 0;
 }
 
 /*
  * range - supply cvec for a range, including legality check
  */
 static struct cvec *
-range(struct vars *v,          /* context */
-     celt a,               /* range start */
-     celt b,               /* range end, might equal a */
+range(struct vars * v,         /* context */
+     celt a,                   /* range start */
+     celt b,                   /* range end, might equal a */
      int cases)                /* case-independent? */
 {
-    int nchrs;
-    struct cvec *cv;
-    celt c, lc, uc;
-
-    if (a != b && !before(a, b)) {
-   ERR(REG_ERANGE);
-   return NULL;
-    }
+   int         nchrs;
+   struct cvec *cv;
+   celt        c,
+               lc,
+               uc;
+
+   if (a != b && !before(a, b))
+   {
+       ERR(REG_ERANGE);
+       return NULL;
+   }
 
-    if (!cases) {          /* easy version */
-   cv = getcvec(v, 0, 1, 0);
-   NOERRN();
-   addrange(cv, a, b);
-   return cv;
-    }
+   if (!cases)
+   {                           /* easy version */
+       cv = getcvec(v, 0, 1, 0);
+       NOERRN();
+       addrange(cv, a, b);
+       return cv;
+   }
 
-    /*
-     * When case-independent, it's hard to decide when cvec ranges are
-     * usable, so for now at least, we won't try.  We allocate enough
-     * space for two case variants plus a little extra for the two
-     * title case variants.
-     */
+   /*
+    * When case-independent, it's hard to decide when cvec ranges are
+    * usable, so for now at least, we won't try.  We allocate enough
+    * space for two case variants plus a little extra for the two title
+    * case variants.
+    */
 
-    nchrs = (b - a + 1)*2 + 4;
+   nchrs = (b - a + 1) * 2 + 4;
 
-    cv = getcvec(v, nchrs, 0, 0);
-    NOERRN();
+   cv = getcvec(v, nchrs, 0, 0);
+   NOERRN();
 
-    for (c=a; c<=b; c++) {
-   addchr(cv, c);
-   lc = pg_tolower((chr)c);
-   if (c != lc) {
-       addchr(cv, lc);
-   }
-   uc = pg_toupper((chr)c);
-   if (c != uc) {
-       addchr(cv, uc);
+   for (c = a; c <= b; c++)
+   {
+       addchr(cv, c);
+       lc = pg_tolower((chr) c);
+       if (c != lc)
+           addchr(cv, lc);
+       uc = pg_toupper((chr) c);
+       if (c != uc)
+           addchr(cv, uc);
    }
-    }
 
-    return cv;
+   return cv;
 }
 
 /*
  * before - is celt x before celt y, for purposes of range legality?
  */
-static int             /* predicate */
+static int                     /* predicate */
 before(celt x, celt y)
 {
-    /* trivial because no MCCEs */
-    if (x < y) {
-   return 1;
-    }
-    return 0;
+   /* trivial because no MCCEs */
+   if (x < y)
+       return 1;
+   return 0;
 }
 
 /*
@@ -359,33 +556,34 @@ before(celt x, celt y)
  * Must include case counterparts on request.
  */
 static struct cvec *
-eclass(struct vars *v,         /* context */
-      celt c,                  /* Collating element representing
-                                * the equivalence class. */
+eclass(struct vars * v,            /* context */
+      celt c,                  /* Collating element representing the
+                                * equivalence class. */
       int cases)               /* all cases? */
 {
-    struct cvec *cv;
-
-    /* crude fake equivalence class for testing */
-    if ((v->cflags&REG_FAKE) && c == 'x') {
-   cv = getcvec(v, 4, 0, 0);
-   addchr(cv, (chr)'x');
-   addchr(cv, (chr)'y');
-   if (cases) {
-       addchr(cv, (chr)'X');
-       addchr(cv, (chr)'Y');
+   struct cvec *cv;
+
+   /* crude fake equivalence class for testing */
+   if ((v->cflags & REG_FAKE) && c == 'x')
+   {
+       cv = getcvec(v, 4, 0, 0);
+       addchr(cv, (chr) 'x');
+       addchr(cv, (chr) 'y');
+       if (cases)
+       {
+           addchr(cv, (chr) 'X');
+           addchr(cv, (chr) 'Y');
+       }
+       return cv;
    }
+
+   /* otherwise, none */
+   if (cases)
+       return allcases(v, c);
+   cv = getcvec(v, 1, 0, 0);
+   assert(cv != NULL);
+   addchr(cv, (chr) c);
    return cv;
-    }
-
-    /* otherwise, none */
-    if (cases) {
-   return allcases(v, c);
-    }
-    cv = getcvec(v, 1, 0, 0);
-    assert(cv != NULL);
-    addchr(cv, (chr)c);
-    return cv;
 }
 
 /*
@@ -394,164 +592,182 @@ eclass(struct vars *v,          /* context */
  * Must include case counterparts on request.
  */
 static struct cvec *
-cclass(struct vars *v,         /* context */
-      chr *startp,         /* where the name starts */
-      chr *endp,               /* just past the end of the name */
+cclass(struct vars * v,            /* context */
+      chr * startp,            /* where the name starts */
+      chr * endp,              /* just past the end of the name */
       int cases)               /* case-independent? */
 {
-    size_t len;
-    struct cvec *cv = NULL;
-    char **namePtr;
-    int i, index;
-
-    /*
-     * The following arrays define the valid character class names.
-     */
-
-    static char *classNames[] = {
-   "alnum", "alpha", "ascii", "blank", "cntrl", "digit", "graph",
-   "lower", "print", "punct", "space", "upper", "xdigit", NULL
-    };
-
-    enum classes {
-   CC_ALNUM, CC_ALPHA, CC_ASCII, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,
-   CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_XDIGIT
-    };
-
-    /*
-     * Map the name to the corresponding enumerated value.
-     */
-    len = endp - startp;
-    index = -1;
-    for (namePtr=classNames,i=0 ; *namePtr!=NULL ; namePtr++,i++) {
-   if (strlen(*namePtr) == len &&
-       pg_char_and_wchar_strncmp(*namePtr, startp, len) == 0) {
-       index = i;
-       break;
+   size_t      len;
+   struct cvec *cv = NULL;
+   char      **namePtr;
+   int         i,
+               index;
+
+   /*
+    * The following arrays define the valid character class names.
+    */
+
+   static char *classNames[] = {
+       "alnum", "alpha", "ascii", "blank", "cntrl", "digit", "graph",
+       "lower", "print", "punct", "space", "upper", "xdigit", NULL
+   };
+
+   enum classes
+   {
+       CC_ALNUM, CC_ALPHA, CC_ASCII, CC_BLANK, CC_CNTRL, CC_DIGIT, CC_GRAPH,
+       CC_LOWER, CC_PRINT, CC_PUNCT, CC_SPACE, CC_UPPER, CC_XDIGIT
+   };
+
+   /*
+    * Map the name to the corresponding enumerated value.
+    */
+   len = endp - startp;
+   index = -1;
+   for (namePtr = classNames, i = 0; *namePtr != NULL; namePtr++, i++)
+   {
+       if (strlen(*namePtr) == len &&
+           pg_char_and_wchar_strncmp(*namePtr, startp, len) == 0)
+       {
+           index = i;
+           break;
+       }
+   }
+   if (index == -1)
+   {
+       ERR(REG_ECTYPE);
+       return NULL;
    }
-    }
-    if (index == -1) {
-   ERR(REG_ECTYPE);
-   return NULL;
-    }
 
-    /*
-     * Remap lower and upper to alpha if the match is case insensitive.
-     */
+   /*
+    * Remap lower and upper to alpha if the match is case insensitive.
+    */
 
-    if (cases &&
+   if (cases &&
        ((enum classes) index == CC_LOWER ||
         (enum classes) index == CC_UPPER))
        index = (int) CC_ALPHA;
-    
-    /*
-     * Now compute the character class contents.
+
+   /*
+    * Now compute the character class contents.
     *
     * For the moment, assume that only char codes < 256 can be in these
     * classes.
-     */
-
-    switch((enum classes) index) {
-    case CC_PRINT:
-    case CC_ALNUM:
-   cv = getcvec(v, UCHAR_MAX, 1, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_isalpha((chr) i))
-               addchr(cv, (chr) i);
-       }
-       addrange(cv, (chr) '0', (chr) '9');
-   }
-   break;
-    case CC_ALPHA:
-   cv = getcvec(v, UCHAR_MAX, 0, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_isalpha((chr) i))
-               addchr(cv, (chr) i);
-       }
-   }
-   break;
-    case CC_ASCII:
-   cv = getcvec(v, 0, 1, 0);
-   if (cv) {
-       addrange(cv, 0, 0x7f);
-   }
-   break;
-    case CC_BLANK:
-   cv = getcvec(v, 2, 0, 0);
-   addchr(cv, '\t');
-   addchr(cv, ' ');
-   break;
-    case CC_CNTRL:
-   cv = getcvec(v, 0, 2, 0);
-   addrange(cv, 0x0, 0x1f);
-   addrange(cv, 0x7f, 0x9f);
-   break;
-    case CC_DIGIT:
-   cv = getcvec(v, 0, 1, 0);
-   if (cv) {   
-       addrange(cv, (chr) '0', (chr) '9');
+    */
+
+   switch ((enum classes) index)
+   {
+       case CC_PRINT:
+       case CC_ALNUM:
+           cv = getcvec(v, UCHAR_MAX, 1, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_isalpha((chr) i))
+                       addchr(cv, (chr) i);
+               }
+               addrange(cv, (chr) '0', (chr) '9');
+           }
+           break;
+       case CC_ALPHA:
+           cv = getcvec(v, UCHAR_MAX, 0, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_isalpha((chr) i))
+                       addchr(cv, (chr) i);
+               }
+           }
+           break;
+       case CC_ASCII:
+           cv = getcvec(v, 0, 1, 0);
+           if (cv)
+               addrange(cv, 0, 0x7f);
+           break;
+       case CC_BLANK:
+           cv = getcvec(v, 2, 0, 0);
+           addchr(cv, '\t');
+           addchr(cv, ' ');
+           break;
+       case CC_CNTRL:
+           cv = getcvec(v, 0, 2, 0);
+           addrange(cv, 0x0, 0x1f);
+           addrange(cv, 0x7f, 0x9f);
+           break;
+       case CC_DIGIT:
+           cv = getcvec(v, 0, 1, 0);
+           if (cv)
+               addrange(cv, (chr) '0', (chr) '9');
+           break;
+       case CC_PUNCT:
+           cv = getcvec(v, UCHAR_MAX, 0, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_ispunct((chr) i))
+                       addchr(cv, (chr) i);
+               }
+           }
+           break;
+       case CC_XDIGIT:
+           cv = getcvec(v, 0, 3, 0);
+           if (cv)
+           {
+               addrange(cv, '0', '9');
+               addrange(cv, 'a', 'f');
+               addrange(cv, 'A', 'F');
+           }
+           break;
+       case CC_SPACE:
+           cv = getcvec(v, UCHAR_MAX, 0, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_isspace((chr) i))
+                       addchr(cv, (chr) i);
+               }
+           }
+           break;
+       case CC_LOWER:
+           cv = getcvec(v, UCHAR_MAX, 0, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_islower((chr) i))
+                       addchr(cv, (chr) i);
+               }
+           }
+           break;
+       case CC_UPPER:
+           cv = getcvec(v, UCHAR_MAX, 0, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_isupper((chr) i))
+                       addchr(cv, (chr) i);
+               }
+           }
+           break;
+       case CC_GRAPH:
+           cv = getcvec(v, UCHAR_MAX, 0, 0);
+           if (cv)
+           {
+               for (i = 0; i <= UCHAR_MAX; i++)
+               {
+                   if (pg_isgraph((chr) i))
+                       addchr(cv, (chr) i);
+               }
+           }
+           break;
    }
-   break;
-    case CC_PUNCT:
-   cv = getcvec(v, UCHAR_MAX, 0, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_ispunct((chr) i))
-               addchr(cv, (chr) i);
-       }
-   }
-   break;
-    case CC_XDIGIT:
-   cv = getcvec(v, 0, 3, 0);
-   if (cv) {   
-       addrange(cv, '0', '9');
-       addrange(cv, 'a', 'f');
-       addrange(cv, 'A', 'F');
-   }
-   break;
-    case CC_SPACE:
-   cv = getcvec(v, UCHAR_MAX, 0, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_isspace((chr) i))
-               addchr(cv, (chr) i);
-       }
-   }
-   break;
-    case CC_LOWER:
-   cv = getcvec(v, UCHAR_MAX, 0, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_islower((chr) i))
-               addchr(cv, (chr) i);
-       }
-   }
-   break;
-    case CC_UPPER:
-   cv = getcvec(v, UCHAR_MAX, 0, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_isupper((chr) i))
-               addchr(cv, (chr) i);
-       }
-   }
-   break;
-    case CC_GRAPH:
-   cv = getcvec(v, UCHAR_MAX, 0, 0);
-   if (cv) {
-       for (i=0 ; i<= UCHAR_MAX ; i++) {
-           if (pg_isgraph((chr) i))
-               addchr(cv, (chr) i);
-       }
-   }
-   break;
-    }
-    if (cv == NULL) {
-   ERR(REG_ESPACE);
-    }
-    return cv;
+   if (cv == NULL)
+       ERR(REG_ESPACE);
+   return cv;
 }
 
 /*
@@ -561,37 +777,37 @@ cclass(struct vars *v,            /* context */
  * messy cases are done via range().
  */
 static struct cvec *
-allcases(struct vars *v,           /* context */
+allcases(struct vars * v,      /* context */
         chr pc)                /* character to get case equivs of */
 {
-    struct cvec *cv;
-    chr c = (chr)pc;
-    chr lc, uc;
+   struct cvec *cv;
+   chr         c = (chr) pc;
+   chr         lc,
+               uc;
 
-    lc = pg_tolower((chr)c);
-    uc = pg_toupper((chr)c);
+   lc = pg_tolower((chr) c);
+   uc = pg_toupper((chr) c);
 
    cv = getcvec(v, 2, 0, 0);
-    addchr(cv, lc);
-    if (lc != uc) {
-   addchr(cv, uc);
-    }
-    return cv;
+   addchr(cv, lc);
+   if (lc != uc)
+       addchr(cv, uc);
+   return cv;
 }
 
 /*
  * cmp - chr-substring compare
  *
- * Backrefs need this.  It should preferably be efficient.
+ * Backrefs need this. It should preferably be efficient.
  * Note that it does not need to report anything except equal/unequal.
  * Note also that the length is exact, and the comparison should not
  * stop at embedded NULs!
  */
-static int             /* 0 for equal, nonzero for unequal */
-cmp(const chr *x, const chr *y,            /* strings to compare */
-    size_t len)                /* exact length of comparison */
+static int                     /* 0 for equal, nonzero for unequal */
+cmp(const chr * x, const chr * y,      /* strings to compare */
+   size_t len)                 /* exact length of comparison */
 {
-    return memcmp(VS(x), VS(y), len*sizeof(chr));
+   return memcmp(VS(x), VS(y), len * sizeof(chr));
 }
 
 /*
@@ -602,14 +818,14 @@ cmp(const chr *x, const chr *y,           /* strings to compare */
  * Note also that the length is exact, and the comparison should not
  * stop at embedded NULs!
  */
-static int             /* 0 for equal, nonzero for unequal */
-casecmp(const chr *x, const chr *y,            /* strings to compare */
+static int                     /* 0 for equal, nonzero for unequal */
+casecmp(const chr * x, const chr * y,  /* strings to compare */
        size_t len)             /* exact length of comparison */
 {
-    for (; len > 0; len--, x++, y++) {
-   if ((*x!=*y) && (pg_tolower(*x) != pg_tolower(*y))) {
-       return 1;
+   for (; len > 0; len--, x++, y++)
+   {
+       if ((*x != *y) && (pg_tolower(*x) != pg_tolower(*y)))
+           return 1;
    }
-    }
-    return 0;
+   return 0;
 }
index 43e01ebe92b382ca6c68880e55452b89e329dc96..51fd8bfb8596e8ffd2d93673487809af067c589c 100644 (file)
@@ -2,21 +2,21 @@
  * NFA utilities.
  * This file is #included by regcomp.c.
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -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.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regc_nfa.c,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regc_nfa.c,v 1.2 2003/08/04 00:43:21 momjian Exp $
  *
  *
  * One or two things that technically ought to be in here
  * the color chains.
  */
 
-#define    NISERR()    VISERR(nfa->v)
-#define    NERR(e)     VERR(nfa->v, (e))
+#define NISERR()   VISERR(nfa->v)
+#define NERR(e)        VERR(nfa->v, (e))
 
 
 /*
  * newnfa - set up an NFA
  */
-static struct nfa *        /* the NFA, or NULL */
-newnfa(struct vars *v,
-      struct colormap *cm,
-      struct nfa *parent)      /* NULL if primary NFA */
+static struct nfa *                /* the NFA, or NULL */
+newnfa(struct vars * v,
+      struct colormap * cm,
+      struct nfa * parent)     /* NULL if primary NFA */
 {
    struct nfa *nfa;
 
-   nfa = (struct nfa *)MALLOC(sizeof(struct nfa));
+   nfa = (struct nfa *) MALLOC(sizeof(struct nfa));
    if (nfa == NULL)
        return NULL;
 
@@ -66,9 +66,10 @@ newnfa(struct vars *v,
    nfa->pre = newfstate(nfa, '>');     /* number 1 */
    nfa->parent = parent;
 
-   nfa->init = newstate(nfa);      /* may become invalid later */
+   nfa->init = newstate(nfa);  /* may become invalid later */
    nfa->final = newstate(nfa);
-   if (ISERR()) {
+   if (ISERR())
+   {
        freenfa(nfa);
        return NULL;
    }
@@ -79,7 +80,8 @@ newnfa(struct vars *v,
    newarc(nfa, '$', 1, nfa->final, nfa->post);
    newarc(nfa, '$', 0, nfa->final, nfa->post);
 
-   if (ISERR()) {
+   if (ISERR())
+   {
        freenfa(nfa);
        return NULL;
    }
@@ -90,15 +92,17 @@ newnfa(struct vars *v,
  * freenfa - free an entire NFA
  */
 static void
-freenfa(struct nfa *nfa)
+freenfa(struct nfa * nfa)
 {
    struct state *s;
 
-   while ((s = nfa->states) != NULL) {
-       s->nins = s->nouts = 0;     /* don't worry about arcs */
+   while ((s = nfa->states) != NULL)
+   {
+       s->nins = s->nouts = 0; /* don't worry about arcs */
        freestate(nfa, s);
    }
-   while ((s = nfa->free) != NULL) {
+   while ((s = nfa->free) != NULL)
+   {
        nfa->free = s->next;
        destroystate(nfa, s);
    }
@@ -113,17 +117,21 @@ freenfa(struct nfa *nfa)
 /*
  * newstate - allocate an NFA state, with zero flag value
  */
-static struct state *      /* NULL on error */
-newstate(struct nfa *nfa)
+static struct state *          /* NULL on error */
+newstate(struct nfa * nfa)
 {
    struct state *s;
 
-   if (nfa->free != NULL) {
+   if (nfa->free != NULL)
+   {
        s = nfa->free;
        nfa->free = s->next;
-   } else {
-       s = (struct state *)MALLOC(sizeof(struct state));
-       if (s == NULL) {
+   }
+   else
+   {
+       s = (struct state *) MALLOC(sizeof(struct state));
+       if (s == NULL)
+       {
            NERR(REG_ESPACE);
            return NULL;
        }
@@ -143,7 +151,8 @@ newstate(struct nfa *nfa)
    s->outs = NULL;
    s->tmp = NULL;
    s->next = NULL;
-   if (nfa->slast != NULL) {
+   if (nfa->slast != NULL)
+   {
        assert(nfa->slast->next == NULL);
        nfa->slast->next = s;
    }
@@ -155,14 +164,14 @@ newstate(struct nfa *nfa)
 /*
  * newfstate - allocate an NFA state with a specified flag value
  */
-static struct state *      /* NULL on error */
-newfstate(struct nfa *nfa, int flag)
+static struct state *          /* NULL on error */
+newfstate(struct nfa * nfa, int flag)
 {
    struct state *s;
 
    s = newstate(nfa);
    if (s != NULL)
-       s->flag = (char)flag;
+       s->flag = (char) flag;
    return s;
 }
 
@@ -170,8 +179,8 @@ newfstate(struct nfa *nfa, int flag)
  * dropstate - delete a state's inarcs and outarcs and free it
  */
 static void
-dropstate(struct nfa *nfa,
-         struct state *s)
+dropstate(struct nfa * nfa,
+         struct state * s)
 {
    struct arc *a;
 
@@ -186,8 +195,8 @@ dropstate(struct nfa *nfa,
  * freestate - free a state, which has no in-arcs or out-arcs
  */
 static void
-freestate(struct nfa *nfa,
-         struct state *s)
+freestate(struct nfa * nfa,
+         struct state * s)
 {
    assert(s != NULL);
    assert(s->nins == 0 && s->nouts == 0);
@@ -196,18 +205,21 @@ freestate(struct nfa *nfa,
    s->flag = 0;
    if (s->next != NULL)
        s->next->prev = s->prev;
-   else {
+   else
+   {
        assert(s == nfa->slast);
        nfa->slast = s->prev;
    }
    if (s->prev != NULL)
        s->prev->next = s->next;
-   else {
+   else
+   {
        assert(s == nfa->states);
        nfa->states = s->next;
    }
    s->prev = NULL;
-   s->next = nfa->free;    /* don't delete it, put it on the free list */
+   s->next = nfa->free;        /* don't delete it, put it on the free
+                                * list */
    nfa->free = s;
 }
 
@@ -215,14 +227,15 @@ freestate(struct nfa *nfa,
  * destroystate - really get rid of an already-freed state
  */
 static void
-destroystate(struct nfa *nfa,
-            struct state *s)
+destroystate(struct nfa * nfa,
+            struct state * s)
 {
    struct arcbatch *ab;
    struct arcbatch *abnext;
 
    assert(s->no == FREESTATE);
-   for (ab = s->oas.next; ab != NULL; ab = abnext) {
+   for (ab = s->oas.next; ab != NULL; ab = abnext)
+   {
        abnext = ab->next;
        FREE(ab);
    }
@@ -236,11 +249,11 @@ destroystate(struct nfa *nfa,
  * newarc - set up a new arc within an NFA
  */
 static void
-newarc(struct nfa *nfa,
+newarc(struct nfa * nfa,
       int t,
       pcolor co,
-      struct state *from,
-      struct state *to)
+      struct state * from,
+      struct state * to)
 {
    struct arc *a;
 
@@ -257,13 +270,13 @@ newarc(struct nfa *nfa,
    assert(a != NULL);
 
    a->type = t;
-   a->co = (color)co;
+   a->co = (color) co;
    a->to = to;
    a->from = from;
 
    /*
-    * Put the new arc on the beginning, not the end, of the chains.
-    * Not only is this easier, it has the very useful side effect that 
+    * Put the new arc on the beginning, not the end, of the chains. Not
+    * only is this easier, it has the very useful side effect that
     * deleting the most-recently-added arc is the cheapest case rather
     * than the most expensive one.
     */
@@ -284,36 +297,40 @@ newarc(struct nfa *nfa,
 /*
  * allocarc - allocate a new out-arc within a state
  */
-static struct arc *        /* NULL for failure */
-allocarc(struct nfa *nfa,
-        struct state *s)
+static struct arc *                /* NULL for failure */
+allocarc(struct nfa * nfa,
+        struct state * s)
 {
    struct arc *a;
    struct arcbatch *new;
-   int i;
+   int         i;
 
    /* shortcut */
-   if (s->free == NULL && s->noas < ABSIZE) {
+   if (s->free == NULL && s->noas < ABSIZE)
+   {
        a = &s->oas.a[s->noas];
        s->noas++;
        return a;
    }
 
    /* if none at hand, get more */
-   if (s->free == NULL) {
-       new = (struct arcbatch *)MALLOC(sizeof(struct arcbatch));
-       if (new == NULL) {
+   if (s->free == NULL)
+   {
+       new = (struct arcbatch *) MALLOC(sizeof(struct arcbatch));
+       if (new == NULL)
+       {
            NERR(REG_ESPACE);
            return NULL;
        }
        new->next = s->oas.next;
        s->oas.next = new;
 
-       for (i = 0; i < ABSIZE; i++) {
+       for (i = 0; i < ABSIZE; i++)
+       {
            new->a[i].type = 0;
-           new->a[i].freechain = &new->a[i+1];
+           new->a[i].freechain = &new->a[i + 1];
        }
-       new->a[ABSIZE-1].freechain = NULL;
+       new->a[ABSIZE - 1].freechain = NULL;
        s->free = &new->a[0];
    }
    assert(s->free != NULL);
@@ -327,8 +344,8 @@ allocarc(struct nfa *nfa,
  * freearc - free an arc
  */
 static void
-freearc(struct nfa *nfa,
-       struct arc *victim)
+freearc(struct nfa * nfa,
+       struct arc * victim)
 {
    struct state *from = victim->from;
    struct state *to = victim->to;
@@ -344,9 +361,10 @@ freearc(struct nfa *nfa,
    assert(from != NULL);
    assert(from->outs != NULL);
    a = from->outs;
-   if (a == victim)        /* simple case:  first in chain */
+   if (a == victim)            /* simple case:  first in chain */
        from->outs = victim->outchain;
-   else {
+   else
+   {
        for (; a != NULL && a->outchain != victim; a = a->outchain)
            continue;
        assert(a != NULL);
@@ -358,9 +376,10 @@ freearc(struct nfa *nfa,
    assert(to != NULL);
    assert(to->ins != NULL);
    a = to->ins;
-   if (a == victim)        /* simple case:  first in chain */
+   if (a == victim)            /* simple case:  first in chain */
        to->ins = victim->inchain;
-   else {
+   else
+   {
        for (; a != NULL && a->inchain != victim; a = a->inchain)
            continue;
        assert(a != NULL);
@@ -383,7 +402,7 @@ freearc(struct nfa *nfa,
  * If there is more than one such arc, the result is random.
  */
 static struct arc *
-findarc(struct state *s,
+findarc(struct state * s,
        int type,
        pcolor co)
 {
@@ -399,10 +418,10 @@ findarc(struct state *s,
  * cparc - allocate a new arc within an NFA, copying details from old one
  */
 static void
-cparc(struct nfa *nfa,
-     struct arc *oa,
-     struct state *from,
-     struct state *to)
+cparc(struct nfa * nfa,
+     struct arc * oa,
+     struct state * from,
+     struct state * to)
 {
    newarc(nfa, oa->type, oa->co, from, to);
 }
@@ -416,15 +435,16 @@ cparc(struct nfa *nfa,
  * ones to exploit the suppression built into newarc.
  */
 static void
-moveins(struct nfa *nfa,
-       struct state *old,
-       struct state *new)
+moveins(struct nfa * nfa,
+       struct state * old,
+       struct state * new)
 {
    struct arc *a;
 
    assert(old != new);
 
-   while ((a = old->ins) != NULL) {
+   while ((a = old->ins) != NULL)
+   {
        cparc(nfa, a, a->from, new);
        freearc(nfa, a);
    }
@@ -436,9 +456,9 @@ moveins(struct nfa *nfa,
  * copyins - copy all in arcs of a state to another state
  */
 static void
-copyins(struct nfa *nfa,
-       struct state *old,
-       struct state *new)
+copyins(struct nfa * nfa,
+       struct state * old,
+       struct state * new)
 {
    struct arc *a;
 
@@ -452,15 +472,16 @@ copyins(struct nfa *nfa,
  * moveouts - move all out arcs of a state to another state
  */
 static void
-moveouts(struct nfa *nfa,
-        struct state *old,
-        struct state *new)
+moveouts(struct nfa * nfa,
+        struct state * old,
+        struct state * new)
 {
    struct arc *a;
 
    assert(old != new);
 
-   while ((a = old->outs) != NULL) {
+   while ((a = old->outs) != NULL)
+   {
        cparc(nfa, a, new, a->to);
        freearc(nfa, a);
    }
@@ -470,9 +491,9 @@ moveouts(struct nfa *nfa,
  * copyouts - copy all out arcs of a state to another state
  */
 static void
-copyouts(struct nfa *nfa,
-        struct state *old,
-        struct state *new)
+copyouts(struct nfa * nfa,
+        struct state * old,
+        struct state * new)
 {
    struct arc *a;
 
@@ -486,10 +507,10 @@ copyouts(struct nfa *nfa,
  * cloneouts - copy out arcs of a state to another state pair, modifying type
  */
 static void
-cloneouts(struct nfa *nfa,
-         struct state *old,
-         struct state *from,
-         struct state *to,
+cloneouts(struct nfa * nfa,
+         struct state * old,
+         struct state * from,
+         struct state * to,
          int type)
 {
    struct arc *a;
@@ -507,20 +528,20 @@ cloneouts(struct nfa *nfa,
  * states using their tmp pointer.
  */
 static void
-delsub(struct nfa *nfa,
-      struct state *lp,    /* the sub-NFA goes from here... */
-      struct state *rp)    /* ...to here, *not* inclusive */
+delsub(struct nfa * nfa,
+      struct state * lp,       /* the sub-NFA goes from here... */
+      struct state * rp)       /* ...to here, *not* inclusive */
 {
    assert(lp != rp);
 
-   rp->tmp = rp;           /* mark end */
+   rp->tmp = rp;               /* mark end */
 
    deltraverse(nfa, lp, lp);
    assert(lp->nouts == 0 && rp->nins == 0);    /* did the job */
-   assert(lp->no != FREESTATE && rp->no != FREESTATE); /* no more */
+   assert(lp->no != FREESTATE && rp->no != FREESTATE); /* no more */
 
-   rp->tmp = NULL;         /* unmark end */
-   lp->tmp = NULL;         /* and begin, marked by deltraverse */
+   rp->tmp = NULL;             /* unmark end */
+   lp->tmp = NULL;             /* and begin, marked by deltraverse */
 }
 
 /*
@@ -528,36 +549,38 @@ delsub(struct nfa *nfa,
  * This routine's basic job is to destroy all out-arcs of the state.
  */
 static void
-deltraverse(struct nfa *nfa,
-           struct state *leftend,
-           struct state *s)
+deltraverse(struct nfa * nfa,
+           struct state * leftend,
+           struct state * s)
 {
    struct arc *a;
    struct state *to;
 
    if (s->nouts == 0)
-       return;         /* nothing to do */
+       return;                 /* nothing to do */
    if (s->tmp != NULL)
-       return;         /* already in progress */
+       return;                 /* already in progress */
 
-   s->tmp = s;         /* mark as in progress */
+   s->tmp = s;                 /* mark as in progress */
 
-   while ((a = s->outs) != NULL) {
+   while ((a = s->outs) != NULL)
+   {
        to = a->to;
        deltraverse(nfa, leftend, to);
        assert(to->nouts == 0 || to->tmp != NULL);
        freearc(nfa, a);
-       if (to->nins == 0 && to->tmp == NULL) {
+       if (to->nins == 0 && to->tmp == NULL)
+       {
            assert(to->nouts == 0);
            freestate(nfa, to);
        }
    }
 
-   assert(s->no != FREESTATE); /* we're still here */
-   assert(s == leftend || s->nins != 0);   /* and still reachable */
+   assert(s->no != FREESTATE); /* we're still here */
+   assert(s == leftend || s->nins != 0);       /* and still reachable */
    assert(s->nouts == 0);      /* but have no outarcs */
 
-   s->tmp = NULL;          /* we're done here */
+   s->tmp = NULL;              /* we're done here */
 }
 
 /*
@@ -568,13 +591,14 @@ deltraverse(struct nfa *nfa,
  * it's a state pointer, didn't you? :-))
  */
 static void
-dupnfa(struct nfa *nfa,
-      struct state *start,     /* duplicate of subNFA starting here */
-      struct state *stop,      /* and stopping here */
-      struct state *from,      /* stringing duplicate from here */
-      struct state *to)        /* to here */
+dupnfa(struct nfa * nfa,
+      struct state * start,    /* duplicate of subNFA starting here */
+      struct state * stop,     /* and stopping here */
+      struct state * from,     /* stringing duplicate from here */
+      struct state * to)       /* to here */
 {
-   if (start == stop) {
+   if (start == stop)
+   {
        newarc(nfa, EMPTY, 0, from, to);
        return;
    }
@@ -591,23 +615,25 @@ dupnfa(struct nfa *nfa,
  * duptraverse - recursive heart of dupnfa
  */
 static void
-duptraverse(struct nfa *nfa,
-           struct state *s,
-           struct state *stmp)     /* s's duplicate, or NULL */
+duptraverse(struct nfa * nfa,
+           struct state * s,
+           struct state * stmp)    /* s's duplicate, or NULL */
 {
    struct arc *a;
 
    if (s->tmp != NULL)
-       return;     /* already done */
+       return;                 /* already done */
 
    s->tmp = (stmp == NULL) ? newstate(nfa) : stmp;
-   if (s->tmp == NULL) {
+   if (s->tmp == NULL)
+   {
        assert(NISERR());
        return;
    }
 
-   for (a = s->outs; a != NULL && !NISERR(); a = a->outchain) {
-       duptraverse(nfa, a->to, (struct state *)NULL);
+   for (a = s->outs; a != NULL && !NISERR(); a = a->outchain)
+   {
+       duptraverse(nfa, a->to, (struct state *) NULL);
        assert(a->to->tmp != NULL);
        cparc(nfa, a, s->tmp, a->to->tmp);
    }
@@ -617,8 +643,8 @@ duptraverse(struct nfa *nfa,
  * cleartraverse - recursive cleanup for algorithms that leave tmp ptrs set
  */
 static void
-cleartraverse(struct nfa *nfa,
-             struct state *s)
+cleartraverse(struct nfa * nfa,
+             struct state * s)
 {
    struct arc *a;
 
@@ -634,15 +660,18 @@ cleartraverse(struct nfa *nfa,
  * specialcolors - fill in special colors for an NFA
  */
 static void
-specialcolors(struct nfa *nfa)
+specialcolors(struct nfa * nfa)
 {
    /* false colors for BOS, BOL, EOS, EOL */
-   if (nfa->parent == NULL) {
+   if (nfa->parent == NULL)
+   {
        nfa->bos[0] = pseudocolor(nfa->cm);
        nfa->bos[1] = pseudocolor(nfa->cm);
        nfa->eos[0] = pseudocolor(nfa->cm);
        nfa->eos[1] = pseudocolor(nfa->cm);
-   } else {
+   }
+   else
+   {
        assert(nfa->parent->bos[0] != COLORLESS);
        nfa->bos[0] = nfa->parent->bos[0];
        assert(nfa->parent->bos[1] != COLORLESS);
@@ -657,57 +686,60 @@ specialcolors(struct nfa *nfa)
 /*
  * optimize - optimize an NFA
  */
-static long            /* re_info bits */
-optimize(struct nfa *nfa,
+static long                        /* re_info bits */
+optimize(struct nfa * nfa,
         FILE *f)               /* for debug output; NULL none */
 {
 #ifdef REG_DEBUG
-   int verbose = (f != NULL) ? 1 : 0;
+   int         verbose = (f != NULL) ? 1 : 0;
 
    if (verbose)
        fprintf(f, "\ninitial cleanup:\n");
 #endif
-   cleanup(nfa);       /* may simplify situation */
+   cleanup(nfa);               /* may simplify situation */
 #ifdef REG_DEBUG
    if (verbose)
        dumpnfa(nfa, f);
    if (verbose)
        fprintf(f, "\nempties:\n");
 #endif
-   fixempties(nfa, f); /* get rid of EMPTY arcs */
+   fixempties(nfa, f);         /* get rid of EMPTY arcs */
 #ifdef REG_DEBUG
    if (verbose)
        fprintf(f, "\nconstraints:\n");
 #endif
-   pullback(nfa, f);   /* pull back constraints backward */
-   pushfwd(nfa, f);    /* push fwd constraints forward */
+   pullback(nfa, f);           /* pull back constraints backward */
+   pushfwd(nfa, f);            /* push fwd constraints forward */
 #ifdef REG_DEBUG
    if (verbose)
        fprintf(f, "\nfinal cleanup:\n");
 #endif
-   cleanup(nfa);       /* final tidying */
-   return analyze(nfa);    /* and analysis */
+   cleanup(nfa);               /* final tidying */
+   return analyze(nfa);        /* and analysis */
 }
 
 /*
  * pullback - pull back constraints backward to (with luck) eliminate them
  */
 static void
-pullback(struct nfa *nfa,
-        FILE *f)           /* for debug output; NULL none */
+pullback(struct nfa * nfa,
+        FILE *f)               /* for debug output; NULL none */
 {
    struct state *s;
    struct state *nexts;
    struct arc *a;
    struct arc *nexta;
-   int progress;
+   int         progress;
 
    /* find and pull until there are no more */
-   do {
+   do
+   {
        progress = 0;
-       for (s = nfa->states; s != NULL && !NISERR(); s = nexts) {
+       for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
+       {
            nexts = s->next;
-           for (a = s->outs; a != NULL && !NISERR(); a = nexta) {
+           for (a = s->outs; a != NULL && !NISERR(); a = nexta)
+           {
                nexta = a->outchain;
                if (a->type == '^' || a->type == BEHIND)
                    if (pull(nfa, a))
@@ -721,9 +753,11 @@ pullback(struct nfa *nfa,
    if (NISERR())
        return;
 
-   for (a = nfa->pre->outs; a != NULL; a = nexta) {
+   for (a = nfa->pre->outs; a != NULL; a = nexta)
+   {
        nexta = a->outchain;
-       if (a->type == '^') {
+       if (a->type == '^')
+       {
            assert(a->co == 0 || a->co == 1);
            newarc(nfa, PLAIN, nfa->bos[a->co], a->from, a->to);
            freearc(nfa, a);
@@ -737,9 +771,9 @@ pullback(struct nfa *nfa,
  * one state -- the constraint's from state -- and only if the constraint
  * was that state's last outarc.
  */
-static int         /* 0 couldn't, 1 could */
-pull(struct nfa *nfa,
-    struct arc *con)
+static int                     /* 0 couldn't, 1 could */
+pull(struct nfa * nfa,
+    struct arc * con)
 {
    struct state *from = con->from;
    struct state *to = con->to;
@@ -747,25 +781,28 @@ pull(struct nfa *nfa,
    struct arc *nexta;
    struct state *s;
 
-   if (from == to) {   /* circular constraint is pointless */
+   if (from == to)
+   {                           /* circular constraint is pointless */
        freearc(nfa, con);
        return 1;
    }
-   if (from->flag)     /* can't pull back beyond start */
+   if (from->flag)             /* can't pull back beyond start */
        return 0;
-   if (from->nins == 0) {  /* unreachable */
+   if (from->nins == 0)
+   {                           /* unreachable */
        freearc(nfa, con);
        return 1;
    }
 
    /* first, clone from state if necessary to avoid other outarcs */
-   if (from->nouts > 1) {
+   if (from->nouts > 1)
+   {
        s = newstate(nfa);
        if (NISERR())
            return 0;
        assert(to != from);     /* con is not an inarc */
-       copyins(nfa, from, s);      /* duplicate inarcs */
-       cparc(nfa, con, s, to);     /* move constraint arc */
+       copyins(nfa, from, s);  /* duplicate inarcs */
+       cparc(nfa, con, s, to); /* move constraint arc */
        freearc(nfa, con);
        from = s;
        con = from->outs;
@@ -773,27 +810,29 @@ pull(struct nfa *nfa,
    assert(from->nouts == 1);
 
    /* propagate the constraint into the from state's inarcs */
-   for (a = from->ins; a != NULL; a = nexta) {
+   for (a = from->ins; a != NULL; a = nexta)
+   {
        nexta = a->inchain;
-       switch (combine(con, a)) {
-       case INCOMPATIBLE:  /* destroy the arc */
-           freearc(nfa, a);
-           break;
-       case SATISFIED:     /* no action needed */
-           break;
-       case COMPATIBLE:    /* swap the two arcs, more or less */
-           s = newstate(nfa);
-           if (NISERR())
-               return 0;
-           cparc(nfa, a, s, to);       /* anticipate move */
-           cparc(nfa, con, a->from, s);
-           if (NISERR())
-               return 0;
-           freearc(nfa, a);
-           break;
-       default:
-           assert(NOTREACHED);
-           break;
+       switch (combine(con, a))
+       {
+           case INCOMPATIBLE:  /* destroy the arc */
+               freearc(nfa, a);
+               break;
+           case SATISFIED:     /* no action needed */
+               break;
+           case COMPATIBLE:    /* swap the two arcs, more or less */
+               s = newstate(nfa);
+               if (NISERR())
+                   return 0;
+               cparc(nfa, a, s, to);   /* anticipate move */
+               cparc(nfa, con, a->from, s);
+               if (NISERR())
+                   return 0;
+               freearc(nfa, a);
+               break;
+           default:
+               assert(NOTREACHED);
+               break;
        }
    }
 
@@ -807,21 +846,24 @@ pull(struct nfa *nfa,
  * pushfwd - push forward constraints forward to (with luck) eliminate them
  */
 static void
-pushfwd(struct nfa *nfa,
-       FILE *f)            /* for debug output; NULL none */
+pushfwd(struct nfa * nfa,
+       FILE *f)                /* for debug output; NULL none */
 {
    struct state *s;
    struct state *nexts;
    struct arc *a;
    struct arc *nexta;
-   int progress;
+   int         progress;
 
    /* find and push until there are no more */
-   do {
+   do
+   {
        progress = 0;
-       for (s = nfa->states; s != NULL && !NISERR(); s = nexts) {
+       for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
+       {
            nexts = s->next;
-           for (a = s->ins; a != NULL && !NISERR(); a = nexta) {
+           for (a = s->ins; a != NULL && !NISERR(); a = nexta)
+           {
                nexta = a->inchain;
                if (a->type == '$' || a->type == AHEAD)
                    if (push(nfa, a))
@@ -835,9 +877,11 @@ pushfwd(struct nfa *nfa,
    if (NISERR())
        return;
 
-   for (a = nfa->post->ins; a != NULL; a = nexta) {
+   for (a = nfa->post->ins; a != NULL; a = nexta)
+   {
        nexta = a->inchain;
-       if (a->type == '$') {
+       if (a->type == '$')
+       {
            assert(a->co == 0 || a->co == 1);
            newarc(nfa, PLAIN, nfa->eos[a->co], a->from, a->to);
            freearc(nfa, a);
@@ -851,9 +895,9 @@ pushfwd(struct nfa *nfa,
  * one state -- the constraint's to state -- and only if the constraint
  * was that state's last inarc.
  */
-static int         /* 0 couldn't, 1 could */
-push(struct nfa *nfa,
-    struct arc *con)
+static int                     /* 0 couldn't, 1 could */
+push(struct nfa * nfa,
+    struct arc * con)
 {
    struct state *from = con->from;
    struct state *to = con->to;
@@ -861,24 +905,27 @@ push(struct nfa *nfa,
    struct arc *nexta;
    struct state *s;
 
-   if (to == from) {   /* circular constraint is pointless */
+   if (to == from)
+   {                           /* circular constraint is pointless */
        freearc(nfa, con);
        return 1;
    }
-   if (to->flag)       /* can't push forward beyond end */
+   if (to->flag)               /* can't push forward beyond end */
        return 0;
-   if (to->nouts == 0) {   /* dead end */
+   if (to->nouts == 0)
+   {                           /* dead end */
        freearc(nfa, con);
        return 1;
    }
 
    /* first, clone to state if necessary to avoid other inarcs */
-   if (to->nins > 1) {
+   if (to->nins > 1)
+   {
        s = newstate(nfa);
        if (NISERR())
            return 0;
-       copyouts(nfa, to, s);       /* duplicate outarcs */
-       cparc(nfa, con, from, s);   /* move constraint */
+       copyouts(nfa, to, s);   /* duplicate outarcs */
+       cparc(nfa, con, from, s);       /* move constraint */
        freearc(nfa, con);
        to = s;
        con = to->ins;
@@ -886,88 +933,91 @@ push(struct nfa *nfa,
    assert(to->nins == 1);
 
    /* propagate the constraint into the to state's outarcs */
-   for (a = to->outs; a != NULL; a = nexta) {
+   for (a = to->outs; a != NULL; a = nexta)
+   {
        nexta = a->outchain;
-       switch (combine(con, a)) {
-       case INCOMPATIBLE:  /* destroy the arc */
-           freearc(nfa, a);
-           break;
-       case SATISFIED:     /* no action needed */
-           break;
-       case COMPATIBLE:    /* swap the two arcs, more or less */
-           s = newstate(nfa);
-           if (NISERR())
-               return 0;
-           cparc(nfa, con, s, a->to);  /* anticipate move */
-           cparc(nfa, a, from, s);
-           if (NISERR())
-               return 0;
-           freearc(nfa, a);
-           break;
-       default:
-           assert(NOTREACHED);
-           break;
+       switch (combine(con, a))
+       {
+           case INCOMPATIBLE:  /* destroy the arc */
+               freearc(nfa, a);
+               break;
+           case SATISFIED:     /* no action needed */
+               break;
+           case COMPATIBLE:    /* swap the two arcs, more or less */
+               s = newstate(nfa);
+               if (NISERR())
+                   return 0;
+               cparc(nfa, con, s, a->to);      /* anticipate move */
+               cparc(nfa, a, from, s);
+               if (NISERR())
+                   return 0;
+               freearc(nfa, a);
+               break;
+           default:
+               assert(NOTREACHED);
+               break;
        }
    }
 
    /* remaining outarcs, if any, incorporate the constraint */
    moveouts(nfa, to, from);
-   dropstate(nfa, to);     /* will free the constraint */
+   dropstate(nfa, to);         /* will free the constraint */
    return 1;
 }
 
 /*
  * combine - constraint lands on an arc, what happens?
  *
- * #def    INCOMPATIBLE    1   // destroys arc
- * #def    SATISFIED       2   // constraint satisfied
- * #def    COMPATIBLE      3   // compatible but not satisfied yet
+ * #def INCOMPATIBLE   1   // destroys arc
+ * #def SATISFIED      2   // constraint satisfied
+ * #def COMPATIBLE     3   // compatible but not satisfied yet
  */
 static int
-combine(struct arc *con,
-       struct arc *a)
+combine(struct arc * con,
+       struct arc * a)
 {
-#  define  CA(ct,at)   (((ct)<<CHAR_BIT) | (at))
-
-   switch (CA(con->type, a->type)) {
-   case CA('^', PLAIN):        /* newlines are handled separately */
-   case CA('$', PLAIN):
-       return INCOMPATIBLE;
-       break;
-   case CA(AHEAD, PLAIN):      /* color constraints meet colors */
-   case CA(BEHIND, PLAIN):
-       if (con->co == a->co)
-           return SATISFIED;
-       return INCOMPATIBLE;
-       break;
-   case CA('^', '^'):      /* collision, similar constraints */
-   case CA('$', '$'):
-   case CA(AHEAD, AHEAD):
-   case CA(BEHIND, BEHIND):
-       if (con->co == a->co)       /* true duplication */
-           return SATISFIED;
-       return INCOMPATIBLE;
-       break;
-   case CA('^', BEHIND):       /* collision, dissimilar constraints */
-   case CA(BEHIND, '^'):
-   case CA('$', AHEAD):
-   case CA(AHEAD, '$'):
-       return INCOMPATIBLE;
-       break;
-   case CA('^', '$'):      /* constraints passing each other */
-   case CA('^', AHEAD):
-   case CA(BEHIND, '$'):
-   case CA(BEHIND, AHEAD):
-   case CA('$', '^'):
-   case CA('$', BEHIND):
-   case CA(AHEAD, '^'):
-   case CA(AHEAD, BEHIND):
-   case CA('^', LACON):
-   case CA(BEHIND, LACON):
-   case CA('$', LACON):
-   case CA(AHEAD, LACON):
-       return COMPATIBLE;
-       break;
+#define  CA(ct,at)  (((ct)<<CHAR_BIT) | (at))
+
+   switch (CA(con->type, a->type))
+   {
+       case CA('^', PLAIN):    /* newlines are handled separately */
+       case CA('$', PLAIN):
+           return INCOMPATIBLE;
+           break;
+       case CA(AHEAD, PLAIN):  /* color constraints meet colors */
+       case CA(BEHIND, PLAIN):
+           if (con->co == a->co)
+               return SATISFIED;
+           return INCOMPATIBLE;
+           break;
+       case CA('^', '^'):      /* collision, similar constraints */
+       case CA('$', '$'):
+       case CA(AHEAD, AHEAD):
+       case CA(BEHIND, BEHIND):
+           if (con->co == a->co)       /* true duplication */
+               return SATISFIED;
+           return INCOMPATIBLE;
+           break;
+       case CA('^', BEHIND):   /* collision, dissimilar constraints */
+       case CA(BEHIND, '^'):
+       case CA('$', AHEAD):
+       case CA(AHEAD, '$'):
+           return INCOMPATIBLE;
+           break;
+       case CA('^', '$'):      /* constraints passing each other */
+       case CA('^', AHEAD):
+       case CA(BEHIND, '$'):
+       case CA(BEHIND, AHEAD):
+       case CA('$', '^'):
+       case CA('$', BEHIND):
+       case CA(AHEAD, '^'):
+       case CA(AHEAD, BEHIND):
+       case CA('^', LACON):
+       case CA(BEHIND, LACON):
+       case CA('$', LACON):
+       case CA(AHEAD, LACON):
+           return COMPATIBLE;
+           break;
    }
    assert(NOTREACHED);
    return INCOMPATIBLE;        /* for benefit of blind compilers */
@@ -977,21 +1027,24 @@ combine(struct arc *con,
  * fixempties - get rid of EMPTY arcs
  */
 static void
-fixempties(struct nfa *nfa,
-          FILE *f)         /* for debug output; NULL none */
+fixempties(struct nfa * nfa,
+          FILE *f)             /* for debug output; NULL none */
 {
    struct state *s;
    struct state *nexts;
    struct arc *a;
    struct arc *nexta;
-   int progress;
+   int         progress;
 
    /* find and eliminate empties until there are no more */
-   do {
+   do
+   {
        progress = 0;
-       for (s = nfa->states; s != NULL && !NISERR(); s = nexts) {
+       for (s = nfa->states; s != NULL && !NISERR(); s = nexts)
+       {
            nexts = s->next;
-           for (a = s->outs; a != NULL && !NISERR(); a = nexta) {
+           for (a = s->outs; a != NULL && !NISERR(); a = nexta)
+           {
                nexta = a->outchain;
                if (a->type == EMPTY && unempty(nfa, a))
                    progress = 1;
@@ -1009,46 +1062,55 @@ fixempties(struct nfa *nfa,
  * Actually, as it stands this function always succeeds, but the return
  * value is kept with an eye on possible future changes.
  */
-static int         /* 0 couldn't, 1 could */
-unempty(struct nfa *nfa,
-       struct arc *a)
+static int                     /* 0 couldn't, 1 could */
+unempty(struct nfa * nfa,
+       struct arc * a)
 {
    struct state *from = a->from;
    struct state *to = a->to;
-   int usefrom;        /* work on from, as opposed to to? */
+   int         usefrom;        /* work on from, as opposed to to? */
 
    assert(a->type == EMPTY);
    assert(from != nfa->pre && to != nfa->post);
 
-   if (from == to) {       /* vacuous loop */
+   if (from == to)
+   {                           /* vacuous loop */
        freearc(nfa, a);
        return 1;
    }
 
    /* decide which end to work on */
-   usefrom = 1;            /* default:  attack from */
+   usefrom = 1;                /* default:  attack from */
    if (from->nouts > to->nins)
        usefrom = 0;
-   else if (from->nouts == to->nins) {
+   else if (from->nouts == to->nins)
+   {
        /* decide on secondary issue:  move/copy fewest arcs */
        if (from->nins > to->nouts)
            usefrom = 0;
    }
-       
+
    freearc(nfa, a);
-   if (usefrom) {
-       if (from->nouts == 0) {
+   if (usefrom)
+   {
+       if (from->nouts == 0)
+       {
            /* was the state's only outarc */
            moveins(nfa, from, to);
            freestate(nfa, from);
-       } else
+       }
+       else
            copyins(nfa, from, to);
-   } else {
-       if (to->nins == 0) {
+   }
+   else
+   {
+       if (to->nins == 0)
+       {
            /* was the state's only inarc */
            moveouts(nfa, to, from);
            freestate(nfa, to);
-       } else
+       }
+       else
            copyouts(nfa, to, from);
    }
 
@@ -1059,17 +1121,18 @@ unempty(struct nfa *nfa,
  * cleanup - clean up NFA after optimizations
  */
 static void
-cleanup(struct nfa *nfa)
+cleanup(struct nfa * nfa)
 {
    struct state *s;
    struct state *nexts;
-   int n;
+   int         n;
 
    /* clear out unreachable or dead-end states */
    /* use pre to mark reachable, then post to mark can-reach-post */
-   markreachable(nfa, nfa->pre, (struct state *)NULL, nfa->pre);
+   markreachable(nfa, nfa->pre, (struct state *) NULL, nfa->pre);
    markcanreach(nfa, nfa->post, nfa->pre, nfa->post);
-   for (s = nfa->states; s != NULL; s = nexts) {
+   for (s = nfa->states; s != NULL; s = nexts)
+   {
        nexts = s->next;
        if (s->tmp != nfa->post && !s->flag)
            dropstate(nfa, s);
@@ -1090,10 +1153,11 @@ cleanup(struct nfa *nfa)
  * markreachable - recursive marking of reachable states
  */
 static void
-markreachable(struct nfa *nfa,
-             struct state *s,
-             struct state *okay, /* consider only states with this mark */
-             struct state *mark) /* the value to mark with */
+markreachable(struct nfa * nfa,
+             struct state * s,
+             struct state * okay,      /* consider only states with this
+                                        * mark */
+             struct state * mark)      /* the value to mark with */
 {
    struct arc *a;
 
@@ -1109,10 +1173,11 @@ markreachable(struct nfa *nfa,
  * markcanreach - recursive marking of states which can reach here
  */
 static void
-markcanreach(struct nfa *nfa,
-            struct state *s,
-            struct state *okay, /* consider only states with this mark */
-            struct state *mark) /* the value to mark with */
+markcanreach(struct nfa * nfa,
+            struct state * s,
+            struct state * okay,       /* consider only states with this
+                                        * mark */
+            struct state * mark)       /* the value to mark with */
 {
    struct arc *a;
 
@@ -1127,8 +1192,8 @@ markcanreach(struct nfa *nfa,
 /*
  * analyze - ascertain potentially-useful facts about an optimized NFA
  */
-static long            /* re_info bits to be ORed in */
-analyze(struct nfa *nfa)
+static long                        /* re_info bits to be ORed in */
+analyze(struct nfa * nfa)
 {
    struct arc *a;
    struct arc *aa;
@@ -1146,29 +1211,31 @@ analyze(struct nfa *nfa)
  * compact - compact an NFA
  */
 static void
-compact(struct nfa *nfa,
-       struct cnfa *cnfa)
+compact(struct nfa * nfa,
+       struct cnfa * cnfa)
 {
    struct state *s;
    struct arc *a;
-   size_t nstates;
-   size_t narcs;
+   size_t      nstates;
+   size_t      narcs;
    struct carc *ca;
    struct carc *first;
 
-   assert (!NISERR());
+   assert(!NISERR());
 
    nstates = 0;
    narcs = 0;
-   for (s = nfa->states; s != NULL; s = s->next) {
+   for (s = nfa->states; s != NULL; s = s->next)
+   {
        nstates++;
        narcs += 1 + s->nouts + 1;
        /* 1 as a fake for flags, nouts for arcs, 1 as endmarker */
    }
 
-   cnfa->states = (struct carc **)MALLOC(nstates * sizeof(struct carc *));
-   cnfa->arcs = (struct carc *)MALLOC(narcs * sizeof(struct carc));
-   if (cnfa->states == NULL || cnfa->arcs == NULL) {
+   cnfa->states = (struct carc **) MALLOC(nstates * sizeof(struct carc *));
+   cnfa->arcs = (struct carc *) MALLOC(narcs * sizeof(struct carc));
+   if (cnfa->states == NULL || cnfa->arcs == NULL)
+   {
        if (cnfa->states != NULL)
            FREE(cnfa->states);
        if (cnfa->arcs != NULL)
@@ -1187,31 +1254,33 @@ compact(struct nfa *nfa,
    cnfa->flags = 0;
 
    ca = cnfa->arcs;
-   for (s = nfa->states; s != NULL; s = s->next) {
-       assert((size_t)s->no < nstates);
+   for (s = nfa->states; s != NULL; s = s->next)
+   {
+       assert((size_t) s->no < nstates);
        cnfa->states[s->no] = ca;
-       ca->co = 0;     /* clear and skip flags "arc" */
+       ca->co = 0;             /* clear and skip flags "arc" */
        ca++;
        first = ca;
        for (a = s->outs; a != NULL; a = a->outchain)
-           switch (a->type) {
-           case PLAIN:
-               ca->co = a->co;
-               ca->to = a->to->no;
-               ca++;
-               break;
-           case LACON:
-               assert(s->no != cnfa->pre);
-               ca->co = (color)(cnfa->ncolors + a->co);
-               ca->to = a->to->no;
-               ca++;
-               cnfa->flags |= HASLACONS;
-               break;
-           default:
-               assert(NOTREACHED);
-               break;
+           switch (a->type)
+           {
+               case PLAIN:
+                   ca->co = a->co;
+                   ca->to = a->to->no;
+                   ca++;
+                   break;
+               case LACON:
+                   assert(s->no != cnfa->pre);
+                   ca->co = (color) (cnfa->ncolors + a->co);
+                   ca->to = a->to->no;
+                   ca++;
+                   cnfa->flags |= HASLACONS;
+                   break;
+               default:
+                   assert(NOTREACHED);
+                   break;
            }
-       carcsort(first, ca-1);
+       carcsort(first, ca - 1);
        ca->co = COLORLESS;
        ca->to = 0;
        ca++;
@@ -1232,8 +1301,8 @@ compact(struct nfa *nfa,
  * you're in real trouble anyway.
  */
 static void
-carcsort(struct carc *first,
-        struct carc *last)
+carcsort(struct carc * first,
+        struct carc * last)
 {
    struct carc *p;
    struct carc *q;
@@ -1245,7 +1314,8 @@ carcsort(struct carc *first,
    for (p = first; p <= last; p++)
        for (q = p; q <= last; q++)
            if (p->co > q->co ||
-                   (p->co == q->co && p->to > q->to)) {
+               (p->co == q->co && p->to > q->to))
+           {
                assert(p != q);
                tmp = *p;
                *p = *q;
@@ -1257,9 +1327,9 @@ carcsort(struct carc *first,
  * freecnfa - free a compacted NFA
  */
 static void
-freecnfa(struct cnfa *cnfa)
+freecnfa(struct cnfa * cnfa)
 {
-   assert(cnfa->nstates != 0); /* not empty already */
+   assert(cnfa->nstates != 0); /* not empty already */
    cnfa->nstates = 0;
    FREE(cnfa->states);
    FREE(cnfa->arcs);
@@ -1269,7 +1339,7 @@ freecnfa(struct cnfa *cnfa)
  * dumpnfa - dump an NFA in human-readable form
  */
 static void
-dumpnfa(struct nfa *nfa,
+dumpnfa(struct nfa * nfa,
        FILE *f)
 {
 #ifdef REG_DEBUG
@@ -1277,13 +1347,13 @@ dumpnfa(struct nfa *nfa,
 
    fprintf(f, "pre %d, post %d", nfa->pre->no, nfa->post->no);
    if (nfa->bos[0] != COLORLESS)
-       fprintf(f, ", bos [%ld]", (long)nfa->bos[0]);
+       fprintf(f, ", bos [%ld]", (long) nfa->bos[0]);
    if (nfa->bos[1] != COLORLESS)
-       fprintf(f, ", bol [%ld]", (long)nfa->bos[1]);
+       fprintf(f, ", bol [%ld]", (long) nfa->bos[1]);
    if (nfa->eos[0] != COLORLESS)
-       fprintf(f, ", eos [%ld]", (long)nfa->eos[0]);
+       fprintf(f, ", eos [%ld]", (long) nfa->eos[0]);
    if (nfa->eos[1] != COLORLESS)
-       fprintf(f, ", eol [%ld]", (long)nfa->eos[1]);
+       fprintf(f, ", eol [%ld]", (long) nfa->eos[1]);
    fprintf(f, "\n");
    for (s = nfa->states; s != NULL; s = s->next)
        dumpstate(s, f);
@@ -1293,19 +1363,19 @@ dumpnfa(struct nfa *nfa,
 #endif
 }
 
-#ifdef REG_DEBUG       /* subordinates of dumpnfa */
+#ifdef REG_DEBUG               /* subordinates of dumpnfa */
 
 /*
  * dumpstate - dump an NFA state in human-readable form
  */
 static void
-dumpstate(struct state *s,
+dumpstate(struct state * s,
          FILE *f)
 {
    struct arc *a;
 
    fprintf(f, "%d%s%c", s->no, (s->tmp != NULL) ? "T" : "",
-                   (s->flag) ? s->flag : '.');
+           (s->flag) ? s->flag : '.');
    if (s->prev != NULL && s->prev->next != s)
        fprintf(f, "\tstate chain bad\n");
    if (s->nouts == 0)
@@ -1313,7 +1383,8 @@ dumpstate(struct state *s,
    else
        dumparcs(s, f);
    fflush(f);
-   for (a = s->ins; a != NULL; a = a->inchain) {
+   for (a = s->ins; a != NULL; a = a->inchain)
+   {
        if (a->to != s)
            fprintf(f, "\tlink from %d to %d on %d's in-chain\n",
                    a->from->no, a->to->no, s->no);
@@ -1324,10 +1395,10 @@ dumpstate(struct state *s,
  * dumparcs - dump out-arcs in human-readable form
  */
 static void
-dumparcs(struct state *s,
+dumparcs(struct state * s,
         FILE *f)
 {
-   int pos;
+   int         pos;
 
    assert(s->nouts > 0);
    /* printing arcs in reverse order is usually clearer */
@@ -1339,19 +1410,21 @@ dumparcs(struct state *s,
 /*
  * dumprarcs - dump remaining outarcs, recursively, in reverse order
  */
-static int         /* resulting print position */
-dumprarcs(struct arc *a,
-         struct state *s,
+static int                     /* resulting print position */
+dumprarcs(struct arc * a,
+         struct state * s,
          FILE *f,
-         int pos)          /* initial print position */
+         int pos)              /* initial print position */
 {
    if (a->outchain != NULL)
        pos = dumprarcs(a->outchain, s, f, pos);
    dumparc(a, s, f);
-   if (pos == 5) {
+   if (pos == 5)
+   {
        fprintf(f, "\n");
        pos = 1;
-   } else
+   }
+   else
        pos++;
    return pos;
 }
@@ -1360,83 +1433,85 @@ dumprarcs(struct arc *a,
  * dumparc - dump one outarc in readable form, including prefixing tab
  */
 static void
-dumparc(struct arc *a,
-       struct state *s,
+dumparc(struct arc * a,
+       struct state * s,
        FILE *f)
 {
    struct arc *aa;
    struct arcbatch *ab;
 
    fprintf(f, "\t");
-   switch (a->type) {
-   case PLAIN:
-       fprintf(f, "[%ld]", (long)a->co);
-       break;
-   case AHEAD:
-       fprintf(f, ">%ld>", (long)a->co);
-       break;
-   case BEHIND:
-       fprintf(f, "<%ld<", (long)a->co);
-       break;
-   case LACON:
-       fprintf(f, ":%ld:", (long)a->co);
-       break;
-   case '^':
-   case '$':
-       fprintf(f, "%c%d", a->type, (int)a->co);
-       break;
-   case EMPTY:
-       break;
-   default:
-       fprintf(f, "0x%x/0%lo", a->type, (long)a->co);
-       break;
+   switch (a->type)
+   {
+       case PLAIN:
+           fprintf(f, "[%ld]", (long) a->co);
+           break;
+       case AHEAD:
+           fprintf(f, ">%ld>", (long) a->co);
+           break;
+       case BEHIND:
+           fprintf(f, "<%ld<", (long) a->co);
+           break;
+       case LACON:
+           fprintf(f, ":%ld:", (long) a->co);
+           break;
+       case '^':
+       case '$':
+           fprintf(f, "%c%d", a->type, (int) a->co);
+           break;
+       case EMPTY:
+           break;
+       default:
+           fprintf(f, "0x%x/0%lo", a->type, (long) a->co);
+           break;
    }
    if (a->from != s)
        fprintf(f, "?%d?", a->from->no);
-   for (ab = &a->from->oas; ab != NULL; ab = ab->next) {
+   for (ab = &a->from->oas; ab != NULL; ab = ab->next)
+   {
        for (aa = &ab->a[0]; aa < &ab->a[ABSIZE]; aa++)
            if (aa == a)
-               break;      /* NOTE BREAK OUT */
+               break;          /* NOTE BREAK OUT */
        if (aa < &ab->a[ABSIZE])    /* propagate break */
-               break;      /* NOTE BREAK OUT */
+           break;              /* NOTE BREAK OUT */
    }
    if (ab == NULL)
-       fprintf(f, "?!?");  /* not in allocated space */
+       fprintf(f, "?!?");      /* not in allocated space */
    fprintf(f, "->");
-   if (a->to == NULL) {
+   if (a->to == NULL)
+   {
        fprintf(f, "NULL");
        return;
    }
    fprintf(f, "%d", a->to->no);
    for (aa = a->to->ins; aa != NULL; aa = aa->inchain)
        if (aa == a)
-           break;      /* NOTE BREAK OUT */
+           break;              /* NOTE BREAK OUT */
    if (aa == NULL)
-       fprintf(f, "?!?");  /* missing from in-chain */
+       fprintf(f, "?!?");      /* missing from in-chain */
 }
-
-#endif /* REG_DEBUG */
+#endif   /* REG_DEBUG */
 
 /*
  * dumpcnfa - dump a compacted NFA in human-readable form
  */
 #ifdef REG_DEBUG
 static void
-dumpcnfa(struct cnfa *cnfa,
+dumpcnfa(struct cnfa * cnfa,
         FILE *f)
 {
-   int st;
+   int         st;
 
    fprintf(f, "pre %d, post %d", cnfa->pre, cnfa->post);
    if (cnfa->bos[0] != COLORLESS)
-       fprintf(f, ", bos [%ld]", (long)cnfa->bos[0]);
+       fprintf(f, ", bos [%ld]", (long) cnfa->bos[0]);
    if (cnfa->bos[1] != COLORLESS)
-       fprintf(f, ", bol [%ld]", (long)cnfa->bos[1]);
+       fprintf(f, ", bol [%ld]", (long) cnfa->bos[1]);
    if (cnfa->eos[0] != COLORLESS)
-       fprintf(f, ", eos [%ld]", (long)cnfa->eos[0]);
+       fprintf(f, ", eos [%ld]", (long) cnfa->eos[0]);
    if (cnfa->eos[1] != COLORLESS)
-       fprintf(f, ", eol [%ld]", (long)cnfa->eos[1]);
-   if (cnfa->flags&HASLACONS)
+       fprintf(f, ", eol [%ld]", (long) cnfa->eos[1]);
+   if (cnfa->flags & HASLACONS)
        fprintf(f, ", haslacons");
    fprintf(f, "\n");
    for (st = 0; st < cnfa->nstates; st++)
@@ -1445,32 +1520,35 @@ dumpcnfa(struct cnfa *cnfa,
 }
 #endif
 
-#ifdef REG_DEBUG       /* subordinates of dumpcnfa */
+#ifdef REG_DEBUG               /* subordinates of dumpcnfa */
 
 /*
  * dumpcstate - dump a compacted-NFA state in human-readable form
  */
 static void
 dumpcstate(int st,
-          struct carc *ca,
-          struct cnfa *cnfa,
+          struct carc * ca,
+          struct cnfa * cnfa,
           FILE *f)
 {
-   int i;
-   int pos;
+   int         i;
+   int         pos;
 
    fprintf(f, "%d%s", st, (ca[0].co) ? ":" : ".");
    pos = 1;
-   for (i = 1; ca[i].co != COLORLESS; i++) {
+   for (i = 1; ca[i].co != COLORLESS; i++)
+   {
        if (ca[i].co < cnfa->ncolors)
-           fprintf(f, "\t[%ld]->%d", (long)ca[i].co, ca[i].to);
+           fprintf(f, "\t[%ld]->%d", (long) ca[i].co, ca[i].to);
        else
-           fprintf(f, "\t:%ld:->%d", (long)ca[i].co-cnfa->ncolors,
-                               ca[i].to);
-       if (pos == 5) {
+           fprintf(f, "\t:%ld:->%d", (long) ca[i].co - cnfa->ncolors,
+                   ca[i].to);
+       if (pos == 5)
+       {
            fprintf(f, "\n");
            pos = 1;
-       } else
+       }
+       else
            pos++;
    }
    if (i == 1 || pos != 1)
@@ -1478,4 +1556,4 @@ dumpcstate(int st,
    fflush(f);
 }
 
-#endif /* REG_DEBUG */
+#endif   /* REG_DEBUG */
index 099a1872a8db117c89a82fc0c991fbf4ae69f52b..58af64539d83e3774b529c138705d815d8aa9caf 100644 (file)
@@ -2,21 +2,21 @@
  * re_*comp and friends - compile REs
  * This file #includes several others (see the bottom).
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -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.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regcomp.c,v 1.36 2003/02/05 17:41:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regcomp.c,v 1.37 2003/08/04 00:43:21 momjian Exp $
  *
  */
 
  * forward declarations, up here so forward datatypes etc. are defined early
  */
 /* === regcomp.c === */
-static void moresubs (struct vars *, int);
-static int freev (struct vars *, int);
-static void makesearch (struct vars *, struct nfa *);
-static struct subre *parse (struct vars *, int, int, struct state *, struct state *);
-static struct subre *parsebranch (struct vars *, int, int, struct state *, struct state *, int);
-static void parseqatom (struct vars *, int, int, struct state *, struct state *, struct subre *);
-static void nonword (struct vars *, int, struct state *, struct state *);
-static void word (struct vars *, int, struct state *, struct state *);
-static int scannum (struct vars *);
-static void repeat (struct vars *, struct state *, struct state *, int, int);
-static void bracket (struct vars *, struct state *, struct state *);
-static void cbracket (struct vars *, struct state *, struct state *);
-static void brackpart (struct vars *, struct state *, struct state *);
-static chr *scanplain (struct vars *);
-static void leaders (struct vars *, struct cvec *);
-static void onechr (struct vars *, chr, struct state *, struct state *);
-static void dovec (struct vars *, struct cvec *, struct state *, struct state *);
-static celt nextleader (struct vars *, chr, chr);
-static void wordchrs (struct vars *);
-static struct subre *subre (struct vars *, int, int, struct state *, struct state *);
-static void freesubre (struct vars *, struct subre *);
-static void freesrnode (struct vars *, struct subre *);
-static void optst (struct vars *, struct subre *);
-static int numst (struct subre *, int);
-static void markst (struct subre *);
-static void cleanst (struct vars *);
-static long nfatree (struct vars *, struct subre *, FILE *);
-static long nfanode (struct vars *, struct subre *, FILE *);
-static int newlacon (struct vars *, struct state *, struct state *, int);
-static void freelacons (struct subre *, int);
-static void rfree (regex_t *);
+static void moresubs(struct vars *, int);
+static int freev(struct vars *, int);
+static void makesearch(struct vars *, struct nfa *);
+static struct subre *parse(struct vars *, int, int, struct state *, struct state *);
+static struct subre *parsebranch(struct vars *, int, int, struct state *, struct state *, int);
+static void parseqatom(struct vars *, int, int, struct state *, struct state *, struct subre *);
+static void nonword(struct vars *, int, struct state *, struct state *);
+static void word(struct vars *, int, struct state *, struct state *);
+static int scannum(struct vars *);
+static void repeat(struct vars *, struct state *, struct state *, int, int);
+static void bracket(struct vars *, struct state *, struct state *);
+static void cbracket(struct vars *, struct state *, struct state *);
+static void brackpart(struct vars *, struct state *, struct state *);
+static chr *scanplain(struct vars *);
+static void leaders(struct vars *, struct cvec *);
+static void onechr(struct vars *, chr, struct state *, struct state *);
+static void dovec(struct vars *, struct cvec *, struct state *, struct state *);
+static celt nextleader(struct vars *, chr, chr);
+static void wordchrs(struct vars *);
+static struct subre *subre(struct vars *, int, int, struct state *, struct state *);
+static void freesubre(struct vars *, struct subre *);
+static void freesrnode(struct vars *, struct subre *);
+static void optst(struct vars *, struct subre *);
+static int numst(struct subre *, int);
+static void markst(struct subre *);
+static void cleanst(struct vars *);
+static long nfatree(struct vars *, struct subre *, FILE *);
+static long nfanode(struct vars *, struct subre *, FILE *);
+static int newlacon(struct vars *, struct state *, struct state *, int);
+static void freelacons(struct subre *, int);
+static void rfree(regex_t *);
+
 #ifdef REG_DEBUG
-static void dump (regex_t *, FILE *);
-static void dumpst (struct subre *, FILE *, int);
-static void stdump (struct subre *, FILE *, int);
-static char *stid (struct subre *, char *, size_t);
+static void dump(regex_t *, FILE *);
+static void dumpst(struct subre *, FILE *, int);
+static void stdump(struct subre *, FILE *, int);
+static char *stid(struct subre *, char *, size_t);
 #endif
 /* === regc_lex.c === */
-static void lexstart (struct vars *);
-static void prefixes (struct vars *);
-static void lexnest (struct vars *, chr *, chr *);
-static void lexword (struct vars *);
-static int next (struct vars *);
-static int lexescape (struct vars *);
-static chr lexdigits (struct vars *, int, int, int);
-static int brenext (struct vars *, chr);
-static void skip (struct vars *);
-static chr newline (void);
-static chr chrnamed (struct vars *, chr *, chr *, chr);
+static void lexstart(struct vars *);
+static void prefixes(struct vars *);
+static void lexnest(struct vars *, chr *, chr *);
+static void lexword(struct vars *);
+static int next(struct vars *);
+static int lexescape(struct vars *);
+static chr lexdigits(struct vars *, int, int, int);
+static int brenext(struct vars *, chr);
+static void skip(struct vars *);
+static chr newline(void);
+static chr chrnamed(struct vars *, chr *, chr *, chr);
+
 /* === regc_color.c === */
-static void initcm (struct vars *, struct colormap *);
-static void freecm (struct colormap *);
-static void cmtreefree (struct colormap *, union tree *, int);
-static color setcolor (struct colormap *, chr, pcolor);
-static color maxcolor (struct colormap *);
-static color newcolor (struct colormap *);
-static void freecolor (struct colormap *, pcolor);
-static color pseudocolor (struct colormap *);
-static color subcolor (struct colormap *, chr c);
-static color newsub (struct colormap *, pcolor);
-static void subrange (struct vars *, chr, chr, struct state *, struct state *);
-static void subblock (struct vars *, chr, struct state *, struct state *);
-static void okcolors (struct nfa *, struct colormap *);
-static void colorchain (struct colormap *, struct arc *);
-static void uncolorchain (struct colormap *, struct arc *);
-static int singleton (struct colormap *, chr c);
-static void rainbow (struct nfa *, struct colormap *, int, pcolor, struct state *, struct state *);
-static void colorcomplement (struct nfa *, struct colormap *, int, struct state *, struct state *, struct state *);
+static void initcm(struct vars *, struct colormap *);
+static void freecm(struct colormap *);
+static void cmtreefree(struct colormap *, union tree *, int);
+static color setcolor(struct colormap *, chr, pcolor);
+static color maxcolor(struct colormap *);
+static color newcolor(struct colormap *);
+static void freecolor(struct colormap *, pcolor);
+static color pseudocolor(struct colormap *);
+static color subcolor(struct colormap *, chr c);
+static color newsub(struct colormap *, pcolor);
+static void subrange(struct vars *, chr, chr, struct state *, struct state *);
+static void subblock(struct vars *, chr, struct state *, struct state *);
+static void okcolors(struct nfa *, struct colormap *);
+static void colorchain(struct colormap *, struct arc *);
+static void uncolorchain(struct colormap *, struct arc *);
+static int singleton(struct colormap *, chr c);
+static void rainbow(struct nfa *, struct colormap *, int, pcolor, struct state *, struct state *);
+static void colorcomplement(struct nfa *, struct colormap *, int, struct state *, struct state *, struct state *);
+
 #ifdef REG_DEBUG
-static void dumpcolors (struct colormap *, FILE *);
-static void fillcheck (struct colormap *, union tree *, int, FILE *);
-static void dumpchr (chr, FILE *);
+static void dumpcolors(struct colormap *, FILE *);
+static void fillcheck(struct colormap *, union tree *, int, FILE *);
+static void dumpchr(chr, FILE *);
 #endif
 /* === regc_nfa.c === */
-static struct nfa *newnfa (struct vars *, struct colormap *, struct nfa *);
-static void freenfa (struct nfa *);
-static struct state *newstate (struct nfa *);
-static struct state *newfstate (struct nfa *, int flag);
-static void dropstate (struct nfa *, struct state *);
-static void freestate (struct nfa *, struct state *);
-static void destroystate (struct nfa *, struct state *);
-static void newarc (struct nfa *, int, pcolor, struct state *, struct state *);
-static struct arc *allocarc (struct nfa *, struct state *);
-static void freearc (struct nfa *, struct arc *);
-static struct arc *findarc (struct state *, int, pcolor);
-static void cparc (struct nfa *, struct arc *, struct state *, struct state *);
-static void moveins (struct nfa *, struct state *, struct state *);
-static void copyins (struct nfa *, struct state *, struct state *);
-static void moveouts (struct nfa *, struct state *, struct state *);
-static void copyouts (struct nfa *, struct state *, struct state *);
-static void cloneouts (struct nfa *, struct state *, struct state *, struct state *, int);
-static void delsub (struct nfa *, struct state *, struct state *);
-static void deltraverse (struct nfa *, struct state *, struct state *);
-static void dupnfa (struct nfa *, struct state *, struct state *, struct state *, struct state *);
-static void duptraverse (struct nfa *, struct state *, struct state *);
-static void cleartraverse (struct nfa *, struct state *);
-static void specialcolors (struct nfa *);
-static long optimize (struct nfa *, FILE *);
-static void pullback (struct nfa *, FILE *);
-static int pull (struct nfa *, struct arc *);
-static void pushfwd (struct nfa *, FILE *);
-static int push (struct nfa *, struct arc *);
-#define    INCOMPATIBLE    1   /* destroys arc */
-#define    SATISFIED   2   /* constraint satisfied */
-#define    COMPATIBLE  3   /* compatible but not satisfied yet */
-static int combine (struct arc *, struct arc *);
-static void fixempties (struct nfa *, FILE *);
-static int unempty (struct nfa *, struct arc *);
-static void cleanup (struct nfa *);
-static void markreachable (struct nfa *, struct state *, struct state *, struct state *);
-static void markcanreach (struct nfa *, struct state *, struct state *, struct state *);
-static long analyze (struct nfa *);
-static void compact (struct nfa *, struct cnfa *);
-static void carcsort (struct carc *, struct carc *);
-static void freecnfa (struct cnfa *);
-static void dumpnfa (struct nfa *, FILE *);
+static struct nfa *newnfa(struct vars *, struct colormap *, struct nfa *);
+static void freenfa(struct nfa *);
+static struct state *newstate(struct nfa *);
+static struct state *newfstate(struct nfa *, int flag);
+static void dropstate(struct nfa *, struct state *);
+static void freestate(struct nfa *, struct state *);
+static void destroystate(struct nfa *, struct state *);
+static void newarc(struct nfa *, int, pcolor, struct state *, struct state *);
+static struct arc *allocarc(struct nfa *, struct state *);
+static void freearc(struct nfa *, struct arc *);
+static struct arc *findarc(struct state *, int, pcolor);
+static void cparc(struct nfa *, struct arc *, struct state *, struct state *);
+static void moveins(struct nfa *, struct state *, struct state *);
+static void copyins(struct nfa *, struct state *, struct state *);
+static void moveouts(struct nfa *, struct state *, struct state *);
+static void copyouts(struct nfa *, struct state *, struct state *);
+static void cloneouts(struct nfa *, struct state *, struct state *, struct state *, int);
+static void delsub(struct nfa *, struct state *, struct state *);
+static void deltraverse(struct nfa *, struct state *, struct state *);
+static void dupnfa(struct nfa *, struct state *, struct state *, struct state *, struct state *);
+static void duptraverse(struct nfa *, struct state *, struct state *);
+static void cleartraverse(struct nfa *, struct state *);
+static void specialcolors(struct nfa *);
+static long optimize(struct nfa *, FILE *);
+static void pullback(struct nfa *, FILE *);
+static int pull(struct nfa *, struct arc *);
+static void pushfwd(struct nfa *, FILE *);
+static int push(struct nfa *, struct arc *);
+
+#define INCOMPATIBLE   1       /* destroys arc */
+#define SATISFIED  2           /* constraint satisfied */
+#define COMPATIBLE 3           /* compatible but not satisfied yet */
+static int combine(struct arc *, struct arc *);
+static void fixempties(struct nfa *, FILE *);
+static int unempty(struct nfa *, struct arc *);
+static void cleanup(struct nfa *);
+static void markreachable(struct nfa *, struct state *, struct state *, struct state *);
+static void markcanreach(struct nfa *, struct state *, struct state *, struct state *);
+static long analyze(struct nfa *);
+static void compact(struct nfa *, struct cnfa *);
+static void carcsort(struct carc *, struct carc *);
+static void freecnfa(struct cnfa *);
+static void dumpnfa(struct nfa *, FILE *);
+
 #ifdef REG_DEBUG
-static void dumpstate (struct state *, FILE *);
-static void dumparcs (struct state *, FILE *);
-static int dumprarcs (struct arc *, struct state *, FILE *, int);
-static void dumparc (struct arc *, struct state *, FILE *);
-static void dumpcnfa (struct cnfa *, FILE *);
-static void dumpcstate (int, struct carc *, struct cnfa *, FILE *);
+static void dumpstate(struct state *, FILE *);
+static void dumparcs(struct state *, FILE *);
+static int dumprarcs(struct arc *, struct state *, FILE *, int);
+static void dumparc(struct arc *, struct state *, FILE *);
+static void dumpcnfa(struct cnfa *, FILE *);
+static void dumpcstate(int, struct carc *, struct cnfa *, FILE *);
 #endif
 /* === regc_cvec.c === */
-static struct cvec *newcvec (int, int, int);
-static struct cvec *clearcvec (struct cvec *);
-static void addchr (struct cvec *, chr);
-static void addrange (struct cvec *, chr, chr);
-static void addmcce (struct cvec *, chr *, chr *);
-static int haschr (struct cvec *, chr);
-static struct cvec *getcvec (struct vars *, int, int, int);
-static void freecvec (struct cvec *);
+static struct cvec *newcvec(int, int, int);
+static struct cvec *clearcvec(struct cvec *);
+static void addchr(struct cvec *, chr);
+static void addrange(struct cvec *, chr, chr);
+static void addmcce(struct cvec *, chr *, chr *);
+static int haschr(struct cvec *, chr);
+static struct cvec *getcvec(struct vars *, int, int, int);
+static void freecvec(struct cvec *);
+
 /* === regc_locale.c === */
-static int pg_isdigit(pg_wchar c);
-static int pg_isalpha(pg_wchar c);
-static int pg_isalnum(pg_wchar c);
-static int pg_isupper(pg_wchar c);
-static int pg_islower(pg_wchar c);
-static int pg_isgraph(pg_wchar c);
-static int pg_ispunct(pg_wchar c);
-static int pg_isspace(pg_wchar c);
+static int pg_isdigit(pg_wchar c);
+static int pg_isalpha(pg_wchar c);
+static int pg_isalnum(pg_wchar c);
+static int pg_isupper(pg_wchar c);
+static int pg_islower(pg_wchar c);
+static int pg_isgraph(pg_wchar c);
+static int pg_ispunct(pg_wchar c);
+static int pg_isspace(pg_wchar c);
 static pg_wchar pg_toupper(pg_wchar c);
 static pg_wchar pg_tolower(pg_wchar c);
-static int nmcces (struct vars *);
-static int nleaders (struct vars *);
-static struct cvec *allmcces (struct vars *, struct cvec *);
-static celt element (struct vars *, chr *, chr *);
-static struct cvec *range (struct vars *, celt, celt, int);
-static int before (celt, celt);
-static struct cvec *eclass (struct vars *, celt, int);
-static struct cvec *cclass (struct vars *, chr *, chr *, int);
-static struct cvec *allcases (struct vars *, chr);
-static int cmp (const chr *, const chr *, size_t);
-static int casecmp (const chr *, const chr *, size_t);
+static int nmcces(struct vars *);
+static int nleaders(struct vars *);
+static struct cvec *allmcces(struct vars *, struct cvec *);
+static celt element(struct vars *, chr *, chr *);
+static struct cvec *range(struct vars *, celt, celt, int);
+static int before(celt, celt);
+static struct cvec *eclass(struct vars *, celt, int);
+static struct cvec *cclass(struct vars *, chr *, chr *, int);
+static struct cvec *allcases(struct vars *, chr);
+static int cmp(const chr *, const chr *, size_t);
+static int casecmp(const chr *, const chr *, size_t);
 
 
 /* internal variables, bundled for easy passing around */
-struct vars {
-   regex_t *re;
-   chr *now;       /* scan pointer into string */
-   chr *stop;      /* end of string */
-   chr *savenow;       /* saved now and stop for "subroutine call" */
-   chr *savestop;
-   int err;        /* error code (0 if none) */
-   int cflags;     /* copy of compile flags */
-   int lasttype;       /* type of previous token */
-   int nexttype;       /* type of next token */
-   chr nextvalue;      /* value (if any) of next token */
-   int lexcon;     /* lexical context type (see lex.c) */
-   int nsubexp;        /* subexpression count */
-   struct subre **subs;    /* subRE pointer vector */
-   size_t nsubs;       /* length of vector */
+struct vars
+{
+   regex_t    *re;
+   chr        *now;            /* scan pointer into string */
+   chr        *stop;           /* end of string */
+   chr        *savenow;        /* saved now and stop for "subroutine
+                                * call" */
+   chr        *savestop;
+   int         err;            /* error code (0 if none) */
+   int         cflags;         /* copy of compile flags */
+   int         lasttype;       /* type of previous token */
+   int         nexttype;       /* type of next token */
+   chr         nextvalue;      /* value (if any) of next token */
+   int         lexcon;         /* lexical context type (see lex.c) */
+   int         nsubexp;        /* subexpression count */
+   struct subre **subs;        /* subRE pointer vector */
+   size_t      nsubs;          /* length of vector */
    struct subre *sub10[10];    /* initial vector, enough for most */
-   struct nfa *nfa;    /* the NFA */
-   struct colormap *cm;    /* character color map */
-   color nlcolor;      /* color of newline */
-   struct state *wordchrs; /* state in nfa holding word-char outarcs */
-   struct subre *tree; /* subexpression tree */
+   struct nfa *nfa;            /* the NFA */
+   struct colormap *cm;        /* character color map */
+   color       nlcolor;        /* color of newline */
+   struct state *wordchrs;     /* state in nfa holding word-char outarcs */
+   struct subre *tree;         /* subexpression tree */
    struct subre *treechain;    /* all tree nodes allocated */
    struct subre *treefree;     /* any free tree nodes */
-   int ntree;      /* number of tree nodes */
-   struct cvec *cv;    /* interface cvec */
-   struct cvec *cv2;   /* utility cvec */
-   struct cvec *mcces; /* collating-element information */
-#      define  ISCELEADER(v,c) (v->mcces != NULL && haschr(v->mcces, (c)))
+   int         ntree;          /* number of tree nodes */
+   struct cvec *cv;            /* interface cvec */
+   struct cvec *cv2;           /* utility cvec */
+   struct cvec *mcces;         /* collating-element information */
+#define  ISCELEADER(v,c) (v->mcces != NULL && haschr(v->mcces, (c)))
    struct state *mccepbegin;   /* in nfa, start of MCCE prototypes */
-   struct state *mccepend; /* in nfa, end of MCCE prototypes */
-   struct subre *lacons;   /* lookahead-constraint vector */
-   int nlacons;        /* size of lacons */
+   struct state *mccepend;     /* in nfa, end of MCCE prototypes */
+   struct subre *lacons;       /* lookahead-constraint vector */
+   int         nlacons;        /* size of lacons */
 };
 
 /* parsing macros; most know that `v' is the struct vars pointer */
-#define    NEXT()  (next(v))       /* advance by one token */
-#define    SEE(t)  (v->nexttype == (t))    /* is next token this? */
-#define    EAT(t)  (SEE(t) && next(v)) /* if next is this, swallow it */
-#define    VISERR(vv)  ((vv)->err != 0)    /* have we seen an error yet? */
-#define    ISERR() VISERR(v)
-#define    VERR(vv,e)  ((vv)->nexttype = EOS, ((vv)->err) ? (vv)->err :\
+#define NEXT() (next(v))       /* advance by one token */
+#define SEE(t) (v->nexttype == (t))    /* is next token this? */
+#define EAT(t) (SEE(t) && next(v))     /* if next is this, swallow it */
+#define VISERR(vv) ((vv)->err != 0)    /* have we seen an error yet? */
+#define ISERR() VISERR(v)
+#define VERR(vv,e) ((vv)->nexttype = EOS, ((vv)->err) ? (vv)->err :\
                            ((vv)->err = (e)))
-#define    ERR(e)  VERR(v, e)      /* record an error */
-#define    NOERR() {if (ISERR()) return;}  /* if error seen, return */
-#define    NOERRN()    {if (ISERR()) return NULL;} /* NOERR with retval */
-#define    NOERRZ()    {if (ISERR()) return 0;}    /* NOERR with retval */
-#define    INSIST(c, e)    ((c) ? 0 : ERR(e))  /* if condition false, error */
-#define    NOTE(b) (v->re->re_info |= (b))     /* note visible condition */
-#define    EMPTYARC(x, y)  newarc(v->nfa, EMPTY, 0, x, y)
+#define ERR(e) VERR(v, e)      /* record an error */
+#define NOERR() {if (ISERR()) return;} /* if error seen, return */
+#define NOERRN()   {if (ISERR()) return NULL;} /* NOERR with retval */
+#define NOERRZ()   {if (ISERR()) return 0;}    /* NOERR with retval */
+#define INSIST(c, e)   ((c) ? 0 : ERR(e))      /* if condition false,
+                                                * error */
+#define NOTE(b) (v->re->re_info |= (b)) /* note visible condition */
+#define EMPTYARC(x, y) newarc(v->nfa, EMPTY, 0, x, y)
 
 /* token type codes, some also used as NFA arc types */
-#define    EMPTY   'n'     /* no token present */
-#define    EOS 'e'     /* end of string */
-#define    PLAIN   'p'     /* ordinary character */
-#define    DIGIT   'd'     /* digit (in bound) */
-#define    BACKREF 'b'     /* back reference */
-#define    COLLEL  'I'     /* start of [. */
-#define    ECLASS  'E'     /* start of [= */
-#define    CCLASS  'C'     /* start of [: */
-#define    END 'X'     /* end of [. [= [: */
-#define    RANGE   'R'     /* - within [] which might be range delim. */
-#define    LACON   'L'     /* lookahead constraint subRE */
-#define    AHEAD   'a'     /* color-lookahead arc */
-#define    BEHIND  'r'     /* color-lookbehind arc */
-#define    WBDRY   'w'     /* word boundary constraint */
-#define    NWBDRY  'W'     /* non-word-boundary constraint */
-#define    SBEGIN  'A'     /* beginning of string (even if not BOL) */
-#define    SEND    'Z'     /* end of string (even if not EOL) */
-#define    PREFER  'P'     /* length preference */
+#define EMPTY  'n'             /* no token present */
+#define EOS 'e'                    /* end of string */
+#define PLAIN  'p'             /* ordinary character */
+#define DIGIT  'd'             /* digit (in bound) */
+#define BACKREF 'b'                /* back reference */
+#define COLLEL 'I'             /* start of [. */
+#define ECLASS 'E'             /* start of [= */
+#define CCLASS 'C'             /* start of [: */
+#define END 'X'                    /* end of [. [= [: */
+#define RANGE  'R'             /* - within [] which might be range delim. */
+#define LACON  'L'             /* lookahead constraint subRE */
+#define AHEAD  'a'             /* color-lookahead arc */
+#define BEHIND 'r'             /* color-lookbehind arc */
+#define WBDRY  'w'             /* word boundary constraint */
+#define NWBDRY 'W'             /* non-word-boundary constraint */
+#define SBEGIN 'A'             /* beginning of string (even if not BOL) */
+#define SEND   'Z'             /* end of string (even if not EOL) */
+#define PREFER 'P'             /* length preference */
 
 /* is an arc colored, and hence on a color chain? */
-#define    COLORED(a)  ((a)->type == PLAIN || (a)->type == AHEAD || \
+#define COLORED(a) ((a)->type == PLAIN || (a)->type == AHEAD || \
                            (a)->type == BEHIND)
 
 
 
 /* static function list */
 static struct fns functions = {
-   rfree,          /* regfree insides */
+   rfree,                      /* regfree insides */
 };
 
 
@@ -284,36 +293,38 @@ static struct fns functions = {
  */
 int
 pg_regcomp(regex_t *re,
-          const chr *string,
+          const chr * string,
           size_t len,
           int flags)
 {
    struct vars var;
    struct vars *v = &var;
    struct guts *g;
-   int i;
-   size_t j;
+   int         i;
+   size_t      j;
+
 #ifdef REG_DEBUG
-   FILE *debug = (flags&REG_PROGRESS) ? stdout : (FILE *)NULL;
+   FILE       *debug = (flags & REG_PROGRESS) ? stdout : (FILE *) NULL;
+
 #else
-   FILE *debug = (FILE *) NULL;
+   FILE       *debug = (FILE *) NULL;
 #endif
 
-#  define  CNOERR()    { if (ISERR()) return freev(v, v->err); }
+#define  CNOERR()   { if (ISERR()) return freev(v, v->err); }
 
    /* sanity checks */
 
    if (re == NULL || string == NULL)
        return REG_INVARG;
-   if ((flags&REG_QUOTE) &&
-           (flags&(REG_ADVANCED|REG_EXPANDED|REG_NEWLINE)))
+   if ((flags & REG_QUOTE) &&
+       (flags & (REG_ADVANCED | REG_EXPANDED | REG_NEWLINE)))
        return REG_INVARG;
-   if (!(flags&REG_EXTENDED) && (flags&REG_ADVF))
+   if (!(flags & REG_EXTENDED) && (flags & REG_ADVF))
        return REG_INVARG;
 
    /* initial setup (after which freev() is callable) */
    v->re = re;
-   v->now = (chr *)string;
+   v->now = (chr *) string;
    v->stop = v->now + len;
    v->savenow = v->savestop = NULL;
    v->err = 0;
@@ -336,7 +347,7 @@ pg_regcomp(regex_t *re,
    v->lacons = NULL;
    v->nlacons = 0;
    re->re_magic = REMAGIC;
-   re->re_info = 0;        /* bits get set during parse */
+   re->re_info = 0;            /* bits get set during parse */
    re->re_csize = sizeof(chr);
    re->re_guts = NULL;
    re->re_fns = VS(&functions);
@@ -345,38 +356,40 @@ pg_regcomp(regex_t *re,
    re->re_guts = VS(MALLOC(sizeof(struct guts)));
    if (re->re_guts == NULL)
        return freev(v, REG_ESPACE);
-   g = (struct guts *)re->re_guts;
+   g = (struct guts *) re->re_guts;
    g->tree = NULL;
    initcm(v, &g->cmap);
    v->cm = &g->cmap;
    g->lacons = NULL;
    g->nlacons = 0;
    ZAPCNFA(g->search);
-   v->nfa = newnfa(v, v->cm, (struct nfa *)NULL);
+   v->nfa = newnfa(v, v->cm, (struct nfa *) NULL);
    CNOERR();
    v->cv = newcvec(100, 20, 10);
    if (v->cv == NULL)
        return freev(v, REG_ESPACE);
    i = nmcces(v);
-   if (i > 0) {
+   if (i > 0)
+   {
        v->mcces = newcvec(nleaders(v), 0, i);
        CNOERR();
        v->mcces = allmcces(v, v->mcces);
        leaders(v, v->mcces);
-       addmcce(v->mcces, (chr *)NULL, (chr *)NULL);    /* dummy */
+       addmcce(v->mcces, (chr *) NULL, (chr *) NULL);  /* dummy */
    }
    CNOERR();
 
    /* parsing */
-   lexstart(v);            /* also handles prefixes */
-   if ((v->cflags&REG_NLSTOP) || (v->cflags&REG_NLANCH)) {
+   lexstart(v);                /* also handles prefixes */
+   if ((v->cflags & REG_NLSTOP) || (v->cflags & REG_NLANCH))
+   {
        /* assign newline a unique color */
        v->nlcolor = subcolor(v->cm, newline());
        okcolors(v->nfa, v->cm);
    }
    CNOERR();
    v->tree = parse(v, EOS, PLAIN, v->nfa->init, v->nfa->final);
-   assert(SEE(EOS));       /* even if error; ISERR() => SEE(EOS) */
+   assert(SEE(EOS));           /* even if error; ISERR() => SEE(EOS) */
    CNOERR();
    assert(v->tree != NULL);
 
@@ -384,7 +397,8 @@ pg_regcomp(regex_t *re,
    specialcolors(v->nfa);
    CNOERR();
 #ifdef REG_DEBUG
-   if (debug != NULL) {
+   if (debug != NULL)
+   {
        fprintf(debug, "\n\n\n========= RAW ==========\n");
        dumpnfa(v->nfa, debug);
        dumpst(v->tree, debug, 1);
@@ -395,7 +409,8 @@ pg_regcomp(regex_t *re,
    markst(v->tree);
    cleanst(v);
 #ifdef REG_DEBUG
-   if (debug != NULL) {
+   if (debug != NULL)
+   {
        fprintf(debug, "\n\n\n========= TREE FIXED ==========\n");
        dumpst(v->tree, debug, 1);
    }
@@ -405,7 +420,8 @@ pg_regcomp(regex_t *re,
    re->re_info |= nfatree(v, v->tree, debug);
    CNOERR();
    assert(v->nlacons == 0 || v->lacons != NULL);
-   for (i = 1; i < v->nlacons; i++) {
+   for (i = 1; i < v->nlacons; i++)
+   {
 #ifdef REG_DEBUG
        if (debug != NULL)
            fprintf(debug, "\n\n\n========= LA%d ==========\n", i);
@@ -413,7 +429,7 @@ pg_regcomp(regex_t *re,
        nfanode(v, &v->lacons[i], debug);
    }
    CNOERR();
-   if (v->tree->flags&SHORTER)
+   if (v->tree->flags & SHORTER)
        NOTE(REG_USHORTEST);
 
    /* build compacted NFAs for tree, lacons, fast search */
@@ -422,7 +438,7 @@ pg_regcomp(regex_t *re,
        fprintf(debug, "\n\n\n========= SEARCH ==========\n");
 #endif
    /* can sacrifice main NFA now, so use it as work area */
-   (DISCARD)optimize(v->nfa, debug);
+   (DISCARD) optimize(v->nfa, debug);
    CNOERR();
    makesearch(v, v->nfa);
    CNOERR();
@@ -431,7 +447,7 @@ pg_regcomp(regex_t *re,
 
    /* looks okay, package it up */
    re->re_nsub = v->nsubexp;
-   v->re = NULL;           /* freev no longer frees re */
+   v->re = NULL;               /* freev no longer frees re */
    g->magic = GUTSMAGIC;
    g->cflags = v->cflags;
    g->info = re->re_info;
@@ -439,13 +455,13 @@ pg_regcomp(regex_t *re,
    g->tree = v->tree;
    v->tree = NULL;
    g->ntree = v->ntree;
-   g->compare = (v->cflags&REG_ICASE) ? casecmp : cmp;
+   g->compare = (v->cflags & REG_ICASE) ? casecmp : cmp;
    g->lacons = v->lacons;
    v->lacons = NULL;
    g->nlacons = v->nlacons;
 
 #ifdef REG_DEBUG
-   if (flags&REG_DUMP)
+   if (flags & REG_DUMP)
        dump(re, stdout);
 #endif
 
@@ -457,22 +473,26 @@ pg_regcomp(regex_t *re,
  * moresubs - enlarge subRE vector
  */
 static void
-moresubs(struct vars *v,
+moresubs(struct vars * v,
         int wanted)            /* want enough room for this one */
 {
    struct subre **p;
-   size_t n;
+   size_t      n;
 
-   assert(wanted > 0 && (size_t)wanted >= v->nsubs);
-   n = (size_t)wanted * 3 / 2 + 1;
-   if (v->subs == v->sub10) {
-       p = (struct subre **)MALLOC(n * sizeof(struct subre *));
+   assert(wanted > 0 && (size_t) wanted >= v->nsubs);
+   n = (size_t) wanted *3 / 2 + 1;
+
+   if (v->subs == v->sub10)
+   {
+       p = (struct subre **) MALLOC(n * sizeof(struct subre *));
        if (p != NULL)
            memcpy(VS(p), VS(v->subs),
-                   v->nsubs * sizeof(struct subre *));
-   } else
-       p = (struct subre **)REALLOC(v->subs, n*sizeof(struct subre *));
-   if (p == NULL) {
+                  v->nsubs * sizeof(struct subre *));
+   }
+   else
+       p = (struct subre **) REALLOC(v->subs, n * sizeof(struct subre *));
+   if (p == NULL)
+   {
        ERR(REG_ESPACE);
        return;
    }
@@ -480,7 +500,7 @@ moresubs(struct vars *v,
    for (p = &v->subs[v->nsubs]; v->nsubs < n; p++, v->nsubs++)
        *p = NULL;
    assert(v->nsubs == n);
-   assert((size_t)wanted < v->nsubs);
+   assert((size_t) wanted < v->nsubs);
 }
 
 /*
@@ -490,7 +510,7 @@ moresubs(struct vars *v,
  * (if any), to make error-handling code terser.
  */
 static int
-freev(struct vars *v,
+freev(struct vars * v,
      int err)
 {
    if (v->re != NULL)
@@ -511,7 +531,7 @@ freev(struct vars *v,
        freecvec(v->mcces);
    if (v->lacons != NULL)
        freelacons(v->lacons, v->nlacons);
-   ERR(err);           /* nop if err==0 */
+   ERR(err);                   /* nop if err==0 */
 
    return v->err;
 }
@@ -521,8 +541,8 @@ freev(struct vars *v,
  * NFA must have been optimize()d already.
  */
 static void
-makesearch(struct vars *v,
-          struct nfa *nfa)
+makesearch(struct vars * v,
+          struct nfa * nfa)
 {
    struct arc *a;
    struct arc *b;
@@ -532,12 +552,14 @@ makesearch(struct vars *v,
    struct state *slist;
 
    /* no loops are needed if it's anchored */
-   for (a = pre->outs; a != NULL; a = a->outchain) {
+   for (a = pre->outs; a != NULL; a = a->outchain)
+   {
        assert(a->type == PLAIN);
        if (a->co != nfa->bos[0] && a->co != nfa->bos[1])
            break;
    }
-   if (a != NULL) {
+   if (a != NULL)
+   {
        /* add implicit .* in front */
        rainbow(nfa, v->cm, PLAIN, COLORLESS, pre, pre);
 
@@ -548,40 +570,45 @@ makesearch(struct vars *v,
 
    /*
     * Now here's the subtle part.  Because many REs have no lookback
-    * constraints, often knowing when you were in the pre state tells
-    * you little; it's the next state(s) that are informative.  But
-    * some of them may have other inarcs, i.e. it may be possible to
-    * make actual progress and then return to one of them.  We must
-    * de-optimize such cases, splitting each such state into progress
-    * and no-progress states.
+    * constraints, often knowing when you were in the pre state tells you
+    * little; it's the next state(s) that are informative.  But some of
+    * them may have other inarcs, i.e. it may be possible to make actual
+    * progress and then return to one of them.  We must de-optimize such
+    * cases, splitting each such state into progress and no-progress
+    * states.
     */
 
    /* first, make a list of the states */
    slist = NULL;
-   for (a = pre->outs; a != NULL; a = a->outchain) {
+   for (a = pre->outs; a != NULL; a = a->outchain)
+   {
        s = a->to;
        for (b = s->ins; b != NULL; b = b->inchain)
            if (b->from != pre)
                break;
-       if (b != NULL) {        /* must be split */
+       if (b != NULL)
+       {                       /* must be split */
            s->tmp = slist;
            slist = s;
        }
    }
 
    /* do the splits */
-   for (s = slist; s != NULL; s = s2) {
+   for (s = slist; s != NULL; s = s2)
+   {
        s2 = newstate(nfa);
        copyouts(nfa, s, s2);
-       for (a = s->ins; a != NULL; a = b) {
+       for (a = s->ins; a != NULL; a = b)
+       {
            b = a->inchain;
-           if (a->from != pre) {
+           if (a->from != pre)
+           {
                cparc(nfa, a, a->from, s2);
                freearc(nfa, a);
            }
        }
        s2 = s->tmp;
-       s->tmp = NULL;      /* clean up while we're at it */
+       s->tmp = NULL;          /* clean up while we're at it */
    }
 }
 
@@ -589,22 +616,22 @@ makesearch(struct vars *v,
  * parse - parse an RE
  *
  * This is actually just the top level, which parses a bunch of branches
- * tied together with '|'.  They appear in the tree as the left children
+ * tied together with '|'. They appear in the tree as the left children
  * of a chain of '|' subres.
  */
 static struct subre *
-parse(struct vars *v,
-     int stopper,          /* EOS or ')' */
-     int type,         /* LACON (lookahead subRE) or PLAIN */
-     struct state *init,       /* initial state */
-     struct state *final)      /* final state */
+parse(struct vars * v,
+     int stopper,              /* EOS or ')' */
+     int type,                 /* LACON (lookahead subRE) or PLAIN */
+     struct state * init,      /* initial state */
+     struct state * final)     /* final state */
 {
-   struct state *left; /* scaffolding for branch */
+   struct state *left;         /* scaffolding for branch */
    struct state *right;
-   struct subre *branches; /* top level */
-   struct subre *branch;   /* current branch */
-   struct subre *t;    /* temporary */
-   int firstbranch;    /* is this the first branch? */
+   struct subre *branches;     /* top level */
+   struct subre *branch;       /* current branch */
+   struct subre *t;            /* temporary */
+   int         firstbranch;    /* is this the first branch? */
 
    assert(stopper == ')' || stopper == EOS);
 
@@ -612,8 +639,10 @@ parse(struct vars *v,
    NOERRN();
    branch = branches;
    firstbranch = 1;
-   do {    /* a branch */
-       if (!firstbranch) {
+   do
+   {                           /* a branch */
+       if (!firstbranch)
+       {
            /* need a place to hang it */
            branch->right = subre(v, '|', LONGER, init, final);
            NOERRN();
@@ -629,25 +658,29 @@ parse(struct vars *v,
        branch->left = parsebranch(v, stopper, type, left, right, 0);
        NOERRN();
        branch->flags |= UP(branch->flags | branch->left->flags);
-       if ((branch->flags &branches->flags) != 0)    /* new flags */
+       if ((branch->flags & ~branches->flags) != 0)    /* new flags */
            for (t = branches; t != branch; t = t->right)
                t->flags |= branch->flags;
    } while (EAT('|'));
    assert(SEE(stopper) || SEE(EOS));
 
-   if (!SEE(stopper)) {
+   if (!SEE(stopper))
+   {
        assert(stopper == ')' && SEE(EOS));
        ERR(REG_EPAREN);
    }
 
    /* optimize out simple cases */
-   if (branch == branches) {   /* only one branch */
+   if (branch == branches)
+   {                           /* only one branch */
        assert(branch->right == NULL);
        t = branch->left;
        branch->left = NULL;
        freesubre(v, branches);
        branches = t;
-   } else if (!MESSY(branches->flags)) {   /* no interesting innards */
+   }
+   else if (!MESSY(branches->flags))
+   {                           /* no interesting innards */
        freesubre(v, branches->left);
        branches->left = NULL;
        freesubre(v, branches->right);
@@ -666,23 +699,25 @@ parse(struct vars *v,
  * ',' nodes introduced only when necessary due to substructure.
  */
 static struct subre *
-parsebranch(struct vars *v,
-           int stopper,            /* EOS or ')' */
+parsebranch(struct vars * v,
+           int stopper,        /* EOS or ')' */
            int type,           /* LACON (lookahead subRE) or PLAIN */
-           struct state *left,     /* leftmost state */
-           struct state *right,        /* rightmost state */
-           int partial)            /* is this only part of a branch? */
+           struct state * left,    /* leftmost state */
+           struct state * right,       /* rightmost state */
+           int partial)        /* is this only part of a branch? */
 {
-   struct state *lp;   /* left end of current construct */
-   int seencontent;    /* is there anything in this branch yet? */
+   struct state *lp;           /* left end of current construct */
+   int         seencontent;    /* is there anything in this branch yet? */
    struct subre *t;
 
    lp = left;
    seencontent = 0;
    t = subre(v, '=', 0, left, right);  /* op '=' is tentative */
    NOERRN();
-   while (!SEE('|') && !SEE(stopper) && !SEE(EOS)) {
-       if (seencontent) {  /* implicit concat operator */
+   while (!SEE('|') && !SEE(stopper) && !SEE(EOS))
+   {
+       if (seencontent)
+       {                       /* implicit concat operator */
            lp = newstate(v->nfa);
            NOERRN();
            moveins(v->nfa, right, lp);
@@ -693,7 +728,8 @@ parsebranch(struct vars *v,
        parseqatom(v, stopper, type, lp, right, t);
    }
 
-   if (!seencontent) {     /* empty branch */
+   if (!seencontent)
+   {                           /* empty branch */
        if (!partial)
            NOTE(REG_UUNSPEC);
        assert(lp == left);
@@ -711,259 +747,273 @@ parsebranch(struct vars *v,
  * of the branch, making this function's name somewhat inaccurate.
  */
 static void
-parseqatom(struct vars *v,
+parseqatom(struct vars * v,
           int stopper,         /* EOS or ')' */
           int type,            /* LACON (lookahead subRE) or PLAIN */
-          struct state *lp,        /* left state to hang it on */
-          struct state *rp,        /* right state to hang it on */
-          struct subre *top)       /* subtree top */
+          struct state * lp,   /* left state to hang it on */
+          struct state * rp,   /* right state to hang it on */
+          struct subre * top)  /* subtree top */
 {
-   struct state *s;    /* temporaries for new states */
+   struct state *s;            /* temporaries for new states */
    struct state *s2;
-#  define  ARCV(t, val)    newarc(v->nfa, t, val, lp, rp)
-   int m, n;
-   struct subre *atom; /* atom's subtree */
+
+#define  ARCV(t, val)   newarc(v->nfa, t, val, lp, rp)
+   int         m,
+               n;
+   struct subre *atom;         /* atom's subtree */
    struct subre *t;
-   int cap;        /* capturing parens? */
-   int pos;        /* positive lookahead? */
-   int subno;      /* capturing-parens or backref number */
-   int atomtype;
-   int qprefer;        /* quantifier short/long preference */
-   int f;
-   struct subre **atomp;   /* where the pointer to atom is */
+   int         cap;            /* capturing parens? */
+   int         pos;            /* positive lookahead? */
+   int         subno;          /* capturing-parens or backref number */
+   int         atomtype;
+   int         qprefer;        /* quantifier short/long preference */
+   int         f;
+   struct subre **atomp;       /* where the pointer to atom is */
 
    /* initial bookkeeping */
    atom = NULL;
-   assert(lp->nouts == 0); /* must string new code */
-   assert(rp->nins == 0);  /*  between lp and rp */
-   subno = 0;      /* just to shut lint up */
+   assert(lp->nouts == 0);     /* must string new code */
+   assert(rp->nins == 0);      /* between lp and rp */
+   subno = 0;                  /* just to shut lint up */
 
    /* an atom or constraint... */
    atomtype = v->nexttype;
-   switch (atomtype) {
-   /* first, constraints, which end by returning */
-   case '^':
-       ARCV('^', 1);
-       if (v->cflags&REG_NLANCH)
-           ARCV(BEHIND, v->nlcolor);
-       NEXT();
-       return;
-       break;
-   case '$':
-       ARCV('$', 1);
-       if (v->cflags&REG_NLANCH)
-           ARCV(AHEAD, v->nlcolor);
-       NEXT();
-       return;
-       break;
-   case SBEGIN:
-       ARCV('^', 1);   /* BOL */
-       ARCV('^', 0);   /* or BOS */
-       NEXT();
-       return;
-       break;
-   case SEND:
-       ARCV('$', 1);   /* EOL */
-       ARCV('$', 0);   /* or EOS */
-       NEXT();
-       return;
-       break;
-   case '<':
-       wordchrs(v);    /* does NEXT() */
-       s = newstate(v->nfa);
-       NOERR();
-       nonword(v, BEHIND, lp, s);
-       word(v, AHEAD, s, rp);
-       return;
-       break;
-   case '>':
-       wordchrs(v);    /* does NEXT() */
-       s = newstate(v->nfa);
-       NOERR();
-       word(v, BEHIND, lp, s);
-       nonword(v, AHEAD, s, rp);
-       return;
-       break;
-   case WBDRY:
-       wordchrs(v);    /* does NEXT() */
-       s = newstate(v->nfa);
-       NOERR();
-       nonword(v, BEHIND, lp, s);
-       word(v, AHEAD, s, rp);
-       s = newstate(v->nfa);
-       NOERR();
-       word(v, BEHIND, lp, s);
-       nonword(v, AHEAD, s, rp);
-       return;
-       break;
-   case NWBDRY:
-       wordchrs(v);    /* does NEXT() */
-       s = newstate(v->nfa);
-       NOERR();
-       word(v, BEHIND, lp, s);
-       word(v, AHEAD, s, rp);
-       s = newstate(v->nfa);
-       NOERR();
-       nonword(v, BEHIND, lp, s);
-       nonword(v, AHEAD, s, rp);
-       return;
-       break;
-   case LACON: /* lookahead constraint */
-       pos = v->nextvalue;
-       NEXT();
-       s = newstate(v->nfa);
-       s2 = newstate(v->nfa);
-       NOERR();
-       t = parse(v, ')', LACON, s, s2);
-       freesubre(v, t);    /* internal structure irrelevant */
-       assert(SEE(')') || ISERR());
-       NEXT();
-       n = newlacon(v, s, s2, pos);
-       NOERR();
-       ARCV(LACON, n);
-       return;
-       break;
-   /* then errors, to get them out of the way */
-   case '*':
-   case '+':
-   case '?':
-   case '{':
-       ERR(REG_BADRPT);
-       return;
-       break;
-   default:
-       ERR(REG_ASSERT);
-       return;
-       break;
-   /* then plain characters, and minor variants on that theme */
-   case ')':       /* unbalanced paren */
-       if ((v->cflags&REG_ADVANCED) != REG_EXTENDED) {
-           ERR(REG_EPAREN);
+   switch (atomtype)
+   {
+           /* first, constraints, which end by returning */
+       case '^':
+           ARCV('^', 1);
+           if (v->cflags & REG_NLANCH)
+               ARCV(BEHIND, v->nlcolor);
+           NEXT();
            return;
-       }
-       /* legal in EREs due to specification botch */
-       NOTE(REG_UPBOTCH);
-       /* fallthrough into case PLAIN */
-   case PLAIN:
-       onechr(v, v->nextvalue, lp, rp);
-       okcolors(v->nfa, v->cm);
-       NOERR();
-       NEXT();
-       break;
-   case '[':
-       if (v->nextvalue == 1)
-           bracket(v, lp, rp);
-       else
-           cbracket(v, lp, rp);
-       assert(SEE(']') || ISERR());
-       NEXT();
-       break;
-   case '.':
-       rainbow(v->nfa, v->cm, PLAIN,
-               (v->cflags&REG_NLSTOP) ? v->nlcolor : COLORLESS,
-               lp, rp);
-       NEXT();
-       break;
-   /* and finally the ugly stuff */
-   case '(':   /* value flags as capturing or non */
-       cap = (type == LACON) ? 0 : v->nextvalue;
-       if (cap) {
-           v->nsubexp++;
-           subno = v->nsubexp;
-           if ((size_t)subno >= v->nsubs)
-               moresubs(v, subno);
-           assert((size_t)subno < v->nsubs);
-       } else
-           atomtype = PLAIN;   /* something that's not '(' */
-       NEXT();
-       /* need new endpoints because tree will contain pointers */
-       s = newstate(v->nfa);
-       s2 = newstate(v->nfa);
-       NOERR();
-       EMPTYARC(lp, s);
-       EMPTYARC(s2, rp);
-       NOERR();
-       atom = parse(v, ')', PLAIN, s, s2);
-       assert(SEE(')') || ISERR());
-       NEXT();
-       NOERR();
-       if (cap) {
-           v->subs[subno] = atom;
-           t = subre(v, '(', atom->flags|CAP, lp, rp);
+           break;
+       case '$':
+           ARCV('$', 1);
+           if (v->cflags & REG_NLANCH)
+               ARCV(AHEAD, v->nlcolor);
+           NEXT();
+           return;
+           break;
+       case SBEGIN:
+           ARCV('^', 1);       /* BOL */
+           ARCV('^', 0);       /* or BOS */
+           NEXT();
+           return;
+           break;
+       case SEND:
+           ARCV('$', 1);       /* EOL */
+           ARCV('$', 0);       /* or EOS */
+           NEXT();
+           return;
+           break;
+       case '<':
+           wordchrs(v);        /* does NEXT() */
+           s = newstate(v->nfa);
            NOERR();
-           t->subno = subno;
-           t->left = atom;
-           atom = t;
-       }
-       /* postpone everything else pending possible {0} */
-       break;
-   case BACKREF:   /* the Feature From The Black Lagoon */
-       INSIST(type != LACON, REG_ESUBREG);
-       INSIST(v->nextvalue < v->nsubs, REG_ESUBREG);
-       INSIST(v->subs[v->nextvalue] != NULL, REG_ESUBREG);
-       NOERR();
-       assert(v->nextvalue > 0);
-       atom = subre(v, 'b', BACKR, lp, rp);
-       subno = v->nextvalue;
-       atom->subno = subno;
-       EMPTYARC(lp, rp);   /* temporarily, so there's something */
-       NEXT();
-       break;
+           nonword(v, BEHIND, lp, s);
+           word(v, AHEAD, s, rp);
+           return;
+           break;
+       case '>':
+           wordchrs(v);        /* does NEXT() */
+           s = newstate(v->nfa);
+           NOERR();
+           word(v, BEHIND, lp, s);
+           nonword(v, AHEAD, s, rp);
+           return;
+           break;
+       case WBDRY:
+           wordchrs(v);        /* does NEXT() */
+           s = newstate(v->nfa);
+           NOERR();
+           nonword(v, BEHIND, lp, s);
+           word(v, AHEAD, s, rp);
+           s = newstate(v->nfa);
+           NOERR();
+           word(v, BEHIND, lp, s);
+           nonword(v, AHEAD, s, rp);
+           return;
+           break;
+       case NWBDRY:
+           wordchrs(v);        /* does NEXT() */
+           s = newstate(v->nfa);
+           NOERR();
+           word(v, BEHIND, lp, s);
+           word(v, AHEAD, s, rp);
+           s = newstate(v->nfa);
+           NOERR();
+           nonword(v, BEHIND, lp, s);
+           nonword(v, AHEAD, s, rp);
+           return;
+           break;
+       case LACON:             /* lookahead constraint */
+           pos = v->nextvalue;
+           NEXT();
+           s = newstate(v->nfa);
+           s2 = newstate(v->nfa);
+           NOERR();
+           t = parse(v, ')', LACON, s, s2);
+           freesubre(v, t);    /* internal structure irrelevant */
+           assert(SEE(')') || ISERR());
+           NEXT();
+           n = newlacon(v, s, s2, pos);
+           NOERR();
+           ARCV(LACON, n);
+           return;
+           break;
+           /* then errors, to get them out of the way */
+       case '*':
+       case '+':
+       case '?':
+       case '{':
+           ERR(REG_BADRPT);
+           return;
+           break;
+       default:
+           ERR(REG_ASSERT);
+           return;
+           break;
+           /* then plain characters, and minor variants on that theme */
+       case ')':               /* unbalanced paren */
+           if ((v->cflags & REG_ADVANCED) != REG_EXTENDED)
+           {
+               ERR(REG_EPAREN);
+               return;
+           }
+           /* legal in EREs due to specification botch */
+           NOTE(REG_UPBOTCH);
+           /* fallthrough into case PLAIN */
+       case PLAIN:
+           onechr(v, v->nextvalue, lp, rp);
+           okcolors(v->nfa, v->cm);
+           NOERR();
+           NEXT();
+           break;
+       case '[':
+           if (v->nextvalue == 1)
+               bracket(v, lp, rp);
+           else
+               cbracket(v, lp, rp);
+           assert(SEE(']') || ISERR());
+           NEXT();
+           break;
+       case '.':
+           rainbow(v->nfa, v->cm, PLAIN,
+                   (v->cflags & REG_NLSTOP) ? v->nlcolor : COLORLESS,
+                   lp, rp);
+           NEXT();
+           break;
+           /* and finally the ugly stuff */
+       case '(':               /* value flags as capturing or non */
+           cap = (type == LACON) ? 0 : v->nextvalue;
+           if (cap)
+           {
+               v->nsubexp++;
+               subno = v->nsubexp;
+               if ((size_t) subno >= v->nsubs)
+                   moresubs(v, subno);
+               assert((size_t) subno < v->nsubs);
+           }
+           else
+               atomtype = PLAIN;       /* something that's not '(' */
+           NEXT();
+           /* need new endpoints because tree will contain pointers */
+           s = newstate(v->nfa);
+           s2 = newstate(v->nfa);
+           NOERR();
+           EMPTYARC(lp, s);
+           EMPTYARC(s2, rp);
+           NOERR();
+           atom = parse(v, ')', PLAIN, s, s2);
+           assert(SEE(')') || ISERR());
+           NEXT();
+           NOERR();
+           if (cap)
+           {
+               v->subs[subno] = atom;
+               t = subre(v, '(', atom->flags | CAP, lp, rp);
+               NOERR();
+               t->subno = subno;
+               t->left = atom;
+               atom = t;
+           }
+           /* postpone everything else pending possible {0} */
+           break;
+       case BACKREF:           /* the Feature From The Black Lagoon */
+           INSIST(type != LACON, REG_ESUBREG);
+           INSIST(v->nextvalue < v->nsubs, REG_ESUBREG);
+           INSIST(v->subs[v->nextvalue] != NULL, REG_ESUBREG);
+           NOERR();
+           assert(v->nextvalue > 0);
+           atom = subre(v, 'b', BACKR, lp, rp);
+           subno = v->nextvalue;
+           atom->subno = subno;
+           EMPTYARC(lp, rp);   /* temporarily, so there's something */
+           NEXT();
+           break;
    }
 
    /* ...and an atom may be followed by a quantifier */
-   switch (v->nexttype) {
-   case '*':
-       m = 0;
-       n = INFINITY;
-       qprefer = (v->nextvalue) ? LONGER : SHORTER;
-       NEXT();
-       break;
-   case '+':
-       m = 1;
-       n = INFINITY;
-       qprefer = (v->nextvalue) ? LONGER : SHORTER;
-       NEXT();
-       break;
-   case '?':
-       m = 0;
-       n = 1;
-       qprefer = (v->nextvalue) ? LONGER : SHORTER;
-       NEXT();
-       break;
-   case '{':
-       NEXT();
-       m = scannum(v);
-       if (EAT(',')) {
-           if (SEE(DIGIT))
-               n = scannum(v);
+   switch (v->nexttype)
+   {
+       case '*':
+           m = 0;
+           n = INFINITY;
+           qprefer = (v->nextvalue) ? LONGER : SHORTER;
+           NEXT();
+           break;
+       case '+':
+           m = 1;
+           n = INFINITY;
+           qprefer = (v->nextvalue) ? LONGER : SHORTER;
+           NEXT();
+           break;
+       case '?':
+           m = 0;
+           n = 1;
+           qprefer = (v->nextvalue) ? LONGER : SHORTER;
+           NEXT();
+           break;
+       case '{':
+           NEXT();
+           m = scannum(v);
+           if (EAT(','))
+           {
+               if (SEE(DIGIT))
+                   n = scannum(v);
+               else
+                   n = INFINITY;
+               if (m > n)
+               {
+                   ERR(REG_BADBR);
+                   return;
+               }
+               /* {m,n} exercises preference, even if it's {m,m} */
+               qprefer = (v->nextvalue) ? LONGER : SHORTER;
+           }
            else
-               n = INFINITY;
-           if (m > n) {
+           {
+               n = m;
+               /* {m} passes operand's preference through */
+               qprefer = 0;
+           }
+           if (!SEE('}'))
+           {                   /* catches errors too */
                ERR(REG_BADBR);
                return;
            }
-           /* {m,n} exercises preference, even if it's {m,m} */
-           qprefer = (v->nextvalue) ? LONGER : SHORTER;
-       } else {
-           n = m;
-           /* {m} passes operand's preference through */
+           NEXT();
+           break;
+       default:                /* no quantifier */
+           m = n = 1;
            qprefer = 0;
-       }
-       if (!SEE('}')) {    /* catches errors too */
-           ERR(REG_BADBR);
-           return;
-       }
-       NEXT();
-       break;
-   default:        /* no quantifier */
-       m = n = 1;
-       qprefer = 0;
-       break;
+           break;
    }
 
    /* annoying special case:  {0} or {0,0} cancels everything */
-   if (m == 0 && n == 0) {
+   if (m == 0 && n == 0)
+   {
        if (atom != NULL)
            freesubre(v, atom);
        if (atomtype == '(')
@@ -976,7 +1026,8 @@ parseqatom(struct vars *v,
    /* if not a messy case, avoid hard part */
    assert(!MESSY(top->flags));
    f = top->flags | qprefer | ((atom != NULL) ? atom->flags : 0);
-   if (atomtype != '(' && atomtype != BACKREF && !MESSY(UP(f))) {
+   if (atomtype != '(' && atomtype != BACKREF && !MESSY(UP(f)))
+   {
        if (!(m == 1 && n == 1))
            repeat(v, lp, rp, m, n);
        if (atom != NULL)
@@ -986,13 +1037,14 @@ parseqatom(struct vars *v,
    }
 
    /*
-    * hard part:  something messy
-    * That is, capturing parens, back reference, short/long clash, or
-    * an atom with substructure containing one of those.
+    * hard part:  something messy That is, capturing parens, back
+    * reference, short/long clash, or an atom with substructure
+    * containing one of those.
     */
 
    /* now we'll need a subre for the contents even if they're boring */
-   if (atom == NULL) {
+   if (atom == NULL)
+   {
        atom = subre(v, '=', 0, lp, rp);
        NOERR();
    }
@@ -1000,9 +1052,8 @@ parseqatom(struct vars *v,
    /*
     * prepare a general-purpose state skeleton
     *
-    *    ---> [s] ---prefix---> [begin] ---atom---> [end] ----rest---> [rp]
-    *   /                                            /
-    * [lp] ----> [s2] ----bypass---------------------
+    * ---> [s] ---prefix---> [begin] ---atom---> [end] ----rest---> [rp] /
+    * / [lp] ----> [s2] ----bypass---------------------
     *
     * where bypass is an empty, and prefix is some repetitions of atom
     */
@@ -1034,21 +1085,23 @@ parseqatom(struct vars *v,
    top->right = t;
 
    /* if it's a backref, now is the time to replicate the subNFA */
-   if (atomtype == BACKREF) {
-       assert(atom->begin->nouts == 1);    /* just the EMPTY */
+   if (atomtype == BACKREF)
+   {
+       assert(atom->begin->nouts == 1);        /* just the EMPTY */
        delsub(v->nfa, atom->begin, atom->end);
        assert(v->subs[subno] != NULL);
        /* and here's why the recursion got postponed:  it must */
        /* wait until the skeleton is filled in, because it may */
        /* hit a backref that wants to copy the filled-in skeleton */
        dupnfa(v->nfa, v->subs[subno]->begin, v->subs[subno]->end,
-                       atom->begin, atom->end);
+              atom->begin, atom->end);
        NOERR();
    }
 
    /* it's quantifier time; first, turn x{0,...} into x{1,...}|empty */
-   if (m == 0) {
-       EMPTYARC(s2, atom->end);        /* the bypass */
+   if (m == 0)
+   {
+       EMPTYARC(s2, atom->end);    /* the bypass */
        assert(PREF(qprefer) != 0);
        f = COMBINE(qprefer, atom->flags);
        t = subre(v, '|', f, lp, atom->end);
@@ -1064,25 +1117,30 @@ parseqatom(struct vars *v,
    }
 
    /* deal with the rest of the quantifier */
-   if (atomtype == BACKREF) {
+   if (atomtype == BACKREF)
+   {
        /* special case:  backrefs have internal quantifiers */
-       EMPTYARC(s, atom->begin);   /* empty prefix */
+       EMPTYARC(s, atom->begin);       /* empty prefix */
        /* just stuff everything into atom */
        repeat(v, atom->begin, atom->end, m, n);
-       atom->min = (short)m;
-       atom->max = (short)n;
+       atom->min = (short) m;
+       atom->max = (short) n;
        atom->flags |= COMBINE(qprefer, atom->flags);
-   } else if (m == 1 && n == 1) {
+   }
+   else if (m == 1 && n == 1)
+   {
        /* no/vacuous quantifier:  done */
-       EMPTYARC(s, atom->begin);   /* empty prefix */
-   } else {
+       EMPTYARC(s, atom->begin);       /* empty prefix */
+   }
+   else
+   {
        /* turn x{m,n} into x{m-1,n-1}x, with capturing */
-       /*  parens in only second x */
+       /* parens in only second x */
        dupnfa(v->nfa, atom->begin, atom->end, s, atom->begin);
        assert(m >= 1 && m != INFINITY && n >= 1);
-       repeat(v, s, atom->begin, m-1, (n == INFINITY) ? n : n-1);
+       repeat(v, s, atom->begin, m - 1, (n == INFINITY) ? n : n - 1);
        f = COMBINE(qprefer, atom->flags);
-       t = subre(v, '.', f, s, atom->end); /* prefix and atom */
+       t = subre(v, '.', f, s, atom->end);     /* prefix and atom */
        NOERR();
        t->left = subre(v, '=', PREF(f), s, atom->begin);
        NOERR();
@@ -1094,7 +1152,8 @@ parseqatom(struct vars *v,
    t = top->right;
    if (!(SEE('|') || SEE(stopper) || SEE(EOS)))
        t->right = parsebranch(v, stopper, type, atom->end, rp, 1);
-   else {
+   else
+   {
        EMPTYARC(atom->end, rp);
        t->right = subre(v, '=', 0, atom->end, rp);
    }
@@ -1107,12 +1166,12 @@ parseqatom(struct vars *v,
  * nonword - generate arcs for non-word-character ahead or behind
  */
 static void
-nonword(struct vars *v,
-       int dir,            /* AHEAD or BEHIND */
-       struct state *lp,
-       struct state *rp)
+nonword(struct vars * v,
+       int dir,                /* AHEAD or BEHIND */
+       struct state * lp,
+       struct state * rp)
 {
-   int anchor = (dir == AHEAD) ? '$' : '^';
+   int         anchor = (dir == AHEAD) ? '$' : '^';
 
    assert(dir == AHEAD || dir == BEHIND);
    newarc(v->nfa, anchor, 1, lp, rp);
@@ -1125,10 +1184,10 @@ nonword(struct vars *v,
  * word - generate arcs for word character ahead or behind
  */
 static void
-word(struct vars *v,
-    int dir,           /* AHEAD or BEHIND */
-    struct state *lp,
-    struct state *rp)
+word(struct vars * v,
+    int dir,                   /* AHEAD or BEHIND */
+    struct state * lp,
+    struct state * rp)
 {
    assert(dir == AHEAD || dir == BEHIND);
    cloneouts(v->nfa, v->wordchrs, lp, rp, dir);
@@ -1138,16 +1197,18 @@ word(struct vars *v,
 /*
  * scannum - scan a number
  */
-static int         /* value, <= DUPMAX */
-scannum(struct vars *v)
+static int                     /* value, <= DUPMAX */
+scannum(struct vars * v)
 {
-   int n = 0;
+   int         n = 0;
 
-   while (SEE(DIGIT) && n < DUPMAX) {
-       n = n*10 + v->nextvalue;
+   while (SEE(DIGIT) && n < DUPMAX)
+   {
+       n = n * 10 + v->nextvalue;
        NEXT();
    }
-   if (SEE(DIGIT) || n > DUPMAX) {
+   if (SEE(DIGIT) || n > DUPMAX)
+   {
        ERR(REG_BADBR);
        return 0;
    }
@@ -1165,83 +1226,84 @@ scannum(struct vars *v)
  * code in parse(), and when this is called, it doesn't matter any more.
  */
 static void
-repeat(struct vars *v,
-      struct state *lp,
-      struct state *rp,
+repeat(struct vars * v,
+      struct state * lp,
+      struct state * rp,
       int m,
       int n)
 {
-#  define  SOME    2
-#  define  INF 3
-#  define  PAIR(x, y)  ((x)*4 + (y))
-#  define  REDUCE(x)   ( ((x) == INFINITY) ? INF : (((x) > 1) ? SOME : (x)) )
-   const int rm = REDUCE(m);
-   const int rn = REDUCE(n);
+#define  SOME   2
+#define  INF 3
+#define  PAIR(x, y)  ((x)*4 + (y))
+#define  REDUCE(x)  ( ((x) == INFINITY) ? INF : (((x) > 1) ? SOME : (x)) )
+   const int   rm = REDUCE(m);
+   const int   rn = REDUCE(n);
    struct state *s;
    struct state *s2;
 
-   switch (PAIR(rm, rn)) {
-   case PAIR(0, 0):        /* empty string */
-       delsub(v->nfa, lp, rp);
-       EMPTYARC(lp, rp);
-       break;
-   case PAIR(0, 1):        /* do as x| */
-       EMPTYARC(lp, rp);
-       break;
-   case PAIR(0, SOME):     /* do as x{1,n}| */
-       repeat(v, lp, rp, 1, n);
-       NOERR();
-       EMPTYARC(lp, rp);
-       break;
-   case PAIR(0, INF):      /* loop x around */
-       s = newstate(v->nfa);
-       NOERR();
-       moveouts(v->nfa, lp, s);
-       moveins(v->nfa, rp, s);
-       EMPTYARC(lp, s);
-       EMPTYARC(s, rp);
-       break;
-   case PAIR(1, 1):        /* no action required */
-       break;
-   case PAIR(1, SOME):     /* do as x{0,n-1}x = (x{1,n-1}|)x */
-       s = newstate(v->nfa);
-       NOERR();
-       moveouts(v->nfa, lp, s);
-       dupnfa(v->nfa, s, rp, lp, s);
-       NOERR();
-       repeat(v, lp, s, 1, n-1);
-       NOERR();
-       EMPTYARC(lp, s);
-       break;
-   case PAIR(1, INF):      /* add loopback arc */
-       s = newstate(v->nfa);
-       s2 = newstate(v->nfa);
-       NOERR();
-       moveouts(v->nfa, lp, s);
-       moveins(v->nfa, rp, s2);
-       EMPTYARC(lp, s);
-       EMPTYARC(s2, rp);
-       EMPTYARC(s2, s);
-       break;
-   case PAIR(SOME, SOME):      /* do as x{m-1,n-1}x */
-       s = newstate(v->nfa);
-       NOERR();
-       moveouts(v->nfa, lp, s);
-       dupnfa(v->nfa, s, rp, lp, s);
-       NOERR();
-       repeat(v, lp, s, m-1, n-1);
-       break;
-   case PAIR(SOME, INF):       /* do as x{m-1,}x */
-       s = newstate(v->nfa);
-       NOERR();
-       moveouts(v->nfa, lp, s);
-       dupnfa(v->nfa, s, rp, lp, s);
-       NOERR();
-       repeat(v, lp, s, m-1, n);
-       break;
-   default:
-       ERR(REG_ASSERT);
-       break;
+   switch (PAIR(rm, rn))
+   {
+       case PAIR(0, 0):        /* empty string */
+           delsub(v->nfa, lp, rp);
+           EMPTYARC(lp, rp);
+           break;
+       case PAIR(0, 1):        /* do as x| */
+           EMPTYARC(lp, rp);
+           break;
+       case PAIR(0, SOME):     /* do as x{1,n}| */
+           repeat(v, lp, rp, 1, n);
+           NOERR();
+           EMPTYARC(lp, rp);
+           break;
+       case PAIR(0, INF):      /* loop x around */
+           s = newstate(v->nfa);
+           NOERR();
+           moveouts(v->nfa, lp, s);
+           moveins(v->nfa, rp, s);
+           EMPTYARC(lp, s);
+           EMPTYARC(s, rp);
+           break;
+       case PAIR(1, 1):        /* no action required */
+           break;
+       case PAIR(1, SOME):     /* do as x{0,n-1}x = (x{1,n-1}|)x */
+           s = newstate(v->nfa);
+           NOERR();
+           moveouts(v->nfa, lp, s);
+           dupnfa(v->nfa, s, rp, lp, s);
+           NOERR();
+           repeat(v, lp, s, 1, n - 1);
+           NOERR();
+           EMPTYARC(lp, s);
+           break;
+       case PAIR(1, INF):      /* add loopback arc */
+           s = newstate(v->nfa);
+           s2 = newstate(v->nfa);
+           NOERR();
+           moveouts(v->nfa, lp, s);
+           moveins(v->nfa, rp, s2);
+           EMPTYARC(lp, s);
+           EMPTYARC(s2, rp);
+           EMPTYARC(s2, s);
+           break;
+       case PAIR(SOME, SOME):  /* do as x{m-1,n-1}x */
+           s = newstate(v->nfa);
+           NOERR();
+           moveouts(v->nfa, lp, s);
+           dupnfa(v->nfa, s, rp, lp, s);
+           NOERR();
+           repeat(v, lp, s, m - 1, n - 1);
+           break;
+       case PAIR(SOME, INF):   /* do as x{m-1,}x */
+           s = newstate(v->nfa);
+           NOERR();
+           moveouts(v->nfa, lp, s);
+           dupnfa(v->nfa, s, rp, lp, s);
+           NOERR();
+           repeat(v, lp, s, m - 1, n);
+           break;
+       default:
+           ERR(REG_ASSERT);
+           break;
    }
 }
 
@@ -1250,9 +1312,9 @@ repeat(struct vars *v,
  * Also called from cbracket for complemented bracket expressions.
  */
 static void
-bracket(struct vars *v,
-       struct state *lp,
-       struct state *rp)
+bracket(struct vars * v,
+       struct state * lp,
+       struct state * rp)
 {
    assert(SEE('['));
    NEXT();
@@ -1265,27 +1327,27 @@ bracket(struct vars *v,
 /*
  * cbracket - handle complemented bracket expression
  * We do it by calling bracket() with dummy endpoints, and then complementing
- * the result.  The alternative would be to invoke rainbow(), and then delete
+ * the result. The alternative would be to invoke rainbow(), and then delete
  * arcs as the b.e. is seen... but that gets messy.
  */
 static void
-cbracket(struct vars *v,
-        struct state *lp,
-        struct state *rp)
+cbracket(struct vars * v,
+        struct state * lp,
+        struct state * rp)
 {
    struct state *left = newstate(v->nfa);
    struct state *right = newstate(v->nfa);
    struct state *s;
-   struct arc *a;          /* arc from lp */
-   struct arc *ba;         /* arc from left, from bracket() */
-   struct arc *pa;         /* MCCE-prototype arc */
-   color co;
-   chr *p;
-   int i;
+   struct arc *a;              /* arc from lp */
+   struct arc *ba;             /* arc from left, from bracket() */
+   struct arc *pa;             /* MCCE-prototype arc */
+   color       co;
+   chr        *p;
+   int         i;
 
    NOERR();
    bracket(v, left, right);
-   if (v->cflags&REG_NLSTOP)
+   if (v->cflags & REG_NLSTOP)
        newarc(v->nfa, PLAIN, v->nlcolor, left, right);
    NOERR();
 
@@ -1294,7 +1356,8 @@ cbracket(struct vars *v,
    /* easy part of complementing */
    colorcomplement(v->nfa, v->cm, PLAIN, left, lp, rp);
    NOERR();
-   if (v->mcces == NULL) {     /* no MCCEs -- we're done */
+   if (v->mcces == NULL)
+   {                           /* no MCCEs -- we're done */
        dropstate(v->nfa, left);
        assert(right->nins == 0);
        freestate(v->nfa, right);
@@ -1303,33 +1366,39 @@ cbracket(struct vars *v,
 
    /* but complementing gets messy in the presence of MCCEs... */
    NOTE(REG_ULOCALE);
-   for (p = v->mcces->chrs, i = v->mcces->nchrs; i > 0; p++, i--) {
+   for (p = v->mcces->chrs, i = v->mcces->nchrs; i > 0; p++, i--)
+   {
        co = GETCOLOR(v->cm, *p);
        a = findarc(lp, PLAIN, co);
        ba = findarc(left, PLAIN, co);
-       if (ba == NULL) {
+       if (ba == NULL)
+       {
            assert(a != NULL);
            freearc(v->nfa, a);
-       } else {
-           assert(a == NULL);
        }
+       else
+           assert(a == NULL);
        s = newstate(v->nfa);
        NOERR();
        newarc(v->nfa, PLAIN, co, lp, s);
        NOERR();
        pa = findarc(v->mccepbegin, PLAIN, co);
        assert(pa != NULL);
-       if (ba == NULL) {   /* easy case, need all of them */
+       if (ba == NULL)
+       {                       /* easy case, need all of them */
            cloneouts(v->nfa, pa->to, s, rp, PLAIN);
            newarc(v->nfa, '$', 1, s, rp);
            newarc(v->nfa, '$', 0, s, rp);
            colorcomplement(v->nfa, v->cm, AHEAD, pa->to, s, rp);
-       } else {        /* must be selective */
-           if (findarc(ba->to, '$', 1) == NULL) {
+       }
+       else
+       {                       /* must be selective */
+           if (findarc(ba->to, '$', 1) == NULL)
+           {
                newarc(v->nfa, '$', 1, s, rp);
                newarc(v->nfa, '$', 0, s, rp);
                colorcomplement(v->nfa, v->cm, AHEAD, pa->to,
-                                    s, rp);
+                               s, rp);
            }
            for (pa = pa->to->outs; pa != NULL; pa = pa->outchain)
                if (findarc(ba->to, PLAIN, pa->co) == NULL)
@@ -1346,83 +1415,39 @@ cbracket(struct vars *v,
    assert(right->nins == 0);
    freestate(v->nfa, right);
 }
-           
+
 /*
  * brackpart - handle one item (or range) within a bracket expression
  */
 static void
-brackpart(struct vars *v,
-         struct state *lp,
-         struct state *rp)
+brackpart(struct vars * v,
+         struct state * lp,
+         struct state * rp)
 {
-   celt startc;
-   celt endc;
+   celt        startc;
+   celt        endc;
    struct cvec *cv;
-   chr *startp;
-   chr *endp;
-   chr c[1];
+   chr        *startp;
+   chr        *endp;
+   chr         c[1];
 
    /* parse something, get rid of special cases, take shortcuts */
-   switch (v->nexttype) {
-   case RANGE:         /* a-b-c or other botch */
-       ERR(REG_ERANGE);
-       return;
-       break;
-   case PLAIN:
-       c[0] = v->nextvalue;
-       NEXT();
-       /* shortcut for ordinary chr (not range, not MCCE leader) */
-       if (!SEE(RANGE) && !ISCELEADER(v, c[0])) {
-           onechr(v, c[0], lp, rp);
+   switch (v->nexttype)
+   {
+       case RANGE:             /* a-b-c or other botch */
+           ERR(REG_ERANGE);
            return;
-       }
-       startc = element(v, c, c+1);
-       NOERR();
-       break;
-   case COLLEL:
-       startp = v->now;
-       endp = scanplain(v);
-       INSIST(startp < endp, REG_ECOLLATE);
-       NOERR();
-       startc = element(v, startp, endp);
-       NOERR();
-       break;
-   case ECLASS:
-       startp = v->now;
-       endp = scanplain(v);
-       INSIST(startp < endp, REG_ECOLLATE);
-       NOERR();
-       startc = element(v, startp, endp);
-       NOERR();
-       cv = eclass(v, startc, (v->cflags&REG_ICASE));
-       NOERR();
-       dovec(v, cv, lp, rp);
-       return;
-       break;
-   case CCLASS:
-       startp = v->now;
-       endp = scanplain(v);
-       INSIST(startp < endp, REG_ECTYPE);
-       NOERR();
-       cv = cclass(v, startp, endp, (v->cflags&REG_ICASE));
-       NOERR();
-       dovec(v, cv, lp, rp);
-       return;
-       break;
-   default:
-       ERR(REG_ASSERT);
-       return;
-       break;
-   }
-
-   if (SEE(RANGE)) {
-       NEXT();
-       switch (v->nexttype) {
+           break;
        case PLAIN:
-       case RANGE:
            c[0] = v->nextvalue;
            NEXT();
-           endc = element(v, c, c+1);
+           /* shortcut for ordinary chr (not range, not MCCE leader) */
+           if (!SEE(RANGE) && !ISCELEADER(v, c[0]))
+           {
+               onechr(v, c[0], lp, rp);
+               return;
+           }
+           startc = element(v, c, c + 1);
            NOERR();
            break;
        case COLLEL:
@@ -1430,25 +1455,74 @@ brackpart(struct vars *v,
            endp = scanplain(v);
            INSIST(startp < endp, REG_ECOLLATE);
            NOERR();
-           endc = element(v, startp, endp);
+           startc = element(v, startp, endp);
+           NOERR();
+           break;
+       case ECLASS:
+           startp = v->now;
+           endp = scanplain(v);
+           INSIST(startp < endp, REG_ECOLLATE);
+           NOERR();
+           startc = element(v, startp, endp);
+           NOERR();
+           cv = eclass(v, startc, (v->cflags & REG_ICASE));
            NOERR();
+           dovec(v, cv, lp, rp);
+           return;
+           break;
+       case CCLASS:
+           startp = v->now;
+           endp = scanplain(v);
+           INSIST(startp < endp, REG_ECTYPE);
+           NOERR();
+           cv = cclass(v, startp, endp, (v->cflags & REG_ICASE));
+           NOERR();
+           dovec(v, cv, lp, rp);
+           return;
            break;
        default:
-           ERR(REG_ERANGE);
+           ERR(REG_ASSERT);
            return;
            break;
+   }
+
+   if (SEE(RANGE))
+   {
+       NEXT();
+       switch (v->nexttype)
+       {
+           case PLAIN:
+           case RANGE:
+               c[0] = v->nextvalue;
+               NEXT();
+               endc = element(v, c, c + 1);
+               NOERR();
+               break;
+           case COLLEL:
+               startp = v->now;
+               endp = scanplain(v);
+               INSIST(startp < endp, REG_ECOLLATE);
+               NOERR();
+               endc = element(v, startp, endp);
+               NOERR();
+               break;
+           default:
+               ERR(REG_ERANGE);
+               return;
+               break;
        }
-   } else
+   }
+   else
        endc = startc;
 
    /*
-    * Ranges are unportable.  Actually, standard C does
-    * guarantee that digits are contiguous, but making
-    * that an exception is just too complicated.
+    * Ranges are unportable.  Actually, standard C does guarantee that
+    * digits are contiguous, but making that an exception is just too
+    * complicated.
     */
    if (startc != endc)
        NOTE(REG_UUNPORT);
-   cv = range(v, startc, endc, (v->cflags&REG_ICASE));
+   cv = range(v, startc, endc, (v->cflags & REG_ICASE));
    NOERR();
    dovec(v, cv, lp, rp);
 }
@@ -1459,16 +1533,17 @@ brackpart(struct vars *v,
  * Certain bits of trickery in lex.c know that this code does not try
  * to look past the final bracket of the [. etc.
  */
-static chr *           /* just after end of sequence */
-scanplain(struct vars *v)
+static chr *                   /* just after end of sequence */
+scanplain(struct vars * v)
 {
-   chr *endp;
+   chr        *endp;
 
    assert(SEE(COLLEL) || SEE(ECLASS) || SEE(CCLASS));
    NEXT();
 
    endp = v->now;
-   while (SEE(PLAIN)) {
+   while (SEE(PLAIN))
+   {
        endp = v->now;
        NEXT();
    }
@@ -1485,12 +1560,12 @@ scanplain(struct vars *v)
  * certainly necessary, and sets up little disconnected subNFA.
  */
 static void
-leaders(struct vars *v,
-       struct cvec *cv)
+leaders(struct vars * v,
+       struct cvec * cv)
 {
-   int mcce;
-   chr *p;
-   chr leader;
+   int         mcce;
+   chr        *p;
+   chr         leader;
    struct state *s;
    struct arc *a;
 
@@ -1498,16 +1573,20 @@ leaders(struct vars *v,
    v->mccepend = newstate(v->nfa);
    NOERR();
 
-   for (mcce = 0; mcce < cv->nmcces; mcce++) {
+   for (mcce = 0; mcce < cv->nmcces; mcce++)
+   {
        p = cv->mcces[mcce];
        leader = *p;
-       if (!haschr(cv, leader)) {
+       if (!haschr(cv, leader))
+       {
            addchr(cv, leader);
            s = newstate(v->nfa);
            newarc(v->nfa, PLAIN, subcolor(v->cm, leader),
-                           v->mccepbegin, s);
+                  v->mccepbegin, s);
            okcolors(v->nfa, v->cm);
-       } else {
+       }
+       else
+       {
            a = findarc(v->mccepbegin, PLAIN,
                        GETCOLOR(v->cm, leader));
            assert(a != NULL);
@@ -1515,7 +1594,8 @@ leaders(struct vars *v,
            assert(s != v->mccepend);
        }
        p++;
-       assert(*p != 0 && *(p+1) == 0); /* only 2-char MCCEs for now */
+       assert(*p != 0 && *(p + 1) == 0);       /* only 2-char MCCEs for
+                                                * now */
        newarc(v->nfa, PLAIN, subcolor(v->cm, *p), s, v->mccepend);
        okcolors(v->nfa, v->cm);
    }
@@ -1526,12 +1606,13 @@ leaders(struct vars *v,
  * This is mostly a shortcut for efficient handling of the common case.
  */
 static void
-onechr(struct vars *v,
+onechr(struct vars * v,
       chr c,
-      struct state *lp,
-      struct state *rp)
+      struct state * lp,
+      struct state * rp)
 {
-   if (!(v->cflags&REG_ICASE)) {
+   if (!(v->cflags & REG_ICASE))
+   {
        newarc(v->nfa, PLAIN, subcolor(v->cm, c), lp, rp);
        return;
    }
@@ -1545,42 +1626,50 @@ onechr(struct vars *v,
  * This one has to handle the messy cases, like MCCEs and MCCE leaders.
  */
 static void
-dovec(struct vars *v,
-     struct cvec *cv,
-     struct state *lp,
-     struct state *rp)
+dovec(struct vars * v,
+     struct cvec * cv,
+     struct state * lp,
+     struct state * rp)
 {
-   chr ch, from, to;
-   celt ce;
-   chr *p;
-   int i;
-   color co;
+   chr         ch,
+               from,
+               to;
+   celt        ce;
+   chr        *p;
+   int         i;
+   color       co;
    struct cvec *leads;
    struct arc *a;
-   struct arc *pa;     /* arc in prototype */
+   struct arc *pa;             /* arc in prototype */
    struct state *s;
-   struct state *ps;   /* state in prototype */
+   struct state *ps;           /* state in prototype */
 
    /* need a place to store leaders, if any */
-   if (nmcces(v) > 0) {
+   if (nmcces(v) > 0)
+   {
        assert(v->mcces != NULL);
-       if (v->cv2 == NULL || v->cv2->nchrs < v->mcces->nchrs) {
+       if (v->cv2 == NULL || v->cv2->nchrs < v->mcces->nchrs)
+       {
            if (v->cv2 != NULL)
                free(v->cv2);
            v->cv2 = newcvec(v->mcces->nchrs, 0, v->mcces->nmcces);
            NOERR();
            leads = v->cv2;
-       } else
+       }
+       else
            leads = clearcvec(v->cv2);
-   } else
+   }
+   else
        leads = NULL;
 
    /* first, get the ordinary characters out of the way */
-   for (p = cv->chrs, i = cv->nchrs; i > 0; p++, i--) {
+   for (p = cv->chrs, i = cv->nchrs; i > 0; p++, i--)
+   {
        ch = *p;
        if (!ISCELEADER(v, ch))
            newarc(v->nfa, PLAIN, subcolor(v->cm, ch), lp, rp);
-       else {
+       else
+       {
            assert(singleton(v->cm, ch));
            assert(leads != NULL);
            if (!haschr(leads, ch))
@@ -1589,10 +1678,12 @@ dovec(struct vars *v,
    }
 
    /* and the ranges */
-   for (p = cv->ranges, i = cv->nranges; i > 0; p += 2, i--) {
+   for (p = cv->ranges, i = cv->nranges; i > 0; p += 2, i--)
+   {
        from = *p;
-       to = *(p+1);
-       while (from <= to && (ce = nextleader(v, from, to)) != NOCELT) {
+       to = *(p + 1);
+       while (from <= to && (ce = nextleader(v, from, to)) != NOCELT)
+       {
            if (from < ce)
                subrange(v, from, ce - 1, lp, rp);
            assert(singleton(v->cm, ce));
@@ -1610,12 +1701,14 @@ dovec(struct vars *v,
 
    /* deal with the MCCE leaders */
    NOTE(REG_ULOCALE);
-   for (p = leads->chrs, i = leads->nchrs; i > 0; p++, i--) {
+   for (p = leads->chrs, i = leads->nchrs; i > 0; p++, i--)
+   {
        co = GETCOLOR(v->cm, *p);
        a = findarc(lp, PLAIN, co);
        if (a != NULL)
            s = a->to;
-       else {
+       else
+       {
            s = newstate(v->nfa);
            NOERR();
            newarc(v->nfa, PLAIN, co, lp, s);
@@ -1631,10 +1724,12 @@ dovec(struct vars *v,
    }
 
    /* and the MCCEs */
-   for (i = 0; i < cv->nmcces; i++) {
+   for (i = 0; i < cv->nmcces; i++)
+   {
        p = cv->mcces[i];
        assert(singleton(v->cm, *p));
-       if (!singleton(v->cm, *p)) {
+       if (!singleton(v->cm, *p))
+       {
            ERR(REG_ASSERT);
            return;
        }
@@ -1643,17 +1738,18 @@ dovec(struct vars *v,
        a = findarc(lp, PLAIN, co);
        if (a != NULL)
            s = a->to;
-       else {
+       else
+       {
            s = newstate(v->nfa);
            NOERR();
            newarc(v->nfa, PLAIN, co, lp, s);
            NOERR();
        }
-       assert(*p != 0);    /* at least two chars */
+       assert(*p != 0);        /* at least two chars */
        assert(singleton(v->cm, *p));
        ch = *p++;
        co = GETCOLOR(v->cm, ch);
-       assert(*p == 0);    /* and only two, for now */
+       assert(*p == 0);        /* and only two, for now */
        newarc(v->nfa, PLAIN, co, s, rp);
        NOERR();
    }
@@ -1662,20 +1758,21 @@ dovec(struct vars *v,
 /*
  * nextleader - find next MCCE leader within range
  */
-static celt            /* NOCELT means none */
-nextleader(struct vars *v,
+static celt                /* NOCELT means none */
+nextleader(struct vars * v,
           chr from,
           chr to)
 {
-   int i;
-   chr *p;
-   chr ch;
-   celt it = NOCELT;
+   int         i;
+   chr        *p;
+   chr         ch;
+   celt        it = NOCELT;
 
    if (v->mcces == NULL)
        return it;
 
-   for (i = v->mcces->nchrs, p = v->mcces->chrs; i > 0; i--, p++) {
+   for (i = v->mcces->nchrs, p = v->mcces->chrs; i > 0; i--, p++)
+   {
        ch = *p;
        if (from <= ch && ch <= to)
            if (it == NOCELT || ch < it)
@@ -1694,20 +1791,21 @@ nextleader(struct vars *v,
  * should be cleaned up to reduce dependencies on input scanning.
  */
 static void
-wordchrs(struct vars *v)
+wordchrs(struct vars * v)
 {
    struct state *left;
    struct state *right;
 
-   if (v->wordchrs != NULL) {
-       NEXT();     /* for consistency */
+   if (v->wordchrs != NULL)
+   {
+       NEXT();                 /* for consistency */
        return;
    }
 
    left = newstate(v->nfa);
    right = newstate(v->nfa);
    NOERR();
-   /* fine point:  implemented with [::], and lexer will set REG_ULOCALE */
+   /* fine point:  implemented with [::], and lexer will set REG_ULOCALE */
    lexword(v);
    NEXT();
    assert(v->savenow != NULL && SEE('['));
@@ -1722,20 +1820,22 @@ wordchrs(struct vars *v)
  * subre - allocate a subre
  */
 static struct subre *
-subre(struct vars *v,
+subre(struct vars * v,
      int op,
      int flags,
-     struct state *begin,
-     struct state *end)
+     struct state * begin,
+     struct state * end)
 {
    struct subre *ret;
 
    ret = v->treefree;
    if (ret != NULL)
        v->treefree = ret->left;
-   else {
-       ret = (struct subre *)MALLOC(sizeof(struct subre));
-       if (ret == NULL) {
+   else
+   {
+       ret = (struct subre *) MALLOC(sizeof(struct subre));
+       if (ret == NULL)
+       {
            ERR(REG_ESPACE);
            return NULL;
        }
@@ -1763,8 +1863,8 @@ subre(struct vars *v,
  * freesubre - free a subRE subtree
  */
 static void
-freesubre(struct vars *v,          /* might be NULL */
-         struct subre *sr)
+freesubre(struct vars * v,     /* might be NULL */
+         struct subre * sr)
 {
    if (sr == NULL)
        return;
@@ -1781,8 +1881,8 @@ freesubre(struct vars *v,         /* might be NULL */
  * freesrnode - free one node in a subRE subtree
  */
 static void
-freesrnode(struct vars *v,         /* might be NULL */
-          struct subre *sr)
+freesrnode(struct vars * v,        /* might be NULL */
+          struct subre * sr)
 {
    if (sr == NULL)
        return;
@@ -1791,10 +1891,12 @@ freesrnode(struct vars *v,          /* might be NULL */
        freecnfa(&sr->cnfa);
    sr->flags = 0;
 
-   if (v != NULL) {
+   if (v != NULL)
+   {
        sr->left = v->treefree;
        v->treefree = sr;
-   } else
+   }
+   else
        FREE(sr);
 }
 
@@ -1802,8 +1904,8 @@ freesrnode(struct vars *v,            /* might be NULL */
  * optst - optimize a subRE subtree
  */
 static void
-optst(struct vars *v,
-     struct subre *t)
+optst(struct vars * v,
+     struct subre * t)
 {
    if (t == NULL)
        return;
@@ -1818,16 +1920,16 @@ optst(struct vars *v,
 /*
  * numst - number tree nodes (assigning retry indexes)
  */
-static int         /* next number */
-numst(struct subre *t,
-     int start)            /* starting point for subtree numbers */
+static int                     /* next number */
+numst(struct subre * t,
+     int start)                /* starting point for subtree numbers */
 {
-   int i;
+   int         i;
 
    assert(t != NULL);
 
    i = start;
-   t->retry = (short)i++;
+   t->retry = (short) i++;
    if (t->left != NULL)
        i = numst(t->left, i);
    if (t->right != NULL)
@@ -1839,7 +1941,7 @@ numst(struct subre *t,
  * markst - mark tree nodes as INUSE
  */
 static void
-markst(struct subre *t)
+markst(struct subre * t)
 {
    assert(t != NULL);
 
@@ -1854,34 +1956,35 @@ markst(struct subre *t)
  * cleanst - free any tree nodes not marked INUSE
  */
 static void
-cleanst(struct vars *v)
+cleanst(struct vars * v)
 {
    struct subre *t;
    struct subre *next;
 
-   for (t = v->treechain; t != NULL; t = next) {
+   for (t = v->treechain; t != NULL; t = next)
+   {
        next = t->chain;
-       if (!(t->flags&INUSE))
+       if (!(t->flags & INUSE))
            FREE(t);
    }
    v->treechain = NULL;
-   v->treefree = NULL;     /* just on general principles */
+   v->treefree = NULL;         /* just on general principles */
 }
 
 /*
  * nfatree - turn a subRE subtree into a tree of compacted NFAs
  */
-static long            /* optimize results from top node */
-nfatree(struct vars *v,
-       struct subre *t,
+static long                        /* optimize results from top node */
+nfatree(struct vars * v,
+       struct subre * t,
        FILE *f)                /* for debug output */
 {
    assert(t != NULL && t->begin != NULL);
 
    if (t->left != NULL)
-       (DISCARD)nfatree(v, t->left, f);
+       (DISCARD) nfatree(v, t->left, f);
    if (t->right != NULL)
-       (DISCARD)nfatree(v, t->right, f);
+       (DISCARD) nfatree(v, t->right, f);
 
    return nfanode(v, t, f);
 }
@@ -1889,29 +1992,30 @@ nfatree(struct vars *v,
 /*
  * nfanode - do one NFA for nfatree
  */
-static long            /* optimize results */
-nfanode(struct vars *v,
-       struct subre *t,
+static long                        /* optimize results */
+nfanode(struct vars * v,
+       struct subre * t,
        FILE *f)                /* for debug output */
 {
    struct nfa *nfa;
-   long ret = 0;
+   long        ret = 0;
 
    assert(t->begin != NULL);
 
 #ifdef REG_DEBUG
    if (f != NULL)
    {
-       char idbuf[50];
+       char        idbuf[50];
 
        fprintf(f, "\n\n\n========= TREE NODE %s ==========\n",
-                       stid(t, idbuf, sizeof(idbuf)));
+               stid(t, idbuf, sizeof(idbuf)));
    }
 #endif
    nfa = newnfa(v, v->cm, v->nfa);
    NOERRZ();
    dupnfa(nfa, t->begin, t->end, nfa->init, nfa->final);
-   if (!ISERR()) {
+   if (!ISERR())
+   {
        specialcolors(nfa);
        ret = optimize(nfa, f);
    }
@@ -1925,25 +2029,29 @@ nfanode(struct vars *v,
 /*
  * newlacon - allocate a lookahead-constraint subRE
  */
-static int         /* lacon number */
-newlacon(struct vars *v,
-        struct state *begin,
-        struct state *end,
+static int                     /* lacon number */
+newlacon(struct vars * v,
+        struct state * begin,
+        struct state * end,
         int pos)
 {
-   int n;
+   int         n;
    struct subre *sub;
 
-   if (v->nlacons == 0) {
-       v->lacons = (struct subre *)MALLOC(2 * sizeof(struct subre));
-       n = 1;      /* skip 0th */
+   if (v->nlacons == 0)
+   {
+       v->lacons = (struct subre *) MALLOC(2 * sizeof(struct subre));
+       n = 1;                  /* skip 0th */
        v->nlacons = 2;
-   } else {
-       v->lacons = (struct subre *)REALLOC(v->lacons,
-                   (v->nlacons+1)*sizeof(struct subre));
+   }
+   else
+   {
+       v->lacons = (struct subre *) REALLOC(v->lacons,
+                               (v->nlacons + 1) * sizeof(struct subre));
        n = v->nlacons++;
    }
-   if (v->lacons == NULL) {
+   if (v->lacons == NULL)
+   {
        ERR(REG_ESPACE);
        return 0;
    }
@@ -1959,11 +2067,11 @@ newlacon(struct vars *v,
  * freelacons - free lookahead-constraint subRE vector
  */
 static void
-freelacons(struct subre *subs,
+freelacons(struct subre * subs,
           int n)
 {
    struct subre *sub;
-   int i;
+   int         i;
 
    assert(n > 0);
    for (sub = subs + 1, i = n - 1; i > 0; sub++, i--)  /* no 0th */
@@ -1983,14 +2091,14 @@ rfree(regex_t *re)
    if (re == NULL || re->re_magic != REMAGIC)
        return;
 
-   re->re_magic = 0;   /* invalidate RE */
-   g = (struct guts *)re->re_guts;
+   re->re_magic = 0;           /* invalidate RE */
+   g = (struct guts *) re->re_guts;
    re->re_guts = NULL;
    re->re_fns = NULL;
    g->magic = 0;
    freecm(&g->cmap);
    if (g->tree != NULL)
-       freesubre((struct vars *)NULL, g->tree);
+       freesubre((struct vars *) NULL, g->tree);
    if (g->lacons != NULL)
        freelacons(g->lacons, g->nlacons);
    if (!NULLCNFA(g->search))
@@ -2008,30 +2116,33 @@ dump(regex_t *re,
     FILE *f)
 {
    struct guts *g;
-   int i;
+   int         i;
 
    if (re->re_magic != REMAGIC)
        fprintf(f, "bad magic number (0x%x not 0x%x)\n", re->re_magic,
-                               REMAGIC);
-   if (re->re_guts == NULL) {
+               REMAGIC);
+   if (re->re_guts == NULL)
+   {
        fprintf(f, "NULL guts!!!\n");
        return;
    }
-   g = (struct guts *)re->re_guts;
+   g = (struct guts *) re->re_guts;
    if (g->magic != GUTSMAGIC)
        fprintf(f, "bad guts magic number (0x%x not 0x%x)\n", g->magic,
-                               GUTSMAGIC);
+               GUTSMAGIC);
 
    fprintf(f, "\n\n\n========= DUMP ==========\n");
-   fprintf(f, "nsub %d, info 0%lo, csize %d, ntree %d\n", 
-       re->re_nsub, re->re_info, re->re_csize, g->ntree);
+   fprintf(f, "nsub %d, info 0%lo, csize %d, ntree %d\n",
+           re->re_nsub, re->re_info, re->re_csize, g->ntree);
 
    dumpcolors(&g->cmap, f);
-   if (!NULLCNFA(g->search)) {
+   if (!NULLCNFA(g->search))
+   {
        printf("\nsearch:\n");
        dumpcnfa(&g->search, f);
    }
-   for (i = 1; i < g->nlacons; i++) {
+   for (i = 1; i < g->nlacons; i++)
+   {
        fprintf(f, "\nla%d (%s):\n", i,
                (g->lacons[i].subno) ? "positive" : "negative");
        dumpcnfa(&g->lacons[i].cnfa, f);
@@ -2044,7 +2155,7 @@ dump(regex_t *re,
  * dumpst - dump a subRE tree
  */
 static void
-dumpst(struct subre *t,
+dumpst(struct subre * t,
       FILE *f,
       int nfapresent)          /* is the original NFA still around? */
 {
@@ -2059,40 +2170,42 @@ dumpst(struct subre *t,
  * stdump - recursive guts of dumpst
  */
 static void
-stdump(struct subre *t,
+stdump(struct subre * t,
       FILE *f,
       int nfapresent)          /* is the original NFA still around? */
 {
-   char idbuf[50];
+   char        idbuf[50];
 
    fprintf(f, "%s. `%c'", stid(t, idbuf, sizeof(idbuf)), t->op);
-   if (t->flags&LONGER)
+   if (t->flags & LONGER)
        fprintf(f, " longest");
-   if (t->flags&SHORTER)
+   if (t->flags & SHORTER)
        fprintf(f, " shortest");
-   if (t->flags&MIXED)
+   if (t->flags & MIXED)
        fprintf(f, " hasmixed");
-   if (t->flags&CAP)
+   if (t->flags & CAP)
        fprintf(f, " hascapture");
-   if (t->flags&BACKR)
+   if (t->flags & BACKR)
        fprintf(f, " hasbackref");
-   if (!(t->flags&INUSE))
+   if (!(t->flags & INUSE))
        fprintf(f, " UNUSED");
    if (t->subno != 0)
        fprintf(f, " (#%d)", t->subno);
-   if (t->min != 1 || t->max != 1) {
+   if (t->min != 1 || t->max != 1)
+   {
        fprintf(f, " {%d,", t->min);
        if (t->max != INFINITY)
            fprintf(f, "%d", t->max);
        fprintf(f, "}");
    }
    if (nfapresent)
-       fprintf(f, " %ld-%ld", (long)t->begin->no, (long)t->end->no);
+       fprintf(f, " %ld-%ld", (long) t->begin->no, (long) t->end->no);
    if (t->left != NULL)
        fprintf(f, " L:%s", stid(t->left, idbuf, sizeof(idbuf)));
    if (t->right != NULL)
        fprintf(f, " R:%s", stid(t->right, idbuf, sizeof(idbuf)));
-   if (!NULLCNFA(t->cnfa)) {
+   if (!NULLCNFA(t->cnfa))
+   {
        fprintf(f, "\n");
        dumpcnfa(&t->cnfa, f);
        fprintf(f, "\n");
@@ -2106,22 +2219,21 @@ stdump(struct subre *t,
 /*
  * stid - identify a subtree node for dumping
  */
-static char *          /* points to buf or constant string */
-stid(struct subre *t,
+static char *                  /* points to buf or constant string */
+stid(struct subre * t,
     char *buf,
     size_t bufsize)
 {
    /* big enough for hex int or decimal t->retry? */
-   if (bufsize < sizeof(int)*2 + 3 || bufsize < sizeof(t->retry)*3 + 1)
+   if (bufsize < sizeof(int) * 2 + 3 || bufsize < sizeof(t->retry) * 3 + 1)
        return "unable";
    if (t->retry != 0)
        sprintf(buf, "%d", t->retry);
    else
-       sprintf(buf, "0x%x", (int)t);   /* may lose bits, that's okay */
+       sprintf(buf, "0x%x", (int) t);  /* may lose bits, that's okay */
    return buf;
 }
-
-#endif /* REG_DEBUG */
+#endif   /* REG_DEBUG */
 
 
 #include "regc_lex.c"
index 3bdfc2ab1820331debaf1230627866eed17092a8..6004462c9346f4c242bd6dd5afccd5922cfa8712 100644 (file)
@@ -2,21 +2,21 @@
  * DFA routines
  * This file is #included by regexec.c.
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/rege_dfa.c,v 1.1 2003/02/05 17:41:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/rege_dfa.c,v 1.2 2003/08/04 00:43:21 momjian Exp $
  *
  */
 
 /*
  * longest - longest-preferred matching engine
  */
-static chr *           /* endpoint, or NULL */
-longest(struct vars *v,            /* used only for debug and exec flags */
-       struct dfa *d,
-       chr *start,         /* where the match should start */
-       chr *stop,          /* match must end at or before here */
+static chr *                   /* endpoint, or NULL */
+longest(struct vars * v,       /* used only for debug and exec flags */
+       struct dfa * d,
+       chr * start,            /* where the match should start */
+       chr * stop,             /* match must end at or before here */
        int *hitstopp)          /* record whether hit v->stop, if non-NULL */
 {
-   chr *cp;
-   chr *realstop = (stop == v->stop) ? stop : stop + 1;
-   color co;
+   chr        *cp;
+   chr        *realstop = (stop == v->stop) ? stop : stop + 1;
+   color       co;
    struct sset *css;
    struct sset *ss;
-   chr *post;
-   int i;
+   chr        *post;
+   int         i;
    struct colormap *cm = d->cm;
 
    /* initialize */
@@ -59,12 +59,15 @@ longest(struct vars *v,         /* used only for debug and exec flags */
 
    /* startup */
    FDEBUG(("+++ startup +++\n"));
-   if (cp == v->start) {
-       co = d->cnfa->bos[(v->eflags&REG_NOTBOL) ? 0 : 1];
-       FDEBUG(("color %ld\n", (long)co));
-   } else {
+   if (cp == v->start)
+   {
+       co = d->cnfa->bos[(v->eflags & REG_NOTBOL) ? 0 : 1];
+       FDEBUG(("color %ld\n", (long) co));
+   }
+   else
+   {
        co = GETCOLOR(cm, *(cp - 1));
-       FDEBUG(("char %c, color %ld\n", (char)*(cp-1), (long)co));
+       FDEBUG(("char %c, color %ld\n", (char) *(cp - 1), (long) co));
    }
    css = miss(v, d, css, co, cp, start);
    if (css == NULL)
@@ -72,29 +75,33 @@ longest(struct vars *v,         /* used only for debug and exec flags */
    css->lastseen = cp;
 
    /* main loop */
-   if (v->eflags&REG_FTRACE)
-       while (cp < realstop) {
+   if (v->eflags & REG_FTRACE)
+       while (cp < realstop)
+       {
            FDEBUG(("+++ at c%d +++\n", css - d->ssets));
            co = GETCOLOR(cm, *cp);
-           FDEBUG(("char %c, color %ld\n", (char)*cp, (long)co));
+           FDEBUG(("char %c, color %ld\n", (char) *cp, (long) co));
            ss = css->outs[co];
-           if (ss == NULL) {
-               ss = miss(v, d, css, co, cp+1, start);
+           if (ss == NULL)
+           {
+               ss = miss(v, d, css, co, cp + 1, start);
                if (ss == NULL)
-                   break;  /* NOTE BREAK OUT */
+                   break;      /* NOTE BREAK OUT */
            }
            cp++;
            ss->lastseen = cp;
            css = ss;
        }
    else
-       while (cp < realstop) {
+       while (cp < realstop)
+       {
            co = GETCOLOR(cm, *cp);
            ss = css->outs[co];
-           if (ss == NULL) {
-               ss = miss(v, d, css, co, cp+1, start);
+           if (ss == NULL)
+           {
+               ss = miss(v, d, css, co, cp + 1, start);
                if (ss == NULL)
-                   break;  /* NOTE BREAK OUT */
+                   break;      /* NOTE BREAK OUT */
            }
            cp++;
            ss->lastseen = cp;
@@ -103,14 +110,15 @@ longest(struct vars *v,           /* used only for debug and exec flags */
 
    /* shutdown */
    FDEBUG(("+++ shutdown at c%d +++\n", css - d->ssets));
-   if (cp == v->stop && stop == v->stop) {
+   if (cp == v->stop && stop == v->stop)
+   {
        if (hitstopp != NULL)
            *hitstopp = 1;
-       co = d->cnfa->eos[(v->eflags&REG_NOTEOL) ? 0 : 1];
-       FDEBUG(("color %ld\n", (long)co));
+       co = d->cnfa->eos[(v->eflags & REG_NOTEOL) ? 0 : 1];
+       FDEBUG(("color %ld\n", (long) co));
        ss = miss(v, d, css, co, cp, start);
        /* special case:  match ended at eol? */
-       if (ss != NULL && (ss->flags&POSTSTATE))
+       if (ss != NULL && (ss->flags & POSTSTATE))
            return cp;
        else if (ss != NULL)
            ss->lastseen = cp;  /* to be tidy */
@@ -119,10 +127,10 @@ longest(struct vars *v,           /* used only for debug and exec flags */
    /* find last match, if any */
    post = d->lastpost;
    for (ss = d->ssets, i = d->nssused; i > 0; ss++, i--)
-       if ((ss->flags&POSTSTATE) && post != ss->lastseen &&
-                   (post == NULL || post < ss->lastseen))
+       if ((ss->flags & POSTSTATE) && post != ss->lastseen &&
+           (post == NULL || post < ss->lastseen))
            post = ss->lastseen;
-   if (post != NULL)       /* found one */
+   if (post != NULL)           /* found one */
        return post - 1;
 
    return NULL;
@@ -131,19 +139,20 @@ longest(struct vars *v,           /* used only for debug and exec flags */
 /*
  * shortest - shortest-preferred matching engine
  */
-static chr *           /* endpoint, or NULL */
-shortest(struct vars *v,
-        struct dfa *d,
-        chr *start,            /* where the match should start */
-        chr *min,          /* match must end at or after here */
-        chr *max,          /* match must end at or before here */
-        chr **coldp,           /* store coldstart pointer here, if nonNULL */
+static chr *                   /* endpoint, or NULL */
+shortest(struct vars * v,
+        struct dfa * d,
+        chr * start,           /* where the match should start */
+        chr * min,             /* match must end at or after here */
+        chr * max,             /* match must end at or before here */
+        chr ** coldp,          /* store coldstart pointer here, if
+                                * nonNULL */
         int *hitstopp)         /* record whether hit v->stop, if non-NULL */
 {
-   chr *cp;
-   chr *realmin = (min == v->stop) ? min : min + 1;
-   chr *realmax = (max == v->stop) ? max : max + 1;
-   color co;
+   chr        *cp;
+   chr        *realmin = (min == v->stop) ? min : min + 1;
+   chr        *realmax = (max == v->stop) ? max : max + 1;
+   color       co;
    struct sset *css;
    struct sset *ss;
    struct colormap *cm = d->cm;
@@ -156,12 +165,15 @@ shortest(struct vars *v,
 
    /* startup */
    FDEBUG(("--- startup ---\n"));
-   if (cp == v->start) {
-       co = d->cnfa->bos[(v->eflags&REG_NOTBOL) ? 0 : 1];
-       FDEBUG(("color %ld\n", (long)co));
-   } else {
+   if (cp == v->start)
+   {
+       co = d->cnfa->bos[(v->eflags & REG_NOTBOL) ? 0 : 1];
+       FDEBUG(("color %ld\n", (long) co));
+   }
+   else
+   {
        co = GETCOLOR(cm, *(cp - 1));
-       FDEBUG(("char %c, color %ld\n", (char)*(cp-1), (long)co));
+       FDEBUG(("char %c, color %ld\n", (char) *(cp - 1), (long) co));
    }
    css = miss(v, d, css, co, cp, start);
    if (css == NULL)
@@ -170,58 +182,66 @@ shortest(struct vars *v,
    ss = css;
 
    /* main loop */
-   if (v->eflags&REG_FTRACE)
-       while (cp < realmax) {
+   if (v->eflags & REG_FTRACE)
+       while (cp < realmax)
+       {
            FDEBUG(("--- at c%d ---\n", css - d->ssets));
            co = GETCOLOR(cm, *cp);
-           FDEBUG(("char %c, color %ld\n", (char)*cp, (long)co));
+           FDEBUG(("char %c, color %ld\n", (char) *cp, (long) co));
            ss = css->outs[co];
-           if (ss == NULL) {
-               ss = miss(v, d, css, co, cp+1, start);
+           if (ss == NULL)
+           {
+               ss = miss(v, d, css, co, cp + 1, start);
                if (ss == NULL)
-                   break;  /* NOTE BREAK OUT */
+                   break;      /* NOTE BREAK OUT */
            }
            cp++;
            ss->lastseen = cp;
            css = ss;
-           if ((ss->flags&POSTSTATE) && cp >= realmin)
-               break;      /* NOTE BREAK OUT */
+           if ((ss->flags & POSTSTATE) && cp >= realmin)
+               break;          /* NOTE BREAK OUT */
        }
    else
-       while (cp < realmax) {
+       while (cp < realmax)
+       {
            co = GETCOLOR(cm, *cp);
            ss = css->outs[co];
-           if (ss == NULL) {
-               ss = miss(v, d, css, co, cp+1, start);
+           if (ss == NULL)
+           {
+               ss = miss(v, d, css, co, cp + 1, start);
                if (ss == NULL)
-                   break;  /* NOTE BREAK OUT */
+                   break;      /* NOTE BREAK OUT */
            }
            cp++;
            ss->lastseen = cp;
            css = ss;
-           if ((ss->flags&POSTSTATE) && cp >= realmin)
-               break;      /* NOTE BREAK OUT */
+           if ((ss->flags & POSTSTATE) && cp >= realmin)
+               break;          /* NOTE BREAK OUT */
        }
 
    if (ss == NULL)
        return NULL;
 
-   if (coldp != NULL)  /* report last no-progress state set, if any */
+   if (coldp != NULL)          /* report last no-progress state set, if
+                                * any */
        *coldp = lastcold(v, d);
 
-   if ((ss->flags&POSTSTATE) && cp > min) {
+   if ((ss->flags & POSTSTATE) && cp > min)
+   {
        assert(cp >= realmin);
        cp--;
-   } else if (cp == v->stop && max == v->stop) {
-       co = d->cnfa->eos[(v->eflags&REG_NOTEOL) ? 0 : 1];
-       FDEBUG(("color %ld\n", (long)co));
+   }
+   else if (cp == v->stop && max == v->stop)
+   {
+       co = d->cnfa->eos[(v->eflags & REG_NOTEOL) ? 0 : 1];
+       FDEBUG(("color %ld\n", (long) co));
        ss = miss(v, d, css, co, cp, start);
        /* match might have ended at eol */
-       if ((ss == NULL || !(ss->flags&POSTSTATE)) && hitstopp != NULL)
+       if ((ss == NULL || !(ss->flags & POSTSTATE)) && hitstopp != NULL)
            *hitstopp = 1;
    }
 
-   if (ss == NULL || !(ss->flags&POSTSTATE))
+   if (ss == NULL || !(ss->flags & POSTSTATE))
        return NULL;
 
    return cp;
@@ -230,19 +250,19 @@ shortest(struct vars *v,
 /*
  * lastcold - determine last point at which no progress had been made
  */
-static chr *           /* endpoint, or NULL */
-lastcold(struct vars *v,
-        struct dfa *d)
+static chr *                   /* endpoint, or NULL */
+lastcold(struct vars * v,
+        struct dfa * d)
 {
    struct sset *ss;
-   chr *nopr;
-   int i;
+   chr        *nopr;
+   int         i;
 
    nopr = d->lastnopr;
    if (nopr == NULL)
        nopr = v->start;
    for (ss = d->ssets, i = d->nssused; i > 0; ss++, i--)
-       if ((ss->flags&NOPROGRESS) && nopr < ss->lastseen)
+       if ((ss->flags & NOPROGRESS) && nopr < ss->lastseen)
            nopr = ss->lastseen;
    return nopr;
 }
@@ -251,24 +271,27 @@ lastcold(struct vars *v,
  * newdfa - set up a fresh DFA
  */
 static struct dfa *
-newdfa(struct vars *v,
-      struct cnfa *cnfa,
-      struct colormap *cm,
-      struct smalldfa *small)      /* preallocated space, may be NULL */
+newdfa(struct vars * v,
+      struct cnfa * cnfa,
+      struct colormap * cm,
+      struct smalldfa * small) /* preallocated space, may be NULL */
 {
    struct dfa *d;
-   size_t nss = cnfa->nstates * 2;
-   int wordsper = (cnfa->nstates + UBITS - 1) / UBITS;
+   size_t      nss = cnfa->nstates * 2;
+   int         wordsper = (cnfa->nstates + UBITS - 1) / UBITS;
    struct smalldfa *smallwas = small;
 
    assert(cnfa != NULL && cnfa->nstates != 0);
 
-   if (nss <= FEWSTATES && cnfa->ncolors <= FEWCOLORS) {
+   if (nss <= FEWSTATES && cnfa->ncolors <= FEWCOLORS)
+   {
        assert(wordsper == 1);
-       if (small == NULL) {
-           small = (struct smalldfa *)MALLOC(
-                       sizeof(struct smalldfa));
-           if (small == NULL) {
+       if (small == NULL)
+       {
+           small = (struct smalldfa *) MALLOC(
+                                              sizeof(struct smalldfa));
+           if (small == NULL)
+           {
                ERR(REG_ESPACE);
                return NULL;
            }
@@ -280,32 +303,36 @@ newdfa(struct vars *v,
        d->outsarea = small->outsarea;
        d->incarea = small->incarea;
        d->cptsmalloced = 0;
-       d->mallocarea = (smallwas == NULL) ? (char *)small : NULL;
-   } else {
-       d = (struct dfa *)MALLOC(sizeof(struct dfa));
-       if (d == NULL) {
+       d->mallocarea = (smallwas == NULL) ? (char *) small : NULL;
+   }
+   else
+   {
+       d = (struct dfa *) MALLOC(sizeof(struct dfa));
+       if (d == NULL)
+       {
            ERR(REG_ESPACE);
            return NULL;
        }
-       d->ssets = (struct sset *)MALLOC(nss * sizeof(struct sset));
-       d->statesarea = (unsigned *)MALLOC((nss+WORK) * wordsper *
-                           sizeof(unsigned));
+       d->ssets = (struct sset *) MALLOC(nss * sizeof(struct sset));
+       d->statesarea = (unsigned *) MALLOC((nss + WORK) * wordsper *
+                                           sizeof(unsigned));
        d->work = &d->statesarea[nss * wordsper];
-       d->outsarea = (struct sset **)MALLOC(nss * cnfa->ncolors *
-                           sizeof(struct sset *));
-       d->incarea = (struct arcp *)MALLOC(nss * cnfa->ncolors *
-                           sizeof(struct arcp));
+       d->outsarea = (struct sset **) MALLOC(nss * cnfa->ncolors *
+                                             sizeof(struct sset *));
+       d->incarea = (struct arcp *) MALLOC(nss * cnfa->ncolors *
+                                           sizeof(struct arcp));
        d->cptsmalloced = 1;
-       d->mallocarea = (char *)d;
+       d->mallocarea = (char *) d;
        if (d->ssets == NULL || d->statesarea == NULL ||
-               d->outsarea == NULL || d->incarea == NULL) {
+           d->outsarea == NULL || d->incarea == NULL)
+       {
            freedfa(d);
            ERR(REG_ESPACE);
            return NULL;
        }
    }
 
-   d->nssets = (v->eflags&REG_SMALL) ? 7 : nss;
+   d->nssets = (v->eflags & REG_SMALL) ? 7 : nss;
    d->nssused = 0;
    d->nstates = cnfa->nstates;
    d->ncolors = cnfa->ncolors;
@@ -325,9 +352,10 @@ newdfa(struct vars *v,
  * freedfa - free a DFA
  */
 static void
-freedfa(struct dfa *d)
+freedfa(struct dfa * d)
 {
-   if (d->cptsmalloced) {
+   if (d->cptsmalloced)
+   {
        if (d->ssets != NULL)
            FREE(d->ssets);
        if (d->statesarea != NULL)
@@ -351,8 +379,8 @@ static unsigned
 hash(unsigned *uv,
     int n)
 {
-   int i;
-   unsigned h;
+   int         i;
+   unsigned    h;
 
    h = 0;
    for (i = 0; i < n; i++)
@@ -364,24 +392,25 @@ hash(unsigned *uv,
  * initialize - hand-craft a cache entry for startup, otherwise get ready
  */
 static struct sset *
-initialize(struct vars *v,         /* used only for debug flags */
-          struct dfa *d,
-          chr *start)
+initialize(struct vars * v,        /* used only for debug flags */
+          struct dfa * d,
+          chr * start)
 {
    struct sset *ss;
-   int i;
+   int         i;
 
    /* is previous one still there? */
-   if (d->nssused > 0 && (d->ssets[0].flags&STARTER))
+   if (d->nssused > 0 && (d->ssets[0].flags & STARTER))
        ss = &d->ssets[0];
-   else {              /* no, must (re)build it */
+   else
+   {                           /* no, must (re)build it */
        ss = getvacant(v, d, start, start);
        for (i = 0; i < d->wordsper; i++)
            ss->states[i] = 0;
        BSET(ss->states, d->cnfa->pre);
        ss->hash = HASH(ss->states, d->wordsper);
        assert(d->cnfa->pre != d->cnfa->post);
-       ss->flags = STARTER|LOCKED|NOPROGRESS;
+       ss->flags = STARTER | LOCKED | NOPROGRESS;
        /* lastseen dealt with below */
    }
 
@@ -396,27 +425,28 @@ initialize(struct vars *v,            /* used only for debug flags */
 /*
  * miss - handle a cache miss
  */
-static struct sset *       /* NULL if goes to empty set */
-miss(struct vars *v,           /* used only for debug flags */
-    struct dfa *d,
-    struct sset *css,
+static struct sset *           /* NULL if goes to empty set */
+miss(struct vars * v,          /* used only for debug flags */
+    struct dfa * d,
+    struct sset * css,
     pcolor co,
-    chr *cp,           /* next chr */
-    chr *start)            /* where the attempt got started */
+    chr * cp,                  /* next chr */
+    chr * start)               /* where the attempt got started */
 {
    struct cnfa *cnfa = d->cnfa;
-   int i;
-   unsigned h;
+   int         i;
+   unsigned    h;
    struct carc *ca;
    struct sset *p;
-   int ispost;
-   int noprogress;
-   int gotstate;
-   int dolacons;
-   int sawlacons;
+   int         ispost;
+   int         noprogress;
+   int         gotstate;
+   int         dolacons;
+   int         sawlacons;
 
    /* for convenience, we can be called even if it might not be a miss */
-   if (css->outs[co] != NULL) {
+   if (css->outs[co] != NULL)
+   {
        FDEBUG(("hit\n"));
        return css->outs[co];
    }
@@ -430,8 +460,9 @@ miss(struct vars *v,            /* used only for debug flags */
    gotstate = 0;
    for (i = 0; i < d->nstates; i++)
        if (ISBSET(css->states, i))
-           for (ca = cnfa->states[i]+1; ca->co != COLORLESS; ca++)
-               if (ca->co == co) {
+           for (ca = cnfa->states[i] + 1; ca->co != COLORLESS; ca++)
+               if (ca->co == co)
+               {
                    BSET(d->work, ca->to);
                    gotstate = 1;
                    if (ca->to == cnfa->post)
@@ -440,21 +471,23 @@ miss(struct vars *v,          /* used only for debug flags */
                        noprogress = 0;
                    FDEBUG(("%d -> %d\n", i, ca->to));
                }
-   dolacons = (gotstate) ? (cnfa->flags&HASLACONS) : 0;
+   dolacons = (gotstate) ? (cnfa->flags & HASLACONS) : 0;
    sawlacons = 0;
-   while (dolacons) {      /* transitive closure */
+   while (dolacons)
+   {                           /* transitive closure */
        dolacons = 0;
        for (i = 0; i < d->nstates; i++)
            if (ISBSET(d->work, i))
-               for (ca = cnfa->states[i]+1; ca->co != COLORLESS;
-                                   ca++) {
+               for (ca = cnfa->states[i] + 1; ca->co != COLORLESS;
+                    ca++)
+               {
                    if (ca->co <= cnfa->ncolors)
-                       continue; /* NOTE CONTINUE */
+                       continue;       /* NOTE CONTINUE */
                    sawlacons = 1;
                    if (ISBSET(d->work, ca->to))
-                       continue; /* NOTE CONTINUE */
+                       continue;       /* NOTE CONTINUE */
                    if (!lacon(v, cnfa, cp, ca->co))
-                       continue; /* NOTE CONTINUE */
+                       continue;       /* NOTE CONTINUE */
                    BSET(d->work, ca->to);
                    dolacons = 1;
                    if (ca->to == cnfa->post)
@@ -470,11 +503,13 @@ miss(struct vars *v,          /* used only for debug flags */
 
    /* next, is that in the cache? */
    for (p = d->ssets, i = d->nssused; i > 0; p++, i--)
-       if (HIT(h, d->work, p, d->wordsper)) {
+       if (HIT(h, d->work, p, d->wordsper))
+       {
            FDEBUG(("cached c%d\n", p - d->ssets));
-           break;          /* NOTE BREAK OUT */
+           break;              /* NOTE BREAK OUT */
        }
-   if (i == 0) {       /* nope, need a new cache entry */
+   if (i == 0)
+   {                           /* nope, need a new cache entry */
        p = getvacant(v, d, cp, start);
        assert(p != css);
        for (i = 0; i < d->wordsper; i++)
@@ -486,12 +521,13 @@ miss(struct vars *v,          /* used only for debug flags */
        /* lastseen to be dealt with by caller */
    }
 
-   if (!sawlacons) {       /* lookahead conds. always cache miss */
+   if (!sawlacons)
+   {                           /* lookahead conds. always cache miss */
        FDEBUG(("c%d[%d]->c%d\n", css - d->ssets, co, p - d->ssets));
        css->outs[co] = p;
        css->inchain[co] = p->ins;
        p->ins.ss = css;
-       p->ins.co = (color)co;
+       p->ins.co = (color) co;
    }
    return p;
 }
@@ -499,28 +535,29 @@ miss(struct vars *v,          /* used only for debug flags */
 /*
  * lacon - lookahead-constraint checker for miss()
  */
-static int         /* predicate:  constraint satisfied? */
-lacon(struct vars *v,
-     struct cnfa *pcnfa,       /* parent cnfa */
-     chr *cp,
-     pcolor co)            /* "color" of the lookahead constraint */
+static int                     /* predicate:  constraint satisfied? */
+lacon(struct vars * v,
+     struct cnfa * pcnfa,      /* parent cnfa */
+     chr * cp,
+     pcolor co)                /* "color" of the lookahead constraint */
 {
-   int n;
+   int         n;
    struct subre *sub;
    struct dfa *d;
    struct smalldfa sd;
-   chr *end;
+   chr        *end;
 
    n = co - pcnfa->ncolors;
    assert(n < v->g->nlacons && v->g->lacons != NULL);
    FDEBUG(("=== testing lacon %d\n", n));
    sub = &v->g->lacons[n];
    d = newdfa(v, &sub->cnfa, &v->g->cmap, &sd);
-   if (d == NULL) {
+   if (d == NULL)
+   {
        ERR(REG_ESPACE);
        return 0;
    }
-   end = longest(v, d, cp, v->stop, (int *)NULL);
+   end = longest(v, d, cp, v->stop, (int *) NULL);
    freedfa(d);
    FDEBUG(("=== lacon %d match %d\n", n, (end != NULL)));
    return (sub->subno) ? (end != NULL) : (end == NULL);
@@ -532,46 +569,49 @@ lacon(struct vars *v,
  * clear the innards of the state set -- that's up to the caller.
  */
 static struct sset *
-getvacant(struct vars *v,          /* used only for debug flags */
-         struct dfa *d,
-         chr *cp,
-         chr *start)
+getvacant(struct vars * v,     /* used only for debug flags */
+         struct dfa * d,
+         chr * cp,
+         chr * start)
 {
-   int i;
+   int         i;
    struct sset *ss;
    struct sset *p;
    struct arcp ap;
    struct arcp lastap;
-   color co;
+   color       co;
 
    ss = pickss(v, d, cp, start);
-   assert(!(ss->flags&LOCKED));
+   assert(!(ss->flags & LOCKED));
 
    /* clear out its inarcs, including self-referential ones */
    ap = ss->ins;
-   while ((p = ap.ss) != NULL) {
+   while ((p = ap.ss) != NULL)
+   {
        co = ap.co;
-       FDEBUG(("zapping c%d's %ld outarc\n", p - d->ssets, (long)co));
+       FDEBUG(("zapping c%d's %ld outarc\n", p - d->ssets, (long) co));
        p->outs[co] = NULL;
        ap = p->inchain[co];
-       p->inchain[co].ss = NULL;   /* paranoia */
+       p->inchain[co].ss = NULL;       /* paranoia */
    }
    ss->ins.ss = NULL;
 
    /* take it off the inarc chains of the ssets reached by its outarcs */
-   for (i = 0; i < d->ncolors; i++) {
+   for (i = 0; i < d->ncolors; i++)
+   {
        p = ss->outs[i];
        assert(p != ss);        /* not self-referential */
        if (p == NULL)
-           continue;       /* NOTE CONTINUE */
+           continue;           /* NOTE CONTINUE */
        FDEBUG(("del outarc %d from c%d's in chn\n", i, p - d->ssets));
        if (p->ins.ss == ss && p->ins.co == i)
            p->ins = ss->inchain[i];
-       else {
+       else
+       {
            assert(p->ins.ss != NULL);
            for (ap = p->ins; ap.ss != NULL &&
-                       !(ap.ss == ss && ap.co == i);
-                       ap = ap.ss->inchain[ap.co])
+                !(ap.ss == ss && ap.co == i);
+                ap = ap.ss->inchain[ap.co])
                lastap = ap;
            assert(ap.ss != NULL);
            lastap.ss->inchain[lastap.co] = ss->inchain[i];
@@ -581,13 +621,13 @@ getvacant(struct vars *v,         /* used only for debug flags */
    }
 
    /* if ss was a success state, may need to remember location */
-   if ((ss->flags&POSTSTATE) && ss->lastseen != d->lastpost &&
-           (d->lastpost == NULL || d->lastpost < ss->lastseen))
+   if ((ss->flags & POSTSTATE) && ss->lastseen != d->lastpost &&
+       (d->lastpost == NULL || d->lastpost < ss->lastseen))
        d->lastpost = ss->lastseen;
 
    /* likewise for a no-progress state */
-   if ((ss->flags&NOPROGRESS) && ss->lastseen != d->lastnopr &&
-           (d->lastnopr == NULL || d->lastnopr < ss->lastseen))
+   if ((ss->flags & NOPROGRESS) && ss->lastseen != d->lastnopr &&
+       (d->lastnopr == NULL || d->lastnopr < ss->lastseen))
        d->lastnopr = ss->lastseen;
 
    return ss;
@@ -597,18 +637,19 @@ getvacant(struct vars *v,         /* used only for debug flags */
  * pickss - pick the next stateset to be used
  */
 static struct sset *
-pickss(struct vars *v,         /* used only for debug flags */
-      struct dfa *d,
-      chr *cp,
-      chr *start)
+pickss(struct vars * v,            /* used only for debug flags */
+      struct dfa * d,
+      chr * cp,
+      chr * start)
 {
-   int i;
+   int         i;
    struct sset *ss;
    struct sset *end;
-   chr *ancient;
+   chr        *ancient;
 
    /* shortcut for cases where cache isn't full */
-   if (d->nssused < d->nssets) {
+   if (d->nssused < d->nssets)
+   {
        i = d->nssused;
        d->nssused++;
        ss = &d->ssets[i];
@@ -620,7 +661,8 @@ pickss(struct vars *v,          /* used only for debug flags */
        ss->ins.co = WHITE;     /* give it some value */
        ss->outs = &d->outsarea[i * d->ncolors];
        ss->inchain = &d->incarea[i * d->ncolors];
-       for (i = 0; i < d->ncolors; i++) {
+       for (i = 0; i < d->ncolors; i++)
+       {
            ss->outs[i] = NULL;
            ss->inchain[i].ss = NULL;
        }
@@ -628,20 +670,22 @@ pickss(struct vars *v,            /* used only for debug flags */
    }
 
    /* look for oldest, or old enough anyway */
-   if (cp - start > d->nssets*2/3)     /* oldest 33% are expendable */
-       ancient = cp - d->nssets*2/3;
+   if (cp - start > d->nssets * 2 / 3) /* oldest 33% are expendable */
+       ancient = cp - d->nssets * 2 / 3;
    else
        ancient = start;
    for (ss = d->search, end = &d->ssets[d->nssets]; ss < end; ss++)
        if ((ss->lastseen == NULL || ss->lastseen < ancient) &&
-                           !(ss->flags&LOCKED)) {
+           !(ss->flags & LOCKED))
+       {
            d->search = ss + 1;
            FDEBUG(("replacing c%d\n", ss - d->ssets));
            return ss;
        }
    for (ss = d->ssets, end = d->search; ss < end; ss++)
        if ((ss->lastseen == NULL || ss->lastseen < ancient) &&
-                           !(ss->flags&LOCKED)) {
+           !(ss->flags & LOCKED))
+       {
            d->search = ss + 1;
            FDEBUG(("replacing c%d\n", ss - d->ssets));
            return ss;
index 94693eba2114f37b9aede71d9eb3c17038a5b9f7..a0a9d3f0410cc9ced5687cbac3ebddad70750f69 100644 (file)
@@ -1,21 +1,21 @@
 /*
  * regerror - error-code expansion
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -27,7 +27,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regerror.c,v 1.25 2003/02/05 17:41:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regerror.c,v 1.26 2003/08/04 00:43:21 momjian Exp $
  *
  */
 
 static char unk[] = "*** unknown regex error code 0x%x ***";
 
 /* struct to map among codes, code names, and explanations */
-static struct rerr {
-   int code;
-   char *name;
-   char *explain;
-} rerrs[] = {
+static struct rerr
+{
+   int         code;
+   char       *name;
+   char       *explain;
+}  rerrs[] =
+
+{
    /* the actual table is built from regex.h */
 #include "regex/regerrs.h"
-   { -1,   "", "oops" },   /* explanation special-cased in code */
+   {
+       -1, "", "oops"
+   },                          /* explanation special-cased in code */
 };
 
 /*
  * pg_regerror - the interface to error numbers
  */
 /* ARGSUSED */
-size_t             /* actual space needed (including NUL) */
+size_t                         /* actual space needed (including NUL) */
 pg_regerror(int errcode,       /* error code, or REG_ATOI or REG_ITOA */
-           const regex_t *preg, /* associated regex_t (unused at present) */
+           const regex_t *preg,    /* associated regex_t (unused at present) */
            char *errbuf,       /* result buffer (unless errbuf_size==0) */
-           size_t errbuf_size) /* available space in errbuf, can be 0 */
+           size_t errbuf_size) /* available space in errbuf, can be 0 */
 {
    struct rerr *r;
-   char *msg;
-   char convbuf[sizeof(unk)+50];   /* 50 = plenty for int */
-   size_t len;
-   int icode;
+   char       *msg;
+   char        convbuf[sizeof(unk) + 50];      /* 50 = plenty for int */
+   size_t      len;
+   int         icode;
 
-   switch (errcode) {
-   case REG_ATOI:      /* convert name to number */
-       for (r = rerrs; r->code >= 0; r++)
-           if (strcmp(r->name, errbuf) == 0)
-               break;
-       sprintf(convbuf, "%d", r->code);    /* -1 for unknown */
-       msg = convbuf;
-       break;
-   case REG_ITOA:      /* convert number to name */
-       icode = atoi(errbuf);   /* not our problem if this fails */
-       for (r = rerrs; r->code >= 0; r++)
-           if (r->code == icode)
-               break;
-       if (r->code >= 0)
-           msg = r->name;
-       else {          /* unknown; tell him the number */
-           sprintf(convbuf, "REG_%u", (unsigned)icode);
+   switch (errcode)
+   {
+       case REG_ATOI:          /* convert name to number */
+           for (r = rerrs; r->code >= 0; r++)
+               if (strcmp(r->name, errbuf) == 0)
+                   break;
+           sprintf(convbuf, "%d", r->code);    /* -1 for unknown */
            msg = convbuf;
-       }
-       break;
-   default:        /* a real, normal error code */
-       for (r = rerrs; r->code >= 0; r++)
-           if (r->code == errcode)
-               break;
-       if (r->code >= 0)
-           msg = r->explain;
-       else {          /* unknown; say so */
-           sprintf(convbuf, unk, errcode);
-           msg = convbuf;
-       }
-       break;
+           break;
+       case REG_ITOA:          /* convert number to name */
+           icode = atoi(errbuf);       /* not our problem if this fails */
+           for (r = rerrs; r->code >= 0; r++)
+               if (r->code == icode)
+                   break;
+           if (r->code >= 0)
+               msg = r->name;
+           else
+           {                   /* unknown; tell him the number */
+               sprintf(convbuf, "REG_%u", (unsigned) icode);
+               msg = convbuf;
+           }
+           break;
+       default:                /* a real, normal error code */
+           for (r = rerrs; r->code >= 0; r++)
+               if (r->code == errcode)
+                   break;
+           if (r->code >= 0)
+               msg = r->explain;
+           else
+           {                   /* unknown; say so */
+               sprintf(convbuf, unk, errcode);
+               msg = convbuf;
+           }
+           break;
    }
 
    len = strlen(msg) + 1;      /* space needed, including NUL */
-   if (errbuf_size > 0) {
+   if (errbuf_size > 0)
+   {
        if (errbuf_size > len)
            strcpy(errbuf, msg);
-       else {          /* truncate to fit */
-           strncpy(errbuf, msg, errbuf_size-1);
-           errbuf[errbuf_size-1] = '\0';
+       else
+       {                       /* truncate to fit */
+           strncpy(errbuf, msg, errbuf_size - 1);
+           errbuf[errbuf_size - 1] = '\0';
        }
    }
 
index eef01b0bd58b95132a0317ead3a4ecf0b315fe90..535501ff0b747fe6e0feac395314d639c1a48d64 100644 (file)
@@ -1,21 +1,21 @@
 /*
  * re_*exec and friends - match REs
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -27,7 +27,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regexec.c,v 1.21 2003/02/05 17:41:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regexec.c,v 1.22 2003/08/04 00:43:21 momjian Exp $
  *
  */
 
 
 
 /* lazy-DFA representation */
-struct arcp {          /* "pointer" to an outarc */
+struct arcp
+{                              /* "pointer" to an outarc */
    struct sset *ss;
-   color co;
+   color       co;
 };
 
-struct sset {          /* state set */
-   unsigned *states;   /* pointer to bitvector */
-   unsigned hash;      /* hash of bitvector */
-#      define  HASH(bv, nw)    (((nw) == 1) ? *(bv) : hash(bv, nw))
-#  define  HIT(h,bv,ss,nw) ((ss)->hash == (h) && ((nw) == 1 || \
+struct sset
+{                              /* state set */
+   unsigned   *states;         /* pointer to bitvector */
+   unsigned    hash;           /* hash of bitvector */
+#define  HASH(bv, nw)   (((nw) == 1) ? *(bv) : hash(bv, nw))
+#define  HIT(h,bv,ss,nw) ((ss)->hash == (h) && ((nw) == 1 || \
        memcmp(VS(bv), VS((ss)->states), (nw)*sizeof(unsigned)) == 0))
-   int flags;
-#      define  STARTER     01  /* the initial state set */
-#      define  POSTSTATE   02  /* includes the goal state */
-#      define  LOCKED      04  /* locked in cache */
-#      define  NOPROGRESS  010 /* zero-progress state set */
-   struct arcp ins;    /* chain of inarcs pointing here */
-   chr *lastseen;      /* last entered on arrival here */
-   struct sset **outs; /* outarc vector indexed by color */
-   struct arcp *inchain;   /* chain-pointer vector for outarcs */
+   int         flags;
+#define  STARTER    01         /* the initial state set */
+#define  POSTSTATE  02         /* includes the goal state */
+#define  LOCKED         04         /* locked in cache */
+#define  NOPROGRESS  010       /* zero-progress state set */
+   struct arcp ins;            /* chain of inarcs pointing here */
+   chr        *lastseen;       /* last entered on arrival here */
+   struct sset **outs;         /* outarc vector indexed by color */
+   struct arcp *inchain;       /* chain-pointer vector for outarcs */
 };
 
-struct dfa {
-   int nssets;     /* size of cache */
-   int nssused;        /* how many entries occupied yet */
-   int nstates;        /* number of states */
-   int ncolors;        /* length of outarc and inchain vectors */
-   int wordsper;       /* length of state-set bitvectors */
-   struct sset *ssets; /* state-set cache */
-   unsigned *statesarea;   /* bitvector storage */
-   unsigned *work;     /* pointer to work area within statesarea */
-   struct sset **outsarea; /* outarc-vector storage */
-   struct arcp *incarea;   /* inchain storage */
+struct dfa
+{
+   int         nssets;         /* size of cache */
+   int         nssused;        /* how many entries occupied yet */
+   int         nstates;        /* number of states */
+   int         ncolors;        /* length of outarc and inchain vectors */
+   int         wordsper;       /* length of state-set bitvectors */
+   struct sset *ssets;         /* state-set cache */
+   unsigned   *statesarea;     /* bitvector storage */
+   unsigned   *work;           /* pointer to work area within statesarea */
+   struct sset **outsarea;     /* outarc-vector storage */
+   struct arcp *incarea;       /* inchain storage */
    struct cnfa *cnfa;
    struct colormap *cm;
-   chr *lastpost;      /* location of last cache-flushed success */
-   chr *lastnopr;      /* location of last cache-flushed NOPROGRESS */
-   struct sset *search;    /* replacement-search-pointer memory */
-   int cptsmalloced;   /* were the areas individually malloced? */
-   char *mallocarea;   /* self, or master malloced area, or NULL */
+   chr        *lastpost;       /* location of last cache-flushed success */
+   chr        *lastnopr;       /* location of last cache-flushed
+                                * NOPROGRESS */
+   struct sset *search;        /* replacement-search-pointer memory */
+   int         cptsmalloced;   /* were the areas individually malloced? */
+   char       *mallocarea;     /* self, or master malloced area, or NULL */
 };
 
-#define    WORK    1       /* number of work bitvectors needed */
+#define WORK   1               /* number of work bitvectors needed */
 
 /* setup for non-malloc allocation for small cases */
-#define    FEWSTATES   20  /* must be less than UBITS */
-#define    FEWCOLORS   15
-struct smalldfa {
-   struct dfa dfa;
-   struct sset ssets[FEWSTATES*2];
-   unsigned statesarea[FEWSTATES*2 + WORK];
-   struct sset *outsarea[FEWSTATES*2 * FEWCOLORS];
-   struct arcp incarea[FEWSTATES*2 * FEWCOLORS];
+#define FEWSTATES  20          /* must be less than UBITS */
+#define FEWCOLORS  15
+struct smalldfa
+{
+   struct dfa  dfa;
+   struct sset ssets[FEWSTATES * 2];
+   unsigned    statesarea[FEWSTATES * 2 + WORK];
+   struct sset *outsarea[FEWSTATES * 2 * FEWCOLORS];
+   struct arcp incarea[FEWSTATES * 2 * FEWCOLORS];
 };
-#define    DOMALLOC    ((struct smalldfa *)NULL)   /* force malloc */
+
+#define DOMALLOC   ((struct smalldfa *)NULL)   /* force malloc */
 
 
 
 /* internal variables, bundled for easy passing around */
-struct vars {
-   regex_t *re;
+struct vars
+{
+   regex_t    *re;
    struct guts *g;
-   int eflags;     /* copies of arguments */
-   size_t nmatch;
+   int         eflags;         /* copies of arguments */
+   size_t      nmatch;
    regmatch_t *pmatch;
    rm_detail_t *details;
-   chr *start;     /* start of string */
-   chr *stop;      /* just past end of string */
-   int err;        /* error code if any (0 none) */
-   regoff_t *mem;      /* memory vector for backtracking */
+   chr        *start;          /* start of string */
+   chr        *stop;           /* just past end of string */
+   int         err;            /* error code if any (0 none) */
+   regoff_t   *mem;            /* memory vector for backtracking */
    struct smalldfa dfa1;
    struct smalldfa dfa2;
 };
 
-#define    VISERR(vv)  ((vv)->err != 0)    /* have we seen an error yet? */
-#define    ISERR() VISERR(v)
-#define    VERR(vv,e)  (((vv)->err) ? (vv)->err : ((vv)->err = (e)))
-#define    ERR(e)  VERR(v, e)      /* record an error */
-#define    NOERR() {if (ISERR()) return v->err;}   /* if error seen, return it */
-#define    OFF(p)  ((p) - v->start)
-#define    LOFF(p) ((long)OFF(p))
+#define VISERR(vv) ((vv)->err != 0)    /* have we seen an error yet? */
+#define ISERR() VISERR(v)
+#define VERR(vv,e) (((vv)->err) ? (vv)->err : ((vv)->err = (e)))
+#define ERR(e) VERR(v, e)      /* record an error */
+#define NOERR() {if (ISERR()) return v->err;}  /* if error seen, return
+                                                * it */
+#define OFF(p) ((p) - v->start)
+#define LOFF(p) ((long)OFF(p))
 
 
 
@@ -124,32 +132,33 @@ struct vars {
  * forward declarations
  */
 /* === regexec.c === */
-static int find (struct vars *, struct cnfa *, struct colormap *);
-static int cfind (struct vars *, struct cnfa *, struct colormap *);
-static int cfindloop (struct vars *, struct cnfa *, struct colormap *, struct dfa *, struct dfa *, chr **);
-static void zapsubs (regmatch_t *, size_t);
-static void zapmem (struct vars *, struct subre *);
-static void subset (struct vars *, struct subre *, chr *, chr *);
-static int dissect (struct vars *, struct subre *, chr *, chr *);
-static int condissect (struct vars *, struct subre *, chr *, chr *);
-static int altdissect (struct vars *, struct subre *, chr *, chr *);
-static int cdissect (struct vars *, struct subre *, chr *, chr *);
-static int ccondissect (struct vars *, struct subre *, chr *, chr *);
-static int crevdissect (struct vars *, struct subre *, chr *, chr *);
-static int cbrdissect (struct vars *, struct subre *, chr *, chr *);
-static int caltdissect (struct vars *, struct subre *, chr *, chr *);
+static int find(struct vars *, struct cnfa *, struct colormap *);
+static int cfind(struct vars *, struct cnfa *, struct colormap *);
+static int cfindloop(struct vars *, struct cnfa *, struct colormap *, struct dfa *, struct dfa *, chr **);
+static void zapsubs(regmatch_t *, size_t);
+static void zapmem(struct vars *, struct subre *);
+static void subset(struct vars *, struct subre *, chr *, chr *);
+static int dissect(struct vars *, struct subre *, chr *, chr *);
+static int condissect(struct vars *, struct subre *, chr *, chr *);
+static int altdissect(struct vars *, struct subre *, chr *, chr *);
+static int cdissect(struct vars *, struct subre *, chr *, chr *);
+static int ccondissect(struct vars *, struct subre *, chr *, chr *);
+static int crevdissect(struct vars *, struct subre *, chr *, chr *);
+static int cbrdissect(struct vars *, struct subre *, chr *, chr *);
+static int caltdissect(struct vars *, struct subre *, chr *, chr *);
+
 /* === rege_dfa.c === */
-static chr *longest (struct vars *, struct dfa *, chr *, chr *, int *);
-static chr *shortest (struct vars *, struct dfa *, chr *, chr *, chr *, chr **, int *);
-static chr *lastcold (struct vars *, struct dfa *);
-static struct dfa *newdfa (struct vars *, struct cnfa *, struct colormap *, struct smalldfa *);
-static void freedfa (struct dfa *);
-static unsigned hash (unsigned *, int);
-static struct sset *initialize (struct vars *, struct dfa *, chr *);
-static struct sset *miss (struct vars *, struct dfa *, struct sset *, pcolor, chr *, chr *);
-static int lacon (struct vars *, struct cnfa *, chr *, pcolor);
-static struct sset *getvacant (struct vars *, struct dfa *, chr *, chr *);
-static struct sset *pickss (struct vars *, struct dfa *, chr *, chr *);
+static chr *longest(struct vars *, struct dfa *, chr *, chr *, int *);
+static chr *shortest(struct vars *, struct dfa *, chr *, chr *, chr *, chr **, int *);
+static chr *lastcold(struct vars *, struct dfa *);
+static struct dfa *newdfa(struct vars *, struct cnfa *, struct colormap *, struct smalldfa *);
+static void freedfa(struct dfa *);
+static unsigned hash(unsigned *, int);
+static struct sset *initialize(struct vars *, struct dfa *, chr *);
+static struct sset *miss(struct vars *, struct dfa *, struct sset *, pcolor, chr *, chr *);
+static int lacon(struct vars *, struct cnfa *, chr *, pcolor);
+static struct sset *getvacant(struct vars *, struct dfa *, chr *, chr *);
+static struct sset *pickss(struct vars *, struct dfa *, chr *, chr *);
 
 
 /*
@@ -157,22 +166,24 @@ static struct sset *pickss (struct vars *, struct dfa *, chr *, chr *);
  */
 int
 pg_regexec(regex_t *re,
-          const chr *string,
+          const chr * string,
           size_t len,
-          rm_detail_t *details,
+          rm_detail_t * details,
           size_t nmatch,
           regmatch_t pmatch[],
           int flags)
 {
    struct vars var;
    register struct vars *v = &var;
-   int st;
-   size_t n;
-   int backref;
-#  define  LOCALMAT    20
-   regmatch_t mat[LOCALMAT];
-#  define  LOCALMEM    40
-   regoff_t mem[LOCALMEM];
+   int         st;
+   size_t      n;
+   int         backref;
+
+#define  LOCALMAT   20
+   regmatch_t  mat[LOCALMAT];
+
+#define  LOCALMEM   40
+   regoff_t    mem[LOCALMEM];
 
    /* sanity checks */
    if (re == NULL || string == NULL || re->re_magic != REMAGIC)
@@ -182,46 +193,51 @@ pg_regexec(regex_t *re,
 
    /* setup */
    v->re = re;
-   v->g = (struct guts *)re->re_guts;
-   if ((v->g->cflags&REG_EXPECT) && details == NULL)
+   v->g = (struct guts *) re->re_guts;
+   if ((v->g->cflags & REG_EXPECT) && details == NULL)
        return REG_INVARG;
-   if (v->g->info&REG_UIMPOSSIBLE)
+   if (v->g->info & REG_UIMPOSSIBLE)
        return REG_NOMATCH;
-   backref = (v->g->info&REG_UBACKREF) ? 1 : 0;
+   backref = (v->g->info & REG_UBACKREF) ? 1 : 0;
    v->eflags = flags;
-   if (v->g->cflags&REG_NOSUB)
-       nmatch = 0;     /* override client */
+   if (v->g->cflags & REG_NOSUB)
+       nmatch = 0;             /* override client */
    v->nmatch = nmatch;
-   if (backref) {
+   if (backref)
+   {
        /* need work area */
        if (v->g->nsub + 1 <= LOCALMAT)
            v->pmatch = mat;
        else
-           v->pmatch = (regmatch_t *)MALLOC((v->g->nsub + 1) *
-                           sizeof(regmatch_t));
+           v->pmatch = (regmatch_t *) MALLOC((v->g->nsub + 1) *
+                                             sizeof(regmatch_t));
        if (v->pmatch == NULL)
            return REG_ESPACE;
        v->nmatch = v->g->nsub + 1;
-   } else
+   }
+   else
        v->pmatch = pmatch;
    v->details = details;
-   v->start = (chr *)string;
-   v->stop = (chr *)string + len;
+   v->start = (chr *) string;
+   v->stop = (chr *) string + len;
    v->err = 0;
-   if (backref) {
+   if (backref)
+   {
        /* need retry memory */
        assert(v->g->ntree >= 0);
-       n = (size_t)v->g->ntree;
+       n = (size_t) v->g->ntree;
        if (n <= LOCALMEM)
            v->mem = mem;
        else
-           v->mem = (regoff_t *)MALLOC(n*sizeof(regoff_t));
-       if (v->mem == NULL) {
+           v->mem = (regoff_t *) MALLOC(n * sizeof(regoff_t));
+       if (v->mem == NULL)
+       {
            if (v->pmatch != pmatch && v->pmatch != mat)
                FREE(v->pmatch);
            return REG_ESPACE;
        }
-   } else
+   }
+   else
        v->mem = NULL;
 
    /* do it */
@@ -232,10 +248,11 @@ pg_regexec(regex_t *re,
        st = find(v, &v->g->tree->cnfa, &v->g->cmap);
 
    /* copy (portion of) match vector over if necessary */
-   if (st == REG_OKAY && v->pmatch != pmatch && nmatch > 0) {
+   if (st == REG_OKAY && v->pmatch != pmatch && nmatch > 0)
+   {
        zapsubs(pmatch, nmatch);
        n = (nmatch < v->nmatch) ? nmatch : v->nmatch;
-       memcpy(VS(pmatch), VS(v->pmatch), n*sizeof(regmatch_t));
+       memcpy(VS(pmatch), VS(v->pmatch), n * sizeof(regmatch_t));
    }
 
    /* clean up */
@@ -250,19 +267,20 @@ pg_regexec(regex_t *re,
  * find - find a match for the main NFA (no-complications case)
  */
 static int
-find(struct vars *v,
-    struct cnfa *cnfa,
-    struct colormap *cm)
+find(struct vars * v,
+    struct cnfa * cnfa,
+    struct colormap * cm)
 {
    struct dfa *s;
    struct dfa *d;
-   chr *begin;
-   chr *end = NULL;
-   chr *cold;
-   chr *open;      /* open and close of range of possible starts */
-   chr *close;
-   int hitend;
-   int shorter = (v->g->tree->flags&SHORTER) ? 1 : 0;
+   chr        *begin;
+   chr        *end = NULL;
+   chr        *cold;
+   chr        *open;           /* open and close of range of possible
+                                * starts */
+   chr        *close;
+   int         hitend;
+   int         shorter = (v->g->tree->flags & SHORTER) ? 1 : 0;
 
    /* first, a shot with the search RE */
    s = newdfa(v, &v->g->search, cm, &v->dfa1);
@@ -270,20 +288,21 @@ find(struct vars *v,
    NOERR();
    MDEBUG(("\nsearch at %ld\n", LOFF(v->start)));
    cold = NULL;
-   close = shortest(v, s, v->start, v->start, v->stop, &cold, (int *)NULL);
+   close = shortest(v, s, v->start, v->start, v->stop, &cold, (int *) NULL);
    freedfa(s);
    NOERR();
-   if (v->g->cflags&REG_EXPECT) {
+   if (v->g->cflags & REG_EXPECT)
+   {
        assert(v->details != NULL);
        if (cold != NULL)
            v->details->rm_extend.rm_so = OFF(cold);
        else
            v->details->rm_extend.rm_so = OFF(v->stop);
-       v->details->rm_extend.rm_eo = OFF(v->stop); /* unknown */
+       v->details->rm_extend.rm_eo = OFF(v->stop);     /* unknown */
    }
-   if (close == NULL)      /* not found */
+   if (close == NULL)          /* not found */
        return REG_NOMATCH;
-   if (v->nmatch == 0)     /* found, don't need exact location */
+   if (v->nmatch == 0)         /* found, don't need exact location */
        return REG_OKAY;
 
    /* find starting point and match */
@@ -294,18 +313,19 @@ find(struct vars *v,
    d = newdfa(v, cnfa, cm, &v->dfa1);
    assert(!(ISERR() && d != NULL));
    NOERR();
-   for (begin = open; begin <= close; begin++) {
+   for (begin = open; begin <= close; begin++)
+   {
        MDEBUG(("\nfind trying at %ld\n", LOFF(begin)));
        if (shorter)
            end = shortest(v, d, begin, begin, v->stop,
-                           (chr **)NULL, &hitend);
+                          (chr **) NULL, &hitend);
        else
            end = longest(v, d, begin, v->stop, &hitend);
        NOERR();
        if (hitend && cold == NULL)
            cold = begin;
        if (end != NULL)
-           break;      /* NOTE BREAK OUT */
+           break;              /* NOTE BREAK OUT */
    }
    assert(end != NULL);        /* search RE succeeded so loop should */
    freedfa(d);
@@ -314,14 +334,15 @@ find(struct vars *v,
    assert(v->nmatch > 0);
    v->pmatch[0].rm_so = OFF(begin);
    v->pmatch[0].rm_eo = OFF(end);
-   if (v->g->cflags&REG_EXPECT) {
+   if (v->g->cflags & REG_EXPECT)
+   {
        if (cold != NULL)
            v->details->rm_extend.rm_so = OFF(cold);
        else
            v->details->rm_extend.rm_so = OFF(v->stop);
-       v->details->rm_extend.rm_eo = OFF(v->stop); /* unknown */
+       v->details->rm_extend.rm_eo = OFF(v->stop);     /* unknown */
    }
-   if (v->nmatch == 1)     /* no need for submatches */
+   if (v->nmatch == 1)         /* no need for submatches */
        return REG_OKAY;
 
    /* submatches */
@@ -333,19 +354,20 @@ find(struct vars *v,
  * cfind - find a match for the main NFA (with complications)
  */
 static int
-cfind(struct vars *v,
-     struct cnfa *cnfa,
-     struct colormap *cm)
+cfind(struct vars * v,
+     struct cnfa * cnfa,
+     struct colormap * cm)
 {
    struct dfa *s;
    struct dfa *d;
-   chr *cold;
-   int ret;
+   chr        *cold;
+   int         ret;
 
    s = newdfa(v, &v->g->search, cm, &v->dfa1);
    NOERR();
    d = newdfa(v, cnfa, cm, &v->dfa2);
-   if (ISERR()) {
+   if (ISERR())
+   {
        assert(d == NULL);
        freedfa(s);
        return v->err;
@@ -356,13 +378,14 @@ cfind(struct vars *v,
    freedfa(d);
    freedfa(s);
    NOERR();
-   if (v->g->cflags&REG_EXPECT) {
+   if (v->g->cflags & REG_EXPECT)
+   {
        assert(v->details != NULL);
        if (cold != NULL)
            v->details->rm_extend.rm_so = OFF(cold);
        else
            v->details->rm_extend.rm_so = OFF(v->stop);
-       v->details->rm_extend.rm_eo = OFF(v->stop); /* unknown */
+       v->details->rm_extend.rm_eo = OFF(v->stop);     /* unknown */
    }
    return ret;
 }
@@ -371,47 +394,51 @@ cfind(struct vars *v,
  * cfindloop - the heart of cfind
  */
 static int
-cfindloop(struct vars *v,
-         struct cnfa *cnfa,
-         struct colormap *cm,
-         struct dfa *d,
-         struct dfa *s,
-         chr **coldp)          /* where to put coldstart pointer */
+cfindloop(struct vars * v,
+         struct cnfa * cnfa,
+         struct colormap * cm,
+         struct dfa * d,
+         struct dfa * s,
+         chr ** coldp)         /* where to put coldstart pointer */
 {
-   chr *begin;
-   chr *end;
-   chr *cold;
-   chr *open;      /* open and close of range of possible starts */
-   chr *close;
-   chr *estart;
-   chr *estop;
-   int er;
-   int shorter = v->g->tree->flags&SHORTER;
-   int hitend;
+   chr        *begin;
+   chr        *end;
+   chr        *cold;
+   chr        *open;           /* open and close of range of possible
+                                * starts */
+   chr        *close;
+   chr        *estart;
+   chr        *estop;
+   int         er;
+   int         shorter = v->g->tree->flags & SHORTER;
+   int         hitend;
 
    assert(d != NULL && s != NULL);
    cold = NULL;
    close = v->start;
-   do {
+   do
+   {
        MDEBUG(("\ncsearch at %ld\n", LOFF(close)));
-       close = shortest(v, s, close, close, v->stop, &cold, (int *)NULL);
+       close = shortest(v, s, close, close, v->stop, &cold, (int *) NULL);
        if (close == NULL)
            break;              /* NOTE BREAK */
        assert(cold != NULL);
        open = cold;
        cold = NULL;
        MDEBUG(("cbetween %ld and %ld\n", LOFF(open), LOFF(close)));
-       for (begin = open; begin <= close; begin++) {
+       for (begin = open; begin <= close; begin++)
+       {
            MDEBUG(("\ncfind trying at %ld\n", LOFF(begin)));
            estart = begin;
            estop = v->stop;
-           for (;;) {
+           for (;;)
+           {
                if (shorter)
                    end = shortest(v, d, begin, estart,
-                       estop, (chr **)NULL, &hitend);
+                                  estop, (chr **) NULL, &hitend);
                else
                    end = longest(v, d, begin, estop,
-                               &hitend);
+                                 &hitend);
                if (hitend && cold == NULL)
                    cold = begin;
                if (end == NULL)
@@ -420,19 +447,23 @@ cfindloop(struct vars *v,
                zapsubs(v->pmatch, v->nmatch);
                zapmem(v, v->g->tree);
                er = cdissect(v, v->g->tree, begin, end);
-               if (er == REG_OKAY) {
-                   if (v->nmatch > 0) {
+               if (er == REG_OKAY)
+               {
+                   if (v->nmatch > 0)
+                   {
                        v->pmatch[0].rm_so = OFF(begin);
                        v->pmatch[0].rm_eo = OFF(end);
                    }
                    *coldp = cold;
                    return REG_OKAY;
                }
-               if (er != REG_NOMATCH) {
+               if (er != REG_NOMATCH)
+               {
                    ERR(er);
                    return er;
                }
-               if ((shorter) ? end == estop : end == begin) {
+               if ((shorter) ? end == estop : end == begin)
+               {
                    /* no point in trying again */
                    *coldp = cold;
                    return REG_NOMATCH;
@@ -457,9 +488,10 @@ static void
 zapsubs(regmatch_t *p,
        size_t n)
 {
-   size_t i;
+   size_t      i;
 
-   for (i = n-1; i > 0; i--) {
+   for (i = n - 1; i > 0; i--)
+   {
        p[i].rm_so = -1;
        p[i].rm_eo = -1;
    }
@@ -469,15 +501,16 @@ zapsubs(regmatch_t *p,
  * zapmem - initialize the retry memory of a subtree to zeros
  */
 static void
-zapmem(struct vars *v,
-      struct subre *t)
+zapmem(struct vars * v,
+      struct subre * t)
 {
    if (t == NULL)
        return;
 
    assert(v->mem != NULL);
    v->mem[t->retry] = 0;
-   if (t->op == '(') {
+   if (t->op == '(')
+   {
        assert(t->subno > 0);
        v->pmatch[t->subno].rm_so = -1;
        v->pmatch[t->subno].rm_eo = -1;
@@ -493,15 +526,15 @@ zapmem(struct vars *v,
  * subset - set any subexpression relevant to a successful subre
  */
 static void
-subset(struct vars *v,
-      struct subre *sub,
-      chr *begin,
-      chr *end)
+subset(struct vars * v,
+      struct subre * sub,
+      chr * begin,
+      chr * end)
 {
-   int n = sub->subno;
+   int         n = sub->subno;
 
    assert(n > 0);
-   if ((size_t)n >= v->nmatch)
+   if ((size_t) n >= v->nmatch)
        return;
 
    MDEBUG(("setting %d\n", n));
@@ -512,58 +545,59 @@ subset(struct vars *v,
 /*
  * dissect - determine subexpression matches (uncomplicated case)
  */
-static int         /* regexec return code */
-dissect(struct vars *v,
-       struct subre *t,
-       chr *begin,         /* beginning of relevant substring */
-       chr *end)           /* end of same */
+static int                     /* regexec return code */
+dissect(struct vars * v,
+       struct subre * t,
+       chr * begin,            /* beginning of relevant substring */
+       chr * end)              /* end of same */
 {
    assert(t != NULL);
    MDEBUG(("dissect %ld-%ld\n", LOFF(begin), LOFF(end)));
 
-   switch (t->op) {
-   case '=':       /* terminal node */
-       assert(t->left == NULL && t->right == NULL);
-       return REG_OKAY;    /* no action, parent did the work */
-       break;
-   case '|':       /* alternation */
-       assert(t->left != NULL);
-       return altdissect(v, t, begin, end);
-       break;
-   case 'b':       /* back ref -- shouldn't be calling us! */
-       return REG_ASSERT;
-       break;
-   case '.':       /* concatenation */
-       assert(t->left != NULL && t->right != NULL);
-       return condissect(v, t, begin, end);
-       break;
-   case '(':       /* capturing */
-       assert(t->left != NULL && t->right == NULL);
-       assert(t->subno > 0);
-       subset(v, t, begin, end);
-       return dissect(v, t->left, begin, end);
-       break;
-   default:
-       return REG_ASSERT;
-       break;
+   switch (t->op)
+   {
+       case '=':               /* terminal node */
+           assert(t->left == NULL && t->right == NULL);
+           return REG_OKAY;    /* no action, parent did the work */
+           break;
+       case '|':               /* alternation */
+           assert(t->left != NULL);
+           return altdissect(v, t, begin, end);
+           break;
+       case 'b':               /* back ref -- shouldn't be calling us! */
+           return REG_ASSERT;
+           break;
+       case '.':               /* concatenation */
+           assert(t->left != NULL && t->right != NULL);
+           return condissect(v, t, begin, end);
+           break;
+       case '(':               /* capturing */
+           assert(t->left != NULL && t->right == NULL);
+           assert(t->subno > 0);
+           subset(v, t, begin, end);
+           return dissect(v, t->left, begin, end);
+           break;
+       default:
+           return REG_ASSERT;
+           break;
    }
 }
 
 /*
  * condissect - determine concatenation subexpression matches (uncomplicated)
  */
-static int         /* regexec return code */
-condissect(struct vars *v,
-          struct subre *t,
-          chr *begin,          /* beginning of relevant substring */
-          chr *end)            /* end of same */
+static int                     /* regexec return code */
+condissect(struct vars * v,
+          struct subre * t,
+          chr * begin,         /* beginning of relevant substring */
+          chr * end)           /* end of same */
 {
    struct dfa *d;
    struct dfa *d2;
-   chr *mid;
-   int i;
-   int shorter = (t->left->flags&SHORTER) ? 1 : 0;
-   chr *stop = (shorter) ? end : begin;
+   chr        *mid;
+   int         i;
+   int         shorter = (t->left->flags & SHORTER) ? 1 : 0;
+   chr        *stop = (shorter) ? end : begin;
 
    assert(t->op == '.');
    assert(t->left != NULL && t->left->cnfa.nstates > 0);
@@ -572,7 +606,8 @@ condissect(struct vars *v,
    d = newdfa(v, &t->left->cnfa, &v->g->cmap, &v->dfa1);
    NOERR();
    d2 = newdfa(v, &t->right->cnfa, &v->g->cmap, &v->dfa2);
-   if (ISERR()) {
+   if (ISERR())
+   {
        assert(d2 == NULL);
        freedfa(d);
        return v->err;
@@ -580,11 +615,12 @@ condissect(struct vars *v,
 
    /* pick a tentative midpoint */
    if (shorter)
-       mid = shortest(v, d, begin, begin, end, (chr **)NULL,
-                               (int *)NULL);
+       mid = shortest(v, d, begin, begin, end, (chr **) NULL,
+                      (int *) NULL);
    else
-       mid = longest(v, d, begin, end, (int *)NULL);
-   if (mid == NULL) {
+       mid = longest(v, d, begin, end, (int *) NULL);
+   if (mid == NULL)
+   {
        freedfa(d);
        freedfa(d2);
        return REG_ASSERT;
@@ -592,9 +628,11 @@ condissect(struct vars *v,
    MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
 
    /* iterate until satisfaction or failure */
-   while (longest(v, d2, mid, end, (int *)NULL) != end) {
+   while (longest(v, d2, mid, end, (int *) NULL) != end)
+   {
        /* that midpoint didn't work, find a new one */
-       if (mid == stop) {
+       if (mid == stop)
+       {
            /* all possibilities exhausted! */
            MDEBUG(("no midpoint!\n"));
            freedfa(d);
@@ -602,11 +640,12 @@ condissect(struct vars *v,
            return REG_ASSERT;
        }
        if (shorter)
-           mid = shortest(v, d, begin, mid+1, end, (chr **)NULL,
-                               (int *)NULL);
+           mid = shortest(v, d, begin, mid + 1, end, (chr **) NULL,
+                          (int *) NULL);
        else
-           mid = longest(v, d, begin, mid-1, (int *)NULL);
-       if (mid == NULL) {
+           mid = longest(v, d, begin, mid - 1, (int *) NULL);
+       if (mid == NULL)
+       {
            /* failed to find a new one! */
            MDEBUG(("failed midpoint!\n"));
            freedfa(d);
@@ -629,154 +668,166 @@ condissect(struct vars *v,
 /*
  * altdissect - determine alternative subexpression matches (uncomplicated)
  */
-static int         /* regexec return code */
-altdissect(struct vars *v,
-          struct subre *t,
-          chr *begin,          /* beginning of relevant substring */
-          chr *end)            /* end of same */
+static int                     /* regexec return code */
+altdissect(struct vars * v,
+          struct subre * t,
+          chr * begin,         /* beginning of relevant substring */
+          chr * end)           /* end of same */
 {
    struct dfa *d;
-   int i;
+   int         i;
 
    assert(t != NULL);
    assert(t->op == '|');
 
-   for (i = 0; t != NULL; t = t->right, i++) {
+   for (i = 0; t != NULL; t = t->right, i++)
+   {
        MDEBUG(("trying %dth\n", i));
        assert(t->left != NULL && t->left->cnfa.nstates > 0);
        d = newdfa(v, &t->left->cnfa, &v->g->cmap, &v->dfa1);
        if (ISERR())
            return v->err;
-       if (longest(v, d, begin, end, (int *)NULL) == end) {
+       if (longest(v, d, begin, end, (int *) NULL) == end)
+       {
            MDEBUG(("success\n"));
            freedfa(d);
            return dissect(v, t->left, begin, end);
        }
        freedfa(d);
    }
-   return REG_ASSERT;  /* none of them matched?!? */
+   return REG_ASSERT;          /* none of them matched?!? */
 }
 
 /*
  * cdissect - determine subexpression matches (with complications)
- * The retry memory stores the offset of the trial midpoint from begin, 
+ * The retry memory stores the offset of the trial midpoint from begin,
  * plus 1 so that 0 uniquely means "clean slate".
  */
-static int         /* regexec return code */
-cdissect(struct vars *v,
-        struct subre *t,
-        chr *begin,            /* beginning of relevant substring */
-        chr *end)          /* end of same */
+static int                     /* regexec return code */
+cdissect(struct vars * v,
+        struct subre * t,
+        chr * begin,           /* beginning of relevant substring */
+        chr * end)             /* end of same */
 {
-   int er;
+   int         er;
 
    assert(t != NULL);
    MDEBUG(("cdissect %ld-%ld %c\n", LOFF(begin), LOFF(end), t->op));
 
-   switch (t->op) {
-   case '=':       /* terminal node */
-       assert(t->left == NULL && t->right == NULL);
-       return REG_OKAY;    /* no action, parent did the work */
-       break;
-   case '|':       /* alternation */
-       assert(t->left != NULL);
-       return caltdissect(v, t, begin, end);
-       break;
-   case 'b':       /* back ref -- shouldn't be calling us! */
-       assert(t->left == NULL && t->right == NULL);
-       return cbrdissect(v, t, begin, end);
-       break;
-   case '.':       /* concatenation */
-       assert(t->left != NULL && t->right != NULL);
-       return ccondissect(v, t, begin, end);
-       break;
-   case '(':       /* capturing */
-       assert(t->left != NULL && t->right == NULL);
-       assert(t->subno > 0);
-       er = cdissect(v, t->left, begin, end);
-       if (er == REG_OKAY)
-           subset(v, t, begin, end);
-       return er;
-       break;
-   default:
-       return REG_ASSERT;
-       break;
+   switch (t->op)
+   {
+       case '=':               /* terminal node */
+           assert(t->left == NULL && t->right == NULL);
+           return REG_OKAY;    /* no action, parent did the work */
+           break;
+       case '|':               /* alternation */
+           assert(t->left != NULL);
+           return caltdissect(v, t, begin, end);
+           break;
+       case 'b':               /* back ref -- shouldn't be calling us! */
+           assert(t->left == NULL && t->right == NULL);
+           return cbrdissect(v, t, begin, end);
+           break;
+       case '.':               /* concatenation */
+           assert(t->left != NULL && t->right != NULL);
+           return ccondissect(v, t, begin, end);
+           break;
+       case '(':               /* capturing */
+           assert(t->left != NULL && t->right == NULL);
+           assert(t->subno > 0);
+           er = cdissect(v, t->left, begin, end);
+           if (er == REG_OKAY)
+               subset(v, t, begin, end);
+           return er;
+           break;
+       default:
+           return REG_ASSERT;
+           break;
    }
 }
 
 /*
  * ccondissect - concatenation subexpression matches (with complications)
- * The retry memory stores the offset of the trial midpoint from begin, 
+ * The retry memory stores the offset of the trial midpoint from begin,
  * plus 1 so that 0 uniquely means "clean slate".
  */
-static int         /* regexec return code */
-ccondissect(struct vars *v,
-           struct subre *t,
-           chr *begin,         /* beginning of relevant substring */
-           chr *end)           /* end of same */
+static int                     /* regexec return code */
+ccondissect(struct vars * v,
+           struct subre * t,
+           chr * begin,        /* beginning of relevant substring */
+           chr * end)          /* end of same */
 {
    struct dfa *d;
    struct dfa *d2;
-   chr *mid;
-   int er;
+   chr        *mid;
+   int         er;
 
    assert(t->op == '.');
    assert(t->left != NULL && t->left->cnfa.nstates > 0);
    assert(t->right != NULL && t->right->cnfa.nstates > 0);
 
-   if (t->left->flags&SHORTER)     /* reverse scan */
+   if (t->left->flags & SHORTER)       /* reverse scan */
        return crevdissect(v, t, begin, end);
 
    d = newdfa(v, &t->left->cnfa, &v->g->cmap, DOMALLOC);
    if (ISERR())
        return v->err;
    d2 = newdfa(v, &t->right->cnfa, &v->g->cmap, DOMALLOC);
-   if (ISERR()) {
+   if (ISERR())
+   {
        freedfa(d);
        return v->err;
    }
    MDEBUG(("cconcat %d\n", t->retry));
 
    /* pick a tentative midpoint */
-   if (v->mem[t->retry] == 0) {
-       mid = longest(v, d, begin, end, (int *)NULL);
-       if (mid == NULL) {
+   if (v->mem[t->retry] == 0)
+   {
+       mid = longest(v, d, begin, end, (int *) NULL);
+       if (mid == NULL)
+       {
            freedfa(d);
            freedfa(d2);
            return REG_NOMATCH;
        }
        MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
        v->mem[t->retry] = (mid - begin) + 1;
-   } else {
+   }
+   else
+   {
        mid = begin + (v->mem[t->retry] - 1);
        MDEBUG(("working midpoint %ld\n", LOFF(mid)));
    }
 
    /* iterate until satisfaction or failure */
-   for (;;) {
+   for (;;)
+   {
        /* try this midpoint on for size */
        er = cdissect(v, t->left, begin, mid);
        if (er == REG_OKAY &&
-               longest(v, d2, mid, end, (int *)NULL) == end &&
-               (er = cdissect(v, t->right, mid, end)) == 
-                               REG_OKAY)
-           break;          /* NOTE BREAK OUT */
-       if (er != REG_OKAY && er != REG_NOMATCH) {
+           longest(v, d2, mid, end, (int *) NULL) == end &&
+           (er = cdissect(v, t->right, mid, end)) ==
+           REG_OKAY)
+           break;              /* NOTE BREAK OUT */
+       if (er != REG_OKAY && er != REG_NOMATCH)
+       {
            freedfa(d);
            freedfa(d2);
            return er;
        }
 
        /* that midpoint didn't work, find a new one */
-       if (mid == begin) {
+       if (mid == begin)
+       {
            /* all possibilities exhausted */
            MDEBUG(("%d no midpoint\n", t->retry));
            freedfa(d);
            freedfa(d2);
            return REG_NOMATCH;
        }
-       mid = longest(v, d, begin, mid-1, (int *)NULL);
-       if (mid == NULL) {
+       mid = longest(v, d, begin, mid - 1, (int *) NULL);
+       if (mid == NULL)
+       {
            /* failed to find a new one */
            MDEBUG(("%d failed midpoint\n", t->retry));
            freedfa(d);
@@ -798,76 +849,85 @@ ccondissect(struct vars *v,
 
 /*
  * crevdissect - determine backref shortest-first subexpression matches
- * The retry memory stores the offset of the trial midpoint from begin, 
+ * The retry memory stores the offset of the trial midpoint from begin,
  * plus 1 so that 0 uniquely means "clean slate".
  */
-static int         /* regexec return code */
-crevdissect(struct vars *v,
-           struct subre *t,
-           chr *begin,         /* beginning of relevant substring */
-           chr *end)           /* end of same */
+static int                     /* regexec return code */
+crevdissect(struct vars * v,
+           struct subre * t,
+           chr * begin,        /* beginning of relevant substring */
+           chr * end)          /* end of same */
 {
    struct dfa *d;
    struct dfa *d2;
-   chr *mid;
-   int er;
+   chr        *mid;
+   int         er;
 
    assert(t->op == '.');
    assert(t->left != NULL && t->left->cnfa.nstates > 0);
    assert(t->right != NULL && t->right->cnfa.nstates > 0);
-   assert(t->left->flags&SHORTER);
+   assert(t->left->flags & SHORTER);
 
    /* concatenation -- need to split the substring between parts */
    d = newdfa(v, &t->left->cnfa, &v->g->cmap, DOMALLOC);
    if (ISERR())
        return v->err;
    d2 = newdfa(v, &t->right->cnfa, &v->g->cmap, DOMALLOC);
-   if (ISERR()) {
+   if (ISERR())
+   {
        freedfa(d);
        return v->err;
    }
    MDEBUG(("crev %d\n", t->retry));
 
    /* pick a tentative midpoint */
-   if (v->mem[t->retry] == 0) {
-       mid = shortest(v, d, begin, begin, end, (chr **)NULL, (int *)NULL);
-       if (mid == NULL) {
+   if (v->mem[t->retry] == 0)
+   {
+       mid = shortest(v, d, begin, begin, end, (chr **) NULL, (int *) NULL);
+       if (mid == NULL)
+       {
            freedfa(d);
            freedfa(d2);
            return REG_NOMATCH;
        }
        MDEBUG(("tentative midpoint %ld\n", LOFF(mid)));
        v->mem[t->retry] = (mid - begin) + 1;
-   } else {
+   }
+   else
+   {
        mid = begin + (v->mem[t->retry] - 1);
        MDEBUG(("working midpoint %ld\n", LOFF(mid)));
    }
 
    /* iterate until satisfaction or failure */
-   for (;;) {
+   for (;;)
+   {
        /* try this midpoint on for size */
        er = cdissect(v, t->left, begin, mid);
        if (er == REG_OKAY &&
-               longest(v, d2, mid, end, (int *)NULL) == end &&
-               (er = cdissect(v, t->right, mid, end)) == 
-                               REG_OKAY)
-           break;          /* NOTE BREAK OUT */
-       if (er != REG_OKAY && er != REG_NOMATCH) {
+           longest(v, d2, mid, end, (int *) NULL) == end &&
+           (er = cdissect(v, t->right, mid, end)) ==
+           REG_OKAY)
+           break;              /* NOTE BREAK OUT */
+       if (er != REG_OKAY && er != REG_NOMATCH)
+       {
            freedfa(d);
            freedfa(d2);
            return er;
        }
 
        /* that midpoint didn't work, find a new one */
-       if (mid == end) {
+       if (mid == end)
+       {
            /* all possibilities exhausted */
            MDEBUG(("%d no midpoint\n", t->retry));
            freedfa(d);
            freedfa(d2);
            return REG_NOMATCH;
        }
-       mid = shortest(v, d, begin, mid+1, end, (chr **)NULL, (int *)NULL);
-       if (mid == NULL) {
+       mid = shortest(v, d, begin, mid + 1, end, (chr **) NULL, (int *) NULL);
+       if (mid == NULL)
+       {
            /* failed to find a new one */
            MDEBUG(("%d failed midpoint\n", t->retry));
            freedfa(d);
@@ -890,25 +950,25 @@ crevdissect(struct vars *v,
 /*
  * cbrdissect - determine backref subexpression matches
  */
-static int         /* regexec return code */
-cbrdissect(struct vars *v,
-          struct subre *t,
-          chr *begin,          /* beginning of relevant substring */
-          chr *end)            /* end of same */
+static int                     /* regexec return code */
+cbrdissect(struct vars * v,
+          struct subre * t,
+          chr * begin,         /* beginning of relevant substring */
+          chr * end)           /* end of same */
 {
-   int i;
-   int n = t->subno;
-   size_t len;
-   chr *paren;
-   chr *p;
-   chr *stop;
-   int min = t->min;
-   int max = t->max;
+   int         i;
+   int         n = t->subno;
+   size_t      len;
+   chr        *paren;
+   chr        *p;
+   chr        *stop;
+   int         min = t->min;
+   int         max = t->max;
 
    assert(t != NULL);
    assert(t->op == 'b');
    assert(n >= 0);
-   assert((size_t)n < v->nmatch);
+   assert((size_t) n < v->nmatch);
 
    MDEBUG(("cbackref n%d %d{%d-%d}\n", t->retry, n, min, max));
 
@@ -923,7 +983,8 @@ cbrdissect(struct vars *v,
    v->mem[t->retry] = 1;
 
    /* special-case zero-length string */
-   if (len == 0) {
+   if (len == 0)
+   {
        if (begin == end)
            return REG_OKAY;
        return REG_NOMATCH;
@@ -931,41 +992,44 @@ cbrdissect(struct vars *v,
 
    /* and too-short string */
    assert(end >= begin);
-   if ((size_t)(end - begin) < len)
+   if ((size_t) (end - begin) < len)
        return REG_NOMATCH;
    stop = end - len;
 
    /* count occurrences */
    i = 0;
-   for (p = begin; p <= stop && (i < max || max == INFINITY); p += len) {
-       if ((*v->g->compare)(paren, p, len) != 0)
-               break;
+   for (p = begin; p <= stop && (i < max || max == INFINITY); p += len)
+   {
+       if ((*v->g->compare) (paren, p, len) != 0)
+           break;
        i++;
    }
    MDEBUG(("cbackref found %d\n", i));
 
    /* and sort it out */
-   if (p != end)           /* didn't consume all of it */
+   if (p != end)               /* didn't consume all of it */
        return REG_NOMATCH;
    if (min <= i && (i <= max || max == INFINITY))
        return REG_OKAY;
-   return REG_NOMATCH;     /* out of range */
+   return REG_NOMATCH;         /* out of range */
 }
 
 /*
  * caltdissect - determine alternative subexpression matches (w. complications)
  */
-static int         /* regexec return code */
-caltdissect(struct vars *v,
-           struct subre *t,
-           chr *begin,         /* beginning of relevant substring */
-           chr *end)           /* end of same */
+static int                     /* regexec return code */
+caltdissect(struct vars * v,
+           struct subre * t,
+           chr * begin,        /* beginning of relevant substring */
+           chr * end)          /* end of same */
 {
    struct dfa *d;
-   int er;
-#  define  UNTRIED 0   /* not yet tried at all */
-#  define  TRYING  1   /* top matched, trying submatches */
-#  define  TRIED   2   /* top didn't match or submatches exhausted */
+   int         er;
+
+#define  UNTRIED 0             /* not yet tried at all */
+#define  TRYING  1             /* top matched, trying submatches */
+#define  TRIED  2              /* top didn't match or submatches
+                                * exhausted */
 
    if (t == NULL)
        return REG_NOMATCH;
@@ -976,11 +1040,13 @@ caltdissect(struct vars *v,
    MDEBUG(("calt n%d\n", t->retry));
    assert(t->left != NULL);
 
-   if (v->mem[t->retry] == UNTRIED) {
+   if (v->mem[t->retry] == UNTRIED)
+   {
        d = newdfa(v, &t->left->cnfa, &v->g->cmap, DOMALLOC);
        if (ISERR())
            return v->err;
-       if (longest(v, d, begin, end, (int *)NULL) != end) {
+       if (longest(v, d, begin, end, (int *) NULL) != end)
+       {
            freedfa(d);
            v->mem[t->retry] = TRIED;
            return caltdissect(v, t->right, begin, end);
index 88f3da32287166ae445b442ac789d87fd4cdd366..1bb9057a91641e613798a732f6e17c675a13eb45 100644 (file)
@@ -1,21 +1,21 @@
 /*
  * regfree - free an RE
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -27,7 +27,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/backend/regex/regfree.c,v 1.16 2003/02/05 17:41:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/regex/regfree.c,v 1.17 2003/08/04 00:43:21 momjian Exp $
  *
  *
  * You might think that this could be incorporated into regcomp.c, and
@@ -50,5 +50,5 @@ pg_regfree(regex_t *re)
 {
    if (re == NULL)
        return;
-   (*((struct fns *)re->re_fns)->free)(re);
+   (*((struct fns *) re->re_fns)->free) (re);
 }
index e7039e85154ba7dfb561bfbf0faf7c545420f228..0c01a41cb9e47509ce6453fe5a132289580eebbc 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.84 2003/08/01 00:15:22 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.85 2003/08/04 00:43:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -100,8 +100,8 @@ InsertRule(char *rulname,
        if (!replace)
            ereport(ERROR,
                    (errcode(ERRCODE_DUPLICATE_OBJECT),
-                    errmsg("rule \"%s\" for relation \"%s\" already exists",
-                           rulname, get_rel_name(eventrel_oid))));
+                errmsg("rule \"%s\" for relation \"%s\" already exists",
+                       rulname, get_rel_name(eventrel_oid))));
 
        /*
         * When replacing, we don't need to replace every attribute
@@ -253,7 +253,7 @@ DefineQueryRewrite(RuleStmt *stmt)
        if (length(action) == 0)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("INSTEAD NOTHING rules on select are not implemented"),
+           errmsg("INSTEAD NOTHING rules on select are not implemented"),
                     errhint("Use views instead.")));
 
        /*
@@ -344,7 +344,7 @@ DefineQueryRewrite(RuleStmt *stmt)
        if (i != event_relation->rd_att->natts)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                    errmsg("select rule's target list has too few entries")));
+              errmsg("select rule's target list has too few entries")));
 
        /*
         * ... there must not be another ON SELECT rule already ...
@@ -358,9 +358,9 @@ DefineQueryRewrite(RuleStmt *stmt)
                rule = event_relation->rd_rules->rules[i];
                if (rule->event == CMD_SELECT)
                    ereport(ERROR,
-                           (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                            errmsg("\"%s\" is already a view",
-                                   RelationGetRelationName(event_relation))));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("\"%s\" is already a view",
+                             RelationGetRelationName(event_relation))));
            }
        }
 
@@ -383,8 +383,8 @@ DefineQueryRewrite(RuleStmt *stmt)
                        NAMEDATALEN - 4 - 4) != 0)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                        errmsg("view rule for \"%s\" must be named \"%s\"",
-                               event_obj->relname, ViewSelectRuleName)));
+                     errmsg("view rule for \"%s\" must be named \"%s\"",
+                            event_obj->relname, ViewSelectRuleName)));
            stmt->rulename = pstrdup(ViewSelectRuleName);
        }
 
@@ -401,9 +401,9 @@ DefineQueryRewrite(RuleStmt *stmt)
            scanDesc = heap_beginscan(event_relation, SnapshotNow, 0, NULL);
            if (heap_getnext(scanDesc, ForwardScanDirection) != NULL)
                ereport(ERROR,
-                       (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                        errmsg("cannot convert non-empty table \"%s\" to a view",
-                               event_obj->relname)));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+               errmsg("cannot convert non-empty table \"%s\" to a view",
+                      event_obj->relname)));
            heap_endscan(scanDesc);
 
            RelisBecomingView = true;
index 440e8ba7133af1524a34e1649cf5eceac695c9a6..d7efa9e201373e313f75f6d49c18cb66226345bf 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.125 2003/07/29 17:21:24 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.126 2003/08/04 00:43:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 /* We use a list of these to detect recursion in RewriteQuery */
-typedef struct rewrite_event {
+typedef struct rewrite_event
+{
    Oid         relation;       /* OID of relation having rules */
    CmdType     event;          /* type of rule being fired */
-} rewrite_event;
+}  rewrite_event;
 
 static Query *rewriteRuleAction(Query *parsetree,
                  Query *rule_action,
@@ -107,20 +108,21 @@ rewriteRuleAction(Query *parsetree,
     * Generate expanded rtable consisting of main parsetree's rtable plus
     * rule action's rtable; this becomes the complete rtable for the rule
     * action.  Some of the entries may be unused after we finish
-    * rewriting, but if we tried to remove them we'd have a much
-    * harder job to adjust RT indexes in the query's Vars.  It's OK to
-    * have unused RT entries, since planner will ignore them.
+    * rewriting, but if we tried to remove them we'd have a much harder
+    * job to adjust RT indexes in the query's Vars.  It's OK to have
+    * unused RT entries, since planner will ignore them.
     *
     * NOTE: because planner will destructively alter rtable, we must ensure
     * that rule action's rtable is separate and shares no substructure
     * with the main rtable.  Hence do a deep copy here.
     *
     * Also, we must disable write-access checking in all the RT entries
-    * copied from the main query.  This is safe since in fact the rule action
-    * won't write on them, and it's necessary because the rule action may
-    * have a different commandType than the main query, causing
-    * ExecCheckRTEPerms() to make an inappropriate check.  The read-access
-    * checks can be left enabled, although they're probably redundant.
+    * copied from the main query.  This is safe since in fact the rule
+    * action won't write on them, and it's necessary because the rule
+    * action may have a different commandType than the main query,
+    * causing ExecCheckRTEPerms() to make an inappropriate check.  The
+    * read-access checks can be left enabled, although they're probably
+    * redundant.
     */
    main_rtable = (List *) copyObject(parsetree->rtable);
 
@@ -330,12 +332,12 @@ rewriteTargetList(Query *parsetree, Relation target_relation)
        }
 
        /*
-        * Handle the two cases where we need to insert a default expression:
-        * it's an INSERT and there's no tlist entry for the column, or the
-        * tlist entry is a DEFAULT placeholder node.
+        * Handle the two cases where we need to insert a default
+        * expression: it's an INSERT and there's no tlist entry for the
+        * column, or the tlist entry is a DEFAULT placeholder node.
         */
        if ((new_tle == NULL && commandType == CMD_INSERT) ||
-           (new_tle && new_tle->expr && IsA(new_tle->expr, SetToDefault)))
+         (new_tle && new_tle->expr && IsA(new_tle->expr, SetToDefault)))
        {
            Node       *new_expr;
 
@@ -345,8 +347,9 @@ rewriteTargetList(Query *parsetree, Relation target_relation)
             * If there is no default (ie, default is effectively NULL),
             * we can omit the tlist entry in the INSERT case, since the
             * planner can insert a NULL for itself, and there's no point
-            * in spending any more rewriter cycles on the entry.  But in the
-            * UPDATE case we've got to explicitly set the column to NULL.
+            * in spending any more rewriter cycles on the entry.  But in
+            * the UPDATE case we've got to explicitly set the column to
+            * NULL.
             */
            if (!new_expr)
            {
@@ -540,13 +543,13 @@ build_column_default(Relation rel, int attrno)
    /*
     * Make sure the value is coerced to the target column type; this will
     * generally be true already, but there seem to be some corner cases
-    * involving domain defaults where it might not be true.
-    * This should match the parser's processing of non-defaulted expressions
-    * --- see updateTargetListEntry().
+    * involving domain defaults where it might not be true. This should
+    * match the parser's processing of non-defaulted expressions --- see
+    * updateTargetListEntry().
     */
    exprtype = exprType(expr);
 
-   expr = coerce_to_target_type(NULL, /* no UNKNOWN params here */
+   expr = coerce_to_target_type(NULL,  /* no UNKNOWN params here */
                                 expr, exprtype,
                                 atttype, atttypmod,
                                 COERCION_ASSIGNMENT,
@@ -559,7 +562,7 @@ build_column_default(Relation rel, int attrno)
                        NameStr(att_tup->attname),
                        format_type_be(atttype),
                        format_type_be(exprtype)),
-                errhint("You will need to rewrite or cast the expression.")));
+          errhint("You will need to rewrite or cast the expression.")));
 
    return expr;
 }
@@ -990,7 +993,7 @@ CopyAndAddInvertedQual(Query *parsetree,
  * rows that the qualified action doesn't act on.  (If there are multiple
  * qualified INSTEAD rules, we AND all the negated quals onto a single
  * modified original query.)  We won't execute the original, unmodified
- * query if we find either qualified or unqualified INSTEAD rules.  If
+ * query if we find either qualified or unqualified INSTEAD rules. If
  * we find both, the modified original query is discarded too.
  */
 static List *
@@ -1009,7 +1012,7 @@ fireRules(Query *parsetree,
        RewriteRule *rule_lock = (RewriteRule *) lfirst(i);
        Node       *event_qual = rule_lock->qual;
        List       *actions = rule_lock->actions;
-       QuerySource qsrc;
+       QuerySource qsrc;
        List       *r;
 
        /* Determine correct QuerySource value for actions */
@@ -1020,7 +1023,7 @@ fireRules(Query *parsetree,
            else
            {
                qsrc = QSRC_INSTEAD_RULE;
-               *instead_flag = true; /* report unqualified INSTEAD */
+               *instead_flag = true;   /* report unqualified INSTEAD */
            }
        }
        else
@@ -1034,14 +1037,13 @@ fireRules(Query *parsetree,
             * qualifications of the INSTEAD rules are added so it does
             * its actions only in cases where the rule quals of all
             * INSTEAD rules are false. Think of it as the default action
-            * in a case. We save this in *qual_product so
-            * RewriteQuery() can add it to the query list after we
-            * mangled it up enough.
+            * in a case. We save this in *qual_product so RewriteQuery()
+            * can add it to the query list after we mangled it up enough.
             *
-            * If we have already found an unqualified INSTEAD rule,
-            * then *qual_product won't be used, so don't bother building it.
+            * If we have already found an unqualified INSTEAD rule, then
+            * *qual_product won't be used, so don't bother building it.
             */
-           if (! *instead_flag)
+           if (!*instead_flag)
            {
                if (*qual_product == NULL)
                    *qual_product = parsetree;
@@ -1093,8 +1095,8 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
     * If the statement is an update, insert or delete - fire rules on it.
     *
     * SELECT rules are handled later when we have all the queries that
-    * should get executed.  Also, utilities aren't rewritten at all
-    * (do we still need that check?)
+    * should get executed.  Also, utilities aren't rewritten at all (do
+    * we still need that check?)
     */
    if (event != CMD_SELECT && event != CMD_UTILITY)
    {
@@ -1109,19 +1111,21 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
        Assert(rt_entry->rtekind == RTE_RELATION);
 
        /*
-        * This may well be the first access to the result relation during the
-        * current statement (it will be, if this Query was extracted from a
-        * rule or somehow got here other than via the parser). Therefore,
-        * grab the appropriate lock type for a result relation, and do not
-        * release it until end of transaction.  This protects the rewriter
-        * and planner against schema changes mid-query.
+        * This may well be the first access to the result relation during
+        * the current statement (it will be, if this Query was extracted
+        * from a rule or somehow got here other than via the parser).
+        * Therefore, grab the appropriate lock type for a result
+        * relation, and do not release it until end of transaction.  This
+        * protects the rewriter and planner against schema changes
+        * mid-query.
         */
        rt_entry_relation = heap_open(rt_entry->relid, RowExclusiveLock);
 
        /*
-        * If it's an INSERT or UPDATE, rewrite the targetlist into standard
-        * form.  This will be needed by the planner anyway, and doing it now
-        * ensures that any references to NEW.field will behave sanely.
+        * If it's an INSERT or UPDATE, rewrite the targetlist into
+        * standard form.  This will be needed by the planner anyway, and
+        * doing it now ensures that any references to NEW.field will
+        * behave sanely.
         */
        if (event == CMD_INSERT || event == CMD_UPDATE)
            rewriteTargetList(parsetree, rt_entry_relation);
@@ -1144,8 +1148,8 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
                                        &qual_product);
 
            /*
-            * If we got any product queries, recursively rewrite them
-            * --- but first check for recursion!
+            * If we got any product queries, recursively rewrite them ---
+            * but first check for recursion!
             */
            if (product_queries != NIL)
            {
@@ -1158,9 +1162,9 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
                    if (rev->relation == RelationGetRelid(rt_entry_relation) &&
                        rev->event == event)
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                                errmsg("infinite recursion detected in rules for relation \"%s\"",
-                                       RelationGetRelationName(rt_entry_relation))));
+                            (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
+                             errmsg("infinite recursion detected in rules for relation \"%s\"",
+                          RelationGetRelationName(rt_entry_relation))));
                }
 
                rev = (rewrite_event *) palloc(sizeof(rewrite_event));
@@ -1179,7 +1183,7 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
            }
        }
 
-       heap_close(rt_entry_relation, NoLock);      /* keep lock! */
+       heap_close(rt_entry_relation, NoLock);  /* keep lock! */
    }
 
    /*
@@ -1191,9 +1195,9 @@ RewriteQuery(Query *parsetree, List *rewrite_events)
     * disappear so the scans for them in the rule actions cannot find
     * them.
     *
-    * If we found any unqualified INSTEAD, the original query is not
-    * done at all, in any form.  Otherwise, we add the modified form
-    * if qualified INSTEADs were found, else the unmodified form.
+    * If we found any unqualified INSTEAD, the original query is not done at
+    * all, in any form.  Otherwise, we add the modified form if qualified
+    * INSTEADs were found, else the unmodified form.
     */
    if (!instead)
    {
@@ -1299,7 +1303,8 @@ QueryRewrite(Query *parsetree)
     * Step 3
     *
     * Determine which, if any, of the resulting queries is supposed to set
-    * the command-result tag; and update the canSetTag fields accordingly.
+    * the command-result tag; and update the canSetTag fields
+    * accordingly.
     *
     * If the original query is still in the list, it sets the command tag.
     * Otherwise, the last INSTEAD query of the same kind as the original
@@ -1308,8 +1313,8 @@ QueryRewrite(Query *parsetree)
     * setting up a default tag based on the original un-rewritten query.)
     *
     * The Asserts verify that at most one query in the result list is marked
-    * canSetTag.  If we aren't checking asserts, we can fall out of the loop
-    * as soon as we find the original query.
+    * canSetTag.  If we aren't checking asserts, we can fall out of the
+    * loop as soon as we find the original query.
     */
    origCmdType = parsetree->commandType;
    foundOriginalQuery = false;
index f36f96c349167eb0e428eb4ade4b487815f47eb0..3f06b3f722ef7807c1bd9bedde08a49cfa423242 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.74 2003/07/25 00:01:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.75 2003/08/04 00:43:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 typedef struct
 {
    int         sublevels_up;
-} checkExprHasAggs_context;
+}  checkExprHasAggs_context;
 
 static bool checkExprHasAggs_walker(Node *node,
-                                   checkExprHasAggs_context *context);
+                       checkExprHasAggs_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);
@@ -51,6 +51,7 @@ checkExprHasAggs(Node *node)
    checkExprHasAggs_context context;
 
    context.sublevels_up = 0;
+
    /*
     * Must be prepared to start with a Query or a bare expression tree;
     * if it's a Query, we don't want to increment sublevels_up.
@@ -62,7 +63,7 @@ checkExprHasAggs(Node *node)
 }
 
 static bool
-checkExprHasAggs_walker(Node *node, checkExprHasAggs_context *context)
+checkExprHasAggs_walker(Node *node, checkExprHasAggs_context * context)
 {
    if (node == NULL)
        return false;
@@ -173,7 +174,7 @@ OffsetVarNodes_walker(Node *node, OffsetVarNodes_context *context)
    }
    if (IsA(node, InClauseInfo))
    {
-       InClauseInfo   *ininfo = (InClauseInfo *) node;
+       InClauseInfo *ininfo = (InClauseInfo *) node;
 
        if (context->sublevels_up == 0)
        {
@@ -247,9 +248,7 @@ offset_relid_set(Relids relids, int offset)
 
    tmprelids = bms_copy(relids);
    while ((rtindex = bms_first_member(tmprelids)) >= 0)
-   {
        result = bms_add_member(result, rtindex + offset);
-   }
    bms_free(tmprelids);
    return result;
 }
@@ -312,7 +311,7 @@ ChangeVarNodes_walker(Node *node, ChangeVarNodes_context *context)
    }
    if (IsA(node, InClauseInfo))
    {
-       InClauseInfo   *ininfo = (InClauseInfo *) node;
+       InClauseInfo *ininfo = (InClauseInfo *) node;
 
        if (context->sublevels_up == 0)
        {
@@ -530,7 +529,7 @@ rangeTableEntry_used_walker(Node *node,
    }
    if (IsA(node, InClauseInfo))
    {
-       InClauseInfo   *ininfo = (InClauseInfo *) node;
+       InClauseInfo *ininfo = (InClauseInfo *) node;
 
        if (context->sublevels_up == 0 &&
            (bms_is_member(context->rt_index, ininfo->lefthand) ||
index 857e9d4f4f695d47ddda4f6aab1109d4124545f9..c1a4666907b60ef2425fca58bfb942f096e39220 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.137 2003/07/24 22:04:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.138 2003/08/04 00:43:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@
 
 
 /* GUC variable */
-bool   zero_damaged_pages = false;
+bool       zero_damaged_pages = false;
 
 
 static void WaitIO(BufferDesc *buf);
@@ -232,14 +232,14 @@ ReadBufferInternal(Relation reln, BlockNumber blockNum,
                ereport(WARNING,
                        (errcode(ERRCODE_DATA_CORRUPTED),
                         errmsg("invalid page header in block %u of \"%s\"; zeroing out page",
-                               blockNum, RelationGetRelationName(reln))));
+                             blockNum, RelationGetRelationName(reln))));
                MemSet((char *) MAKE_PTR(bufHdr->data), 0, BLCKSZ);
            }
            else
                ereport(ERROR,
                        (errcode(ERRCODE_DATA_CORRUPTED),
-                        errmsg("invalid page header in block %u of \"%s\"",
-                               blockNum, RelationGetRelationName(reln))));
+                     errmsg("invalid page header in block %u of \"%s\"",
+                            blockNum, RelationGetRelationName(reln))));
        }
    }
 
@@ -959,8 +959,8 @@ AtEOXact_Buffers(bool isCommit)
 
            if (isCommit)
                elog(WARNING,
-                    "buffer refcount leak: [%03d] (freeNext=%d, freePrev=%d, "
-                    "rel=%u/%u, blockNum=%u, flags=0x%x, refcount=%d %ld)",
+               "buffer refcount leak: [%03d] (freeNext=%d, freePrev=%d, "
+                 "rel=%u/%u, blockNum=%u, flags=0x%x, refcount=%d %ld)",
                     i, buf->freeNext, buf->freePrev,
                     buf->tag.rnode.tblNode, buf->tag.rnode.relNode,
                     buf->tag.blockNum, buf->flags,
@@ -1509,10 +1509,10 @@ FlushRelationBuffers(Relation rel, BlockNumber firstDelBlock)
                    if (status == SM_FAIL)      /* disk failure ?! */
                        ereport(PANIC,
                                (errcode(ERRCODE_IO_ERROR),
-                                errmsg("could not write block %u of %u/%u",
-                                       bufHdr->tag.blockNum,
-                                       bufHdr->tag.rnode.tblNode,
-                                       bufHdr->tag.rnode.relNode)));
+                             errmsg("could not write block %u of %u/%u",
+                                    bufHdr->tag.blockNum,
+                                    bufHdr->tag.rnode.tblNode,
+                                    bufHdr->tag.rnode.relNode)));
 
                    BufferFlushCount++;
 
index 06606990c51f2b64873ba2d9cee7f4be84dea77e..271a752a623fc2a9a5263702979a1e2492c0ac22 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.99 2003/07/24 22:04:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.100 2003/08/04 00:43:23 momjian Exp $
  *
  * NOTES:
  *
@@ -113,8 +113,8 @@ int         max_files_per_process = 1000;
 #define FileUnknownPos (-1L)
 
 /* these are the assigned bits in fdstate below: */
-#define FD_TEMPORARY       (1 << 0)        /* T = delete when closed */
-#define FD_XACT_TEMPORARY  (1 << 1)        /* T = delete at eoXact */
+#define FD_TEMPORARY       (1 << 0)    /* T = delete when closed */
+#define FD_XACT_TEMPORARY  (1 << 1)    /* T = delete at eoXact */
 
 typedef struct vfd
 {
@@ -247,7 +247,7 @@ pg_fdatasync(int fd)
  * This is exported for use by places that really want a plain kernel FD,
  * but need to be proof against running out of FDs.  Once an FD has been
  * successfully returned, it is the caller's responsibility to ensure that
- * it will not be leaked on ereport()!  Most users should *not* call this
+ * it will not be leaked on ereport()! Most users should *not* call this
  * routine directly, but instead use the VFD abstraction level, which
  * provides protection against descriptor leaks as well as management of
  * files that need to be open for more than a short period of time.
@@ -274,7 +274,7 @@ tryAgain:
 
        ereport(LOG,
                (errcode(ERRCODE_INSUFFICIENT_RESOURCES),
-                errmsg("out of file descriptors: %m; release and retry")));
+             errmsg("out of file descriptors: %m; release and retry")));
        errno = 0;
        if (ReleaseLruFile())
            goto tryAgain;
@@ -1064,7 +1064,7 @@ TryAgain:
 
        ereport(LOG,
                (errcode(ERRCODE_INSUFFICIENT_RESOURCES),
-                errmsg("out of file descriptors: %m; release and retry")));
+             errmsg("out of file descriptors: %m; release and retry")));
        errno = 0;
        if (ReleaseLruFile())
            goto TryAgain;
@@ -1158,7 +1158,7 @@ AtProcExit_Files(void)
 static void
 CleanupTempFiles(bool isProcExit)
 {
-   Index i;
+   Index       i;
 
    if (SizeVfdCache > 0)
    {
index c7f72aafd623f49302e9b73b76d814ee1b6739e3..5d381aa7f3e2c6b5b9d8055c8e83a7c513cb75d3 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/freespace/freespace.c,v 1.18 2003/07/24 22:04:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/freespace/freespace.c,v 1.19 2003/08/04 00:43:24 momjian Exp $
  *
  *
  * NOTES:
@@ -39,7 +39,7 @@
  * Actually, our space allocation is done in "chunks" of CHUNKPAGES pages,
  * with each relation guaranteed at least one chunk.  This reduces thrashing
  * of the storage allocations when there are small changes in the RRFS page
- * counts from one VACUUM to the next.  (XXX it might also be worthwhile to
+ * counts from one VACUUM to the next. (XXX it might also be worthwhile to
  * impose some kind of moving-average smoothing on the RRFS page counts?)
  *
  * So the actual arithmetic is: for each relation compute myRequest as the
 
 
 /* Initial value for average-request moving average */
-#define INITIAL_AVERAGE    ((Size) (BLCKSZ / 32))
+#define INITIAL_AVERAGE ((Size) (BLCKSZ / 32))
 
 /*
- * Number of pages and bytes per allocation chunk.  Indexes can squeeze 50%
+ * Number of pages and bytes per allocation chunk. Indexes can squeeze 50%
  * more pages into the same space because they don't need to remember how much
  * free space on each page.  The nominal number of pages, CHUNKPAGES, is for
  * regular rels, and INDEXCHUNKPAGES is for indexes.  CHUNKPAGES should be
@@ -83,7 +83,7 @@
  */
 #define CHUNKPAGES 16
 #define CHUNKBYTES (CHUNKPAGES * sizeof(FSMPageData))
-#define INDEXCHUNKPAGES    ((int) (CHUNKBYTES / sizeof(IndexFSMPageData)))
+#define INDEXCHUNKPAGES ((int) (CHUNKBYTES / sizeof(IndexFSMPageData)))
 
 
 /*
@@ -104,9 +104,9 @@ typedef BlockIdData IndexFSMPageData;
    BlockIdSet(&(ptr)->ip_blkid, pg)
 #define FSMPageSetSpace(ptr, sz)   \
    ((ptr)->ip_posid = (OffsetNumber) (sz))
-#define IndexFSMPageGetPageNum(ptr)    \
+#define IndexFSMPageGetPageNum(ptr) \
    BlockIdGetBlockNumber(ptr)
-#define IndexFSMPageSetPageNum(ptr, pg)    \
+#define IndexFSMPageSetPageNum(ptr, pg) \
    BlockIdSet(ptr, pg)
 
 /*----------
@@ -144,7 +144,7 @@ typedef struct FsmCacheFileHeader
    uint32      endian;
    uint32      version;
    int32       numRels;
-} FsmCacheFileHeader;
+}  FsmCacheFileHeader;
 
 /* Per-relation header */
 typedef struct FsmCacheRelHeader
@@ -154,7 +154,7 @@ typedef struct FsmCacheRelHeader
    uint32      avgRequest;     /* moving average of space requests */
    int32       lastPageCount;  /* pages passed to RecordRelationFreeSpace */
    int32       storedPages;    /* # of pages stored in arena */
-} FsmCacheRelHeader;
+}  FsmCacheRelHeader;
 
 
 /*
@@ -167,7 +167,7 @@ typedef struct FsmCacheRelHeader
  *
  * Each relation owns one or more chunks of per-page storage in the "arena".
  * The chunks for each relation are always consecutive, so that it can treat
- * its page storage as a simple array.  We further insist that its page data
+ * its page storage as a simple array. We further insist that its page data
  * be ordered by block number, so that binary search is possible.
  *
  * Note: we handle pointers to these items as pointers, not as SHMEM_OFFSETs.
@@ -182,7 +182,7 @@ struct FSMHeader
 {
    HTAB       *relHash;        /* hashtable of FSMRelation entries */
    FSMRelation *usageList;     /* FSMRelations in usage-recency order */
-   FSMRelation *usageListTail; /* tail of usage-recency list */
+   FSMRelation *usageListTail; /* tail of usage-recency list */
    FSMRelation *firstRel;      /* FSMRelations in arena storage order */
    FSMRelation *lastRel;       /* tail of storage-order list */
    int         numRels;        /* number of FSMRelations now in use */
@@ -204,7 +204,7 @@ struct FSMRelation
    FSMRelation *nextUsage;     /* next rel in usage-recency order */
    FSMRelation *priorUsage;    /* prior rel in usage-recency order */
    FSMRelation *nextPhysical;  /* next rel in arena-storage order */
-   FSMRelation *priorPhysical; /* prior rel in arena-storage order */
+   FSMRelation *priorPhysical; /* prior rel in arena-storage order */
    bool        isIndex;        /* if true, we store only page numbers */
    Size        avgRequest;     /* moving average of space requests */
    int         lastPageCount;  /* pages passed to RecordRelationFreeSpace */
@@ -233,13 +233,13 @@ static BlockNumber find_index_free_space(FSMRelation *fsmrel);
 static void fsm_record_free_space(FSMRelation *fsmrel, BlockNumber page,
                      Size spaceAvail);
 static bool lookup_fsm_page_entry(FSMRelation *fsmrel, BlockNumber page,
-                                 int *outPageIndex);
+                     int *outPageIndex);
 static void compact_fsm_storage(void);
 static void push_fsm_rels_after(FSMRelation *afterRel);
-static void pack_incoming_pages(FSMPageData *newLocation, int newPages,
-                               PageFreeSpaceInfo *pageSpaces, int nPages);
-static void pack_existing_pages(FSMPageData *newLocation, int newPages,
-                               FSMPageData *oldLocation, int oldPages);
+static void pack_incoming_pages(FSMPageData * newLocation, int newPages,
+                   PageFreeSpaceInfo * pageSpaces, int nPages);
+static void pack_existing_pages(FSMPageData * newLocation, int newPages,
+                   FSMPageData * oldLocation, int oldPages);
 static int fsm_calc_request(FSMRelation *fsmrel);
 static int fsm_calc_target_allocation(int myRequest);
 static int fsm_current_chunks(FSMRelation *fsmrel);
@@ -271,7 +271,7 @@ InitFreeSpaceMap(void)
    if (FreeSpaceMap == NULL)
        ereport(FATAL,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("insufficient shared memory for free space map")));
+              errmsg("insufficient shared memory for free space map")));
    MemSet(FreeSpaceMap, 0, sizeof(FSMHeader));
 
    /* Create hashtable for FSMRelations */
@@ -288,7 +288,7 @@ InitFreeSpaceMap(void)
    if (!FreeSpaceMap->relHash)
        ereport(FATAL,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("insufficient shared memory for free space map")));
+              errmsg("insufficient shared memory for free space map")));
 
    /* Allocate page-storage arena */
    nchunks = (MaxFSMPages - 1) / CHUNKPAGES + 1;
@@ -296,14 +296,14 @@ InitFreeSpaceMap(void)
    if (nchunks <= MaxFSMRelations)
        ereport(FATAL,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("max_fsm_pages must exceed max_fsm_relations * %d",
-                       CHUNKPAGES)));
+              errmsg("max_fsm_pages must exceed max_fsm_relations * %d",
+                     CHUNKPAGES)));
 
    FreeSpaceMap->arena = (char *) ShmemAlloc(nchunks * CHUNKBYTES);
    if (FreeSpaceMap->arena == NULL)
        ereport(FATAL,
                (errcode(ERRCODE_OUT_OF_MEMORY),
-                errmsg("insufficient shared memory for free space map")));
+              errmsg("insufficient shared memory for free space map")));
 
    FreeSpaceMap->totalChunks = nchunks;
    FreeSpaceMap->usedChunks = 0;
@@ -348,7 +348,7 @@ FreeSpaceShmemSize(void)
  * will turn out to have too little space available by the time the caller
  * gets a lock on it.  In that case, the caller should report the actual
  * amount of free space available on that page and then try again (see
- * RecordAndGetPageWithFreeSpace).  If InvalidBlockNumber is returned,
+ * RecordAndGetPageWithFreeSpace). If InvalidBlockNumber is returned,
  * extend the relation.
  */
 BlockNumber
@@ -365,10 +365,10 @@ GetPageWithFreeSpace(RelFileNode *rel, Size spaceNeeded)
    fsmrel = create_fsm_rel(rel);
 
    /*
-    * Update the moving average of space requests.  This code implements an
-    * exponential moving average with an equivalent period of about 63
-    * requests.  Ignore silly requests, however, to ensure that the average
-    * stays sane.
+    * Update the moving average of space requests.  This code implements
+    * an exponential moving average with an equivalent period of about 63
+    * requests.  Ignore silly requests, however, to ensure that the
+    * average stays sane.
     */
    if (spaceNeeded > 0 && spaceNeeded < BLCKSZ)
    {
@@ -409,6 +409,7 @@ RecordAndGetPageWithFreeSpace(RelFileNode *rel,
 
    /* Do the Record */
    fsm_record_free_space(fsmrel, oldPage, oldSpaceAvail);
+
    /*
     * Update the moving average of space requests, same as in
     * GetPageWithFreeSpace.
@@ -458,7 +459,7 @@ GetAvgFSMRequestSize(RelFileNode *rel)
 void
 RecordRelationFreeSpace(RelFileNode *rel,
                        int nPages,
-                       PageFreeSpaceInfo *pageSpaces)
+                       PageFreeSpaceInfo * pageSpaces)
 {
    FSMRelation *fsmrel;
 
@@ -469,11 +470,12 @@ RecordRelationFreeSpace(RelFileNode *rel,
        nPages = MaxFSMPages;
 
    LWLockAcquire(FreeSpaceLock, LW_EXCLUSIVE);
+
    /*
     * Note we don't record info about a relation unless there's already
     * an FSM entry for it, implying someone has done GetPageWithFreeSpace
-    * for it.  Inactive rels thus will not clutter the map simply by being
-    * vacuumed.
+    * for it.  Inactive rels thus will not clutter the map simply by
+    * being vacuumed.
     */
    fsmrel = lookup_fsm_rel(rel);
    if (fsmrel)
@@ -484,6 +486,7 @@ RecordRelationFreeSpace(RelFileNode *rel,
 
        curAlloc = realloc_fsm_rel(fsmrel, nPages, false);
        curAllocPages = curAlloc * CHUNKPAGES;
+
        /*
         * If the data fits in our current allocation, just copy it;
         * otherwise must compress.
@@ -500,7 +503,7 @@ RecordRelationFreeSpace(RelFileNode *rel,
                Size        avail = pageSpaces[i].avail;
 
                /* Check caller provides sorted data */
-               if (i > 0 && page <= pageSpaces[i-1].blkno)
+               if (i > 0 && page <= pageSpaces[i - 1].blkno)
                    elog(ERROR, "free-space data is not in page order");
                FSMPageSetPageNum(newLocation, page);
                FSMPageSetSpace(newLocation, avail);
@@ -556,10 +559,11 @@ RecordIndexFreeSpace(RelFileNode *rel,
        nPages = MaxFSMPages;
 
    LWLockAcquire(FreeSpaceLock, LW_EXCLUSIVE);
+
    /*
     * Note we don't record info about a relation unless there's already
-    * an FSM entry for it, implying someone has done GetFreeIndexPage
-    * for it.  Inactive rels thus will not clutter the map simply by being
+    * an FSM entry for it, implying someone has done GetFreeIndexPage for
+    * it.  Inactive rels thus will not clutter the map simply by being
     * vacuumed.
     */
    fsmrel = lookup_fsm_rel(rel);
@@ -572,6 +576,7 @@ RecordIndexFreeSpace(RelFileNode *rel,
 
        curAlloc = realloc_fsm_rel(fsmrel, nPages, true);
        curAllocPages = curAlloc * INDEXCHUNKPAGES;
+
        /*
         * If the data fits in our current allocation, just copy it;
         * otherwise must compress.  But compression is easy: we merely
@@ -587,7 +592,7 @@ RecordIndexFreeSpace(RelFileNode *rel,
            BlockNumber page = pages[i];
 
            /* Check caller provides sorted data */
-           if (i > 0 && page <= pages[i-1])
+           if (i > 0 && page <= pages[i - 1])
                elog(ERROR, "free-space data is not in page order");
            IndexFSMPageSetPageNum(newLocation, page);
            newLocation++;
@@ -660,7 +665,7 @@ FreeSpaceMapForgetDatabase(Oid dbid)
    LWLockAcquire(FreeSpaceLock, LW_EXCLUSIVE);
    for (fsmrel = FreeSpaceMap->usageList; fsmrel; fsmrel = nextrel)
    {
-       nextrel = fsmrel->nextUsage; /* in case we delete it */
+       nextrel = fsmrel->nextUsage;    /* in case we delete it */
        if (fsmrel->key.tblNode == dbid)
            delete_fsm_rel(fsmrel);
    }
@@ -670,7 +675,7 @@ FreeSpaceMapForgetDatabase(Oid dbid)
 /*
  * PrintFreeSpaceMapStatistics - print statistics about FSM contents
  *
- * The info is sent to ereport() with the specified message level.  This is
+ * The info is sent to ereport() with the specified message level. This is
  * intended for use during VACUUM.
  */
 void
@@ -687,9 +692,7 @@ PrintFreeSpaceMapStatistics(int elevel)
    for (fsmrel = FreeSpaceMap->firstRel;
         fsmrel != NULL;
         fsmrel = fsmrel->nextPhysical)
-   {
        storedPages += fsmrel->storedPages;
-   }
    /* Copy other stats before dropping lock */
    numRels = FreeSpaceMap->numRels;
    sumRequests = FreeSpaceMap->sumRequests;
@@ -808,7 +811,7 @@ write_failed:
  * forma --- if anyone else is accessing FSM yet, there's a problem.
  *
  * Notes: no complaint is issued if no cache file is found.  If the file is
- * found, it is deleted after reading.  Thus, if we crash without a clean
+ * found, it is deleted after reading. Thus, if we crash without a clean
  * shutdown, the next cycle of life starts with no FSM data.  To do otherwise,
  * we'd need to do significantly more validation in this routine, because of
  * the likelihood that what is in the dump file would be out-of-date, eg
@@ -879,7 +882,7 @@ LoadFreeSpaceMap(void)
            len = nPages * sizeof(IndexFSMPageData);
        else
            len = nPages * sizeof(FSMPageData);
-       data = (char *) palloc(len + 1); /* +1 to avoid palloc(0) */
+       data = (char *) palloc(len + 1);        /* +1 to avoid palloc(0) */
        if (fread(data, 1, len, fp) != len)
        {
            elog(LOG, "premature EOF in \"%s\"", cachefilename);
@@ -888,7 +891,7 @@ LoadFreeSpaceMap(void)
        }
 
        /*
-        * Okay, create the FSM entry and insert data into it.  Since the
+        * Okay, create the FSM entry and insert data into it.  Since the
         * rels were stored in reverse usage order, at the end of the loop
         * they will be correctly usage-ordered in memory; and if
         * MaxFSMRelations is less than it used to be, we will correctly
@@ -904,10 +907,11 @@ LoadFreeSpaceMap(void)
            IndexFSMPageData *newLocation;
 
            curAllocPages = curAlloc * INDEXCHUNKPAGES;
+
            /*
             * If the data fits in our current allocation, just copy it;
-            * otherwise must compress.  But compression is easy: we merely
-            * forget extra pages.
+            * otherwise must compress.  But compression is easy: we
+            * merely forget extra pages.
             */
            newLocation = (IndexFSMPageData *)
                (FreeSpaceMap->arena + fsmrel->firstChunk * CHUNKBYTES);
@@ -921,6 +925,7 @@ LoadFreeSpaceMap(void)
            FSMPageData *newLocation;
 
            curAllocPages = curAlloc * CHUNKPAGES;
+
            /*
             * If the data fits in our current allocation, just copy it;
             * otherwise must compress.
@@ -1005,7 +1010,7 @@ create_fsm_rel(RelFileNode *rel)
        fsmrel->isIndex = false;    /* until we learn different */
        fsmrel->avgRequest = INITIAL_AVERAGE;
        fsmrel->lastPageCount = 0;
-       fsmrel->firstChunk = -1; /* no space allocated */
+       fsmrel->firstChunk = -1;    /* no space allocated */
        fsmrel->storedPages = 0;
        fsmrel->nextPage = 0;
 
@@ -1015,7 +1020,7 @@ create_fsm_rel(RelFileNode *rel)
 
        /* Add new entry at front of LRU list */
        link_fsm_rel_usage(fsmrel);
-       fsmrel->nextPhysical = NULL; /* not in physical-storage list */
+       fsmrel->nextPhysical = NULL;    /* not in physical-storage list */
        fsmrel->priorPhysical = NULL;
        FreeSpaceMap->numRels++;
        /* sumRequests is unchanged because request must be zero */
@@ -1076,14 +1081,15 @@ realloc_fsm_rel(FSMRelation *fsmrel, int nPages, bool isIndex)
    myRequest = fsm_calc_request(fsmrel);
    FreeSpaceMap->sumRequests += myRequest;
    myAlloc = fsm_calc_target_allocation(myRequest);
+
    /*
-    * Need to reallocate space if (a) my target allocation is more
-    * than my current allocation, AND (b) my actual immediate need
-    * (myRequest+1 chunks) is more than my current allocation.
-    * Otherwise just store the new data in-place.
+    * Need to reallocate space if (a) my target allocation is more than
+    * my current allocation, AND (b) my actual immediate need
+    * (myRequest+1 chunks) is more than my current allocation. Otherwise
+    * just store the new data in-place.
     */
    curAlloc = fsm_current_allocation(fsmrel);
-   if (myAlloc > curAlloc && (myRequest+1) > curAlloc && nPages > 0)
+   if (myAlloc > curAlloc && (myRequest + 1) > curAlloc && nPages > 0)
    {
        /* Remove entry from storage list, and compact */
        unlink_fsm_rel_storage(fsmrel);
@@ -1133,6 +1139,7 @@ unlink_fsm_rel_usage(FSMRelation *fsmrel)
        fsmrel->nextUsage->priorUsage = fsmrel->priorUsage;
    else
        FreeSpaceMap->usageListTail = fsmrel->priorUsage;
+
    /*
     * We don't bother resetting fsmrel's links, since it's about to be
     * deleted or relinked at the head.
@@ -1212,7 +1219,8 @@ find_free_space(FSMRelation *fsmrel, Size spaceNeeded)
        if (spaceAvail >= spaceNeeded)
        {
            /*
-            * Found what we want --- adjust the entry, and update nextPage.
+            * Found what we want --- adjust the entry, and update
+            * nextPage.
             */
            FSMPageSetSpace(page, spaceAvail - spaceNeeded);
            fsmrel->nextPage = pageIndex + 1;
@@ -1233,12 +1241,12 @@ static BlockNumber
 find_index_free_space(FSMRelation *fsmrel)
 {
    IndexFSMPageData *info;
-   BlockNumber result;
+   BlockNumber result;
 
    /*
     * If isIndex isn't set, it could be that RecordIndexFreeSpace() has
-    * never yet been called on this relation, and we're still looking
-    * at the default setting from create_fsm_rel().  If so, just act as
+    * never yet been called on this relation, and we're still looking at
+    * the default setting from create_fsm_rel().  If so, just act as
     * though there's no space.
     */
    if (!fsmrel->isIndex)
@@ -1247,14 +1255,15 @@ find_index_free_space(FSMRelation *fsmrel)
            return InvalidBlockNumber;
        elog(ERROR, "find_index_free_space called for a non-index relation");
    }
+
    /*
-    * For indexes, there's no need for the nextPage state variable; we just
-    * remove and return the first available page.  (We could save cycles here
-    * by returning the last page, but it seems better to encourage re-use
-    * of lower-numbered pages.)
+    * For indexes, there's no need for the nextPage state variable; we
+    * just remove and return the first available page.  (We could save
+    * cycles here by returning the last page, but it seems better to
+    * encourage re-use of lower-numbered pages.)
     */
    if (fsmrel->storedPages <= 0)
-       return InvalidBlockNumber; /* no pages available */
+       return InvalidBlockNumber;      /* no pages available */
    info = (IndexFSMPageData *)
        (FreeSpaceMap->arena + fsmrel->firstChunk * CHUNKBYTES);
    result = IndexFSMPageGetPageNum(info);
@@ -1287,8 +1296,8 @@ fsm_record_free_space(FSMRelation *fsmrel, BlockNumber page, Size spaceAvail)
    else
    {
        /*
-        * No existing entry; ignore the call.  We used to add the page
-        * to the FSM --- but in practice, if the page hasn't got enough
+        * No existing entry; ignore the call.  We used to add the page to
+        * the FSM --- but in practice, if the page hasn't got enough
         * space to satisfy the caller who's kicking it back to us, then
         * it's probably uninteresting to everyone else as well.
         */
@@ -1327,7 +1336,7 @@ lookup_fsm_page_entry(FSMRelation *fsmrel, BlockNumber page,
        while (low <= high)
        {
            int         middle;
-           BlockNumber probe;
+           BlockNumber probe;
 
            middle = low + (high - low) / 2;
            probe = IndexFSMPageGetPageNum(info + middle);
@@ -1357,7 +1366,7 @@ lookup_fsm_page_entry(FSMRelation *fsmrel, BlockNumber page,
        while (low <= high)
        {
            int         middle;
-           BlockNumber probe;
+           BlockNumber probe;
 
            middle = low + (high - low) / 2;
            probe = FSMPageGetPageNum(info + middle);
@@ -1391,13 +1400,13 @@ compact_fsm_storage(void)
         fsmrel != NULL;
         fsmrel = fsmrel->nextPhysical)
    {
-       int     newAlloc;
-       int     newAllocPages;
-       int     newChunkIndex;
-       int     oldChunkIndex;
-       int     curChunks;
-       char   *newLocation;
-       char   *oldLocation;
+       int         newAlloc;
+       int         newAllocPages;
+       int         newChunkIndex;
+       int         oldChunkIndex;
+       int         curChunks;
+       char       *newLocation;
+       char       *oldLocation;
 
        /*
         * Calculate target allocation, make sure we don't overrun due to
@@ -1412,6 +1421,7 @@ compact_fsm_storage(void)
            newAllocPages = newAlloc * CHUNKPAGES;
        newChunkIndex = nextChunkIndex;
        nextChunkIndex += newAlloc;
+
        /*
         * Determine current size, current and new locations
         */
@@ -1419,18 +1429,19 @@ compact_fsm_storage(void)
        oldChunkIndex = fsmrel->firstChunk;
        newLocation = FreeSpaceMap->arena + newChunkIndex * CHUNKBYTES;
        oldLocation = FreeSpaceMap->arena + oldChunkIndex * CHUNKBYTES;
+
        /*
         * It's possible that we have to move data down, not up, if the
         * allocations of previous rels expanded.  This should mean that
         * our allocation expanded too (or at least got no worse), and
         * ditto for later rels.  So there should be room --- but we might
         * have to push down following rels to make it.  We don't want to
-        * do the push more than once, so pack everything against the
-        * end of the arena if so.
+        * do the push more than once, so pack everything against the end
+        * of the arena if so.
         */
        if (newChunkIndex > oldChunkIndex)
        {
-           int     limitChunkIndex;
+           int         limitChunkIndex;
 
            if (newAllocPages < fsmrel->storedPages)
                elog(PANIC, "can't juggle and compress too");
@@ -1455,9 +1466,9 @@ compact_fsm_storage(void)
        else if (newAllocPages < fsmrel->storedPages)
        {
            /*
-            * Need to compress the page data.  For an index, "compression"
-            * just means dropping excess pages; otherwise we try to keep
-            * the ones with the most space.
+            * Need to compress the page data.  For an index,
+            * "compression" just means dropping excess pages; otherwise
+            * we try to keep the ones with the most space.
             */
            if (fsmrel->isIndex)
            {
@@ -1508,11 +1519,11 @@ push_fsm_rels_after(FSMRelation *afterRel)
         fsmrel != NULL;
         fsmrel = fsmrel->priorPhysical)
    {
-       int     chunkCount;
-       int     newChunkIndex;
-       int     oldChunkIndex;
-       char   *newLocation;
-       char   *oldLocation;
+       int         chunkCount;
+       int         newChunkIndex;
+       int         oldChunkIndex;
+       char       *newLocation;
+       char       *oldLocation;
 
        if (fsmrel == afterRel)
            break;
@@ -1549,8 +1560,8 @@ push_fsm_rels_after(FSMRelation *afterRel)
 #define HISTOGRAM_BINS 64
 
 static void
-pack_incoming_pages(FSMPageData *newLocation, int newPages,
-                   PageFreeSpaceInfo *pageSpaces, int nPages)
+pack_incoming_pages(FSMPageData * newLocation, int newPages,
+                   PageFreeSpaceInfo * pageSpaces, int nPages)
 {
    int         histogram[HISTOGRAM_BINS];
    int         above,
@@ -1564,35 +1575,35 @@ pack_incoming_pages(FSMPageData *newLocation, int newPages,
    MemSet(histogram, 0, sizeof(histogram));
    for (i = 0; i < nPages; i++)
    {
-       Size    avail = pageSpaces[i].avail;
+       Size        avail = pageSpaces[i].avail;
 
        if (avail >= BLCKSZ)
            elog(ERROR, "bogus freespace amount");
-       avail /= (BLCKSZ/HISTOGRAM_BINS);
+       avail /= (BLCKSZ / HISTOGRAM_BINS);
        histogram[avail]++;
    }
    /* Find the breakpoint bin */
    above = 0;
-   for (i = HISTOGRAM_BINS-1; i >= 0; i--)
+   for (i = HISTOGRAM_BINS - 1; i >= 0; i--)
    {
-       int     sum = above + histogram[i];
+       int         sum = above + histogram[i];
 
        if (sum > newPages)
            break;
        above = sum;
    }
    Assert(i >= 0);
-   thresholdL = i * BLCKSZ/HISTOGRAM_BINS; /* low bound of bp bin */
-   thresholdU = (i+1) * BLCKSZ/HISTOGRAM_BINS; /* hi bound */
+   thresholdL = i * BLCKSZ / HISTOGRAM_BINS;   /* low bound of bp bin */
+   thresholdU = (i + 1) * BLCKSZ / HISTOGRAM_BINS;     /* hi bound */
    binct = newPages - above;   /* number to take from bp bin */
    /* And copy the appropriate data */
    for (i = 0; i < nPages; i++)
    {
        BlockNumber page = pageSpaces[i].blkno;
-       Size    avail = pageSpaces[i].avail;
+       Size        avail = pageSpaces[i].avail;
 
        /* Check caller provides sorted data */
-       if (i > 0 && page <= pageSpaces[i-1].blkno)
+       if (i > 0 && page <= pageSpaces[i - 1].blkno)
            elog(ERROR, "free-space data is not in page order");
        /* Save this page? */
        if (avail >= thresholdU ||
@@ -1619,8 +1630,8 @@ pack_incoming_pages(FSMPageData *newLocation, int newPages,
  * so that we can copy data moving forward in the arrays without problem.
  */
 static void
-pack_existing_pages(FSMPageData *newLocation, int newPages,
-                   FSMPageData *oldLocation, int oldPages)
+pack_existing_pages(FSMPageData * newLocation, int newPages,
+                   FSMPageData * oldLocation, int oldPages)
 {
    int         histogram[HISTOGRAM_BINS];
    int         above,
@@ -1634,33 +1645,33 @@ pack_existing_pages(FSMPageData *newLocation, int newPages,
    MemSet(histogram, 0, sizeof(histogram));
    for (i = 0; i < oldPages; i++)
    {
-       Size    avail = FSMPageGetSpace(oldLocation + i);
+       Size        avail = FSMPageGetSpace(oldLocation + i);
 
        /* Shouldn't happen, but test to protect against stack clobber */
        if (avail >= BLCKSZ)
            elog(ERROR, "bogus freespace amount");
-       avail /= (BLCKSZ/HISTOGRAM_BINS);
+       avail /= (BLCKSZ / HISTOGRAM_BINS);
        histogram[avail]++;
    }
    /* Find the breakpoint bin */
    above = 0;
-   for (i = HISTOGRAM_BINS-1; i >= 0; i--)
+   for (i = HISTOGRAM_BINS - 1; i >= 0; i--)
    {
-       int     sum = above + histogram[i];
+       int         sum = above + histogram[i];
 
        if (sum > newPages)
            break;
        above = sum;
    }
    Assert(i >= 0);
-   thresholdL = i * BLCKSZ/HISTOGRAM_BINS; /* low bound of bp bin */
-   thresholdU = (i+1) * BLCKSZ/HISTOGRAM_BINS; /* hi bound */
+   thresholdL = i * BLCKSZ / HISTOGRAM_BINS;   /* low bound of bp bin */
+   thresholdU = (i + 1) * BLCKSZ / HISTOGRAM_BINS;     /* hi bound */
    binct = newPages - above;   /* number to take from bp bin */
    /* And copy the appropriate data */
    for (i = 0; i < oldPages; i++)
    {
        BlockNumber page = FSMPageGetPageNum(oldLocation + i);
-       Size    avail = FSMPageGetSpace(oldLocation + i);
+       Size        avail = FSMPageGetSpace(oldLocation + i);
 
        /* Save this page? */
        if (avail >= thresholdU ||
@@ -1755,13 +1766,9 @@ static int
 fsm_current_allocation(FSMRelation *fsmrel)
 {
    if (fsmrel->nextPhysical != NULL)
-   {
        return fsmrel->nextPhysical->firstChunk - fsmrel->firstChunk;
-   }
    else if (fsmrel == FreeSpaceMap->lastRel)
-   {
        return FreeSpaceMap->usedChunks - fsmrel->firstChunk;
-   }
    else
    {
        /* it's not in the storage-order list */
index 5cc0f5f2cdba71d8b41f82d944f0e5bfc101a5e1..154e39b2845b22268c454b62536208ee64495683 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.83 2003/07/24 22:04:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.84 2003/08/04 00:43:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -74,8 +74,8 @@ void
 proc_exit(int code)
 {
    /*
-    * Once we set this flag, we are committed to exit.  Any ereport() will
-    * NOT send control back to the main loop, but right back here.
+    * Once we set this flag, we are committed to exit.  Any ereport()
+    * will NOT send control back to the main loop, but right back here.
     */
    proc_exit_inprogress = true;
 
index 187b75ad55d767bed20fdd3bc16717b03a52c156..508149bc42c683a16eb3940f82054a6145784610 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipci.c,v 1.54 2003/07/24 22:04:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipci.c,v 1.55 2003/08/04 00:43:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -146,4 +146,3 @@ AttachSharedMemoryAndSemaphores(void)
 {
    CLOGShmemInit();
 }
-
index 225436ffd935ba6b50c89bc1825be6e7ef1a0b81..653dbf8926322c24d67dc778f4eaa1086febe7b7 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.57 2003/07/24 22:04:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinval.c,v 1.58 2003/08/04 00:43:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -324,11 +324,10 @@ GetSnapshotData(Snapshot snapshot, bool serializable)
     * lastBackend would be sufficient.  But it seems better to do the
     * malloc while not holding the lock, so we can't look at lastBackend.
     *
-    * if (snapshot->xip != NULL)
-    *     no need to free and reallocate xip;
+    * if (snapshot->xip != NULL) no need to free and reallocate xip;
     *
-    * We can reuse the old xip array, because MaxBackends does not change
-    * at runtime.
+    * We can reuse the old xip array, because MaxBackends does not change at
+    * runtime.
     */
    if (snapshot->xip == NULL)
    {
index 757f1df2f4fee471a09086cacc98e9626db0d59f..1106a76c3dfc07787d0b54bf0c1a0483ea028242 100644 (file)
@@ -12,7 +12,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/deadlock.c,v 1.21 2003/07/24 22:04:13 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/deadlock.c,v 1.22 2003/08/04 00:43:24 momjian Exp $
  *
  * Interface:
  *
@@ -49,7 +49,7 @@ typedef struct
 } WAIT_ORDER;
 
 /*
- * Information saved about each edge in a detected deadlock cycle.  This
+ * Information saved about each edge in a detected deadlock cycle. This
  * is used to print a diagnostic message upon failure.
  *
  * Note: because we want to examine this info after releasing the LockMgrLock,
@@ -61,7 +61,7 @@ typedef struct
    LOCKTAG     locktag;        /* ID of awaited lock object */
    LOCKMODE    lockmode;       /* type of lock we're waiting for */
    int         pid;            /* PID of blocked backend */
-} DEADLOCK_INFO;
+}  DEADLOCK_INFO;
 
 
 static bool DeadLockCheckRecurse(PGPROC *proc);
@@ -147,7 +147,7 @@ InitDeadLockChecking(void)
     * We need to consider rearranging at most MaxBackends/2 wait queues
     * (since it takes at least two waiters in a queue to create a soft
     * edge), and the expanded form of the wait queues can't involve more
-    * than MaxBackends total waiters.  (But avoid palloc(0) if
+    * than MaxBackends total waiters.  (But avoid palloc(0) if
     * MaxBackends = 1.)
     */
    waitOrders = (WAIT_ORDER *)
@@ -221,7 +221,7 @@ DeadLockCheck(PGPROC *proc)
         * Call FindLockCycle one more time, to record the correct
         * deadlockDetails[] for the basic state with no rearrangements.
         */
-       int     nSoftEdges;
+       int         nSoftEdges;
 
        nWaitOrders = 0;
        if (!FindLockCycle(proc, possibleConstraints, &nSoftEdges))
@@ -486,7 +486,7 @@ FindLockCycleRecurse(PGPROC *checkProc,
    lockHolders = &(lock->lockHolders);
 
    proclock = (PROCLOCK *) SHMQueueNext(lockHolders, lockHolders,
-                                      offsetof(PROCLOCK, lockLink));
+                                        offsetof(PROCLOCK, lockLink));
 
    while (proclock)
    {
@@ -501,11 +501,11 @@ FindLockCycleRecurse(PGPROC *checkProc,
                    ((1 << lm) & conflictMask) != 0)
                {
                    /* This proc hard-blocks checkProc */
-                   if (FindLockCycleRecurse(proc, depth+1,
+                   if (FindLockCycleRecurse(proc, depth + 1,
                                             softEdges, nSoftEdges))
                    {
                        /* fill deadlockDetails[] */
-                       DEADLOCK_INFO  *info = &deadlockDetails[depth];
+                       DEADLOCK_INFO *info = &deadlockDetails[depth];
 
                        info->locktag = lock->tag;
                        info->lockmode = checkProc->waitLockMode;
@@ -558,11 +558,11 @@ FindLockCycleRecurse(PGPROC *checkProc,
            if (((1 << proc->waitLockMode) & conflictMask) != 0)
            {
                /* This proc soft-blocks checkProc */
-               if (FindLockCycleRecurse(proc, depth+1,
+               if (FindLockCycleRecurse(proc, depth + 1,
                                         softEdges, nSoftEdges))
                {
                    /* fill deadlockDetails[] */
-                   DEADLOCK_INFO  *info = &deadlockDetails[depth];
+                   DEADLOCK_INFO *info = &deadlockDetails[depth];
 
                    info->locktag = lock->tag;
                    info->lockmode = checkProc->waitLockMode;
@@ -599,11 +599,11 @@ FindLockCycleRecurse(PGPROC *checkProc,
            if (((1 << proc->waitLockMode) & conflictMask) != 0)
            {
                /* This proc soft-blocks checkProc */
-               if (FindLockCycleRecurse(proc, depth+1,
+               if (FindLockCycleRecurse(proc, depth + 1,
                                         softEdges, nSoftEdges))
                {
                    /* fill deadlockDetails[] */
-                   DEADLOCK_INFO  *info = &deadlockDetails[depth];
+                   DEADLOCK_INFO *info = &deadlockDetails[depth];
 
                    info->locktag = lock->tag;
                    info->lockmode = checkProc->waitLockMode;
@@ -834,7 +834,6 @@ PrintLockQueue(LOCK *lock, const char *info)
    printf("\n");
    fflush(stdout);
 }
-
 #endif
 
 /*
@@ -843,17 +842,17 @@ PrintLockQueue(LOCK *lock, const char *info)
 void
 DeadLockReport(void)
 {
-   StringInfoData  buf;
-   int     i;
+   StringInfoData buf;
+   int         i;
 
    initStringInfo(&buf);
    for (i = 0; i < nDeadlockDetails; i++)
    {
-       DEADLOCK_INFO  *info = &deadlockDetails[i];
+       DEADLOCK_INFO *info = &deadlockDetails[i];
        int         nextpid;
 
        /* The last proc waits for the first one... */
-       if (i < nDeadlockDetails-1)
+       if (i < nDeadlockDetails - 1)
            nextpid = info[1].pid;
        else
            nextpid = deadlockDetails[0].pid;
@@ -900,7 +899,7 @@ RememberSimpleDeadLock(PGPROC *proc1,
                       LOCK *lock,
                       PGPROC *proc2)
 {
-   DEADLOCK_INFO  *info = &deadlockDetails[0];
+   DEADLOCK_INFO *info = &deadlockDetails[0];
 
    info->locktag = lock->tag;
    info->lockmode = lockmode;
index 2e71f40c09b5fdb2f4c5a1f354437f773068dfe3..9d4c52f75fa404fbb21d568ed67532e28d30bb85 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.124 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.125 2003/08/04 00:43:24 momjian Exp $
  *
  * NOTES
  *   Outside modules can create a lock table and acquire/release
@@ -127,9 +127,9 @@ inline static void
 PROCLOCK_PRINT(const char *where, const PROCLOCK *proclockP)
 {
    if (
-   (((PROCLOCK_LOCKMETHOD(*proclockP) == DEFAULT_LOCKMETHOD && Trace_locks)
-     || (PROCLOCK_LOCKMETHOD(*proclockP) == USER_LOCKMETHOD && Trace_userlocks))
-    && (((LOCK *) MAKE_PTR(proclockP->tag.lock))->tag.relId >= (Oid) Trace_lock_oidmin))
+       (((PROCLOCK_LOCKMETHOD(*proclockP) == DEFAULT_LOCKMETHOD && Trace_locks)
+         || (PROCLOCK_LOCKMETHOD(*proclockP) == USER_LOCKMETHOD && Trace_userlocks))
+        && (((LOCK *) MAKE_PTR(proclockP->tag.lock))->tag.relId >= (Oid) Trace_lock_oidmin))
        || (Trace_lock_table && (((LOCK *) MAKE_PTR(proclockP->tag.lock))->tag.relId == Trace_lock_table))
        )
        elog(LOG,
@@ -137,8 +137,8 @@ PROCLOCK_PRINT(const char *where, const PROCLOCK *proclockP)
             where, MAKE_OFFSET(proclockP), proclockP->tag.lock,
             PROCLOCK_LOCKMETHOD(*(proclockP)),
             proclockP->tag.proc, proclockP->tag.xid,
-          proclockP->holding[1], proclockP->holding[2], proclockP->holding[3],
-          proclockP->holding[4], proclockP->holding[5], proclockP->holding[6],
+            proclockP->holding[1], proclockP->holding[2], proclockP->holding[3],
+            proclockP->holding[4], proclockP->holding[5], proclockP->holding[6],
             proclockP->holding[7], proclockP->nHolding);
 }
 
@@ -321,10 +321,10 @@ LockMethodTableInit(char *tabName,
 
    sprintf(shmemName, "%s (proclock hash)", tabName);
    lockMethodTable->proclockHash = ShmemInitHash(shmemName,
-                                               init_table_size,
-                                               max_table_size,
-                                               &info,
-                                               hash_flags);
+                                                 init_table_size,
+                                                 max_table_size,
+                                                 &info,
+                                                 hash_flags);
 
    if (!lockMethodTable->proclockHash)
        elog(FATAL, "could not initialize lock table \"%s\"", tabName);
@@ -509,8 +509,8 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag,
    /*
     * Create the hash key for the proclock table.
     */
-   MemSet(&proclocktag, 0, sizeof(PROCLOCKTAG)); /* must clear padding,
-                                                * needed */
+   MemSet(&proclocktag, 0, sizeof(PROCLOCKTAG));       /* must clear padding,
+                                                        * needed */
    proclocktag.lock = MAKE_OFFSET(lock);
    proclocktag.proc = MAKE_OFFSET(MyProc);
    TransactionIdStore(xid, &proclocktag.xid);
@@ -520,8 +520,8 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag,
     */
    proclockTable = lockMethodTable->proclockHash;
    proclock = (PROCLOCK *) hash_search(proclockTable,
-                                     (void *) &proclocktag,
-                                     HASH_ENTER, &found);
+                                       (void *) &proclocktag,
+                                       HASH_ENTER, &found);
    if (!proclock)
    {
        LWLockRelease(masterLock);
@@ -604,8 +604,8 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag,
    }
 
    /*
-    * If this process (under any XID) is a proclock of the lock, also grant
-    * myself another one without blocking.
+    * If this process (under any XID) is a proclock of the lock, also
+    * grant myself another one without blocking.
     */
    LockCountMyLocks(proclock->tag.lock, MyProc, myHolding);
    if (myHolding[lockmode] > 0)
@@ -649,8 +649,8 @@ LockAcquire(LOCKMETHOD lockmethod, LOCKTAG *locktag,
                SHMQueueDelete(&proclock->lockLink);
                SHMQueueDelete(&proclock->procLink);
                proclock = (PROCLOCK *) hash_search(proclockTable,
-                                                 (void *) proclock,
-                                                 HASH_REMOVE, NULL);
+                                                   (void *) proclock,
+                                                   HASH_REMOVE, NULL);
                if (!proclock)
                    elog(WARNING, "proclock table corrupted");
            }
@@ -818,7 +818,7 @@ LockCountMyLocks(SHMEM_OFFSET lockOffset, PGPROC *proc, int *myHolding)
    MemSet(myHolding, 0, MAX_LOCKMODES * sizeof(int));
 
    proclock = (PROCLOCK *) SHMQueueNext(procHolders, procHolders,
-                                      offsetof(PROCLOCK, procLink));
+                                        offsetof(PROCLOCK, procLink));
 
    while (proclock)
    {
@@ -908,9 +908,10 @@ WaitOnLock(LOCKMETHOD lockmethod, LOCKMODE lockmode,
         */
        LOCK_PRINT("WaitOnLock: aborting on lock", lock, lockmode);
        LWLockRelease(lockMethodTable->masterLock);
+
        /*
-        * Now that we aren't holding the LockMgrLock, we can give an error
-        * report including details about the detected deadlock.
+        * Now that we aren't holding the LockMgrLock, we can give an
+        * error report including details about the detected deadlock.
         */
        DeadLockReport();
        /* not reached */
@@ -1033,16 +1034,16 @@ LockRelease(LOCKMETHOD lockmethod, LOCKTAG *locktag,
    /*
     * Find the proclock entry for this proclock.
     */
-   MemSet(&proclocktag, 0, sizeof(PROCLOCKTAG)); /* must clear padding,
-                                                * needed */
+   MemSet(&proclocktag, 0, sizeof(PROCLOCKTAG));       /* must clear padding,
+                                                        * needed */
    proclocktag.lock = MAKE_OFFSET(lock);
    proclocktag.proc = MAKE_OFFSET(MyProc);
    TransactionIdStore(xid, &proclocktag.xid);
 
    proclockTable = lockMethodTable->proclockHash;
    proclock = (PROCLOCK *) hash_search(proclockTable,
-                                     (void *) &proclocktag,
-                                     HASH_FIND_SAVE, NULL);
+                                       (void *) &proclocktag,
+                                       HASH_FIND_SAVE, NULL);
    if (!proclock)
    {
        LWLockRelease(masterLock);
@@ -1143,8 +1144,8 @@ LockRelease(LOCKMETHOD lockmethod, LOCKTAG *locktag,
        SHMQueueDelete(&proclock->lockLink);
        SHMQueueDelete(&proclock->procLink);
        proclock = (PROCLOCK *) hash_search(proclockTable,
-                                         (void *) &proclock,
-                                         HASH_REMOVE_SAVED, NULL);
+                                           (void *) &proclock,
+                                           HASH_REMOVE_SAVED, NULL);
        if (!proclock)
        {
            LWLockRelease(masterLock);
@@ -1207,7 +1208,7 @@ LockReleaseAll(LOCKMETHOD lockmethod, PGPROC *proc,
    LWLockAcquire(masterLock, LW_EXCLUSIVE);
 
    proclock = (PROCLOCK *) SHMQueueNext(procHolders, procHolders,
-                                      offsetof(PROCLOCK, procLink));
+                                        offsetof(PROCLOCK, procLink));
 
    while (proclock)
    {
@@ -1295,9 +1296,9 @@ LockReleaseAll(LOCKMETHOD lockmethod, PGPROC *proc,
         * remove the proclock entry from the hashtable
         */
        proclock = (PROCLOCK *) hash_search(lockMethodTable->proclockHash,
-                                         (void *) proclock,
-                                         HASH_REMOVE,
-                                         NULL);
+                                           (void *) proclock,
+                                           HASH_REMOVE,
+                                           NULL);
        if (!proclock)
        {
            LWLockRelease(masterLock);
@@ -1466,7 +1467,7 @@ DumpLocks(void)
        LOCK_PRINT("DumpLocks: waiting on", proc->waitLock, 0);
 
    proclock = (PROCLOCK *) SHMQueueNext(procHolders, procHolders,
-                                      offsetof(PROCLOCK, procLink));
+                                        offsetof(PROCLOCK, procLink));
 
    while (proclock)
    {
index eebd696c2c25b36439f716ac8e936ef22b0ff43f..3bdda5924d7045a60c096f69482ebb24a6f964c4 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.131 2003/07/24 22:04:14 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.132 2003/08/04 00:43:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -78,6 +78,7 @@ static bool waitingForSignal = false;
 /* Mark these volatile because they can be changed by signal handler */
 static volatile bool statement_timeout_active = false;
 static volatile bool deadlock_timeout_active = false;
+
 /* statement_fin_time is valid only if statement_timeout_active is true */
 static struct timeval statement_fin_time;
 
@@ -571,7 +572,8 @@ ProcSleep(LOCKMETHODTABLE *lockMethodTable,
                     * up correctly is to call RemoveFromWaitQueue(), but
                     * we can't do that until we are *on* the wait queue.
                     * So, set a flag to check below, and break out of
-                    * loop.  Also, record deadlock info for later message.
+                    * loop.  Also, record deadlock info for later
+                    * message.
                     */
                    RememberSimpleDeadLock(MyProc, lockmode, lock, proc);
                    early_deadlock = true;
@@ -950,11 +952,13 @@ bool
 enable_sig_alarm(int delayms, bool is_statement_timeout)
 {
 #ifdef WIN32
-# warning add Win32 timer
+#warning add Win32 timer
 #else
    struct timeval fin_time;
+
 #ifndef __BEOS__
    struct itimerval timeval;
+
 #else
    bigtime_t   time_interval;
 #endif
@@ -984,16 +988,16 @@ enable_sig_alarm(int delayms, bool is_statement_timeout)
        /*
         * Begin deadlock timeout with statement-level timeout active
         *
-        * Here, we want to interrupt at the closer of the two timeout
-        * times.  If fin_time >= statement_fin_time then we need not
-        * touch the existing timer setting; else set up to interrupt
-        * at the deadlock timeout time.
+        * Here, we want to interrupt at the closer of the two timeout times.
+        * If fin_time >= statement_fin_time then we need not touch the
+        * existing timer setting; else set up to interrupt at the
+        * deadlock timeout time.
         *
         * NOTE: in this case it is possible that this routine will be
         * interrupted by the previously-set timer alarm.  This is okay
-        * because the signal handler will do only what it should do according
-        * to the state variables.  The deadlock checker may get run earlier
-        * than normal, but that does no harm.
+        * because the signal handler will do only what it should do
+        * according to the state variables.  The deadlock checker may get
+        * run earlier than normal, but that does no harm.
         */
        deadlock_timeout_active = true;
        if (fin_time.tv_sec > statement_fin_time.tv_sec ||
@@ -1037,6 +1041,7 @@ disable_sig_alarm(bool is_statement_timeout)
 #ifdef WIN32
 #warning add Win32 timer
 #else
+
    /*
     * Always disable the interrupt if it is active; this avoids being
     * interrupted by the signal handler and thereby possibly getting
index b8766ae6ab7b0dafd76602a63324281c414017f0..2441534b46c7900436d92f6ebf2c0b873ec15360 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/page/bufpage.c,v 1.53 2003/07/24 22:04:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/page/bufpage.c,v 1.54 2003/08/04 00:43:24 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -50,7 +50,7 @@ PageInit(Page page, Size pageSize, Size specialSize)
  * PageHeaderIsValid
  *     Check that the header fields of a page appear valid.
  *
- * This is called when a page has just been read in from disk.  The idea is
+ * This is called when a page has just been read in from disk. The idea is
  * to cheaply detect trashed pages before we go nuts following bogus item
  * pointers, testing invalid transaction identifiers, etc.
  *
@@ -135,7 +135,7 @@ PageAddItem(Page page,
        ereport(PANIC,
                (errcode(ERRCODE_DATA_CORRUPTED),
                 errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u",
-                       phdr->pd_lower, phdr->pd_upper, phdr->pd_special)));
+                    phdr->pd_lower, phdr->pd_upper, phdr->pd_special)));
 
    /*
     * Select offsetNumber to place the new item at
@@ -391,8 +391,8 @@ PageRepairFragmentation(Page page, OffsetNumber *unused)
        if (totallen > (Size) (pd_special - pd_lower))
            ereport(ERROR,
                    (errcode(ERRCODE_DATA_CORRUPTED),
-                    errmsg("corrupted item lengths: total %u, available space %u",
-                           (unsigned int) totallen, pd_special - pd_lower)));
+           errmsg("corrupted item lengths: total %u, available space %u",
+                  (unsigned int) totallen, pd_special - pd_lower)));
 
        /* sort itemIdSortData array into decreasing itemoff order */
        qsort((char *) itemidbase, nused, sizeof(struct itemIdSortData),
@@ -472,7 +472,7 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
        ereport(ERROR,
                (errcode(ERRCODE_DATA_CORRUPTED),
                 errmsg("corrupted page pointers: lower = %u, upper = %u, special = %u",
-                       phdr->pd_lower, phdr->pd_upper, phdr->pd_special)));
+                    phdr->pd_lower, phdr->pd_upper, phdr->pd_special)));
 
    nline = PageGetMaxOffsetNumber(page);
    if ((int) offnum <= 0 || (int) offnum > nline)
@@ -533,7 +533,8 @@ PageIndexTupleDelete(Page page, OffsetNumber offnum)
     */
    if (!PageIsEmpty(page))
    {
-       int i;
+       int         i;
+
        nline--;                /* there's one less than when we started */
        for (i = 1; i <= nline; i++)
        {
index bd46d3dbd52f880486ffa752fb6b920abf124d3f..420413a510bfdcca068b9443e3f515b72b83ce13 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.96 2003/07/28 00:09:15 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.97 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -571,12 +571,13 @@ mdnblocks(Relation reln)
    segno = 0;
 
    /*
-    * Skip through any segments that aren't the last one, to avoid redundant
-    * seeks on them.  We have previously verified that these segments are
-    * exactly RELSEG_SIZE long, and it's useless to recheck that each time.
-    * (NOTE: this assumption could only be wrong if another backend has
-    * truncated the relation.  We rely on higher code levels to handle that
-    * scenario by closing and re-opening the md fd.)
+    * Skip through any segments that aren't the last one, to avoid
+    * redundant seeks on them.  We have previously verified that these
+    * segments are exactly RELSEG_SIZE long, and it's useless to recheck
+    * that each time. (NOTE: this assumption could only be wrong if
+    * another backend has truncated the relation.  We rely on higher code
+    * levels to handle that scenario by closing and re-opening the md
+    * fd.)
     */
    while (v->mdfd_chain != (MdfdVec *) NULL)
    {
index 76990d34f7c49fa17c1f58eb894efe077b795b65..7ea881e84a643bbdad09ecd476819d31bb57778d 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/dest.c,v 1.59 2003/07/22 19:00:11 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/dest.c,v 1.60 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -93,7 +93,7 @@ BeginCommand(const char *commandTag, CommandDest dest)
  *     CreateDestReceiver - return appropriate receiver function set for dest
  *
  * Note: a Portal must be specified for destinations Remote, RemoteExecute,
- * and Tuplestore.  It can be NULL for the others.
+ * and Tuplestore. It can be NULL for the others.
  * ----------------
  */
 DestReceiver *
@@ -173,8 +173,9 @@ NullCommand(CommandDest dest)
        case RemoteExecute:
 
            /*
-            * tell the fe that we saw an empty query string.  In protocols
-            * before 3.0 this has a useless empty-string message body.
+            * tell the fe that we saw an empty query string.  In
+            * protocols before 3.0 this has a useless empty-string
+            * message body.
             */
            if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3)
                pq_putemptymessage('I');
index b86d657ea2565b16c01825fa007d4301dd8951b3..7ccc3f80c6bef1db5644bc09dad5c50109ab19c3 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/fastpath.c,v 1.66 2003/08/01 00:15:22 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/fastpath.c,v 1.67 2003/08/04 00:43:25 momjian Exp $
  *
  * NOTES
  *   This cruft is the server side of PQfn.
@@ -53,10 +53,10 @@ struct fp_info
 };
 
 
-static int16 parse_fcall_arguments(StringInfo msgBuf, struct fp_info *fip,
-                                  FunctionCallInfo fcinfo);
-static int16 parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info *fip,
-                                     FunctionCallInfo fcinfo);
+static int16 parse_fcall_arguments(StringInfo msgBuf, struct fp_info * fip,
+                     FunctionCallInfo fcinfo);
+static int16 parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info * fip,
+                        FunctionCallInfo fcinfo);
 
 
 /* ----------------
@@ -103,8 +103,8 @@ GetOldFunctionMessage(StringInfo buf)
            /* FATAL here since no hope of regaining message sync */
            ereport(FATAL,
                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                    errmsg("invalid argument size %d in function call message",
-                           argsize)));
+             errmsg("invalid argument size %d in function call message",
+                    argsize)));
        }
        /* and arg contents */
        if (argsize > 0)
@@ -158,8 +158,8 @@ SendFunctionResult(Datum retval, bool isnull, Oid rettype, int16 format)
                              &typoutput, &typelem, &typisvarlena);
            outputstr = DatumGetCString(OidFunctionCall3(typoutput,
                                                         retval,
-                                                ObjectIdGetDatum(typelem),
-                                                Int32GetDatum(-1)));
+                                              ObjectIdGetDatum(typelem),
+                                                    Int32GetDatum(-1)));
            pq_sendcountedtext(&buf, outputstr, strlen(outputstr), false);
            pfree(outputstr);
        }
@@ -174,7 +174,7 @@ SendFunctionResult(Datum retval, bool isnull, Oid rettype, int16 format)
                                    &typsend, &typelem, &typisvarlena);
            outputbytes = DatumGetByteaP(OidFunctionCall2(typsend,
                                                          retval,
-                                                 ObjectIdGetDatum(typelem)));
+                                            ObjectIdGetDatum(typelem)));
            /* We assume the result will not have been toasted */
            pq_sendint(&buf, VARSIZE(outputbytes) - VARHDRSZ, 4);
            pq_sendbytes(&buf, VARDATA(outputbytes),
@@ -255,11 +255,11 @@ fetch_fp_info(Oid func_id, struct fp_info * fip)
  *     and will pass it in msgBuf.
  *     In old protocol, the passed msgBuf is empty and we must read the
  *     message here.
- * 
+ *
  * RETURNS:
  *     0 if successful completion, EOF if frontend connection lost.
  *
- * Note: All ordinary errors result in ereport(ERROR,...).  However,
+ * Note: All ordinary errors result in ereport(ERROR,...). However,
  * if we lose the frontend connection there is no one to ereport to,
  * and no use in proceeding...
  *
@@ -303,15 +303,15 @@ HandleFunctionRequest(StringInfo msgBuf)
        ereport(ERROR,
                (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
                 errmsg("current transaction is aborted, "
-                       "queries ignored until end of transaction block")));
+                    "queries ignored until end of transaction block")));
 
    /*
     * Begin parsing the buffer contents.
     */
    if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
-       (void) pq_getmsgstring(msgBuf); /* dummy string */
+       (void) pq_getmsgstring(msgBuf); /* dummy string */
 
-   fid = (Oid) pq_getmsgint(msgBuf, 4); /* function oid */
+   fid = (Oid) pq_getmsgint(msgBuf, 4);        /* function oid */
 
    /*
     * There used to be a lame attempt at caching lookup info here. Now we
@@ -359,7 +359,7 @@ HandleFunctionRequest(StringInfo msgBuf)
    callit = true;
    if (fip->flinfo.fn_strict)
    {
-       int     i;
+       int         i;
 
        for (i = 0; i < fcinfo.nargs; i++)
        {
@@ -394,7 +394,7 @@ HandleFunctionRequest(StringInfo msgBuf)
  * is returned.
  */
 static int16
-parse_fcall_arguments(StringInfo msgBuf, struct fp_info *fip,
+parse_fcall_arguments(StringInfo msgBuf, struct fp_info * fip,
                      FunctionCallInfo fcinfo)
 {
    int         nargs;
@@ -447,8 +447,8 @@ parse_fcall_arguments(StringInfo msgBuf, struct fp_info *fip,
        if (argsize < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                    errmsg("invalid argument size %d in function call message",
-                           argsize)));
+             errmsg("invalid argument size %d in function call message",
+                    argsize)));
 
        /* Reset abuf to empty, and insert raw data into it */
        abuf.len = 0;
@@ -473,11 +473,11 @@ parse_fcall_arguments(StringInfo msgBuf, struct fp_info *fip,
            char       *pstring;
 
            getTypeInputInfo(fip->argtypes[i], &typInput, &typElem);
+
            /*
-            * Since stringinfo.c keeps a trailing null in
-            * place even for binary data, the contents of
-            * abuf are a valid C string.  We have to do
-            * encoding conversion before calling the typinput
+            * Since stringinfo.c keeps a trailing null in place even for
+            * binary data, the contents of abuf are a valid C string.  We
+            * have to do encoding conversion before calling the typinput
             * routine, though.
             */
            pstring = (char *)
@@ -528,7 +528,7 @@ parse_fcall_arguments(StringInfo msgBuf, struct fp_info *fip,
  * is returned.
  */
 static int16
-parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info *fip,
+parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info * fip,
                         FunctionCallInfo fcinfo)
 {
    int         nargs;
@@ -570,8 +570,8 @@ parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info *fip,
        if (argsize < 0)
            ereport(ERROR,
                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                    errmsg("invalid argument size %d in function call message",
-                           argsize)));
+             errmsg("invalid argument size %d in function call message",
+                    argsize)));
 
        /* Reset abuf to empty, and insert raw data into it */
        abuf.len = 0;
@@ -593,8 +593,8 @@ parse_fcall_arguments_20(StringInfo msgBuf, struct fp_info *fip,
        if (abuf.cursor != abuf.len)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
-                    errmsg("incorrect binary data format in function argument %d",
-                           i + 1)));
+           errmsg("incorrect binary data format in function argument %d",
+                  i + 1)));
    }
 
    /* Desired result format is always binary in protocol 2.0 */
index 80f2be70ed643d1ab39b3c1f85c355c5ae069815..cb835469a0f0dcbb7a921a845cb9536c0ade59e2 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.353 2003/07/29 00:03:18 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.354 2003/08/04 00:43:25 momjian Exp $
  *
  * NOTES
  *   this is the "main" module of the postgres backend and
@@ -133,6 +133,7 @@ static bool EchoQuery = false;  /* default don't echo */
 #ifndef TCOP_DONTUSENEWLINE
 static int UseNewLine = 1;     /* Use newlines query delimiters (the
                                 * default) */
+
 #else
 static int UseNewLine = 0;     /* Use EOF as query delimiters */
 #endif   /* TCOP_DONTUSENEWLINE */
@@ -283,8 +284,8 @@ SocketBackend(StringInfo inBuf)
 
    /*
     * Validate message type code before trying to read body; if we have
-    * lost sync, better to say "command unknown" than to run out of memory
-    * because we used garbage as a length word.
+    * lost sync, better to say "command unknown" than to run out of
+    * memory because we used garbage as a length word.
     *
     * This also gives us a place to set the doing_extended_query_message
     * flag as soon as possible.
@@ -300,7 +301,7 @@ SocketBackend(StringInfo inBuf)
                {
                    ereport(COMMERROR,
                            (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                            errmsg("unexpected EOF on client connection")));
+                        errmsg("unexpected EOF on client connection")));
                    return EOF;
                }
            }
@@ -327,7 +328,7 @@ SocketBackend(StringInfo inBuf)
            if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
                ereport(FATAL,
                        (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                        errmsg("invalid frontend message type %d", qtype)));
+                    errmsg("invalid frontend message type %d", qtype)));
            break;
 
        case 'S':               /* sync */
@@ -339,7 +340,7 @@ SocketBackend(StringInfo inBuf)
            if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
                ereport(FATAL,
                        (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                        errmsg("invalid frontend message type %d", qtype)));
+                    errmsg("invalid frontend message type %d", qtype)));
            break;
 
        case 'd':               /* copy data */
@@ -350,14 +351,15 @@ SocketBackend(StringInfo inBuf)
            if (PG_PROTOCOL_MAJOR(FrontendProtocol) < 3)
                ereport(FATAL,
                        (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                        errmsg("invalid frontend message type %d", qtype)));
+                    errmsg("invalid frontend message type %d", qtype)));
            break;
 
        default:
+
            /*
-            * Otherwise we got garbage from the frontend.  We treat this
-            * as fatal because we have probably lost message boundary sync,
-            * and there's no good way to recover.
+            * Otherwise we got garbage from the frontend.  We treat this
+            * as fatal because we have probably lost message boundary
+            * sync, and there's no good way to recover.
             */
            ereport(FATAL,
                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
@@ -409,9 +411,9 @@ ReadCommand(StringInfo inBuf)
  * but it is still needed for parsing of SQL function bodies.
  */
 List *
-pg_parse_and_rewrite(const char *query_string, /* string to execute */
+pg_parse_and_rewrite(const char *query_string, /* string to execute */
                     Oid *paramTypes,   /* parameter types */
-                    int numParams) /* number of parameters */
+                    int numParams)     /* number of parameters */
 {
    List       *raw_parsetree_list;
    List       *querytree_list;
@@ -518,8 +520,8 @@ pg_rewrite_queries(List *querytree_list)
        ResetUsage();
 
    /*
-    * rewritten queries are collected in new_list.  Note there may be more
-    * or fewer than in the original list.
+    * rewritten queries are collected in new_list.  Note there may be
+    * more or fewer than in the original list.
     */
    foreach(list_item, querytree_list)
    {
@@ -558,7 +560,7 @@ pg_rewrite_queries(List *querytree_list)
    /* This checks both copyObject() and the equal() routines... */
    if (!equal(new_list, querytree_list))
        ereport(WARNING,
-               (errmsg("copyObject failed to produce an equal parse tree")));
+          (errmsg("copyObject failed to produce an equal parse tree")));
    else
        querytree_list = new_list;
 #endif
@@ -603,7 +605,7 @@ pg_plan_query(Query *querytree)
        /* This checks both copyObject() and the equal() routines... */
        if (!equal(new_plan, plan))
            ereport(WARNING,
-                   (errmsg("copyObject failed to produce an equal plan tree")));
+           (errmsg("copyObject failed to produce an equal plan tree")));
        else
 #endif
            plan = new_plan;
@@ -671,7 +673,7 @@ pg_plan_queries(List *querytrees, bool needSnapshot)
 static void
 exec_simple_query(const char *query_string)
 {
-   CommandDest dest = whereToSendOutput;
+   CommandDest dest = whereToSendOutput;
    MemoryContext oldcontext;
    List       *parsetree_list,
               *parsetree_item;
@@ -689,10 +691,10 @@ exec_simple_query(const char *query_string)
    pgstat_report_activity(query_string);
 
    /*
-    * We use save_log_* so "SET log_duration = true"  and
-    * "SET log_min_duration_statement = true" don't report incorrect
-    * time because gettimeofday() wasn't called.
-    * Similarly, log_statement_stats has to be captured once.
+    * We use save_log_* so "SET log_duration = true"  and "SET
+    * log_min_duration_statement = true" don't report incorrect time
+    * because gettimeofday() wasn't called. Similarly,
+    * log_statement_stats has to be captured once.
     */
    if (save_log_duration || save_log_min_duration_statement > 0)
        gettimeofday(&start_t, NULL);
@@ -710,10 +712,10 @@ exec_simple_query(const char *query_string)
    start_xact_command();
 
    /*
-    * Zap any pre-existing unnamed statement.  (While not strictly
-    * necessary, it seems best to define simple-Query mode as if it
-    * used the unnamed statement and portal; this ensures we recover
-    * any storage used by prior unnamed operations.)
+    * Zap any pre-existing unnamed statement.  (While not strictly
+    * necessary, it seems best to define simple-Query mode as if it used
+    * the unnamed statement and portal; this ensures we recover any
+    * storage used by prior unnamed operations.)
     */
    unnamed_stmt_pstmt = NULL;
    if (unnamed_stmt_context)
@@ -756,10 +758,10 @@ exec_simple_query(const char *query_string)
        int16       format;
 
        /*
-        * Get the command name for use in status display (it also becomes the
-        * default completion tag, down inside PortalRun).  Set ps_status and
-        * do any special start-of-SQL-command processing needed by the
-        * destination.
+        * Get the command name for use in status display (it also becomes
+        * the default completion tag, down inside PortalRun).  Set
+        * ps_status and do any special start-of-SQL-command processing
+        * needed by the destination.
         */
        commandTag = CreateCommandTag(parsetree);
 
@@ -817,8 +819,8 @@ exec_simple_query(const char *query_string)
        CHECK_FOR_INTERRUPTS();
 
        /*
-        * Create unnamed portal to run the query or queries in.
-        * If there already is one, silently drop it.
+        * Create unnamed portal to run the query or queries in. If there
+        * already is one, silently drop it.
         */
        portal = CreatePortal("", true, true);
 
@@ -836,9 +838,9 @@ exec_simple_query(const char *query_string)
 
        /*
         * Select the appropriate output format: text unless we are doing
-        * a FETCH from a binary cursor.  (Pretty grotty to have to do this
-        * here --- but it avoids grottiness in other places.  Ah, the joys
-        * of backward compatibility...)
+        * a FETCH from a binary cursor.  (Pretty grotty to have to do
+        * this here --- but it avoids grottiness in other places.  Ah,
+        * the joys of backward compatibility...)
         */
        format = 0;             /* TEXT is default */
        if (IsA(parsetree, FetchStmt))
@@ -851,7 +853,7 @@ exec_simple_query(const char *query_string)
 
                if (PortalIsValid(fportal) &&
                    (fportal->cursorOptions & CURSOR_OPT_BINARY))
-                   format = 1;     /* BINARY */
+                   format = 1; /* BINARY */
            }
        }
        PortalSetResultFormat(portal, 1, &format);
@@ -867,7 +869,8 @@ exec_simple_query(const char *query_string)
        MemoryContextSwitchTo(oldcontext);
 
        /*
-        * Run the portal to completion, and then drop it (and the receiver).
+        * Run the portal to completion, and then drop it (and the
+        * receiver).
         */
        (void) PortalRun(portal,
                         FETCH_ALL,
@@ -882,30 +885,32 @@ exec_simple_query(const char *query_string)
        if (IsA(parsetree, TransactionStmt))
        {
            /*
-            * If this was a transaction control statement, commit it.
-            * We will start a new xact command for the next command (if any).
+            * If this was a transaction control statement, commit it. We
+            * will start a new xact command for the next command (if
+            * any).
             */
            finish_xact_command();
        }
        else if (lnext(parsetree_item) == NIL)
        {
            /*
-            * If this is the last parsetree of the query string, close down
-            * transaction statement before reporting command-complete.  This
-            * is so that any end-of-transaction errors are reported before
-            * the command-complete message is issued, to avoid confusing
-            * clients who will expect either a command-complete message or an
-            * error, not one and then the other.  But for compatibility with
-            * historical Postgres behavior, we do not force a transaction
-            * boundary between queries appearing in a single query string.
+            * If this is the last parsetree of the query string, close
+            * down transaction statement before reporting
+            * command-complete.  This is so that any end-of-transaction
+            * errors are reported before the command-complete message is
+            * issued, to avoid confusing clients who will expect either a
+            * command-complete message or an error, not one and then the
+            * other.  But for compatibility with historical Postgres
+            * behavior, we do not force a transaction boundary between
+            * queries appearing in a single query string.
             */
            finish_xact_command();
        }
        else
        {
            /*
-            * We need a CommandCounterIncrement after every query,
-            * except those that start or end a transaction block.
+            * We need a CommandCounterIncrement after every query, except
+            * those that start or end a transaction block.
             */
            CommandCounterIncrement();
        }
@@ -934,12 +939,13 @@ exec_simple_query(const char *query_string)
    QueryContext = NULL;
 
    /*
-    * Combine processing here as we need to calculate the query
-    * duration in both instances.
+    * Combine processing here as we need to calculate the query duration
+    * in both instances.
     */
    if (save_log_duration || save_log_min_duration_statement > 0)
    {
-       long usecs;
+       long        usecs;
+
        gettimeofday(&stop_t, NULL);
        if (stop_t.tv_usec < start_t.tv_usec)
        {
@@ -948,9 +954,9 @@ exec_simple_query(const char *query_string)
        }
        usecs = (long) (stop_t.tv_sec - start_t.tv_sec) * 1000000 + (long) (stop_t.tv_usec - start_t.tv_usec);
 
-       /* 
-        * Output a duration_query to the log if the query has exceeded the
-        * min duration.
+       /*
+        * Output a duration_query to the log if the query has exceeded
+        * the min duration.
         */
        if (usecs >= save_log_min_duration_statement * 1000)
            ereport(LOG,
@@ -959,7 +965,7 @@ exec_simple_query(const char *query_string)
                            (long) (stop_t.tv_usec - start_t.tv_usec),
                            query_string)));
 
-       /* 
+       /*
         * If the user is requesting logging of all durations, then log
         * that as well.
         */
@@ -984,8 +990,8 @@ exec_simple_query(const char *query_string)
 static void
 exec_parse_message(const char *query_string,   /* string to execute */
                   const char *stmt_name,       /* name for prepared stmt */
-                  Oid *paramTypes,             /* parameter types */
-                  int numParams)               /* number of parameters */
+                  Oid *paramTypes,     /* parameter types */
+                  int numParams)       /* number of parameters */
 {
    MemoryContext oldcontext;
    List       *parsetree_list;
@@ -1018,16 +1024,16 @@ exec_parse_message(const char *query_string,    /* string to execute */
    /*
     * Switch to appropriate context for constructing parsetrees.
     *
-    * We have two strategies depending on whether the prepared statement
-    * is named or not.  For a named prepared statement, we do parsing
-    * in MessageContext and copy the finished trees into the prepared
-    * statement's private context; then the reset of MessageContext releases
-    * temporary space used by parsing and planning.  For an unnamed prepared
-    * statement, we assume the statement isn't going to hang around long,
-    * so getting rid of temp space quickly is probably not worth the costs
-    * of copying parse/plan trees.  So in this case, we set up a special
-    * context for the unnamed statement, and do all the parsing/planning
-    * therein.
+    * We have two strategies depending on whether the prepared statement is
+    * named or not.  For a named prepared statement, we do parsing in
+    * MessageContext and copy the finished trees into the prepared
+    * statement's private context; then the reset of MessageContext
+    * releases temporary space used by parsing and planning.  For an
+    * unnamed prepared statement, we assume the statement isn't going to
+    * hang around long, so getting rid of temp space quickly is probably
+    * not worth the costs of copying parse/plan trees.  So in this case,
+    * we set up a special context for the unnamed statement, and do all
+    * the parsing/planning therein.
     */
    is_named = (stmt_name[0] != '\0');
    if (is_named)
@@ -1064,9 +1070,9 @@ exec_parse_message(const char *query_string,  /* string to execute */
    parsetree_list = pg_parse_query(query_string);
 
    /*
-    * We only allow a single user statement in a prepared statement.
-    * This is mainly to keep the protocol simple --- otherwise we'd need
-    * to worry about multiple result tupdescs and things like that.
+    * We only allow a single user statement in a prepared statement. This
+    * is mainly to keep the protocol simple --- otherwise we'd need to
+    * worry about multiple result tupdescs and things like that.
     */
    if (length(parsetree_list) > 1)
        ereport(ERROR,
@@ -1075,8 +1081,8 @@ exec_parse_message(const char *query_string,  /* string to execute */
 
    if (parsetree_list != NIL)
    {
-       Node   *parsetree = (Node *) lfirst(parsetree_list);
-       int     i;
+       Node       *parsetree = (Node *) lfirst(parsetree_list);
+       int         i;
 
        /*
         * Get the command name for possible use in status display.
@@ -1085,10 +1091,10 @@ exec_parse_message(const char *query_string,    /* string to execute */
 
        /*
         * If we are in an aborted transaction, reject all commands except
-        * COMMIT/ROLLBACK.  It is important that this test occur before we
-        * try to do parse analysis, rewrite, or planning, since all those
-        * phases try to do database accesses, which may fail in abort
-        * state. (It might be safe to allow some additional utility
+        * COMMIT/ROLLBACK.  It is important that this test occur before
+        * we try to do parse analysis, rewrite, or planning, since all
+        * those phases try to do database accesses, which may fail in
+        * abort state. (It might be safe to allow some additional utility
         * commands in this state, but not many...)
         */
        if (IsAbortedTransactionBlockState())
@@ -1130,13 +1136,13 @@ exec_parse_message(const char *query_string,    /* string to execute */
        param_list = NIL;
        for (i = 0; i < numParams; i++)
        {
-           Oid     ptype = paramTypes[i];
+           Oid         ptype = paramTypes[i];
 
            if (ptype == InvalidOid || ptype == UNKNOWNOID)
                ereport(ERROR,
                        (errcode(ERRCODE_INDETERMINATE_DATATYPE),
-                        errmsg("could not determine datatype of parameter $%d",
-                               i + 1)));
+                 errmsg("could not determine datatype of parameter $%d",
+                        i + 1)));
            param_list = lappendo(param_list, ptype);
        }
 
@@ -1149,7 +1155,7 @@ exec_parse_message(const char *query_string,  /* string to execute */
    }
    else
    {
-       /* Empty input string.  This is legal. */
+       /* Empty input string.  This is legal. */
        commandTag = NULL;
        querytree_list = NIL;
        plantree_list = NIL;
@@ -1193,9 +1199,10 @@ exec_parse_message(const char *query_string, /* string to execute */
    QueryContext = NULL;
 
    /*
-    * We do NOT close the open transaction command here; that only happens
-    * when the client sends Sync.  Instead, do CommandCounterIncrement just
-    * in case something happened during parse/plan.
+    * We do NOT close the open transaction command here; that only
+    * happens when the client sends Sync.  Instead, do
+    * CommandCounterIncrement just in case something happened during
+    * parse/plan.
     */
    CommandCounterIncrement();
 
@@ -1236,9 +1243,9 @@ exec_bind_message(StringInfo input_message)
    set_ps_display("BIND");
 
    /*
-    * Start up a transaction command so we can call functions etc.
-    * (Note that this will normally change current memory context.)
-    * Nothing happens if we are already in one.
+    * Start up a transaction command so we can call functions etc. (Note
+    * that this will normally change current memory context.) Nothing
+    * happens if we are already in one.
     */
    start_xact_command();
 
@@ -1264,8 +1271,8 @@ exec_bind_message(StringInfo input_message)
    if (numPFormats > 1 && numPFormats != numParams)
        ereport(ERROR,
                (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                errmsg("bind message has %d parameter formats but %d parameters",
-                       numPFormats, numParams)));
+       errmsg("bind message has %d parameter formats but %d parameters",
+              numPFormats, numParams)));
 
    /* Find prepared statement */
    if (stmt_name[0] != '\0')
@@ -1277,14 +1284,14 @@ exec_bind_message(StringInfo input_message)
        if (!pstmt)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_PSTATEMENT),
-                    errmsg("unnamed prepared statement does not exist")));
+                  errmsg("unnamed prepared statement does not exist")));
    }
 
    if (numParams != length(pstmt->argtype_list))
        ereport(ERROR,
                (errcode(ERRCODE_PROTOCOL_VIOLATION),
                 errmsg("bind message supplies %d parameters, but prepared statement \"%s\" requires %d",
-                       numParams, stmt_name, length(pstmt->argtype_list))));
+                   numParams, stmt_name, length(pstmt->argtype_list))));
 
    /*
     * Create the portal.  Allow silent replacement of an existing portal
@@ -1305,13 +1312,14 @@ exec_bind_message(StringInfo input_message)
    /*
     * Fetch parameters, if any, and store in the portal's memory context.
     *
-    * In an aborted transaction, we can't risk calling user-defined functions,
-    * but we can't fail to Bind either, so bind all parameters to null values.
+    * In an aborted transaction, we can't risk calling user-defined
+    * functions, but we can't fail to Bind either, so bind all parameters
+    * to null values.
     */
    if (numParams > 0)
    {
-       bool    isaborted = IsAbortedTransactionBlockState();
-       List   *l;
+       bool        isaborted = IsAbortedTransactionBlockState();
+       List       *l;
        MemoryContext oldContext;
 
        oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
@@ -1340,25 +1348,25 @@ exec_bind_message(StringInfo input_message)
                }
                else
                {
-                   int16   pformat;
+                   int16       pformat;
                    StringInfoData pbuf;
-                   char    csave;
+                   char        csave;
 
                    if (numPFormats > 1)
                        pformat = pformats[i];
                    else if (numPFormats > 0)
                        pformat = pformats[0];
                    else
-                       pformat = 0;        /* default = text */
+                       pformat = 0;    /* default = text */
 
                    /*
-                    * Rather than copying data around, we just set up a phony
-                    * StringInfo pointing to the correct portion of the
-                    * message buffer.  We assume we can scribble on the
-                    * message buffer so as to maintain the convention that
-                    * StringInfos have a trailing null.  This is grotty but
-                    * is a big win when dealing with very large parameter
-                    * strings.
+                    * Rather than copying data around, we just set up a
+                    * phony StringInfo pointing to the correct portion of
+                    * the message buffer.  We assume we can scribble on
+                    * the message buffer so as to maintain the convention
+                    * that StringInfos have a trailing null.  This is
+                    * grotty but is a big win when dealing with very
+                    * large parameter strings.
                     */
                    pbuf.data = (char *) pvalue;
                    pbuf.maxlen = plength + 1;
@@ -1375,9 +1383,10 @@ exec_bind_message(StringInfo input_message)
                        char       *pstring;
 
                        getTypeInputInfo(ptype, &typInput, &typElem);
+
                        /*
-                        * We have to do encoding conversion before calling
-                        * the typinput routine.
+                        * We have to do encoding conversion before
+                        * calling the typinput routine.
                         */
                        pstring = (char *)
                            pg_client_to_server((unsigned char *) pbuf.data,
@@ -1396,7 +1405,10 @@ exec_bind_message(StringInfo input_message)
                        Oid         typReceive;
                        Oid         typElem;
 
-                       /* Call the parameter type's binary input converter */
+                       /*
+                        * Call the parameter type's binary input
+                        * converter
+                        */
                        getTypeBinaryInputInfo(ptype, &typReceive, &typElem);
 
                        params[i].value =
@@ -1409,7 +1421,7 @@ exec_bind_message(StringInfo input_message)
                            ereport(ERROR,
                                    (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
                                     errmsg("incorrect binary data format in bind parameter %d",
-                                i + 1)));
+                                           i + 1)));
                    }
                    else
                    {
@@ -1474,7 +1486,7 @@ exec_bind_message(StringInfo input_message)
 static void
 exec_execute_message(const char *portal_name, long max_rows)
 {
-   CommandDest dest;
+   CommandDest dest;
    DestReceiver *receiver;
    Portal      portal;
    bool        is_trans_stmt = false;
@@ -1494,7 +1506,8 @@ exec_execute_message(const char *portal_name, long max_rows)
                 errmsg("portal \"%s\" does not exist", portal_name)));
 
    /*
-    * If the original query was a null string, just return EmptyQueryResponse.
+    * If the original query was a null string, just return
+    * EmptyQueryResponse.
     */
    if (portal->commandTag == NULL)
    {
@@ -1521,7 +1534,7 @@ exec_execute_message(const char *portal_name, long max_rows)
    /* Check for transaction-control commands */
    if (length(portal->parseTrees) == 1)
    {
-       Query *query = (Query *) lfirst(portal->parseTrees);
+       Query      *query = (Query *) lfirst(portal->parseTrees);
 
        if (query->commandType == CMD_UTILITY &&
            query->utilityStmt != NULL &&
@@ -1537,14 +1550,15 @@ exec_execute_message(const char *portal_name, long max_rows)
    }
 
    /*
-    * Create dest receiver in MessageContext (we don't want it in transaction
-    * context, because that may get deleted if portal contains VACUUM).
+    * Create dest receiver in MessageContext (we don't want it in
+    * transaction context, because that may get deleted if portal
+    * contains VACUUM).
     */
    receiver = CreateDestReceiver(dest, portal);
 
    /*
-    * Ensure we are in a transaction command (this should normally be
-    * the case already due to prior BIND).
+    * Ensure we are in a transaction command (this should normally be the
+    * case already due to prior BIND).
     */
    start_xact_command();
 
@@ -1558,7 +1572,7 @@ exec_execute_message(const char *portal_name, long max_rows)
            ereport(ERROR,
                    (errcode(ERRCODE_IN_FAILED_SQL_TRANSACTION),
                     errmsg("current transaction is aborted, "
-                "queries ignored until end of transaction block")));
+                    "queries ignored until end of transaction block")));
    }
 
    /* Check for cancel signal before we start execution */
@@ -1583,16 +1597,17 @@ exec_execute_message(const char *portal_name, long max_rows)
        if (is_trans_stmt)
        {
            /*
-            * If this was a transaction control statement, commit it.  We will
-            * start a new xact command for the next command (if any).
+            * If this was a transaction control statement, commit it.  We
+            * will start a new xact command for the next command (if
+            * any).
             */
            finish_xact_command();
        }
        else
        {
            /*
-            * We need a CommandCounterIncrement after every query,
-            * except those that start or end a transaction block.
+            * We need a CommandCounterIncrement after every query, except
+            * those that start or end a transaction block.
             */
            CommandCounterIncrement();
        }
@@ -1633,7 +1648,7 @@ exec_describe_statement_message(const char *stmt_name)
        if (!pstmt)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_PSTATEMENT),
-                    errmsg("unnamed prepared statement does not exist")));
+                  errmsg("unnamed prepared statement does not exist")));
    }
 
    if (whereToSendOutput != Remote)
@@ -1642,7 +1657,7 @@ exec_describe_statement_message(const char *stmt_name)
    /*
     * First describe the parameters...
     */
-   pq_beginmessage(&buf, 't');     /* parameter description message type */
+   pq_beginmessage(&buf, 't'); /* parameter description message type */
    pq_sendint(&buf, length(pstmt->argtype_list), 2);
 
    foreach(l, pstmt->argtype_list)
@@ -1659,7 +1674,7 @@ exec_describe_statement_message(const char *stmt_name)
    tupdesc = FetchPreparedStatementResultDesc(pstmt);
    if (tupdesc)
    {
-       List   *targetlist;
+       List       *targetlist;
 
        if (ChoosePortalStrategy(pstmt->query_list) == PORTAL_ONE_SELECT)
            targetlist = ((Query *) lfirst(pstmt->query_list))->targetList;
@@ -1693,7 +1708,7 @@ exec_describe_portal_message(const char *portal_name)
 
    if (portal->tupDesc)
    {
-       List   *targetlist;
+       List       *targetlist;
 
        if (portal->strategy == PORTAL_ONE_SELECT)
            targetlist = ((Query *) lfirst(portal->parseTrees))->targetList;
@@ -1768,19 +1783,21 @@ void
 quickdie(SIGNAL_ARGS)
 {
    PG_SETMASK(&BlockSig);
+
    /*
-    * Ideally this should be ereport(FATAL), but then we'd not get control
-    * back (perhaps could fix by doing local sigsetjmp?)
+    * Ideally this should be ereport(FATAL), but then we'd not get
+    * control back (perhaps could fix by doing local sigsetjmp?)
     */
    ereport(WARNING,
            (errcode(ERRCODE_CRASH_SHUTDOWN),
-            errmsg("terminating connection due to crash of another backend"),
-            errdetail("The postmaster has commanded this backend to roll back"
-                      " the current transaction and exit, because another"
-                      " backend exited abnormally and possibly corrupted"
-                      " shared memory."),
+       errmsg("terminating connection due to crash of another backend"),
+      errdetail("The postmaster has commanded this backend to roll back"
+                " the current transaction and exit, because another"
+                " backend exited abnormally and possibly corrupted"
+                " shared memory."),
             errhint("In a moment you should be able to reconnect to the"
                     " database and repeat your query.")));
+
    /*
     * DO NOT proc_exit() -- we're here because shared memory may be
     * corrupted, so we don't want to try to clean up our transaction.
@@ -1894,9 +1911,9 @@ FloatExceptionHandler(SIGNAL_ARGS)
    ereport(ERROR,
            (errcode(ERRCODE_FLOATING_POINT_EXCEPTION),
             errmsg("floating-point exception"),
-            errdetail("An invalid floating-point operation was signaled. "
-                      "This probably means an out-of-range result or an "
-                      "invalid operation, such as division by zero.")));
+          errdetail("An invalid floating-point operation was signaled. "
+                    "This probably means an out-of-range result or an "
+                    "invalid operation, such as division by zero.")));
 }
 
 /* SIGHUP: set flag to re-read config file at next convenient time */
@@ -1929,7 +1946,7 @@ ProcessInterrupts(void)
        DisableNotifyInterrupt();
        ereport(FATAL,
                (errcode(ERRCODE_ADMIN_SHUTDOWN),
-                errmsg("terminating connection due to administrator command")));
+        errmsg("terminating connection due to administrator command")));
    }
    if (QueryCancelPending)
    {
@@ -1999,7 +2016,8 @@ PostgresMain(int argc, char *argv[], const char *username)
    bool        secure;
    int         errs = 0;
    int         debug_flag = 0;
-   GucContext  ctx, debug_context;
+   GucContext  ctx,
+               debug_context;
    GucSource   gucsource;
    char       *tmp;
    int         firstchar;
@@ -2049,7 +2067,7 @@ PostgresMain(int argc, char *argv[], const char *username)
    Noversion = false;
    EchoQuery = false;
 
-   if (!IsUnderPostmaster /* when exec || ExecBackend*/)
+   if (!IsUnderPostmaster /* when exec || ExecBackend */ )
    {
        InitializeGUCOptions();
        potential_DataDir = getenv("PGDATA");
@@ -2114,29 +2132,33 @@ PostgresMain(int argc, char *argv[], const char *username)
            case 'd':           /* debug level */
                {
                    /*
-                    *  Client option can't decrease debug level.
-                    *  We have to do the test here because we group priv and client
-                    *  set GUC calls below, after we know the final debug value.
-                    */                    
+                    * Client option can't decrease debug level. We have
+                    * to do the test here because we group priv and
+                    * client set GUC calls below, after we know the final
+                    * debug value.
+                    */
                    if (ctx != PGC_BACKEND || atoi(optarg) > debug_flag)
                    {
                        debug_flag = atoi(optarg);
-                       debug_context = ctx;    /* save context for use below */
+                       debug_context = ctx;    /* save context for use
+                                                * below */
                        /* Set server debugging level. */
                        if (debug_flag != 0)
                        {
                            char       *debugstr = palloc(strlen("debug") + strlen(optarg) + 1);
-   
+
                            sprintf(debugstr, "debug%s", optarg);
                            SetConfigOption("log_min_messages", debugstr, ctx, gucsource);
                            pfree(debugstr);
-   
+
                        }
                        else
+
                            /*
                             * -d0 allows user to prevent postmaster debug
-                            * from propagating to backend.  It would be nice
-                            * to set it to the postgresql.conf value here.
+                            * from propagating to backend.  It would be
+                            * nice to set it to the postgresql.conf value
+                            * here.
                             */
                            SetConfigOption("log_min_messages", "notice",
                                            ctx, gucsource);
@@ -2245,17 +2267,19 @@ PostgresMain(int argc, char *argv[], const char *username)
                if (secure)
                {
 #ifdef EXEC_BACKEND
-                   char *p;
-                   int i;
-                   int PMcanAcceptConnections; /* will eventually be global or static, when fork */
-                   
+                   char       *p;
+                   int         i;
+                   int         PMcanAcceptConnections; /* will eventually be
+                                                        * global or static,
+                                                        * when fork */
+
                    sscanf(optarg, "%d,%d,%d,%p,", &MyProcPort->sock, &PMcanAcceptConnections,
-                                   &UsedShmemSegID, &UsedShmemSegAddr);
+                          &UsedShmemSegID, &UsedShmemSegAddr);
                    /* Grab dbname as last param */
-                   for (i = 0, p = optarg-1; i < 4 && p; i++)
-                       p = strchr(p+1, ',');
+                   for (i = 0, p = optarg - 1; i < 4 && p; i++)
+                       p = strchr(p + 1, ',');
                    if (i == 4 && p)
-                       dbname = strdup(p+1);
+                       dbname = strdup(p + 1);
 #else
                    dbname = strdup(optarg);
 #endif
@@ -2411,11 +2435,12 @@ PostgresMain(int argc, char *argv[], const char *username)
        SetConfigOption("debug_print_rewritten", "true", debug_context, gucsource);
 
    /*
-    * Process any additional GUC variable settings passed in startup packet.
+    * Process any additional GUC variable settings passed in startup
+    * packet.
     */
    if (MyProcPort != NULL)
    {
-       List   *gucopts = MyProcPort->guc_options;
+       List       *gucopts = MyProcPort->guc_options;
 
        while (gucopts)
        {
@@ -2481,7 +2506,7 @@ PostgresMain(int argc, char *argv[], const char *username)
    pqsignal(SIGINT, StatementCancelHandler);   /* cancel current query */
    pqsignal(SIGTERM, die);     /* cancel current query and exit */
    pqsignal(SIGQUIT, quickdie);    /* hard crash time */
-   pqsignal(SIGALRM, handle_sig_alarm);    /* timeout conditions */
+   pqsignal(SIGALRM, handle_sig_alarm);        /* timeout conditions */
 
    /*
     * Ignore failure to write to frontend. Note: if frontend closes
@@ -2626,7 +2651,7 @@ PostgresMain(int argc, char *argv[], const char *username)
    if (!IsUnderPostmaster)
    {
        puts("\nPOSTGRES backend interactive interface ");
-       puts("$Revision: 1.353 $ $Date: 2003/07/29 00:03:18 $\n");
+       puts("$Revision: 1.354 $ $Date: 2003/08/04 00:43:25 $\n");
    }
 
    /*
@@ -2664,15 +2689,15 @@ PostgresMain(int argc, char *argv[], const char *username)
         *
         * Make sure we're not interrupted while cleaning up.  Also forget
         * any pending QueryCancel request, since we're aborting anyway.
-        * Force InterruptHoldoffCount to a known state in case we ereport'd
-        * from inside a holdoff section.
+        * Force InterruptHoldoffCount to a known state in case we
+        * ereport'd from inside a holdoff section.
         */
        ImmediateInterruptOK = false;
        QueryCancelPending = false;
        InterruptHoldoffCount = 1;
        CritSectionCount = 0;   /* should be unnecessary, but... */
        disable_sig_alarm(true);
-       QueryCancelPending = false; /* again in case timeout occurred */
+       QueryCancelPending = false;     /* again in case timeout occurred */
        DisableNotifyInterrupt();
        debug_query_string = NULL;
 
@@ -2706,8 +2731,8 @@ PostgresMain(int argc, char *argv[], const char *username)
 
        /*
         * If we were handling an extended-query-protocol message,
-        * initiate skip till next Sync.  This also causes us not
-        * to issue ReadyForQuery (until we get Sync).
+        * initiate skip till next Sync.  This also causes us not to issue
+        * ReadyForQuery (until we get Sync).
         */
        if (doing_extended_query_message)
            ignore_till_sync = true;
@@ -2732,8 +2757,8 @@ PostgresMain(int argc, char *argv[], const char *username)
    for (;;)
    {
        /*
-        * At top of loop, reset extended-query-message flag, so that
-        * any errors encountered in "idle" state don't provoke skip.
+        * At top of loop, reset extended-query-message flag, so that any
+        * errors encountered in "idle" state don't provoke skip.
         */
        doing_extended_query_message = false;
 
@@ -2815,7 +2840,8 @@ PostgresMain(int argc, char *argv[], const char *username)
        }
 
        /*
-        * (6) process the command.  But ignore it if we're skipping till Sync.
+        * (6) process the command.  But ignore it if we're skipping till
+        * Sync.
         */
        if (ignore_till_sync && firstchar != EOF)
            continue;
@@ -2847,7 +2873,7 @@ PostgresMain(int argc, char *argv[], const char *username)
                    numParams = pq_getmsgint(input_message, 2);
                    if (numParams > 0)
                    {
-                       int     i;
+                       int         i;
 
                        paramTypes = (Oid *) palloc(numParams * sizeof(Oid));
                        for (i = 0; i < numParams; i++)
@@ -2861,9 +2887,10 @@ PostgresMain(int argc, char *argv[], const char *username)
                break;
 
            case 'B':           /* bind */
+
                /*
-                * this message is complex enough that it seems best to put
-                * the field extraction out-of-line
+                * this message is complex enough that it seems best to
+                * put the field extraction out-of-line
                 */
                exec_bind_message(input_message);
                break;
@@ -2871,7 +2898,7 @@ PostgresMain(int argc, char *argv[], const char *username)
            case 'E':           /* execute */
                {
                    const char *portal_name;
-                   int     max_rows;
+                   int         max_rows;
 
                    portal_name = pq_getmsgstring(input_message);
                    max_rows = pq_getmsgint(input_message, 4);
@@ -2911,9 +2938,9 @@ PostgresMain(int argc, char *argv[], const char *username)
                send_rfq = true;
                break;
 
-           case 'C':               /* close */
+           case 'C':           /* close */
                {
-                   int     close_type;
+                   int         close_type;
                    const char *close_target;
 
                    close_type = pq_getmsgbyte(input_message);
@@ -2949,19 +2976,19 @@ PostgresMain(int argc, char *argv[], const char *username)
                        default:
                            ereport(ERROR,
                                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                                    errmsg("invalid CLOSE message subtype %d",
-                                           close_type)));
+                              errmsg("invalid CLOSE message subtype %d",
+                                     close_type)));
                            break;
                    }
 
                    if (whereToSendOutput == Remote)
-                       pq_putemptymessage('3'); /* CloseComplete */
+                       pq_putemptymessage('3');        /* CloseComplete */
                }
                break;
 
            case 'D':           /* describe */
                {
-                   int     describe_type;
+                   int         describe_type;
                    const char *describe_target;
 
                    describe_type = pq_getmsgbyte(input_message);
@@ -2979,20 +3006,20 @@ PostgresMain(int argc, char *argv[], const char *username)
                        default:
                            ereport(ERROR,
                                    (errcode(ERRCODE_PROTOCOL_VIOLATION),
-                                    errmsg("invalid DESCRIBE message subtype %d",
-                                           describe_type)));
+                           errmsg("invalid DESCRIBE message subtype %d",
+                                  describe_type)));
                            break;
                    }
                }
                break;
 
-           case 'H':               /* flush */
+           case 'H':           /* flush */
                pq_getmsgend(input_message);
                if (whereToSendOutput == Remote)
                    pq_flush();
                break;
 
-           case 'S':               /* sync */
+           case 'S':           /* sync */
                pq_getmsgend(input_message);
                finish_xact_command();
                send_rfq = true;
@@ -3007,8 +3034,8 @@ PostgresMain(int argc, char *argv[], const char *username)
            case EOF:
 
                /*
-                * Reset whereToSendOutput to prevent ereport from attempting
-                * to send any more messages to client.
+                * Reset whereToSendOutput to prevent ereport from
+                * attempting to send any more messages to client.
                 */
                if (whereToSendOutput == Remote)
                    whereToSendOutput = None;
@@ -3022,12 +3049,13 @@ PostgresMain(int argc, char *argv[], const char *username)
                 */
                proc_exit(0);
 
-           case 'd':               /* copy data */
-           case 'c':               /* copy done */
-           case 'f':               /* copy fail */
+           case 'd':           /* copy data */
+           case 'c':           /* copy done */
+           case 'f':           /* copy fail */
+
                /*
-                * Accept but ignore these messages, per protocol spec;
-                * we probably got here because a COPY failed, and the
+                * Accept but ignore these messages, per protocol spec; we
+                * probably got here because a COPY failed, and the
                 * frontend is still sending data.
                 */
                break;
@@ -3119,9 +3147,9 @@ ShowUsage(const char *title)
                     (long) (elapse_t.tv_sec - Save_t.tv_sec),
                     (long) (elapse_t.tv_usec - Save_t.tv_usec),
                     (long) (r.ru_utime.tv_sec - Save_r.ru_utime.tv_sec),
-                    (long) (r.ru_utime.tv_usec - Save_r.ru_utime.tv_usec),
+                  (long) (r.ru_utime.tv_usec - Save_r.ru_utime.tv_usec),
                     (long) (r.ru_stime.tv_sec - Save_r.ru_stime.tv_sec),
-                    (long) (r.ru_stime.tv_usec - Save_r.ru_stime.tv_usec));
+                 (long) (r.ru_stime.tv_usec - Save_r.ru_stime.tv_usec));
    appendStringInfo(&str,
                     "!\t[%ld.%06ld user %ld.%06ld sys total]\n",
                     (long) user.tv_sec,
index 2f6ed0eda1d50bf697ce06daaea0a3ae5ad52617..0626ac5e8f4facbe51c7443c31e0f00ce81a91e1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.68 2003/08/01 17:57:42 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/pquery.c,v 1.69 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 static uint32 RunFromStore(Portal portal, ScanDirection direction, long count,
-                          DestReceiver *dest);
+            DestReceiver *dest);
 static long PortalRunSelect(Portal portal, bool forward, long count,
-                           DestReceiver *dest);
+               DestReceiver *dest);
 static void PortalRunUtility(Portal portal, Query *query,
-                            DestReceiver *dest, char *completionTag);
+                DestReceiver *dest, char *completionTag);
 static void PortalRunMulti(Portal portal,
-                          DestReceiver *dest, DestReceiver *altdest,
-                          char *completionTag);
+              DestReceiver *dest, DestReceiver *altdest,
+              char *completionTag);
 static long DoPortalRunFetch(Portal portal,
-                            FetchDirection fdirection,
-                            long count,
-                            DestReceiver *dest);
+                FetchDirection fdirection,
+                long count,
+                DestReceiver *dest);
 static void DoPortalRewind(Portal portal);
 
 
@@ -56,7 +56,7 @@ CreateQueryDesc(Query *parsetree,
    qd->plantree = plantree;    /* plan */
    qd->dest = dest;            /* output dest */
    qd->params = params;        /* parameter values passed into query */
-   qd->doInstrument = doInstrument; /* instrumentation wanted? */
+   qd->doInstrument = doInstrument;    /* instrumentation wanted? */
 
    /* null these fields until set by ExecutorStart */
    qd->tupDesc = NULL;
@@ -156,7 +156,7 @@ ProcessQuery(Query *parsetree,
                else
                    lastOid = InvalidOid;
                snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
-                        "INSERT %u %u", lastOid, queryDesc->estate->es_processed);
+               "INSERT %u %u", lastOid, queryDesc->estate->es_processed);
                break;
            case CMD_UPDATE:
                snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
@@ -195,14 +195,12 @@ ChoosePortalStrategy(List *parseTrees)
 
    if (length(parseTrees) == 1)
    {
-       Query   *query = (Query *) lfirst(parseTrees);
+       Query      *query = (Query *) lfirst(parseTrees);
 
        if (query->commandType == CMD_SELECT &&
            query->canSetTag &&
            query->into == NULL)
-       {
            strategy = PORTAL_ONE_SELECT;
-       }
        else if (query->commandType == CMD_UTILITY &&
                 query->canSetTag &&
                 query->utilityStmt != NULL)
@@ -233,8 +231,8 @@ PortalStart(Portal portal, ParamListInfo params)
    QueryDesc  *queryDesc;
 
    AssertArg(PortalIsValid(portal));
-   AssertState(portal->queryContext != NULL); /* query defined? */
-   AssertState(!portal->portalReady); /* else extra PortalStart */
+   AssertState(portal->queryContext != NULL);  /* query defined? */
+   AssertState(!portal->portalReady);  /* else extra PortalStart */
 
    oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
 
@@ -252,31 +250,37 @@ PortalStart(Portal portal, ParamListInfo params)
    switch (portal->strategy)
    {
        case PORTAL_ONE_SELECT:
+
            /*
             * Must set query snapshot before starting executor.
             */
            SetQuerySnapshot();
+
            /*
             * Create QueryDesc in portal's context; for the moment, set
             * the destination to None.
             */
            queryDesc = CreateQueryDesc((Query *) lfirst(portal->parseTrees),
-                                       (Plan *) lfirst(portal->planTrees),
+                                     (Plan *) lfirst(portal->planTrees),
                                        None_Receiver,
                                        params,
                                        false);
+
            /*
             * Call ExecStart to prepare the plan for execution
             */
            ExecutorStart(queryDesc, false);
+
            /*
             * This tells PortalCleanup to shut down the executor
             */
            portal->queryDesc = queryDesc;
+
            /*
             * Remember tuple descriptor (computed by ExecutorStart)
             */
            portal->tupDesc = queryDesc->tupDesc;
+
            /*
             * Reset cursor position data to "start of query"
             */
@@ -287,12 +291,14 @@ PortalStart(Portal portal, ParamListInfo params)
            break;
 
        case PORTAL_UTIL_SELECT:
+
            /*
             * We don't set query snapshot here, because PortalRunUtility
             * will take care of it.
             */
            portal->tupDesc =
                UtilityTupleDescriptor(((Query *) lfirst(portal->parseTrees))->utilityStmt);
+
            /*
             * Reset cursor position data to "start of query"
             */
@@ -346,7 +352,8 @@ PortalSetResultFormat(Portal portal, int nFormats, int16 *formats)
                     errmsg("bind message has %d result formats but query has %d columns",
                            nFormats, natts)));
        memcpy(portal->formats, formats, natts * sizeof(int16));
-   } else if (nFormats > 0)
+   }
+   else if (nFormats > 0)
    {
        /* single format specified, use for all columns */
        int16       format1 = formats[0];
@@ -393,7 +400,7 @@ PortalRun(Portal portal, long count,
    MemoryContext oldContext;
 
    AssertArg(PortalIsValid(portal));
-   AssertState(portal->portalReady); /* else no PortalStart */
+   AssertState(portal->portalReady);   /* else no PortalStart */
 
    /* Initialize completion tag to empty string */
    if (completionTag)
@@ -405,7 +412,7 @@ PortalRun(Portal portal, long count,
    if (portal->portalDone)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                errmsg("portal \"%s\" cannot be run anymore", portal->name)));
+          errmsg("portal \"%s\" cannot be run anymore", portal->name)));
    if (portal->portalActive)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
@@ -429,6 +436,7 @@ PortalRun(Portal portal, long count,
            /* we know the query is supposed to set the tag */
            if (completionTag && portal->commandTag)
                strcpy(completionTag, portal->commandTag);
+
            /*
             * Since it's a forward fetch, say DONE iff atEnd is now true.
             */
@@ -436,6 +444,7 @@ PortalRun(Portal portal, long count,
            break;
 
        case PORTAL_UTIL_SELECT:
+
            /*
             * If we have not yet run the utility statement, do so,
             * storing its results in the portal's tuplestore.
@@ -451,16 +460,19 @@ PortalRun(Portal portal, long count,
                (*treceiver->destroy) (treceiver);
                portal->portalUtilReady = true;
            }
+
            /*
             * Now fetch desired portion of results.
             */
            (void) PortalRunSelect(portal, true, count, dest);
+
            /*
             * We know the query is supposed to set the tag; we assume
             * only the default tag is needed.
             */
            if (completionTag && portal->commandTag)
                strcpy(completionTag, portal->commandTag);
+
            /*
             * Since it's a forward fetch, say DONE iff atEnd is now true.
             */
@@ -518,8 +530,8 @@ PortalRunSelect(Portal portal,
    uint32      nprocessed;
 
    /*
-    * NB: queryDesc will be NULL if we are fetching from a held cursor
-    * or a completed utility query; can't use it in that path.
+    * NB: queryDesc will be NULL if we are fetching from a held cursor or
+    * a completed utility query; can't use it in that path.
     */
    queryDesc = PortalGetQueryDesc(portal);
 
@@ -527,7 +539,7 @@ PortalRunSelect(Portal portal,
    Assert(queryDesc || portal->holdStore);
 
    /*
-    * Force the queryDesc destination to the right thing.  This supports
+    * Force the queryDesc destination to the right thing.  This supports
     * MOVE, for example, which will pass in dest = None.  This is okay to
     * change as long as we do it on every fetch.  (The Executor must not
     * assume that dest never changes.)
@@ -567,13 +579,13 @@ PortalRunSelect(Portal portal,
 
        if (direction != NoMovementScanDirection)
        {
-           long    oldPos;
+           long        oldPos;
 
            if (nprocessed > 0)
-               portal->atStart = false;    /* OK to go backward now */
+               portal->atStart = false;        /* OK to go backward now */
            if (count == 0 ||
                (unsigned long) nprocessed < (unsigned long) count)
-               portal->atEnd = true;       /* we retrieved 'em all */
+               portal->atEnd = true;   /* we retrieved 'em all */
            oldPos = portal->portalPos;
            portal->portalPos += nprocessed;
            /* portalPos doesn't advance when we fall off the end */
@@ -610,19 +622,19 @@ PortalRunSelect(Portal portal,
        {
            if (nprocessed > 0 && portal->atEnd)
            {
-               portal->atEnd = false;      /* OK to go forward now */
-               portal->portalPos++;        /* adjust for endpoint case */
+               portal->atEnd = false;  /* OK to go forward now */
+               portal->portalPos++;    /* adjust for endpoint case */
            }
            if (count == 0 ||
                (unsigned long) nprocessed < (unsigned long) count)
            {
-               portal->atStart = true;     /* we retrieved 'em all */
+               portal->atStart = true; /* we retrieved 'em all */
                portal->portalPos = 0;
                portal->posOverflow = false;
            }
            else
            {
-               long    oldPos;
+               long        oldPos;
 
                oldPos = portal->portalPos;
                portal->portalPos -= nprocessed;
@@ -662,13 +674,13 @@ RunFromStore(Portal portal, ScanDirection direction, long count,
    }
    else
    {
-       bool    forward = (direction == ForwardScanDirection);
+       bool        forward = (direction == ForwardScanDirection);
 
        for (;;)
        {
            MemoryContext oldcontext;
-           HeapTuple tup;
-           bool should_free;
+           HeapTuple   tup;
+           bool        should_free;
 
            oldcontext = MemoryContextSwitchTo(portal->holdContext);
 
@@ -686,9 +698,9 @@ RunFromStore(Portal portal, ScanDirection direction, long count,
                pfree(tup);
 
            /*
-            * check our tuple count.. if we've processed the proper number
-            * then quit, else loop again and process more tuples.  Zero
-            * count means no limit.
+            * check our tuple count.. if we've processed the proper
+            * number then quit, else loop again and process more tuples.
+            * Zero count means no limit.
             */
            current_tuple_count++;
            if (count && count == current_tuple_count)
@@ -709,35 +721,34 @@ static void
 PortalRunUtility(Portal portal, Query *query,
                 DestReceiver *dest, char *completionTag)
 {
-   Node   *utilityStmt = query->utilityStmt;
+   Node       *utilityStmt = query->utilityStmt;
 
    elog(DEBUG3, "ProcessUtility");
 
    /*
-    * Set snapshot if utility stmt needs one.  Most reliable
-    * way to do this seems to be to enumerate those that do not
-    * need one; this is a short list.  Transaction control,
-    * LOCK, and SET must *not* set a snapshot since they need
-    * to be executable at the start of a serializable transaction
-    * without freezing a snapshot.  By extension we allow SHOW
-    * not to set a snapshot.  The other stmts listed are just
-    * efficiency hacks.  Beware of listing anything that can
-    * modify the database --- if, say, it has to update an
-    * index with expressions that invoke user-defined functions,
-    * then it had better have a snapshot.
+    * Set snapshot if utility stmt needs one.  Most reliable way to do
+    * this seems to be to enumerate those that do not need one; this is a
+    * short list.  Transaction control, LOCK, and SET must *not* set a
+    * snapshot since they need to be executable at the start of a
+    * serializable transaction without freezing a snapshot.  By extension
+    * we allow SHOW not to set a snapshot.  The other stmts listed are
+    * just efficiency hacks.  Beware of listing anything that can modify
+    * the database --- if, say, it has to update an index with
+    * expressions that invoke user-defined functions, then it had better
+    * have a snapshot.
     */
-   if (! (IsA(utilityStmt, TransactionStmt) ||
-          IsA(utilityStmt, LockStmt) ||
-          IsA(utilityStmt, VariableSetStmt) ||
-          IsA(utilityStmt, VariableShowStmt) ||
-          IsA(utilityStmt, VariableResetStmt) ||
-          IsA(utilityStmt, ConstraintsSetStmt) ||
-          /* efficiency hacks from here down */
-          IsA(utilityStmt, FetchStmt) ||
-          IsA(utilityStmt, ListenStmt) ||
-          IsA(utilityStmt, NotifyStmt) ||
-          IsA(utilityStmt, UnlistenStmt) ||
-          IsA(utilityStmt, CheckPointStmt)))
+   if (!(IsA(utilityStmt, TransactionStmt) ||
+         IsA(utilityStmt, LockStmt) ||
+         IsA(utilityStmt, VariableSetStmt) ||
+         IsA(utilityStmt, VariableShowStmt) ||
+         IsA(utilityStmt, VariableResetStmt) ||
+         IsA(utilityStmt, ConstraintsSetStmt) ||
+   /* efficiency hacks from here down */
+         IsA(utilityStmt, FetchStmt) ||
+         IsA(utilityStmt, ListenStmt) ||
+         IsA(utilityStmt, NotifyStmt) ||
+         IsA(utilityStmt, UnlistenStmt) ||
+         IsA(utilityStmt, CheckPointStmt)))
        SetQuerySnapshot();
 
    if (query->canSetTag)
@@ -745,7 +756,7 @@ PortalRunUtility(Portal portal, Query *query,
        /* utility statement can override default tag string */
        ProcessUtility(utilityStmt, dest, completionTag);
        if (completionTag && completionTag[0] == '\0' && portal->commandTag)
-           strcpy(completionTag, portal->commandTag); /* use the default */
+           strcpy(completionTag, portal->commandTag);  /* use the default */
    }
    else
    {
@@ -770,14 +781,14 @@ PortalRunMulti(Portal portal,
    List       *querylist_item;
 
    /*
-    * If the destination is RemoteExecute, change to None.  The reason
-    * is that the client won't be expecting any tuples, and indeed has no
+    * If the destination is RemoteExecute, change to None.  The reason is
+    * that the client won't be expecting any tuples, and indeed has no
     * way to know what they are, since there is no provision for Describe
-    * to send a RowDescription message when this portal execution strategy
-    * is in effect.  This presently will only affect SELECT commands added
-    * to non-SELECT queries by rewrite rules: such commands will be executed,
-    * but the results will be discarded unless you use "simple Query"
-    * protocol.
+    * to send a RowDescription message when this portal execution
+    * strategy is in effect.  This presently will only affect SELECT
+    * commands added to non-SELECT queries by rewrite rules: such
+    * commands will be executed, but the results will be discarded unless
+    * you use "simple Query" protocol.
     */
    if (dest->mydest == RemoteExecute)
        dest = None_Receiver;
@@ -785,8 +796,8 @@ PortalRunMulti(Portal portal,
        altdest = None_Receiver;
 
    /*
-    * Loop to handle the individual queries generated from a
-    * single parsetree by analysis and rewrite.
+    * Loop to handle the individual queries generated from a single
+    * parsetree by analysis and rewrite.
     */
    foreach(querylist_item, portal->parseTrees)
    {
@@ -862,12 +873,12 @@ PortalRunMulti(Portal portal,
    }
 
    /*
-    * If a command completion tag was supplied, use it.  Otherwise
-    * use the portal's commandTag as the default completion tag.
+    * If a command completion tag was supplied, use it.  Otherwise use
+    * the portal's commandTag as the default completion tag.
     *
-    * Exception: clients will expect INSERT/UPDATE/DELETE tags to
-    * have counts, so fake something up if necessary.  (This could
-    * happen if the original query was replaced by a DO INSTEAD rule.)
+    * Exception: clients will expect INSERT/UPDATE/DELETE tags to have
+    * counts, so fake something up if necessary.  (This could happen if
+    * the original query was replaced by a DO INSTEAD rule.)
     */
    if (completionTag && completionTag[0] == '\0')
    {
@@ -903,7 +914,7 @@ PortalRunFetch(Portal portal,
    MemoryContext oldContext;
 
    AssertArg(PortalIsValid(portal));
-   AssertState(portal->portalReady); /* else no PortalStart */
+   AssertState(portal->portalReady);   /* else no PortalStart */
 
    /*
     * Check for improper portal use, and mark portal active.
@@ -911,7 +922,7 @@ PortalRunFetch(Portal portal,
    if (portal->portalDone)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                errmsg("portal \"%s\" cannot be run anymore", portal->name)));
+          errmsg("portal \"%s\" cannot be run anymore", portal->name)));
    if (portal->portalActive)
        ereport(ERROR,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
@@ -989,18 +1000,18 @@ DoPortalRunFetch(Portal portal,
            if (count > 0)
            {
                /*
-                * Definition: Rewind to start, advance count-1 rows, return
-                * next row (if any).  In practice, if the goal is less than
-                * halfway back to the start, it's better to scan from where
-                * we are.  In any case, we arrange to fetch the target row
-                * going forwards.
+                * Definition: Rewind to start, advance count-1 rows,
+                * return next row (if any).  In practice, if the goal is
+                * less than halfway back to the start, it's better to
+                * scan from where we are.  In any case, we arrange to
+                * fetch the target row going forwards.
                 */
                if (portal->posOverflow || portal->portalPos == LONG_MAX ||
-                   count-1 <= portal->portalPos / 2)
+                   count - 1 <= portal->portalPos / 2)
                {
                    DoPortalRewind(portal);
                    if (count > 1)
-                       PortalRunSelect(portal, true, count-1,
+                       PortalRunSelect(portal, true, count - 1,
                                        None_Receiver);
                }
                else
@@ -1010,10 +1021,10 @@ DoPortalRunFetch(Portal portal,
                    if (portal->atEnd)
                        pos++;  /* need one extra fetch if off end */
                    if (count <= pos)
-                       PortalRunSelect(portal, false, pos-count+1,
+                       PortalRunSelect(portal, false, pos - count + 1,
                                        None_Receiver);
-                   else if (count > pos+1)
-                       PortalRunSelect(portal, true, count-pos-1,
+                   else if (count > pos + 1)
+                       PortalRunSelect(portal, true, count - pos - 1,
                                        None_Receiver);
                }
                return PortalRunSelect(portal, true, 1L, dest);
@@ -1022,17 +1033,19 @@ DoPortalRunFetch(Portal portal,
            {
                /*
                 * Definition: Advance to end, back up abs(count)-1 rows,
-                * return prior row (if any).  We could optimize this if we
-                * knew in advance where the end was, but typically we won't.
-                * (Is it worth considering case where count > half of size
-                * of query?  We could rewind once we know the size ...)
+                * return prior row (if any).  We could optimize this if
+                * we knew in advance where the end was, but typically we
+                * won't. (Is it worth considering case where count > half
+                * of size of query?  We could rewind once we know the
+                * size ...)
                 */
                PortalRunSelect(portal, true, FETCH_ALL, None_Receiver);
                if (count < -1)
-                   PortalRunSelect(portal, false, -count-1, None_Receiver);
+                   PortalRunSelect(portal, false, -count - 1, None_Receiver);
                return PortalRunSelect(portal, false, 1L, dest);
            }
-           else /* count == 0 */
+           else
+/* count == 0 */
            {
                /* Rewind to start, return zero rows */
                DoPortalRewind(portal);
@@ -1043,10 +1056,11 @@ DoPortalRunFetch(Portal portal,
            if (count > 0)
            {
                /*
-                * Definition: advance count-1 rows, return next row (if any).
+                * Definition: advance count-1 rows, return next row (if
+                * any).
                 */
                if (count > 1)
-                   PortalRunSelect(portal, true, count-1, None_Receiver);
+                   PortalRunSelect(portal, true, count - 1, None_Receiver);
                return PortalRunSelect(portal, true, 1L, dest);
            }
            else if (count < 0)
@@ -1056,10 +1070,11 @@ DoPortalRunFetch(Portal portal,
                 * (if any).
                 */
                if (count < -1)
-                   PortalRunSelect(portal, false, -count-1, None_Receiver);
+                   PortalRunSelect(portal, false, -count - 1, None_Receiver);
                return PortalRunSelect(portal, false, 1L, dest);
            }
-           else /* count == 0 */
+           else
+/* count == 0 */
            {
                /* Same as FETCH FORWARD 0, so fall out of switch */
                fdirection = FETCH_FORWARD;
@@ -1071,8 +1086,8 @@ DoPortalRunFetch(Portal portal,
    }
 
    /*
-    * Get here with fdirection == FETCH_FORWARD or FETCH_BACKWARD,
-    * and count >= 0.
+    * Get here with fdirection == FETCH_FORWARD or FETCH_BACKWARD, and
+    * count >= 0.
     */
    forward = (fdirection == FETCH_FORWARD);
 
@@ -1081,7 +1096,7 @@ DoPortalRunFetch(Portal portal,
     */
    if (count == 0)
    {
-       bool    on_row;
+       bool        on_row;
 
        /* Are we sitting on a row? */
        on_row = (!portal->atStart && !portal->atEnd);
@@ -1094,11 +1109,11 @@ DoPortalRunFetch(Portal portal,
        else
        {
            /*
-            * If we are sitting on a row, back up one so we can re-fetch it.
-            * If we are not sitting on a row, we still have to start up and
-            * shut down the executor so that the destination is initialized
-            * and shut down correctly; so keep going.  To PortalRunSelect,
-            * count == 0 means we will retrieve no row.
+            * If we are sitting on a row, back up one so we can re-fetch
+            * it. If we are not sitting on a row, we still have to start
+            * up and shut down the executor so that the destination is
+            * initialized and shut down correctly; so keep going.  To
+            * PortalRunSelect, count == 0 means we will retrieve no row.
             */
            if (on_row)
            {
@@ -1115,7 +1130,7 @@ DoPortalRunFetch(Portal portal,
     */
    if (!forward && count == FETCH_ALL && dest->mydest == None)
    {
-       long    result = portal->portalPos;
+       long        result = portal->portalPos;
 
        if (result > 0 && !portal->atEnd)
            result--;
@@ -1142,9 +1157,7 @@ DoPortalRewind(Portal portal)
        MemoryContextSwitchTo(oldcontext);
    }
    if (PortalGetQueryDesc(portal))
-   {
        ExecutorRewind(PortalGetQueryDesc(portal));
-   }
 
    portal->atStart = true;
    portal->atEnd = false;
index ec9e7a4cecbc6fc02e7e4b6863a75239fd589b7f..f0206bd14f72d3311c6b6963958b570312c70c22 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.203 2003/08/01 00:15:23 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.204 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -70,32 +70,32 @@ struct msgstrings
 };
 
 static const struct msgstrings msgstringarray[] = {
-   { RELKIND_RELATION,
-     ERRCODE_UNDEFINED_TABLE,
-     gettext_noop("table \"%s\" does not exist"),
-     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("\"%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("\"%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("\"%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("\"%s\" is not a type"),
-     gettext_noop("Use DROP TYPE to remove a type.") },
-   { '\0', 0, NULL, NULL, NULL }
+   {RELKIND_RELATION,
+       ERRCODE_UNDEFINED_TABLE,
+       gettext_noop("table \"%s\" does not exist"),
+       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("\"%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("\"%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("\"%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("\"%s\" is not a type"),
+   gettext_noop("Use DROP TYPE to remove a type.")},
+   {'\0', 0, NULL, NULL, NULL}
 };
 
 
@@ -181,7 +181,7 @@ CheckRelationOwnership(RangeVar *rel, bool noCatalogs)
    tuple = SearchSysCache(RELOID,
                           ObjectIdGetDatum(relOid),
                           0, 0, 0);
-   if (!HeapTupleIsValid(tuple)) /* should not happen */
+   if (!HeapTupleIsValid(tuple))       /* should not happen */
        elog(ERROR, "cache lookup failed for relation %u", relOid);
 
    if (!pg_class_ownercheck(relOid, GetUserId()))
@@ -194,8 +194,8 @@ CheckRelationOwnership(RangeVar *rel, bool noCatalogs)
            IsSystemClass((Form_pg_class) GETSTRUCT(tuple)))
            ereport(ERROR,
                    (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                    errmsg("permission denied: \"%s\" is a system catalog",
-                           rel->relname)));
+                 errmsg("permission denied: \"%s\" is a system catalog",
+                        rel->relname)));
    }
 
    ReleaseSysCache(tuple);
@@ -316,18 +316,18 @@ ProcessUtility(Node *parsetree,
 
                            if (stmt->options)
                            {
-                               List *head;
+                               List       *head;
 
                                foreach(head, stmt->options)
                                {
-                                   DefElem *item = (DefElem *) lfirst(head);
+                                   DefElem    *item = (DefElem *) lfirst(head);
 
-                                   if (strcmp(item->defname, "transaction_isolation")==0)
+                                   if (strcmp(item->defname, "transaction_isolation") == 0)
                                        SetPGVariable("transaction_isolation",
-                                                     makeList1(item->arg), false);
-                                   else if (strcmp(item->defname, "transaction_read_only")==0)
+                                           makeList1(item->arg), false);
+                                   else if (strcmp(item->defname, "transaction_read_only") == 0)
                                        SetPGVariable("transaction_read_only",
-                                                     makeList1(item->arg), false);
+                                           makeList1(item->arg), false);
                                }
                            }
                        }
@@ -429,7 +429,11 @@ ProcessUtility(Node *parsetree,
                            break;
 
                        case OBJECT_DOMAIN:
-                           /* RemoveDomain does its own permissions checks */
+
+                           /*
+                            * RemoveDomain does its own permissions
+                            * checks
+                            */
                            RemoveDomain(names, stmt->behavior);
                            break;
 
@@ -438,7 +442,11 @@ ProcessUtility(Node *parsetree,
                            break;
 
                        case OBJECT_SCHEMA:
-                           /* RemoveSchema does its own permissions checks */
+
+                           /*
+                            * RemoveSchema does its own permissions
+                            * checks
+                            */
                            RemoveSchema(names, stmt->behavior);
                            break;
 
@@ -590,8 +598,8 @@ ProcessUtility(Node *parsetree,
                        /* check that we are the superuser */
                        if (!superuser())
                            ereport(ERROR,
-                                   (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                    errmsg("must be superuser to alter owner")));
+                               (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+                           errmsg("must be superuser to alter owner")));
                        /* get_usesysid raises an error if no such user */
                        AlterTableOwner(relid,
                                        get_usesysid(stmt->name));
@@ -599,9 +607,9 @@ ProcessUtility(Node *parsetree,
                    case 'L':   /* CLUSTER ON */
                        AlterTableClusterOn(relid, stmt->name);
                        break;
-                   case 'o': /* ADD OIDS */
+                   case 'o':   /* ADD OIDS */
                        AlterTableAlterOids(relid,
-                        interpretInhOption(stmt->relation->inhOpt),
+                             interpretInhOption(stmt->relation->inhOpt),
                                            false);
                        break;
                    default:    /* oops */
@@ -652,8 +660,8 @@ ProcessUtility(Node *parsetree,
                        /* check that we are the superuser */
                        if (!superuser())
                            ereport(ERROR,
-                                   (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                    errmsg("must be superuser to alter owner")));
+                               (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+                           errmsg("must be superuser to alter owner")));
                        /* get_usesysid raises an error if no such user */
                        AlterTypeOwner(stmt->typename,
                                       get_usesysid(stmt->name));
@@ -828,40 +836,39 @@ ProcessUtility(Node *parsetree,
                VariableSetStmt *n = (VariableSetStmt *) parsetree;
 
                /*
-                * Special cases for special SQL syntax that
-                * effectively sets more than one variable per
-                * statement.
+                * Special cases for special SQL syntax that effectively
+                * sets more than one variable per statement.
                 */
-               if (strcmp(n->name, "TRANSACTION")==0)
+               if (strcmp(n->name, "TRANSACTION") == 0)
                {
-                   List *head;
+                   List       *head;
 
                    foreach(head, n->args)
                    {
-                       DefElem *item = (DefElem *) lfirst(head);
+                       DefElem    *item = (DefElem *) lfirst(head);
 
-                       if (strcmp(item->defname, "transaction_isolation")==0)
+                       if (strcmp(item->defname, "transaction_isolation") == 0)
                            SetPGVariable("transaction_isolation",
-                                         makeList1(item->arg), n->is_local);
-                       else if (strcmp(item->defname, "transaction_read_only")==0)
+                                     makeList1(item->arg), n->is_local);
+                       else if (strcmp(item->defname, "transaction_read_only") == 0)
                            SetPGVariable("transaction_read_only",
-                                         makeList1(item->arg), n->is_local);
+                                     makeList1(item->arg), n->is_local);
                    }
                }
-               else if (strcmp(n->name, "SESSION CHARACTERISTICS")==0)
+               else if (strcmp(n->name, "SESSION CHARACTERISTICS") == 0)
                {
-                   List *head;
+                   List       *head;
 
                    foreach(head, n->args)
                    {
-                       DefElem *item = (DefElem *) lfirst(head);
+                       DefElem    *item = (DefElem *) lfirst(head);
 
-                       if (strcmp(item->defname, "transaction_isolation")==0)
+                       if (strcmp(item->defname, "transaction_isolation") == 0)
                            SetPGVariable("default_transaction_isolation",
-                                         makeList1(item->arg), n->is_local);
-                       else if (strcmp(item->defname, "transaction_read_only")==0)
+                                     makeList1(item->arg), n->is_local);
+                       else if (strcmp(item->defname, "transaction_read_only") == 0)
                            SetPGVariable("default_transaction_read_only",
-                                         makeList1(item->arg), n->is_local);
+                                     makeList1(item->arg), n->is_local);
                    }
                }
                else
@@ -1046,14 +1053,14 @@ UtilityReturnsTuples(Node *parsetree)
    {
        case T_FetchStmt:
            {
-               FetchStmt *stmt = (FetchStmt *) parsetree;
-               Portal  portal;
+               FetchStmt  *stmt = (FetchStmt *) parsetree;
+               Portal      portal;
 
                if (stmt->ismove)
                    return false;
                portal = GetPortalByName(stmt->portalname);
                if (!PortalIsValid(portal))
-                   return false; /* not our business to raise error */
+                   return false;       /* not our business to raise error */
                return portal->tupDesc ? true : false;
            }
 
@@ -1066,7 +1073,7 @@ UtilityReturnsTuples(Node *parsetree)
                    return false;
                entry = FetchPreparedStatement(stmt->name, false);
                if (!entry)
-                   return false; /* not our business to raise error */
+                   return false;       /* not our business to raise error */
                switch (ChoosePortalStrategy(entry->query_list))
                {
                    case PORTAL_ONE_SELECT:
@@ -1106,14 +1113,14 @@ UtilityTupleDescriptor(Node *parsetree)
    {
        case T_FetchStmt:
            {
-               FetchStmt *stmt = (FetchStmt *) parsetree;
-               Portal  portal;
+               FetchStmt  *stmt = (FetchStmt *) parsetree;
+               Portal      portal;
 
                if (stmt->ismove)
                    return NULL;
                portal = GetPortalByName(stmt->portalname);
                if (!PortalIsValid(portal))
-                   return NULL; /* not our business to raise error */
+                   return NULL;    /* not our business to raise error */
                return CreateTupleDescCopy(portal->tupDesc);
            }
 
@@ -1126,7 +1133,7 @@ UtilityTupleDescriptor(Node *parsetree)
                    return NULL;
                entry = FetchPreparedStatement(stmt->name, false);
                if (!entry)
-                   return NULL; /* not our business to raise error */
+                   return NULL;    /* not our business to raise error */
                return FetchPreparedStatementResultDesc(entry);
            }
 
index 8c5f64a8ed2c6f8126e99d55789f2f3e0532de95..57a3db1dd2ae0219da3cd07b8a4d766878bdb304 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.92 2003/07/27 04:53:02 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/acl.c,v 1.93 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,7 +36,7 @@ static Acl *allocacl(int n);
 static const char *aclparse(const char *s, AclItem *aip);
 static bool aclitem_match(const AclItem *a1, const AclItem *a2);
 static Acl *recursive_revoke(Acl *acl, AclId grantee,
-                            AclMode revoke_privs, DropBehavior behavior);
+                AclMode revoke_privs, DropBehavior behavior);
 
 static AclMode convert_priv_string(text *priv_type_text);
 
@@ -77,24 +77,22 @@ getid(const char *s, char *n)
    /* This test had better match what putid() does, below */
    for (;
         *s != '\0' &&
-            (isalnum((unsigned char) *s) ||
-             *s == '_' ||
-             *s == '"' ||
-             in_quotes);
+        (isalnum((unsigned char) *s) ||
+         *s == '_' ||
+         *s == '"' ||
+         in_quotes);
         s++)
    {
        if (*s == '"')
-       {
            in_quotes = !in_quotes;
-       }
        else
        {
-           if (len >= NAMEDATALEN-1)
+           if (len >= NAMEDATALEN - 1)
                ereport(ERROR,
                        (errcode(ERRCODE_NAME_TOO_LONG),
                         errmsg("identifier too long"),
-                        errdetail("Identifier must be less than %d characters.",
-                                   NAMEDATALEN)));
+                errdetail("Identifier must be less than %d characters.",
+                          NAMEDATALEN)));
 
            n[len++] = *s;
        }
@@ -107,13 +105,13 @@ getid(const char *s, char *n)
 
 /*
  * Write a user or group Name at *p, surrounding it with double quotes if
- * needed.  There must be at least NAMEDATALEN+2 bytes available at *p.
+ * needed. There must be at least NAMEDATALEN+2 bytes available at *p.
  */
 static void
 putid(char *p, const char *s)
 {
    const char *src;
-   bool    safe = true;
+   bool        safe = true;
 
    for (src = s; *src; src++)
    {
@@ -153,7 +151,9 @@ putid(char *p, const char *s)
 static const char *
 aclparse(const char *s, AclItem *aip)
 {
-   AclMode     privs, goption, read;
+   AclMode     privs,
+               goption,
+               read;
    uint32      idtype;
    char        name[NAMEDATALEN];
    char        name2[NAMEDATALEN];
@@ -174,13 +174,13 @@ aclparse(const char *s, AclItem *aip)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                     errmsg("unrecognized keyword: \"%s\"", name),
-                    errhint("ACL keyword must be \"group\" or \"user\".")));
+                errhint("ACL keyword must be \"group\" or \"user\".")));
        s = getid(s, name);     /* move s to the name beyond the keyword */
        if (name[0] == '\0')
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                     errmsg("missing name"),
-                    errhint("A name must follow the [group|user] keyword.")));
+              errhint("A name must follow the [group|user] keyword.")));
    }
    if (name[0] == '\0')
        idtype = ACL_IDTYPE_WORLD;
@@ -192,7 +192,7 @@ aclparse(const char *s, AclItem *aip)
 
    privs = goption = ACL_NO_RIGHTS;
 
-   for (++s, read=0; isalpha((unsigned char) *s) || *s == '*'; s++)
+   for (++s, read = 0; isalpha((unsigned char) *s) || *s == '*'; s++)
    {
        switch (*s)
        {
@@ -235,8 +235,8 @@ aclparse(const char *s, AclItem *aip)
            default:
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                        errmsg("invalid mode character: must be one of \"%s\"",
-                               ACL_ALL_RIGHTS_STR)));
+                 errmsg("invalid mode character: must be one of \"%s\"",
+                        ACL_ALL_RIGHTS_STR)));
        }
 
        privs |= read;
@@ -255,8 +255,10 @@ aclparse(const char *s, AclItem *aip)
            break;
    }
 
-   /* XXX Allow a degree of backward compatibility by defaulting the
-    * grantor to the superuser. */
+   /*
+    * XXX Allow a degree of backward compatibility by defaulting the
+    * grantor to the superuser.
+    */
    if (*s == '/')
    {
        s = getid(s + 1, name2);
@@ -331,7 +333,7 @@ aclitemin(PG_FUNCTION_ARGS)
    if (*s)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                errmsg("extra garbage at the end of the ACL specification")));
+          errmsg("extra garbage at the end of the ACL specification")));
 
    PG_RETURN_ACLITEM_P(aip);
 }
@@ -356,7 +358,7 @@ aclitemout(PG_FUNCTION_ARGS)
 
    out = palloc(strlen("group =/") +
                 2 * N_ACL_RIGHTS +
-                2 * (NAMEDATALEN+2) +
+                2 * (NAMEDATALEN + 2) +
                 1);
 
    p = out;
@@ -454,8 +456,8 @@ aclitem_match(const AclItem *a1, const AclItem *a2)
 Datum
 aclitem_eq(PG_FUNCTION_ARGS)
 {
-   AclItem    *a1 = PG_GETARG_ACLITEM_P(0);
-   AclItem    *a2 = PG_GETARG_ACLITEM_P(1);
+   AclItem    *a1 = PG_GETARG_ACLITEM_P(0);
+   AclItem    *a2 = PG_GETARG_ACLITEM_P(1);
    bool        result;
 
    result = a1->ai_privs == a2->ai_privs &&
@@ -510,7 +512,7 @@ acldefault(GrantObjectType objtype, AclId ownerid)
    }
 
    acl = allocacl((world_default != ACL_NO_RIGHTS ? 1 : 0)
-                 + (ownerid ? 1 : 0));
+                  + (ownerid ? 1 : 0));
    aip = ACL_DAT(acl);
 
    if (world_default != ACL_NO_RIGHTS)
@@ -522,7 +524,7 @@ acldefault(GrantObjectType objtype, AclId ownerid)
 
    if (ownerid)
    {
-       int index = (world_default != ACL_NO_RIGHTS ? 1: 0);
+       int         index = (world_default != ACL_NO_RIGHTS ? 1 : 0);
 
        aip[index].ai_grantee = ownerid;
        aip[index].ai_grantor = ownerid;
@@ -563,10 +565,10 @@ aclinsert3(const Acl *old_acl, const AclItem *mod_aip, unsigned modechg, DropBeh
    old_aip = ACL_DAT(old_acl);
 
    /*
-    * Search the ACL for an existing entry for this grantee and
-    * grantor.  If one exists, just modify the entry in-place (well,
-    * in the same position, since we actually return a copy);
-    * otherwise, insert the new entry at the end.
+    * Search the ACL for an existing entry for this grantee and grantor.
+    * If one exists, just modify the entry in-place (well, in the same
+    * position, since we actually return a copy); otherwise, insert the
+    * new entry at the end.
     */
 
    for (dst = 0; dst < num; ++dst)
@@ -652,17 +654,17 @@ recursive_revoke(Acl *acl,
                 AclMode revoke_privs,
                 DropBehavior behavior)
 {
-   int i;
+   int         i;
 
 restart:
    for (i = 0; i < ACL_NUM(acl); i++)
    {
-       AclItem *aip = ACL_DAT(acl);
+       AclItem    *aip = ACL_DAT(acl);
 
        if (aip[i].ai_grantor == grantee
            && (ACLITEM_GET_PRIVS(aip[i]) & revoke_privs) != 0)
        {
-           AclItem mod_acl;
+           AclItem     mod_acl;
 
            if (behavior == DROP_RESTRICT)
                ereport(ERROR,
@@ -727,7 +729,7 @@ aclremove(PG_FUNCTION_ARGS)
    for (dst = 0;
         dst < old_num && !aclitem_match(mod_aip, old_aip + dst);
         ++dst)
-       /* continue */ ;
+        /* continue */ ;
 
    if (dst >= old_num)
    {
@@ -797,15 +799,17 @@ makeaclitem(PG_FUNCTION_ARGS)
    int32       grantor = PG_GETARG_INT32(2);
    text       *privtext = PG_GETARG_TEXT_P(3);
    bool        goption = PG_GETARG_BOOL(4);
-   AclItem    *aclitem;
+   AclItem    *aclitem;
    AclMode     priv;
 
    priv = convert_priv_string(privtext);
 
    aclitem = (AclItem *) palloc(sizeof(*aclitem));
+
    if (u_grantee == 0 && g_grantee == 0)
    {
-       aclitem->ai_grantee = 0;
+       aclitem   ->ai_grantee = 0;
+
        ACLITEM_SET_IDTYPE(*aclitem, ACL_IDTYPE_WORLD);
    }
    else if (u_grantee != 0 && g_grantee != 0)
@@ -816,16 +820,19 @@ makeaclitem(PG_FUNCTION_ARGS)
    }
    else if (u_grantee != 0)
    {
-       aclitem->ai_grantee = u_grantee;
+       aclitem   ->ai_grantee = u_grantee;
+
        ACLITEM_SET_IDTYPE(*aclitem, ACL_IDTYPE_UID);
    }
    else if (g_grantee != 0)
    {
-       aclitem->ai_grantee = g_grantee;
+       aclitem   ->ai_grantee = g_grantee;
+
        ACLITEM_SET_IDTYPE(*aclitem, ACL_IDTYPE_GID);
    }
 
-   aclitem->ai_grantor = grantor;
+   aclitem   ->ai_grantor = grantor;
+
    ACLITEM_SET_PRIVS(*aclitem, priv);
    if (goption)
        ACLITEM_SET_GOPTIONS(*aclitem, priv);
@@ -841,7 +848,7 @@ convert_priv_string(text *priv_type_text)
    char       *priv_type;
 
    priv_type = DatumGetCString(DirectFunctionCall1(textout,
-                                                   PointerGetDatum(priv_type_text)));
+                                      PointerGetDatum(priv_type_text)));
 
    if (strcasecmp(priv_type, "SELECT") == 0)
        return ACL_SELECT;
index 7a9e89088a16488e2541fa5bce4eba9291168b32..a32ea871b58a2305e17065ed6b0469fa874bb45e 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.6 2003/07/27 04:53:02 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/array_userfuncs.c,v 1.7 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -81,7 +81,8 @@ array_push(PG_FUNCTION_ARGS)
        if (arg0_elemid != InvalidOid)
        {
            /* append newelem */
-           int ub = dimv[0] + lb[0] - 1;
+           int         ub = dimv[0] + lb[0] - 1;
+
            indx = ub + 1;
        }
        else
@@ -105,7 +106,7 @@ array_push(PG_FUNCTION_ARGS)
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
@@ -138,11 +139,23 @@ array_push(PG_FUNCTION_ARGS)
 Datum
 array_cat(PG_FUNCTION_ARGS)
 {
-   ArrayType  *v1, *v2;
-   int        *dims, *lbs, ndims, ndatabytes, nbytes;
-   int        *dims1, *lbs1, ndims1, ndatabytes1;
-   int        *dims2, *lbs2, ndims2, ndatabytes2;
-   char       *dat1, *dat2;
+   ArrayType  *v1,
+              *v2;
+   int        *dims,
+              *lbs,
+               ndims,
+               ndatabytes,
+               nbytes;
+   int        *dims1,
+              *lbs1,
+               ndims1,
+               ndatabytes1;
+   int        *dims2,
+              *lbs2,
+               ndims2,
+               ndatabytes2;
+   char       *dat1,
+              *dat2;
    Oid         element_type;
    Oid         element_type1;
    Oid         element_type2;
@@ -152,12 +165,10 @@ array_cat(PG_FUNCTION_ARGS)
    v2 = PG_GETARG_ARRAYTYPE_P(1);
 
    /*
-    * We must have one of the following combinations of inputs:
-    * 1) one empty array, and one non-empty array
-    * 2) both arrays empty
-    * 3) two arrays with ndims1 == ndims2
-    * 4) ndims1 == ndims2 - 1
-    * 5) ndims1 == ndims2 + 1
+    * We must have one of the following combinations of inputs: 1) one
+    * empty array, and one non-empty array 2) both arrays empty 3) two
+    * arrays with ndims1 == ndims2 4) ndims1 == ndims2 - 1 5) ndims1 ==
+    * ndims2 + 1
     */
    ndims1 = ARR_NDIM(v1);
    ndims2 = ARR_NDIM(v2);
@@ -180,8 +191,8 @@ array_cat(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                 errmsg("cannot concatenate incompatible arrays"),
                 errdetail("Arrays of %d and %d dimensions are not "
-                           "compatible for concatenation.",
-                           ndims1, ndims2)));
+                          "compatible for concatenation.",
+                          ndims1, ndims2)));
 
    element_type1 = ARR_ELEMTYPE(v1);
    element_type2 = ARR_ELEMTYPE(v2);
@@ -192,7 +203,7 @@ array_cat(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_DATATYPE_MISMATCH),
                 errmsg("cannot concatenate incompatible arrays"),
                 errdetail("Arrays with element types %s and %s are not "
-                           "compatible for concatenation.",
+                          "compatible for concatenation.",
                           format_type_be(element_type1),
                           format_type_be(element_type2))));
 
@@ -215,14 +226,14 @@ array_cat(PG_FUNCTION_ARGS)
         * resulting array has two element outer array made up of input
         * argument arrays
         */
-       int     i;
+       int         i;
 
        ndims = ndims1 + 1;
        dims = (int *) palloc(ndims * sizeof(int));
        lbs = (int *) palloc(ndims * sizeof(int));
 
-       dims[0] = 2;    /* outer array made up of two input arrays */
-       lbs[0] = 1;     /* start lower bound at 1 */
+       dims[0] = 2;            /* outer array made up of two input arrays */
+       lbs[0] = 1;             /* start lower bound at 1 */
 
        for (i = 0; i < ndims1; i++)
        {
@@ -230,8 +241,8 @@ array_cat(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                         errmsg("cannot concatenate incompatible arrays"),
-                        errdetail("Arrays with differing dimensions are not "
-                                   "compatible for concatenation.")));
+                   errdetail("Arrays with differing dimensions are not "
+                             "compatible for concatenation.")));
 
            dims[i + 1] = dims1[i];
            lbs[i + 1] = lbs1[i];
@@ -244,7 +255,7 @@ array_cat(PG_FUNCTION_ARGS)
         * with the first argument appended to the front of the outer
         * dimension
         */
-       int     i;
+       int         i;
 
        ndims = ndims2;
        dims = dims2;
@@ -260,18 +271,18 @@ array_cat(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                         errmsg("cannot concatenate incompatible arrays"),
-                        errdetail("Arrays with differing dimensions are not "
-                                   "compatible for concatenation.")));
+                   errdetail("Arrays with differing dimensions are not "
+                             "compatible for concatenation.")));
        }
    }
-   else /* (ndims1 == ndims2 + 1) */
+   else
+/* (ndims1 == ndims2 + 1) */
    {
        /*
-        * resulting array has the first argument as the outer array,
-        * with the second argument appended to the end of the outer
-        * dimension
+        * resulting array has the first argument as the outer array, with
+        * the second argument appended to the end of the outer dimension
         */
-       int     i;
+       int         i;
 
        ndims = ndims1;
        dims = dims1;
@@ -287,8 +298,8 @@ array_cat(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
                         errmsg("cannot concatenate incompatible arrays"),
-                        errdetail("Arrays with differing dimensions are not "
-                                   "compatible for concatenation.")));
+                   errdetail("Arrays with differing dimensions are not "
+                             "compatible for concatenation.")));
        }
    }
 
@@ -320,13 +331,13 @@ create_singleton_array(FunctionCallInfo fcinfo,
                       Datum element,
                       int ndims)
 {
-   Datum   dvalues[1];
-   int16   typlen;
-   bool    typbyval;
-   char    typalign;
-   int     dims[MAXDIM];
-   int     lbs[MAXDIM];
-   int     i;
+   Datum       dvalues[1];
+   int16       typlen;
+   bool        typbyval;
+   char        typalign;
+   int         dims[MAXDIM];
+   int         lbs[MAXDIM];
+   int         i;
    ArrayMetaState *my_extra;
 
    if (element_type == 0)
@@ -359,7 +370,7 @@ create_singleton_array(FunctionCallInfo fcinfo,
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
index 04e7f0f2515d570ca323be6765824ce4e82f3e8f..128a69f9d39700f9195cac09845f72625741f481 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.94 2003/07/27 04:53:02 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.95 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -79,9 +79,9 @@ static Datum *ReadArrayStr(char *arrayStr, int nitems, int ndim, int *dim,
             int typlen, bool typbyval, char typalign,
             int *nbytes);
 static Datum *ReadArrayBinary(StringInfo buf, int nitems,
-                             FmgrInfo *receiveproc, Oid typelem,
-                             int typlen, bool typbyval, char typalign,
-                             int *nbytes);
+               FmgrInfo *receiveproc, Oid typelem,
+               int typlen, bool typbyval, char typalign,
+               int *nbytes);
 static void CopyArrayEls(char *p, Datum *values, int nitems,
             int typlen, bool typbyval, char typalign,
             bool freedata);
@@ -107,7 +107,7 @@ static void array_insert_slice(int ndim, int *dim, int *lb,
                   char *destPtr,
                   int *st, int *endp, char *srcPtr,
                   int typlen, bool typbyval, char typalign);
-static int array_cmp(FunctionCallInfo fcinfo);
+static int array_cmp(FunctionCallInfo fcinfo);
 
 /*---------------------------------------------------------------------
  * array_in :
@@ -144,21 +144,24 @@ array_in(PG_FUNCTION_ARGS)
 
    /*
     * We arrange to look up info about element type, including its input
-    * conversion proc, only once per series of calls, assuming the element
-    * type doesn't change underneath us.
+    * conversion proc, only once per series of calls, assuming the
+    * element type doesn't change underneath us.
     */
    my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
 
    if (my_extra->element_type != element_type)
    {
-       /* Get info about element type, including its input conversion proc */
+       /*
+        * Get info about element type, including its input conversion
+        * proc
+        */
        get_type_io_data(element_type, IOFunc_input,
                         &my_extra->typlen, &my_extra->typbyval,
                         &my_extra->typalign, &my_extra->typdelim,
@@ -242,7 +245,7 @@ array_in(PG_FUNCTION_ARGS)
        if (ub < lBound[ndim])
            ereport(ERROR,
                    (errcode(ERRCODE_ARRAY_SUBSCRIPT_ERROR),
-                    errmsg("upper bound cannot be less than lower bound")));
+                errmsg("upper bound cannot be less than lower bound")));
 
        dim[ndim] = ub - lBound[ndim] + 1;
        ndim++;
@@ -351,7 +354,7 @@ ArrayCount(char *str, int *dim, char typdelim)
                    /* Signal a premature end of the string */
                    ereport(ERROR,
                            (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                            errmsg("malformed array literal: \"%s\"", str)));
+                       errmsg("malformed array literal: \"%s\"", str)));
                    break;
                case '\\':
                    /* skip the escaped character */
@@ -359,8 +362,8 @@ ArrayCount(char *str, int *dim, char typdelim)
                        ptr++;
                    else
                        ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                errmsg("malformed array literal: \"%s\"", str)));
+                          (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                       errmsg("malformed array literal: \"%s\"", str)));
                    break;
                case '\"':
                    scanning_string = !scanning_string;
@@ -370,9 +373,9 @@ ArrayCount(char *str, int *dim, char typdelim)
                    {
                        if (nest_level >= MAXDIM)
                            ereport(ERROR,
-                                   (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
-                                    errmsg("number of array dimensions exceeds the maximum allowed, %d",
-                                           MAXDIM)));
+                               (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
+                                errmsg("number of array dimensions exceeds the maximum allowed, %d",
+                                       MAXDIM)));
                        temp[nest_level] = 0;
                        nest_level++;
                        if (ndim < nest_level)
@@ -384,8 +387,8 @@ ArrayCount(char *str, int *dim, char typdelim)
                    {
                        if (nest_level == 0)
                            ereport(ERROR,
-                                   (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                    errmsg("malformed array literal: \"%s\"", str)));
+                           (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                            errmsg("malformed array literal: \"%s\"", str)));
                        nest_level--;
                        if (nest_level == 0)
                            eoArray = itemdone = true;
@@ -479,7 +482,7 @@ ReadArrayStr(char *arrayStr,
                    /* Signal a premature end of the string */
                    ereport(ERROR,
                            (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                            errmsg("malformed array literal: \"%s\"", arrayStr)));
+                   errmsg("malformed array literal: \"%s\"", arrayStr)));
                    break;
                case '\\':
                    {
@@ -490,8 +493,8 @@ ReadArrayStr(char *arrayStr,
                            *cptr = *(cptr + 1);
                        if (*ptr == '\0')
                            ereport(ERROR,
-                                   (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                    errmsg("malformed array literal: \"%s\"", arrayStr)));
+                           (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                            errmsg("malformed array literal: \"%s\"", arrayStr)));
                        break;
                    }
                case '\"':
@@ -511,8 +514,8 @@ ReadArrayStr(char *arrayStr,
                    {
                        if (nest_level >= ndim)
                            ereport(ERROR,
-                                   (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                    errmsg("malformed array literal: \"%s\"", arrayStr)));
+                           (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                            errmsg("malformed array literal: \"%s\"", arrayStr)));
                        nest_level++;
                        indx[nest_level - 1] = 0;
                        /* skip leading whitespace */
@@ -526,8 +529,8 @@ ReadArrayStr(char *arrayStr,
                    {
                        if (nest_level == 0)
                            ereport(ERROR,
-                                   (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                                    errmsg("malformed array literal: \"%s\"", arrayStr)));
+                           (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
+                            errmsg("malformed array literal: \"%s\"", arrayStr)));
                        if (i == -1)
                            i = ArrayGetOffset0(ndim, indx, prod);
                        indx[nest_level - 1] = 0;
@@ -565,7 +568,7 @@ ReadArrayStr(char *arrayStr,
        if (i < 0 || i >= nitems)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                    errmsg("malformed array literal: \"%s\"", arrayStr)));
+                  errmsg("malformed array literal: \"%s\"", arrayStr)));
 
        values[i] = FunctionCall3(inputproc,
                                  CStringGetDatum(itemstart),
@@ -693,21 +696,24 @@ array_out(PG_FUNCTION_ARGS)
 
    /*
     * We arrange to look up info about element type, including its output
-    * conversion proc, only once per series of calls, assuming the element
-    * type doesn't change underneath us.
+    * conversion proc, only once per series of calls, assuming the
+    * element type doesn't change underneath us.
     */
    my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
 
    if (my_extra->element_type != element_type)
    {
-       /* Get info about element type, including its output conversion proc */
+       /*
+        * Get info about element type, including its output conversion
+        * proc
+        */
        get_type_io_data(element_type, IOFunc_output,
                         &my_extra->typlen, &my_extra->typbyval,
                         &my_extra->typalign, &my_extra->typdelim,
@@ -922,15 +928,15 @@ array_recv(PG_FUNCTION_ARGS)
    }
 
    /*
-    * We arrange to look up info about element type, including its receive
-    * conversion proc, only once per series of calls, assuming the element
-    * type doesn't change underneath us.
+    * We arrange to look up info about element type, including its
+    * receive conversion proc, only once per series of calls, assuming
+    * the element type doesn't change underneath us.
     */
    my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
@@ -945,8 +951,8 @@ array_recv(PG_FUNCTION_ARGS)
        if (!OidIsValid(my_extra->typiofunc))
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                    errmsg("no binary input function available for type %s",
-                           format_type_be(element_type))));
+                errmsg("no binary input function available for type %s",
+                       format_type_be(element_type))));
        fmgr_info_cxt(my_extra->typiofunc, &my_extra->proc,
                      fcinfo->flinfo->fn_mcxt);
        my_extra->element_type = element_type;
@@ -1004,9 +1010,9 @@ ReadArrayBinary(StringInfo buf,
 
    for (i = 0; i < nitems; i++)
    {
-       int     itemlen;
+       int         itemlen;
        StringInfoData elem_buf;
-       char    csave;
+       char        csave;
 
        /* Get and check the item length */
        itemlen = pq_getmsgint(buf, 4);
@@ -1017,10 +1023,9 @@ ReadArrayBinary(StringInfo buf,
 
        /*
         * Rather than copying data around, we just set up a phony
-        * StringInfo pointing to the correct portion of the input
-        * buffer.  We assume we can scribble on the input buffer
-        * so as to maintain the convention that StringInfos have
-        * a trailing null.
+        * StringInfo pointing to the correct portion of the input buffer.
+        * We assume we can scribble on the input buffer so as to maintain
+        * the convention that StringInfos have a trailing null.
         */
        elem_buf.data = &buf->data[buf->cursor];
        elem_buf.maxlen = itemlen + 1;
@@ -1042,7 +1047,7 @@ ReadArrayBinary(StringInfo buf,
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
                     errmsg("improper binary format in array element %d",
-                           i + 1)));
+                           i + 1)));
 
        buf->data[buf->cursor] = csave;
    }
@@ -1051,9 +1056,7 @@ ReadArrayBinary(StringInfo buf,
     * Compute total data space needed
     */
    if (typlen > 0)
-   {
        *nbytes = nitems * att_align(typlen, typalign);
-   }
    else
    {
        Assert(!typbyval);
@@ -1100,14 +1103,14 @@ array_send(PG_FUNCTION_ARGS)
 
    /*
     * We arrange to look up info about element type, including its send
-    * conversion proc, only once per series of calls, assuming the element
-    * type doesn't change underneath us.
+    * conversion proc, only once per series of calls, assuming the
+    * element type doesn't change underneath us.
     */
    my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
@@ -1122,8 +1125,8 @@ array_send(PG_FUNCTION_ARGS)
        if (!OidIsValid(my_extra->typiofunc))
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                    errmsg("no binary output function available for type %s",
-                           format_type_be(element_type))));
+               errmsg("no binary output function available for type %s",
+                      format_type_be(element_type))));
        fmgr_info_cxt(my_extra->typiofunc, &my_extra->proc,
                      fcinfo->flinfo->fn_mcxt);
        my_extra->element_type = element_type;
@@ -1160,7 +1163,7 @@ array_send(PG_FUNCTION_ARGS)
 
        outputbytes = DatumGetByteaP(FunctionCall2(&my_extra->proc,
                                                   itemvalue,
-                                                  ObjectIdGetDatum(typelem)));
+                                            ObjectIdGetDatum(typelem)));
        /* We assume the result will not have been toasted */
        pq_sendint(&buf, VARSIZE(outputbytes) - VARHDRSZ, 4);
        pq_sendbytes(&buf, VARDATA(outputbytes),
@@ -1187,10 +1190,11 @@ array_length_coerce(PG_FUNCTION_ARGS)
    int32       len = PG_GETARG_INT32(1);
    bool        isExplicit = PG_GETARG_BOOL(2);
    FmgrInfo   *fmgr_info = fcinfo->flinfo;
-   typedef struct {
+   typedef struct
+   {
        Oid         elemtype;
        FmgrInfo    coerce_finfo;
-   } alc_extra;
+   }           alc_extra;
    alc_extra  *my_extra;
    FunctionCallInfoData locfcinfo;
 
@@ -1471,7 +1475,7 @@ array_get_slice(ArrayType *array,
         */
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("slices of fixed-length arrays not implemented")));
+              errmsg("slices of fixed-length arrays not implemented")));
 
        /*
         * fixed-length arrays -- these are assumed to be 1-d, 0-based XXX
@@ -1634,12 +1638,12 @@ array_set(ArrayType *array,
 
    /*
     * if number of dims is zero, i.e. an empty array, create an array
-    * with nSubscripts dimensions, and set the lower bounds to the supplied
-    * subscripts
+    * with nSubscripts dimensions, and set the lower bounds to the
+    * supplied subscripts
     */
    if (ndim == 0)
    {
-       Oid     elmtype = ARR_ELEMTYPE(array);
+       Oid         elmtype = ARR_ELEMTYPE(array);
 
        for (i = 0; i < nSubscripts; i++)
        {
@@ -1648,7 +1652,7 @@ array_set(ArrayType *array,
        }
 
        return construct_md_array(&dataValue, nSubscripts, dim, lb, elmtype,
-                                               elmlen, elmbyval, elmalign);
+                                 elmlen, elmbyval, elmalign);
    }
 
    if (ndim != nSubscripts || ndim <= 0 || ndim > MAXDIM)
@@ -1818,17 +1822,17 @@ array_set_slice(ArrayType *array,
 
    /*
     * if number of dims is zero, i.e. an empty array, create an array
-    * with nSubscripts dimensions, and set the upper and lower bounds
-    * to the supplied subscripts
+    * with nSubscripts dimensions, and set the upper and lower bounds to
+    * the supplied subscripts
     */
    if (ndim == 0)
    {
-       Datum  *dvalues;
-       int     nelems;
-       Oid     elmtype = ARR_ELEMTYPE(array);
+       Datum      *dvalues;
+       int         nelems;
+       Oid         elmtype = ARR_ELEMTYPE(array);
 
        deconstruct_array(srcArray, elmtype, elmlen, elmbyval, elmalign,
-                                                       &dvalues, &nelems);
+                         &dvalues, &nelems);
 
        for (i = 0; i < nSubscripts; i++)
        {
@@ -1837,7 +1841,7 @@ array_set_slice(ArrayType *array,
        }
 
        return construct_md_array(dvalues, nSubscripts, dim, lb, elmtype,
-                                                elmlen, elmbyval, elmalign);
+                                 elmlen, elmbyval, elmalign);
    }
 
    if (ndim < nSubscripts || ndim <= 0 || ndim > MAXDIM)
@@ -2028,11 +2032,12 @@ array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType)
    bool        typbyval;
    char        typalign;
    char       *s;
-   typedef struct {
+   typedef struct
+   {
        ArrayMetaState inp_extra;
        ArrayMetaState ret_extra;
-   } am_extra;
-   am_extra  *my_extra;
+   }           am_extra;
+   am_extra   *my_extra;
    ArrayMetaState *inp_extra;
    ArrayMetaState *ret_extra;
 
@@ -2054,9 +2059,9 @@ array_map(FunctionCallInfo fcinfo, Oid inpType, Oid retType)
        PG_RETURN_ARRAYTYPE_P(v);
 
    /*
-    * We arrange to look up info about input and return element types only
-    * once per series of calls, assuming the element type doesn't change
-    * underneath us.
+    * We arrange to look up info about input and return element types
+    * only once per series of calls, assuming the element type doesn't
+    * change underneath us.
     */
    my_extra = (am_extra *) fcinfo->flinfo->fn_extra;
    if (my_extra == NULL)
@@ -2179,8 +2184,8 @@ construct_array(Datum *elems, int nelems,
                Oid elmtype,
                int elmlen, bool elmbyval, char elmalign)
 {
-   int     dims[1];
-   int     lbs[1];
+   int         dims[1];
+   int         lbs[1];
 
    dims[0] = nelems;
    lbs[0] = 1;
@@ -2364,7 +2369,7 @@ array_eq(PG_FUNCTION_ARGS)
    if (element_type != ARR_ELEMTYPE(array2))
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("cannot compare arrays of different element types")));
+           errmsg("cannot compare arrays of different element types")));
 
    /* fast path if the arrays do not have the same number of elements */
    if (nitems1 != nitems2)
@@ -2372,21 +2377,22 @@ array_eq(PG_FUNCTION_ARGS)
    else
    {
        /*
-        * We arrange to look up the equality function only once per series of
-        * calls, assuming the element type doesn't change underneath us.
+        * We arrange to look up the equality function only once per
+        * series of calls, assuming the element type doesn't change
+        * underneath us.
         */
        my_extra = (ArrayMetaState *) ae_fmgr_info->fn_extra;
        if (my_extra == NULL)
        {
            ae_fmgr_info->fn_extra = MemoryContextAlloc(ae_fmgr_info->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
            my_extra = (ArrayMetaState *) ae_fmgr_info->fn_extra;
            my_extra->element_type = InvalidOid;
        }
 
        if (my_extra->element_type != element_type)
        {
-           Oid     opfuncid = equality_oper_funcid(element_type);
+           Oid         opfuncid = equality_oper_funcid(element_type);
 
            get_typlenbyvalalign(element_type,
                                 &my_extra->typlen,
@@ -2410,9 +2416,9 @@ array_eq(PG_FUNCTION_ARGS)
        /* Loop over source data */
        for (i = 0; i < nitems1; i++)
        {
-           Datum   elt1;
-           Datum   elt2;
-           bool    oprresult;
+           Datum       elt1;
+           Datum       elt2;
+           bool        oprresult;
 
            /* Get element pair */
            elt1 = fetch_att(p1, typbyval, typlen);
@@ -2519,20 +2525,20 @@ array_cmp(FunctionCallInfo fcinfo)
    int         i;
    typedef struct
    {
-       Oid             element_type;
-       int16           typlen;
-       bool            typbyval;
-       char            typalign;
-       FmgrInfo        eqproc;
-       FmgrInfo        ordproc;
-   } ac_extra;
-   ac_extra *my_extra;
+       Oid         element_type;
+       int16       typlen;
+       bool        typbyval;
+       char        typalign;
+       FmgrInfo    eqproc;
+       FmgrInfo    ordproc;
+   }           ac_extra;
+   ac_extra   *my_extra;
 
    element_type = ARR_ELEMTYPE(array1);
    if (element_type != ARR_ELEMTYPE(array2))
        ereport(ERROR,
                (errcode(ERRCODE_DATATYPE_MISMATCH),
-                errmsg("cannot compare arrays of different element types")));
+           errmsg("cannot compare arrays of different element types")));
 
    /*
     * We arrange to look up the element type info and related functions
@@ -2550,8 +2556,8 @@ array_cmp(FunctionCallInfo fcinfo)
 
    if (my_extra->element_type != element_type)
    {
-       Oid     eqfuncid = equality_oper_funcid(element_type);
-       Oid     ordfuncid = ordering_oper_funcid(element_type);
+       Oid         eqfuncid = equality_oper_funcid(element_type);
+       Oid         ordfuncid = ordering_oper_funcid(element_type);
 
        get_typlenbyvalalign(element_type,
                             &my_extra->typlen,
@@ -2569,10 +2575,10 @@ array_cmp(FunctionCallInfo fcinfo)
 
    /* extract a C array of arg array datums */
    deconstruct_array(array1, element_type, typlen, typbyval, typalign,
-                                                   &dvalues1, &nelems1);
+                     &dvalues1, &nelems1);
 
    deconstruct_array(array2, element_type, typlen, typbyval, typalign,
-                                                   &dvalues2, &nelems2);
+                     &dvalues2, &nelems2);
 
    min_nelems = Min(nelems1, nelems2);
    for (i = 0; i < min_nelems; i++)
@@ -2875,7 +2881,7 @@ array_insert_slice(int ndim,
 /*
  * array_type_coerce -- allow explicit or assignment coercion from
  * one array type to another.
- * 
+ *
  * Caller should have already verified that the source element type can be
  * coerced into the target element type.
  */
@@ -2885,11 +2891,12 @@ array_type_coerce(PG_FUNCTION_ARGS)
    ArrayType  *src = PG_GETARG_ARRAYTYPE_P(0);
    Oid         src_elem_type = ARR_ELEMTYPE(src);
    FmgrInfo   *fmgr_info = fcinfo->flinfo;
-   typedef struct {
+   typedef struct
+   {
        Oid         srctype;
        Oid         desttype;
        FmgrInfo    coerce_finfo;
-   } atc_extra;
+   }           atc_extra;
    atc_extra  *my_extra;
    FunctionCallInfoData locfcinfo;
 
@@ -2925,12 +2932,11 @@ array_type_coerce(PG_FUNCTION_ARGS)
                     errmsg("target type is not an array")));
 
        /*
-        * We don't deal with domain constraints yet, so bail out.
-        * This isn't currently a problem, because we also don't
-        * support arrays of domain type elements either. But in the
-        * future we might. At that point consideration should be given
-        * to removing the check below and adding a domain constraints
-        * check to the coercion.
+        * We don't deal with domain constraints yet, so bail out. This
+        * isn't currently a problem, because we also don't support arrays
+        * of domain type elements either. But in the future we might. At
+        * that point consideration should be given to removing the check
+        * below and adding a domain constraints check to the coercion.
         */
        if (getBaseType(tgt_elem_type) != tgt_elem_type)
            ereport(ERROR,
@@ -2943,7 +2949,7 @@ array_type_coerce(PG_FUNCTION_ARGS)
        {
            /* should never happen, but check anyway */
            elog(ERROR, "no conversion function from %s to %s",
-                format_type_be(src_elem_type), format_type_be(tgt_elem_type));
+           format_type_be(src_elem_type), format_type_be(tgt_elem_type));
        }
        if (OidIsValid(funcId))
            fmgr_info_cxt(funcId, &my_extra->coerce_finfo, fmgr_info->fn_mcxt);
@@ -2954,13 +2960,13 @@ array_type_coerce(PG_FUNCTION_ARGS)
    }
 
    /*
-    * If it's binary-compatible, modify the element type in the array header,
-    * but otherwise leave the array as we received it.
+    * If it's binary-compatible, modify the element type in the array
+    * header, but otherwise leave the array as we received it.
     */
    if (my_extra->coerce_finfo.fn_oid == InvalidOid)
    {
        ArrayType  *result = DatumGetArrayTypePCopy(PG_GETARG_DATUM(0));
-       
+
        ARR_ELEMTYPE(result) = my_extra->desttype;
        PG_RETURN_ARRAYTYPE_P(result);
    }
@@ -2983,13 +2989,13 @@ array_type_coerce(PG_FUNCTION_ARGS)
  * rcontext is where to keep working state
  */
 ArrayBuildState *
-accumArrayResult(ArrayBuildState *astate,
+accumArrayResult(ArrayBuildState * astate,
                 Datum dvalue, bool disnull,
                 Oid element_type,
                 MemoryContext rcontext)
 {
    MemoryContext arr_context,
-                 oldcontext;
+               oldcontext;
 
    if (astate == NULL)
    {
@@ -3021,7 +3027,7 @@ accumArrayResult(ArrayBuildState *astate,
        if ((astate->nelems % ARRAY_ELEMS_CHUNKSIZE) == 0)
            astate->dvalues = (Datum *)
                repalloc(astate->dvalues,
-                        (astate->nelems + ARRAY_ELEMS_CHUNKSIZE) * sizeof(Datum));
+              (astate->nelems + ARRAY_ELEMS_CHUNKSIZE) * sizeof(Datum));
    }
 
    if (disnull)
@@ -3045,7 +3051,7 @@ accumArrayResult(ArrayBuildState *astate,
  * rcontext is where to construct result
  */
 Datum
-makeArrayResult(ArrayBuildState *astate,
+makeArrayResult(ArrayBuildState * astate,
                MemoryContext rcontext)
 {
    int         dims[1];
@@ -3067,7 +3073,7 @@ makeArrayResult(ArrayBuildState *astate,
  * rcontext is where to construct result
  */
 Datum
-makeMdArrayResult(ArrayBuildState *astate,
+makeMdArrayResult(ArrayBuildState * astate,
                  int ndims,
                  int *dims,
                  int *lbs,
index fe7d6ba74ff7ba2a2e07548ad96d7d3920900fbb..adb03d3d0ed7203ee8234dcd502cb04828526e1e 100644 (file)
@@ -5,7 +5,7 @@
  *  Portions Copyright (c) 1999-2002, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/ascii.c,v 1.16 2003/07/27 04:53:03 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/ascii.c,v 1.17 2003/08/04 00:43:25 momjian Exp $
  *
  *-----------------------------------------------------------------------
  */
@@ -16,7 +16,7 @@
 #include "utils/ascii.h"
 
 static void pg_to_ascii(unsigned char *src, unsigned char *src_end,
-                       unsigned char *dest, int enc);
+           unsigned char *dest, int enc);
 static text *encode_to_ascii(text *data, int enc);
 
 
@@ -65,8 +65,8 @@ pg_to_ascii(unsigned char *src, unsigned char *src_end, unsigned char *dest, int
    {
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("unsupported encoding conversion from %s to ASCII",
-                       pg_encoding_to_char(enc))));
+              errmsg("unsupported encoding conversion from %s to ASCII",
+                     pg_encoding_to_char(enc))));
        return;                 /* keep compiler quiet */
    }
 
@@ -95,7 +95,7 @@ static text *
 encode_to_ascii(text *data, int enc)
 {
    pg_to_ascii((unsigned char *) VARDATA(data),        /* src */
-               (unsigned char *) (data) + VARSIZE(data),   /* src end */
+               (unsigned char *) (data) + VARSIZE(data),       /* src end */
                (unsigned char *) VARDATA(data),        /* dest */
                enc);           /* encoding */
 
@@ -109,8 +109,8 @@ encode_to_ascii(text *data, int enc)
 Datum
 to_ascii_encname(PG_FUNCTION_ARGS)
 {
-   text   *data = PG_GETARG_TEXT_P_COPY(0);
-   int     enc = pg_char_to_encoding(NameStr(*PG_GETARG_NAME(1)));
+   text       *data = PG_GETARG_TEXT_P_COPY(0);
+   int         enc = pg_char_to_encoding(NameStr(*PG_GETARG_NAME(1)));
 
    PG_RETURN_TEXT_P(encode_to_ascii(data, enc));
 }
@@ -122,8 +122,8 @@ to_ascii_encname(PG_FUNCTION_ARGS)
 Datum
 to_ascii_enc(PG_FUNCTION_ARGS)
 {
-   text   *data = PG_GETARG_TEXT_P_COPY(0);
-   int     enc = PG_GETARG_INT32(1);
+   text       *data = PG_GETARG_TEXT_P_COPY(0);
+   int         enc = PG_GETARG_INT32(1);
 
    PG_RETURN_TEXT_P(encode_to_ascii(data, enc));
 }
@@ -135,8 +135,8 @@ to_ascii_enc(PG_FUNCTION_ARGS)
 Datum
 to_ascii_default(PG_FUNCTION_ARGS)
 {
-   text   *data = PG_GETARG_TEXT_P_COPY(0);
-   int     enc = GetDatabaseEncoding();
+   text       *data = PG_GETARG_TEXT_P_COPY(0);
+   int         enc = GetDatabaseEncoding();
 
    PG_RETURN_TEXT_P(encode_to_ascii(data, enc));
 }
index 5bf3a025d1c02e4697709be71968141740924644..78a702a13ec6eb42931de99e94cffd995c030472 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.36 2003/07/27 04:53:04 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.37 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -57,7 +57,7 @@ charout(PG_FUNCTION_ARGS)
  *     charrecv            - converts external binary format to char
  *
  * The external representation is one byte, with no character set
- * conversion.  This is somewhat dubious, perhaps, but in many
+ * conversion. This is somewhat dubious, perhaps, but in many
  * cases people use char for a 1-byte binary type.
  */
 Datum
index ed449e524dd15eb1a9d7dd95879c42fb769fa9e7..b6d1b83d791b04cac89d1e1ba162aeefa26af547 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.87 2003/07/27 04:53:04 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.88 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -97,7 +97,7 @@ date_in(PG_FUNCTION_ARGS)
        default:
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                    errmsg("invalid input syntax for date: \"%s\"", str)));
+                 errmsg("invalid input syntax for date: \"%s\"", str)));
    }
 
    date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - POSTGRES_EPOCH_JDATE;
@@ -465,7 +465,7 @@ abstime_date(PG_FUNCTION_ARGS)
        case NOEND_ABSTIME:
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cannot convert reserved abstime value to date")));
+              errmsg("cannot convert reserved abstime value to date")));
 
            /*
             * pretend to drop through to make compiler think that result
@@ -527,7 +527,7 @@ text_date(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                 errmsg("invalid input syntax for date: \"%s\"",
-                        VARDATA(str))));
+                       VARDATA(str))));
 
    sp = VARDATA(str);
    dp = dstr;
@@ -570,7 +570,7 @@ time_in(PG_FUNCTION_ARGS)
                 errmsg("invalid input syntax for time: \"%s\"", str)));
 
    if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0)
-    || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, &tz) != 0))
+     || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, &tz) != 0))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                 errmsg("invalid input syntax for time: \"%s\"", str)));
@@ -749,9 +749,9 @@ AdjustTimeForTypmod(TimeADT *time, int32 typmod)
        /*
         * Note: this round-to-nearest code is not completely consistent
         * about rounding values that are exactly halfway between integral
-        * values.  On most platforms, rint() will implement round-to-nearest-even,
-        * but the integer code always rounds up (away from zero).  Is it
-        * worth trying to be consistent?
+        * values.  On most platforms, rint() will implement
+        * round-to-nearest-even, but the integer code always rounds up
+        * (away from zero).  Is it worth trying to be consistent?
         */
 #ifdef HAVE_INT64_TIMESTAMP
        if (*time >= INT64CONST(0))
@@ -761,8 +761,8 @@ AdjustTimeForTypmod(TimeADT *time, int32 typmod)
        }
        else
        {
-           *time = - ((((- *time) + TimeOffsets[typmod]) / TimeScales[typmod])
-                      * TimeScales[typmod]);
+           *time = -((((-*time) + TimeOffsets[typmod]) / TimeScales[typmod])
+                     * TimeScales[typmod]);
        }
 #else
        *time = (rint(((double) *time) * TimeScales[typmod])
@@ -1093,7 +1093,7 @@ time_interval(PG_FUNCTION_ARGS)
  * Convert interval to time data type.
  *
  * This is defined as producing the fractional-day portion of the interval.
- * Therefore, we can just ignore the months field.  It is not real clear
+ * Therefore, we can just ignore the months field. It is not real clear
  * what to do with negative intervals, but we choose to subtract the floor,
  * so that, say, '-2 hours' becomes '22:00:00'.
  */
@@ -1114,7 +1114,7 @@ interval_time(PG_FUNCTION_ARGS)
    }
    else if (result < 0)
    {
-       days = (-result + INT64CONST(86400000000-1)) / INT64CONST(86400000000);
+       days = (-result + INT64CONST(86400000000 - 1)) / INT64CONST(86400000000);
        result += days * INT64CONST(86400000000);
    }
 #else
@@ -1256,7 +1256,7 @@ text_time(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                 errmsg("invalid input syntax for time: \"%s\"",
-                        VARDATA(str))));
+                       VARDATA(str))));
 
    sp = VARDATA(str);
    dp = dstr;
@@ -1290,8 +1290,8 @@ time_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("TIME units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
 
    up = VARDATA(units);
    lp = lowunits;
@@ -1360,8 +1360,8 @@ time_part(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                         errmsg("TIME units \"%s\" not recognized",
-                                DatumGetCString(DirectFunctionCall1(textout,
-                                                PointerGetDatum(units))))));
+                            DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
 
                result = 0;
        }
@@ -1379,8 +1379,8 @@ time_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("TIME units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
        result = 0;
    }
 
@@ -1432,15 +1432,15 @@ timetz_in(PG_FUNCTION_ARGS)
    if (strlen(str) >= sizeof(lowstr))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for time with time zone: \"%s\"",
-                       str)));
+          errmsg("invalid input syntax for time with time zone: \"%s\"",
+                 str)));
 
    if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0)
      || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, &tz) != 0))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for time with time zone: \"%s\"",
-                       str)));
+          errmsg("invalid input syntax for time with time zone: \"%s\"",
+                 str)));
 
    result = (TimeTzADT *) palloc(sizeof(TimeTzADT));
    tm2timetz(tm, fsec, tz, result);
@@ -2019,8 +2019,8 @@ text_timetz(PG_FUNCTION_ARGS)
    if (VARSIZE(str) - VARHDRSZ > MAXDATELEN)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for time with time zone: \"%s\"",
-                       VARDATA(str))));
+          errmsg("invalid input syntax for time with time zone: \"%s\"",
+                 VARDATA(str))));
 
    sp = VARDATA(str);
    dp = dstr;
@@ -2054,8 +2054,8 @@ timetz_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("TIMETZ units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                              PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
 
    up = VARDATA(units);
    lp = lowunits;
@@ -2138,8 +2138,8 @@ timetz_part(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                         errmsg("TIMETZ units \"%s\" not recognized",
-                                DatumGetCString(DirectFunctionCall1(textout,
-                                                      PointerGetDatum(units))))));
+                            DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
 
                result = 0;
        }
@@ -2157,8 +2157,8 @@ timetz_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("TIMETZ units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                              PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
 
        result = 0;
    }
@@ -2187,8 +2187,8 @@ timetz_zone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("time zone \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                              PointerGetDatum(zone))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                             PointerGetDatum(zone))))));
 
    up = VARDATA(zone);
    lp = lowzone;
@@ -2246,8 +2246,8 @@ timetz_izone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("INTERVAL time zone \"%s\" not legal",
-                        DatumGetCString(DirectFunctionCall1(interval_out,
-                                                PointerGetDatum(zone))))));
+                       DatumGetCString(DirectFunctionCall1(interval_out,
+                                             PointerGetDatum(zone))))));
 
 #ifdef HAVE_INT64_TIMESTAMP
    tz = -(zone->time / INT64CONST(1000000));
index f053c9ebb2c121380dcc52667459605044df4236..1b1fd98a1ff75003657e1f4fe8f231f684da3ba6 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.108 2003/07/29 00:03:18 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.109 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -575,9 +575,9 @@ static datetkn deltatktbl[] = {
 
 static unsigned int szdeltatktbl = sizeof deltatktbl / sizeof deltatktbl[0];
 
-static datetkn    *datecache[MAXDATEFIELDS] = {NULL};
+static datetkn *datecache[MAXDATEFIELDS] = {NULL};
 
-static datetkn    *deltacache[MAXDATEFIELDS] = {NULL};
+static datetkn *deltacache[MAXDATEFIELDS] = {NULL};
 
 
 /*
@@ -593,7 +593,7 @@ static datetkn    *deltacache[MAXDATEFIELDS] = {NULL};
  *
  * Rewritten to eliminate overflow problems. This now allows the
  * routines to work correctly for all Julian day counts from
- * 0 to 2147483647  (Nov 24, -4713 to Jun 3, 5874898) assuming
+ * 0 to 2147483647 (Nov 24, -4713 to Jun 3, 5874898) assuming
  * a 32-bit integer. Longer types should also work to the limits
  * of their precision.
  */
@@ -604,18 +604,21 @@ date2j(int y, int m, int d)
    int         julian;
    int         century;
 
-   if (m > 2) {
+   if (m > 2)
+   {
        m += 1;
        y += 4800;
-   } else {
+   }
+   else
+   {
        m += 13;
        y += 4799;
    }
 
-   century = y/100;
-   julian  = y*365 - 32167;
-   julian += y/4 - century + century/4;
-   julian += 7834*m/256 + d;
+   century = y / 100;
+   julian = y * 365 - 32167;
+   julian += y / 4 - century + century / 4;
+   julian += 7834 * m / 256 + d;
 
    return julian;
 }  /* date2j() */
@@ -623,25 +626,25 @@ date2j(int y, int m, int d)
 void
 j2date(int jd, int *year, int *month, int *day)
 {
-   unsigned int        julian;
-   unsigned int        quad;
-   unsigned int        extra;
+   unsigned int julian;
+   unsigned int quad;
+   unsigned int extra;
    int         y;
 
    julian = jd;
    julian += 32044;
-   quad = julian/146097;
-   extra = (julian - quad*146097)*4 + 3;
-   julian += 60 + quad*3 + extra/146097;
-   quad = julian/1461;
-   julian -= quad*1461;
+   quad = julian / 146097;
+   extra = (julian - quad * 146097) * 4 + 3;
+   julian += 60 + quad * 3 + extra / 146097;
+   quad = julian / 1461;
+   julian -= quad * 1461;
    y = julian * 4 / 1461;
    julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366))
        + 123;
-   y += quad*4;
+   y += quad * 4;
    *year = y - 4800;
    quad = julian * 2141 / 65536;
-   *day = julian - 7834*quad/256;
+   *day = julian - 7834 * quad / 256;
    *month = (quad + 10) % 12 + 1;
 
    return;
@@ -652,7 +655,7 @@ j2date(int jd, int *year, int *month, int *day)
  * j2day - convert Julian date to day-of-week (0..6 == Sun..Sat)
  *
  * Note: various places use the locution j2day(date - 1) to produce a
- * result according to the convention 0..6 = Mon..Sun.  This is a bit of
+ * result according to the convention 0..6 = Mon..Sun. This is a bit of
  * a crock, but will work as long as the computation here is just a modulo.
  */
 int
@@ -1252,8 +1255,8 @@ DecodeDateTime(char **field, int *ftype, int nf,
                        {
                            case DTK_CURRENT:
                                ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("\"current\" is no longer supported")));
+                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                 errmsg("\"current\" is no longer supported")));
 
                                return -1;
                                break;
@@ -1269,7 +1272,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
                                *dtype = DTK_DATE;
                                GetCurrentDateTime(tm);
                                j2date((date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - 1),
-                                      &tm->tm_year, &tm->tm_mon, &tm->tm_mday);
+                               &tm->tm_year, &tm->tm_mon, &tm->tm_mday);
                                tm->tm_hour = 0;
                                tm->tm_min = 0;
                                tm->tm_sec = 0;
@@ -1289,7 +1292,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
                                *dtype = DTK_DATE;
                                GetCurrentDateTime(tm);
                                j2date((date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) + 1),
-                                      &tm->tm_year, &tm->tm_mon, &tm->tm_mday);
+                               &tm->tm_year, &tm->tm_mon, &tm->tm_mday);
                                tm->tm_hour = 0;
                                tm->tm_min = 0;
                                tm->tm_sec = 0;
@@ -1435,8 +1438,8 @@ DecodeDateTime(char **field, int *ftype, int nf,
            else
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                        errmsg("inconsistent use of year %04d and \"BC\"",
-                               tm->tm_year)));
+                      errmsg("inconsistent use of year %04d and \"BC\"",
+                             tm->tm_year)));
        }
        else if (is2digits)
        {
@@ -1994,8 +1997,8 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
                        {
                            case DTK_CURRENT:
                                ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("\"current\" is no longer supported")));
+                                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                                 errmsg("\"current\" is no longer supported")));
                                return -1;
                                break;
 
@@ -2423,6 +2426,7 @@ DecodeNumber(int flen, char *str, int fmask,
    switch (fmask & DTK_DATE_M)
    {
        case 0:
+
            /*
             * Nothing so far; make a decision about what we think the
             * input is.  There used to be lots of heuristics here, but
@@ -2487,9 +2491,7 @@ DecodeNumber(int flen, char *str, int fmask,
     * exactly two digits.
     */
    if (*tmask == DTK_M(YEAR))
-   {
        *is2digits = (flen == 2);
-   }
 
    return 0;
 }
@@ -3300,8 +3302,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
                    tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -3350,8 +3352,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
                    tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -3396,8 +3398,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
                    tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -3450,8 +3452,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
            sprintf((str + 10), " %02d:%02d", tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -3746,7 +3748,7 @@ ClearDateCache(bool newval, bool doit, bool interactive)
 
 /*
  * We've been burnt by stupid errors in the ordering of the datetkn tables
- * once too often.  Arrange to check them during postmaster start.
+ * once too often. Arrange to check them during postmaster start.
  */
 static bool
 CheckDateTokenTable(const char *tablename, datetkn *base, unsigned int nel)
@@ -3756,11 +3758,11 @@ CheckDateTokenTable(const char *tablename, datetkn *base, unsigned int nel)
 
    for (i = 1; i < nel; i++)
    {
-       if (strncmp(base[i-1].token, base[i].token, TOKMAXLEN) >= 0)
+       if (strncmp(base[i - 1].token, base[i].token, TOKMAXLEN) >= 0)
        {
            elog(LOG, "ordering error in %s table: \"%.*s\" >= \"%.*s\"",
                 tablename,
-                TOKMAXLEN, base[i-1].token,
+                TOKMAXLEN, base[i - 1].token,
                 TOKMAXLEN, base[i].token);
            ok = false;
        }
index 9ef2e80da760204e3af535e5a5ddc6dd6190c2af..2bcd2ac68a5846cb59fc6cba68190f48846bdbc8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.91 2003/07/30 19:48:38 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.92 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -104,13 +104,13 @@ static double cbrt(double x);
 
 
 /* Configurable GUC parameter */
-int        extra_float_digits = 0; /* Added to DBL_DIG or FLT_DIG */
+int            extra_float_digits = 0;     /* Added to DBL_DIG or FLT_DIG */
 
 
 static void CheckFloat4Val(double val);
 static void CheckFloat8Val(double val);
-static int float4_cmp_internal(float4 a, float4 b);
-static int float8_cmp_internal(float8 a, float8 b);
+static int float4_cmp_internal(float4 a, float4 b);
+static int float8_cmp_internal(float8 a, float8 b);
 
 
 /*
@@ -198,7 +198,7 @@ float4in(PG_FUNCTION_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                     errmsg("invalid input syntax for float4: \"%s\"",
-                            num)));
+                           num)));
    }
    else
    {
index 1df3593ee969acd689e14cf96247e2ddfd2a0eed..717b350bebe1a37da150cd83c02cc161ecb98ed3 100644 (file)
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------
  * formatting.c
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.64 2003/07/27 04:53:05 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.65 2003/08/04 00:43:25 momjian Exp $
  *
  *
  *  Portions Copyright (c) 1999-2002, PostgreSQL Global Development Group
@@ -279,15 +279,15 @@ typedef struct
 #define NUM_F_DECIMAL      (1 << 1)
 #define NUM_F_LDECIMAL     (1 << 2)
 #define NUM_F_ZERO     (1 << 3)
-#define NUM_F_BLANK        (1 << 4)
+#define NUM_F_BLANK            (1 << 4)
 #define NUM_F_FILLMODE     (1 << 5)
-#define NUM_F_LSIGN        (1 << 6)
+#define NUM_F_LSIGN            (1 << 6)
 #define NUM_F_BRACKET      (1 << 7)
-#define NUM_F_MINUS        (1 << 8)
+#define NUM_F_MINUS            (1 << 8)
 #define NUM_F_PLUS     (1 << 9)
-#define NUM_F_ROMAN        (1 << 10)
+#define NUM_F_ROMAN            (1 << 10)
 #define NUM_F_MULTI        (1 << 11)
-#define NUM_F_PLUS_POST    (1 << 12)
+#define NUM_F_PLUS_POST        (1 << 12)
 #define NUM_F_MINUS_POST   (1 << 13)
 
 #define NUM_LSIGN_PRE  -1
@@ -1018,7 +1018,7 @@ NUMDesc_prepare(NUMDesc *num, FormatNode *n)
                NUM_cache_remove(last_NUMCacheEntry);
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
-                        errmsg("cannot use \"V\" and decimal point together")));
+                errmsg("cannot use \"V\" and decimal point together")));
            }
            num->flag |= NUM_F_DECIMAL;
            break;
@@ -1123,7 +1123,7 @@ NUMDesc_prepare(NUMDesc *num, FormatNode *n)
                NUM_cache_remove(last_NUMCacheEntry);
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
-                        errmsg("cannot use \"V\" and decimal point together")));
+                errmsg("cannot use \"V\" and decimal point together")));
            }
            num->flag |= NUM_F_MULTI;
            break;
@@ -3072,7 +3072,7 @@ to_timestamp(PG_FUNCTION_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                     errmsg("inconsistent use of year %04d and \"BC\"",
-                            tm.tm_year)));
+                           tm.tm_year)));
    }
 
    if (tmfc.j)
@@ -3106,7 +3106,7 @@ to_timestamp(PG_FUNCTION_ARGS)
        if (!tm.tm_year)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                    errmsg("cannot convert yday without year information")));
+               errmsg("cannot convert yday without year information")));
 
        y = ysum[isleap(tm.tm_year)];
 
@@ -3600,7 +3600,7 @@ NUM_numpart_from_char(NUMProc *Np, int id, int plen)
         * simple + - < >
         */
        if (*Np->inout_p == '-' || (IS_BRACKET(Np->Num) &&
-           *Np->inout_p == '<'))
+                                   *Np->inout_p == '<'))
        {
 
            *Np->number = '-';  /* set - */
@@ -3678,7 +3678,7 @@ NUM_numpart_from_char(NUMProc *Np, int id, int plen)
        (IS_ZERO((_n)->Num)==FALSE && \
         (_n)->number == (_n)->number_p && \
         *(_n)->number == '0' && \
-                 (_n)->Num->post != 0)
+                (_n)->Num->post != 0)
 
 /* ----------
  * Add digit or sign to number-string
@@ -3687,8 +3687,8 @@ NUM_numpart_from_char(NUMProc *Np, int id, int plen)
 static void
 NUM_numpart_to_char(NUMProc *Np, int id)
 {
-   int end;
-   
+   int         end;
+
    if (IS_ROMAN(Np->Num))
        return;
 
@@ -3710,13 +3710,13 @@ NUM_numpart_to_char(NUMProc *Np, int id)
    Np->num_in = FALSE;
 
    /*
-    * Write sign if real number will write to output
-    * Note: IS_PREDEC_SPACE() handle "9.9" --> " .1"
+    * Write sign if real number will write to output Note:
+    * IS_PREDEC_SPACE() handle "9.9" --> " .1"
     */
-   if (Np->sign_wrote == FALSE && 
-       (Np->num_curr >= Np->num_pre || (IS_ZERO(Np->Num) && Np->Num->zero_start == Np->num_curr )) && 
-       (IS_PREDEC_SPACE(Np)==FALSE || (Np->last_relevant && *Np->last_relevant == '.')))
-   {   
+   if (Np->sign_wrote == FALSE &&
+       (Np->num_curr >= Np->num_pre || (IS_ZERO(Np->Num) && Np->Num->zero_start == Np->num_curr)) &&
+       (IS_PREDEC_SPACE(Np) == FALSE || (Np->last_relevant && *Np->last_relevant == '.')))
+   {
        if (IS_LSIGN(Np->Num))
        {
            if (Np->Num->lsign == NUM_LSIGN_PRE)
@@ -3739,7 +3739,7 @@ NUM_numpart_to_char(NUMProc *Np, int id)
        {
            if (!IS_FILLMODE(Np->Num))
            {
-               *Np->inout_p = ' '; /* Write + */
+               *Np->inout_p = ' ';     /* Write + */
                ++Np->inout_p;
            }
            Np->sign_wrote = TRUE;
@@ -3751,8 +3751,8 @@ NUM_numpart_to_char(NUMProc *Np, int id)
            Np->sign_wrote = TRUE;
        }
    }
-    
-   
+
+
    /*
     * digits / FM / Zero / Dec. point
     */
@@ -3796,10 +3796,11 @@ NUM_numpart_to_char(NUMProc *Np, int id)
                    strcpy(Np->inout_p, Np->decimal);   /* Write DEC/D */
                    Np->inout_p += strlen(Np->inout_p);
                }
+
                /*
                 * Ora 'n' -- FM9.9 --> 'n.'
                 */
-               else if (IS_FILLMODE(Np->Num)  &&
+               else if (IS_FILLMODE(Np->Num) &&
                         Np->last_relevant && *Np->last_relevant == '.')
                {
 
@@ -3816,6 +3817,7 @@ NUM_numpart_to_char(NUMProc *Np, int id)
                if (Np->last_relevant && Np->number_p > Np->last_relevant &&
                    id != NUM_0)
                    ;
+
                /*
                 * '0.1' -- 9.9 --> '  .1'
                 */
@@ -3826,6 +3828,7 @@ NUM_numpart_to_char(NUMProc *Np, int id)
                        *Np->inout_p = ' ';
                        ++Np->inout_p;
                    }
+
                    /*
                     * '0' -- FM9.9 --> '0.'
                     */
@@ -3846,11 +3849,11 @@ NUM_numpart_to_char(NUMProc *Np, int id)
        }
 
        end = Np->num_count + (Np->num_pre ? 1 : 0) + (IS_DECIMAL(Np->Num) ? 1 : 0);
-       
+
        if (Np->last_relevant && Np->last_relevant == Np->number_p)
            end = Np->num_curr;
-       
-       if (Np->num_curr+1 == end)
+
+       if (Np->num_curr + 1 == end)
        {
            if (Np->sign_wrote == TRUE && IS_BRACKET(Np->Num))
            {
@@ -3895,7 +3898,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
 
    if (Np->Num->zero_start)
        --Np->Num->zero_start;
-   
+
    /*
     * Roman correction
     */
@@ -3923,20 +3926,18 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
     * Sign
     */
    if (type == FROM_CHAR)
-   {
        Np->sign = FALSE;
-   }
    else
    {
        Np->sign = sign;
-       
+
        /* MI/PL/SG - write sign itself and not in number */
        if (IS_PLUS(Np->Num) || IS_MINUS(Np->Num))
        {
-           if (IS_PLUS(Np->Num) && IS_MINUS(Np->Num)==FALSE)
-               Np->sign_wrote = FALSE;     /* need sign */
+           if (IS_PLUS(Np->Num) && IS_MINUS(Np->Num) == FALSE)
+               Np->sign_wrote = FALSE; /* need sign */
            else
-               Np->sign_wrote = TRUE;      /* needn't sign */
+               Np->sign_wrote = TRUE;  /* needn't sign */
        }
        else
        {
@@ -3950,10 +3951,10 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
            else if (Np->sign != '+' && IS_PLUS(Np->Num))
                Np->Num->flag &= ~NUM_F_PLUS;
 
-           if (Np->sign == '+' && IS_FILLMODE(Np->Num) && IS_LSIGN(Np->Num)==FALSE)
-               Np->sign_wrote = TRUE;      /* needn't sign */
+           if (Np->sign == '+' && IS_FILLMODE(Np->Num) && IS_LSIGN(Np->Num) == FALSE)
+               Np->sign_wrote = TRUE;  /* needn't sign */
            else
-               Np->sign_wrote = FALSE;     /* need sign */
+               Np->sign_wrote = FALSE; /* need sign */
 
            if (Np->Num->lsign == NUM_LSIGN_PRE && Np->Num->pre == Np->Num->pre_lsign_num)
                Np->Num->lsign = NUM_LSIGN_POST;
@@ -3973,12 +3974,12 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
        {
            if (IS_DECIMAL(Np->Num))
                Np->last_relevant = get_last_relevant_decnum(
-                                Np->number +
+                                                            Np->number +
                                 ((Np->Num->zero_end - Np->num_pre > 0) ?
                                  Np->Num->zero_end - Np->num_pre : 0));
        }
 
-       if (Np->sign_wrote==FALSE && Np->num_pre == 0)
+       if (Np->sign_wrote == FALSE && Np->num_pre == 0)
            ++Np->num_count;
    }
    else
@@ -4010,7 +4011,7 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number,
         IS_MINUS(Np->Num) ? "Yes" : "No",
         IS_FILLMODE(Np->Num) ? "Yes" : "No",
         IS_ROMAN(Np->Num) ? "Yes" : "No"
-   );
+       );
 #endif
 
    /*
index 9934d6a3e0d610a5cf2953989abe36e9574e8fd7..6567dafc955eb319f5557a30ce1292bca7213162 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.78 2003/07/27 04:53:05 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.79 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -140,7 +140,7 @@ single_decode(char *str, float8 *x, char **s)
 static int
 single_encode(float8 x, char *str)
 {
-   int ndig = DBL_DIG + extra_float_digits;
+   int         ndig = DBL_DIG + extra_float_digits;
 
    if (ndig < 1)
        ndig = 1;
@@ -196,7 +196,7 @@ pair_decode(char *str, float8 *x, float8 *y, char **s)
 static int
 pair_encode(float8 x, float8 y, char *str)
 {
-   int ndig = DBL_DIG + extra_float_digits;
+   int         ndig = DBL_DIG + extra_float_digits;
 
    if (ndig < 1)
        ndig = 1;
@@ -3363,7 +3363,7 @@ poly_in(PG_FUNCTION_ARGS)
    if ((npts = pair_count(str, ',')) <= 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                errmsg("invalid input syntax for polygon: \"%s\"", str)));
+              errmsg("invalid input syntax for polygon: \"%s\"", str)));
 
    size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * npts;
    poly = (POLYGON *) palloc0(size);   /* zero any holes */
@@ -3375,7 +3375,7 @@ poly_in(PG_FUNCTION_ARGS)
        || (*s != '\0'))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                errmsg("invalid input syntax for polygon: \"%s\"", str)));
+              errmsg("invalid input syntax for polygon: \"%s\"", str)));
 
    make_bound_box(poly);
 
@@ -3406,7 +3406,7 @@ Datum
 poly_recv(PG_FUNCTION_ARGS)
 {
    StringInfo  buf = (StringInfo) PG_GETARG_POINTER(0);
-   POLYGON    *poly;
+   POLYGON    *poly;
    int32       npts;
    int32       i;
    int         size;
@@ -3440,7 +3440,7 @@ poly_recv(PG_FUNCTION_ARGS)
 Datum
 poly_send(PG_FUNCTION_ARGS)
 {
-   POLYGON    *poly = PG_GETARG_POLYGON_P(0);
+   POLYGON    *poly = PG_GETARG_POLYGON_P(0);
    StringInfoData buf;
    int32       i;
 
@@ -4246,7 +4246,7 @@ circle_in(PG_FUNCTION_ARGS)
        else
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                    errmsg("invalid input syntax for circle: \"%s\"", str)));
+               errmsg("invalid input syntax for circle: \"%s\"", str)));
    }
 
    if (*s != '\0')
index 0287fec27f087d696b7190a8f0d7df4f65d7da3b..7a38c535569498b31367de7ad9b834cc80ffaf98 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
-static const char rcsid[] = "$Id: inet_net_ntop.c,v 1.15 2003/06/25 01:08:13 momjian Exp $";
+static const char rcsid[] = "$Id: inet_net_ntop.c,v 1.16 2003/08/04 00:43:25 momjian Exp $";
 #endif
 
 #include "postgres.h"
@@ -40,13 +40,13 @@ static const char rcsid[] = "$Id: inet_net_ntop.c,v 1.15 2003/06/25 01:08:13 mom
 #endif
 
 static char *inet_net_ntop_ipv4(const u_char *src, int bits,
-               char *dst, size_t size);
+                  char *dst, size_t size);
 static char *inet_cidr_ntop_ipv4(const u_char *src, int bits,
-                char *dst, size_t size);
+                   char *dst, size_t size);
 static char *inet_net_ntop_ipv6(const u_char *src, int bits,
-               char *dst, size_t size);
+                  char *dst, size_t size);
 static char *inet_cidr_ntop_ipv6(const u_char *src, int bits,
-                char *dst, size_t size);
+                   char *dst, size_t size);
 
 /*
  * char *
@@ -160,26 +160,30 @@ emsgsize:
  * 0x11110000 in its fourth octet.
  * author:
  * Vadim Kogan (UCB), June 2001
- *  Original version (IPv4) by Paul Vixie (ISC), July 1996
+ * Original version (IPv4) by Paul Vixie (ISC), July 1996
  */
 
 static char *
 inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 {
-   u_int   m;
-   int b;
-   int p;
-   int zero_s, zero_l, tmp_zero_s, tmp_zero_l;
-   int i;
-   int is_ipv4 = 0;
-   int     double_colon = 0;
+   u_int       m;
+   int         b;
+   int         p;
+   int         zero_s,
+               zero_l,
+               tmp_zero_s,
+               tmp_zero_l;
+   int         i;
+   int         is_ipv4 = 0;
+   int         double_colon = 0;
    unsigned char inbuf[16];
-   char outbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")];
-   char    *cp;
-   int words;
-   u_char  *s;
+   char        outbuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")];
+   char       *cp;
+   int         words;
+   u_char     *s;
 
-   if (bits < 0 || bits > 128) {
+   if (bits < 0 || bits > 128)
+   {
        errno = EINVAL;
        return (NULL);
    }
@@ -187,20 +191,24 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
    cp = outbuf;
    double_colon = 0;
 
-   if (bits == 0) {
+   if (bits == 0)
+   {
        *cp++ = ':';
        *cp++ = ':';
        *cp = '\0';
        double_colon = 1;
-   } else {
-       /* Copy src to private buffer.  Zero host part. */  
+   }
+   else
+   {
+       /* Copy src to private buffer.  Zero host part. */
        p = (bits + 7) / 8;
        memcpy(inbuf, src, p);
        memset(inbuf + p, 0, 16 - p);
        b = bits % 8;
-       if (b != 0) {
+       if (b != 0)
+       {
            m = ~0 << (8 - b);
-           inbuf[p-1] &= m;
+           inbuf[p - 1] &= m;
        }
 
        s = inbuf;
@@ -212,13 +220,18 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
 
        /* Find the longest substring of zero's */
        zero_s = zero_l = tmp_zero_s = tmp_zero_l = 0;
-       for (i = 0; i < (words * 2); i += 2) {
-           if ((s[i] | s[i+1]) == 0) {
+       for (i = 0; i < (words * 2); i += 2)
+       {
+           if ((s[i] | s[i + 1]) == 0)
+           {
                if (tmp_zero_l == 0)
                    tmp_zero_s = i / 2;
                tmp_zero_l++;
-           } else {
-               if (tmp_zero_l && zero_l < tmp_zero_l) {
+           }
+           else
+           {
+               if (tmp_zero_l && zero_l < tmp_zero_l)
+               {
                    zero_s = tmp_zero_s;
                    zero_l = tmp_zero_l;
                    tmp_zero_l = 0;
@@ -226,23 +239,27 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
            }
        }
 
-       if (tmp_zero_l && zero_l < tmp_zero_l) {
+       if (tmp_zero_l && zero_l < tmp_zero_l)
+       {
            zero_s = tmp_zero_s;
            zero_l = tmp_zero_l;
        }
 
        if (zero_l != words && zero_s == 0 && ((zero_l == 6) ||
-           ((zero_l == 5 && s[10] == 0xff && s[11] == 0xff) ||
-           ((zero_l == 7 && s[14] != 0 && s[15] != 1)))))
+                     ((zero_l == 5 && s[10] == 0xff && s[11] == 0xff) ||
+                      ((zero_l == 7 && s[14] != 0 && s[15] != 1)))))
            is_ipv4 = 1;
 
        /* Format whole words. */
-       for (p = 0; p < words; p++) {
-           if (zero_l != 0 && p >= zero_s && p < zero_s + zero_l) {
+       for (p = 0; p < words; p++)
+       {
+           if (zero_l != 0 && p >= zero_s && p < zero_s + zero_l)
+           {
                /* Time to skip some zeros */
                if (p == zero_s)
                    *cp++ = ':';
-               if (p == words - 1) {
+               if (p == words - 1)
+               {
                    *cp++ = ':';
                    double_colon = 1;
                }
@@ -251,15 +268,19 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
                continue;
            }
 
-           if (is_ipv4 && p > 5 ) {
+           if (is_ipv4 && p > 5)
+           {
                *cp++ = (p == 6) ? ':' : '.';
                cp += SPRINTF((cp, "%u", *s++));
                /* we can potentially drop the last octet */
-               if (p != 7 || bits > 120) {
+               if (p != 7 || bits > 120)
+               {
                    *cp++ = '.';
                    cp += SPRINTF((cp, "%u", *s++));
                }
-           } else {
+           }
+           else
+           {
                if (cp != outbuf)
                    *cp++ = ':';
                cp += SPRINTF((cp, "%x", *s * 256 + s[1]));
@@ -268,7 +289,8 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
        }
    }
 
-   if (!double_colon) {
+   if (!double_colon)
+   {
        if (bits < 128 - 32)
            cp += SPRINTF((cp, "::"));
        else if (bits < 128 - 16)
@@ -281,7 +303,7 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
    if (strlen(outbuf) + 1 > size)
        goto emsgsize;
    strcpy(dst, outbuf);
-   
+
    return (dst);
 
 emsgsize:
@@ -373,21 +395,24 @@ emsgsize:
 }
 
 static int
-decoct(const u_char *src, int bytes, char *dst, size_t size) {
-   char *odst = dst;
-   char *t;
-   int b;
+decoct(const u_char *src, int bytes, char *dst, size_t size)
+{
+   char       *odst = dst;
+   char       *t;
+   int         b;
 
-   for (b = 1; b <= bytes; b++) {
+   for (b = 1; b <= bytes; b++)
+   {
        if (size < sizeof "255.")
            return (0);
        t = dst;
        dst += SPRINTF((dst, "%u", *src++));
-       if (b != bytes) {
+       if (b != bytes)
+       {
            *dst++ = '.';
            *dst = '\0';
        }
-       size -= (size_t)(dst - t);
+       size -= (size_t) (dst - t);
    }
    return (dst - odst);
 }
@@ -402,42 +427,52 @@ inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
     * Keep this in mind if you think this function should have been coded
     * to use pointer overlays.  All the world's not a VAX.
     */
-   char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255/128"];
-   char *tp;
-   struct { int base, len; } best, cur;
-   u_int words[NS_IN6ADDRSZ / NS_INT16SZ];
-   int i;
+   char        tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255/128"];
+   char       *tp;
+   struct
+   {
+       int         base,
+                   len;
+   }           best, cur;
+   u_int       words[NS_IN6ADDRSZ / NS_INT16SZ];
+   int         i;
 
-   if ((bits < -1) || (bits > 128)) {
+   if ((bits < -1) || (bits > 128))
+   {
        errno = EINVAL;
        return (NULL);
    }
 
    /*
-    * Preprocess:
-    *  Copy the input (bytewise) array into a wordwise array.
-    *  Find the longest run of 0x00's in src[] for :: shorthanding.
+    * Preprocess: Copy the input (bytewise) array into a wordwise array.
+    * Find the longest run of 0x00's in src[] for :: shorthanding.
     */
    memset(words, '\0', sizeof words);
    for (i = 0; i < NS_IN6ADDRSZ; i++)
        words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3));
    best.base = -1;
    cur.base = -1;
-   for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) {
-       if (words[i] == 0) {
+   for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
+   {
+       if (words[i] == 0)
+       {
            if (cur.base == -1)
                cur.base = i, cur.len = 1;
            else
                cur.len++;
-       } else {
-           if (cur.base != -1) {
+       }
+       else
+       {
+           if (cur.base != -1)
+           {
                if (best.base == -1 || cur.len > best.len)
                    best = cur;
                cur.base = -1;
            }
        }
    }
-   if (cur.base != -1) {
+   if (cur.base != -1)
+   {
        if (best.base == -1 || cur.len > best.len)
            best = cur;
    }
@@ -448,10 +483,12 @@ inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
     * Format the result.
     */
    tp = tmp;
-   for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) {
+   for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
+   {
        /* Are we inside the best run of 0x00's? */
        if (best.base != -1 && i >= best.base &&
-           i < (best.base + best.len)) {
+           i < (best.base + best.len))
+       {
            if (i == best.base)
                *tp++ = ':';
            continue;
@@ -461,12 +498,14 @@ inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
            *tp++ = ':';
        /* Is this address an encapsulated IPv4? */
        if (i == 6 && best.base == 0 && (best.len == 6 ||
-           (best.len == 7 && words[7] != 0x0001) ||
-           (best.len == 5 && words[5] == 0xffff))) {
-           int n;
-
-           n = decoct(src+12, 4, tp, sizeof tmp - (tp - tmp));
-           if (n == 0) {
+                                (best.len == 7 && words[7] != 0x0001) ||
+                                 (best.len == 5 && words[5] == 0xffff)))
+       {
+           int         n;
+
+           n = decoct(src + 12, 4, tp, sizeof tmp - (tp - tmp));
+           if (n == 0)
+           {
                errno = EMSGSIZE;
                return (NULL);
            }
@@ -477,8 +516,8 @@ inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
    }
 
    /* Was it a trailing run of 0x00's? */
-   if (best.base != -1 && (best.base + best.len) == 
-       (NS_IN6ADDRSZ / NS_INT16SZ))
+   if (best.base != -1 && (best.base + best.len) ==
+       (NS_IN6ADDRSZ / NS_INT16SZ))
        *tp++ = ':';
    *tp = '\0';
 
@@ -488,7 +527,8 @@ inet_net_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size)
    /*
     * Check for overflow, copy, and we're done.
     */
-   if ((size_t)(tp - tmp) > size) {
+   if ((size_t) (tp - tmp) > size)
+   {
        errno = EMSGSIZE;
        return (NULL);
    }
index 4c7ca9d618a2ea371e2035eaf335fa059440c11a..b1b4bb698766123d26c134934a19a1b9728c39b5 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 #if defined(LIBC_SCCS) && !defined(lint)
-static const char rcsid[] = "$Id: inet_net_pton.c,v 1.15 2003/06/24 22:21:22 momjian Exp $";
+static const char rcsid[] = "$Id: inet_net_pton.c,v 1.16 2003/08/04 00:43:25 momjian Exp $";
 #endif
 
 #include "postgres.h"
@@ -35,8 +35,8 @@ static const char rcsid[] = "$Id: inet_net_pton.c,v 1.15 2003/06/24 22:21:22 mom
 
 static int inet_net_pton_ipv4(const char *src, u_char *dst);
 static int inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size);
-static int      inet_net_pton_ipv6(const char *src, u_char *dst);
-static int      inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size);
+static int inet_net_pton_ipv6(const char *src, u_char *dst);
+static int inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size);
 
 /*
  * static int
@@ -339,24 +339,27 @@ emsgsize:
 }
 
 static int
-getbits(const char *src, int *bitsp) {
+getbits(const char *src, int *bitsp)
+{
    static const char digits[] = "0123456789";
-   int n;
-   int val;
-   char ch;
+   int         n;
+   int         val;
+   char        ch;
 
    val = 0;
    n = 0;
-   while ((ch = *src++) != '\0') {
+   while ((ch = *src++) != '\0')
+   {
        const char *pch;
 
        pch = strchr(digits, ch);
-       if (pch != NULL) {
+       if (pch != NULL)
+       {
            if (n++ != 0 && val == 0)   /* no leading zeros */
                return (0);
            val *= 10;
            val += (pch - digits);
-           if (val > 128)          /* range */
+           if (val > 128)      /* range */
                return (0);
            continue;
        }
@@ -369,30 +372,34 @@ getbits(const char *src, int *bitsp) {
 }
 
 static int
-getv4(const char *src, u_char *dst, int *bitsp) {
+getv4(const char *src, u_char *dst, int *bitsp)
+{
    static const char digits[] = "0123456789";
-   u_char *odst = dst;
-   int n;
-   u_int val;
-   char ch;
+   u_char     *odst = dst;
+   int         n;
+   u_int       val;
+   char        ch;
 
    val = 0;
    n = 0;
-   while ((ch = *src++) != '\0') {
+   while ((ch = *src++) != '\0')
+   {
        const char *pch;
 
        pch = strchr(digits, ch);
-       if (pch != NULL) {
+       if (pch != NULL)
+       {
            if (n++ != 0 && val == 0)   /* no leading zeros */
                return (0);
            val *= 10;
            val += (pch - digits);
-           if (val > 255)          /* range */
+           if (val > 255)      /* range */
                return (0);
            continue;
        }
-       if (ch == '.' || ch == '/') {
-           if (dst - odst > 3)     /* too many octets? */
+       if (ch == '.' || ch == '/')
+       {
+           if (dst - odst > 3) /* too many octets? */
                return (0);
            *dst++ = val;
            if (ch == '/')
@@ -405,7 +412,7 @@ getv4(const char *src, u_char *dst, int *bitsp) {
    }
    if (n == 0)
        return (0);
-   if (dst - odst > 3)     /* too many octets? */
+   if (dst - odst > 3)         /* too many octets? */
        return (0);
    *dst++ = val;
    return (1);
@@ -422,15 +429,21 @@ inet_net_pton_ipv6(const char *src, u_char *dst)
 #define NS_INADDRSZ 4
 
 static int
-inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size) {
+inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size)
+{
    static const char xdigits_l[] = "0123456789abcdef",
-             xdigits_u[] = "0123456789ABCDEF";
-   u_char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
-   const char *xdigits, *curtok;
-   int ch, saw_xdigit;
-   u_int val;
-   int digits;
-   int bits;
+               xdigits_u[] = "0123456789ABCDEF";
+   u_char      tmp[NS_IN6ADDRSZ],
+              *tp,
+              *endp,
+              *colonp;
+   const char *xdigits,
+              *curtok;
+   int         ch,
+               saw_xdigit;
+   u_int       val;
+   int         digits;
+   int         bits;
 
    if (size < NS_IN6ADDRSZ)
        goto emsgsize;
@@ -447,12 +460,14 @@ inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size) {
    val = 0;
    digits = 0;
    bits = -1;
-   while ((ch = *src++) != '\0') {
+   while ((ch = *src++) != '\0')
+   {
        const char *pch;
 
        if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
            pch = strchr((xdigits = xdigits_u), ch);
-       if (pch != NULL) {
+       if (pch != NULL)
+       {
            val <<= 4;
            val |= (pch - xdigits);
            if (++digits > 4)
@@ -460,14 +475,17 @@ inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size) {
            saw_xdigit = 1;
            continue;
        }
-       if (ch == ':') {
+       if (ch == ':')
+       {
            curtok = src;
-           if (!saw_xdigit) {
+           if (!saw_xdigit)
+           {
                if (colonp)
                    goto enoent;
                colonp = tp;
                continue;
-           } else if (*src == '\0')
+           }
+           else if (*src == '\0')
                goto enoent;
            if (tp + NS_INT16SZ > endp)
                return (0);
@@ -479,16 +497,18 @@ inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size) {
            continue;
        }
        if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
-            getv4(curtok, tp, &bits) > 0) {
+           getv4(curtok, tp, &bits) > 0)
+       {
            tp += NS_INADDRSZ;
            saw_xdigit = 0;
-           break;  /* '\0' was seen by inet_pton4(). */
+           break;              /* '\0' was seen by inet_pton4(). */
        }
        if (ch == '/' && getbits(src, &bits) > 0)
            break;
        goto enoent;
    }
-   if (saw_xdigit) {
+   if (saw_xdigit)
+   {
        if (tp + NS_INT16SZ > endp)
            goto enoent;
        *tp++ = (u_char) (val >> 8) & 0xff;
@@ -497,20 +517,22 @@ inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size) {
    if (bits == -1)
        bits = 128;
 
-   endp =  tmp + 16;
+   endp = tmp + 16;
 
-   if (colonp != NULL) {
+   if (colonp != NULL)
+   {
        /*
-        * Since some memmove()'s erroneously fail to handle
-        * overlapping regions, we'll do the shift by hand.
+        * Since some memmove()'s erroneously fail to handle overlapping
+        * regions, we'll do the shift by hand.
         */
-       const int n = tp - colonp;
-       int i;
+       const int   n = tp - colonp;
+       int         i;
 
        if (tp == endp)
            goto enoent;
-       for (i = 1; i <= n; i++) {
-           endp[- i] = colonp[n - i];
+       for (i = 1; i <= n; i++)
+       {
+           endp[-i] = colonp[n - i];
            colonp[n - i] = 0;
        }
        tp = endp;
@@ -525,11 +547,11 @@ inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size) {
 
    return (bits);
 
- enoent:
+enoent:
    errno = ENOENT;
    return (-1);
 
- emsgsize:
+emsgsize:
    errno = EMSGSIZE;
    return (-1);
 }
index 1c25df095622c3b6ba5ac451cba0927b17edd422..c7e31ebcada314878c7aad292f3856f39ba6d006 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.55 2003/07/27 04:53:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.56 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -173,9 +173,7 @@ int2vectorrecv(PG_FUNCTION_ARGS)
    int         slot;
 
    for (slot = 0; slot < INDEX_MAX_KEYS; slot++)
-   {
        result[slot] = (int16) pq_getmsgint(buf, sizeof(int16));
-   }
    PG_RETURN_POINTER(result);
 }
 
@@ -191,9 +189,7 @@ int2vectorsend(PG_FUNCTION_ARGS)
 
    pq_begintypsend(&buf);
    for (slot = 0; slot < INDEX_MAX_KEYS; slot++)
-   {
        pq_sendint(&buf, int2Array[slot], sizeof(int16));
-   }
    PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
 }
 
index 123c5e72257c526391693ed8e9dcbbaaa34518fb..3be22ba52791dbff4f45cc8e6fbb5e88d7e7adea 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int8.c,v 1.45 2003/07/27 04:53:06 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/int8.c,v 1.46 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -85,7 +85,7 @@ scanint8(const char *str, bool errorOK, int64 *result)
        else
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                    errmsg("invalid input syntax for int8: \"%s\"", str)));
+                 errmsg("invalid input syntax for int8: \"%s\"", str)));
    }
 
    /* process digits */
@@ -113,7 +113,7 @@ scanint8(const char *str, bool errorOK, int64 *result)
        else
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                    errmsg("invalid input syntax for int8: \"%s\"", str)));
+                 errmsg("invalid input syntax for int8: \"%s\"", str)));
    }
 
    *result = (sign < 0) ? -tmp : tmp;
index 0f832aa6e13b0f917a08327a2bc1890dac0995fc..4cffc0d018dc353fa80d2b5eb8ec8c1b40d1e84b 100644 (file)
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.54 2003/07/27 04:53:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/like.c,v 1.55 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -451,7 +451,7 @@ like_escape_bytea(PG_FUNCTION_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE),
                     errmsg("invalid escape string"),
-                    errhint("Escape string must be empty or one character.")));
+             errhint("Escape string must be empty or one character.")));
 
        e = VARDATA(esc);
 
index 9530873ae3f634b0d0a1ee7602e5ec3bc1ad2179..ebe2ce75f34f85bd63e05bf0a669d921624b41a3 100644 (file)
@@ -19,7 +19,7 @@
  * Copyright (c) 1996-2002, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/like_match.c,v 1.5 2003/07/27 04:53:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/like_match.c,v 1.6 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -289,7 +289,7 @@ do_like_escape(text *pat, text *esc)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE),
                     errmsg("invalid escape string"),
-                    errhint("Escape string must be empty or one character.")));
+             errhint("Escape string must be empty or one character.")));
 
        e = VARDATA(esc);
 
index 36ae41f9c71edd50c3819d05e9fa5aa901b0d6ae..4bef89a71b335661216573ed1e21af8e1aa1fb11 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * PostgreSQL type definitions for MAC addresses.
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/mac.c,v 1.29 2003/07/27 04:53:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/mac.c,v 1.30 2003/08/04 00:43:25 momjian Exp $
  */
 
 #include "postgres.h"
@@ -62,7 +62,7 @@ macaddr_in(PG_FUNCTION_ARGS)
    if (count != 6)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                errmsg("invalid input syntax for macaddr: \"%s\"", str)));
+              errmsg("invalid input syntax for macaddr: \"%s\"", str)));
 
    if ((a < 0) || (a > 255) || (b < 0) || (b > 255) ||
        (c < 0) || (c > 255) || (d < 0) || (d > 255) ||
@@ -110,7 +110,7 @@ Datum
 macaddr_recv(PG_FUNCTION_ARGS)
 {
    StringInfo  buf = (StringInfo) PG_GETARG_POINTER(0);
-   macaddr    *addr;
+   macaddr    *addr;
 
    addr = (macaddr *) palloc(sizeof(macaddr));
 
@@ -130,7 +130,7 @@ macaddr_recv(PG_FUNCTION_ARGS)
 Datum
 macaddr_send(PG_FUNCTION_ARGS)
 {
-   macaddr    *addr = PG_GETARG_MACADDR_P(0);
+   macaddr    *addr = PG_GETARG_MACADDR_P(0);
    StringInfoData buf;
 
    pq_begintypsend(&buf);
index 4f1234e35a0cc04c484746853aaf2b3572c0bbce..0e84ad652fd507979e3cf1fe803f736a2eff7194 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.111 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.112 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -83,7 +83,7 @@ static int istinterval(char *i_string,
            AbsoluteTime *i_end);
 
 
-/* 
+/*
  * GetCurrentAbsoluteTime()
  *
  * Get the current system time (relative to Unix epoch).
@@ -152,7 +152,7 @@ GetCurrentDateTime(struct tm * tm)
    abstime2tm(GetCurrentTransactionStartTime(), &tz, tm, NULL);
 }
 
-/* 
+/*
  * GetCurrentTimeUsec()
  *
  * Get the transaction start time ("now()") broken down as a struct tm,
@@ -373,13 +373,13 @@ abstimein(PG_FUNCTION_ARGS)
    if (strlen(str) >= sizeof(lowstr))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for abstime: \"%s\"", str)));
+              errmsg("invalid input syntax for abstime: \"%s\"", str)));
 
    if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0)
      || (DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tz) != 0))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for abstime: \"%s\"", str)));
+              errmsg("invalid input syntax for abstime: \"%s\"", str)));
 
    switch (dtype)
    {
@@ -654,7 +654,7 @@ abstime_timestamp(PG_FUNCTION_ARGS)
        case INVALID_ABSTIME:
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cannot convert \"invalid\" abstime to timestamp")));
+            errmsg("cannot convert \"invalid\" abstime to timestamp")));
            TIMESTAMP_NOBEGIN(result);
            break;
 
@@ -727,7 +727,7 @@ abstime_timestamptz(PG_FUNCTION_ARGS)
        case INVALID_ABSTIME:
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cannot convert \"invalid\" abstime to timestamp")));
+            errmsg("cannot convert \"invalid\" abstime to timestamp")));
            TIMESTAMP_NOBEGIN(result);
            break;
 
@@ -776,13 +776,13 @@ reltimein(PG_FUNCTION_ARGS)
    if (strlen(str) >= sizeof(lowstr))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for reltime: \"%s\"", str)));
+              errmsg("invalid input syntax for reltime: \"%s\"", str)));
 
    if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0)
        || (DecodeInterval(field, ftype, nf, &dtype, tm, &fsec) != 0))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
-                errmsg("invalid input syntax for reltime: \"%s\"", str)));
+              errmsg("invalid input syntax for reltime: \"%s\"", str)));
 
    switch (dtype)
    {
@@ -849,7 +849,7 @@ reltimesend(PG_FUNCTION_ARGS)
 static void
 reltime2tm(RelativeTime time, struct tm * tm)
 {
-   double  dtime = time;
+   double      dtime = time;
 
    FMODULO(dtime, tm->tm_year, 31557600);
    FMODULO(dtime, tm->tm_mon, 2592000);
@@ -1032,7 +1032,7 @@ reltime_interval(PG_FUNCTION_ARGS)
        case INVALID_RELTIME:
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("cannot convert \"invalid\" reltime to interval")));
+             errmsg("cannot convert \"invalid\" reltime to interval")));
            result->time = 0;
            result->month = 0;
            break;
index 47af778f3df99da3341f5af07e98036cf9067e29..3c6c4049fcbb59f722b81fd90c45718b140d1c79 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.47 2003/07/27 04:53:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.48 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -89,7 +89,7 @@ namerecv(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_NAME_TOO_LONG),
                 errmsg("identifier too long"),
                 errdetail("Identifier must be less than %d characters.",
-                           NAMEDATALEN)));
+                          NAMEDATALEN)));
    result = (NameData *) palloc0(NAMEDATALEN);
    memcpy(result, str, nbytes);
    pfree(str);
index a9683116e94ab0dbd9ecead592e23154243a084c..e3e7d185df640e9990a0eb95c3902be392a78d53 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * PostgreSQL type definitions for the INET and CIDR types.
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/network.c,v 1.44 2003/08/01 23:22:52 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/network.c,v 1.45 2003/08/04 00:43:25 momjian Exp $
  *
  * Jon Postel RIP 16 Oct 1998
  */
@@ -21,9 +21,9 @@
 
 static Datum text_network(text *src, int type);
 static int32 network_cmp_internal(inet *a1, inet *a2);
-static int bitncmp(void *l, void *r, int n);
+static int bitncmp(void *l, void *r, int n);
 static bool addressOK(unsigned char *a, int bits, int family);
-static int ip_addrsize(inet *inetptr);
+static int ip_addrsize(inet *inetptr);
 
 /*
  * Access macros.
@@ -50,13 +50,14 @@ static int ip_addrsize(inet *inetptr);
 static int
 ip_addrsize(inet *inetptr)
 {
-   switch (ip_family(inetptr)) {
-   case PGSQL_AF_INET:
-       return 4;
-   case PGSQL_AF_INET6:
-       return 16;
-   default:
-       return -1;
+   switch (ip_family(inetptr))
+   {
+       case PGSQL_AF_INET:
+           return 4;
+       case PGSQL_AF_INET6:
+           return 16;
+       default:
+           return -1;
    }
 }
 
@@ -64,34 +65,34 @@ ip_addrsize(inet *inetptr)
 static inet *
 network_in(char *src, int type)
 {
-   int     bits;
+   int         bits;
    inet       *dst;
 
    dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
 
    /*
-    * First, check to see if this is an IPv6 or IPv4 address.  IPv6
-    * addresses will have a : somewhere in them (several, in fact) so
-    * if there is one present, assume it's V6, otherwise assume it's V4.
+    * First, check to see if this is an IPv6 or IPv4 address.  IPv6
+    * addresses will have a : somewhere in them (several, in fact) so if
+    * there is one present, assume it's V6, otherwise assume it's V4.
     */
 
    if (strchr(src, ':') != NULL)
        ip_family(dst) = PGSQL_AF_INET6;
    else
        ip_family(dst) = PGSQL_AF_INET;
-  
+
    bits = inet_net_pton(ip_family(dst), src, ip_addr(dst),
-                type ? ip_addrsize(dst) : -1);
+                        type ? ip_addrsize(dst) : -1);
    if ((bits < 0) || (bits > ip_maxbits(dst)))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                /* translator: first %s is inet or cidr */
+       /* translator: first %s is inet or cidr */
                 errmsg("invalid input syntax for %s: \"%s\"",
-                        type ? "cidr" : "inet", src)));
+                       type ? "cidr" : "inet", src)));
 
    /*
-    * Error check: CIDR values must not have any bits set beyond
-    * the masklen.
+    * Error check: CIDR values must not have any bits set beyond the
+    * masklen.
     */
    if (type)
    {
@@ -141,7 +142,7 @@ inet_out(PG_FUNCTION_ARGS)
    int         len;
 
    dst = inet_net_ntop(ip_family(src), ip_addr(src), ip_bits(src),
-               tmp, sizeof(tmp));
+                       tmp, sizeof(tmp));
    if (dst == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
@@ -208,10 +209,10 @@ inet_recv(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
                 errmsg("invalid length in external inet")));
    VARATT_SIZEP(addr) = VARHDRSZ
-       + ((char *)ip_addr(addr) - (char *) VARDATA(addr))
+       + ((char *) ip_addr(addr) - (char *) VARDATA(addr))
        + ip_addrsize(addr);
 
-   addrptr = (char *)ip_addr(addr);
+   addrptr = (char *) ip_addr(addr);
    for (i = 0; i < nb; i++)
        addrptr[i] = pq_getmsgbyte(buf);
 
@@ -258,7 +259,7 @@ inet_send(PG_FUNCTION_ARGS)
    if (nb < 0)
        nb = 0;
    pq_sendbyte(&buf, nb);
-   addrptr = (char *)ip_addr(addr);
+   addrptr = (char *) ip_addr(addr);
    for (i = 0; i < nb; i++)
        pq_sendbyte(&buf, addrptr[i]);
    PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
@@ -305,8 +306,8 @@ inet_set_masklen(PG_FUNCTION_ARGS)
    int         bits = PG_GETARG_INT32(1);
    inet       *dst;
 
-        if ( bits == -1 )
-            bits = ip_maxbits(src);
+   if (bits == -1)
+       bits = ip_maxbits(src);
 
    if ((bits < 0) || (bits > ip_maxbits(src)))
        ereport(ERROR,
@@ -341,7 +342,7 @@ network_cmp_internal(inet *a1, inet *a2)
        int         order;
 
        order = bitncmp(ip_addr(a1), ip_addr(a2),
-               Min(ip_bits(a1), ip_bits(a2)));
+                       Min(ip_bits(a1), ip_bits(a2)));
        if (order != 0)
            return order;
        order = ((int) ip_bits(a1)) - ((int) ip_bits(a2));
@@ -431,7 +432,7 @@ network_sub(PG_FUNCTION_ARGS)
    if (ip_family(a1) == ip_family(a2))
    {
        PG_RETURN_BOOL(ip_bits(a1) > ip_bits(a2)
-          && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a2)) == 0);
+                && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a2)) == 0);
    }
 
    PG_RETURN_BOOL(false);
@@ -446,7 +447,7 @@ network_subeq(PG_FUNCTION_ARGS)
    if (ip_family(a1) == ip_family(a2))
    {
        PG_RETURN_BOOL(ip_bits(a1) >= ip_bits(a2)
-          && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a2)) == 0);
+                && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a2)) == 0);
    }
 
    PG_RETURN_BOOL(false);
@@ -461,7 +462,7 @@ network_sup(PG_FUNCTION_ARGS)
    if (ip_family(a1) == ip_family(a2))
    {
        PG_RETURN_BOOL(ip_bits(a1) < ip_bits(a2)
-          && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a1)) == 0);
+                && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a1)) == 0);
    }
 
    PG_RETURN_BOOL(false);
@@ -476,7 +477,7 @@ network_supeq(PG_FUNCTION_ARGS)
    if (ip_family(a1) == ip_family(a2))
    {
        PG_RETURN_BOOL(ip_bits(a1) <= ip_bits(a2)
-          && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a1)) == 0);
+                && bitncmp(ip_addr(a1), ip_addr(a2), ip_bits(a1)) == 0);
    }
 
    PG_RETURN_BOOL(false);
@@ -496,7 +497,7 @@ network_host(PG_FUNCTION_ARGS)
 
    /* force display of max bits, regardless of masklen... */
    if (inet_net_ntop(ip_family(ip), ip_addr(ip), ip_maxbits(ip),
-             tmp, sizeof(tmp)) == NULL)
+                     tmp, sizeof(tmp)) == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
                 errmsg("could not format inet value: %m")));
@@ -522,7 +523,7 @@ network_show(PG_FUNCTION_ARGS)
    char        tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")];
 
    if (inet_net_ntop(ip_family(ip), ip_addr(ip), ip_maxbits(ip),
-             tmp, sizeof(tmp)) == NULL)
+                     tmp, sizeof(tmp)) == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_BINARY_REPRESENTATION),
                 errmsg("could not format inet value: %m")));
@@ -553,10 +554,10 @@ network_abbrev(PG_FUNCTION_ARGS)
 
    if (ip_type(ip))
        dst = inet_cidr_ntop(ip_family(ip), ip_addr(ip),
-                    ip_bits(ip), tmp, sizeof(tmp));
+                            ip_bits(ip), tmp, sizeof(tmp));
    else
        dst = inet_net_ntop(ip_family(ip), ip_addr(ip),
-                   ip_bits(ip), tmp, sizeof(tmp));
+                           ip_bits(ip), tmp, sizeof(tmp));
 
    if (dst == NULL)
        ereport(ERROR,
@@ -582,18 +583,19 @@ network_masklen(PG_FUNCTION_ARGS)
 Datum
 network_family(PG_FUNCTION_ARGS)
 {
-   inet       *ip = PG_GETARG_INET_P(0);
-
-   switch (ip_family(ip)) {
-   case PGSQL_AF_INET:
-       PG_RETURN_INT32(4);
-       break;
-   case PGSQL_AF_INET6:
-       PG_RETURN_INT32(6);
-       break;
-   default:
-       PG_RETURN_INT32(0);
-       break;
+   inet       *ip = PG_GETARG_INET_P(0);
+
+   switch (ip_family(ip))
+   {
+       case PGSQL_AF_INET:
+           PG_RETURN_INT32(4);
+           break;
+       case PGSQL_AF_INET6:
+           PG_RETURN_INT32(6);
+           break;
+       default:
+           PG_RETURN_INT32(0);
+           break;
    }
 }
 
@@ -602,38 +604,42 @@ network_broadcast(PG_FUNCTION_ARGS)
 {
    inet       *ip = PG_GETARG_INET_P(0);
    inet       *dst;
-   int byte;
-   int bits;
-   int maxbytes;
+   int         byte;
+   int         bits;
+   int         maxbytes;
    unsigned char mask;
-   unsigned char *a, *b;
+   unsigned char *a,
+              *b;
 
    /* make sure any unused bits are zeroed */
    dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
 
-   if (ip_family(ip) == PGSQL_AF_INET) {
+   if (ip_family(ip) == PGSQL_AF_INET)
        maxbytes = 4;
-   } else {
+   else
        maxbytes = 16;
-   }
 
    bits = ip_bits(ip);
    a = ip_addr(ip);
    b = ip_addr(dst);
 
-   for (byte = 0 ; byte < maxbytes ; byte++) {
-       if (bits >= 8) {
+   for (byte = 0; byte < maxbytes; byte++)
+   {
+       if (bits >= 8)
+       {
            mask = 0x00;
            bits -= 8;
-       } else if (bits == 0) {
+       }
+       else if (bits == 0)
            mask = 0xff;
-       } else {
+       else
+       {
            mask = 0xff >> bits;
            bits = 0;
        }
 
        b[byte] = a[byte] | mask;
-        }
+   }
 
    ip_family(dst) = ip_family(ip);
    ip_bits(dst) = ip_bits(ip);
@@ -650,38 +656,42 @@ network_network(PG_FUNCTION_ARGS)
 {
    inet       *ip = PG_GETARG_INET_P(0);
    inet       *dst;
-   int byte;
-   int bits;
-   int maxbytes;
+   int         byte;
+   int         bits;
+   int         maxbytes;
    unsigned char mask;
-   unsigned char *a, *b;
+   unsigned char *a,
+              *b;
 
    /* make sure any unused bits are zeroed */
    dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
 
-   if (ip_family(ip) == PGSQL_AF_INET) {
+   if (ip_family(ip) == PGSQL_AF_INET)
        maxbytes = 4;
-   } else {
+   else
        maxbytes = 16;
-   }
 
    bits = ip_bits(ip);
    a = ip_addr(ip);
    b = ip_addr(dst);
 
    byte = 0;
-   while (bits) {
-       if (bits >= 8) {
+   while (bits)
+   {
+       if (bits >= 8)
+       {
            mask = 0xff;
            bits -= 8;
-       } else {
+       }
+       else
+       {
            mask = 0xff << (8 - bits);
            bits = 0;
        }
 
        b[byte] = a[byte] & mask;
        byte++;
-        }
+   }
 
    ip_family(dst) = ip_family(ip);
    ip_bits(dst) = ip_bits(ip);
@@ -698,43 +708,46 @@ network_netmask(PG_FUNCTION_ARGS)
 {
    inet       *ip = PG_GETARG_INET_P(0);
    inet       *dst;
-   int byte;
-   int bits;
-   int maxbytes;
+   int         byte;
+   int         bits;
+   int         maxbytes;
    unsigned char mask;
    unsigned char *b;
 
    /* make sure any unused bits are zeroed */
    dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
 
-   if (ip_family(ip) == PGSQL_AF_INET) {
+   if (ip_family(ip) == PGSQL_AF_INET)
        maxbytes = 4;
-   } else {
+   else
        maxbytes = 16;
-   }
 
    bits = ip_bits(ip);
    b = ip_addr(dst);
 
    byte = 0;
-   while (bits) {
-       if (bits >= 8) {
+   while (bits)
+   {
+       if (bits >= 8)
+       {
            mask = 0xff;
            bits -= 8;
-       } else {
+       }
+       else
+       {
            mask = 0xff << (8 - bits);
            bits = 0;
        }
 
        b[byte] = mask;
        byte++;
-        }
+   }
 
    ip_family(dst) = ip_family(ip);
    ip_bits(dst) = ip_bits(ip);
    ip_type(dst) = 0;
    VARATT_SIZEP(dst) = VARHDRSZ
-       + ((char *)ip_addr(dst) - (char *) VARDATA(dst))
+       + ((char *) ip_addr(dst) - (char *) VARDATA(dst))
        + ip_addrsize(dst);
 
    PG_RETURN_INET_P(dst);
@@ -745,43 +758,46 @@ network_hostmask(PG_FUNCTION_ARGS)
 {
    inet       *ip = PG_GETARG_INET_P(0);
    inet       *dst;
-   int byte;
-   int bits;
-   int maxbytes;
+   int         byte;
+   int         bits;
+   int         maxbytes;
    unsigned char mask;
    unsigned char *b;
 
    /* make sure any unused bits are zeroed */
    dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
 
-   if (ip_family(ip) == PGSQL_AF_INET) {
+   if (ip_family(ip) == PGSQL_AF_INET)
        maxbytes = 4;
-   } else {
+   else
        maxbytes = 16;
-   }
 
    bits = ip_maxbits(ip) - ip_bits(ip);
    b = ip_addr(dst);
 
    byte = maxbytes - 1;
-   while (bits) {
-       if (bits >= 8) {
+   while (bits)
+   {
+       if (bits >= 8)
+       {
            mask = 0xff;
            bits -= 8;
-       } else {
+       }
+       else
+       {
            mask = 0xff >> (8 - bits);
            bits = 0;
        }
 
        b[byte] = mask;
        byte--;
-        }
+   }
 
    ip_family(dst) = ip_family(ip);
    ip_bits(dst) = ip_bits(ip);
    ip_type(dst) = 0;
    VARATT_SIZEP(dst) = VARHDRSZ
-       + ((char *)ip_addr(dst) - (char *) VARDATA(dst))
+       + ((char *) ip_addr(dst) - (char *) VARDATA(dst))
        + ip_addrsize(dst);
 
    PG_RETURN_INET_P(dst);
@@ -806,13 +822,12 @@ convert_network_to_scalar(Datum value, Oid typid)
        case CIDROID:
            {
                inet       *ip = DatumGetInetP(value);
-               int len;
-               double res;
-               int i;
+               int         len;
+               double      res;
+               int         i;
 
                /*
-                * Note that we don't use the full address
-                * here.
+                * Note that we don't use the full address here.
                 */
                if (ip_family(ip) == PGSQL_AF_INET)
                    len = 4;
@@ -820,7 +835,8 @@ convert_network_to_scalar(Datum value, Oid typid)
                    len = 5;
 
                res = ip_family(ip);
-               for (i = 0 ; i < len ; i++) {
+               for (i = 0; i < len; i++)
+               {
                    res *= 256;
                    res += ip_addr(ip)[i];
                }
@@ -851,30 +867,34 @@ convert_network_to_scalar(Datum value, Oid typid)
 /*
  * int
  * bitncmp(l, r, n)
- *      compare bit masks l and r, for n bits.
+ *     compare bit masks l and r, for n bits.
  * return:
- *      -1, 1, or 0 in the libc tradition.
+ *     -1, 1, or 0 in the libc tradition.
  * note:
- *      network byte order assumed.  this means 192.5.5.240/28 has
- *      0x11110000 in its fourth octet.
+ *     network byte order assumed.  this means 192.5.5.240/28 has
+ *     0x11110000 in its fourth octet.
  * author:
- *      Paul Vixie (ISC), June 1996
+ *     Paul Vixie (ISC), June 1996
  */
 static int
 bitncmp(void *l, void *r, int n)
 {
-   u_int lb, rb;
-   int x, b;
+   u_int       lb,
+               rb;
+   int         x,
+               b;
 
    b = n / 8;
    x = memcmp(l, r, b);
    if (x)
        return (x);
 
-   lb = ((const u_char *)l)[b];
-   rb = ((const u_char *)r)[b];
-   for (b = n % 8; b > 0; b--) {
-       if ((lb & 0x80) != (rb & 0x80)) {
+   lb = ((const u_char *) l)[b];
+   rb = ((const u_char *) r)[b];
+   for (b = n % 8; b > 0; b--)
+   {
+       if ((lb & 0x80) != (rb & 0x80))
+       {
            if (lb & 0x80)
                return (1);
            return (-1);
@@ -888,16 +908,19 @@ bitncmp(void *l, void *r, int n)
 static bool
 addressOK(unsigned char *a, int bits, int family)
 {
-   int byte;
-   int nbits;
-   int maxbits;
-   int maxbytes;
+   int         byte;
+   int         nbits;
+   int         maxbits;
+   int         maxbytes;
    unsigned char mask;
 
-   if (family == PGSQL_AF_INET) {
+   if (family == PGSQL_AF_INET)
+   {
        maxbits = 32;
        maxbytes = 4;
-   } else {
+   }
+   else
+   {
        maxbits = 128;
        maxbytes = 16;
    }
@@ -912,7 +935,8 @@ addressOK(unsigned char *a, int bits, int family)
    if (bits != 0)
        mask >>= nbits;
 
-   while (byte < maxbytes) {
+   while (byte < maxbytes)
+   {
        if ((a[byte] & mask) != 0)
            return false;
        mask = 0xff;
@@ -948,5 +972,5 @@ network_scan_last(Datum in)
 {
    return DirectFunctionCall2(inet_set_masklen,
                               DirectFunctionCall1(network_broadcast, in),
-              Int32GetDatum(-1));
+                              Int32GetDatum(-1));
 }
index c3f0aee5cb9c3a27409b1d9f5dd2ac76a52a2ee7..5deeea2f1d1f2cfe283b3a8109a7b102c27d3ce8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.33 2003/07/27 04:53:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/not_in.c,v 1.34 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -62,7 +62,7 @@ int4notin(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_NAME),
                 errmsg("invalid name syntax"),
-                errhint("Must provide \"relationname.attributename\".")));
+              errhint("Must provide \"relationname.attributename\".")));
    attribute = strVal(nth(nnames - 1, names));
    names = ltruncate(nnames - 1, names);
    relrv = makeRangeVarFromNameList(names);
index 4f5029a26c1b32d406d92b7e6fbfc1a606700dcf..5b0fe2911077f279db547ffac16ccb20b6a3b065 100644 (file)
@@ -14,7 +14,7 @@
  * Copyright (c) 1998-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.64 2003/07/30 19:48:41 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.65 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -57,7 +57,7 @@
  * Numeric values are represented in a base-NBASE floating point format.
  * Each "digit" ranges from 0 to NBASE-1.  The type NumericDigit is signed
  * and wide enough to store a digit.  We assume that NBASE*NBASE can fit in
- * an int.  Although the purely calculational routines could handle any even
+ * an int. Although the purely calculational routines could handle any even
  * NBASE that's less than sqrt(INT_MAX), in practice we are only interested
  * in NBASE a power of ten, so that I/O conversions and decimal rounding
  * are easy.  Also, it's actually more efficient if NBASE is rather less than
@@ -101,7 +101,7 @@ typedef int16 NumericDigit;
  * The value represented by a NumericVar is determined by the sign, weight,
  * ndigits, and digits[] array.
  * Note: the first digit of a NumericVar's value is assumed to be multiplied
- * by NBASE ** weight.  Another way to say it is that there are weight+1
+ * by NBASE ** weight. Another way to say it is that there are weight+1
  * digits before the decimal point.  It is possible to have weight < 0.
  *
  * buf points at the physical start of the palloc'd digit buffer for the
@@ -166,8 +166,10 @@ static NumericVar const_two =
 
 #if DEC_DIGITS == 4
 static NumericDigit const_zero_point_five_data[1] = {5000};
+
 #elif DEC_DIGITS == 2
 static NumericDigit const_zero_point_five_data[1] = {50};
+
 #elif DEC_DIGITS == 1
 static NumericDigit const_zero_point_five_data[1] = {5};
 #endif
@@ -176,8 +178,10 @@ static NumericVar const_zero_point_five =
 
 #if DEC_DIGITS == 4
 static NumericDigit const_zero_point_nine_data[1] = {9000};
+
 #elif DEC_DIGITS == 2
 static NumericDigit const_zero_point_nine_data[1] = {90};
+
 #elif DEC_DIGITS == 1
 static NumericDigit const_zero_point_nine_data[1] = {9};
 #endif
@@ -188,10 +192,12 @@ static NumericVar const_zero_point_nine =
 static NumericDigit const_zero_point_01_data[1] = {100};
 static NumericVar const_zero_point_01 =
 {1, -1, NUMERIC_POS, 2, NULL, const_zero_point_01_data};
+
 #elif DEC_DIGITS == 2
 static NumericDigit const_zero_point_01_data[1] = {1};
 static NumericVar const_zero_point_01 =
 {1, -1, NUMERIC_POS, 2, NULL, const_zero_point_01_data};
+
 #elif DEC_DIGITS == 1
 static NumericDigit const_zero_point_01_data[1] = {1};
 static NumericVar const_zero_point_01 =
@@ -200,8 +206,10 @@ static NumericVar const_zero_point_01 =
 
 #if DEC_DIGITS == 4
 static NumericDigit const_one_point_one_data[2] = {1, 1000};
+
 #elif DEC_DIGITS == 2
 static NumericDigit const_one_point_one_data[2] = {1, 10};
+
 #elif DEC_DIGITS == 1
 static NumericDigit const_one_point_one_data[2] = {1, 1};
 #endif
@@ -212,7 +220,7 @@ static NumericVar const_nan =
 {0, 0, NUMERIC_NAN, 0, NULL, NULL};
 
 #if DEC_DIGITS == 4
-static const int   round_powers[4] = { 0, 1000, 100, 10 };
+static const int round_powers[4] = {0, 1000, 100, 10};
 #endif
 
 
@@ -263,9 +271,9 @@ static int  cmp_var(NumericVar *var1, NumericVar *var2);
 static void add_var(NumericVar *var1, NumericVar *var2, NumericVar *result);
 static void sub_var(NumericVar *var1, NumericVar *var2, NumericVar *result);
 static void mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
-                   int rscale);
+       int rscale);
 static void div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
-                   int rscale);
+       int rscale);
 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);
@@ -278,7 +286,7 @@ static void ln_var(NumericVar *arg, NumericVar *result, int rscale);
 static void log_var(NumericVar *base, NumericVar *num, NumericVar *result);
 static void power_var(NumericVar *base, NumericVar *exp, NumericVar *result);
 static void power_var_int(NumericVar *base, int exp, NumericVar *result,
-                         int rscale);
+             int rscale);
 
 static int cmp_abs(NumericVar *var1, NumericVar *var2);
 static void add_abs(NumericVar *var1, NumericVar *var2, NumericVar *result);
@@ -408,7 +416,7 @@ numeric_recv(PG_FUNCTION_ARGS)
    value.dscale = (uint16) pq_getmsgint(buf, sizeof(uint16));
    for (i = 0; i < len; i++)
    {
-       NumericDigit    d = pq_getmsgint(buf, sizeof(NumericDigit));
+       NumericDigit d = pq_getmsgint(buf, sizeof(NumericDigit));
 
        if (d < 0 || d >= NBASE)
            ereport(ERROR,
@@ -1081,8 +1089,8 @@ numeric_mul(PG_FUNCTION_ARGS)
 
    /*
     * Unpack the values, let mul_var() compute the result and return it.
-    * Unlike add_var() and sub_var(), mul_var() will round its result.
-    * In the case of numeric_mul(), which is invoked for the * operator on
+    * Unlike add_var() and sub_var(), mul_var() will round its result. In
+    * the case of numeric_mul(), which is invoked for the * operator on
     * numerics, we request exact representation for the product (rscale =
     * sum(dscale of arg1, dscale of arg2)).
     */
@@ -1303,7 +1311,7 @@ numeric_sqrt(PG_FUNCTION_ARGS)
        PG_RETURN_NUMERIC(make_result(&const_nan));
 
    /*
-    * Unpack the argument and determine the result scale.  We choose a
+    * Unpack the argument and determine the result scale.  We choose a
     * scale to give at least NUMERIC_MIN_SIG_DIGITS significant digits;
     * but in any case not less than the input's dscale.
     */
@@ -1356,7 +1364,7 @@ numeric_exp(PG_FUNCTION_ARGS)
        PG_RETURN_NUMERIC(make_result(&const_nan));
 
    /*
-    * Unpack the argument and determine the result scale.  We choose a
+    * Unpack the argument and determine the result scale.  We choose a
     * scale to give at least NUMERIC_MIN_SIG_DIGITS significant digits;
     * but in any case not less than the input's dscale.
     */
@@ -1369,8 +1377,8 @@ numeric_exp(PG_FUNCTION_ARGS)
    val = numericvar_to_double_no_overflow(&arg);
 
    /*
-    * log10(result) = num * log10(e), so this is approximately the decimal
-    * weight of the result:
+    * log10(result) = num * log10(e), so this is approximately the
+    * decimal weight of the result:
     */
    val *= 0.434294481903252;
 
@@ -2055,7 +2063,7 @@ numeric_variance(PG_FUNCTION_ARGS)
    }
    else
    {
-       mul_var(&vN, &vNminus1, &vNminus1, 0);      /* N * (N - 1) */
+       mul_var(&vN, &vNminus1, &vNminus1, 0);  /* N * (N - 1) */
        rscale = select_div_scale(&vsumX2, &vNminus1);
        div_var(&vsumX2, &vNminus1, &vsumX, rscale);    /* variance */
 
@@ -2131,7 +2139,7 @@ numeric_stddev(PG_FUNCTION_ARGS)
    }
    else
    {
-       mul_var(&vN, &vNminus1, &vNminus1, 0);      /* N * (N - 1) */
+       mul_var(&vN, &vNminus1, &vNminus1, 0);  /* N * (N - 1) */
        rscale = select_div_scale(&vsumX2, &vNminus1);
        div_var(&vsumX2, &vNminus1, &vsumX, rscale);    /* variance */
        sqrt_var(&vsumX, &vsumX, rscale);       /* stddev */
@@ -2409,7 +2417,6 @@ dump_var(const char *str, NumericVar *var)
 
    printf("\n");
 }
-
 #endif   /* NUMERIC_DEBUG */
 
 
@@ -2434,7 +2441,7 @@ alloc_var(NumericVar *var, int ndigits)
 {
    digitbuf_free(var->buf);
    var->buf = digitbuf_alloc(ndigits + 1);
-   var->buf[0] = 0;                /* spare digit for rounding */
+   var->buf[0] = 0;            /* spare digit for rounding */
    var->digits = var->buf + 1;
    var->ndigits = ndigits;
 }
@@ -2495,8 +2502,8 @@ set_var_from_str(const char *str, NumericVar *dest)
    NumericDigit *digits;
 
    /*
-    * We first parse the string to extract decimal digits and determine the
-    * correct decimal weight.  Then convert to NBASE representation.
+    * We first parse the string to extract decimal digits and determine
+    * the correct decimal weight.  Then convert to NBASE representation.
     */
 
    /* skip leading spaces */
@@ -2529,9 +2536,9 @@ set_var_from_str(const char *str, NumericVar *dest)
    if (!isdigit((unsigned char) *cp))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                errmsg("invalid input syntax for numeric: \"%s\"", str)));
+              errmsg("invalid input syntax for numeric: \"%s\"", str)));
 
-   decdigits = (unsigned char *) palloc(strlen(cp) + DEC_DIGITS*2);
+   decdigits = (unsigned char *) palloc(strlen(cp) + DEC_DIGITS * 2);
 
    /* leading padding for digit alignment later */
    memset(decdigits, 0, DEC_DIGITS);
@@ -2552,8 +2559,8 @@ set_var_from_str(const char *str, NumericVar *dest)
            if (have_dp)
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                        errmsg("invalid input syntax for numeric: \"%s\"",
-                               str)));
+                      errmsg("invalid input syntax for numeric: \"%s\"",
+                             str)));
            have_dp = TRUE;
            cp++;
        }
@@ -2563,7 +2570,7 @@ set_var_from_str(const char *str, NumericVar *dest)
 
    ddigits = i - DEC_DIGITS;
    /* trailing padding for digit alignment later */
-   memset(decdigits + i, 0, DEC_DIGITS-1);
+   memset(decdigits + i, 0, DEC_DIGITS - 1);
 
    /* Handle exponent, if any */
    if (*cp == 'e' || *cp == 'E')
@@ -2604,16 +2611,16 @@ set_var_from_str(const char *str, NumericVar *dest)
 
    /*
     * Okay, convert pure-decimal representation to base NBASE.  First we
-    * need to determine the converted weight and ndigits.  offset is the
+    * need to determine the converted weight and ndigits.  offset is the
     * number of decimal zeroes to insert before the first given digit to
     * have a correctly aligned first NBASE digit.
     */
    if (dweight >= 0)
-       weight = (dweight + 1 + DEC_DIGITS-1) / DEC_DIGITS - 1;
+       weight = (dweight + 1 + DEC_DIGITS - 1) / DEC_DIGITS - 1;
    else
-       weight = - ((-dweight - 1) / DEC_DIGITS + 1);
+       weight = -((-dweight - 1) / DEC_DIGITS + 1);
    offset = (weight + 1) * DEC_DIGITS - (dweight + 1);
-   ndigits = (ddigits + offset + DEC_DIGITS-1) / DEC_DIGITS;
+   ndigits = (ddigits + offset + DEC_DIGITS - 1) / DEC_DIGITS;
 
    alloc_var(dest, ndigits);
    dest->sign = sign;
@@ -2626,10 +2633,10 @@ set_var_from_str(const char *str, NumericVar *dest)
    while (ndigits-- > 0)
    {
 #if DEC_DIGITS == 4
-       *digits++ = ((decdigits[i] * 10 + decdigits[i+1]) * 10 +
-                    decdigits[i+2]) * 10 + decdigits[i+3];
+       *digits++ = ((decdigits[i] * 10 + decdigits[i + 1]) * 10 +
+                    decdigits[i + 2]) * 10 + decdigits[i + 3];
 #elif DEC_DIGITS == 2
-       *digits++ = decdigits[i] * 10 + decdigits[i+1];
+       *digits++ = decdigits[i] * 10 + decdigits[i + 1];
 #elif DEC_DIGITS == 1
        *digits++ = decdigits[i];
 #else
@@ -2704,9 +2711,10 @@ get_str_from_var(NumericVar *var, int dscale)
    char       *endcp;
    int         i;
    int         d;
-   NumericDigit    dig;
+   NumericDigit dig;
+
 #if DEC_DIGITS > 1
-   NumericDigit    d1;
+   NumericDigit d1;
 #endif
 
    if (dscale < 0)
@@ -2720,10 +2728,10 @@ get_str_from_var(NumericVar *var, int dscale)
    /*
     * Allocate space for the result.
     *
-    * i is set to to # of decimal digits before decimal point.
-    * dscale is the # of decimal digits we will print after decimal point.
-    * We may generate as many as DEC_DIGITS-1 excess digits at the end,
-    * and in addition we need room for sign, decimal point, null terminator.
+    * i is set to to # of decimal digits before decimal point. dscale is the
+    * # of decimal digits we will print after decimal point. We may
+    * generate as many as DEC_DIGITS-1 excess digits at the end, and in
+    * addition we need room for sign, decimal point, null terminator.
     */
    i = (var->weight + 1) * DEC_DIGITS;
    if (i <= 0)
@@ -2754,7 +2762,7 @@ get_str_from_var(NumericVar *var, int dscale)
            /* In the first digit, suppress extra leading decimal zeroes */
 #if DEC_DIGITS == 4
            {
-               bool    putit = (d > 0);
+               bool        putit = (d > 0);
 
                d1 = dig / 1000;
                dig -= d1 * 1000;
@@ -2789,7 +2797,7 @@ get_str_from_var(NumericVar *var, int dscale)
 
    /*
     * If requested, output a decimal point and all the digits that follow
-    * it.  We initially put out a multiple of DEC_DIGITS digits, then
+    * it.  We initially put out a multiple of DEC_DIGITS digits, then
     * truncate if needed.
     */
    if (dscale > 0)
@@ -2966,7 +2974,7 @@ apply_typmod(NumericVar *var, int32 typmod)
                            (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE),
                             errmsg("numeric field overflow"),
                             errdetail("ABS(value) >= 10^%d for field with precision %d, scale %d.",
-                                       ddigits-1, precision, scale)));
+                                      ddigits - 1, precision, scale)));
                break;
            }
            ddigits -= DEC_DIGITS;
@@ -2977,7 +2985,7 @@ apply_typmod(NumericVar *var, int32 typmod)
 /*
  * Convert numeric to int8, rounding if needed.
  *
- * If overflow, return FALSE (no error is raised).  Return TRUE if okay.
+ * If overflow, return FALSE (no error is raised). Return TRUE if okay.
  *
  * CAUTION: var's contents may be modified by rounding!
  */
@@ -3006,10 +3014,11 @@ numericvar_to_int8(NumericVar *var, int64 *result)
 
    /*
     * For input like 10000000000, we must treat stripped digits as real.
-    * So the loop assumes there are weight+1 digits before the decimal point.
+    * So the loop assumes there are weight+1 digits before the decimal
+    * point.
     */
    weight = var->weight;
-   Assert(weight >= 0 && ndigits <= weight+1);
+   Assert(weight >= 0 && ndigits <= weight + 1);
 
    /* Construct the result */
    digits = var->digits;
@@ -3021,6 +3030,7 @@ numericvar_to_int8(NumericVar *var, int64 *result)
        val *= NBASE;
        if (i < ndigits)
            val += digits[i];
+
        /*
         * The overflow check is a bit tricky because we want to accept
         * INT64_MIN, which will overflow the positive accumulator.  We
@@ -3051,7 +3061,7 @@ int8_to_numericvar(int64 val, NumericVar *var)
    int         ndigits;
 
    /* int8 can require at most 19 decimal digits; add one for safety */
-   alloc_var(var, 20/DEC_DIGITS);
+   alloc_var(var, 20 / DEC_DIGITS);
    if (val < 0)
    {
        var->sign = NUMERIC_NEG;
@@ -3071,7 +3081,8 @@ int8_to_numericvar(int64 val, NumericVar *var)
    }
    ptr = var->digits + var->ndigits;
    ndigits = 0;
-   do {
+   do
+   {
        ptr--;
        ndigits++;
        newuval = uval / NBASE;
@@ -3420,7 +3431,7 @@ sub_var(NumericVar *var1, NumericVar *var2, NumericVar *result)
  * mul_var() -
  *
  * Multiplication on variable level. Product of var1 * var2 is stored
- * in result.  Result is rounded to no more than rscale fractional digits.
+ * in result.  Result is rounded to no more than rscale fractional digits.
  */
 static void
 mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
@@ -3439,6 +3450,7 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
                ri,
                i1,
                i2;
+
    /* copy these values into local vars for speed in inner loop */
    int         var1ndigits = var1->ndigits;
    int         var2ndigits = var2->ndigits;
@@ -3462,9 +3474,10 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
 
    /*
     * Determine number of result digits to compute.  If the exact result
-    * would have more than rscale fractional digits, truncate the computation
-    * with MUL_GUARD_DIGITS guard digits.  We do that by pretending that
-    * one or both inputs have fewer digits than they really do.
+    * would have more than rscale fractional digits, truncate the
+    * computation with MUL_GUARD_DIGITS guard digits.  We do that by
+    * pretending that one or both inputs have fewer digits than they
+    * really do.
     */
    res_ndigits = var1ndigits + var2ndigits + 1;
    maxdigits = res_weight + 1 + (rscale * DEC_DIGITS) + MUL_GUARD_DIGITS;
@@ -3498,13 +3511,13 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
 
    /*
     * We do the arithmetic in an array "dig[]" of signed int's.  Since
-    * INT_MAX is noticeably larger than NBASE*NBASE, this gives us headroom
-    * to avoid normalizing carries immediately.
+    * INT_MAX is noticeably larger than NBASE*NBASE, this gives us
+    * headroom to avoid normalizing carries immediately.
     *
-    * maxdig tracks the maximum possible value of any dig[] entry;
-    * when this threatens to exceed INT_MAX, we take the time to propagate
-    * carries.  To avoid overflow in maxdig itself, it actually represents
-    * the max possible value divided by NBASE-1.
+    * maxdig tracks the maximum possible value of any dig[] entry; when this
+    * threatens to exceed INT_MAX, we take the time to propagate carries.
+    * To avoid overflow in maxdig itself, it actually represents the max
+    * possible value divided by NBASE-1.
     */
    dig = (int *) palloc0(res_ndigits * sizeof(int));
    maxdig = 0;
@@ -3512,24 +3525,24 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
    ri = res_ndigits - 1;
    for (i1 = var1ndigits - 1; i1 >= 0; ri--, i1--)
    {
-       int     var1digit = var1digits[i1];
+       int         var1digit = var1digits[i1];
 
        if (var1digit == 0)
            continue;
 
        /* Time to normalize? */
        maxdig += var1digit;
-       if (maxdig > INT_MAX/(NBASE-1))
+       if (maxdig > INT_MAX / (NBASE - 1))
        {
            /* Yes, do it */
            carry = 0;
-           for (i = res_ndigits-1; i >= 0; i--)
+           for (i = res_ndigits - 1; i >= 0; i--)
            {
                newdig = dig[i] + carry;
                if (newdig >= NBASE)
                {
-                   carry = newdig/NBASE;
-                   newdig -= carry*NBASE;
+                   carry = newdig / NBASE;
+                   newdig -= carry * NBASE;
                }
                else
                    carry = 0;
@@ -3543,9 +3556,7 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
        /* Add appropriate multiple of var2 into the accumulator */
        i = ri;
        for (i2 = var2ndigits - 1; i2 >= 0; i2--)
-       {
            dig[i--] += var1digit * var2digits[i2];
-       }
    }
 
    /*
@@ -3556,13 +3567,13 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
    alloc_var(result, res_ndigits);
    res_digits = result->digits;
    carry = 0;
-   for (i = res_ndigits-1; i >= 0; i--)
+   for (i = res_ndigits - 1; i >= 0; i--)
    {
        newdig = dig[i] + carry;
        if (newdig >= NBASE)
        {
-           carry = newdig/NBASE;
-           newdig -= carry*NBASE;
+           carry = newdig / NBASE;
+           newdig -= carry * NBASE;
        }
        else
            carry = 0;
@@ -3590,7 +3601,7 @@ mul_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
  * div_var() -
  *
  * Division on variable level. Quotient of var1 / var2 is stored
- * in result.  Result is rounded to no more than rscale fractional digits.
+ * in result.  Result is rounded to no more than rscale fractional digits.
  */
 static void
 div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
@@ -3611,6 +3622,7 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
                fquotient;
    int         qi;
    int         i;
+
    /* copy these values into local vars for speed in inner loop */
    int         var1ndigits = var1->ndigits;
    int         var2ndigits = var2->ndigits;
@@ -3645,7 +3657,7 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
        res_sign = NUMERIC_NEG;
    res_weight = var1->weight - var2->weight + 1;
    /* The number of accurate result digits we need to produce: */
-   div_ndigits = res_weight + 1 + (rscale + DEC_DIGITS-1)/DEC_DIGITS;
+   div_ndigits = res_weight + 1 + (rscale + DEC_DIGITS - 1) / DEC_DIGITS;
    /* Add guard digits for roundoff error */
    div_ndigits += DIV_GUARD_DIGITS;
    if (div_ndigits < DIV_GUARD_DIGITS)
@@ -3656,8 +3668,8 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
 
    /*
     * We do the arithmetic in an array "div[]" of signed int's.  Since
-    * INT_MAX is noticeably larger than NBASE*NBASE, this gives us headroom
-    * to avoid normalizing carries immediately.
+    * INT_MAX is noticeably larger than NBASE*NBASE, this gives us
+    * headroom to avoid normalizing carries immediately.
     *
     * We start with div[] containing one zero digit followed by the
     * dividend's digits (plus appended zeroes to reach the desired
@@ -3668,7 +3680,7 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
     */
    div = (int *) palloc0((div_ndigits + 1) * sizeof(int));
    for (i = 0; i < var1ndigits; i++)
-       div[i+1] = var1digits[i];
+       div[i + 1] = var1digits[i];
 
    /*
     * We estimate each quotient digit using floating-point arithmetic,
@@ -3685,10 +3697,10 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
    fdivisorinverse = 1.0 / fdivisor;
 
    /*
-    * maxdiv tracks the maximum possible absolute value of any div[] entry;
-    * when this threatens to exceed INT_MAX, we take the time to propagate
-    * carries.  To avoid overflow in maxdiv itself, it actually represents
-    * the max possible abs. value divided by NBASE-1.
+    * maxdiv tracks the maximum possible absolute value of any div[]
+    * entry; when this threatens to exceed INT_MAX, we take the time to
+    * propagate carries.  To avoid overflow in maxdiv itself, it actually
+    * represents the max possible abs. value divided by NBASE-1.
     */
    maxdiv = 1;
 
@@ -3702,19 +3714,19 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
        for (i = 1; i < 4; i++)
        {
            fdividend *= NBASE;
-           if (qi+i <= div_ndigits)
-               fdividend += (double) div[qi+i];
+           if (qi + i <= div_ndigits)
+               fdividend += (double) div[qi + i];
        }
        /* Compute the (approximate) quotient digit */
        fquotient = fdividend * fdivisorinverse;
        qdigit = (fquotient >= 0.0) ? ((int) fquotient) :
-           (((int) fquotient) - 1); /* truncate towards -infinity */
+           (((int) fquotient) - 1);    /* truncate towards -infinity */
 
        if (qdigit != 0)
        {
            /* Do we need to normalize now? */
            maxdiv += Abs(qdigit);
-           if (maxdiv > INT_MAX/(NBASE-1))
+           if (maxdiv > INT_MAX / (NBASE - 1))
            {
                /* Yes, do it */
                carry = 0;
@@ -3723,13 +3735,13 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
                    newdig = div[i] + carry;
                    if (newdig < 0)
                    {
-                       carry = -((-newdig-1)/NBASE) - 1;
-                       newdig -= carry*NBASE;
+                       carry = -((-newdig - 1) / NBASE) - 1;
+                       newdig -= carry * NBASE;
                    }
                    else if (newdig >= NBASE)
                    {
-                       carry = newdig/NBASE;
-                       newdig -= carry*NBASE;
+                       carry = newdig / NBASE;
+                       newdig -= carry * NBASE;
                    }
                    else
                        carry = 0;
@@ -3737,12 +3749,14 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
                }
                newdig = div[qi] + carry;
                div[qi] = newdig;
+
                /*
-                * All the div[] digits except possibly div[qi] are now
-                * in the range 0..NBASE-1.
+                * All the div[] digits except possibly div[qi] are now in
+                * the range 0..NBASE-1.
                 */
-               maxdiv = Abs(newdig) / (NBASE-1);
+               maxdiv = Abs(newdig) / (NBASE - 1);
                maxdiv = Max(maxdiv, 1);
+
                /*
                 * Recompute the quotient digit since new info may have
                 * propagated into the top four dividend digits
@@ -3751,33 +3765,34 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
                for (i = 1; i < 4; i++)
                {
                    fdividend *= NBASE;
-                   if (qi+i <= div_ndigits)
-                       fdividend += (double) div[qi+i];
+                   if (qi + i <= div_ndigits)
+                       fdividend += (double) div[qi + i];
                }
                /* Compute the (approximate) quotient digit */
                fquotient = fdividend * fdivisorinverse;
                qdigit = (fquotient >= 0.0) ? ((int) fquotient) :
-                   (((int) fquotient) - 1); /* truncate towards -infinity */
+                   (((int) fquotient) - 1);    /* truncate towards
+                                                * -infinity */
                maxdiv += Abs(qdigit);
            }
 
            /* Subtract off the appropriate multiple of the divisor */
            if (qdigit != 0)
            {
-               int     istop = Min(var2ndigits, div_ndigits-qi+1);
+               int         istop = Min(var2ndigits, div_ndigits - qi + 1);
 
                for (i = 0; i < istop; i++)
-                   div[qi+i] -= qdigit * var2digits[i];
+                   div[qi + i] -= qdigit * var2digits[i];
            }
        }
 
        /*
-        * The dividend digit we are about to replace might still be nonzero.
-        * Fold it into the next digit position.  We don't need to worry about
-        * overflow here since this should nearly cancel with the subtraction
-        * of the divisor.
+        * The dividend digit we are about to replace might still be
+        * nonzero. Fold it into the next digit position.  We don't need
+        * to worry about overflow here since this should nearly cancel
+        * with the subtraction of the divisor.
         */
-       div[qi+1] += div[qi] * NBASE;
+       div[qi + 1] += div[qi] * NBASE;
 
        div[qi] = qdigit;
    }
@@ -3787,12 +3802,10 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
     */
    fdividend = (double) div[qi];
    for (i = 1; i < 4; i++)
-   {
        fdividend *= NBASE;
-   }
    fquotient = fdividend * fdivisorinverse;
    qdigit = (fquotient >= 0.0) ? ((int) fquotient) :
-       (((int) fquotient) - 1); /* truncate towards -infinity */
+       (((int) fquotient) - 1);    /* truncate towards -infinity */
    div[qi] = qdigit;
 
    /*
@@ -3800,7 +3813,7 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
     * which we combine with storing the result digits into the output.
     * Note that this is still done at full precision w/guard digits.
     */
-   alloc_var(result, div_ndigits+1);
+   alloc_var(result, div_ndigits + 1);
    res_digits = result->digits;
    carry = 0;
    for (i = div_ndigits; i >= 0; i--)
@@ -3808,13 +3821,13 @@ div_var(NumericVar *var1, NumericVar *var2, NumericVar *result,
        newdig = div[i] + carry;
        if (newdig < 0)
        {
-           carry = -((-newdig-1)/NBASE) - 1;
-           newdig -= carry*NBASE;
+           carry = -((-newdig - 1) / NBASE) - 1;
+           newdig -= carry * NBASE;
        }
        else if (newdig >= NBASE)
        {
-           carry = newdig/NBASE;
-           newdig -= carry*NBASE;
+           carry = newdig / NBASE;
+           newdig -= carry * NBASE;
        }
        else
            carry = 0;
@@ -3889,8 +3902,8 @@ select_div_scale(NumericVar *var1, NumericVar *var2)
    }
 
    /*
-    * Estimate weight of quotient.  If the two first digits are equal,
-    * we can't be sure, but assume that var1 is less than var2.
+    * Estimate weight of quotient.  If the two first digits are equal, we
+    * can't be sure, but assume that var1 is less than var2.
     */
    qweight = weight1 - weight2;
    if (firstdigit1 <= firstdigit2)
@@ -4176,16 +4189,17 @@ exp_var_internal(NumericVar *arg, NumericVar *result, int rscale)
    {
        ndiv2++;
        local_rscale++;
-       mul_var(&x, &const_zero_point_five, &x, x.dscale+1);
+       mul_var(&x, &const_zero_point_five, &x, x.dscale + 1);
    }
 
    /*
     * Use the Taylor series
     *
-    *      exp(x) = 1 + x + x^2/2! + x^3/3! + ...
+    * exp(x) = 1 + x + x^2/2! + x^3/3! + ...
     *
     * Given the limited range of x, this should converge reasonably quickly.
-    * We run the series until the terms fall below the local_rscale limit.
+    * We run the series until the terms fall below the local_rscale
+    * limit.
     */
    add_var(&const_one, &x, result);
    set_var_from_var(&x, &xpow);
@@ -4265,7 +4279,7 @@ ln_var(NumericVar *arg, NumericVar *result, int rscale)
    /*
     * We use the Taylor series for 0.5 * ln((1+z)/(1-z)),
     *
-    *      z + z^3/3 + z^5/5 + ...
+    * z + z^3/3 + z^5/5 + ...
     *
     * where z = (x-1)/(x+1) is in the range (approximately) -0.053 .. 0.048
     * due to the above range-reduction of x.
@@ -4292,7 +4306,7 @@ ln_var(NumericVar *arg, NumericVar *result, int rscale)
 
        add_var(result, &elem, result);
 
-       if (elem.weight < (result->weight - local_rscale * 2/DEC_DIGITS))
+       if (elem.weight < (result->weight - local_rscale * 2 / DEC_DIGITS))
            break;
    }
 
@@ -4391,7 +4405,7 @@ power_var(NumericVar *base, NumericVar *exp, NumericVar *result)
        set_var_from_var(exp, &x);
        if (numericvar_to_int8(&x, &expval64))
        {
-           int     expval = (int) expval64;
+           int         expval = (int) expval64;
 
            /* Test for overflow by reverse-conversion. */
            if ((int64) expval == expval64)
@@ -4420,11 +4434,11 @@ power_var(NumericVar *base, NumericVar *exp, NumericVar *result)
    dec_digits = (base->weight + 1) * DEC_DIGITS;
 
    if (dec_digits > 1)
-       rscale = NUMERIC_MIN_SIG_DIGITS*2 - (int) log10(dec_digits - 1);
+       rscale = NUMERIC_MIN_SIG_DIGITS * 2 - (int) log10(dec_digits - 1);
    else if (dec_digits < 1)
-       rscale = NUMERIC_MIN_SIG_DIGITS*2 - (int) log10(1 - dec_digits);
+       rscale = NUMERIC_MIN_SIG_DIGITS * 2 - (int) log10(1 - dec_digits);
    else
-       rscale = NUMERIC_MIN_SIG_DIGITS*2;
+       rscale = NUMERIC_MIN_SIG_DIGITS * 2;
 
    rscale = Max(rscale, base->dscale * 2);
    rscale = Max(rscale, exp->dscale * 2);
@@ -4442,7 +4456,10 @@ power_var(NumericVar *base, NumericVar *exp, NumericVar *result)
    /* convert input to float8, ignoring overflow */
    val = numericvar_to_double_no_overflow(&ln_num);
 
-   /* log10(result) = num * log10(e), so this is approximately the weight: */
+   /*
+    * log10(result) = num * log10(e), so this is approximately the
+    * weight:
+    */
    val *= 0.434294481903252;
 
    /* limit to something that won't cause integer overflow */
@@ -4483,7 +4500,7 @@ power_var_int(NumericVar *base, int exp, NumericVar *result, int rscale)
                        (errcode(ERRCODE_FLOATING_POINT_EXCEPTION),
                         errmsg("zero raised to zero is undefined")));
            set_var_from_var(&const_one, result);
-           result->dscale = rscale; /* no need to round */
+           result->dscale = rscale;    /* no need to round */
            return;
        case 1:
            set_var_from_var(base, result);
@@ -4500,8 +4517,8 @@ power_var_int(NumericVar *base, int exp, NumericVar *result, int rscale)
    }
 
    /*
-    * The general case repeatedly multiplies base according to the
-    * bit pattern of exp.  We do the multiplications with some extra
+    * The general case repeatedly multiplies base according to the bit
+    * pattern of exp.  We do the multiplications with some extra
     * precision.
     */
    neg = (exp < 0);
@@ -4595,8 +4612,8 @@ cmp_abs(NumericVar *var1, NumericVar *var2)
    }
 
    /*
-    * At this point, we've run out of digits on one side or the other;
-    * so any remaining nonzero digits imply that side is larger
+    * At this point, we've run out of digits on one side or the other; so
+    * any remaining nonzero digits imply that side is larger
     */
    while (i1 < var1->ndigits)
    {
@@ -4789,7 +4806,7 @@ sub_abs(NumericVar *var1, NumericVar *var2, NumericVar *result)
 static void
 round_var(NumericVar *var, int rscale)
 {
-   NumericDigit   *digits = var->digits;
+   NumericDigit *digits = var->digits;
    int         di;
    int         ndigits;
    int         carry;
@@ -4800,8 +4817,8 @@ round_var(NumericVar *var, int rscale)
    di = (var->weight + 1) * DEC_DIGITS + rscale;
 
    /*
-    * If di = 0, the value loses all digits, but could round up to 1
-    * if its first extra digit is >= 5.  If di < 0 the result must be 0.
+    * If di = 0, the value loses all digits, but could round up to 1 if
+    * its first extra digit is >= 5.  If di < 0 the result must be 0.
     */
    if (di < 0)
    {
@@ -4812,7 +4829,7 @@ round_var(NumericVar *var, int rscale)
    else
    {
        /* NBASE digits wanted */
-       ndigits = (di + DEC_DIGITS-1) / DEC_DIGITS;
+       ndigits = (di + DEC_DIGITS - 1) / DEC_DIGITS;
 
        /* 0, or number of decimal digits to keep in last NBASE digit */
        di %= DEC_DIGITS;
@@ -4827,14 +4844,12 @@ round_var(NumericVar *var, int rscale)
            carry = (digits[ndigits] >= HALF_NBASE) ? 1 : 0;
 #else
            if (di == 0)
-           {
                carry = (digits[ndigits] >= HALF_NBASE) ? 1 : 0;
-           }
            else
            {
                /* Must round within last NBASE digit */
-               int     extra,
-                       pow10;
+               int         extra,
+                           pow10;
 
 #if DEC_DIGITS == 4
                pow10 = round_powers[di];
@@ -4846,7 +4861,7 @@ round_var(NumericVar *var, int rscale)
                extra = digits[--ndigits] % pow10;
                digits[ndigits] -= extra;
                carry = 0;
-               if (extra >= pow10/2)
+               if (extra >= pow10 / 2)
                {
                    pow10 += digits[ndigits];
                    if (pow10 >= NBASE)
@@ -4917,7 +4932,7 @@ trunc_var(NumericVar *var, int rscale)
    else
    {
        /* NBASE digits wanted */
-       ndigits = (di + DEC_DIGITS-1) / DEC_DIGITS;
+       ndigits = (di + DEC_DIGITS - 1) / DEC_DIGITS;
 
        if (ndigits <= var->ndigits)
        {
@@ -4932,9 +4947,9 @@ trunc_var(NumericVar *var, int rscale)
            if (di > 0)
            {
                /* Must truncate within last NBASE digit */
-               NumericDigit   *digits = var->digits;
-               int     extra,
-                       pow10;
+               NumericDigit *digits = var->digits;
+               int         extra,
+                           pow10;
 
 #if DEC_DIGITS == 4
                pow10 = round_powers[di];
@@ -4959,7 +4974,7 @@ trunc_var(NumericVar *var, int rscale)
 static void
 strip_var(NumericVar *var)
 {
-   NumericDigit   *digits = var->digits;
+   NumericDigit *digits = var->digits;
    int         ndigits = var->ndigits;
 
    /* Strip leading zeroes */
index a73842785e52c90b43f577bb8ebd9d3496fb3341..8b6b43ac8945e9740be67280834b017e6894afa2 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.55 2003/07/27 04:53:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.56 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -96,7 +96,7 @@ pg_atoi(char *s, int size, int c)
        case sizeof(int32):
            if (errno == ERANGE
 #if defined(HAVE_LONG_INT_64)
-               /* won't get ERANGE on these with 64-bit longs... */
+           /* won't get ERANGE on these with 64-bit longs... */
                || l < INT_MIN || l > INT_MAX
 #endif
                )
index aa070c2694cf6aaeb73c65cf58629709455cdf96..d0802593bf048010351d548de18ba1b8a096d740 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/oid.c,v 1.49 2003/07/27 04:53:07 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/oid.c,v 1.50 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -222,9 +222,7 @@ oidvectorrecv(PG_FUNCTION_ARGS)
    int         slot;
 
    for (slot = 0; slot < INDEX_MAX_KEYS; slot++)
-   {
        result[slot] = (Oid) pq_getmsgint(buf, sizeof(Oid));
-   }
    PG_RETURN_POINTER(result);
 }
 
@@ -240,9 +238,7 @@ oidvectorsend(PG_FUNCTION_ARGS)
 
    pq_begintypsend(&buf);
    for (slot = 0; slot < INDEX_MAX_KEYS; slot++)
-   {
        pq_sendint(&buf, oidArray[slot], sizeof(Oid));
-   }
    PG_RETURN_BYTEA_P(pq_endtypsend(&buf));
 }
 
index 8fd63164f0eedb7cabed39853113d0315693272f..4e0c14be1642bb2e42a9258b3501d41901b14e70 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/oracle_compat.c,v 1.46 2003/07/27 04:53:07 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/oracle_compat.c,v 1.47 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,8 +22,8 @@
 
 
 static text *dotrim(const char *string, int stringlen,
-                   const char *set, int setlen,
-                   bool doltrim, bool dortrim);
+      const char *set, int setlen,
+      bool doltrim, bool dortrim);
 
 
 /********************************************************************
@@ -403,8 +403,8 @@ dotrim(const char *string, int stringlen,
        {
            /*
             * In the multibyte-encoding case, build arrays of pointers to
-            * character starts, so that we can avoid inefficient checks in
-            * the inner loops.
+            * character starts, so that we can avoid inefficient checks
+            * in the inner loops.
             */
            const char **stringchars;
            const char **setchars;
@@ -499,13 +499,14 @@ dotrim(const char *string, int stringlen,
        else
        {
            /*
-            * In the single-byte-encoding case, we don't need such overhead.
+            * In the single-byte-encoding case, we don't need such
+            * overhead.
             */
            if (doltrim)
            {
                while (stringlen > 0)
                {
-                   char    str_ch = *string;
+                   char        str_ch = *string;
 
                    for (i = 0; i < setlen; i++)
                    {
@@ -523,7 +524,7 @@ dotrim(const char *string, int stringlen,
            {
                while (stringlen > 0)
                {
-                   char    str_ch = string[stringlen - 1];
+                   char        str_ch = string[stringlen - 1];
 
                    for (i = 0; i < setlen; i++)
                    {
index 26bde944fa8d8c2a18bc13fd0e37926c0ab6950c..d6a0d9788961f54e3f0b172725ae04ed7211c015 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Portions Copyright (c) 2002, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_locale.c,v 1.21 2003/07/27 04:53:07 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/pg_locale.c,v 1.22 2003/08/04 00:43:25 momjian Exp $
  *
  *-----------------------------------------------------------------------
  */
@@ -25,7 +25,7 @@
  * Instead, we only set the locales briefly when needed, cache the
  * required information obtained from localeconv(), and set them back.
  * The cached information is only used by the formatting functions
- * (to_char, etc.) and the money type.  For the user, this should all be
+ * (to_char, etc.) and the money type. For the user, this should all be
  * transparent.  (Actually, LC_TIME doesn't do anything at all right
  * now.)
  *
@@ -40,7 +40,7 @@
  *             fail = true;
  *         setlocale(category, save);
  * DOES NOT WORK RELIABLY: on some platforms the second setlocale() call
- * will change the memory save is pointing at.  To do this sort of thing
+ * will change the memory save is pointing at. To do this sort of thing
  * safely, you *must* pstrdup what setlocale returns the first time.
  *----------
  */
@@ -134,9 +134,7 @@ locale_messages_assign(const char *value, bool doit, bool interactive)
            return NULL;
    }
    else
-   {
        value = locale_xxx_assign(LC_MESSAGES, value, false, interactive);
-   }
 #endif
    return value;
 }
index df8c8e92cc513fa40d672bdebbed30c7d0a4e8d3..440783764ae2969eb8d28e59cd5670d9ac3b6676 100644 (file)
@@ -308,11 +308,11 @@ pg_stat_get_backend_activity(PG_FUNCTION_ARGS)
 Datum
 pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS)
 {
-   PgStat_StatBeEntry  *beentry;
-   int32                beid;
-   AbsoluteTime         sec;
-   int                  usec;
-   TimestampTz          result;
+   PgStat_StatBeEntry *beentry;
+   int32       beid;
+   AbsoluteTime sec;
+   int         usec;
+   TimestampTz result;
 
    beid = PG_GETARG_INT32(0);
 
@@ -326,8 +326,8 @@ pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS)
    usec = beentry->activity_start_usec;
 
    /*
-    * No time recorded for start of current query -- this is the case
-    * if the user hasn't enabled query-level stats collection.
+    * No time recorded for start of current query -- this is the case if
+    * the user hasn't enabled query-level stats collection.
     */
    if (sec == 0 && usec == 0)
        PG_RETURN_NULL();
index 78b132c5167cbc78546c72dc34149c23e79e0194..96f9903ce4889cea2d7a957044d0dc5e2b7781a0 100644 (file)
@@ -16,7 +16,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/pseudotypes.c,v 1.9 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/pseudotypes.c,v 1.10 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -191,7 +191,7 @@ anyarray_out(PG_FUNCTION_ARGS)
  * anyarray_recv       - binary input routine for pseudo-type ANYARRAY.
  *
  * XXX this could actually be made to work, since the incoming array
- * data will contain the element type OID.  Need to think through
+ * data will contain the element type OID. Need to think through
  * type-safety issues before allowing it, however.
  */
 Datum
index 8853308663294311615c5bc742ad2fedd66cf3e1..8ecffd16c9506e7296e995287bf3b0616f63f8b5 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.46 2003/07/27 04:53:08 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.47 2003/08/04 00:43:25 momjian Exp $
  *
  *     Alistair Crooks added the code for the regex caching
  *     agc - cached the regular expressions used - there's a good chance
@@ -73,10 +73,10 @@ typedef struct cached_re_str
    text       *cre_pat;        /* original RE (untoasted TEXT form) */
    int         cre_flags;      /* compile flags: extended,icase etc */
    regex_t     cre_re;         /* the compiled regular expression */
-} cached_re_str;
+}  cached_re_str;
 
 static int num_res = 0;        /* # of cached re's */
-static cached_re_str re_array[MAX_CACHED_RES]; /* cached re's */
+static cached_re_str re_array[MAX_CACHED_RES]; /* cached re's */
 
 
 /*
@@ -88,7 +88,7 @@ static cached_re_str re_array[MAX_CACHED_RES]; /* cached re's */
  * dat --- the data to match against (need not be null-terminated)
  * dat_len --- the length of the data string
  * cflags --- compile options for the pattern
- * nmatch, pmatch  --- optional return area for match details
+ * nmatch, pmatch  --- optional return area for match details
  *
  * Both pattern and data are given in the database encoding.  We internally
  * convert to array of pg_wchar which is what Spencer's regex package wants.
@@ -105,14 +105,14 @@ RE_compile_and_execute(text *text_re, unsigned char *dat, int dat_len,
    int         i;
    int         regcomp_result;
    int         regexec_result;
-   cached_re_str   re_temp;
+   cached_re_str re_temp;
 
    /* Convert data string to wide characters */
    data = (pg_wchar *) palloc((dat_len + 1) * sizeof(pg_wchar));
    data_len = pg_mb2wchar_with_len(dat, data, dat_len);
 
    /*
-    * Look for a match among previously compiled REs.  Since the data
+    * Look for a match among previously compiled REs.  Since the data
     * structure is self-organizing with most-used entries at the front,
     * our search strategy can just be to scan from the front.
     */
@@ -135,7 +135,7 @@ RE_compile_and_execute(text *text_re, unsigned char *dat, int dat_len,
            regexec_result = pg_regexec(&re_array[0].cre_re,
                                        data,
                                        data_len,
-                                       NULL, /* no details */
+                                       NULL,   /* no details */
                                        nmatch,
                                        pmatch,
                                        0);
@@ -213,7 +213,7 @@ RE_compile_and_execute(text *text_re, unsigned char *dat, int dat_len,
    regexec_result = pg_regexec(&re_array[0].cre_re,
                                data,
                                data_len,
-                               NULL, /* no details */
+                               NULL,   /* no details */
                                nmatch,
                                pmatch,
                                0);
@@ -383,8 +383,8 @@ textregexsubstr(PG_FUNCTION_ARGS)
    /*
     * We pass two regmatch_t structs to get info about the overall match
     * and the match for the first parenthesized subexpression (if any).
-    * If there is a parenthesized subexpression, we return what it matched;
-    * else return what the whole regexp matched.
+    * If there is a parenthesized subexpression, we return what it
+    * matched; else return what the whole regexp matched.
     */
    match = RE_compile_and_execute(p,
                                   (unsigned char *) VARDATA(s),
@@ -395,8 +395,8 @@ textregexsubstr(PG_FUNCTION_ARGS)
    /* match? then return the substring matching the pattern */
    if (match)
    {
-       int     so,
-               eo;
+       int         so,
+                   eo;
 
        so = pmatch[1].rm_so;
        eo = pmatch[1].rm_eo;
@@ -457,7 +457,7 @@ similar_escape(PG_FUNCTION_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_ESCAPE_SEQUENCE),
                     errmsg("invalid escape string"),
-                    errhint("Escape string must be empty or one character.")));
+             errhint("Escape string must be empty or one character.")));
    }
 
    /* We need room for ^, $, and up to 2 output bytes per input byte */
@@ -492,9 +492,7 @@ similar_escape(PG_FUNCTION_ARGS)
            *r++ = '*';
        }
        else if (pchar == '_')
-       {
            *r++ = '.';
-       }
        else if (pchar == '\\' || pchar == '.' || pchar == '?' ||
                 pchar == '{')
        {
@@ -502,14 +500,12 @@ similar_escape(PG_FUNCTION_ARGS)
            *r++ = pchar;
        }
        else
-       {
            *r++ = pchar;
-       }
        p++, plen--;
    }
 
    *r++ = '$';
-   
+
    VARATT_SIZEP(result) = r - ((unsigned char *) result);
 
    PG_RETURN_TEXT_P(result);
index 584e3e5ae820bcc62aa4c97a0ddb0bb8938b9c2b..c4059a212071c0aee409b898df2478f2286049bf 100644 (file)
@@ -13,7 +13,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.79 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.80 2003/08/04 00:43:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -114,13 +114,13 @@ regprocin(PG_FUNCTION_ARGS)
        if (matches == 0)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                    errmsg("no procedure with name %s", pro_name_or_oid)));
+                 errmsg("no procedure with name %s", pro_name_or_oid)));
 
        else if (matches > 1)
            ereport(ERROR,
                    (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
                     errmsg("more than one procedure named %s",
-                            pro_name_or_oid)));
+                           pro_name_or_oid)));
 
        PG_RETURN_OID(result);
    }
@@ -140,7 +140,7 @@ regprocin(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
                 errmsg("more than one procedure named %s",
-                        pro_name_or_oid)));
+                       pro_name_or_oid)));
 
    result = clist->oid;
 
@@ -464,12 +464,12 @@ regoperin(PG_FUNCTION_ARGS)
        if (matches == 0)
            ereport(ERROR,
                    (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                    errmsg("no operator with name %s", opr_name_or_oid)));
+                  errmsg("no operator with name %s", opr_name_or_oid)));
        else if (matches > 1)
            ereport(ERROR,
                    (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
                     errmsg("more than one operator named %s",
-                            opr_name_or_oid)));
+                           opr_name_or_oid)));
 
        PG_RETURN_OID(result);
    }
@@ -489,7 +489,7 @@ regoperin(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
                 errmsg("more than one operator named %s",
-                        opr_name_or_oid)));
+                       opr_name_or_oid)));
 
    result = clist->oid;
 
index ed95d8ed6c444a4af6ba4cc1da5a7fdbeea80f52..9222bf1c1770c6521746a640a87f1e123d747b3e 100644 (file)
@@ -17,7 +17,7 @@
  *
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.52 2003/07/22 22:14:57 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ri_triggers.c,v 1.53 2003/08/04 00:43:25 momjian Exp $
  *
  * ----------
  */
@@ -150,29 +150,29 @@ static bool ri_OneKeyEqual(Relation rel, int column, HeapTuple oldtup,
               HeapTuple newtup, RI_QueryKey *key, int pairidx);
 static bool ri_AttributesEqual(Oid typeid, Datum oldvalue, Datum newvalue);
 static bool ri_Check_Pk_Match(Relation pk_rel, Relation fk_rel,
-                             HeapTuple old_row,
-                             Oid tgoid, int match_type,
-                             int tgnargs, char **tgargs);
+                 HeapTuple old_row,
+                 Oid tgoid, int match_type,
+                 int tgnargs, char **tgargs);
 
 static void ri_InitHashTables(void);
 static void *ri_FetchPreparedPlan(RI_QueryKey *key);
 static void ri_HashPreparedPlan(RI_QueryKey *key, void *plan);
 
 static void ri_CheckTrigger(FunctionCallInfo fcinfo, const char *funcname,
-                           int tgkind);
+               int tgkind);
 static void *ri_PlanCheck(const char *querystr, int nargs, Oid *argtypes,
-                         RI_QueryKey *qkey, Relation fk_rel, Relation pk_rel,
-                         bool cache_plan);
+            RI_QueryKey *qkey, Relation fk_rel, Relation pk_rel,
+            bool cache_plan);
 static bool ri_PerformCheck(RI_QueryKey *qkey, void *qplan,
-                           Relation fk_rel, Relation pk_rel,
-                           HeapTuple old_tuple, HeapTuple new_tuple,
-                           int expect_OK, const char *constrname);
+               Relation fk_rel, Relation pk_rel,
+               HeapTuple old_tuple, HeapTuple new_tuple,
+               int expect_OK, const char *constrname);
 static void ri_ExtractValues(RI_QueryKey *qkey, int key_idx,
-                            Relation rel, HeapTuple tuple,
-                            Datum *vals, char *nulls);
+                Relation rel, HeapTuple tuple,
+                Datum *vals, char *nulls);
 static void ri_ReportViolation(RI_QueryKey *qkey, const char *constrname,
-                              Relation pk_rel, Relation fk_rel,
-                              HeapTuple violator, bool spi_err);
+                  Relation pk_rel, Relation fk_rel,
+                  HeapTuple violator, bool spi_err);
 
 
 /* ----------
@@ -341,7 +341,7 @@ RI_FKey_check(PG_FUNCTION_ARGS)
                    ereport(ERROR,
                            (errcode(ERRCODE_FOREIGN_KEY_VIOLATION),
                             errmsg("insert or update on \"%s\" violates foreign key constraint \"%s\"",
-                                   RelationGetRelationName(trigdata->tg_relation),
+                         RelationGetRelationName(trigdata->tg_relation),
                                    tgargs[RI_CONSTRAINT_NAME_ARGNO]),
                             errdetail("MATCH FULL does not allow mixing of NULL and non-NULL key values.")));
                    heap_close(pk_rel, RowShareLock);
@@ -366,7 +366,7 @@ RI_FKey_check(PG_FUNCTION_ARGS)
                     */
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("MATCH PARTIAL not yet implemented")));
+                          errmsg("MATCH PARTIAL not yet implemented")));
                    heap_close(pk_rel, RowShareLock);
                    return PointerGetDatum(NULL);
            }
@@ -381,8 +381,8 @@ RI_FKey_check(PG_FUNCTION_ARGS)
    }
 
    /*
-    * No need to check anything if old and new references are the
-    * same on UPDATE.
+    * No need to check anything if old and new references are the same on
+    * UPDATE.
     */
    if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
    {
@@ -542,7 +542,7 @@ ri_Check_Pk_Match(Relation pk_rel, Relation fk_rel,
                     */
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("MATCH PARTIAL not yet implemented")));
+                          errmsg("MATCH PARTIAL not yet implemented")));
                    break;
            }
 
@@ -759,7 +759,8 @@ RI_FKey_noaction_del(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to check for existing references.
+            * We have a plan now. Run it to check for existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -897,8 +898,8 @@ RI_FKey_noaction_upd(PG_FUNCTION_ARGS)
                                  match_type, tgnargs, tgargs))
            {
                /*
-                * There's either another row, or no row could match this one.  In
-                * either case, we don't need to do the check.
+                * There's either another row, or no row could match this
+                * one.  In either case, we don't need to do the check.
                 */
                heap_close(fk_rel, RowShareLock);
                return PointerGetDatum(NULL);
@@ -950,7 +951,8 @@ RI_FKey_noaction_upd(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to check for existing references.
+            * We have a plan now. Run it to check for existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -1110,9 +1112,9 @@ RI_FKey_cascade_del(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Build up the arguments
-            * from the key values in the deleted PK tuple and delete the
-            * referencing rows
+            * We have a plan now. Build up the arguments from the key
+            * values in the deleted PK tuple and delete the referencing
+            * rows
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -1296,7 +1298,8 @@ RI_FKey_cascade_upd(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to update the existing references.
+            * We have a plan now. Run it to update the existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -1465,7 +1468,8 @@ RI_FKey_restrict_del(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to check for existing references.
+            * We have a plan now. Run it to check for existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -1646,7 +1650,8 @@ RI_FKey_restrict_upd(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to check for existing references.
+            * We have a plan now. Run it to check for existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -1816,7 +1821,8 @@ RI_FKey_setnull_del(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to check for existing references.
+            * We have a plan now. Run it to check for existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -2034,7 +2040,8 @@ RI_FKey_setnull_upd(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to update the existing references.
+            * We have a plan now. Run it to update the existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -2209,14 +2216,14 @@ RI_FKey_setdefault_del(PG_FUNCTION_ARGS)
                 * appropriate column defaults, if any (if not, they stay
                 * NULL).
                 *
-                * XXX  This is really ugly; it'd be better to use "UPDATE
+                * XXX  This is really ugly; it'd be better to use "UPDATE
                 * SET foo = DEFAULT", if we had it.
                 */
                spi_plan = (Plan *) lfirst(((_SPI_plan *) qplan)->ptlist);
                foreach(l, spi_plan->targetlist)
                {
                    TargetEntry *tle = (TargetEntry *) lfirst(l);
-                   Node *dfl;
+                   Node       *dfl;
 
                    /* Ignore any junk columns or Var=Var columns */
                    if (tle->resdom->resjunk)
@@ -2234,7 +2241,8 @@ RI_FKey_setdefault_del(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to update the existing references.
+            * We have a plan now. Run it to update the existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -2444,14 +2452,14 @@ RI_FKey_setdefault_upd(PG_FUNCTION_ARGS)
                 * appropriate column defaults, if any (if not, they stay
                 * NULL).
                 *
-                * XXX  This is really ugly; it'd be better to use "UPDATE
+                * XXX  This is really ugly; it'd be better to use "UPDATE
                 * SET foo = DEFAULT", if we had it.
                 */
                spi_plan = (Plan *) lfirst(((_SPI_plan *) qplan)->ptlist);
                foreach(l, spi_plan->targetlist)
                {
                    TargetEntry *tle = (TargetEntry *) lfirst(l);
-                   Node *dfl;
+                   Node       *dfl;
 
                    /* Ignore any junk columns or Var=Var columns */
                    if (tle->resdom->resjunk)
@@ -2469,7 +2477,8 @@ RI_FKey_setdefault_upd(PG_FUNCTION_ARGS)
            }
 
            /*
-            * We have a plan now. Run it to update the existing references.
+            * We have a plan now. Run it to update the existing
+            * references.
             */
            ri_PerformCheck(&qkey, qplan,
                            fk_rel, pk_rel,
@@ -2542,8 +2551,8 @@ RI_FKey_keyequal_upd(TriggerData *trigdata)
        (tgnargs % 2) != 0)
        ereport(ERROR,
                (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                errmsg("%s() called with wrong number of trigger arguments",
-                       "RI_FKey_keyequal_upd")));
+            errmsg("%s() called with wrong number of trigger arguments",
+                   "RI_FKey_keyequal_upd")));
 
    /*
     * Nothing to do if no column names to compare given
@@ -2560,9 +2569,9 @@ RI_FKey_keyequal_upd(TriggerData *trigdata)
    if (!OidIsValid(trigdata->tg_trigger->tgconstrrelid))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                errmsg("no target table given for trigger \"%s\" on \"%s\"",
-                       trigdata->tg_trigger->tgname,
-                       RelationGetRelationName(trigdata->tg_relation)),
+            errmsg("no target table given for trigger \"%s\" on \"%s\"",
+                   trigdata->tg_trigger->tgname,
+                   RelationGetRelationName(trigdata->tg_relation)),
                 errhint("Remove this RI trigger and its mates, then do ALTER TABLE ADD CONSTRAINT.")));
 
    fk_rel = heap_open(trigdata->tg_trigger->tgconstrrelid, AccessShareLock);
@@ -2750,7 +2759,7 @@ ri_CheckTrigger(FunctionCallInfo fcinfo, const char *funcname, int tgkind)
    if (!CALLED_AS_TRIGGER(fcinfo))
        ereport(ERROR,
                (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                errmsg("%s() was not fired by trigger manager", funcname)));
+            errmsg("%s() was not fired by trigger manager", funcname)));
 
    /*
     * Check proper event
@@ -2766,28 +2775,28 @@ ri_CheckTrigger(FunctionCallInfo fcinfo, const char *funcname, int tgkind)
        case RI_TRIGTYPE_INSERT:
            if (!TRIGGER_FIRED_BY_INSERT(trigdata->tg_event))
                ereport(ERROR,
-                       (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                        errmsg("%s() must be fired for INSERT", funcname)));
+                    (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
+                     errmsg("%s() must be fired for INSERT", funcname)));
            break;
        case RI_TRIGTYPE_UPDATE:
            if (!TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
                ereport(ERROR,
-                       (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                        errmsg("%s() must be fired for UPDATE", funcname)));
+                    (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
+                     errmsg("%s() must be fired for UPDATE", funcname)));
            break;
        case RI_TRIGTYPE_INUP:
            if (!TRIGGER_FIRED_BY_INSERT(trigdata->tg_event) &&
                !TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
                ereport(ERROR,
-                       (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                        errmsg("%s() must be fired for INSERT or UPDATE",
-                    funcname)));
+                    (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
+                     errmsg("%s() must be fired for INSERT or UPDATE",
+                            funcname)));
            break;
        case RI_TRIGTYPE_DELETE:
            if (!TRIGGER_FIRED_BY_DELETE(trigdata->tg_event))
                ereport(ERROR,
-                       (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                        errmsg("%s() must be fired for DELETE", funcname)));
+                    (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
+                     errmsg("%s() must be fired for DELETE", funcname)));
            break;
    }
 
@@ -2800,19 +2809,19 @@ ri_CheckTrigger(FunctionCallInfo fcinfo, const char *funcname, int tgkind)
        (tgnargs % 2) != 0)
        ereport(ERROR,
                (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED),
-                errmsg("%s() called with wrong number of trigger arguments",
-                       funcname)));
+            errmsg("%s() called with wrong number of trigger arguments",
+                   funcname)));
 
    /*
-    * Check that tgconstrrelid is known.  We need to check here because of
-    * ancient pg_dump bug; see notes in CreateTrigger().
+    * Check that tgconstrrelid is known.  We need to check here because
+    * of ancient pg_dump bug; see notes in CreateTrigger().
     */
    if (!OidIsValid(trigdata->tg_trigger->tgconstrrelid))
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
-                errmsg("no target table given for trigger \"%s\" on \"%s\"",
-                       trigdata->tg_trigger->tgname,
-                       RelationGetRelationName(trigdata->tg_relation)),
+            errmsg("no target table given for trigger \"%s\" on \"%s\"",
+                   trigdata->tg_trigger->tgname,
+                   RelationGetRelationName(trigdata->tg_relation)),
                 errhint("Remove this RI trigger and its mates, then do ALTER TABLE ADD CONSTRAINT.")));
 }
 
@@ -2833,9 +2842,9 @@ ri_PlanCheck(const char *querystr, int nargs, Oid *argtypes,
    AclId       save_uid;
 
    /*
-    * The query is always run against the FK table except
-    * when this is an update/insert trigger on the FK table itself -
-    * either RI_PLAN_CHECK_LOOKUPPK or RI_PLAN_CHECK_LOOKUPPK_NOCOLS
+    * The query is always run against the FK table except when this is an
+    * update/insert trigger on the FK table itself - either
+    * RI_PLAN_CHECK_LOOKUPPK or RI_PLAN_CHECK_LOOKUPPK_NOCOLS
     */
    if (qkey->constr_queryno == RI_PLAN_CHECK_LOOKUPPK ||
        qkey->constr_queryno == RI_PLAN_CHECK_LOOKUPPK_NOCOLS)
@@ -2882,9 +2891,9 @@ ri_PerformCheck(RI_QueryKey *qkey, void *qplan,
    char        nulls[RI_MAX_NUMKEYS * 2];
 
    /*
-    * The query is always run against the FK table except
-    * when this is an update/insert trigger on the FK table itself -
-    * either RI_PLAN_CHECK_LOOKUPPK or RI_PLAN_CHECK_LOOKUPPK_NOCOLS
+    * The query is always run against the FK table except when this is an
+    * update/insert trigger on the FK table itself - either
+    * RI_PLAN_CHECK_LOOKUPPK or RI_PLAN_CHECK_LOOKUPPK_NOCOLS
     */
    if (qkey->constr_queryno == RI_PLAN_CHECK_LOOKUPPK ||
        qkey->constr_queryno == RI_PLAN_CHECK_LOOKUPPK_NOCOLS)
@@ -2893,10 +2902,10 @@ ri_PerformCheck(RI_QueryKey *qkey, void *qplan,
        query_rel = fk_rel;
 
    /*
-    * The values for the query are taken from the table on which the trigger
-    * is called - it is normally the other one with respect to query_rel.
-    * An exception is ri_Check_Pk_Match(), which uses the PK table for both
-    * (the case when constrname == NULL)
+    * The values for the query are taken from the table on which the
+    * trigger is called - it is normally the other one with respect to
+    * query_rel. An exception is ri_Check_Pk_Match(), which uses the PK
+    * table for both (the case when constrname == NULL)
     */
    if (qkey->constr_queryno == RI_PLAN_CHECK_LOOKUPPK && constrname != NULL)
    {
@@ -2916,7 +2925,7 @@ ri_PerformCheck(RI_QueryKey *qkey, void *qplan,
                         vals, nulls);
        if (old_tuple)
            ri_ExtractValues(qkey, key_idx, source_rel, old_tuple,
-                            vals + qkey->nkeypairs, nulls + qkey->nkeypairs);
+                       vals + qkey->nkeypairs, nulls + qkey->nkeypairs);
    }
    else
    {
@@ -2930,9 +2939,9 @@ ri_PerformCheck(RI_QueryKey *qkey, void *qplan,
 
    /*
     * If this is a select query (e.g., for a 'no action' or 'restrict'
-    * trigger), we only need to see if there is a single row in the table,
-    * matching the key.  Otherwise, limit = 0 - because we want the query to
-    * affect ALL the matching rows.
+    * trigger), we only need to see if there is a single row in the
+    * table, matching the key.  Otherwise, limit = 0 - because we want
+    * the query to affect ALL the matching rows.
     */
    limit = (expect_OK == SPI_OK_SELECT) ? 1 : 0;
 
@@ -2954,7 +2963,7 @@ ri_PerformCheck(RI_QueryKey *qkey, void *qplan,
 
    /* XXX wouldn't it be clearer to do this part at the caller? */
    if (constrname && expect_OK == SPI_OK_SELECT &&
-       (SPI_processed==0) == (qkey->constr_queryno==RI_PLAN_CHECK_LOOKUPPK))
+       (SPI_processed == 0) == (qkey->constr_queryno == RI_PLAN_CHECK_LOOKUPPK))
        ri_ReportViolation(qkey, constrname,
                           pk_rel, fk_rel,
                           new_tuple ? new_tuple : old_tuple,
@@ -3049,9 +3058,9 @@ ri_ReportViolation(RI_QueryKey *qkey, const char *constrname,
    /* Get printable versions of the keys involved */
    for (idx = 0; idx < qkey->nkeypairs; idx++)
    {
-       int     fnum = qkey->keypair[idx][key_idx];
-       char   *name,
-              *val;
+       int         fnum = qkey->keypair[idx][key_idx];
+       char       *name,
+                  *val;
 
        name = SPI_fname(rel->rd_att, fnum);
        val = SPI_getvalue(violator, rel->rd_att, fnum);
@@ -3075,22 +3084,22 @@ ri_ReportViolation(RI_QueryKey *qkey, const char *constrname,
    }
 
    if (onfk)
-     ereport(ERROR,
-             (errcode(ERRCODE_FOREIGN_KEY_VIOLATION),
-              errmsg("insert or update on \"%s\" violates foreign key constraint \"%s\"",
-                     RelationGetRelationName(fk_rel), constrname),
-              errdetail("Key (%s)=(%s) is not present in \"%s\".",
-                        key_names, key_values,
-                        RelationGetRelationName(pk_rel))));
+       ereport(ERROR,
+               (errcode(ERRCODE_FOREIGN_KEY_VIOLATION),
+                errmsg("insert or update on \"%s\" violates foreign key constraint \"%s\"",
+                       RelationGetRelationName(fk_rel), constrname),
+                errdetail("Key (%s)=(%s) is not present in \"%s\".",
+                          key_names, key_values,
+                          RelationGetRelationName(pk_rel))));
    else
-     ereport(ERROR,
-             (errcode(ERRCODE_FOREIGN_KEY_VIOLATION),
-              errmsg("update or delete on \"%s\" violates foreign key constraint \"%s\" on \"%s\"",
-                     RelationGetRelationName(pk_rel),
-                     constrname, RelationGetRelationName(fk_rel)),
-              errdetail("Key (%s)=(%s) is still referenced from \"%s\".",
-                        key_names, key_values,
-                        RelationGetRelationName(fk_rel))));
+       ereport(ERROR,
+               (errcode(ERRCODE_FOREIGN_KEY_VIOLATION),
+                errmsg("update or delete on \"%s\" violates foreign key constraint \"%s\" on \"%s\"",
+                       RelationGetRelationName(pk_rel),
+                       constrname, RelationGetRelationName(fk_rel)),
+             errdetail("Key (%s)=(%s) is still referenced from \"%s\".",
+                       key_names, key_values,
+                       RelationGetRelationName(fk_rel))));
 }
 
 /* ----------
index e2d9dd7ce9bc002e27b5556c1095994ebe3751da..dc0807fc1322f0bc7126cfd98280102829afa74d 100644 (file)
@@ -3,7 +3,7 @@
  *             back to source text
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.148 2003/08/01 18:00:19 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.149 2003/08/04 00:43:26 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
  */
 
 /* Indent counts */
-#define PRETTYINDENT_STD        8
-#define PRETTYINDENT_JOIN      13
-#define PRETTYINDENT_JOIN_ON    (PRETTYINDENT_JOIN-PRETTYINDENT_STD)
-#define PRETTYINDENT_VAR        4
+#define PRETTYINDENT_STD       8
+#define PRETTYINDENT_JOIN     13
+#define PRETTYINDENT_JOIN_ON   (PRETTYINDENT_JOIN-PRETTYINDENT_STD)
+#define PRETTYINDENT_VAR       4
 
 /* Pretty flags */
-#define PRETTYFLAG_PAREN        1
-#define PRETTYFLAG_INDENT       2
+#define PRETTYFLAG_PAREN       1
+#define PRETTYFLAG_INDENT      2
 
 /* macro to test if pretty action needed */
-#define PRETTY_PAREN(context)   ((context)->prettyFlags & PRETTYFLAG_PAREN)
-#define PRETTY_INDENT(context)  ((context)->prettyFlags & PRETTYFLAG_INDENT)
+#define PRETTY_PAREN(context)  ((context)->prettyFlags & PRETTYFLAG_PAREN)
+#define PRETTY_INDENT(context) ((context)->prettyFlags & PRETTYFLAG_INDENT)
 
 
 /* ----------
@@ -146,21 +146,21 @@ static char *query_getviewrule = "SELECT * FROM pg_catalog.pg_rewrite WHERE ev_c
  * ----------
  */
 static char *deparse_expression_pretty(Node *expr, List *dpcontext,
-                                      bool forceprefix, bool showimplicit,
-                                      int prettyFlags, int startIndent);
+                         bool forceprefix, bool showimplicit,
+                         int prettyFlags, int startIndent);
 static text *pg_do_getviewdef(Oid viewoid, int prettyFlags);
 static void decompile_column_index_array(Datum column_index_array, Oid relId,
                             StringInfo buf);
 static Datum pg_get_ruledef_worker(Oid ruleoid, int prettyFlags);
 static Datum pg_get_indexdef_worker(Oid indexrelid, int colno,
-                                   int prettyFlags);
+                      int prettyFlags);
 static Datum pg_get_constraintdef_worker(Oid constraintId, int prettyFlags);
 static Datum pg_get_expr_worker(text *expr, Oid relid, char *relname,
-                               int prettyFlags);
+                  int prettyFlags);
 static void make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
-                        int prettyFlags);
+            int prettyFlags);
 static void make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
-                        int prettyFlags);
+            int prettyFlags);
 static void get_query_def(Query *query, StringInfo buf, List *parentnamespace,
              TupleDesc resultDesc, int prettyFlags, int startIndent);
 static void get_select_query_def(Query *query, deparse_context *context,
@@ -181,16 +181,16 @@ static void get_names_for_var(Var *var, deparse_context *context,
                  char **schemaname, char **refname, char **attname);
 static RangeTblEntry *find_rte_by_refname(const char *refname,
                    deparse_context *context);
-static const char *get_simple_binary_op_name(OpExpr *expr);
+static const char *get_simple_binary_op_name(OpExpr * expr);
 static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags);
 static void appendStringInfoSpaces(StringInfo buf, int count);
 static void appendContextKeyword(deparse_context *context, const char *str,
-                        int indentBefore, int indentAfter, int indentPlus);
+                    int indentBefore, int indentAfter, int indentPlus);
 static void get_rule_expr(Node *node, deparse_context *context,
-                         bool showimplicit);
-static void get_oper_expr(OpExpr *expr, deparse_context *context);
-static void get_func_expr(FuncExpr *expr, deparse_context *context,
-                         bool showimplicit);
+             bool showimplicit);
+static void get_oper_expr(OpExpr * expr, deparse_context *context);
+static void get_func_expr(FuncExpr * expr, deparse_context *context,
+             bool showimplicit);
 static void get_agg_expr(Aggref *aggref, deparse_context *context);
 static Node *strip_type_coercion(Node *expr, Oid resultType);
 static void get_const_expr(Const *constval, deparse_context *context);
@@ -234,7 +234,7 @@ pg_get_ruledef_ext(PG_FUNCTION_ARGS)
    bool        pretty = PG_GETARG_BOOL(1);
    int         prettyFlags;
 
-   prettyFlags = pretty ? PRETTYFLAG_PAREN|PRETTYFLAG_INDENT : 0;
+   prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
    return pg_get_ruledef_worker(ruleoid, prettyFlags);
 }
 
@@ -345,7 +345,7 @@ pg_get_viewdef_ext(PG_FUNCTION_ARGS)
    text       *ruledef;
    int         prettyFlags;
 
-   prettyFlags = pretty ? PRETTYFLAG_PAREN|PRETTYFLAG_INDENT : 0;
+   prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
    ruledef = pg_do_getviewdef(viewoid, prettyFlags);
    PG_RETURN_TEXT_P(ruledef);
 }
@@ -379,7 +379,7 @@ pg_get_viewdef_name_ext(PG_FUNCTION_ARGS)
    Oid         viewoid;
    text       *ruledef;
 
-   prettyFlags = pretty ? PRETTYFLAG_PAREN|PRETTYFLAG_INDENT : 0;
+   prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
    viewrel = makeRangeVarFromNameList(textToQualifiedNameList(viewname,
                                                         "get_viewdef"));
    viewoid = RangeVarGetRelid(viewrel, false);
@@ -481,7 +481,7 @@ pg_get_triggerdef(PG_FUNCTION_ARGS)
    ScanKeyData skey[1];
    SysScanDesc tgscan;
    int         findx = 0;
-   char        *tgname;
+   char       *tgname;
 
    /*
     * Fetch the pg_trigger tuple by the Oid of the trigger
@@ -544,7 +544,7 @@ pg_get_triggerdef(PG_FUNCTION_ARGS)
    {
        if (trigrec->tgconstrrelid != InvalidOid)
            appendStringInfo(&buf, "FROM %s ",
-                            generate_relation_name(trigrec->tgconstrrelid));
+                        generate_relation_name(trigrec->tgconstrrelid));
        if (!trigrec->tgdeferrable)
            appendStringInfo(&buf, "NOT ");
        appendStringInfo(&buf, "DEFERRABLE INITIALLY ");
@@ -633,11 +633,11 @@ Datum
 pg_get_indexdef_ext(PG_FUNCTION_ARGS)
 {
    Oid         indexrelid = PG_GETARG_OID(0);
-   int32       colno = PG_GETARG_INT32(1);
+   int32       colno = PG_GETARG_INT32(1);
    bool        pretty = PG_GETARG_BOOL(2);
    int         prettyFlags;
 
-   prettyFlags = pretty ? PRETTYFLAG_PAREN|PRETTYFLAG_INDENT : 0;
+   prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
    return pg_get_indexdef_worker(indexrelid, colno, prettyFlags);
 }
 
@@ -696,9 +696,9 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
    amrec = (Form_pg_am) GETSTRUCT(ht_am);
 
    /*
-    * Get the index expressions, if any.  (NOTE: we do not use the relcache
-    * versions of the expressions and predicate, because we want to display
-    * non-const-folded expressions.)
+    * Get the index expressions, if any.  (NOTE: we do not use the
+    * relcache versions of the expressions and predicate, because we want
+    * to display non-const-folded expressions.)
     */
    if (!heap_attisnull(ht_idx, Anum_pg_index_indexprs))
    {
@@ -726,11 +726,11 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
    initStringInfo(&buf);
 
    if (!colno)
-       appendStringInfo(&buf, "CREATE %sINDEX %s ON %s USING %s (",
-                    idxrec->indisunique ? "UNIQUE " : "",
-                    quote_identifier(NameStr(idxrelrec->relname)),
-                    generate_relation_name(indrelid),
-                    quote_identifier(NameStr(amrec->amname)));
+       appendStringInfo(&buf, "CREATE %sINDEX %s ON %s USING %s (",
+                        idxrec->indisunique ? "UNIQUE " : "",
+                        quote_identifier(NameStr(idxrelrec->relname)),
+                        generate_relation_name(indrelid),
+                        quote_identifier(NameStr(amrec->amname)));
 
    /*
     * Report the indexed attributes
@@ -741,7 +741,7 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
        AttrNumber  attnum = idxrec->indkey[keyno];
 
        if (!colno)
-           appendStringInfo(&buf, sep);
+           appendStringInfo(&buf, sep);
        sep = ", ";
 
        if (attnum != 0)
@@ -750,8 +750,8 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
            char       *attname;
 
            attname = get_relid_attribute_name(indrelid, attnum);
-           if (!colno || colno == keyno+1)
-               appendStringInfo(&buf, "%s", quote_identifier(attname));
+           if (!colno || colno == keyno + 1)
+               appendStringInfo(&buf, "%s", quote_identifier(attname));
            keycoltype = get_atttype(indrelid, attnum);
        }
        else
@@ -766,13 +766,13 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
            /* Deparse */
            str = deparse_expression_pretty(indexkey, context, false, false,
                                            prettyFlags, 0);
-           if (!colno || colno == keyno+1)
+           if (!colno || colno == keyno + 1)
            {
-               /* Need parens if it's not a bare function call */
-               if (indexkey && IsA(indexkey, FuncExpr) &&
+               /* Need parens if it's not a bare function call */
+               if (indexkey && IsA(indexkey, FuncExpr) &&
                    ((FuncExpr *) indexkey)->funcformat == COERCE_EXPLICIT_CALL)
                    appendStringInfo(&buf, "%s", str);
-               else
+               else
                    appendStringInfo(&buf, "(%s)", str);
            }
            keycoltype = exprType(indexkey);
@@ -782,19 +782,19 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
         * Add the operator class name
         */
        if (!colno)
-           get_opclass_name(idxrec->indclass[keyno], keycoltype,
-                        &buf);
+           get_opclass_name(idxrec->indclass[keyno], keycoltype,
+                            &buf);
    }
 
    if (!colno)
    {
-       appendStringInfoChar(&buf, ')');
+       appendStringInfoChar(&buf, ')');
 
-       /*
-        * If it's a partial index, decompile and append the predicate
-        */
-       if (!heap_attisnull(ht_idx, Anum_pg_index_indpred))
-       {
+       /*
+        * If it's a partial index, decompile and append the predicate
+        */
+       if (!heap_attisnull(ht_idx, Anum_pg_index_indpred))
+       {
            Node       *node;
            Datum       predDatum;
            bool        isnull;
@@ -810,9 +810,9 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
            pfree(predString);
 
            /*
-            * If top level is a List, assume it is an implicit-AND structure,
-            * and convert to explicit AND.  This is needed for partial index
-            * predicates.
+            * If top level is a List, assume it is an implicit-AND
+            * structure, and convert to explicit AND.  This is needed for
+            * partial index predicates.
             */
            if (node && IsA(node, List))
                node = (Node *) make_ands_explicit((List *) node);
@@ -820,7 +820,7 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, int prettyFlags)
            str = deparse_expression_pretty(node, context, false, false,
                                            prettyFlags, 0);
            appendStringInfo(&buf, " WHERE %s", str);
-       }
+       }
    }
 
    /*
@@ -862,7 +862,7 @@ pg_get_constraintdef_ext(PG_FUNCTION_ARGS)
    bool        pretty = PG_GETARG_BOOL(1);
    int         prettyFlags;
 
-   prettyFlags = pretty ? PRETTYFLAG_PAREN|PRETTYFLAG_INDENT : 0;
+   prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
    return pg_get_constraintdef_worker(constraintId, prettyFlags);
 }
 
@@ -958,7 +958,7 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
                switch (conForm->confupdtype)
                {
                    case FKCONSTR_ACTION_NOACTION:
-                       string = NULL; /* suppress default */
+                       string = NULL;  /* suppress default */
                        break;
                    case FKCONSTR_ACTION_RESTRICT:
                        string = "RESTRICT";
@@ -984,7 +984,7 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
                switch (conForm->confdeltype)
                {
                    case FKCONSTR_ACTION_NOACTION:
-                       string = NULL; /* suppress default */
+                       string = NULL;  /* suppress default */
                        break;
                    case FKCONSTR_ACTION_RESTRICT:
                        string = "RESTRICT";
@@ -1049,8 +1049,11 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
                List       *context;
 
                /* Start off the constraint definition */
-               /* The consrc for CHECK constraints always seems to be
-                  bracketed, so we don't add extra brackets here. */
+
+               /*
+                * The consrc for CHECK constraints always seems to be
+                * bracketed, so we don't add extra brackets here.
+                */
                appendStringInfo(&buf, "CHECK ");
 
                /* Fetch constraint source */
@@ -1064,9 +1067,9 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
                expr = stringToNode(conbin);
 
                /*
-                * If top level is a List, assume it is an implicit-AND structure, and
-                * convert to explicit AND.  This is needed for partial index
-                * predicates.
+                * If top level is a List, assume it is an implicit-AND
+                * structure, and convert to explicit AND.  This is needed
+                * for partial index predicates.
                 */
                if (expr && IsA(expr, List))
                    expr = (Node *) make_ands_explicit((List *) expr);
@@ -1076,9 +1079,11 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
                    context = deparse_context_for(get_rel_name(conForm->conrelid),
                                                  conForm->conrelid);
                else
+
                    /*
-                    * Since VARNOs aren't allowed in domain constraints, relation context
-                    * isn't required as anything other than a shell.
+                    * Since VARNOs aren't allowed in domain constraints,
+                    * relation context isn't required as anything other
+                    * than a shell.
                     */
                    context = deparse_context_for(get_typname(conForm->contypid),
                                                  InvalidOid);
@@ -1087,7 +1092,7 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
                                                   prettyFlags, 0);
 
                /* Append the constraint source */
-               appendStringInfoString(&buf, consrc); 
+               appendStringInfoString(&buf, consrc);
 
                break;
            }
@@ -1095,7 +1100,7 @@ pg_get_constraintdef_worker(Oid constraintId, int prettyFlags)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                     errmsg("unsupported constraint type \"%c\"",
-                            conForm->contype)));
+                           conForm->contype)));
            break;
    }
 
@@ -1162,8 +1167,8 @@ decompile_column_index_array(Datum column_index_array, Oid relId,
 Datum
 pg_get_expr(PG_FUNCTION_ARGS)
 {
-   text    *expr = PG_GETARG_TEXT_P(0);
-   Oid relid = PG_GETARG_OID(1);
+   text       *expr = PG_GETARG_TEXT_P(0);
+   Oid         relid = PG_GETARG_OID(1);
    char       *relname;
 
    /* Get the name for the relation */
@@ -1177,13 +1182,13 @@ pg_get_expr(PG_FUNCTION_ARGS)
 Datum
 pg_get_expr_ext(PG_FUNCTION_ARGS)
 {
-   text    *expr = PG_GETARG_TEXT_P(0);
-   Oid relid = PG_GETARG_OID(1);
+   text       *expr = PG_GETARG_TEXT_P(0);
+   Oid         relid = PG_GETARG_OID(1);
    bool        pretty = PG_GETARG_BOOL(2);
    int         prettyFlags;
    char       *relname;
 
-   prettyFlags = pretty ? PRETTYFLAG_PAREN|PRETTYFLAG_INDENT : 0;
+   prettyFlags = pretty ? PRETTYFLAG_PAREN | PRETTYFLAG_INDENT : 0;
 
    /* Get the name for the relation */
    relname = get_rel_name(relid);
@@ -1276,7 +1281,7 @@ char *
 deparse_expression(Node *expr, List *dpcontext,
                   bool forceprefix, bool showimplicit)
 {
-    return deparse_expression_pretty(expr, dpcontext, forceprefix,
+   return deparse_expression_pretty(expr, dpcontext, forceprefix,
                                     showimplicit, 0, 0);
 }
 
@@ -1292,7 +1297,7 @@ deparse_expression(Node *expr, List *dpcontext,
  * forceprefix is TRUE to force all Vars to be prefixed with their table names.
  *
  * showimplicit is TRUE to force all implicit casts to be shown explicitly.
- * 
+ *
  * tries to pretty up the output according to prettyFlags and startIndent.
  *
  * The result is a palloc'd string.
@@ -1523,9 +1528,9 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
                     quote_identifier(rulename));
 
    if (prettyFlags & PRETTYFLAG_INDENT)
-       appendStringInfoString(buf, "\n    ON ");
+       appendStringInfoString(buf, "\n    ON ");
    else
-       appendStringInfoString(buf, " ON ");
+       appendStringInfoString(buf, " ON ");
 
    /* The event the rule is fired for */
    switch (ev_type)
@@ -1550,7 +1555,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                     errmsg("rule \"%s\" has unsupported event type %d",
-                            rulename, ev_type)));
+                           rulename, ev_type)));
            break;
    }
 
@@ -1572,7 +1577,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
        deparse_namespace dpns;
 
        if (prettyFlags & PRETTYFLAG_INDENT)
-           appendStringInfoString(buf, "\n  ");
+           appendStringInfoString(buf, "\n  ");
        appendStringInfo(buf, " WHERE ");
 
        qual = stringToNode(ev_qual);
@@ -1621,9 +1626,9 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
            query = (Query *) lfirst(action);
            get_query_def(query, buf, NIL, NULL, prettyFlags, 0);
            if (prettyFlags)
-               appendStringInfo(buf, ";\n");
+               appendStringInfo(buf, ";\n");
            else
-               appendStringInfo(buf, "; ");
+               appendStringInfo(buf, "; ");
        }
        appendStringInfo(buf, ");");
    }
@@ -1803,8 +1808,8 @@ get_select_query_def(Query *query, deparse_context *context,
    /* Add the ORDER BY clause if given */
    if (query->sortClause != NIL)
    {
-           appendContextKeyword(context, " ORDER BY ",
-                                -PRETTYINDENT_STD, PRETTYINDENT_STD, 1);
+       appendContextKeyword(context, " ORDER BY ",
+                            -PRETTYINDENT_STD, PRETTYINDENT_STD, 1);
        sep = "";
        foreach(l, query->sortClause)
        {
@@ -1863,8 +1868,8 @@ get_basic_select_query(Query *query, deparse_context *context,
     */
    if (PRETTY_INDENT(context))
    {
-       context->indentLevel += PRETTYINDENT_STD;
-       appendStringInfoChar(buf, ' ');
+       context->indentLevel += PRETTYINDENT_STD;
+       appendStringInfoChar(buf, ' ');
    }
    appendStringInfo(buf, "SELECT");
 
@@ -1995,20 +2000,20 @@ get_setop_query(Node *setOp, Query *query, deparse_context *context,
    else if (IsA(setOp, SetOperationStmt))
    {
        SetOperationStmt *op = (SetOperationStmt *) setOp;
-       bool need_paren;
+       bool        need_paren;
 
        need_paren = (PRETTY_PAREN(context) ?
                      !IsA(op->rarg, RangeTblRef) : true);
 
        if (!PRETTY_PAREN(context))
-           appendStringInfoString(buf, "((");
+           appendStringInfoString(buf, "((");
 
        get_setop_query(op->larg, query, context, resultDesc);
 
        if (!PRETTY_PAREN(context))
-           appendStringInfoChar(buf, ')');
+           appendStringInfoChar(buf, ')');
        if (!PRETTY_INDENT(context))
-           appendStringInfoChar(buf, ' ');
+           appendStringInfoChar(buf, ' ');
        switch (op->op)
        {
            case SETOP_UNION:
@@ -2031,29 +2036,29 @@ get_setop_query(Node *setOp, Query *query, deparse_context *context,
            appendStringInfo(buf, "ALL ");
 
        if (PRETTY_INDENT(context))
-           appendStringInfoChar(buf, '\n');
+           appendStringInfoChar(buf, '\n');
 
        if (PRETTY_PAREN(context))
        {
-           if (need_paren)
-           {
+           if (need_paren)
+           {
                appendStringInfoChar(buf, '(');
                if (PRETTY_INDENT(context))
                    appendStringInfoChar(buf, '\n');
-           }
+           }
        }
        else
-           appendStringInfoChar(buf, '(');
+           appendStringInfoChar(buf, '(');
 
        get_setop_query(op->rarg, query, context, resultDesc);
 
        if (PRETTY_PAREN(context))
        {
-           if (need_paren)
+           if (need_paren)
                appendStringInfoChar(buf, ')');
        }
        else
-           appendStringInfoString(buf, "))");
+           appendStringInfoString(buf, "))");
    }
    else
    {
@@ -2129,8 +2134,8 @@ get_insert_query_def(Query *query, deparse_context *context)
 
    if (PRETTY_INDENT(context))
    {
-       context->indentLevel += PRETTYINDENT_STD;
-       appendStringInfoChar(buf, ' ');
+       context->indentLevel += PRETTYINDENT_STD;
+       appendStringInfoChar(buf, ' ');
    }
    appendStringInfo(buf, "INSERT INTO %s",
                     generate_relation_name(rte->relid));
@@ -2194,8 +2199,8 @@ get_update_query_def(Query *query, deparse_context *context)
    Assert(rte->rtekind == RTE_RELATION);
    if (PRETTY_INDENT(context))
    {
-       appendStringInfoChar(buf, ' ');
-       context->indentLevel += PRETTYINDENT_STD;
+       appendStringInfoChar(buf, ' ');
+       context->indentLevel += PRETTYINDENT_STD;
    }
    appendStringInfo(buf, "UPDATE %s%s SET ",
                     only_marker(rte),
@@ -2254,8 +2259,8 @@ get_delete_query_def(Query *query, deparse_context *context)
    Assert(rte->rtekind == RTE_RELATION);
    if (PRETTY_INDENT(context))
    {
-       context->indentLevel += PRETTYINDENT_STD;
-       appendStringInfoChar(buf, ' ');
+       context->indentLevel += PRETTYINDENT_STD;
+       appendStringInfoChar(buf, ' ');
    }
    appendStringInfo(buf, "DELETE FROM %s%s",
                     only_marker(rte),
@@ -2434,7 +2439,7 @@ find_rte_by_refname(const char *refname, deparse_context *context)
  * will return single char binary operator name, or NULL if it's not
  */
 static const char *
-get_simple_binary_op_name(OpExpr *expr)
+get_simple_binary_op_name(OpExpr * expr)
 {
    List       *args = expr->args;
 
@@ -2447,7 +2452,7 @@ get_simple_binary_op_name(OpExpr *expr)
 
        op = generate_operator_name(expr->opno, exprType(arg1), exprType(arg2));
        if (strlen(op) == 1)
-           return op;
+           return op;
    }
    return NULL;
 }
@@ -2456,17 +2461,17 @@ get_simple_binary_op_name(OpExpr *expr)
 /*
  * isSimpleNode - check if given node is simple (doesn't need parenthesizing)
  *
- *  true   : simple in the context of parent node's type
- *  false  : not simple
+ * true   : simple in the context of parent node's type
+ * false  : not simple
  */
 static bool
 isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
 {
-    if (!node)
+   if (!node)
        return false;
 
-    switch (nodeTag(node))
-    {
+   switch (nodeTag(node))
+   {
        case T_Var:
        case T_Const:
        case T_Param:
@@ -2484,11 +2489,12 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
            /* function-like: name(..) or name[..] */
            return true;
 
-        /* CASE keywords act as parentheses */
+           /* CASE keywords act as parentheses */
        case T_CaseExpr:
            return true;
 
        case T_FieldSelect:
+
            /*
             * appears simple since . has top precedence, unless parent is
             * T_FieldSelect itself!
@@ -2497,61 +2503,61 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
 
        case T_CoerceToDomain:
            /* maybe simple, check args */
-           return isSimpleNode((Node*) ((CoerceToDomain*)node)->arg,
+           return isSimpleNode((Node *) ((CoerceToDomain *) node)->arg,
                                node, prettyFlags);
        case T_RelabelType:
-           return isSimpleNode((Node*) ((RelabelType*)node)->arg,
+           return isSimpleNode((Node *) ((RelabelType *) node)->arg,
                                node, prettyFlags);
 
        case T_OpExpr:
-       {
-           /* depends on parent node type; needs further checking */
-           if (prettyFlags & PRETTYFLAG_PAREN && IsA(parentNode, OpExpr))
            {
-               const char *op;
-               const char *parentOp;
-               bool        is_lopriop;
-               bool        is_hipriop;
-               bool        is_lopriparent;
-               bool        is_hipriparent;
-
-               op = get_simple_binary_op_name((OpExpr*) node);
-               if (!op)
-                   return false;
+               /* depends on parent node type; needs further checking */
+               if (prettyFlags & PRETTYFLAG_PAREN && IsA(parentNode, OpExpr))
+               {
+                   const char *op;
+                   const char *parentOp;
+                   bool        is_lopriop;
+                   bool        is_hipriop;
+                   bool        is_lopriparent;
+                   bool        is_hipriparent;
+
+                   op = get_simple_binary_op_name((OpExpr *) node);
+                   if (!op)
+                       return false;
 
-               /* We know only the basic operators + - and * / % */
-               is_lopriop = (strchr("+-", *op) != NULL);
-               is_hipriop = (strchr("*/%", *op) != NULL);
-               if (!(is_lopriop || is_hipriop))
-                   return false;
+                   /* We know only the basic operators + - and * / % */
+                   is_lopriop = (strchr("+-", *op) != NULL);
+                   is_hipriop = (strchr("*/%", *op) != NULL);
+                   if (!(is_lopriop || is_hipriop))
+                       return false;
 
-               parentOp = get_simple_binary_op_name((OpExpr*) parentNode);
-               if (!parentOp)
-                   return false;
+                   parentOp = get_simple_binary_op_name((OpExpr *) parentNode);
+                   if (!parentOp)
+                       return false;
 
-               is_lopriparent = (strchr("+-", *parentOp) != NULL);
-               is_hipriparent = (strchr("*/%", *parentOp) != NULL);
-               if (!(is_lopriparent || is_hipriparent))
-                   return false;
+                   is_lopriparent = (strchr("+-", *parentOp) != NULL);
+                   is_hipriparent = (strchr("*/%", *parentOp) != NULL);
+                   if (!(is_lopriparent || is_hipriparent))
+                       return false;
 
-               if (is_hipriop && is_lopriparent)
-                   return true; /* op binds tighter than parent */
+                   if (is_hipriop && is_lopriparent)
+                       return true;    /* op binds tighter than parent */
 
-               if (is_lopriop && is_hipriparent)
-                   return false;
+                   if (is_lopriop && is_hipriparent)
+                       return false;
 
-               /*
-                * Operators are same priority --- can skip parens only
-                * if we have (a - b) - c, not a - (b - c).
-                */
-               if (node == (Node *) lfirst(((OpExpr *) parentNode)->args))
-                   return true;
+                   /*
+                    * Operators are same priority --- can skip parens
+                    * only if we have (a - b) - c, not a - (b - c).
+                    */
+                   if (node == (Node *) lfirst(((OpExpr *) parentNode)->args))
+                       return true;
 
-               return false;
+                   return false;
+               }
+               /* else do the same stuff as for T_SubLink et al. */
+               /* FALL THROUGH */
            }
-            /* else do the same stuff as for T_SubLink et al. */
-           /* FALL THROUGH */
-       }
 
        case T_SubLink:
        case T_NullTest:
@@ -2560,22 +2566,22 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
            switch (nodeTag(parentNode))
            {
                case T_FuncExpr:
-               {
-                   /* special handling for casts */
-                   CoercionForm    type = ((FuncExpr*)parentNode)->funcformat;
+                   {
+                       /* special handling for casts */
+                       CoercionForm type = ((FuncExpr *) parentNode)->funcformat;
 
-                   if (type == COERCE_EXPLICIT_CAST ||
-                       type == COERCE_IMPLICIT_CAST)
-                       return false;
-                    return true;      /* own parentheses */
-               }
-               case T_BoolExpr:      /* lower precedence */
-               case T_ArrayRef:      /* other separators */
-               case T_ArrayExpr:     /* other separators */
-               case T_CoalesceExpr:  /* own parentheses */
-               case T_NullIfExpr:    /* other separators */
-               case T_Aggref:        /* own parentheses */
-               case T_CaseExpr:      /* other separators */
+                       if (type == COERCE_EXPLICIT_CAST ||
+                           type == COERCE_IMPLICIT_CAST)
+                           return false;
+                       return true;    /* own parentheses */
+                   }
+               case T_BoolExpr:        /* lower precedence */
+               case T_ArrayRef:        /* other separators */
+               case T_ArrayExpr:       /* other separators */
+               case T_CoalesceExpr:    /* own parentheses */
+               case T_NullIfExpr:      /* other separators */
+               case T_Aggref:  /* own parentheses */
+               case T_CaseExpr:        /* other separators */
                    return true;
                default:
                    return false;
@@ -2590,8 +2596,8 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
                        BoolExprType type;
                        BoolExprType parentType;
 
-                       type = ((BoolExpr*)node)->boolop;
-                       parentType = ((BoolExpr*)parentNode)->boolop;
+                       type = ((BoolExpr *) node)->boolop;
+                       parentType = ((BoolExpr *) parentNode)->boolop;
                        switch (type)
                        {
                            case NOT_EXPR:
@@ -2607,21 +2613,21 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
                    }
                    return false;
                case T_FuncExpr:
-               {
-                   /* special handling for casts */
-                   CoercionForm type=((FuncExpr*)parentNode)->funcformat;
+                   {
+                       /* special handling for casts */
+                       CoercionForm type = ((FuncExpr *) parentNode)->funcformat;
 
-                   if (type == COERCE_EXPLICIT_CAST ||
-                       type == COERCE_IMPLICIT_CAST)
-                       return false;
-                    return true;      /* own parentheses */
-               }
-               case T_ArrayRef:      /* other separators */
-               case T_ArrayExpr:     /* other separators */
-               case T_CoalesceExpr:  /* own parentheses */
-               case T_NullIfExpr:    /* other separators */
-               case T_Aggref:        /* own parentheses */
-               case T_CaseExpr:      /* other separators */
+                       if (type == COERCE_EXPLICIT_CAST ||
+                           type == COERCE_IMPLICIT_CAST)
+                           return false;
+                       return true;    /* own parentheses */
+                   }
+               case T_ArrayRef:        /* other separators */
+               case T_ArrayExpr:       /* other separators */
+               case T_CoalesceExpr:    /* own parentheses */
+               case T_NullIfExpr:      /* other separators */
+               case T_Aggref:  /* own parentheses */
+               case T_CaseExpr:        /* other separators */
                    return true;
                default:
                    return false;
@@ -2629,9 +2635,9 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
 
        default:
            break;
-    }
-    /* those we don't know: in dubio complexo */
-    return false;
+   }
+   /* those we don't know: in dubio complexo */
+   return false;
 }
 
 
@@ -2641,7 +2647,7 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags)
 static void
 appendStringInfoSpaces(StringInfo buf, int count)
 {
-    while (count-- > 0)
+   while (count-- > 0)
        appendStringInfoChar(buf, ' ');
 }
 
@@ -2655,8 +2661,8 @@ static void
 appendContextKeyword(deparse_context *context, const char *str,
                     int indentBefore, int indentAfter, int indentPlus)
 {
-    if (PRETTY_INDENT(context))
-    {
+   if (PRETTY_INDENT(context))
+   {
        context->indentLevel += indentBefore;
        if (context->indentLevel < 0)
            context->indentLevel = 0;
@@ -2664,20 +2670,20 @@ appendContextKeyword(deparse_context *context, const char *str,
        appendStringInfoChar(context->buf, '\n');
        appendStringInfoSpaces(context->buf,
                               context->indentLevel + indentPlus);
-    }
+   }
 
-    appendStringInfoString(context->buf, str);
+   appendStringInfoString(context->buf, str);
 
-    if (PRETTY_INDENT(context))
-    {
+   if (PRETTY_INDENT(context))
+   {
        context->indentLevel += indentAfter;
        if (context->indentLevel < 0)
            context->indentLevel = 0;
-    }
+   }
 }
 
 /*
- * get_rule_expr_paren  - deparse expr using get_rule_expr, 
+ * get_rule_expr_paren - deparse expr using get_rule_expr,
  * embracing the string with parentheses if necessary for prettyPrint.
  *
  * Never embrace if prettyFlags=0, because it's done in the calling node.
@@ -2688,21 +2694,21 @@ appendContextKeyword(deparse_context *context, const char *str,
  * added.
  */
 static void
-get_rule_expr_paren(Node *node, deparse_context *context, 
+get_rule_expr_paren(Node *node, deparse_context *context,
                    bool showimplicit, Node *parentNode)
 {
-   bool need_paren;
+   bool        need_paren;
 
    need_paren = PRETTY_PAREN(context) &&
        !isSimpleNode(node, parentNode, context->prettyFlags);
 
    if (need_paren)
-       appendStringInfoChar(context->buf, '(');
+       appendStringInfoChar(context->buf, '(');
 
    get_rule_expr(node, context, showimplicit);
 
    if (need_paren)
-       appendStringInfoChar(context->buf, ')');
+       appendStringInfoChar(context->buf, ')');
 }
 
 
@@ -2812,6 +2818,7 @@ get_rule_expr(Node *node, deparse_context *context,
                 */
                if (aref->refassgnexpr)
                    context->varprefix = false;
+
                /*
                 * Parenthesize the argument unless it's a simple Var.
                 */
@@ -2862,12 +2869,12 @@ get_rule_expr(Node *node, deparse_context *context,
                Node       *arg2 = (Node *) lsecond(args);
 
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, '(');
+                   appendStringInfoChar(buf, '(');
                get_rule_expr_paren(arg1, context, true, node);
                appendStringInfo(buf, " IS DISTINCT FROM ");
                get_rule_expr_paren(arg2, context, true, node);
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, ')');
+                   appendStringInfoChar(buf, ')');
            }
            break;
 
@@ -2879,17 +2886,17 @@ get_rule_expr(Node *node, deparse_context *context,
                Node       *arg2 = (Node *) lsecond(args);
 
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, '(');
+                   appendStringInfoChar(buf, '(');
                get_rule_expr_paren(arg1, context, true, node);
                appendStringInfo(buf, " %s %s (",
                                 generate_operator_name(expr->opno,
                                                        exprType(arg1),
-                                       get_element_type(exprType(arg2))),
+                                      get_element_type(exprType(arg2))),
                                 expr->useOr ? "ANY" : "ALL");
                get_rule_expr_paren(arg2, context, true, node);
                appendStringInfoChar(buf, ')');
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, ')');
+                   appendStringInfoChar(buf, ')');
            }
            break;
 
@@ -2902,7 +2909,7 @@ get_rule_expr(Node *node, deparse_context *context,
                {
                    case AND_EXPR:
                        if (!PRETTY_PAREN(context))
-                           appendStringInfoChar(buf, '(');
+                           appendStringInfoChar(buf, '(');
                        get_rule_expr_paren((Node *) lfirst(args), context,
                                            false, node);
                        while ((args = lnext(args)) != NIL)
@@ -2912,12 +2919,12 @@ get_rule_expr(Node *node, deparse_context *context,
                                                false, node);
                        }
                        if (!PRETTY_PAREN(context))
-                           appendStringInfoChar(buf, ')');
+                           appendStringInfoChar(buf, ')');
                        break;
 
                    case OR_EXPR:
                        if (!PRETTY_PAREN(context))
-                           appendStringInfoChar(buf, '(');
+                           appendStringInfoChar(buf, '(');
                        get_rule_expr_paren((Node *) lfirst(args), context,
                                            false, node);
                        while ((args = lnext(args)) != NIL)
@@ -2927,17 +2934,17 @@ get_rule_expr(Node *node, deparse_context *context,
                                                false, node);
                        }
                        if (!PRETTY_PAREN(context))
-                           appendStringInfoChar(buf, ')');
+                           appendStringInfoChar(buf, ')');
                        break;
 
                    case NOT_EXPR:
                        if (!PRETTY_PAREN(context))
-                           appendStringInfoChar(buf, '(');
+                           appendStringInfoChar(buf, '(');
                        appendStringInfo(buf, "NOT ");
                        get_rule_expr_paren((Node *) lfirst(args), context,
                                            false, node);
                        if (!PRETTY_PAREN(context))
-                           appendStringInfoChar(buf, ')');
+                           appendStringInfoChar(buf, ')');
                        break;
 
                    default:
@@ -2954,9 +2961,9 @@ get_rule_expr(Node *node, deparse_context *context,
        case T_SubPlan:
            {
                /*
-                * We cannot see an already-planned subplan in
-                * rule deparsing, only while EXPLAINing a query
-                * plan. For now, just punt.
+                * We cannot see an already-planned subplan in rule
+                * deparsing, only while EXPLAINing a query plan. For now,
+                * just punt.
                 */
                if (((SubPlan *) node)->useHashTable)
                    appendStringInfo(buf, "(hashed subplan)");
@@ -2986,10 +2993,10 @@ get_rule_expr(Node *node, deparse_context *context,
                 * are *not* simple.  So, always use parenthesized syntax.
                 */
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, '(');
+                   appendStringInfoChar(buf, '(');
                get_rule_expr_paren((Node *) fselect->arg, context, true, node);
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, ')');
+                   appendStringInfoChar(buf, ')');
                appendStringInfo(buf, ".%s", quote_identifier(fieldname));
            }
            break;
@@ -2997,7 +3004,7 @@ get_rule_expr(Node *node, deparse_context *context,
        case T_RelabelType:
            {
                RelabelType *relabel = (RelabelType *) node;
-               Node   *arg = (Node *) relabel->arg;
+               Node       *arg = (Node *) relabel->arg;
 
                if (relabel->relabelformat == COERCE_IMPLICIT_CAST &&
                    !showimplicit)
@@ -3008,21 +3015,22 @@ get_rule_expr(Node *node, deparse_context *context,
                else
                {
                    /*
-                    * Strip off any type coercions on the input, so we don't
-                    * print redundancies like x::bpchar::character(8).
+                    * Strip off any type coercions on the input, so we
+                    * don't print redundancies like
+                    * x::bpchar::character(8).
                     *
                     * XXX Are there any cases where this is a bad idea?
                     */
                    arg = strip_type_coercion(arg, relabel->resulttype);
 
                    if (!PRETTY_PAREN(context))
-                       appendStringInfoChar(buf, '(');
+                       appendStringInfoChar(buf, '(');
                    get_rule_expr_paren(arg, context, showimplicit, node);
                    if (!PRETTY_PAREN(context))
-                       appendStringInfoChar(buf, ')');
+                       appendStringInfoChar(buf, ')');
                    appendStringInfo(buf, "::%s",
                            format_type_with_typemod(relabel->resulttype,
-                                                    relabel->resulttypmod));
+                                                relabel->resulttypmod));
                }
            }
            break;
@@ -3047,12 +3055,12 @@ get_rule_expr(Node *node, deparse_context *context,
                    get_rule_expr((Node *) when->result, context, true);
                }
                if (!PRETTY_INDENT(context))
-                   appendStringInfoChar(buf, ' ');
+                   appendStringInfoChar(buf, ' ');
                appendContextKeyword(context, "ELSE ",
                                     0, 0, 0);
                get_rule_expr((Node *) caseexpr->defresult, context, true);
                if (!PRETTY_INDENT(context))
-                   appendStringInfoChar(buf, ' ');
+                   appendStringInfoChar(buf, ' ');
                appendContextKeyword(context, "END",
                                     -PRETTYINDENT_VAR, 0, 0);
            }
@@ -3060,15 +3068,15 @@ get_rule_expr(Node *node, deparse_context *context,
 
        case T_ArrayExpr:
            {
-               ArrayExpr *arrayexpr = (ArrayExpr *) node;
-               List *element;
-               char *sep;
+               ArrayExpr  *arrayexpr = (ArrayExpr *) node;
+               List       *element;
+               char       *sep;
 
                appendStringInfo(buf, "ARRAY[");
                sep = "";
                foreach(element, arrayexpr->elements)
                {
-                   Node *e = (Node *) lfirst(element);
+                   Node       *e = (Node *) lfirst(element);
 
                    appendStringInfo(buf, sep);
                    get_rule_expr(e, context, true);
@@ -3077,18 +3085,18 @@ get_rule_expr(Node *node, deparse_context *context,
                appendStringInfo(buf, "]");
            }
            break;
-           
+
        case T_CoalesceExpr:
            {
                CoalesceExpr *coalesceexpr = (CoalesceExpr *) node;
-               List *arg;
-               char *sep;
+               List       *arg;
+               char       *sep;
 
                appendStringInfo(buf, "COALESCE(");
                sep = "";
                foreach(arg, coalesceexpr->args)
                {
-                   Node *e = (Node *) lfirst(arg);
+                   Node       *e = (Node *) lfirst(arg);
 
                    appendStringInfo(buf, sep);
                    get_rule_expr(e, context, true);
@@ -3097,18 +3105,18 @@ get_rule_expr(Node *node, deparse_context *context,
                appendStringInfo(buf, ")");
            }
            break;
-           
+
        case T_NullIfExpr:
            {
                NullIfExpr *nullifexpr = (NullIfExpr *) node;
-               List *arg;
-               char *sep;
+               List       *arg;
+               char       *sep;
 
                appendStringInfo(buf, "NULLIF(");
                sep = "";
                foreach(arg, nullifexpr->args)
                {
-                   Node *e = (Node *) lfirst(arg);
+                   Node       *e = (Node *) lfirst(arg);
 
                    appendStringInfo(buf, sep);
                    get_rule_expr(e, context, true);
@@ -3123,7 +3131,7 @@ get_rule_expr(Node *node, deparse_context *context,
                NullTest   *ntest = (NullTest *) node;
 
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, '(');
+                   appendStringInfoChar(buf, '(');
                get_rule_expr_paren((Node *) ntest->arg, context, true, node);
                switch (ntest->nulltesttype)
                {
@@ -3138,7 +3146,7 @@ get_rule_expr(Node *node, deparse_context *context,
                             (int) ntest->nulltesttype);
                }
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, ')');
+                   appendStringInfoChar(buf, ')');
            }
            break;
 
@@ -3147,7 +3155,7 @@ get_rule_expr(Node *node, deparse_context *context,
                BooleanTest *btest = (BooleanTest *) node;
 
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, '(');
+                   appendStringInfoChar(buf, '(');
                get_rule_expr_paren((Node *) btest->arg, context, false, node);
                switch (btest->booltesttype)
                {
@@ -3174,14 +3182,14 @@ get_rule_expr(Node *node, deparse_context *context,
                             (int) btest->booltesttype);
                }
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, ')');
+                   appendStringInfoChar(buf, ')');
            }
            break;
 
        case T_CoerceToDomain:
            {
                CoerceToDomain *ctest = (CoerceToDomain *) node;
-               Node   *arg = (Node *) ctest->arg;
+               Node       *arg = (Node *) ctest->arg;
 
                /*
                 * Any implicit coercion at the top level of the argument
@@ -3197,13 +3205,13 @@ get_rule_expr(Node *node, deparse_context *context,
                else
                {
                    if (!PRETTY_PAREN(context))
-                       appendStringInfoChar(buf, '(');
+                       appendStringInfoChar(buf, '(');
                    get_rule_expr_paren(arg, context, false, node);
                    if (!PRETTY_PAREN(context))
-                       appendStringInfoChar(buf, ')');
+                       appendStringInfoChar(buf, ')');
                    appendStringInfo(buf, "::%s",
-                           format_type_with_typemod(ctest->resulttype,
-                                                    ctest->resulttypmod));
+                             format_type_with_typemod(ctest->resulttype,
+                                                  ctest->resulttypmod));
                }
            }
            break;
@@ -3227,25 +3235,26 @@ get_rule_expr(Node *node, deparse_context *context,
  * get_oper_expr           - Parse back an OpExpr node
  */
 static void
-get_oper_expr(OpExpr *expr, deparse_context *context)
+get_oper_expr(OpExpr * expr, deparse_context *context)
 {
    StringInfo  buf = context->buf;
    Oid         opno = expr->opno;
    List       *args = expr->args;
 
    if (!PRETTY_PAREN(context))
-       appendStringInfoChar(buf, '(');
+       appendStringInfoChar(buf, '(');
    if (length(args) == 2)
    {
        /* binary operator */
        Node       *arg1 = (Node *) lfirst(args);
        Node       *arg2 = (Node *) lsecond(args);
-       get_rule_expr_paren(arg1, context, true, (Node*)expr);
+
+       get_rule_expr_paren(arg1, context, true, (Node *) expr);
        appendStringInfo(buf, " %s ",
                         generate_operator_name(opno,
                                                exprType(arg1),
                                                exprType(arg2)));
-       get_rule_expr_paren(arg2, context, true, (Node*)expr);
+       get_rule_expr_paren(arg2, context, true, (Node *) expr);
    }
    else
    {
@@ -3267,10 +3276,10 @@ get_oper_expr(OpExpr *expr, deparse_context *context)
                                 generate_operator_name(opno,
                                                        InvalidOid,
                                                        exprType(arg)));
-               get_rule_expr_paren(arg, context, true, (Node*)expr);
+               get_rule_expr_paren(arg, context, true, (Node *) expr);
                break;
            case 'r':
-               get_rule_expr_paren(arg, context, true, (Node*)expr);
+               get_rule_expr_paren(arg, context, true, (Node *) expr);
                appendStringInfo(buf, " %s",
                                 generate_operator_name(opno,
                                                        exprType(arg),
@@ -3282,14 +3291,14 @@ get_oper_expr(OpExpr *expr, deparse_context *context)
        ReleaseSysCache(tp);
    }
    if (!PRETTY_PAREN(context))
-       appendStringInfoChar(buf, ')');
+       appendStringInfoChar(buf, ')');
 }
 
 /*
  * get_func_expr           - Parse back a FuncExpr node
  */
 static void
-get_func_expr(FuncExpr *expr, deparse_context *context,
+get_func_expr(FuncExpr * expr, deparse_context *context,
              bool showimplicit)
 {
    StringInfo  buf = context->buf;
@@ -3301,18 +3310,19 @@ get_func_expr(FuncExpr *expr, deparse_context *context,
 
    /*
     * If the function call came from an implicit coercion, then just show
-    * the first argument --- unless caller wants to see implicit coercions.
+    * the first argument --- unless caller wants to see implicit
+    * coercions.
     */
    if (expr->funcformat == COERCE_IMPLICIT_CAST && !showimplicit)
    {
        get_rule_expr_paren((Node *) lfirst(expr->args), context,
-                           showimplicit, (Node*)expr);
+                           showimplicit, (Node *) expr);
        return;
    }
 
    /*
-    * If the function call came from a cast, then show
-    * the first argument plus an explicit cast operation.
+    * If the function call came from a cast, then show the first argument
+    * plus an explicit cast operation.
     */
    if (expr->funcformat == COERCE_EXPLICIT_CAST ||
        expr->funcformat == COERCE_IMPLICIT_CAST)
@@ -3333,12 +3343,12 @@ get_func_expr(FuncExpr *expr, deparse_context *context,
        arg = strip_type_coercion(arg, rettype);
 
        if (!PRETTY_PAREN(context))
-           appendStringInfoChar(buf, '(');
-       get_rule_expr_paren(arg, context, showimplicit, (Node*)expr);
+           appendStringInfoChar(buf, '(');
+       get_rule_expr_paren(arg, context, showimplicit, (Node *) expr);
        if (!PRETTY_PAREN(context))
-           appendStringInfoChar(buf, ')');
+           appendStringInfoChar(buf, ')');
        appendStringInfo(buf, "::%s",
-                        format_type_with_typemod(rettype, coercedTypmod));
+                      format_type_with_typemod(rettype, coercedTypmod));
 
        return;
    }
@@ -3493,7 +3503,7 @@ get_const_expr(Const *constval, deparse_context *context)
                {
                    appendStringInfoString(buf, extval);
                    if (strcspn(extval, "eE.") != strlen(extval))
-                       isfloat = true; /* it looks like a float */
+                       isfloat = true; /* it looks like a float */
                }
                else
                    appendStringInfo(buf, "'%s'", extval);
@@ -3541,8 +3551,8 @@ get_const_expr(Const *constval, deparse_context *context)
 
    /*
     * Append ::typename unless the constant will be implicitly typed as
-    * the right type when it is read in.  XXX this code has to be kept
-    * in sync with the behavior of the parser, especially make_const.
+    * the right type when it is read in.  XXX this code has to be kept in
+    * sync with the behavior of the parser, especially make_const.
     */
    switch (constval->consttype)
    {
@@ -3562,7 +3572,7 @@ get_const_expr(Const *constval, deparse_context *context)
    }
    if (needlabel)
        appendStringInfo(buf, "::%s",
-                        format_type_with_typemod(constval->consttype, -1));
+                     format_type_with_typemod(constval->consttype, -1));
 
    ReleaseSysCache(typetup);
 }
@@ -3609,10 +3619,10 @@ get_sublink_expr(SubLink *sublink, deparse_context *context)
    need_paren = true;
 
    /*
-    * XXX we regurgitate the originally given operator name, with or without
-    * schema qualification.  This is not necessarily 100% right but it's
-    * the best we can do, since the operators actually used might not all
-    * be in the same schema.
+    * XXX we regurgitate the originally given operator name, with or
+    * without schema qualification.  This is not necessarily 100% right
+    * but it's the best we can do, since the operators actually used
+    * might not all be in the same schema.
     */
    switch (sublink->subLinkType)
    {
@@ -3705,12 +3715,12 @@ get_from_clause(Query *query, deparse_context *context)
 
        if (first)
        {
-           appendContextKeyword(context, " FROM ",
+           appendContextKeyword(context, " FROM ",
                                 -PRETTYINDENT_STD, PRETTYINDENT_STD, 2);
            first = false;
        }
        else
-           appendStringInfoString(buf, ", ");
+           appendStringInfoString(buf, ", ");
 
        get_from_clause_item(jtnode, query, context);
    }
@@ -3739,7 +3749,7 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
            case RTE_SUBQUERY:
                /* Subquery RTE */
                appendStringInfoChar(buf, '(');
-               get_query_def(rte->subquery, buf, context->namespaces, NULL, 
+               get_query_def(rte->subquery, buf, context->namespaces, NULL,
                              context->prettyFlags, context->indentLevel);
                appendStringInfoChar(buf, ')');
                break;
@@ -3796,22 +3806,22 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
    else if (IsA(jtnode, JoinExpr))
    {
        JoinExpr   *j = (JoinExpr *) jtnode;
-       bool need_paren_on_right;
+       bool        need_paren_on_right;
 
        need_paren_on_right = PRETTY_PAREN(context) &&
            !IsA(j->rarg, RangeTblRef);
 
        if (!PRETTY_PAREN(context) || j->alias != NULL)
-           appendStringInfoChar(buf, '(');
+           appendStringInfoChar(buf, '(');
 
        get_from_clause_item(j->larg, query, context);
 
        if (j->isNatural)
        {
-           if (!PRETTY_INDENT(context))
+           if (!PRETTY_INDENT(context))
                appendStringInfoChar(buf, ' ');
-           switch (j->jointype)
-           {
+           switch (j->jointype)
+           {
                case JOIN_INNER:
                    if (j->quals)
                        appendContextKeyword(context, "NATURAL JOIN ",
@@ -3845,12 +3855,12 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
                default:
                    elog(ERROR, "unrecognized join type: %d",
                         (int) j->jointype);
-           }
+           }
        }
        else
        {
-           switch (j->jointype)
-           {
+           switch (j->jointype)
+           {
                case JOIN_INNER:
                    if (j->quals)
                        appendContextKeyword(context, " JOIN ",
@@ -3884,14 +3894,14 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
                default:
                    elog(ERROR, "unrecognized join type: %d",
                         (int) j->jointype);
-           }
+           }
        }
 
        if (need_paren_on_right)
-           appendStringInfoChar(buf, '(');
+           appendStringInfoChar(buf, '(');
        get_from_clause_item(j->rarg, query, context);
        if (need_paren_on_right)
-           appendStringInfoChar(buf, ')');
+           appendStringInfoChar(buf, ')');
 
        context->indentLevel -= PRETTYINDENT_JOIN_ON;
 
@@ -3907,7 +3917,7 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
                    if (col != j->using)
                        appendStringInfo(buf, ", ");
                    appendStringInfo(buf, "%s",
-                                    quote_identifier(strVal(lfirst(col))));
+                                 quote_identifier(strVal(lfirst(col))));
                }
                appendStringInfoChar(buf, ')');
            }
@@ -3915,14 +3925,14 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
            {
                appendStringInfo(buf, " ON ");
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, '(');
+                   appendStringInfoChar(buf, '(');
                get_rule_expr(j->quals, context, false);
                if (!PRETTY_PAREN(context))
-                   appendStringInfoChar(buf, ')');
+                   appendStringInfoChar(buf, ')');
            }
        }
        if (!PRETTY_PAREN(context) || j->alias != NULL)
-           appendStringInfoChar(buf, ')');
+           appendStringInfoChar(buf, ')');
 
        /* Yes, it's correct to put alias after the right paren ... */
        if (j->alias != NULL)
@@ -3939,7 +3949,7 @@ get_from_clause_item(Node *jtnode, Query *query, deparse_context *context)
                    if (col != j->alias->colnames)
                        appendStringInfo(buf, ", ");
                    appendStringInfo(buf, "%s",
-                                    quote_identifier(strVal(lfirst(col))));
+                                 quote_identifier(strVal(lfirst(col))));
                }
                appendStringInfoChar(buf, ')');
            }
@@ -4325,7 +4335,7 @@ generate_operator_name(Oid operid, Oid arg1, Oid arg2)
 static void
 print_operator_name(StringInfo buf, List *opname)
 {
-   int     nnames = length(opname);
+   int         nnames = length(opname);
 
    if (nnames == 1)
        appendStringInfo(buf, "%s", strVal(lfirst(opname)));
index 79c4af76a65378cf92198b69753939c494423228..af11ed22969867314dd59d9ec7130c4035d4dd4a 100644 (file)
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.142 2003/07/27 04:53:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.143 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -180,7 +180,7 @@ static bool get_restriction_var(List *args, int varRelid,
                    bool *varonleft);
 static void get_join_vars(List *args, Var **var1, Var **var2);
 static Selectivity prefix_selectivity(Query *root, Var *var,
-                                     Oid opclass, Const *prefix);
+                  Oid opclass, Const *prefix);
 static Selectivity pattern_selectivity(Const *patt, Pattern_Type ptype);
 static Datum string_to_datum(const char *str, Oid datatype);
 static Const *string_to_const(const char *str, Oid datatype);
@@ -871,8 +871,8 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype)
    /*
     * The right-hand const is type text or bytea for all supported
     * operators.  We do not expect to see binary-compatible types here,
-    * since const-folding should have relabeled the const to exactly match
-    * the operator's declared type.
+    * since const-folding should have relabeled the const to exactly
+    * match the operator's declared type.
     */
    if (consttype != TEXTOID && consttype != BYTEAOID)
        return DEFAULT_MATCH_SEL;
@@ -890,10 +890,10 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype)
     * We should now be able to recognize the var's datatype.  Choose the
     * index opclass from which we must draw the comparison operators.
     *
-    * NOTE: It would be more correct to use the PATTERN opclasses than
-    * the simple ones, but at the moment ANALYZE will not generate statistics
-    * for the PATTERN operators.  But our results are so approximate anyway
-    * that it probably hardly matters.
+    * NOTE: It would be more correct to use the PATTERN opclasses than the
+    * simple ones, but at the moment ANALYZE will not generate statistics
+    * for the PATTERN operators.  But our results are so approximate
+    * anyway that it probably hardly matters.
     */
    switch (vartype)
    {
@@ -921,22 +921,22 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype)
    pstatus = pattern_fixed_prefix(patt, ptype, &prefix, &rest);
 
    /*
-    * If necessary, coerce the prefix constant to the right type.
-    * (The "rest" constant need not be changed.)
+    * If necessary, coerce the prefix constant to the right type. (The
+    * "rest" constant need not be changed.)
     */
    if (prefix && prefix->consttype != vartype)
    {
-       char   *prefixstr;
+       char       *prefixstr;
 
        switch (prefix->consttype)
        {
            case TEXTOID:
                prefixstr = DatumGetCString(DirectFunctionCall1(textout,
-                                                            prefix->constvalue));
+                                                   prefix->constvalue));
                break;
            case BYTEAOID:
                prefixstr = DatumGetCString(DirectFunctionCall1(byteaout,
-                                                            prefix->constvalue));
+                                                   prefix->constvalue));
                break;
            default:
                elog(ERROR, "unrecognized consttype: %u",
@@ -1133,7 +1133,7 @@ booltestsel(Query *root, BoolTestType booltesttype, Node *arg,
            case IS_FALSE:
            case IS_NOT_TRUE:
                selec = 1.0 - (double) clause_selectivity(root, arg,
-                                                         varRelid, jointype);
+                                                    varRelid, jointype);
                break;
            default:
                elog(ERROR, "unrecognized booltesttype: %d",
@@ -1523,27 +1523,29 @@ eqjoinsel(PG_FUNCTION_ARGS)
            hasmatch2 = (bool *) palloc0(nvalues2 * sizeof(bool));
 
            /*
-            * If we are doing any variant of JOIN_IN, pretend all the values
-            * of the righthand relation are unique (ie, act as if it's been
-            * DISTINCT'd).
+            * If we are doing any variant of JOIN_IN, pretend all the
+            * values of the righthand relation are unique (ie, act as if
+            * it's been DISTINCT'd).
             *
             * NOTE: it might seem that we should unique-ify the lefthand
-            * input when considering JOIN_REVERSE_IN.  But this is not so,
-            * because the join clause we've been handed has not been
-            * commuted from the way the parser originally wrote it.  We know
-            * that the unique side of the IN clause is *always* on the right.
+            * input when considering JOIN_REVERSE_IN.  But this is not
+            * so, because the join clause we've been handed has not been
+            * commuted from the way the parser originally wrote it.  We
+            * know that the unique side of the IN clause is *always* on
+            * the right.
             *
             * NOTE: it would be dangerous to try to be smart about JOIN_LEFT
-            * or JOIN_RIGHT here, because we do not have enough information
-            * to determine which var is really on which side of the join.
-            * Perhaps someday we should pass in more information.
+            * or JOIN_RIGHT here, because we do not have enough
+            * information to determine which var is really on which side
+            * of the join. Perhaps someday we should pass in more
+            * information.
             */
            if (jointype == JOIN_IN ||
                jointype == JOIN_REVERSE_IN ||
                jointype == JOIN_UNIQUE_INNER ||
                jointype == JOIN_UNIQUE_OUTER)
            {
-               float4  oneovern = 1.0 / nd2;
+               float4      oneovern = 1.0 / nd2;
 
                for (i = 0; i < nvalues2; i++)
                    numbers2[i] = oneovern;
@@ -1647,20 +1649,22 @@ eqjoinsel(PG_FUNCTION_ARGS)
        {
            /*
             * We do not have MCV lists for both sides.  Estimate the join
-            * selectivity as MIN(1/nd1,1/nd2)*(1-nullfrac1)*(1-nullfrac2).
-            * This is plausible if we assume that the join operator is
-            * strict and the non-null values are about equally distributed:
-            * a given non-null tuple of rel1 will join to either zero or
-            * N2*(1-nullfrac2)/nd2 rows of rel2, so total join rows are at
-            * most N1*(1-nullfrac1)*N2*(1-nullfrac2)/nd2 giving a join
-            * selectivity of not more than (1-nullfrac1)*(1-nullfrac2)/nd2.
-            * By the same logic it is not more than
-            * (1-nullfrac1)*(1-nullfrac2)/nd1, so the expression with MIN()
-            * is an upper bound.  Using the MIN() means we estimate from the
-            * point of view of the relation with smaller nd (since the larger
-            * nd is determining the MIN).  It is reasonable to assume that
-            * most tuples in this rel will have join partners, so the bound
-            * is probably reasonably tight and should be taken as-is.
+            * selectivity as
+            * MIN(1/nd1,1/nd2)*(1-nullfrac1)*(1-nullfrac2). This is
+            * plausible if we assume that the join operator is strict and
+            * the non-null values are about equally distributed: a given
+            * non-null tuple of rel1 will join to either zero or
+            * N2*(1-nullfrac2)/nd2 rows of rel2, so total join rows are
+            * at most N1*(1-nullfrac1)*N2*(1-nullfrac2)/nd2 giving a join
+            * selectivity of not more than
+            * (1-nullfrac1)*(1-nullfrac2)/nd2. By the same logic it is
+            * not more than (1-nullfrac1)*(1-nullfrac2)/nd1, so the
+            * expression with MIN() is an upper bound.  Using the MIN()
+            * means we estimate from the point of view of the relation
+            * with smaller nd (since the larger nd is determining the
+            * MIN).  It is reasonable to assume that most tuples in this
+            * rel will have join partners, so the bound is probably
+            * reasonably tight and should be taken as-is.
             *
             * XXX Can we be smarter if we have an MCV list for just one
             * side? It seems that if we assume equal distribution for the
@@ -1715,9 +1719,9 @@ neqjoinsel(PG_FUNCTION_ARGS)
    {
        result = DatumGetFloat8(DirectFunctionCall4(eqjoinsel,
                                                    PointerGetDatum(root),
-                                                   ObjectIdGetDatum(eqop),
+                                                 ObjectIdGetDatum(eqop),
                                                    PointerGetDatum(args),
-                                                   Int16GetDatum(jointype)));
+                                              Int16GetDatum(jointype)));
    }
    else
    {
@@ -1886,8 +1890,9 @@ mergejoinscansel(Query *root, Node *clause,
    righttype = exprType((Node *) right);
 
    /*
-    * Now skip any binary-compatible relabeling; there can only be one level
-    * since constant-expression folder eliminates adjacent RelabelTypes.
+    * Now skip any binary-compatible relabeling; there can only be one
+    * level since constant-expression folder eliminates adjacent
+    * RelabelTypes.
     */
    if (IsA(left, RelabelType))
        left = (Var *) ((RelabelType *) left)->arg;
@@ -2002,7 +2007,7 @@ mergejoinscansel(Query *root, Node *clause,
  *     of values, clamp to the number of rows in the rel, and then multiply
  *     by the selectivity of the restriction clauses for that rel.  The
  *     initial product is probably too high (it's the worst case) but since
- *     we can clamp to the rel's rows it won't be hugely bad.  Multiplying
+ *     we can clamp to the rel's rows it won't be hugely bad.  Multiplying
  *     by the restriction selectivity is effectively assuming that the
  *     restriction clauses are independent of the grouping, which is a crummy
  *     assumption, but it's hard to do better.
@@ -2021,10 +2026,11 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
    List       *varinfos = NIL;
    double      numdistinct;
    List       *l;
-   typedef struct {            /* varinfos is a List of these */
-       Var    *var;
-       double  ndistinct;
-   } MyVarInfo;
+   typedef struct
+   {                           /* varinfos is a List of these */
+       Var        *var;
+       double      ndistinct;
+   }           MyVarInfo;
 
    /* We should not be called unless query has GROUP BY (or DISTINCT) */
    Assert(groupExprs != NIL);
@@ -2036,9 +2042,10 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
        List       *varshere;
 
        varshere = pull_var_clause(groupexpr, false);
+
        /*
-        * If we find any variable-free GROUP BY item, then either it is
-        * constant (and we can ignore it) or it contains a volatile
+        * If we find any variable-free GROUP BY item, then either it is a
+        * constant (and we can ignore it) or it contains a volatile
         * function; in the latter case we punt and assume that each input
         * row will yield a distinct group.
         */
@@ -2065,13 +2072,13 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
     */
    foreach(l, allvars)
    {
-       Var    *var = (Var *) lfirst(l);
-       Oid     relid = getrelid(var->varno, root->rtable);
+       Var        *var = (Var *) lfirst(l);
+       Oid         relid = getrelid(var->varno, root->rtable);
        HeapTuple   statsTuple = NULL;
        Form_pg_statistic stats = NULL;
-       double ndistinct;
-       bool    keep = true;
-       List   *l2;
+       double      ndistinct;
+       bool        keep = true;
+       List       *l2;
 
        if (OidIsValid(relid))
        {
@@ -2096,7 +2103,7 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
            l2 = lnext(l2);
 
            if (var->varno != varinfo->var->varno &&
-               exprs_known_equal(root, (Node *) var, (Node *) varinfo->var))
+           exprs_known_equal(root, (Node *) var, (Node *) varinfo->var))
            {
                /* Found a match */
                if (varinfo->ndistinct <= ndistinct)
@@ -2126,10 +2133,10 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
    /*
     * Steps 3/4: group Vars by relation and estimate total numdistinct.
     *
-    * For each iteration of the outer loop, we process the frontmost
-    * Var in varinfos, plus all other Vars in the same relation.  We
-    * remove these Vars from the newvarinfos list for the next iteration.
-    * This is the easiest way to group Vars of same rel together.
+    * For each iteration of the outer loop, we process the frontmost Var in
+    * varinfos, plus all other Vars in the same relation.  We remove
+    * these Vars from the newvarinfos list for the next iteration. This
+    * is the easiest way to group Vars of same rel together.
     */
    Assert(varinfos != NIL);
    numdistinct = 1.0;
@@ -2138,8 +2145,8 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
    {
        MyVarInfo  *varinfo1 = (MyVarInfo *) lfirst(varinfos);
        RelOptInfo *rel = find_base_rel(root, varinfo1->var->varno);
-       double  reldistinct = varinfo1->ndistinct;
-       List   *newvarinfos = NIL;
+       double      reldistinct = varinfo1->ndistinct;
+       List       *newvarinfos = NIL;
 
        /*
         * Get the largest numdistinct estimate of the Vars for this rel.
@@ -2150,9 +2157,7 @@ estimate_num_groups(Query *root, List *groupExprs, double input_rows)
            MyVarInfo  *varinfo2 = (MyVarInfo *) lfirst(l);
 
            if (varinfo2->var->varno == varinfo1->var->varno)
-           {
                reldistinct *= varinfo2->ndistinct;
-           }
            else
            {
                /* not time to process varinfo2 yet */
@@ -2364,9 +2369,10 @@ convert_to_scalar(Datum value, Oid valuetypid, double *scaledvalue,
     * constant-folding will ensure that any Const passed to the operator
     * has been reduced to the correct type).  However, the boundstypid is
     * the type of some variable that might be only binary-compatible with
-    * the declared type; in particular it might be a domain type.  Must
+    * the declared type; in particular it might be a domain type.  Must
     * fold the variable type down to base type so we can recognize it.
-    * (But we can skip that lookup if the variable type matches the const.)
+    * (But we can skip that lookup if the variable type matches the
+    * const.)
     */
    if (boundstypid != valuetypid)
        boundstypid = getBaseType(boundstypid);
@@ -2696,15 +2702,15 @@ convert_string_datum(Datum value, Oid typid)
 
        /*
         * Note: originally we guessed at a suitable output buffer size,
-        * and only needed to call strxfrm twice if our guess was too small.
-        * However, it seems that some versions of Solaris have buggy
-        * strxfrm that can write past the specified buffer length in that
-        * scenario.  So, do it the dumb way for portability.
+        * and only needed to call strxfrm twice if our guess was too
+        * small. However, it seems that some versions of Solaris have
+        * buggy strxfrm that can write past the specified buffer length
+        * in that scenario.  So, do it the dumb way for portability.
         *
         * Yet other systems (e.g., glibc) sometimes return a smaller value
         * from the second call than the first; thus the Assert must be <=
-        * not == as you'd expect.  Can't any of these people program their
-        * way out of a paper bag?
+        * not == as you'd expect.  Can't any of these people program
+        * their way out of a paper bag?
         */
        xfrmlen = strxfrm(NULL, val, 0);
        xfrmstr = (char *) palloc(xfrmlen + 1);
@@ -3113,7 +3119,7 @@ like_fixed_prefix(Const *patt_const, bool case_insensitive,
    if (typeid == BYTEAOID && case_insensitive)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("case insensitive matching not supported on type bytea")));
+       errmsg("case insensitive matching not supported on type bytea")));
 
    if (typeid != BYTEAOID)
    {
@@ -3355,7 +3361,7 @@ pattern_fixed_prefix(Const *patt, Pattern_Type ptype,
  * "var >= 'foo' AND var < 'fop'" (see also indxqual.c).
  *
  * We use the >= and < operators from the specified btree opclass to do the
- * estimation.  The given Var and Const must be of the associated datatype.
+ * estimation. The given Var and Const must be of the associated datatype.
  *
  * XXX Note: we make use of the upper bound to estimate operator selectivity
  * even if the locale is such that we cannot rely on the upper-bound string.
@@ -3476,7 +3482,7 @@ like_selectivity(Const *patt_const, bool case_insensitive)
    if (typeid == BYTEAOID && case_insensitive)
        ereport(ERROR,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                errmsg("case insensitive matching not supported on type bytea")));
+       errmsg("case insensitive matching not supported on type bytea")));
 
    if (typeid != BYTEAOID)
    {
@@ -3917,8 +3923,8 @@ btcostestimate(PG_FUNCTION_ARGS)
                        indexSelectivity, indexCorrelation);
 
    /*
-    * If the first column is a simple variable, and we can get an estimate
-    * for its ordering correlation C from pg_statistic, estimate
+    * If the first column is a simple variable, and we can get an
+    * estimate for its ordering correlation C from pg_statistic, estimate
     * the index correlation as C / number-of-columns. (The idea here is
     * that multiple columns dilute the importance of the first column's
     * ordering, but don't negate it entirely.)
index a611f7271a800787b90afe4ab57648943e2486b7..9087cf07ee14bd43c28f2a91cdbaa984052fc3c4 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.56 2003/07/27 04:53:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/sets.c,v 1.57 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -154,14 +154,15 @@ seteval(PG_FUNCTION_ARGS)
    fcache = (FuncExprState *) fcinfo->flinfo->fn_extra;
    if (fcache == NULL)
    {
-       MemoryContext   oldcontext;
+       MemoryContext oldcontext;
        FuncExpr   *func;
 
        oldcontext = MemoryContextSwitchTo(fcinfo->flinfo->fn_mcxt);
 
        func = makeNode(FuncExpr);
        func->funcid = funcoid;
-       func->funcresulttype = InvalidOid; /* nothing will look at this */
+       func->funcresulttype = InvalidOid;      /* nothing will look at
+                                                * this */
        func->funcretset = true;
        func->funcformat = COERCE_EXPLICIT_CALL;
        func->args = NIL;       /* there are no arguments */
index fb84596beeabd6f48aff5e54d76718253d57f1c6..ec7b303585bf2c3b5c6d2bf5bcd475c71bdf180e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.88 2003/07/27 04:53:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.89 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -254,15 +254,15 @@ AdjustTimestampForTypmod(Timestamp *time, int32 typmod)
        if ((typmod < 0) || (typmod > MAX_TIMESTAMP_PRECISION))
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                    errmsg("timestamp(%d) precision must be between %d and %d",
-                            typmod, 0, MAX_TIMESTAMP_PRECISION)));
+             errmsg("timestamp(%d) precision must be between %d and %d",
+                    typmod, 0, MAX_TIMESTAMP_PRECISION)));
 
        /*
         * Note: this round-to-nearest code is not completely consistent
         * about rounding values that are exactly halfway between integral
-        * values.  On most platforms, rint() will implement round-to-nearest-even,
-        * but the integer code always rounds up (away from zero).  Is it
-        * worth trying to be consistent?
+        * values.  On most platforms, rint() will implement
+        * round-to-nearest-even, but the integer code always rounds up
+        * (away from zero).  Is it worth trying to be consistent?
         */
 #ifdef HAVE_INT64_TIMESTAMP
        if (*time >= INT64CONST(0))
@@ -272,8 +272,8 @@ AdjustTimestampForTypmod(Timestamp *time, int32 typmod)
        }
        else
        {
-           *time = - ((((- *time) + TimestampOffsets[typmod]) / TimestampScales[typmod])
-                      * TimestampScales[typmod]);
+           *time = -((((-*time) + TimestampOffsets[typmod]) / TimestampScales[typmod])
+                     * TimestampScales[typmod]);
        }
 #else
        *time = (rint(((double) *time) * TimestampScales[typmod])
@@ -411,7 +411,7 @@ timestamptz_recv(PG_FUNCTION_ARGS)
 Datum
 timestamptz_send(PG_FUNCTION_ARGS)
 {
-   TimestampTz timestamp = PG_GETARG_TIMESTAMPTZ(0);
+   TimestampTz timestamp = PG_GETARG_TIMESTAMPTZ(0);
    StringInfoData buf;
 
    pq_begintypsend(&buf);
@@ -829,15 +829,16 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod)
            if ((precision < 0) || (precision > MAX_INTERVAL_PRECISION))
                ereport(ERROR,
                        (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                        errmsg("interval(%d) precision must be between %d and %d",
-                                precision, 0, MAX_INTERVAL_PRECISION)));
+               errmsg("interval(%d) precision must be between %d and %d",
+                      precision, 0, MAX_INTERVAL_PRECISION)));
 
            /*
-            * Note: this round-to-nearest code is not completely consistent
-            * about rounding values that are exactly halfway between integral
-            * values.  On most platforms, rint() will implement round-to-nearest-even,
-            * but the integer code always rounds up (away from zero).  Is it
-            * worth trying to be consistent?
+            * Note: this round-to-nearest code is not completely
+            * consistent about rounding values that are exactly halfway
+            * between integral values.  On most platforms, rint() will
+            * implement round-to-nearest-even, but the integer code
+            * always rounds up (away from zero).  Is it worth trying to
+            * be consistent?
             */
 #ifdef HAVE_INT64_TIMESTAMP
            if (interval->time >= INT64CONST(0))
@@ -847,8 +848,8 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod)
            }
            else
            {
-               interval->time = - (((-interval->time + IntervalOffsets[precision]) / IntervalScales[precision])
-                                   * IntervalScales[precision]);
+               interval->time = -(((-interval->time + IntervalOffsets[precision]) / IntervalScales[precision])
+                                  * IntervalScales[precision]);
            }
 #else
            interval->time = (rint(((double) interval->time) * IntervalScales[precision])
@@ -1024,7 +1025,7 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
        {
 #ifdef HAVE_INT64_TIMESTAMP
            utime = ((dt / INT64CONST(1000000))
-                  + ((date0 - UNIX_EPOCH_JDATE) * INT64CONST(86400)));
+                    + ((date0 - UNIX_EPOCH_JDATE) * INT64CONST(86400)));
 #else
            utime = (dt + ((date0 - UNIX_EPOCH_JDATE) * 86400));
 #endif
@@ -2410,7 +2411,7 @@ text_timestamp(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                 errmsg("invalid input syntax for timestamp: \"%s\"",
                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(str))))));
+                                              PointerGetDatum(str))))));
 
    sp = VARDATA(str);
    dp = dstr;
@@ -2470,7 +2471,7 @@ text_timestamptz(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                 errmsg("invalid input syntax for timestamp with time zone: \"%s\"",
                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(str))))));
+                                              PointerGetDatum(str))))));
 
    sp = VARDATA(str);
    dp = dstr;
@@ -2531,7 +2532,7 @@ text_interval(PG_FUNCTION_ARGS)
                (errcode(ERRCODE_INVALID_DATETIME_FORMAT),
                 errmsg("invalid input syntax for interval: \"%s\"",
                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(str))))));
+                                              PointerGetDatum(str))))));
 
    sp = VARDATA(str);
    dp = dstr;
@@ -2568,8 +2569,8 @@ timestamp_trunc(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("timestamp units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
 
    up = VARDATA(units);
    lp = lowunits;
@@ -2676,9 +2677,9 @@ timestamptz_trunc(PG_FUNCTION_ARGS)
    if (VARSIZE(units) - VARHDRSZ > MAXDATELEN)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("timestamp with time zone units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+          errmsg("timestamp with time zone units \"%s\" not recognized",
+                 DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
    up = VARDATA(units);
    lp = lowunits;
    for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++)
@@ -2737,8 +2738,8 @@ timestamptz_trunc(PG_FUNCTION_ARGS)
            default:
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("timestamp with time zone units \"%s\" not "
-                               "supported", lowunits)));
+                     errmsg("timestamp with time zone units \"%s\" not "
+                            "supported", lowunits)));
                result = 0;
        }
 
@@ -2753,8 +2754,8 @@ timestamptz_trunc(PG_FUNCTION_ARGS)
    {
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("timestamp with time zone units \"%s\" not recognized",
-                        lowunits)));
+          errmsg("timestamp with time zone units \"%s\" not recognized",
+                 lowunits)));
        result = 0;
    }
 
@@ -2786,8 +2787,8 @@ interval_trunc(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("interval units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
    up = VARDATA(units);
    lp = lowunits;
    for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++)
@@ -2841,7 +2842,7 @@ interval_trunc(PG_FUNCTION_ARGS)
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                             errmsg("interval units \"%s\" not supported",
-                                    lowunits)));
+                                   lowunits)));
            }
 
            if (tm2interval(tm, fsec, result) != 0)
@@ -2850,17 +2851,15 @@ interval_trunc(PG_FUNCTION_ARGS)
                         errmsg("interval out of range")));
        }
        else
-       {
            elog(ERROR, "could not convert interval to tm");
-       }
    }
    else
    {
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("interval units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
        *result = *interval;
    }
 
@@ -2882,7 +2881,7 @@ isoweek2date(int woy, int *year, int *mon, int *mday)
    if (!*year)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("cannot convert week number without year information")));
+        errmsg("cannot convert week number without year information")));
 
    /* fourth day of current year */
    day4 = date2j(*year, 1, 4);
@@ -2972,8 +2971,8 @@ timestamp_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("timestamp units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
    up = VARDATA(units);
    lp = lowunits;
    for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++)
@@ -3081,7 +3080,7 @@ timestamp_part(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("timestamp units \"%s\" not supported",
-                                lowunits)));
+                               lowunits)));
                result = 0;
        }
    }
@@ -3090,30 +3089,33 @@ timestamp_part(PG_FUNCTION_ARGS)
        switch (val)
        {
            case DTK_EPOCH:
-           {
-               int     tz;
-               TimestampTz timestamptz;
+               {
+                   int         tz;
+                   TimestampTz timestamptz;
 
-               /* convert to timestamptz to produce consistent results */
-               if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL) != 0)
-                   ereport(ERROR,
-                           (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
-                            errmsg("timestamp out of range")));
+                   /*
+                    * convert to timestamptz to produce consistent
+                    * results
+                    */
+                   if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL) != 0)
+                       ereport(ERROR,
+                          (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+                           errmsg("timestamp out of range")));
 
-               tz = DetermineLocalTimeZone(tm);
+                   tz = DetermineLocalTimeZone(tm);
 
-               if (tm2timestamp(tm, fsec, &tz, &timestamptz) != 0)
-                   ereport(ERROR,
-                           (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
-                            errmsg("timestamp out of range")));
+                   if (tm2timestamp(tm, fsec, &tz, &timestamptz) != 0)
+                       ereport(ERROR,
+                          (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
+                           errmsg("timestamp out of range")));
 
 #ifdef HAVE_INT64_TIMESTAMP
-               result = ((timestamptz - SetEpochTimestamp()) / 1000000e0);
+                   result = ((timestamptz - SetEpochTimestamp()) / 1000000e0);
 #else
-               result = timestamptz - SetEpochTimestamp();
+                   result = timestamptz - SetEpochTimestamp();
 #endif
-               break;
-           }
+                   break;
+               }
            case DTK_DOW:
                if (timestamp2tm(timestamp, NULL, tm, &fsec, NULL) != 0)
                    ereport(ERROR,
@@ -3135,7 +3137,7 @@ timestamp_part(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("timestamp units \"%s\" not supported",
-                                lowunits)));
+                               lowunits)));
                result = 0;
        }
 
@@ -3144,7 +3146,7 @@ timestamp_part(PG_FUNCTION_ARGS)
    {
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("timestamp units \"%s\" not recognized", lowunits)));
+            errmsg("timestamp units \"%s\" not recognized", lowunits)));
        result = 0;
    }
 
@@ -3176,9 +3178,9 @@ timestamptz_part(PG_FUNCTION_ARGS)
    if (VARSIZE(units) - VARHDRSZ > MAXDATELEN)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("timestamp with time zone units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+          errmsg("timestamp with time zone units \"%s\" not recognized",
+                 DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
    up = VARDATA(units);
    lp = lowunits;
    for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++)
@@ -3298,7 +3300,7 @@ timestamptz_part(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("timestamp with time zone units \"%s\" not supported",
-                                lowunits)));
+                               lowunits)));
                result = 0;
        }
 
@@ -3336,7 +3338,7 @@ timestamptz_part(PG_FUNCTION_ARGS)
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                         errmsg("timestamp with time zone units \"%s\" not supported",
-                                lowunits)));
+                               lowunits)));
                result = 0;
        }
    }
@@ -3344,8 +3346,8 @@ timestamptz_part(PG_FUNCTION_ARGS)
    {
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("timestamp with time zone units \"%s\" not recognized",
-                        lowunits)));
+          errmsg("timestamp with time zone units \"%s\" not recognized",
+                 lowunits)));
 
        result = 0;
    }
@@ -3377,8 +3379,8 @@ interval_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("interval units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
    up = VARDATA(units);
    lp = lowunits;
    for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++)
@@ -3460,7 +3462,7 @@ interval_part(PG_FUNCTION_ARGS)
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                             errmsg("interval units \"%s\" not supported",
                             DatumGetCString(DirectFunctionCall1(textout,
-                                              PointerGetDatum(units))))));
+                                            PointerGetDatum(units))))));
                    result = 0;
            }
 
@@ -3489,8 +3491,8 @@ interval_part(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("interval units \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(units))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                            PointerGetDatum(units))))));
        result = 0;
    }
 
@@ -3521,8 +3523,8 @@ timestamp_zone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("time zone \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(zone))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                             PointerGetDatum(zone))))));
 
    if (TIMESTAMP_NOT_FINITE(timestamp))
        PG_RETURN_TIMESTAMPTZ(timestamp);
@@ -3546,7 +3548,7 @@ timestamp_zone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("time zone \"%s\" not recognized",
-                        lowzone)));
+                       lowzone)));
 
        PG_RETURN_NULL();
    }
@@ -3571,9 +3573,9 @@ timestamp_izone(PG_FUNCTION_ARGS)
    if (zone->month != 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("interval time zone \"%s\" must not specify month",
-                       DatumGetCString(DirectFunctionCall1(interval_out,
-                                        PointerGetDatum(zone))))));
+              errmsg("interval time zone \"%s\" must not specify month",
+                     DatumGetCString(DirectFunctionCall1(interval_out,
+                                             PointerGetDatum(zone))))));
 
 #ifdef HAVE_INT64_TIMESTAMP
    tz = (zone->time / INT64CONST(1000000));
@@ -3673,8 +3675,8 @@ timestamptz_zone(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("time zone \"%s\" not recognized",
-                        DatumGetCString(DirectFunctionCall1(textout,
-                                        PointerGetDatum(zone))))));
+                       DatumGetCString(DirectFunctionCall1(textout,
+                                             PointerGetDatum(zone))))));
    up = VARDATA(zone);
    lp = lowzone;
    for (i = 0; i < (VARSIZE(zone) - VARHDRSZ); i++)
@@ -3722,9 +3724,9 @@ timestamptz_izone(PG_FUNCTION_ARGS)
    if (zone->month != 0)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                errmsg("interval time zone \"%s\" must not specify month",
-                        DatumGetCString(DirectFunctionCall1(interval_out,
-                                                    PointerGetDatum(zone))))));
+              errmsg("interval time zone \"%s\" must not specify month",
+                     DatumGetCString(DirectFunctionCall1(interval_out,
+                                             PointerGetDatum(zone))))));
 
 #ifdef HAVE_INT64_TIMESTAMP
    tz = -(zone->time / INT64CONST(1000000));
index ea76783413b0cbe01b4b40c66a73fe037c06cfa1..8ced9f846f272da79ba2e82854b085770dc054d8 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/varbit.c,v 1.32 2003/07/27 04:53:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/varbit.c,v 1.33 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -106,8 +106,8 @@ bit_in(PG_FUNCTION_ARGS)
    else if (bitlen != atttypmod)
        ereport(ERROR,
                (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
-                errmsg("bit string length %d does not match type bit(%d)",
-                        bitlen, atttypmod)));
+              errmsg("bit string length %d does not match type bit(%d)",
+                     bitlen, atttypmod)));
 
    len = VARBITTOTALLEN(atttypmod);
    /* set to 0 so that *r is always initialised and string is zero-padded */
@@ -260,8 +260,8 @@ bit(PG_FUNCTION_ARGS)
    if (!isExplicit)
        ereport(ERROR,
                (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
-                errmsg("bit string length %d does not match type bit(%d)",
-                        VARBITLEN(arg), len)));
+              errmsg("bit string length %d does not match type bit(%d)",
+                     VARBITLEN(arg), len)));
 
    rlen = VARBITTOTALLEN(len);
    /* set to 0 so that string is zero-padded */
@@ -346,7 +346,7 @@ varbit_in(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
                 errmsg("bit string too long for type bit varying(%d)",
-                        atttypmod)));
+                       atttypmod)));
 
    len = VARBITTOTALLEN(bitlen);
    /* set to 0 so that *r is always initialised and string is zero-padded */
@@ -530,7 +530,7 @@ varbit(PG_FUNCTION_ARGS)
        ereport(ERROR,
                (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
                 errmsg("bit string too long for type bit varying(%d)",
-                        len)));
+                       len)));
 
    rlen = VARBITTOTALLEN(len);
    result = (VarBit *) palloc(rlen);
index 1b401b66df4168ee58b43672c0385aae21ca6a52..8ffa3969b48b81847fff5cf6e71e3b14d7144ffb 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.99 2003/07/27 04:53:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.100 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -103,7 +103,7 @@ bpcharin(PG_FUNCTION_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
                     errmsg("value too long for type character(%d)",
-                            (int) maxlen)));
+                           (int) maxlen)));
 
        /*
         * XXX: at this point, maxlen is the necessary byte length, not
@@ -190,7 +190,7 @@ bpcharsend(PG_FUNCTION_ARGS)
  *
  * Truncation rules: for an explicit cast, silently truncate to the given
  * length; for an implicit cast, raise error unless extra characters are
- * all spaces.  (This is sort-of per SQL: the spec would actually have us
+ * all spaces. (This is sort-of per SQL: the spec would actually have us
  * raise a "completion condition" for the explicit cast case, but Postgres
  * hasn't got such a concept.)
  */
@@ -230,8 +230,8 @@ bpchar(PG_FUNCTION_ARGS)
                if (*(VARDATA(source) + i) != ' ')
                    ereport(ERROR,
                            (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
-                            errmsg("value too long for type character(%d)",
-                                    maxlen - VARHDRSZ)));
+                         errmsg("value too long for type character(%d)",
+                                maxlen - VARHDRSZ)));
        }
 
        len = maxmblen;
@@ -388,8 +388,8 @@ varcharin(PG_FUNCTION_ARGS)
        else
            ereport(ERROR,
                    (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
-                    errmsg("value too long for type character varying(%d)",
-                            (int) maxlen)));
+                 errmsg("value too long for type character varying(%d)",
+                        (int) maxlen)));
    }
 
    result = palloc(len + VARHDRSZ);
@@ -456,7 +456,7 @@ varcharsend(PG_FUNCTION_ARGS)
  *
  * Truncation rules: for an explicit cast, silently truncate to the given
  * length; for an implicit cast, raise error unless extra characters are
- * all spaces.  (This is sort-of per SQL: the spec would actually have us
+ * all spaces. (This is sort-of per SQL: the spec would actually have us
  * raise a "completion condition" for the explicit cast case, but Postgres
  * hasn't got such a concept.)
  */
@@ -488,8 +488,8 @@ varchar(PG_FUNCTION_ARGS)
            if (*(VARDATA(source) + i) != ' ')
                ereport(ERROR,
                        (errcode(ERRCODE_STRING_DATA_LENGTH_MISMATCH),
-                        errmsg("value too long for type character varying(%d)",
-                                maxlen - VARHDRSZ)));
+                 errmsg("value too long for type character varying(%d)",
+                        maxlen - VARHDRSZ)));
    }
 
    len = maxmblen + VARHDRSZ;
index fc4574b6a61c824c824b224cd18bbb64084f9ae9..1055c927ada35902fd64710d5be28d72ede466ff 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.102 2003/07/27 04:53:10 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.103 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -34,7 +34,7 @@ typedef struct varlena unknown;
 #define DatumGetUnknownP(X)            ((unknown *) PG_DETOAST_DATUM(X))
 #define DatumGetUnknownPCopy(X)        ((unknown *) PG_DETOAST_DATUM_COPY(X))
 #define PG_GETARG_UNKNOWN_P(n)     DatumGetUnknownP(PG_GETARG_DATUM(n))
-#define PG_GETARG_UNKNOWN_P_COPY(n)    DatumGetUnknownPCopy(PG_GETARG_DATUM(n))
+#define PG_GETARG_UNKNOWN_P_COPY(n) DatumGetUnknownPCopy(PG_GETARG_DATUM(n))
 #define PG_RETURN_UNKNOWN_P(x)     PG_RETURN_POINTER(x)
 
 #define PG_TEXTARG_GET_STR(arg_) \
@@ -120,7 +120,7 @@ byteain(PG_FUNCTION_ARGS)
 
    byte += VARHDRSZ;
    result = (bytea *) palloc(byte);
-   VARATT_SIZEP(result) = byte;        /* set varlena length */
+   VARATT_SIZEP(result) = byte;    /* set varlena length */
 
    tp = inputText;
    rp = VARDATA(result);
@@ -376,7 +376,7 @@ Datum
 unknownrecv(PG_FUNCTION_ARGS)
 {
    StringInfo  buf = (StringInfo) PG_GETARG_POINTER(0);
-   unknown    *result;
+   unknown    *result;
    int         nbytes;
 
    nbytes = buf->len - buf->cursor;
@@ -395,7 +395,7 @@ unknownrecv(PG_FUNCTION_ARGS)
 Datum
 unknownsend(PG_FUNCTION_ARGS)
 {
-   unknown    *vlena = PG_GETARG_UNKNOWN_P_COPY(0);
+   unknown    *vlena = PG_GETARG_UNKNOWN_P_COPY(0);
 
    PG_RETURN_UNKNOWN_P(vlena);
 }
@@ -584,7 +584,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified)
            if (E < S)
                ereport(ERROR,
                        (errcode(ERRCODE_SUBSTRING_ERROR),
-                        errmsg("negative substring length not allowed")));
+                      errmsg("negative substring length not allowed")));
 
            /*
             * A zero or negative value for the end position can happen if
@@ -648,7 +648,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified)
            if (E < S)
                ereport(ERROR,
                        (errcode(ERRCODE_SUBSTRING_ERROR),
-                        errmsg("negative substring length not allowed")));
+                      errmsg("negative substring length not allowed")));
 
            /*
             * A zero or negative value for the end position can happen if
@@ -851,10 +851,10 @@ varstr_cmp(char *arg1, int len1, char *arg2, int len2)
 
    if (!lc_collate_is_c())
    {
-       char    a1buf[STACKBUFLEN];
-       char    a2buf[STACKBUFLEN];
-       char   *a1p,
-              *a2p;
+       char        a1buf[STACKBUFLEN];
+       char        a2buf[STACKBUFLEN];
+       char       *a1p,
+                  *a2p;
 
        if (len1 >= STACKBUFLEN)
            a1p = (char *) palloc(len1 + 1);
@@ -1065,7 +1065,7 @@ text_smaller(PG_FUNCTION_ARGS)
 static int
 internal_text_pattern_compare(text *arg1, text *arg2)
 {
-   int result;
+   int         result;
 
    result = memcmp(VARDATA(arg1), VARDATA(arg2),
                    Min(VARSIZE(arg1), VARSIZE(arg2)) - VARHDRSZ);
@@ -2004,7 +2004,8 @@ split_text(PG_FUNCTION_ARGS)
        if (fldnum == 1)        /* first field - just return the input
                                 * string */
            PG_RETURN_TEXT_P(inputstring);
-       else                    /* otherwise return an empty string */
+       else
+/* otherwise return an empty string */
            PG_RETURN_TEXT_P(PG_STR_GET_TEXT(""));
    }
 
@@ -2026,7 +2027,8 @@ split_text(PG_FUNCTION_ARGS)
        if (fldnum == 1)        /* first field - just return the input
                                 * string */
            PG_RETURN_TEXT_P(inputstring);
-       else                    /* otherwise return an empty string */
+       else
+/* otherwise return an empty string */
            PG_RETURN_TEXT_P(PG_STR_GET_TEXT(""));
    }
    else if ((start_posn != 0) && (end_posn == 0))
@@ -2073,32 +2075,36 @@ text_to_array(PG_FUNCTION_ARGS)
    if (inputstring_len < 1)
        PG_RETURN_NULL();
 
-   /* empty field separator
-    * return one element, 1D, array using the input string */
+   /*
+    * empty field separator return one element, 1D, array using the input
+    * string
+    */
    if (fldsep_len < 1)
        PG_RETURN_ARRAYTYPE_P(create_singleton_array(fcinfo, TEXTOID,
-                             CStringGetDatum(inputstring), 1));
+                                      CStringGetDatum(inputstring), 1));
 
    /* start with end position holding the initial start position */
    end_posn = 0;
-   for (fldnum=1;;fldnum++)    /* field number is 1 based */
+   for (fldnum = 1;; fldnum++) /* field number is 1 based */
    {
-       Datum   dvalue;
-       bool    disnull = false;
+       Datum       dvalue;
+       bool        disnull = false;
 
        start_posn = end_posn;
        end_posn = text_position(PointerGetDatum(inputstring),
                                 PointerGetDatum(fldsep),
                                 fldnum);
 
-       if ((start_posn == 0) && (end_posn == 0))   /* fldsep not found */
+       if ((start_posn == 0) && (end_posn == 0))       /* fldsep not found */
        {
            if (fldnum == 1)
            {
-               /* first element
-                * return one element, 1D, array using the input string */
+               /*
+                * first element return one element, 1D, array using the
+                * input string
+                */
                PG_RETURN_ARRAYTYPE_P(create_singleton_array(fcinfo, TEXTOID,
-                                     CStringGetDatum(inputstring), 1));
+                                      CStringGetDatum(inputstring), 1));
            }
            else
            {
@@ -2143,7 +2149,9 @@ array_to_text(PG_FUNCTION_ARGS)
 {
    ArrayType  *v = PG_GETARG_ARRAYTYPE_P(0);
    char       *fldsep = PG_TEXTARG_GET_STR(1);
-   int         nitems, *dims, ndims;
+   int         nitems,
+              *dims,
+               ndims;
    char       *p;
    Oid         element_type;
    int         typlen;
@@ -2167,21 +2175,24 @@ array_to_text(PG_FUNCTION_ARGS)
 
    /*
     * We arrange to look up info about element type, including its output
-    * conversion proc, only once per series of calls, assuming the element
-    * type doesn't change underneath us.
+    * conversion proc, only once per series of calls, assuming the
+    * element type doesn't change underneath us.
     */
    my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
    if (my_extra == NULL)
    {
        fcinfo->flinfo->fn_extra = MemoryContextAlloc(fcinfo->flinfo->fn_mcxt,
-                                                    sizeof(ArrayMetaState));
+                                                sizeof(ArrayMetaState));
        my_extra = (ArrayMetaState *) fcinfo->flinfo->fn_extra;
        my_extra->element_type = InvalidOid;
    }
 
    if (my_extra->element_type != element_type)
    {
-       /* Get info about element type, including its output conversion proc */
+       /*
+        * Get info about element type, including its output conversion
+        * proc
+        */
        get_type_io_data(element_type, IOFunc_output,
                         &my_extra->typlen, &my_extra->typbyval,
                         &my_extra->typalign, &my_extra->typdelim,
index ba21bd7896811b63fbfec5db8083d2d29cabad49..9dabcf75e06625b1454e8aaf98cfb19e1f8caad0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/xid.c,v 1.1 2003/05/12 23:08:50 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/xid.c,v 1.2 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -151,7 +151,7 @@ cidrecv(PG_FUNCTION_ARGS)
 Datum
 cidsend(PG_FUNCTION_ARGS)
 {
-   CommandId arg1 = PG_GETARG_COMMANDID(0);
+   CommandId   arg1 = PG_GETARG_COMMANDID(0);
    StringInfoData buf;
 
    pq_begintypsend(&buf);
index a1e55ee71f55362b71367206b7547321c8b84688..9c098aa41f7c90ee4613dcb3882a3728a549d1cb 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.106 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/cache/catcache.c,v 1.107 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -956,8 +956,8 @@ CatalogCacheInitializeCache(CatCache *cache)
        cache->cc_isname[i] = (keytype == NAMEOID);
 
        /*
-        * Do equality-function lookup (we assume this won't need a catalog
-        * lookup for any supported type)
+        * Do equality-function lookup (we assume this won't need a
+        * catalog lookup for any supported type)
         */
        fmgr_info_cxt(cache->cc_skey[i].sk_procedure,
                      &cache->cc_skey[i].sk_func,
index 080338a77be08112e315b270e54e044208da346e..973f1b4b507b85fc2e718a6bc8cd2b312e204f1d 100644 (file)
@@ -74,7 +74,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.56 2003/07/25 20:17:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.57 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -449,9 +449,7 @@ LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg)
        }
    }
    else
-   {
        elog(FATAL, "unrecognized SI message id: %d", msg->id);
-   }
 }
 
 /*
index 86bb40e738a7b36b6d7f2b2e7fc7b3e8ec2449e4..0a68ade5da158cee9227319e65a0f2cad4249b19 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.103 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.104 2003/08/04 00:43:26 momjian Exp $
  *
  * NOTES
  *   Eventually, the index information should go through here, too.
@@ -126,8 +126,8 @@ get_op_hash_function(Oid opno)
    Oid         opclass = InvalidOid;
 
    /*
-    * Search pg_amop to see if the target operator is registered as the "="
-    * operator of any hash opclass.  If the operator is registered in
+    * Search pg_amop to see if the target operator is registered as the
+    * "=" operator of any hash opclass.  If the operator is registered in
     * multiple opclasses, assume we can use the associated hash function
     * from any one.
     */
@@ -728,8 +728,8 @@ get_func_rettype(Oid funcid)
 Oid
 get_func_signature(Oid funcid, Oid *argtypes, int *nargs)
 {
-   HeapTuple       tp;
-   Form_pg_proc    procstruct;
+   HeapTuple   tp;
+   Form_pg_proc procstruct;
    Oid         result;
 
    tp = SearchSysCache(PROCOID,
index c9a56c0072a49ffd611df9706e75f9ca4471e326..8271473183d0537098cfe8741997dfa399b92752 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.186 2003/07/25 20:17:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.187 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -962,7 +962,8 @@ RelationInitIndexAccessInfo(Relation relation)
    /*
     * Make a copy of the pg_index entry for the index.  Since pg_index
     * contains variable-length and possibly-null fields, we have to do
-    * this honestly rather than just treating it as a Form_pg_index struct.
+    * this honestly rather than just treating it as a Form_pg_index
+    * struct.
     */
    tuple = SearchSysCache(INDEXRELID,
                           ObjectIdGetDatum(RelationGetRelid(relation)),
@@ -1368,8 +1369,7 @@ formrdesc(const char *relationName,
    bool        has_not_null;
 
    /*
-    * allocate new relation desc
-    * clear all fields of reldesc
+    * allocate new relation desc clear all fields of reldesc
     */
    relation = (Relation) palloc0(sizeof(RelationData));
    relation->rd_targblock = InvalidBlockNumber;
@@ -1710,8 +1710,8 @@ RelationClearRelation(Relation relation, bool rebuild)
 
    /*
     * Never, never ever blow away a nailed-in system relation, because
-    * we'd be unable to recover.  However, we must update rd_nblocks
-    * and reset rd_targblock, in case we got called because of a relation
+    * we'd be unable to recover.  However, we must update rd_nblocks and
+    * reset rd_targblock, in case we got called because of a relation
     * cache flush that was triggered by VACUUM.
     */
    if (relation->rd_isnailed)
@@ -1742,8 +1742,8 @@ RelationClearRelation(Relation relation, bool rebuild)
     * Free all the subsidiary data structures of the relcache entry. We
     * cannot free rd_att if we are trying to rebuild the entry, however,
     * because pointers to it may be cached in various places. The rule
-    * manager might also have pointers into the rewrite rules. So to begin
-    * with, we can only get rid of these fields:
+    * manager might also have pointers into the rewrite rules. So to
+    * begin with, we can only get rid of these fields:
     */
    FreeTriggerDesc(relation->trigdesc);
    if (relation->rd_indextuple)
@@ -2705,15 +2705,15 @@ RelationGetIndexExpressions(Relation relation)
 
    /*
     * We build the tree we intend to return in the caller's context.
-    * After successfully completing the work, we copy it into the relcache
-    * entry.  This avoids problems if we get some sort of
-    * error partway through.
+    * After successfully completing the work, we copy it into the
+    * relcache entry.  This avoids problems if we get some sort of error
+    * partway through.
     *
-    * We make use of the syscache's copy of pg_index's tupledesc
-    * to access the non-fixed fields of the tuple.  We assume that
-    * the syscache will be initialized before any access of a
-    * partial index could occur.  (This would probably fail if we
-    * were to allow partial indexes on system catalogs.)
+    * We make use of the syscache's copy of pg_index's tupledesc to access
+    * the non-fixed fields of the tuple.  We assume that the syscache
+    * will be initialized before any access of a partial index could
+    * occur.  (This would probably fail if we were to allow partial
+    * indexes on system catalogs.)
     */
    exprsDatum = SysCacheGetAttr(INDEXRELID, relation->rd_indextuple,
                                 Anum_pg_index_indexprs, &isnull);
@@ -2723,8 +2723,8 @@ RelationGetIndexExpressions(Relation relation)
    pfree(exprsString);
 
    /*
-    * Run the expressions through eval_const_expressions.  This is not just
-    * an optimization, but is necessary, because the planner will be
+    * Run the expressions through eval_const_expressions.  This is not
+    * just an optimization, but is necessary, because the planner will be
     * comparing them to const-folded qual clauses, and may fail to detect
     * valid matches without this.
     */
@@ -2770,15 +2770,15 @@ RelationGetIndexPredicate(Relation relation)
 
    /*
     * We build the tree we intend to return in the caller's context.
-    * After successfully completing the work, we copy it into the relcache
-    * entry.  This avoids problems if we get some sort of
-    * error partway through.
+    * After successfully completing the work, we copy it into the
+    * relcache entry.  This avoids problems if we get some sort of error
+    * partway through.
     *
-    * We make use of the syscache's copy of pg_index's tupledesc
-    * to access the non-fixed fields of the tuple.  We assume that
-    * the syscache will be initialized before any access of a
-    * partial index could occur.  (This would probably fail if we
-    * were to allow partial indexes on system catalogs.)
+    * We make use of the syscache's copy of pg_index's tupledesc to access
+    * the non-fixed fields of the tuple.  We assume that the syscache
+    * will be initialized before any access of a partial index could
+    * occur.  (This would probably fail if we were to allow partial
+    * indexes on system catalogs.)
     */
    predDatum = SysCacheGetAttr(INDEXRELID, relation->rd_indextuple,
                                Anum_pg_index_indpred, &isnull);
@@ -2788,8 +2788,8 @@ RelationGetIndexPredicate(Relation relation)
    pfree(predString);
 
    /*
-    * Run the expression through eval_const_expressions.  This is not just
-    * an optimization, but is necessary, because the planner will be
+    * Run the expression through eval_const_expressions.  This is not
+    * just an optimization, but is necessary, because the planner will be
     * comparing it to const-folded qual clauses, and may fail to detect
     * valid matches without this.
     */
@@ -3183,7 +3183,7 @@ write_relcache_init_file(void)
                (errcode_for_file_access(),
                 errmsg("could not create init file \"%s\": %m",
                        tempfilename),
-                errdetail("Continuing anyway, but there's something wrong.")));
+         errdetail("Continuing anyway, but there's something wrong.")));
        return;
    }
 
@@ -3322,8 +3322,8 @@ write_relcache_init_file(void)
        {
            ereport(WARNING,
                    (errcode_for_file_access(),
-                    errmsg("could not rename init file \"%s\" to \"%s\": %m",
-                           tempfilename, finalfilename),
+               errmsg("could not rename init file \"%s\" to \"%s\": %m",
+                      tempfilename, finalfilename),
                     errdetail("Continuing anyway, but there's something wrong.")));
 
            /*
index a8d29840095594a08ffb50f5eb35f31eebd6ff0d..c848c57e684d2d9e5e3cbe361b5ac0a7a9114466 100644 (file)
@@ -9,19 +9,19 @@
  * if we run out of memory, it's important to be able to report that fact.
  * There are a number of considerations that go into this.
  *
- * First, distinguish between re-entrant use and actual recursion.  It
+ * First, distinguish between re-entrant use and actual recursion. It
  * is possible for an error or warning message to be emitted while the
- * parameters for an error message are being computed.  In this case
+ * parameters for an error message are being computed. In this case
  * errstart has been called for the outer message, and some field values
- * may have already been saved, but we are not actually recursing.  We handle
- * this by providing a (small) stack of ErrorData records.  The inner message
+ * may have already been saved, but we are not actually recursing. We handle
+ * this by providing a (small) stack of ErrorData records. The inner message
  * can be computed and sent without disturbing the state of the outer message.
  * (If the inner message is actually an error, this isn't very interesting
  * because control won't come back to the outer message generator ... but
  * if the inner message is only debug or log data, this is critical.)
  *
  * Second, actual recursion will occur if an error is reported by one of
- * the elog.c routines or something they call.  By far the most probable
+ * the elog.c routines or something they call. By far the most probable
  * scenario of this sort is "out of memory"; and it's also the nastiest
  * to handle because we'd likely also run out of memory while trying to
  * report this error!  Our escape hatch for this condition is to force any
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.116 2003/08/03 23:44:44 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.117 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -69,8 +69,9 @@ ErrorContextCallback *error_context_stack = NULL;
 
 /* GUC parameters */
 PGErrorVerbosity Log_error_verbosity = PGERROR_VERBOSE;
-bool       Log_timestamp = false;  /* show timestamps in stderr output */
-bool       Log_pid = false;        /* show PIDs in stderr output */
+bool       Log_timestamp = false;      /* show timestamps in stderr
+                                        * output */
+bool       Log_pid = false;    /* show PIDs in stderr output */
 
 #ifdef HAVE_SYSLOG
 /*
@@ -88,8 +89,7 @@ static void write_syslog(int level, const char *line);
 #else
 
 #define Use_syslog 0
-
-#endif /* HAVE_SYSLOG */
+#endif   /* HAVE_SYSLOG */
 
 
 /*
@@ -102,8 +102,8 @@ static void write_syslog(int level, const char *line);
 typedef struct ErrorData
 {
    int         elevel;         /* error level */
-   bool        output_to_server; /* will report to server log? */
-   bool        output_to_client; /* will report to client? */
+   bool        output_to_server;       /* will report to server log? */
+   bool        output_to_client;       /* will report to client? */
    bool        show_funcname;  /* true to force funcname inclusion */
    const char *filename;       /* __FILE__ of ereport() call */
    int         lineno;         /* __LINE__ of ereport() call */
@@ -115,7 +115,7 @@ typedef struct ErrorData
    char       *context;        /* context message */
    int         cursorpos;      /* cursor index into query string */
    int         saved_errno;    /* errno at entry */
-} ErrorData;
+}  ErrorData;
 
 /* We provide a small stack of ErrorData records for re-entrant cases */
 #define ERRORDATA_STACK_SIZE  5
@@ -124,7 +124,7 @@ static ErrorData errordata[ERRORDATA_STACK_SIZE];
 
 static int errordata_stack_depth = -1; /* index of topmost active frame */
 
-static int recursion_depth = 0;        /* to detect actual recursion */
+static int recursion_depth = 0;    /* to detect actual recursion */
 
 
 /* Macro for checking errordata_stack_depth is reasonable */
@@ -138,9 +138,9 @@ static int  recursion_depth = 0;        /* to detect actual recursion */
    } while (0)
 
 
-static void send_message_to_server_log(ErrorData *edata);
-static void send_message_to_frontend(ErrorData *edata);
-static char *expand_fmt_string(const char *fmt, ErrorData *edata);
+static void send_message_to_server_log(ErrorData * edata);
+static void send_message_to_frontend(ErrorData * edata);
+static char *expand_fmt_string(const char *fmt, ErrorData * edata);
 static const char *useful_strerror(int errnum);
 static const char *error_severity(int elevel);
 static const char *print_timestamp(void);
@@ -167,9 +167,9 @@ errstart(int elevel, const char *filename, int lineno,
    bool        output_to_client = false;
 
    /*
-    * First decide whether we need to process this report at all;
-    * if it's warning or less and not enabled for logging, just
-    * return FALSE without starting up any error logging machinery.
+    * First decide whether we need to process this report at all; if it's
+    * warning or less and not enabled for logging, just return FALSE
+    * without starting up any error logging machinery.
     */
 
    /*
@@ -246,15 +246,16 @@ errstart(int elevel, const char *filename, int lineno,
    if (recursion_depth++ > 0)
    {
        /*
-        * Ooops, error during error processing.  Clear ErrorContext and force
-        * level up to ERROR or greater, as discussed at top of file.  Adjust
-        * output decisions too.
+        * Ooops, error during error processing.  Clear ErrorContext and
+        * force level up to ERROR or greater, as discussed at top of
+        * file.  Adjust output decisions too.
         */
        MemoryContextReset(ErrorContext);
        output_to_server = true;
        if (whereToSendOutput == Remote && elevel != COMMERROR)
            output_to_client = true;
        elevel = Max(elevel, ERROR);
+
        /*
         * If we recurse more than once, the problem might be something
         * broken in a context traceback routine.  Abandon them too.
@@ -265,9 +266,10 @@ errstart(int elevel, const char *filename, int lineno,
    if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE)
    {
        /* Wups, stack not big enough */
-       int     i;
+       int         i;
 
        elevel = Max(elevel, ERROR);
+
        /*
         * Don't forget any FATAL/PANIC status on the stack (see comments
         * in errfinish)
@@ -311,7 +313,7 @@ errstart(int elevel, const char *filename, int lineno,
  * See elog.h for the error level definitions.
  */
 void
-errfinish(int dummy, ...)
+errfinish(int dummy,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    int         elevel = edata->elevel;
@@ -322,8 +324,8 @@ errfinish(int dummy, ...)
    CHECK_STACK_DEPTH();
 
    /*
-    * Do processing in ErrorContext, which we hope has enough reserved space
-    * to report an error.
+    * Do processing in ErrorContext, which we hope has enough reserved
+    * space to report an error.
     */
    oldcontext = MemoryContextSwitchTo(ErrorContext);
 
@@ -335,9 +337,7 @@ errfinish(int dummy, ...)
    for (econtext = error_context_stack;
         econtext != NULL;
         econtext = econtext->previous)
-   {
        (*econtext->callback) (econtext->arg);
-   }
 
    /* Send to server log, if enabled */
    if (edata->output_to_server)
@@ -374,15 +374,15 @@ errfinish(int dummy, ...)
 
    /*
     * If the error level is ERROR or more, we are not going to return to
-    * caller; therefore, if there is any stacked error already in progress
-    * it will be lost.  This is more or less okay, except we do not want
-    * to have a FATAL or PANIC error downgraded because the reporting process
-    * was interrupted by a lower-grade error.  So check the stack and make
-    * sure we panic if panic is warranted.
+    * caller; therefore, if there is any stacked error already in
+    * progress it will be lost.  This is more or less okay, except we do
+    * not want to have a FATAL or PANIC error downgraded because the
+    * reporting process was interrupted by a lower-grade error.  So check
+    * the stack and make sure we panic if panic is warranted.
     */
    if (elevel >= ERROR)
    {
-       int     i;
+       int         i;
 
        for (i = 0; i <= errordata_stack_depth; i++)
            elevel = Max(elevel, errordata[i].elevel);
@@ -415,23 +415,24 @@ errfinish(int dummy, ...)
        /*
         * For a FATAL error, we let proc_exit clean up and exit.
         *
-        * There are several other cases in which we treat ERROR as FATAL
-        * and go directly to proc_exit:
+        * There are several other cases in which we treat ERROR as FATAL and
+        * go directly to proc_exit:
         *
         * 1. ExitOnAnyError mode switch is set (initdb uses this).
-        * 
+        *
         * 2. we have not yet entered the main backend loop (ie, we are in
-        * the postmaster or in backend startup); we have noplace to recover.
+        * the postmaster or in backend startup); we have noplace to
+        * recover.
         *
-        * 3. the error occurred after proc_exit has begun to run.  (It's
+        * 3. the error occurred after proc_exit has begun to run.  (It's
         * proc_exit's responsibility to see that this doesn't turn into
         * infinite recursion!)
         *
         * In the last case, we exit with nonzero exit code to indicate that
-        * something's pretty wrong.  We also want to exit with nonzero exit
-        * code if not running under the postmaster (for example, if we are
-        * being run from the initdb script, we'd better return an error
-        * status).
+        * something's pretty wrong.  We also want to exit with nonzero
+        * exit code if not running under the postmaster (for example, if
+        * we are being run from the initdb script, we'd better return an
+        * error status).
         */
        if (elevel == FATAL ||
            ExitOnAnyError ||
@@ -469,8 +470,8 @@ errfinish(int dummy, ...)
         * Serious crash time. Postmaster will observe nonzero process
         * exit status and kill the other backends too.
         *
-        * XXX: what if we are *in* the postmaster?  abort() won't kill
-        * our children...
+        * XXX: what if we are *in* the postmaster?  abort() won't kill our
+        * children...
         */
        ImmediateInterruptOK = false;
        fflush(stdout);
@@ -504,7 +505,7 @@ errcode(int sqlerrcode)
 /*
  * errcode_for_file_access --- add SQLSTATE error code to the current error
  *
- * The SQLSTATE code is chosen based on the saved errno value.  We assume
+ * The SQLSTATE code is chosen based on the saved errno value. We assume
  * that the failing operation was some type of disk file access.
  *
  * NOTE: the primary error message string should generally include %m
@@ -520,7 +521,7 @@ errcode_for_file_access(void)
 
    switch (edata->saved_errno)
    {
-       /* Permission-denied failures */
+           /* Permission-denied failures */
        case EPERM:             /* Not super-user */
        case EACCES:            /* Permission denied */
 #ifdef EROFS
@@ -529,24 +530,24 @@ errcode_for_file_access(void)
            edata->sqlerrcode = ERRCODE_INSUFFICIENT_PRIVILEGE;
            break;
 
-       /* Object not found */
+           /* Object not found */
        case ENOENT:            /* No such file or directory */
            edata->sqlerrcode = ERRCODE_UNDEFINED_OBJECT;
            break;
 
-       /* Duplicate object */
+           /* Duplicate object */
        case EEXIST:            /* File exists */
            edata->sqlerrcode = ERRCODE_DUPLICATE_OBJECT;
            break;
 
-       /* Wrong object type or state */
+           /* Wrong object type or state */
        case ENOTDIR:           /* Not a directory */
        case EISDIR:            /* Is a directory */
-       case ENOTEMPTY:         /* Directory not empty */
+       case ENOTEMPTY: /* Directory not empty */
            edata->sqlerrcode = ERRCODE_WRONG_OBJECT_TYPE;
            break;
 
-       /* Insufficient resources */
+           /* Insufficient resources */
        case ENOSPC:            /* No space left on device */
            edata->sqlerrcode = ERRCODE_DISK_FULL;
            break;
@@ -556,12 +557,12 @@ errcode_for_file_access(void)
            edata->sqlerrcode = ERRCODE_INSUFFICIENT_RESOURCES;
            break;
 
-       /* Hardware failure */
+           /* Hardware failure */
        case EIO:               /* I/O error */
            edata->sqlerrcode = ERRCODE_IO_ERROR;
            break;
 
-       /* All else is classified as internal errors */
+           /* All else is classified as internal errors */
        default:
            edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;
            break;
@@ -573,7 +574,7 @@ errcode_for_file_access(void)
 /*
  * errcode_for_socket_access --- add SQLSTATE error code to the current error
  *
- * The SQLSTATE code is chosen based on the saved errno value.  We assume
+ * The SQLSTATE code is chosen based on the saved errno value. We assume
  * that the failing operation was some type of socket access.
  *
  * NOTE: the primary error message string should generally include %m
@@ -589,7 +590,7 @@ errcode_for_socket_access(void)
 
    switch (edata->saved_errno)
    {
-       /* Loss of connection */
+           /* Loss of connection */
        case EPIPE:
 #ifdef ECONNRESET
        case ECONNRESET:
@@ -597,7 +598,7 @@ errcode_for_socket_access(void)
            edata->sqlerrcode = ERRCODE_CONNECTION_FAILURE;
            break;
 
-       /* All else is classified as internal errors */
+           /* All else is classified as internal errors */
        default:
            edata->sqlerrcode = ERRCODE_INTERNAL_ERROR;
            break;
@@ -611,7 +612,7 @@ errcode_for_socket_access(void)
  * This macro handles expansion of a format string and associated parameters;
  * it's common code for errmsg(), errdetail(), etc.  Must be called inside
  * a routine that is declared like "const char *fmt, ..." and has an edata
- * pointer set up.  The message is assigned to edata->targetfield, or
+ * pointer set up. The message is assigned to edata->targetfield, or
  * appended to it if appendval is true.
  *
  * Note: we pstrdup the buffer rather than just transferring its storage
@@ -661,7 +662,7 @@ errcode_for_socket_access(void)
  * ereport will provide one for the output methods that need it.
  */
 int
-errmsg(const char *fmt, ...)
+errmsg(const char *fmt,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    MemoryContext oldcontext;
@@ -687,7 +688,7 @@ errmsg(const char *fmt, ...)
  * spending translation effort on.
  */
 int
-errmsg_internal(const char *fmt, ...)
+errmsg_internal(const char *fmt,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    MemoryContext oldcontext;
@@ -708,7 +709,7 @@ errmsg_internal(const char *fmt, ...)
  * errdetail --- add a detail error message text to the current error
  */
 int
-errdetail(const char *fmt, ...)
+errdetail(const char *fmt,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    MemoryContext oldcontext;
@@ -729,7 +730,7 @@ errdetail(const char *fmt, ...)
  * errhint --- add a hint error message text to the current error
  */
 int
-errhint(const char *fmt, ...)
+errhint(const char *fmt,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    MemoryContext oldcontext;
@@ -754,7 +755,7 @@ errhint(const char *fmt, ...)
  * states.
  */
 int
-errcontext(const char *fmt, ...)
+errcontext(const char *fmt,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    MemoryContext oldcontext;
@@ -816,7 +817,7 @@ errposition(int cursorpos)
  * the true elevel.
  */
 void
-elog_finish(int elevel, const char *fmt, ...)
+elog_finish(int elevel, const char *fmt,...)
 {
    ErrorData  *edata = &errordata[errordata_stack_depth];
    MemoryContext oldcontext;
@@ -870,7 +871,7 @@ DebugFileOpen(void)
                       0666)) < 0)
            ereport(FATAL,
                    (errcode_for_file_access(),
-                    errmsg("failed to open \"%s\": %m", OutputFileName)));
+                  errmsg("failed to open \"%s\": %m", OutputFileName)));
        istty = isatty(fd);
        close(fd);
 
@@ -1016,7 +1017,6 @@ write_syslog(int level, const char *line)
        syslog(level, "[%lu] %s", seq, line);
    }
 }
-
 #endif   /* HAVE_SYSLOG */
 
 
@@ -1024,9 +1024,9 @@ write_syslog(int level, const char *line)
  * Write error report to server's log
  */
 static void
-send_message_to_server_log(ErrorData *edata)
+send_message_to_server_log(ErrorData * edata)
 {
-   StringInfoData  buf;
+   StringInfoData buf;
 
    initStringInfo(&buf);
 
@@ -1035,9 +1035,9 @@ send_message_to_server_log(ErrorData *edata)
    if (Log_error_verbosity >= PGERROR_VERBOSE)
    {
        /* unpack MAKE_SQLSTATE code */
-       char    tbuf[12];
-       int     ssval;
-       int     i;
+       char        tbuf[12];
+       int         ssval;
+       int         i;
 
        ssval = edata->sqlerrcode;
        for (i = 0; i < 5; i++)
@@ -1080,9 +1080,10 @@ send_message_to_server_log(ErrorData *edata)
    }
 
    /*
-    * If the user wants the query that generated this error logged, do so.
-    * We use debug_query_string to get at the query, which is kinda useless
-    * for queries triggered by extended query protocol; how to improve?
+    * If the user wants the query that generated this error logged, do
+    * so. We use debug_query_string to get at the query, which is kinda
+    * useless for queries triggered by extended query protocol; how to
+    * improve?
     */
    if (edata->elevel >= log_min_error_statement && debug_query_string != NULL)
        appendStringInfo(&buf, gettext("STATEMENT:  %s\n"),
@@ -1150,7 +1151,7 @@ send_message_to_server_log(ErrorData *edata)
  * Write error report to client
  */
 static void
-send_message_to_frontend(ErrorData *edata)
+send_message_to_frontend(ErrorData * edata)
 {
    StringInfoData msgbuf;
 
@@ -1160,9 +1161,9 @@ send_message_to_frontend(ErrorData *edata)
    if (PG_PROTOCOL_MAJOR(FrontendProtocol) >= 3)
    {
        /* New style with separate fields */
-       char    tbuf[12];
-       int     ssval;
-       int     i;
+       char        tbuf[12];
+       int         ssval;
+       int         i;
 
        pq_sendbyte(&msgbuf, 'S');
        pq_sendstring(&msgbuf, error_severity(edata->elevel));
@@ -1230,7 +1231,7 @@ send_message_to_frontend(ErrorData *edata)
            pq_sendstring(&msgbuf, edata->funcname);
        }
 
-       pq_sendbyte(&msgbuf, '\0'); /* terminator */
+       pq_sendbyte(&msgbuf, '\0');     /* terminator */
    }
    else
    {
@@ -1288,9 +1289,9 @@ send_message_to_frontend(ErrorData *edata)
  * The result is a palloc'd string.
  */
 static char *
-expand_fmt_string(const char *fmt, ErrorData *edata)
+expand_fmt_string(const char *fmt, ErrorData * edata)
 {
-   StringInfoData  buf;
+   StringInfoData buf;
    const char *cp;
 
    initStringInfo(&buf);
@@ -1303,9 +1304,9 @@ expand_fmt_string(const char *fmt, ErrorData *edata)
            if (*cp == 'm')
            {
                /*
-                * Replace %m by system error string.  If there are any %'s
-                * in the string, we'd better double them so that vsnprintf
-                * won't misinterpret.
+                * Replace %m by system error string.  If there are any
+                * %'s in the string, we'd better double them so that
+                * vsnprintf won't misinterpret.
                 */
                const char *cp2;
 
@@ -1340,7 +1341,7 @@ useful_strerror(int errnum)
 {
    /* this buffer is only used if errno has a bogus value */
    static char errorstr_buf[48];
-   const char   *str;
+   const char *str;
 
    str = strerror(errnum);
 
index e53674944115ca0aa0cf8f0da6dd40461fb1525d..052711ef45d48b0e6bc010c3c73381350420ce46 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.62 2003/07/19 20:20:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.63 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -96,7 +96,7 @@ load_external_function(char *filename, char *funcname,
        if (stat(fullname, &stat_buf) == -1)
            ereport(ERROR,
                    (errcode_for_file_access(),
-                    errmsg("could not access file \"%s\": %m", fullname)));
+                 errmsg("could not access file \"%s\": %m", fullname)));
 
        for (file_scanner = file_list;
             file_scanner != (DynamicFileList *) NULL &&
@@ -404,7 +404,7 @@ find_in_dynamic_libpath(const char *basename)
        if (len == 0)
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_NAME),
-                    errmsg("zero-length component in DYNAMIC_LIBRARY_PATH")));
+              errmsg("zero-length component in DYNAMIC_LIBRARY_PATH")));
 
        piece = palloc(len + 1);
        strncpy(piece, p, len);
@@ -417,7 +417,7 @@ find_in_dynamic_libpath(const char *basename)
        if (!is_absolute_path(mangled))
            ereport(ERROR,
                    (errcode(ERRCODE_INVALID_NAME),
-                    errmsg("DYNAMIC_LIBRARY_PATH component is not absolute")));
+             errmsg("DYNAMIC_LIBRARY_PATH component is not absolute")));
 
        full = palloc(strlen(mangled) + 1 + baselen + 1);
        sprintf(full, "%s/%s", mangled, basename);
index 03bf02266370642871e60261755363dc62633e05..a441909def997d2b56ac0ff86945b37e4e25824c 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.73 2003/07/25 20:17:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.74 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -220,8 +220,8 @@ fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt,
            if (fbp == NULL)
                ereport(ERROR,
                        (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                        errmsg("internal function \"%s\" is not in table",
-                               prosrc)));
+                      errmsg("internal function \"%s\" is not in table",
+                             prosrc)));
            pfree(prosrc);
            /* Should we check that nargs, strict, retset match the table? */
            finfo->fn_addr = fbp->func;
@@ -619,8 +619,8 @@ fmgr_oldstyle(PG_FUNCTION_ARGS)
             */
            ereport(ERROR,
                    (errcode(ERRCODE_TOO_MANY_ARGUMENTS),
-                    errmsg("function %u has too many arguments (%d > %d)",
-                           fcinfo->flinfo->fn_oid, n_arguments, 16)));
+                  errmsg("function %u has too many arguments (%d > %d)",
+                         fcinfo->flinfo->fn_oid, n_arguments, 16)));
            returnValue = NULL; /* keep compiler quiet */
            break;
    }
@@ -698,7 +698,7 @@ fmgr_security_definer(PG_FUNCTION_ARGS)
  * NOTE: the simplest way to reliably initialize a FunctionCallInfoData
  * is to MemSet it to zeroes and then fill in the fields that should be
  * nonzero.  However, in a few of the most heavily used paths, we instead
- * just zero the fields that must be zero.  This saves a fair number of
+ * just zero the fields that must be zero. This saves a fair number of
  * cycles so it's worth the extra maintenance effort.  Also see inlined
  * version of FunctionCall2 in utils/sort/tuplesort.c if you need to change
  * these routines!
@@ -1483,8 +1483,8 @@ fmgr(Oid procedureId,...)
        if (n_arguments > FUNC_MAX_ARGS)
            ereport(ERROR,
                    (errcode(ERRCODE_TOO_MANY_ARGUMENTS),
-                    errmsg("function %u has too many arguments (%d > %d)",
-                           flinfo.fn_oid, n_arguments, FUNC_MAX_ARGS)));
+                  errmsg("function %u has too many arguments (%d > %d)",
+                         flinfo.fn_oid, n_arguments, FUNC_MAX_ARGS)));
        va_start(pvar, procedureId);
        for (i = 0; i < n_arguments; i++)
            fcinfo.arg[i] = (Datum) va_arg(pvar, char *);
@@ -1607,11 +1607,11 @@ pg_detoast_datum_slice(struct varlena * datum, int32 first, int32 count)
 Oid
 get_fn_expr_rettype(FmgrInfo *flinfo)
 {
-   Node   *expr;
+   Node       *expr;
 
    /*
-    * can't return anything useful if we have no FmgrInfo or if
-    * its fn_expr node has not been initialized
+    * can't return anything useful if we have no FmgrInfo or if its
+    * fn_expr node has not been initialized
     */
    if (!flinfo || !flinfo->fn_expr)
        return InvalidOid;
@@ -1629,13 +1629,13 @@ get_fn_expr_rettype(FmgrInfo *flinfo)
 Oid
 get_fn_expr_argtype(FmgrInfo *flinfo, int argnum)
 {
-   Node   *expr;
-   List   *args;
-   Oid     argtype;
+   Node       *expr;
+   List       *args;
+   Oid         argtype;
 
    /*
-    * can't return anything useful if we have no FmgrInfo or if
-    * its fn_expr node has not been initialized
+    * can't return anything useful if we have no FmgrInfo or if its
+    * fn_expr node has not been initialized
     */
    if (!flinfo || !flinfo->fn_expr)
        return InvalidOid;
index a725160ee6b8fd2b7eb6982d7163392f8ced1d94..8eb0a7954dd67abf53df502f395407bfc7406a49 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/init/Attic/findbe.c,v 1.35 2003/07/25 20:17:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/init/Attic/findbe.c,v 1.36 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -44,6 +44,7 @@ static int
 ValidateBinary(char *path)
 {
    struct stat buf;
+
 #ifndef WIN32
    uid_t       euid;
    struct group *gp;
@@ -85,9 +86,9 @@ ValidateBinary(char *path)
     * dynamic loading).
     */
 #ifdef WIN32
-       is_r = buf.st_mode & S_IRUSR;
-       is_x = buf.st_mode & S_IXUSR;
-       return is_x ? (is_r ? 0 : -2) : -1;
+   is_r = buf.st_mode & S_IRUSR;
+   is_x = buf.st_mode & S_IXUSR;
+   return is_x ? (is_r ? 0 : -2) : -1;
 #else
    euid = geteuid();
    if (euid == buf.st_uid)
index ea38b94973c04266a8fc913a24b44d6deb6bcc8c..4ccc8042d0e62b195af5f813182c5dddd1a57bbf 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.110 2003/08/01 00:15:23 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.111 2003/08/04 00:43:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -482,9 +482,9 @@ GetCharSetByHost(char *TableName, int host, const char *DataDir)
  * restore the current user id if you need to change it.
  * ----------------------------------------------------------------
  */
-static AclId   AuthenticatedUserId = 0;
-static AclId   SessionUserId = 0;
-static AclId   CurrentUserId = 0;
+static AclId AuthenticatedUserId = 0;
+static AclId SessionUserId = 0;
+static AclId CurrentUserId = 0;
 
 static bool AuthenticatedUserIsSuperuser = false;
 
@@ -620,7 +620,7 @@ SetSessionAuthorization(AclId userid, bool is_superuser)
        !AuthenticatedUserIsSuperuser)
        ereport(ERROR,
                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                errmsg("permission denied to set session authorization")));
+             errmsg("permission denied to set session authorization")));
 
    SetSessionUserId(userid);
    SetUserId(userid);
@@ -685,15 +685,16 @@ GetUserNameFromId(AclId userid)
 static void
 UnlinkLockFile(int status, Datum filename)
 {
-  char *fname = (char *)DatumGetPointer(filename);
-  if( fname != NULL )
-    {
-      if( unlink(fname) != 0 )
+   char       *fname = (char *) DatumGetPointer(filename);
+
+   if (fname != NULL)
    {
-     /* Should we complain if the unlink fails? */
+       if (unlink(fname) != 0)
+       {
+           /* Should we complain if the unlink fails? */
+       }
+       free(fname);
    }
-      free(fname);
-    }
 }
 
 /*
@@ -789,11 +790,11 @@ CreateLockFile(const char *filename, bool amPostmaster,
                         errmsg("lock file \"%s\" already exists",
                                filename),
                         isDDLock ?
-                        errhint("Is another %s (pid %d) running in \"%s\"?",
-                                (encoded_pid < 0 ? "postgres" : "postmaster"),
-                                (int) other_pid, refName) :
+                    errhint("Is another %s (pid %d) running in \"%s\"?",
+                          (encoded_pid < 0 ? "postgres" : "postmaster"),
+                            (int) other_pid, refName) :
                         errhint("Is another %s (pid %d) using \"%s\"?",
-                                (encoded_pid < 0 ? "postgres" : "postmaster"),
+                          (encoded_pid < 0 ? "postgres" : "postmaster"),
                                 (int) other_pid, refName)));
            }
        }
@@ -821,14 +822,14 @@ CreateLockFile(const char *filename, bool amPostmaster,
                    if (PGSharedMemoryIsInUse(id1, id2))
                        ereport(FATAL,
                                (errcode(ERRCODE_LOCK_FILE_EXISTS),
-                                errmsg("pre-existing shared memory block "
-                                       "(key %lu, id %lu) is still in use",
-                                       id1, id2),
-                                errhint("If you're sure there are no old "
-                                        "backends still running, remove "
-                                        "the shared memory block with "
-                                        "ipcrm(1), or just delete \"%s\".",
-                                        filename)));
+                              errmsg("pre-existing shared memory block "
+                                     "(key %lu, id %lu) is still in use",
+                                     id1, id2),
+                              errhint("If you're sure there are no old "
+                                      "backends still running, remove "
+                                      "the shared memory block with "
+                                      "ipcrm(1), or just delete \"%s\".",
+                                      filename)));
                }
            }
        }
@@ -844,7 +845,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
                     errmsg("could not remove old lock file \"%s\": %m",
                            filename),
                     errhint("The file seems accidentally left over, but "
-                            "I couldn't remove it. Please remove the file "
+                         "I couldn't remove it. Please remove the file "
                             "by hand and try again.")));
    }
 
@@ -865,7 +866,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
        errno = save_errno ? save_errno : ENOSPC;
        ereport(FATAL,
                (errcode_for_file_access(),
-                errmsg("could not write lock file \"%s\": %m", filename)));
+             errmsg("could not write lock file \"%s\": %m", filename)));
    }
    close(fd);
 
@@ -912,17 +913,17 @@ TouchSocketLockFile(void)
    if (socketLockFile[0] != '\0')
    {
        /*
-        * utime() is POSIX standard, utimes() is a common alternative;
-        * if we have neither, fall back to actually reading the file
-        * (which only sets the access time not mod time, but that should
-        * be enough in most cases).  In all paths, we ignore errors.
+        * utime() is POSIX standard, utimes() is a common alternative; if
+        * we have neither, fall back to actually reading the file (which
+        * only sets the access time not mod time, but that should be
+        * enough in most cases).  In all paths, we ignore errors.
         */
 #ifdef HAVE_UTIME
        utime(socketLockFile, NULL);
-#else /* !HAVE_UTIME */
+#else                          /* !HAVE_UTIME */
 #ifdef HAVE_UTIMES
        utimes(socketLockFile, NULL);
-#else /* !HAVE_UTIMES */
+#else                          /* !HAVE_UTIMES */
        int         fd;
        char        buffer[1];
 
@@ -932,8 +933,8 @@ TouchSocketLockFile(void)
            read(fd, buffer, sizeof(buffer));
            close(fd);
        }
-#endif /* HAVE_UTIMES */
-#endif /* HAVE_UTIME */
+#endif   /* HAVE_UTIMES */
+#endif   /* HAVE_UTIME */
    }
 }
 
@@ -1072,13 +1073,13 @@ ValidatePgVersion(const char *path)
 
    ret = fscanf(file, "%ld.%ld", &file_major, &file_minor);
    if (ret != 2)
-           ereport(FATAL,
-                   (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                    errmsg("\"%s\" is not a valid data directory",
-                           path),
-                    errdetail("File \"%s\" does not contain valid data.",
-                              full_path),
-                    errhint("You may need to initdb.")));
+       ereport(FATAL,
+               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+                errmsg("\"%s\" is not a valid data directory",
+                       path),
+                errdetail("File \"%s\" does not contain valid data.",
+                          full_path),
+                errhint("You may need to initdb.")));
 
    FreeFile(file);
 
@@ -1087,7 +1088,7 @@ ValidatePgVersion(const char *path)
                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                 errmsg("database files are incompatible with server"),
                 errdetail("The data directory was initialized by PostgreSQL version %ld.%ld, "
-                          "which is not compatible with this version %s.",
+                        "which is not compatible with this version %s.",
                           file_major, file_minor, version_string)));
 }
 
@@ -1098,6 +1099,7 @@ ValidatePgVersion(const char *path)
 
 #if defined(__mc68000__) && defined(__ELF__)
 typedef int32 ((*func_ptr) ());
+
 #else
 typedef char *((*func_ptr) ());
 #endif
@@ -1142,8 +1144,9 @@ process_preload_libraries(char *preload_libraries_string)
        if (sep)
        {
            /*
-            * a colon separator implies there is an initialization function
-            * that we need to run in addition to loading the library
+            * a colon separator implies there is an initialization
+            * function that we need to run in addition to loading the
+            * library
             */
            size_t      filename_len = sep - tok;
            size_t      funcname_len = strlen(tok) - filename_len - 1;
@@ -1167,7 +1170,7 @@ process_preload_libraries(char *preload_libraries_string)
        initfunc = (func_ptr) load_external_function(filename, funcname,
                                                     true, NULL);
        if (initfunc)
-           (*initfunc)();
+           (*initfunc) ();
 
        if (funcname)
            ereport(LOG,
@@ -1186,4 +1189,3 @@ process_preload_libraries(char *preload_libraries_string)
    pfree(rawstring);
    freeList(elemlist);
 }
-
index 9dc96f0653b674810c9a3cc5000626293bc4fb29..33c3e6a124b1320d06cd73191dfa46ecd505cc77 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.124 2003/07/25 20:17:52 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.125 2003/08/04 00:43:26 momjian Exp $
  *
  *
  *-------------------------------------------------------------------------
@@ -124,8 +124,8 @@ ReverifyMyDatabase(const char *name)
    if (!dbform->datallowconn)
        ereport(FATAL,
                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                errmsg("database \"%s\" is not currently accepting connections",
-                       name)));
+        errmsg("database \"%s\" is not currently accepting connections",
+               name)));
 
    /*
     * OK, we're golden.  Only other to-do item is to save the encoding
@@ -179,8 +179,8 @@ InitCommunication(void)
    if (!IsUnderPostmaster)     /* postmaster already did this */
    {
        /*
-        * We're running a postgres bootstrap process or a standalone backend.
-        * Create private "shmem" and semaphores.
+        * We're running a postgres bootstrap process or a standalone
+        * backend. Create private "shmem" and semaphores.
         */
        CreateSharedMemoryAndSemaphores(true, MaxBackends, 0);
    }
@@ -272,8 +272,8 @@ InitPostgres(const char *dbname, const char *username)
                        (errcode(ERRCODE_UNDEFINED_DATABASE),
                         errmsg("database \"%s\" does not exist",
                                dbname),
-                        errdetail("The database subdirectory \"%s\" is missing.",
-                                  fullpath)));
+               errdetail("The database subdirectory \"%s\" is missing.",
+                         fullpath)));
            else
                ereport(FATAL,
                        (errcode_for_file_access(),
@@ -368,7 +368,7 @@ InitPostgres(const char *dbname, const char *username)
        if (!ThereIsAtLeastOneUser())
            ereport(WARNING,
                    (errcode(ERRCODE_UNDEFINED_OBJECT),
-                    errmsg("no users are defined in this database system"),
+                 errmsg("no users are defined in this database system"),
                     errhint("You should immediately run 'CREATE USER \"%s\" WITH SYSID %d CREATEUSER;'.",
                             username, BOOTSTRAP_USESYSID)));
    }
@@ -395,10 +395,10 @@ InitPostgres(const char *dbname, const char *username)
 
    /*
     * Check a normal user hasn't connected to a superuser reserved slot.
-    * We can't do this till after we've read the user information, and
-    * we must do it inside a transaction since checking superuserness
-    * may require database access.  The superuser check is probably the
-    * most expensive part; don't do it until necessary.
+    * We can't do this till after we've read the user information, and we
+    * must do it inside a transaction since checking superuserness may
+    * require database access.  The superuser check is probably the most
+    * expensive part; don't do it until necessary.
     */
    if (ReservedBackends > 0 &&
        CountEmptyBackendSlots() < ReservedBackends &&
@@ -419,8 +419,8 @@ InitPostgres(const char *dbname, const char *username)
    InitializeClientEncoding();
 
    /*
-    * Now all default states are fully set up.  Report them to client
-    * if appropriate.
+    * Now all default states are fully set up.  Report them to client if
+    * appropriate.
     */
    BeginReportingGUCOptions();
 
index ec1af6a4e7270999d36ecf8599b61fadd1b94b1b..c29d1bdc7b4ea95174c627935fd72eaa4a0a2025 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/mb/conv.c,v 1.46 2003/07/25 20:17:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/mb/conv.c,v 1.47 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -313,7 +313,7 @@ compare1(const void *p1, const void *p2)
 
    v1 = *(unsigned int *) p1;
    v2 = ((pg_utf_to_local *) p2)->utf;
-   return (v1 > v2)?1:((v1 == v2)?0:-1);
+   return (v1 > v2) ? 1 : ((v1 == v2) ? 0 : -1);
 }
 
 /*
@@ -328,7 +328,7 @@ compare2(const void *p1, const void *p2)
 
    v1 = *(unsigned int *) p1;
    v2 = ((pg_local_to_utf *) p2)->code;
-   return (v1 > v2)?1:((v1 == v2)?0:-1);
+   return (v1 > v2) ? 1 : ((v1 == v2) ? 0 : -1);
 }
 
 /*
@@ -373,8 +373,8 @@ UtfToLocal(unsigned char *utf, unsigned char *iso,
        {
            ereport(WARNING,
                    (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
-                    errmsg("ignoring unconvertible UTF-8 character 0x%04x",
-                           iutf)));
+                 errmsg("ignoring unconvertible UTF-8 character 0x%04x",
+                        iutf)));
            continue;
        }
        if (p->code & 0xff000000)
index 6ec2c1ad02f91944a0c6f28f48c6e4f4f0fce2d5..495c492e2b32765e7a662b68ef74e13cf054871b 100644 (file)
@@ -4,7 +4,7 @@
  * (currently mule internal code (mic) is used)
  * Tatsuo Ishii
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v 1.42 2003/07/25 20:17:55 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v 1.43 2003/08/04 00:43:27 momjian Exp $
  */
 #include "postgres.h"
 
@@ -45,7 +45,7 @@ static int    pending_client_encoding = PG_SQL_ASCII;
 /* Internal functions */
 static unsigned char *perform_default_encoding_conversion(unsigned char *src,
                                    int len, bool is_client_to_server);
-static int cliplen(const unsigned char *str, int len, int limit);
+static int cliplen(const unsigned char *str, int len, int limit);
 
 
 /*
@@ -108,10 +108,10 @@ SetClientEncoding(int encoding, bool doit)
 
    /*
     * If we're not inside a transaction then we can't do catalog lookups,
-    * so fail.  After backend startup, this could only happen if we
-    * are re-reading postgresql.conf due to SIGHUP --- so basically this
-    * just constrains the ability to change client_encoding on the fly
-    * from postgresql.conf.  Which would probably be a stupid thing to do
+    * so fail.  After backend startup, this could only happen if we are
+    * re-reading postgresql.conf due to SIGHUP --- so basically this just
+    * constrains the ability to change client_encoding on the fly from
+    * postgresql.conf.  Which would probably be a stupid thing to do
     * anyway.
     */
    if (!IsTransactionState())
@@ -180,8 +180,8 @@ InitializeClientEncoding(void)
    if (SetClientEncoding(pending_client_encoding, true) < 0)
    {
        /*
-        * Oops, the requested conversion is not available.
-        * We couldn't fail before, but we can now.
+        * Oops, the requested conversion is not available. We couldn't
+        * fail before, but we can now.
         */
        ereport(FATAL,
                (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -249,15 +249,15 @@ pg_do_encoding_conversion(unsigned char *src, int len,
    {
        ereport(LOG,
                (errcode(ERRCODE_UNDEFINED_FUNCTION),
-                errmsg("default conversion proc for %s to %s does not exist",
-                       pg_encoding_to_char(src_encoding),
-                       pg_encoding_to_char(dest_encoding))));
+           errmsg("default conversion proc for %s to %s does not exist",
+                  pg_encoding_to_char(src_encoding),
+                  pg_encoding_to_char(dest_encoding))));
        return src;
    }
 
    /*
-    * XXX we should avoid throwing errors in OidFunctionCall. Otherwise we
-    * are going into infinite loop!  So we have to make sure that the
+    * XXX we should avoid throwing errors in OidFunctionCall. Otherwise
+    * we are going into infinite loop!  So we have to make sure that the
     * function exists before calling OidFunctionCall.
     */
    if (!SearchSysCacheExists(PROCOID,
index 909a2ae86702099602d0973987f4ac1da76476f2..566ff571b56c6c10d8250ab4f439c64b8d4b9d32 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * conversion functions between pg_wchar and multibyte streams.
  * Tatsuo Ishii
- * $Id: wchar.c,v 1.32 2003/07/27 04:53:11 tgl Exp $
+ * $Id: wchar.c,v 1.33 2003/08/04 00:43:27 momjian Exp $
  *
  * WIN1250 client encoding updated by Pavel Behal
  *
@@ -612,7 +612,7 @@ pg_encoding_max_length(int encoding)
  * mbstr is not necessarily NULL terminated; length of mbstr is
  * specified by len.
  *
- * If OK, return TRUE.  If a problem is found, return FALSE when noError is
+ * If OK, return TRUE. If a problem is found, return FALSE when noError is
  * true; when noError is false, ereport() a descriptive message.
  */
 bool
@@ -637,7 +637,7 @@ pg_verifymbstr(const unsigned char *mbstr, int len, bool noError)
                return false;
            ereport(ERROR,
                    (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE),
-                    errmsg("UNICODE characters >= 0x10000 are not supported")));
+            errmsg("UNICODE characters >= 0x10000 are not supported")));
        }
 
        l = pg_mblen(mbstr);
@@ -659,12 +659,10 @@ pg_verifymbstr(const unsigned char *mbstr, int len, bool noError)
                    return false;
 
                jlimit = Min(l, len);
-               jlimit = Min(jlimit, 8); /* prevent buffer overrun */
+               jlimit = Min(jlimit, 8);        /* prevent buffer overrun */
 
                for (j = 0; j < jlimit; j++)
-               {
                    p += sprintf(p, "%02x", mbstr[j]);
-               }
 
                ereport(ERROR,
                        (errcode(ERRCODE_CHARACTER_NOT_IN_REPERTOIRE),
index d26cefa5d0ca09b5795f9925e95d4a5fbbeb68ee..da4a508717a24ff244c50959296730534f6d1de1 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <[email protected]>.
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.146 2003/08/01 01:23:11 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.147 2003/08/04 00:43:27 momjian Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -200,34 +200,34 @@ static char *XactIsoLevel_string;
  *
  * Note: these strings are deliberately not localized.
  */
-const char * const GucContext_Names[] = 
+const char *const GucContext_Names[] =
 {
-   /* PGC_INTERNAL */          "internal",
-   /* PGC_POSTMASTER */        "postmaster",
-   /* PGC_SIGHUP */            "sighup",
-   /* PGC_BACKEND */           "backend",
-   /* PGC_SUSET */             "superuser",
-   /* PGC_USERLIMIT */         "userlimit",
-   /* PGC_USERSET */           "user"
+    /* PGC_INTERNAL */ "internal",
+    /* PGC_POSTMASTER */ "postmaster",
+    /* PGC_SIGHUP */ "sighup",
+    /* PGC_BACKEND */ "backend",
+    /* PGC_SUSET */ "superuser",
+    /* PGC_USERLIMIT */ "userlimit",
+    /* PGC_USERSET */ "user"
 };
 
 /*
  * Displayable names for source types (enum GucSource)
  *
  * Note: these strings are deliberately not localized.
- */    
-const char * const GucSource_Names[] = 
+ */
+const char *const GucSource_Names[] =
 {
-   /* PGC_S_DEFAULT */         "default",
-   /* PGC_S_ENV_VAR */         "environment variable",
-   /* PGC_S_FILE */            "configuration file",
-   /* PGC_S_ARGV */            "command line",
-   /* PGC_S_UNPRIVILEGED */    "unprivileged",
-   /* PGC_S_DATABASE */        "database",
-   /* PGC_S_USER */            "user",
-   /* PGC_S_CLIENT */          "client",
-   /* PGC_S_OVERRIDE */        "override",
-   /* PGC_S_SESSION */         "session"
+    /* PGC_S_DEFAULT */ "default",
+    /* PGC_S_ENV_VAR */ "environment variable",
+    /* PGC_S_FILE */ "configuration file",
+    /* PGC_S_ARGV */ "command line",
+    /* PGC_S_UNPRIVILEGED */ "unprivileged",
+    /* PGC_S_DATABASE */ "database",
+    /* PGC_S_USER */ "user",
+    /* PGC_S_CLIENT */ "client",
+    /* PGC_S_OVERRIDE */ "override",
+    /* PGC_S_SESSION */ "session"
 };
 
 /*
@@ -308,12 +308,12 @@ const char *const config_group_names[] =
  *
  * Note: these strings are deliberately not localized.
  */
-const char * const config_type_names[] = 
+const char *const config_type_names[] =
 {
-   /* PGC_BOOL */      "bool",
-   /* PGC_INT */       "integer",
-   /* PGC_REAL */      "real",
-   /* PGC_STRING */    "string"
+    /* PGC_BOOL */ "bool",
+    /* PGC_INT */ "integer",
+    /* PGC_REAL */ "real",
+    /* PGC_STRING */ "string"
 };
 
 
@@ -1351,7 +1351,7 @@ static struct config_string ConfigureNamesString[] =
        {"default_transaction_isolation", PGC_USERSET, CLIENT_CONN_STATEMENT,
            gettext_noop("The default isolation level of each new transaction"),
            gettext_noop("Each SQL transaction has an isolation level, which "
-                    "can be either \"read committed\" or \"serializable\".")
+                "can be either \"read committed\" or \"serializable\".")
        },
        &default_iso_level_string,
        "read committed", assign_defaultxactisolevel, NULL
@@ -1800,7 +1800,11 @@ InitializeGUCOptions(void)
 
                    Assert(conf->reset_val >= conf->min);
                    Assert(conf->reset_val <= conf->max);
-                   /* Check to make sure we only have valid PGC_USERLIMITs */
+
+                   /*
+                    * Check to make sure we only have valid
+                    * PGC_USERLIMITs
+                    */
                    Assert(conf->gen.context != PGC_USERLIMIT ||
                           strcmp(conf->gen.name, "log_min_duration_statement") == 0);
                    if (conf->assign_hook)
@@ -1831,11 +1835,14 @@ InitializeGUCOptions(void)
                    struct config_string *conf = (struct config_string *) gconf;
                    char       *str;
 
-                   /* Check to make sure we only have valid PGC_USERLIMITs */
+                   /*
+                    * Check to make sure we only have valid
+                    * PGC_USERLIMITs
+                    */
                    Assert(conf->gen.context != PGC_USERLIMIT ||
                           conf->assign_hook == assign_log_min_messages ||
-                          conf->assign_hook == assign_client_min_messages ||
-                          conf->assign_hook == assign_min_error_statement);
+                      conf->assign_hook == assign_client_min_messages ||
+                       conf->assign_hook == assign_min_error_statement);
                    *conf->variable = NULL;
                    conf->reset_val = NULL;
                    conf->session_val = NULL;
@@ -2434,8 +2441,8 @@ set_config_option(const char *name, const char *value,
            {
                ereport(elevel,
                        (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-                        errmsg("\"%s\" cannot be changed after server start",
-                               name)));
+                   errmsg("\"%s\" cannot be changed after server start",
+                          name)));
                return false;
            }
            break;
@@ -2474,8 +2481,8 @@ set_config_option(const char *name, const char *value,
            {
                ereport(elevel,
                        (errcode(ERRCODE_CANT_CHANGE_RUNTIME_PARAM),
-                        errmsg("\"%s\" cannot be set after connection start",
-                               name)));
+                   errmsg("\"%s\" cannot be set after connection start",
+                          name)));
                return false;
            }
            break;
@@ -2514,7 +2521,7 @@ set_config_option(const char *name, const char *value,
     * to set the reset/session values even if we can't set the variable
     * itself.
     */
-   DoIt_orig = DoIt;   /* we might have to reverse this later */
+   DoIt_orig = DoIt;           /* we might have to reverse this later */
    if (record->source > source)
    {
        if (DoIt && !makeDefault)
@@ -2554,8 +2561,8 @@ set_config_option(const char *name, const char *value,
                    {
                        ereport(elevel,
                                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                errmsg("permission denied to set option \"%s\"",
-                                       name),
+                        errmsg("permission denied to set option \"%s\"",
+                               name),
                                 errhint("Must be superuser to change this value to false.")));
                        return false;
                    }
@@ -2565,7 +2572,7 @@ set_config_option(const char *name, const char *value,
                        record->session_source > PGC_S_UNPRIVILEGED &&
                        newval > conf->session_val &&
                        !superuser())
-                           DoIt = DoIt_orig;
+                       DoIt = DoIt_orig;
                }
                else
                {
@@ -2630,8 +2637,8 @@ set_config_option(const char *name, const char *value,
                    {
                        ereport(elevel,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("\"%s\" requires an integer value",
-                                       name)));
+                              errmsg("\"%s\" requires an integer value",
+                                     name)));
                        return false;
                    }
                    if (newval < conf->min || newval > conf->max)
@@ -2639,7 +2646,7 @@ set_config_option(const char *name, const char *value,
                        ereport(elevel,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                                 errmsg("%d is outside the valid range for \"%s\" (%d .. %d)",
-                                       newval, name, conf->min, conf->max)));
+                                  newval, name, conf->min, conf->max)));
                        return false;
                    }
                    /* Limit non-superuser changes */
@@ -2651,8 +2658,8 @@ set_config_option(const char *name, const char *value,
                    {
                        ereport(elevel,
                                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                errmsg("permission denied to set option \"%s\"",
-                                       name),
+                        errmsg("permission denied to set option \"%s\"",
+                               name),
                                 errhint("Must be superuser to increase this value or set it to zero.")));
                        return false;
                    }
@@ -2662,7 +2669,7 @@ set_config_option(const char *name, const char *value,
                        record->session_source > PGC_S_UNPRIVILEGED &&
                        newval < conf->session_val &&
                        !superuser())
-                           DoIt = DoIt_orig;
+                       DoIt = DoIt_orig;
                }
                else
                {
@@ -2736,7 +2743,7 @@ set_config_option(const char *name, const char *value,
                        ereport(elevel,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                                 errmsg("%g is outside the valid range for \"%s\" (%g .. %g)",
-                                       newval, name, conf->min, conf->max)));
+                                  newval, name, conf->min, conf->max)));
                        return false;
                    }
                    /* Limit non-superuser changes */
@@ -2747,8 +2754,8 @@ set_config_option(const char *name, const char *value,
                    {
                        ereport(elevel,
                                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                errmsg("permission denied to set option \"%s\"",
-                                       name),
+                        errmsg("permission denied to set option \"%s\"",
+                               name),
                                 errhint("Must be superuser to increase this value.")));
                        return false;
                    }
@@ -2758,7 +2765,7 @@ set_config_option(const char *name, const char *value,
                        record->session_source > PGC_S_UNPRIVILEGED &&
                        newval < conf->session_val &&
                        !superuser())
-                           DoIt = DoIt_orig;
+                       DoIt = DoIt_orig;
                }
                else
                {
@@ -2831,7 +2838,8 @@ set_config_option(const char *name, const char *value,
                    if (record->context == PGC_USERLIMIT &&
                        *conf->variable)
                    {
-                       int old_int_value, new_int_value;
+                       int         old_int_value,
+                                   new_int_value;
 
                        /* all USERLIMIT strings are message levels */
                        assign_msglvl(&old_int_value, conf->reset_val,
@@ -2844,10 +2852,10 @@ set_config_option(const char *name, const char *value,
                            !superuser())
                        {
                            ereport(elevel,
-                                   (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
-                                    errmsg("permission denied to set option \"%s\"",
-                                           name),
-                                    errhint("Must be superuser to increase this value.")));
+                               (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
+                                errmsg("permission denied to set option \"%s\"",
+                                       name),
+                                errhint("Must be superuser to increase this value.")));
                            return false;
                        }
                        /* Allow admin to override non-superuser setting */
@@ -2855,7 +2863,7 @@ set_config_option(const char *name, const char *value,
                            record->session_source > PGC_S_UNPRIVILEGED &&
                            newval < conf->session_val &&
                            !superuser())
-                               DoIt = DoIt_orig;
+                           DoIt = DoIt_orig;
                    }
                }
                else if (conf->reset_val)
@@ -2901,8 +2909,8 @@ set_config_option(const char *name, const char *value,
                        free(newval);
                        ereport(elevel,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("invalid value for \"%s\": \"%s\"",
-                                       name, value ? value : "")));
+                              errmsg("invalid value for \"%s\": \"%s\"",
+                                     name, value ? value : "")));
                        return false;
                    }
                    else if (hookresult != newval)
@@ -3408,8 +3416,8 @@ GetConfigOptionByName(const char *name, const char **varname)
 void
 GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
 {
-   char                    buffer[256];
-   struct config_generic  *conf;
+   char        buffer[256];
+   struct config_generic *conf;
 
    /* check requested variable number valid */
    Assert((varnum >= 0) && (varnum < num_guc_variables));
@@ -3490,7 +3498,8 @@ GetConfigOptionByNum(int varnum, const char **values, bool *noshow)
        default:
            {
                /*
-                * should never get here, but in case we do, set 'em to NULL
+                * should never get here, but in case we do, set 'em to
+                * NULL
                 */
 
                /* min_val */
@@ -3566,8 +3575,8 @@ show_all_settings(PG_FUNCTION_ARGS)
        oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
 
        /*
-        * need a tuple descriptor representing NUM_PG_SETTINGS_ATTS columns
-        * of the appropriate types
+        * need a tuple descriptor representing NUM_PG_SETTINGS_ATTS
+        * columns of the appropriate types
         */
        tupdesc = CreateTemplateTupleDesc(NUM_PG_SETTINGS_ATTS, false);
        TupleDescInitEntry(tupdesc, (AttrNumber) 1, "name",
@@ -4371,7 +4380,7 @@ assign_phony_autocommit(bool newval, bool doit, bool interactive)
        if (doit && interactive)
            ereport(ERROR,
                    (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                    errmsg("SET AUTOCOMMIT TO OFF is no longer supported")));
+               errmsg("SET AUTOCOMMIT TO OFF is no longer supported")));
        return false;
    }
    return true;
index d5d9736e59359e4203df82723a55ec175e0df38c..ed117bef18d1132609066d230be3a84a1c5a2e3b 100644 (file)
@@ -25,7 +25,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/misc/help_config.c,v 1.3 2003/07/28 19:31:32 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/misc/help_config.c,v 1.4 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -58,35 +58,35 @@ enum outputFormat
    MACHINE_OUTPUT
 };
 
-static const char * const GENERIC_FORMAT[] = {
+static const char *const GENERIC_FORMAT[] = {
    gettext_noop("Name       : %-20s \nContext    : %-20s \nGroup      : %-20s\n"),
    gettext_noop("%s\t%s\t%s\t")
 };
-static const char * const GENERIC_DESC[] = {
+static const char *const GENERIC_DESC[] = {
    gettext_noop("Description: %s\n%s\n"),
    gettext_noop("%s    %s\n")
 };
-static const char * const BOOL_FORMAT[] = {
+static const char *const BOOL_FORMAT[] = {
    gettext_noop("Type       : BOOL\nReset Value: %-s \n"),
    gettext_noop("BOOL\t%s\t\t\t")
 };
-static const char * const INT_FORMAT[] = {
+static const char *const INT_FORMAT[] = {
    gettext_noop("Type       : INT\nReset Value: %-20d \nMin Value  : %-20d \nMax Value  : %-20d \n"),
    gettext_noop("INT\t%d\t%d\t%d\t")
 };
-static const char * const REAL_FORMAT[] = {
+static const char *const REAL_FORMAT[] = {
    gettext_noop("Type       : REAL\nReset Value: %-20g \nMin Value  : %-20g \nMax Value  : %-20g \n"),
    gettext_noop("REAL\t%g\t%g\t%g\t")
 };
-static const char * const STRING_FORMAT[] = {
+static const char *const STRING_FORMAT[] = {
    gettext_noop("Type       : STRING\nReset Value: %-s \n"),
    gettext_noop("STRING\t%s\t\t\t")
 };
-static const char * const COLUMN_HEADER[] = {
+static const char *const COLUMN_HEADER[] = {
    "",
    gettext_noop("NAME\tCONTEXT\tGROUP\tTYPE\tRESET_VALUE\tMIN\tMAX\tSHORT_DESCRIPTION\tLONG_DESCRIPTION\n")
 };
-static const char * const ROW_SEPARATOR[] = {
+static const char *const ROW_SEPARATOR[] = {
    "------------------------------------------------------------\n",
    ""
 };
@@ -101,8 +101,8 @@ static char *groupString = NULL;    /* The var group pattern to match */
 static bool groupRegexBool = false;        /* Match the group pattern as a
                                         * regex */
 static enum outputFormat outFormat = HUMAN_OUTPUT;
-static bool suppressAllHeaders = false; /* MACHINE_OUTPUT output, no column
-                                        * headers */
+static bool suppressAllHeaders = false; /* MACHINE_OUTPUT output, no
+                                        * column headers */
 static bool groupResults = true;   /* sort result list by groups */
 
 
@@ -444,5 +444,5 @@ helpMessage(void)
            "  -m       Machine friendly format: tab separated fields\n"
                   "  -M        Same as m, except header with column names is suppressed\n"),
           usageErrMsg()
-   );
+       );
 }
index aea4ee09a7e069f3b42f5d13dce014e75738ff7f..2889952657738170a3e2180094737f719210623e 100644 (file)
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.50 2003/07/25 20:17:56 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/mmgr/aset.c,v 1.51 2003/08/04 00:43:27 momjian Exp $
  *
  * NOTE:
  * This is a new (Feb. 05, 1999) implementation of the allocation set
@@ -333,8 +333,8 @@ AllocSetContextCreate(MemoryContext parent,
            ereport(ERROR,
                    (errcode(ERRCODE_OUT_OF_MEMORY),
                     errmsg("out of memory"),
-                    errdetail("Failed while creating memory context \"%s\".",
-                              name)));
+               errdetail("Failed while creating memory context \"%s\".",
+                         name)));
        }
        block->aset = context;
        block->freeptr = ((char *) block) + ALLOC_BLOCKHDRSZ;
@@ -376,7 +376,7 @@ AllocSetInit(MemoryContext context)
  * Actually, this routine has some discretion about what to do.
  * It should mark all allocated chunks freed, but it need not necessarily
  * give back all the resources the set owns.  Our actual implementation is
- * that we hang onto any "keeper" block specified for the set.  In this way,
+ * that we hang onto any "keeper" block specified for the set. In this way,
  * we don't thrash malloc() when a context is repeatedly reset after small
  * allocations, which is typical behavior for per-tuple contexts.
  */
@@ -708,13 +708,13 @@ AllocSetAlloc(MemoryContext context, Size size)
        block->endptr = ((char *) block) + blksize;
 
        /*
-        * If this is the first block of the set, make it the "keeper" block.
-        * Formerly, a keeper block could only be created during context
-        * creation, but allowing it to happen here lets us have fast reset
-        * cycling even for contexts created with minContextSize = 0; that
-        * way we don't have to force space to be allocated in contexts that
-        * might never need any space.  Don't mark an oversize block as
-        * a keeper, however.
+        * If this is the first block of the set, make it the "keeper"
+        * block. Formerly, a keeper block could only be created during
+        * context creation, but allowing it to happen here lets us have
+        * fast reset cycling even for contexts created with
+        * minContextSize = 0; that way we don't have to force space to be
+        * allocated in contexts that might never need any space.  Don't
+        * mark an oversize block as a keeper, however.
         */
        if (set->blocks == NULL && blksize == set->initBlockSize)
        {
index 6055fe5278e3440cfa3d4127d95153b6910109cc..859f11d23c0a4a14fbd29c94ba7f3a9b736a4370 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.41 2003/07/25 20:17:56 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.42 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -45,6 +45,7 @@ MemoryContext PostmasterContext = NULL;
 MemoryContext CacheMemoryContext = NULL;
 MemoryContext MessageContext = NULL;
 MemoryContext TopTransactionContext = NULL;
+
 /* These two are transient links to contexts owned by other objects: */
 MemoryContext QueryContext = NULL;
 MemoryContext PortalContext = NULL;
@@ -494,7 +495,7 @@ MemoryContextAlloc(MemoryContext context, Size size)
 void *
 MemoryContextAllocZero(MemoryContext context, Size size)
 {
-   void *ret;
+   void       *ret;
 
    AssertArg(MemoryContextIsValid(context));
 
@@ -519,7 +520,7 @@ MemoryContextAllocZero(MemoryContext context, Size size)
 void *
 MemoryContextAllocZeroAligned(MemoryContext context, Size size)
 {
-   void *ret;
+   void       *ret;
 
    AssertArg(MemoryContextIsValid(context));
 
index 918d03fb908e3396fd81eeceb0c44c873309d350..81bf887710f3f7720ef0998545abc9c668f3f539 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.59 2003/07/25 20:17:56 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/mmgr/portalmem.c,v 1.60 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -228,7 +228,7 @@ CreateNewPortal(void)
  *     A simple subroutine to establish a portal's query.
  *
  * Notes: commandTag shall be NULL if and only if the original query string
- * (before rewriting) was an empty string.  Also, the passed commandTag must
+ * (before rewriting) was an empty string. Also, the passed commandTag must
  * be a pointer to a constant string, since it is not copied.  The caller is
  * responsible for ensuring that the passed sourceText (if any), parse and
  * plan trees have adequate lifetime.  Also, queryContext must accurately
@@ -243,7 +243,7 @@ PortalDefineQuery(Portal portal,
                  MemoryContext queryContext)
 {
    AssertArg(PortalIsValid(portal));
-   AssertState(portal->queryContext == NULL); /* else defined already */
+   AssertState(portal->queryContext == NULL);  /* else defined already */
 
    Assert(length(parseTrees) == length(planTrees));
 
@@ -269,8 +269,8 @@ PortalCreateHoldStore(Portal portal)
    Assert(portal->holdStore == NULL);
 
    /*
-    * Create the memory context that is used for storage of the tuple set.
-    * Note this is NOT a child of the portal's heap memory.
+    * Create the memory context that is used for storage of the tuple
+    * set. Note this is NOT a child of the portal's heap memory.
     */
    portal->holdContext =
        AllocSetContextCreate(PortalMemory,
@@ -306,9 +306,9 @@ PortalDrop(Portal portal, bool isError)
 
    /*
     * Remove portal from hash table.  Because we do this first, we will
-    * not come back to try to remove the portal again if there's any error
-    * in the subsequent steps.  Better to leak a little memory than to get
-    * into an infinite error-recovery loop.
+    * not come back to try to remove the portal again if there's any
+    * error in the subsequent steps.  Better to leak a little memory than
+    * to get into an infinite error-recovery loop.
     */
    PortalHashTableDelete(portal);
 
@@ -358,7 +358,7 @@ DropDependentPortals(MemoryContext queryContext)
 
    while ((hentry = (PortalHashEnt *) hash_seq_search(&status)) != NULL)
    {
-       Portal portal = hentry->portal;
+       Portal      portal = hentry->portal;
 
        if (portal->queryContext == queryContext)
            PortalDrop(portal, false);
@@ -391,11 +391,11 @@ AtCommit_Portals(void)
 
    while ((hentry = (PortalHashEnt *) hash_seq_search(&status)) != NULL)
    {
-       Portal portal = hentry->portal;
+       Portal      portal = hentry->portal;
 
        /*
-        * Do not touch active portals --- this can only happen in the case of
-        * a multi-transaction utility command, such as VACUUM.
+        * Do not touch active portals --- this can only happen in the
+        * case of a multi-transaction utility command, such as VACUUM.
         */
        if (portal->portalActive)
            continue;
@@ -403,18 +403,19 @@ AtCommit_Portals(void)
        if (portal->cursorOptions & CURSOR_OPT_HOLD)
        {
            /*
-            * Do nothing to cursors held over from a previous transaction.
+            * Do nothing to cursors held over from a previous
+            * transaction.
             */
            if (portal->createXact != xact)
                continue;
 
            /*
             * We are exiting the transaction that created a holdable
-            * cursor.  Instead of dropping the portal, prepare it for
+            * cursor.  Instead of dropping the portal, prepare it for
             * access by later transactions.
             *
-            * Note that PersistHoldablePortal() must release all
-            * resources used by the portal that are local to the creating
+            * Note that PersistHoldablePortal() must release all resources
+            * used by the portal that are local to the creating
             * transaction.
             */
            PortalCreateHoldStore(portal);
@@ -450,15 +451,15 @@ AtAbort_Portals(void)
 
    while ((hentry = (PortalHashEnt *) hash_seq_search(&status)) != NULL)
    {
-       Portal portal = hentry->portal;
+       Portal      portal = hentry->portal;
 
        portal->portalActive = false;
 
        /*
-        * Do nothing else to cursors held over from a previous transaction.
-        * (This test must include checking CURSOR_OPT_HOLD, else we will
-        * fail to clean up a VACUUM portal if it fails after its first
-        * sub-transaction.)
+        * Do nothing else to cursors held over from a previous
+        * transaction. (This test must include checking CURSOR_OPT_HOLD,
+        * else we will fail to clean up a VACUUM portal if it fails after
+        * its first sub-transaction.)
         */
        if (portal->createXact != xact &&
            (portal->cursorOptions & CURSOR_OPT_HOLD))
@@ -489,7 +490,7 @@ AtCleanup_Portals(void)
 
    while ((hentry = (PortalHashEnt *) hash_seq_search(&status)) != NULL)
    {
-       Portal portal = hentry->portal;
+       Portal      portal = hentry->portal;
 
        /*
         * Let's just make sure no one's active...
@@ -497,10 +498,10 @@ AtCleanup_Portals(void)
        portal->portalActive = false;
 
        /*
-        * Do nothing else to cursors held over from a previous transaction.
-        * (This test must include checking CURSOR_OPT_HOLD, else we will
-        * fail to clean up a VACUUM portal if it fails after its first
-        * sub-transaction.)
+        * Do nothing else to cursors held over from a previous
+        * transaction. (This test must include checking CURSOR_OPT_HOLD,
+        * else we will fail to clean up a VACUUM portal if it fails after
+        * its first sub-transaction.)
         */
        if (portal->createXact != xact &&
            (portal->cursorOptions & CURSOR_OPT_HOLD))
index 185c78d2e2a01160dcfd131bd1d2873bdb1966fa..783ceb3a635ed30db973617fc7ff59f28d0e63b9 100644 (file)
@@ -64,7 +64,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/sort/logtape.c,v 1.10 2003/07/25 20:17:58 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/sort/logtape.c,v 1.11 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -197,7 +197,7 @@ ltsWriteBlock(LogicalTapeSet *lts, long blocknum, void *buffer)
    if (BufFileSeekBlock(lts->pfile, blocknum) != 0 ||
        BufFileWrite(lts->pfile, buffer, BLCKSZ) != BLCKSZ)
        ereport(ERROR,
-               /* XXX is it okay to assume errno is correct? */
+       /* XXX is it okay to assume errno is correct? */
                (errcode_for_file_access(),
                 errmsg("could not write block %ld of temporary file: %m",
                        blocknum),
@@ -216,7 +216,7 @@ ltsReadBlock(LogicalTapeSet *lts, long blocknum, void *buffer)
    if (BufFileSeekBlock(lts->pfile, blocknum) != 0 ||
        BufFileRead(lts->pfile, buffer, BLCKSZ) != BLCKSZ)
        ereport(ERROR,
-               /* XXX is it okay to assume errno is correct? */
+       /* XXX is it okay to assume errno is correct? */
                (errcode_for_file_access(),
                 errmsg("could not read block %ld of temporary file: %m",
                        blocknum)));
index eb91a8e71b87324c65b03c4db499ad2d00e377bf..75c90c9a54ebae5c31c5db651520f2995ad8a5b6 100644 (file)
@@ -78,7 +78,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/sort/tuplesort.c,v 1.34 2003/07/25 20:17:59 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/sort/tuplesort.c,v 1.35 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1715,12 +1715,12 @@ SelectSortFunction(Oid sortOperator,
    Oid         opclass = InvalidOid;
 
    /*
-    * Search pg_amop to see if the target operator is registered as the "<"
-    * or ">" operator of any btree opclass.  It's possible that it might
-    * be registered both ways (eg, if someone were to build a "reverse
-    * sort" opclass for some reason); prefer the "<" case if so. If the
-    * operator is registered the same way in multiple opclasses, assume
-    * we can use the associated comparator function from any one.
+    * Search pg_amop to see if the target operator is registered as the
+    * "<" or ">" operator of any btree opclass.  It's possible that it
+    * might be registered both ways (eg, if someone were to build a
+    * "reverse sort" opclass for some reason); prefer the "<" case if so.
+    * If the operator is registered the same way in multiple opclasses,
+    * assume we can use the associated comparator function from any one.
     */
    catlist = SearchSysCacheList(AMOPOPID, 1,
                                 ObjectIdGetDatum(sortOperator),
index 8818c2203fbb98b860c1074c1d7f27b9d0dc5a98..e6e01b83ed28b2e3e1039272305173c7e43d94bf 100644 (file)
@@ -8,7 +8,7 @@
  * a dumbed-down version of tuplesort.c; it does no sorting of tuples
  * but can only store and regurgitate a sequence of tuples.  However,
  * because no sort is required, it is allowed to start reading the sequence
- * before it has all been written.  This is particularly useful for cursors,
+ * before it has all been written. This is particularly useful for cursors,
  * because it allows random access within the already-scanned portion of
  * a query without having to process the underlying scan to completion.
  * A temporary file is used to handle the data if it exceeds the
@@ -27,7 +27,7 @@
  *
  * Because we allow reading before writing is complete, there are two
  * interesting positions in the temp file: the current read position and
- * the current write position.  At any given instant, the temp file's seek
+ * the current write position. At any given instant, the temp file's seek
  * position corresponds to one of these, and the other one is remembered in
  * the Tuplestore's state.
  *
@@ -36,7 +36,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/sort/tuplestore.c,v 1.14 2003/07/25 20:18:00 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/sort/tuplestore.c,v 1.15 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -114,11 +114,11 @@ struct Tuplestorestate
     * These variables are used to keep track of the current position.
     *
     * In state WRITEFILE, the current file seek position is the write point,
-    * and the read position is remembered in readpos_xxx; in state READFILE,
-    * the current file seek position is the read point, and the write position
-    * is remembered in writepos_xxx.  (The write position is the same as EOF,
-    * but since BufFileSeek doesn't currently implement SEEK_END, we have
-    * to remember it explicitly.)
+    * and the read position is remembered in readpos_xxx; in state
+    * READFILE, the current file seek position is the read point, and the
+    * write position is remembered in writepos_xxx.  (The write position
+    * is the same as EOF, but since BufFileSeek doesn't currently
+    * implement SEEK_END, we have to remember it explicitly.)
     *
     * Special case: if we are in WRITEFILE state and eof_reached is true,
     * then the read position is implicitly equal to the write position
@@ -130,10 +130,10 @@ struct Tuplestorestate
    int         readpos_file;   /* file# (valid if WRITEFILE and not eof) */
    long        readpos_offset; /* offset (valid if WRITEFILE and not eof) */
    int         writepos_file;  /* file# (valid if READFILE) */
-   long        writepos_offset; /* offset (valid if READFILE) */
+   long        writepos_offset;    /* offset (valid if READFILE) */
 
    /* markpos_xxx holds marked position for mark and restore */
-   int         markpos_current; /* saved "current" */
+   int         markpos_current;    /* saved "current" */
    int         markpos_file;   /* saved "readpos_file" */
    long        markpos_offset; /* saved "readpos_offset" */
 };
@@ -191,8 +191,8 @@ struct Tuplestorestate
 
 
 static Tuplestorestate *tuplestore_begin_common(bool randomAccess,
-                                               bool interXact,
-                                               int maxKBytes);
+                       bool interXact,
+                       int maxKBytes);
 static void dumptuples(Tuplestorestate *state);
 static unsigned int getlen(Tuplestorestate *state, bool eofOK);
 static void *copytup_heap(Tuplestorestate *state, void *tup);
@@ -244,7 +244,7 @@ tuplestore_begin_common(bool randomAccess, bool interXact, int maxKBytes)
  * tuple store are allowed.
  *
  * interXact: if true, the files used for on-disk storage persist beyond the
- * end of the current transaction.  NOTE: It's the caller's responsibility to
+ * end of the current transaction. NOTE: It's the caller's responsibility to
  * create such a tuplestore in a memory context that will also survive
  * transaction boundaries, and to ensure the tuplestore is closed when it's
  * no longer wanted.
@@ -352,6 +352,7 @@ tuplestore_puttuple(Tuplestorestate *state, void *tuple)
            WRITETUP(state, tuple);
            break;
        case TSS_READFILE:
+
            /*
             * Switch from reading to writing.
             */
@@ -421,6 +422,7 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward,
            /* Skip state change if we'll just return NULL */
            if (state->eof_reached && forward)
                return NULL;
+
            /*
             * Switch from writing to reading.
             */
@@ -428,7 +430,7 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward,
                        &state->writepos_file, &state->writepos_offset);
            if (!state->eof_reached)
                if (BufFileSeek(state->myfile,
-                               state->readpos_file, state->readpos_offset,
+                             state->readpos_file, state->readpos_offset,
                                SEEK_SET) != 0)
                    elog(ERROR, "seek failed");
            state->status = TSS_READFILE;
@@ -456,9 +458,8 @@ tuplestore_gettuple(Tuplestorestate *state, bool forward,
             * if all tuples are fetched already then we return last tuple,
             * else - tuple before last returned.
             *
-            * Back up to fetch previously-returned tuple's ending
-            * length word.  If seek fails, assume we are at start of
-            * file.
+            * Back up to fetch previously-returned tuple's ending length
+            * word.  If seek fails, assume we are at start of file.
             */
            if (BufFileSeek(state->myfile, 0, -(long) sizeof(unsigned int),
                            SEEK_CUR) != 0)
@@ -524,7 +525,7 @@ dumptuples(Tuplestorestate *state)
 {
    int         i;
 
-   for (i = 0; ; i++)
+   for (i = 0;; i++)
    {
        if (i == state->current)
            BufFileTell(state->myfile,
index aec543d0ac647172506aeb4d8db1e3cea9b55a96..141381b30ef380b49f3356a036263af2f6b64f34 100644 (file)
@@ -16,7 +16,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.65 2003/07/25 20:18:00 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/time/tqual.c,v 1.66 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -77,6 +77,7 @@ HeapTupleSatisfiesItself(HeapTupleHeader tuple)
        if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return false;
            if (!TransactionIdIsInProgress(xvac))
@@ -92,6 +93,7 @@ HeapTupleSatisfiesItself(HeapTupleHeader tuple)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (!TransactionIdIsCurrentTransactionId(xvac))
            {
                if (TransactionIdIsInProgress(xvac))
@@ -218,6 +220,7 @@ HeapTupleSatisfiesNow(HeapTupleHeader tuple)
        if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return false;
            if (!TransactionIdIsInProgress(xvac))
@@ -233,6 +236,7 @@ HeapTupleSatisfiesNow(HeapTupleHeader tuple)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (!TransactionIdIsCurrentTransactionId(xvac))
            {
                if (TransactionIdIsInProgress(xvac))
@@ -340,6 +344,7 @@ HeapTupleSatisfiesToast(HeapTupleHeader tuple)
        if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return false;
            if (!TransactionIdIsInProgress(xvac))
@@ -355,6 +360,7 @@ HeapTupleSatisfiesToast(HeapTupleHeader tuple)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (!TransactionIdIsCurrentTransactionId(xvac))
            {
                if (TransactionIdIsInProgress(xvac))
@@ -395,6 +401,7 @@ HeapTupleSatisfiesUpdate(HeapTuple htuple, CommandId curcid)
        if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return HeapTupleInvisible;
            if (!TransactionIdIsInProgress(xvac))
@@ -410,6 +417,7 @@ HeapTupleSatisfiesUpdate(HeapTuple htuple, CommandId curcid)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (!TransactionIdIsCurrentTransactionId(xvac))
            {
                if (TransactionIdIsInProgress(xvac))
@@ -531,6 +539,7 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple)
        if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return false;
            if (!TransactionIdIsInProgress(xvac))
@@ -546,6 +555,7 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (!TransactionIdIsCurrentTransactionId(xvac))
            {
                if (TransactionIdIsInProgress(xvac))
@@ -667,6 +677,7 @@ HeapTupleSatisfiesSnapshot(HeapTupleHeader tuple, Snapshot snapshot)
        if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return false;
            if (!TransactionIdIsInProgress(xvac))
@@ -682,6 +693,7 @@ HeapTupleSatisfiesSnapshot(HeapTupleHeader tuple, Snapshot snapshot)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (!TransactionIdIsCurrentTransactionId(xvac))
            {
                if (TransactionIdIsInProgress(xvac))
@@ -827,6 +839,7 @@ HeapTupleSatisfiesVacuum(HeapTupleHeader tuple, TransactionId OldestXmin)
        else if (tuple->t_infomask & HEAP_MOVED_OFF)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return HEAPTUPLE_DELETE_IN_PROGRESS;
            if (TransactionIdIsInProgress(xvac))
@@ -841,6 +854,7 @@ HeapTupleSatisfiesVacuum(HeapTupleHeader tuple, TransactionId OldestXmin)
        else if (tuple->t_infomask & HEAP_MOVED_IN)
        {
            TransactionId xvac = HeapTupleHeaderGetXvac(tuple);
+
            if (TransactionIdIsCurrentTransactionId(xvac))
                return HEAPTUPLE_INSERT_IN_PROGRESS;
            if (TransactionIdIsInProgress(xvac))
@@ -860,7 +874,8 @@ HeapTupleSatisfiesVacuum(HeapTupleHeader tuple, TransactionId OldestXmin)
        else
        {
            /*
-            * Not in Progress, Not Committed, so either Aborted or crashed
+            * Not in Progress, Not Committed, so either Aborted or
+            * crashed
             */
            tuple->t_infomask |= HEAP_XMIN_INVALID;
            return HEAPTUPLE_DEAD;
@@ -888,10 +903,11 @@ HeapTupleSatisfiesVacuum(HeapTupleHeader tuple, TransactionId OldestXmin)
        {
            if (TransactionIdIsInProgress(HeapTupleHeaderGetXmax(tuple)))
                return HEAPTUPLE_LIVE;
+
            /*
-            * We don't really care whether xmax did commit, abort or crash.
-            * We know that xmax did mark the tuple for update, but it did not
-            * and will never actually update it.
+            * We don't really care whether xmax did commit, abort or
+            * crash. We know that xmax did mark the tuple for update, but
+            * it did not and will never actually update it.
             */
            tuple->t_infomask |= HEAP_XMAX_INVALID;
        }
@@ -907,7 +923,8 @@ HeapTupleSatisfiesVacuum(HeapTupleHeader tuple, TransactionId OldestXmin)
        else
        {
            /*
-            * Not in Progress, Not Committed, so either Aborted or crashed
+            * Not in Progress, Not Committed, so either Aborted or
+            * crashed
             */
            tuple->t_infomask |= HEAP_XMAX_INVALID;
            return HEAPTUPLE_LIVE;
@@ -1014,9 +1031,8 @@ void
 FreeXactSnapshot(void)
 {
    /*
-    * We do not free(QuerySnapshot->xip);
-    *        or free(SerializableSnapshot->xip);
-    * they will be reused soon
+    * We do not free(QuerySnapshot->xip); or
+    * free(SerializableSnapshot->xip); they will be reused soon
     */
    QuerySnapshot = NULL;
    SerializableSnapshot = NULL;
index 10a6ed93cc1b0329eb26ebd0af071114e4da2a2a..c976e5af31f6de491bb04c69ad741b75011d277d 100644 (file)
@@ -6,7 +6,7 @@
  * copyright (c) Oliver Elphick <[email protected]>, 2001;
  * licence: BSD
  *
- * $Header: /cvsroot/pgsql/src/bin/pg_controldata/pg_controldata.c,v 1.10 2003/07/23 08:47:25 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_controldata/pg_controldata.c,v 1.11 2003/08/04 00:43:27 momjian Exp $
  */
 #include "postgres.h"
 
@@ -27,17 +27,17 @@ usage(const char *progname)
 {
    printf(_("%s displays control information of a PostgreSQL database cluster.\n\n"), progname);
    printf
-   (
-       _(
-           "Usage:\n"
-           "  %s [OPTION]\n\n"
-           "Options:\n"
-           "  DATADIR        show cluster control information for DATADIR\n"
-           "  --help         show this help, then exit\n"
-           "  --version      output version information, then exit\n"
-       ),
-       progname
-   );
+       (
+        _(
+          "Usage:\n"
+          "  %s [OPTION]\n\n"
+          "Options:\n"
+       "  DATADIR        show cluster control information for DATADIR\n"
+          "  --help         show this help, then exit\n"
+          "  --version      output version information, then exit\n"
+          ),
+        progname
+       );
    printf(_("\nIf no data directory is specified, the environment variable PGDATA\nis used.\n\n"));
    printf(_("Report bugs to <[email protected]>.\n"));
 }
index e404924f44e46b7bf7196dcb72d5a16211597306..2c2537b9d8fb6b0bf07afc06fabd05ccc8253a18 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.73 2003/07/23 08:47:30 petere Exp $
+ *   $Header: /cvsroot/pgsql/src/bin/pg_dump/common.c,v 1.74 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -290,9 +290,9 @@ flagInhAttrs(TableInfo *tblinfo, int numTables,
         * attr with the same name, then only dump it if:
         *
         * - it is NOT NULL and zero parents are NOT NULL
-        *   OR
+        *   OR
         * - it has a default value AND the default value does not match
-        *   all parent default values, or no parents specify a default.
+        *   all parent default values, or no parents specify a default.
         *
         * See discussion on -hackers around 2-Apr-2001.
         *----------------------------------------------------------------
@@ -364,9 +364,7 @@ flagInhAttrs(TableInfo *tblinfo, int numTables,
 
                /* Clear it if attr has local definition */
                if (g_fout->remoteVersion >= 70300 && tblinfo[i].attislocal[j])
-               {
                    tblinfo[i].inhAttrs[j] = false;
-               }
            }
        }
    }
index 095d2fc8644dcb9b7c9637533f4f55be41a5c21d..100f54fefc3111855235ac14f8fecbb2a8e2e646 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/dumputils.c,v 1.6 2003/07/31 17:21:57 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/dumputils.c,v 1.7 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,9 +23,9 @@
 
 static bool parseAclArray(const char *acls, char ***itemarray, int *nitems);
 static bool parseAclItem(const char *item, const char *type, const char *name,
-                        int remoteVersion,
-                        PQExpBuffer grantee, PQExpBuffer grantor,
-                        PQExpBuffer privs, PQExpBuffer privswgo);
+            int remoteVersion,
+            PQExpBuffer grantee, PQExpBuffer grantor,
+            PQExpBuffer privs, PQExpBuffer privswgo);
 static char *copyAclUserName(PQExpBuffer output, char *input);
 static void AddAcl(PQExpBuffer aclbuf, const char *keyword);
 
@@ -191,8 +191,12 @@ buildACLCommands(const char *name, const char *type,
    char      **aclitems;
    int         naclitems;
    int         i;
-   PQExpBuffer grantee, grantor, privs, privswgo;
-   PQExpBuffer firstsql, secondsql;
+   PQExpBuffer grantee,
+               grantor,
+               privs,
+               privswgo;
+   PQExpBuffer firstsql,
+               secondsql;
    bool        found_owner_privs = false;
 
    if (strlen(acls) == 0)
@@ -209,13 +213,14 @@ buildACLCommands(const char *name, const char *type,
    grantor = createPQExpBuffer();
    privs = createPQExpBuffer();
    privswgo = createPQExpBuffer();
+
    /*
-    * At the end, these two will be pasted together to form the
-    * result.  But the owner privileges need to go before the other
-    * ones to keep the dependencies valid.  In recent versions this
-    * is normally the case, but in old versions they come after the
-    * PUBLIC privileges and that results in problems if we need to
-    * run REVOKE on the owner privileges.
+    * At the end, these two will be pasted together to form the result.
+    * But the owner privileges need to go before the other ones to keep
+    * the dependencies valid.  In recent versions this is normally the
+    * case, but in old versions they come after the PUBLIC privileges and
+    * that results in problems if we need to run REVOKE on the owner
+    * privileges.
     */
    firstsql = createPQExpBuffer();
    secondsql = createPQExpBuffer();
@@ -245,9 +250,10 @@ buildACLCommands(const char *name, const char *type,
                && strcmp(grantor->data, owner) == 0)
            {
                found_owner_privs = true;
+
                /*
-                * For the owner, the default privilege level is ALL
-                * WITH GRANT OPTION (only ALL prior to 7.4).
+                * For the owner, the default privilege level is ALL WITH
+                * GRANT OPTION (only ALL prior to 7.4).
                 */
                if (supports_grant_options(remoteVersion)
                    ? strcmp(privswgo->data, "ALL") != 0
@@ -285,7 +291,7 @@ buildACLCommands(const char *name, const char *type,
                    else if (strncmp(grantee->data, "group ",
                                     strlen("group ")) == 0)
                        appendPQExpBuffer(secondsql, "GROUP %s;\n",
-                                         fmtId(grantee->data + strlen("group ")));
+                               fmtId(grantee->data + strlen("group ")));
                    else
                        appendPQExpBuffer(secondsql, "%s;\n", fmtId(grantee->data));
                }
@@ -298,7 +304,7 @@ buildACLCommands(const char *name, const char *type,
                    else if (strncmp(grantee->data, "group ",
                                     strlen("group ")) == 0)
                        appendPQExpBuffer(secondsql, "GROUP %s",
-                                         fmtId(grantee->data + strlen("group ")));
+                               fmtId(grantee->data + strlen("group ")));
                    else
                        appendPQExpBuffer(secondsql, "%s", fmtId(grantee->data));
                    appendPQExpBuffer(secondsql, " WITH GRANT OPTION;\n");
@@ -340,7 +346,7 @@ buildACLCommands(const char *name, const char *type,
  * into individual items.
  *
  * On success, returns true and sets *itemarray and *nitems to describe
- * an array of individual strings.  On parse failure, returns false;
+ * an array of individual strings. On parse failure, returns false;
  * *itemarray may exist or be NULL.
  *
  * NOTE: free'ing itemarray is sufficient to deallocate the working storage.
@@ -354,19 +360,21 @@ parseAclArray(const char *acls, char ***itemarray, int *nitems)
    int         curitem;
 
    /*
-    * We expect input in the form of "{item,item,item}" where any item
-    * is either raw data, or surrounded by double quotes (in which case
-    * embedded characters including backslashes and quotes are backslashed).
+    * We expect input in the form of "{item,item,item}" where any item is
+    * either raw data, or surrounded by double quotes (in which case
+    * embedded characters including backslashes and quotes are
+    * backslashed).
     *
     * We build the result as an array of pointers followed by the actual
-    * string data, all in one malloc block for convenience of deallocation.
-    * The worst-case storage need is not more than one pointer and one
-    * character for each input character (consider "{,,,,,,,,,,}").
+    * string data, all in one malloc block for convenience of
+    * deallocation. The worst-case storage need is not more than one
+    * pointer and one character for each input character (consider
+    * "{,,,,,,,,,,}").
     */
    *itemarray = NULL;
    *nitems = 0;
    inputlen = strlen(acls);
-   if (inputlen < 2 || acls[0] != '{' || acls[inputlen-1] != '}')
+   if (inputlen < 2 || acls[0] != '{' || acls[inputlen - 1] != '}')
        return false;           /* bad input */
    items = (char **) malloc(inputlen * (sizeof(char *) + sizeof(char)));
    if (items == NULL)
@@ -384,9 +392,9 @@ parseAclArray(const char *acls, char ***itemarray, int *nitems)
        while (*acls != '}' && *acls != ',')
        {
            if (*acls == '\0')
-               return false;       /* premature end of string */
+               return false;   /* premature end of string */
            if (*acls != '"')
-               *strings++ = *acls++; /* copy unquoted data */
+               *strings++ = *acls++;   /* copy unquoted data */
            else
            {
                /* process quoted substring */
@@ -394,14 +402,14 @@ parseAclArray(const char *acls, char ***itemarray, int *nitems)
                while (*acls != '"')
                {
                    if (*acls == '\0')
-                       return false;       /* premature end of string */
+                       return false;   /* premature end of string */
                    if (*acls == '\\')
                    {
                        acls++;
                        if (*acls == '\0')
-                           return false; /* premature end of string */
+                           return false;       /* premature end of string */
                    }
-                   *strings++ = *acls++; /* copy quoted data */
+                   *strings++ = *acls++;       /* copy quoted data */
                }
                acls++;
            }
@@ -426,7 +434,7 @@ parseAclArray(const char *acls, char ***itemarray, int *nitems)
  *
  * The returned grantee string will be the dequoted username or groupname
  * (preceded with "group " in the latter case).  The returned grantor is
- * the dequoted grantor name or empty.  Privilege characters are decoded
+ * the dequoted grantor name or empty. Privilege characters are decoded
  * and split between privileges with grant option (privswgo) and without
  * (privs).
  *
@@ -559,11 +567,12 @@ copyAclUserName(PQExpBuffer output, char *input)
            while (*input != '"')
            {
                if (*input == '\0')
-                   return input; /* really a syntax error... */
+                   return input;       /* really a syntax error... */
+
                /*
                 * There is no quoting convention here, thus we can't cope
-                * with usernames containing double quotes.  Keep this code
-                * in sync with putid() in backend's acl.c.
+                * with usernames containing double quotes.  Keep this
+                * code in sync with putid() in backend's acl.c.
                 */
                appendPQExpBufferChar(output, *input++);
            }
index 41946af31af58932a7e15eca363930a03c31b2c6..8d8d2b740d14604ddbd105ac4fc00165edd5177b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: dumputils.h,v 1.5 2003/05/30 22:55:15 tgl Exp $
+ * $Id: dumputils.h,v 1.6 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,11 +22,11 @@ extern char *simple_prompt(const char *prompt, int maxlen, bool echo);
 
 extern const char *fmtId(const char *identifier);
 extern void appendStringLiteral(PQExpBuffer buf, const char *str,
-                               bool escapeAll);
-extern int parse_version(const char *versionString);
+                   bool escapeAll);
+extern int parse_version(const char *versionString);
 extern bool buildACLCommands(const char *name, const char *type,
-                            const char *acls, const char *owner,
-                            int remoteVersion,
-                            PQExpBuffer sql);
+                const char *acls, const char *owner,
+                int remoteVersion,
+                PQExpBuffer sql);
 
 #endif   /* DUMPUTILS_H */
index 5acfc08ba3b708a805acf1e47a1628b5fd9be8e7..294d92682c15853f1c533c9335fecd920c239900 100644 (file)
@@ -15,7 +15,7 @@
  *
  *
  * IDENTIFICATION
- *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.73 2003/07/23 08:47:30 petere Exp $
+ *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.74 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -206,7 +206,7 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
        sav = SetOutput(AH, ropt->filename, ropt->compression);
 
    ahprintf(AH, "--\n-- PostgreSQL database dump\n--\n\n");
-   
+
    /*
     * Drop the items at the start, in reverse order
     */
@@ -280,7 +280,7 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
                /*
                 * If we can output the data, then restore it.
                 */
-               if (AH->PrintTocDataPtr != NULL && (reqs & REQ_DATA) != 0)
+               if (AH->PrintTocDataPtr !=NULL && (reqs & REQ_DATA) != 0)
                {
 #ifndef HAVE_LIBZ
                    if (AH->compression != 0)
@@ -1292,7 +1292,8 @@ _die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt, va_lis
 {
    _write_msg(modulename, fmt, ap);
 
-   if (AH) {
+   if (AH)
+   {
        if (AH->public.verbose)
            write_msg(NULL, "*** aborted because of error\n");
        if (AH->connection)
@@ -1383,7 +1384,7 @@ TocIDRequired(ArchiveHandle *AH, int id, RestoreOptions *ropt)
 size_t
 WriteOffset(ArchiveHandle *AH, off_t o, int wasSet)
 {
-   int             off;
+   int         off;
 
    /* Save the flag */
    (*AH->WriteBytePtr) (AH, wasSet);
@@ -1391,7 +1392,7 @@ WriteOffset(ArchiveHandle *AH, off_t o, int wasSet)
    /* Write out off_t smallest byte first, prevents endian mismatch */
    for (off = 0; off < sizeof(off_t); off++)
    {
-       (*AH->WriteBytePtr) (AH, o & 0xFF);
+       (*AH->WriteBytePtr) (AH, o & 0xFF);
        o >>= 8;
    }
    return sizeof(off_t) + 1;
@@ -1400,9 +1401,9 @@ WriteOffset(ArchiveHandle *AH, off_t o, int wasSet)
 int
 ReadOffset(ArchiveHandle *AH, off_t *o)
 {
-   int             i;
-   int             off;
-   int             offsetFlg;
+   int         i;
+   int         off;
+   int         offsetFlg;
 
    /* Initialize to zero */
    *o = 0;
@@ -1414,21 +1415,21 @@ ReadOffset(ArchiveHandle *AH, off_t *o)
        i = ReadInt(AH);
        /* -1 means not set */
        if (i < 0)
-           return K_OFFSET_POS_NOT_SET;
+           return K_OFFSET_POS_NOT_SET;
        else if (i == 0)
-           return K_OFFSET_NO_DATA;
+           return K_OFFSET_NO_DATA;
 
        /* Cast to off_t because it was written as an int. */
-       *o = (off_t)i;
+       *o = (off_t) i;
        return K_OFFSET_POS_SET;
    }
 
    /*
-    * Read the flag indicating the state of the data pointer.
-    * Check if valid and die if not.
+    * Read the flag indicating the state of the data pointer. Check if
+    * valid and die if not.
     *
-    * This used to be handled by a negative or zero pointer,
-    * now we use an extra byte specifically for the state.
+    * This used to be handled by a negative or zero pointer, now we use an
+    * extra byte specifically for the state.
     */
    offsetFlg = (*AH->ReadBytePtr) (AH) & 0xFF;
 
@@ -1438,10 +1439,10 @@ ReadOffset(ArchiveHandle *AH, off_t *o)
        case K_OFFSET_NO_DATA:
        case K_OFFSET_POS_SET:
 
-               break;
+           break;
 
        default:
-               die_horribly(AH, modulename, "Unexpected data offset flag %d\n", offsetFlg);
+           die_horribly(AH, modulename, "Unexpected data offset flag %d\n", offsetFlg);
    }
 
    /*
@@ -1454,7 +1455,7 @@ ReadOffset(ArchiveHandle *AH, off_t *o)
        else
        {
            if ((*AH->ReadBytePtr) (AH) != 0)
-               die_horribly(AH, modulename, "file offset in dump file is too large\n");
+               die_horribly(AH, modulename, "file offset in dump file is too large\n");
        }
    }
 
@@ -2121,7 +2122,7 @@ _reconnectAsUser(ArchiveHandle *AH, const char *dbname, const char *user)
                          dbname ? fmtId(dbname) : "-");
        appendPQExpBuffer(qry, " %s\n\n",
                          fmtId(user));
-       
+
        ahprintf(AH, qry->data);
 
        destroyPQExpBuffer(qry);
@@ -2304,9 +2305,9 @@ ReadHead(ArchiveHandle *AH)
            write_msg(modulename, "WARNING: archive was made on a machine with larger integers, some operations may fail\n");
 
        if (AH->version >= K_VERS_1_7)
-           AH->offSize = (*AH->ReadBytePtr) (AH);
+           AH->offSize = (*AH->ReadBytePtr) (AH);
        else
-           AH->offSize = AH->intSize;
+           AH->offSize = AH->intSize;
 
        fmt = (*AH->ReadBytePtr) (AH);
 
@@ -2363,10 +2364,11 @@ checkSeek(FILE *fp)
    if (fseeko(fp, 0, SEEK_CUR) != 0)
        return false;
    else if (sizeof(off_t) > sizeof(long))
-   /*
-    *  At this point, off_t is too large for long, so we return
-    *  based on whether an off_t version of fseek is available.
-    */
+
+       /*
+        * At this point, off_t is too large for long, so we return based
+        * on whether an off_t version of fseek is available.
+        */
 #ifdef HAVE_FSEEKO
        return true;
 #else
index 078ecb9c9839ec7885a08e9d5887a6122ed55615..f893a3ba7fd44cc9a8b03a73aa771c4c5a1bd008 100644 (file)
@@ -17,7 +17,7 @@
  *
  *
  * IDENTIFICATION
- *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.50 2003/02/01 19:29:16 tgl Exp $
+ *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.51 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -74,7 +74,8 @@ typedef z_stream *z_streamp;
 #define K_VERS_1_4 (( (1 * 256 + 4) * 256 + 0) * 256 + 0)      /* Date & name in header */
 #define K_VERS_1_5 (( (1 * 256 + 5) * 256 + 0) * 256 + 0)      /* Handle dependencies */
 #define K_VERS_1_6 (( (1 * 256 + 6) * 256 + 0) * 256 + 0)      /* Schema field in TOCs */
-#define K_VERS_1_7 (( (1 * 256 + 7) * 256 + 0) * 256 + 0)      /* File Offset size in header */
+#define K_VERS_1_7 (( (1 * 256 + 7) * 256 + 0) * 256 + 0)      /* File Offset size in
+                                                                * header */
 #define K_VERS_MAX (( (1 * 256 + 7) * 256 + 255) * 256 + 0)
 
 /* No of BLOBs to restore in 1 TX */
@@ -155,7 +156,8 @@ typedef struct _archiveHandle
    int         debugLevel;     /* Used for logging (currently only by
                                 * --verbose) */
    size_t      intSize;        /* Size of an integer in the archive */
-   size_t      offSize;        /* Size of a file offset in the archive - Added V1.7 */
+   size_t      offSize;        /* Size of a file offset in the archive -
+                                * Added V1.7 */
    ArchiveFormat format;       /* Archive format */
 
    sqlparseInfo sqlparse;
@@ -296,8 +298,8 @@ extern int  ReadInt(ArchiveHandle *AH);
 extern char *ReadStr(ArchiveHandle *AH);
 extern size_t WriteStr(ArchiveHandle *AH, const char *s);
 
-int ReadOffset(ArchiveHandle*, off_t*);
-size_t WriteOffset(ArchiveHandle*, off_t, int);
+int            ReadOffset(ArchiveHandle *, off_t *);
+size_t     WriteOffset(ArchiveHandle *, off_t, int);
 
 extern void StartRestoreBlobs(ArchiveHandle *AH);
 extern void StartRestoreBlob(ArchiveHandle *AH, Oid oid);
index 49a2701a1218b6634e9d385b505655d6f7145864..802b02811f575552e8f8c091f68d28e9df9646d6 100644 (file)
@@ -19,7 +19,7 @@
  *
  *
  * IDENTIFICATION
- *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.24 2003/07/23 08:47:30 petere Exp $
+ *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.25 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -248,7 +248,7 @@ _WriteExtraToc(ArchiveHandle *AH, TocEntry *te)
 static void
 _ReadExtraToc(ArchiveHandle *AH, TocEntry *te)
 {
-   int junk;
+   int         junk;
    lclTocEntry *ctx = (lclTocEntry *) te->formatData;
 
    if (ctx == NULL)
@@ -257,11 +257,11 @@ _ReadExtraToc(ArchiveHandle *AH, TocEntry *te)
        te->formatData = (void *) ctx;
    }
 
-   ctx->dataState = ReadOffset(AH, &(ctx->dataPos) );
+   ctx->dataState = ReadOffset(AH, &(ctx->dataPos));
 
    /*
-    * Prior to V1.7 (pg7.3), we dumped the data size as an int
-    * now we don't dump it at all.
+    * Prior to V1.7 (pg7.3), we dumped the data size as an int now we
+    * don't dump it at all.
     */
    if (AH->version < K_VERS_1_7)
        junk = ReadInt(AH);
@@ -551,7 +551,7 @@ _PrintData(ArchiveHandle *AH)
        cnt = fread(in, 1, blkLen, AH->FH);
        if (cnt != blkLen)
            die_horribly(AH, modulename,
-                  "could not read data block -- expected %lu, got %lu\n",
+                 "could not read data block -- expected %lu, got %lu\n",
                         (unsigned long) blkLen, (unsigned long) cnt);
 
        ctx->filePos += blkLen;
@@ -674,7 +674,7 @@ _skipData(ArchiveHandle *AH)
        cnt = fread(in, 1, blkLen, AH->FH);
        if (cnt != blkLen)
            die_horribly(AH, modulename,
-                  "could not read data block -- expected %lu, got %lu\n",
+                 "could not read data block -- expected %lu, got %lu\n",
                         (unsigned long) blkLen, (unsigned long) cnt);
 
        ctx->filePos += blkLen;
@@ -841,10 +841,10 @@ _getFilePos(ArchiveHandle *AH, lclContext *ctx)
        if (pos != ctx->filePos)
        {
            write_msg(modulename, "WARNING: ftell mismatch with expected position -- ftell used\n");
+
            /*
-            * Prior to 1.7 (pg7.3) we relied on the internally maintained pointer.
-            * Now we rely on off_t always.
-            * pos = ctx->filePos;
+            * Prior to 1.7 (pg7.3) we relied on the internally maintained
+            * pointer. Now we rely on off_t always. pos = ctx->filePos;
             */
        }
    }
index 11a5eb8f015a7ba9eed5370c48afa69425f84083..88e1595787ffe7d82a1833045118cf4c1d74fa32 100644 (file)
@@ -16,7 +16,7 @@
  *
  *
  * IDENTIFICATION
- *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.36 2003/07/23 08:47:30 petere Exp $
+ *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.37 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1150,7 +1150,7 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
    int         sum,
                chk;
    size_t      len;
-   unsigned long   ullen;
+   unsigned long ullen;
    off_t       hPos;
    int         i;
    bool        gotBlock = false;
@@ -1242,15 +1242,18 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
  * Utility routine to print possibly larger than 32 bit integers in a
  * portable fashion.  Filled with zeros.
  */
-static void print_val(char *s, uint64 val, unsigned int base, size_t len)
+static void
+print_val(char *s, uint64 val, unsigned int base, size_t len)
 {
-        int i;
-        for (i = len; i > 0; i--)
-        {
-                int digit = val % base;
-                s[i - 1] = '0' + digit;
-                val = val / base;
-        }
+   int         i;
+
+   for (i = len; i > 0; i--)
+   {
+       int         digit = val % base;
+
+       s[i - 1] = '0' + digit;
+       val = val / base;
+   }
 }
 
 
index e58c316866d8b347a86704ed50c9dc1c5e1049d0..e631623a32bac9b512aa5010bfdf2c21027fafc6 100644 (file)
@@ -12,7 +12,7 @@
  * by PostgreSQL
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.340 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.341 2003/08/04 00:43:27 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,7 +42,7 @@
 
 #ifndef HAVE_GETOPT_LONG
 #include "getopt_long.h"
-int optreset;
+int            optreset;
 #endif
 
 #include "access/attnum.h"
@@ -519,12 +519,12 @@ main(int argc, char **argv)
                      PQerrorMessage(g_conn));
    PQclear(res);
 
-    /* Set the datestyle to ISO to ensure the dump's portability */
-    res = PQexec(g_conn, "SET DATESTYLE = ISO");
-    if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
-            exit_horribly(g_fout, NULL, "could not set datestyle to ISO: %s",
-                                      PQerrorMessage(g_conn));
-    PQclear(res);
+   /* Set the datestyle to ISO to ensure the dump's portability */
+   res = PQexec(g_conn, "SET DATESTYLE = ISO");
+   if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
+       exit_horribly(g_fout, NULL, "could not set datestyle to ISO: %s",
+                     PQerrorMessage(g_conn));
+   PQclear(res);
 
    /*
     * If supported, set extra_float_digits so that we can dump float data
@@ -577,10 +577,10 @@ main(int argc, char **argv)
    /* Now sort the output nicely */
    SortTocByOID(g_fout);
 
-       /*
-        * Procedural languages have to be declared just after
-        * database and schema creation, before they are used.
-        */
+   /*
+    * Procedural languages have to be declared just after database and
+    * schema creation, before they are used.
+    */
    MoveToStart(g_fout, "ACL LANGUAGE");
    MoveToStart(g_fout, "PROCEDURAL LANGUAGE");
    MoveToStart(g_fout, "FUNC PROCEDURAL LANGUAGE");
@@ -702,8 +702,8 @@ selectDumpableNamespace(NamespaceInfo *nsinfo)
 {
    /*
     * If a specific table is being dumped, do not dump any complete
-    * namespaces.  If a specific namespace is being dumped, dump just
-    * that namespace. Otherwise, dump all non-system namespaces. 
+    * namespaces.  If a specific namespace is being dumped, dump just
+    * that namespace. Otherwise, dump all non-system namespaces.
     */
    if (selectTableName != NULL)
        nsinfo->dump = false;
@@ -1449,8 +1449,8 @@ getNamespaces(int *numNamespaces)
    }
 
    /*
-    * If the user attempted to dump a specific namespace, check to
-    * ensure that the specified namespace actually exists.
+    * If the user attempted to dump a specific namespace, check to ensure
+    * that the specified namespace actually exists.
     */
    if (selectSchemaName)
    {
@@ -2269,9 +2269,9 @@ getTables(int *numTables)
    }
 
    /*
-    * If the user is attempting to dump a specific table, check to
-    * ensure that the specified table actually exists (and is a table
-    * or a view, not a sequence).
+    * If the user is attempting to dump a specific table, check to ensure
+    * that the specified table actually exists (and is a table or a view,
+    * not a sequence).
     */
    if (selectTableName)
    {
@@ -2424,8 +2424,8 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
        {
            /* need left join here to not fail on dropped columns ... */
            appendPQExpBuffer(q, "SELECT a.attnum, a.attname, a.atttypmod, a.attstattarget, a.attstorage, t.typstorage, "
-                             "a.attnotnull, a.atthasdef, a.attisdropped, a.attislocal, "
-                             "pg_catalog.format_type(t.oid,a.atttypmod) as atttypname "
+             "a.attnotnull, a.atthasdef, a.attisdropped, a.attislocal, "
+              "pg_catalog.format_type(t.oid,a.atttypmod) as atttypname "
                              "from pg_catalog.pg_attribute a left join pg_catalog.pg_type t "
                              "on a.atttypid = t.oid "
                              "where a.attrelid = '%s'::pg_catalog.oid "
@@ -2442,7 +2442,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
             */
            appendPQExpBuffer(q, "SELECT a.attnum, a.attname, a.atttypmod, -1 as attstattarget, a.attstorage, t.typstorage, "
                              "a.attnotnull, a.atthasdef, false as attisdropped, null as attislocal, "
-                             "format_type(t.oid,a.atttypmod) as atttypname "
+                         "format_type(t.oid,a.atttypmod) as atttypname "
                              "from pg_attribute a left join pg_type t "
                              "on a.atttypid = t.oid "
                              "where a.attrelid = '%s'::oid "
@@ -2454,7 +2454,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
        {
            /* format_type not available before 7.1 */
            appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, -1 as attstattarget, attstorage, attstorage as typstorage, "
-                        "attnotnull, atthasdef, false as attisdropped, null as attislocal, "
+                             "attnotnull, atthasdef, false as attisdropped, null as attislocal, "
                              "(select typname from pg_type where oid = atttypid) as atttypname "
                              "from pg_attribute a "
                              "where attrelid = '%s'::oid "
@@ -2504,11 +2504,11 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
 
        for (j = 0; j < ntups; j++)
        {
-           if (j+1 != atoi(PQgetvalue(res, j, i_attnum)))
+           if (j + 1 != atoi(PQgetvalue(res, j, i_attnum)))
            {
                write_msg(NULL, "invalid attribute numbering in table \"%s\"\n",
                          tbinfo->relname);
-                   exit_nicely();
+               exit_nicely();
            }
            tbinfo->attnames[j] = strdup(PQgetvalue(res, j, i_attname));
            tbinfo->atttypnames[j] = strdup(PQgetvalue(res, j, i_atttypname));
@@ -3314,7 +3314,7 @@ dumpOneDomain(Archive *fout, TypeInfo *tinfo)
     */
    if (g_fout->remoteVersion >= 70400)
        appendPQExpBuffer(chkquery, "SELECT conname, "
-                         "pg_catalog.pg_get_constraintdef(oid) AS consrc "
+                       "pg_catalog.pg_get_constraintdef(oid) AS consrc "
                          "FROM pg_catalog.pg_constraint "
                          "WHERE contypid = '%s'::pg_catalog.oid",
                          tinfo->oid);
@@ -3345,7 +3345,7 @@ dumpOneDomain(Archive *fout, TypeInfo *tinfo)
        appendPQExpBuffer(q, "\n\tCONSTRAINT %s %s",
                          fmtId(conname), consrc);
    }
-   
+
    appendPQExpBuffer(q, ";\n");
 
    (*deps)[depIdx++] = NULL;   /* End of List */
@@ -3437,7 +3437,7 @@ dumpOneCompositeType(Archive *fout, TypeInfo *tinfo)
            appendPQExpBuffer(q, ",");
    }
    appendPQExpBuffer(q, "\n);\n");
-   
+
    /*
     * DROP must be fully qualified in case same name appears in
     * pg_catalog
@@ -3755,7 +3755,8 @@ dumpOneFunc(Archive *fout, FuncInfo *finfo)
    char       *prosecdef;
    char       *lanname;
    char       *rettypename;
-   char       *funcproclang;   /* Boolean : is this function a PLang handler ? */
+   char       *funcproclang;   /* Boolean : is this function a PLang
+                                * handler ? */
 
    if (finfo->dumped)
        goto done;
@@ -3900,7 +3901,7 @@ dumpOneFunc(Archive *fout, FuncInfo *finfo)
 
    ArchiveEntry(fout, finfo->oid, funcsig_tag,
                 finfo->pronamespace->nspname,
-                finfo->usename, strcmp(funcproclang,"t")?"FUNCTION":"FUNC PROCEDURAL LANGUAGE", NULL,
+                finfo->usename, strcmp(funcproclang, "t") ? "FUNCTION" : "FUNC PROCEDURAL LANGUAGE", NULL,
                 q->data, delqry->data,
                 NULL, NULL, NULL);
 
@@ -4911,7 +4912,7 @@ dumpOneAgg(Archive *fout, AggInfo *agginfo)
  * Write out grant/revoke information
  *
  * 'type' must be TABLE, FUNCTION, LANGUAGE, or SCHEMA.
- * 'name' is the formatted name of the object.  Must be quoted etc. already.
+ * 'name' is the formatted name of the object. Must be quoted etc. already.
  * 'tag' is the tag for the archive entry (typ. unquoted name of object).
  * 'nspname' is the namespace the object is in (NULL if none).
  * 'owner' is the owner, NULL if there is no owner (for languages).
@@ -4927,12 +4928,15 @@ dumpACL(Archive *fout, const char *type, const char *name,
 {
    PQExpBuffer sql;
 
-       /* acl_lang is a flag only true if we are dumping language's ACL,
-        * so we can set 'type' to a value that is suitable to build
-        * SQL requests as for other types.
-        */
-   bool       acl_lang = false;
-   if(!strcmp(type,"ACL LANGUAGE")){
+   /*
+    * acl_lang is a flag only true if we are dumping language's ACL, so
+    * we can set 'type' to a value that is suitable to build SQL requests
+    * as for other types.
+    */
+   bool        acl_lang = false;
+
+   if (!strcmp(type, "ACL LANGUAGE"))
+   {
        type = "LANGUAGE";
        acl_lang = true;
    }
@@ -5275,9 +5279,9 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
            resetPQExpBuffer(query);
            if (g_fout->remoteVersion >= 70400)
                appendPQExpBuffer(query, "SELECT conname, "
-                                 " pg_catalog.pg_get_constraintdef(c1.oid) AS consrc "
+                   " pg_catalog.pg_get_constraintdef(c1.oid) AS consrc "
                                  " from pg_catalog.pg_constraint c1 "
-                                 " where conrelid = '%s'::pg_catalog.oid "
+                               " where conrelid = '%s'::pg_catalog.oid "
                                  "   and contype = 'c' "
                                  "   and not exists "
                                  "  (select 1 from "
@@ -5288,7 +5292,7 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
                                  "          or (c2.conname[0] = '$' "
                                  "              and c1.conname[0] = '$')"
                                  "          )"
-                                 "      and pg_catalog.pg_get_constraintdef(c2.oid) "
+                    "      and pg_catalog.pg_get_constraintdef(c2.oid) "
                                  "          = pg_catalog.pg_get_constraintdef(c1.oid) "
                                  "      and c2.conrelid = i.inhparent) "
                                  " order by conname ",
@@ -5357,7 +5361,7 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
                    appendPQExpBuffer(q, ",\n    ");
 
                appendPQExpBuffer(q, "CONSTRAINT %s ",
-                                     fmtId(name));
+                                 fmtId(name));
                appendPQExpBuffer(q, "%s", expr);
            }
            PQclear(res2);
@@ -5402,9 +5406,9 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
        for (j = 0; j < tbinfo->numatts; j++)
        {
            /*
-            * Dump per-column statistics information. We only issue an ALTER
-            * TABLE statement if the attstattarget entry for this column is
-            * non-negative (i.e. it's not the default value)
+            * Dump per-column statistics information. We only issue an
+            * ALTER TABLE statement if the attstattarget entry for this
+            * column is non-negative (i.e. it's not the default value)
             */
            if (tbinfo->attstattarget[j] >= 0 &&
                !tbinfo->attisdropped[j])
@@ -5418,12 +5422,14 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
            }
 
            /*
-            * Dump per-column storage information.  The statement is only dumped if
-            * the storage has been changed from the type's default.
+            * Dump per-column storage information.  The statement is only
+            * dumped if the storage has been changed from the type's
+            * default.
             */
-           if(!tbinfo->attisdropped[j] && tbinfo->attstorage[j] != tbinfo->typstorage[j])
+           if (!tbinfo->attisdropped[j] && tbinfo->attstorage[j] != tbinfo->typstorage[j])
            {
-               switch (tbinfo->attstorage[j]) {
+               switch (tbinfo->attstorage[j])
+               {
                    case 'p':
                        storage = "PLAIN";
                        break;
@@ -5439,8 +5445,13 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
                    default:
                        storage = NULL;
                }
-               /* Only dump the statement if it's a storage type we recognize */
-               if (storage != NULL) {
+
+               /*
+                * Only dump the statement if it's a storage type we
+                * recognize
+                */
+               if (storage != NULL)
+               {
                    appendPQExpBuffer(q, "ALTER TABLE ONLY %s ",
                                      fmtId(tbinfo->relname));
                    appendPQExpBuffer(q, "ALTER COLUMN %s ",
@@ -5605,7 +5616,7 @@ dumpIndexes(Archive *fout, TableInfo *tblinfo, int numTables)
            const char *indexrelname = PQgetvalue(res, j, i_indexrelname);
            const char *indexdef = PQgetvalue(res, j, i_indexdef);
            char        contype = *(PQgetvalue(res, j, i_contype));
-           bool    indisclustered = (PQgetvalue(res, j, i_indisclustered)[0] == 't');
+           bool        indisclustered = (PQgetvalue(res, j, i_indisclustered)[0] == 't');
 
            resetPQExpBuffer(q);
            resetPQExpBuffer(delq);
@@ -5659,11 +5670,12 @@ dumpIndexes(Archive *fout, TableInfo *tblinfo, int numTables)
                appendPQExpBuffer(delq, "DROP CONSTRAINT %s;\n",
                                  fmtId(indexrelname));
                /* If the index is clustered, we need to record that. */
-               if (indisclustered) {
-                   appendPQExpBuffer(q, "\nALTER TABLE %s CLUSTER", 
-                                fmtId(tbinfo->relname));
-                   appendPQExpBuffer(q, " ON %s;\n", 
-                                fmtId(indexrelname));
+               if (indisclustered)
+               {
+                   appendPQExpBuffer(q, "\nALTER TABLE %s CLUSTER",
+                                     fmtId(tbinfo->relname));
+                   appendPQExpBuffer(q, " ON %s;\n",
+                                     fmtId(indexrelname));
                }
 
                ArchiveEntry(fout, indexreloid,
@@ -5684,11 +5696,12 @@ dumpIndexes(Archive *fout, TableInfo *tblinfo, int numTables)
                appendPQExpBuffer(q, "%s;\n", indexdef);
 
                /* If the index is clustered, we need to record that. */
-               if (indisclustered) {
-                   appendPQExpBuffer(q, "\nALTER TABLE %s CLUSTER", 
-                                fmtId(tbinfo->relname));
-                   appendPQExpBuffer(q, " ON %s;\n", 
-                                fmtId(indexrelname));
+               if (indisclustered)
+               {
+                   appendPQExpBuffer(q, "\nALTER TABLE %s CLUSTER",
+                                     fmtId(tbinfo->relname));
+                   appendPQExpBuffer(q, " ON %s;\n",
+                                     fmtId(indexrelname));
                }
 
                /*
@@ -5889,16 +5902,16 @@ dumpOneSequence(Archive *fout, TableInfo *tbinfo,
    snprintf(bufx, sizeof(bufx), INT64_FORMAT, SEQ_MAXVALUE);
 
    appendPQExpBuffer(query,
-           "SELECT sequence_name, last_value, increment_by, "
-                   "CASE WHEN increment_by > 0 AND max_value = %s THEN NULL "
-                   "     WHEN increment_by < 0 AND max_value = -1 THEN NULL "
-                   "     ELSE max_value "
-                   "END AS max_value, "
-                   "CASE WHEN increment_by > 0 AND min_value = 1 THEN NULL "
-                   "     WHEN increment_by < 0 AND min_value = %s THEN NULL "
-                   "     ELSE min_value "
-                   "END AS min_value, "
-                   "cache_value, is_cycled, is_called from %s",
+                     "SELECT sequence_name, last_value, increment_by, "
+              "CASE WHEN increment_by > 0 AND max_value = %s THEN NULL "
+              "     WHEN increment_by < 0 AND max_value = -1 THEN NULL "
+                     "     ELSE max_value "
+                     "END AS max_value, "
+               "CASE WHEN increment_by > 0 AND min_value = 1 THEN NULL "
+              "     WHEN increment_by < 0 AND min_value = %s THEN NULL "
+                     "     ELSE min_value "
+                     "END AS min_value, "
+                     "cache_value, is_cycled, is_called from %s",
                      bufx, bufm,
                      fmtId(tbinfo->relname));
 
@@ -5962,7 +5975,7 @@ dumpOneSequence(Archive *fout, TableInfo *tbinfo,
 
        resetPQExpBuffer(query);
        appendPQExpBuffer(query,
-                  "CREATE SEQUENCE %s\n",
+                         "CREATE SEQUENCE %s\n",
                          fmtId(tbinfo->relname));
 
        if (!called)
@@ -5981,7 +5994,7 @@ dumpOneSequence(Archive *fout, TableInfo *tbinfo,
            appendPQExpBuffer(query, "    NO MINVALUE\n");
 
        appendPQExpBuffer(query,
-                  "    CACHE %s%s;\n",
+                         "    CACHE %s%s;\n",
                          cache, (cycled ? "\n    CYCLE" : ""));
 
        ArchiveEntry(fout, tbinfo->oid, tbinfo->relname,
@@ -6072,7 +6085,7 @@ dumpConstraints(Archive *fout, TableInfo *tblinfo, int numTables)
        resetPQExpBuffer(query);
        appendPQExpBuffer(query,
                          "SELECT oid, conname, "
-                         "pg_catalog.pg_get_constraintdef(oid) as condef "
+                       "pg_catalog.pg_get_constraintdef(oid) as condef "
                          "FROM pg_catalog.pg_constraint "
                          "WHERE conrelid = '%s'::pg_catalog.oid "
                          "AND contype = 'f'",
index c30665a7ba360027ba8a5268dab2f7b91ef59b2c..3f0d0156c558800524d61232a4e33f3568e0e56e 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_dump.h,v 1.101 2003/03/20 06:26:30 momjian Exp $
+ * $Id: pg_dump.h,v 1.102 2003/08/04 00:43:28 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -128,8 +128,8 @@ typedef struct _tableInfo
    char      **atttypnames;    /* attribute type names */
    int        *atttypmod;      /* type-specific type modifiers */
    int        *attstattarget;  /* attribute statistics targets */
-   char           *attstorage; /* attribute storage scheme */
-   char           *typstorage; /* type storage scheme */
+   char       *attstorage;     /* attribute storage scheme */
+   char       *typstorage;     /* type storage scheme */
    bool       *attisdropped;   /* true if attr is dropped; don't dump it */
    bool       *attislocal;     /* true if attr has local definition */
    bool       *attisserial;    /* true if attr is serial or bigserial */
index a7502a7c1441a25fcd31d2ed996a9927a6b6ca67..4c59d5d90f86ee8a492682812762a5a356be9438 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  *
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.24 2003/07/29 14:17:37 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dumpall.c,v 1.25 2003/08/04 00:43:28 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -27,7 +27,7 @@
 
 #ifndef HAVE_GETOPT_LONG
 #include "getopt_long.h"
-int optreset;
+int            optreset;
 #endif
 
 #include "dumputils.h"
@@ -278,13 +278,13 @@ dumpUsers(PGconn *conn)
 
    if (server_version >= 70100)
        res = executeQuery(conn,
-                          "SELECT usename, usesysid, passwd, usecreatedb, "
+                       "SELECT usename, usesysid, passwd, usecreatedb, "
                           "usesuper, valuntil "
                           "FROM pg_shadow "
                           "WHERE usesysid <> (SELECT datdba FROM pg_database WHERE datname = 'template0')");
    else
        res = executeQuery(conn,
-                          "SELECT usename, usesysid, passwd, usecreatedb, "
+                       "SELECT usename, usesysid, passwd, usecreatedb, "
                           "usesuper, valuntil "
                           "FROM pg_shadow "
                           "WHERE usesysid <> (SELECT datdba FROM pg_database WHERE datname = 'template1')");
@@ -417,13 +417,13 @@ dumpCreateDB(PGconn *conn)
                           "coalesce(usename, (select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
                           "pg_encoding_to_char(d.encoding), "
                           "datistemplate, datpath, datacl "
-                          "FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) "
+       "FROM pg_database d LEFT JOIN pg_shadow u ON (datdba = usesysid) "
                           "WHERE datallowconn ORDER BY 1");
    else if (server_version >= 70100)
        res = executeQuery(conn,
                           "SELECT datname, "
                           "coalesce("
-                          "(select usename from pg_shadow where usesysid=datdba), "
+               "(select usename from pg_shadow where usesysid=datdba), "
                           "(select usename from pg_shadow where usesysid=(select datdba from pg_database where datname='template0'))), "
                           "pg_encoding_to_char(d.encoding), "
                           "datistemplate, datpath, '' as datacl "
@@ -437,7 +437,7 @@ dumpCreateDB(PGconn *conn)
         */
        res = executeQuery(conn,
                           "SELECT datname, "
-                          "(select usename from pg_shadow where usesysid=datdba), "
+               "(select usename from pg_shadow where usesysid=datdba), "
                           "pg_encoding_to_char(d.encoding), "
                           "'f' as datistemplate, datpath, '' as datacl "
                           "FROM pg_database d "
index 0a7b0f1d3b17cd2b8e3ba7320c6f56ef868112ca..0598c9c45109c408c2db74fccfecba778bda4d89 100644 (file)
@@ -34,7 +34,7 @@
  *
  *
  * IDENTIFICATION
- *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_restore.c,v 1.48 2003/07/23 08:47:30 petere Exp $
+ *     $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_restore.c,v 1.49 2003/08/04 00:43:28 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@
 
 #ifndef HAVE_GETOPT_LONG
 #include "getopt_long.h"
-int optreset;
+int            optreset;
 #endif
 
 #ifdef ENABLE_NLS
@@ -401,7 +401,7 @@ usage(const char *progname)
    printf(_("  -x, --no-privileges      skip restoration of access privileges (grant/revoke)\n"));
    printf(_("  -X use-set-session-authorization, --use-set-session-authorization\n"
             "                           use SET SESSION AUTHORIZATION commands instead\n"
-            "                           of reconnecting, if possible\n"));
+          "                           of reconnecting, if possible\n"));
    printf(_("  -X disable-triggers, --disable-triggers\n"
             "                           disable triggers during data-only restore\n"));
 
index ecc0c545245f0fa0836c0404068ba2fa93b8a3a2..e94c8d3d877bfa4b8f9da772bcfe5b81dce3d23c 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/pg_encoding.c,v 1.11 2002/10/20 11:33:48 ishii Exp $
+ *   $Header: /cvsroot/pgsql/src/bin/pg_encoding/Attic/pg_encoding.c,v 1.12 2003/08/04 00:43:28 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -58,7 +58,11 @@ main(int argc, char **argv)
        {
            if (be_only && pg_valid_server_encoding(name) < 0)
                exit(1);
-           /* pg_encoding_to_char() returns "" if invalid encoding number is given */
+
+           /*
+            * pg_encoding_to_char() returns "" if invalid encoding number
+            * is given
+            */
            else if (strcmp("", name))
                printf("%s\n", name);
            else
@@ -77,7 +81,7 @@ main(int argc, char **argv)
                exit(1);
            printf("%d\n", enc);
        }
-       else 
+       else
            exit(1);
 
        exit(0);
index bf81bc5d4abd1abfae577cb4ad5006aec5a438bd..3aa2873865619d96ae432b586657474eed3148ff 100644 (file)
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.10 2003/07/23 08:47:32 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.11 2003/08/04 00:43:28 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -172,8 +172,8 @@ main(int argc, char *argv[])
                    fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
                    exit(1);
                }
-               minXlogSeg = strtoul(endptr+1, &endptr2, 0);
-               if (endptr2 == endptr+1 || *endptr2 != '\0')
+               minXlogSeg = strtoul(endptr + 1, &endptr2, 0);
+               if (endptr2 == endptr + 1 || *endptr2 != '\0')
                {
                    fprintf(stderr, _("%s: invalid argument for option -l\n"), progname);
                    fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
index cc1c20bd1198a8b2d871969f717fc8e6e68d8084..02f083c5a65545ab0f3ac9cffaa78938fed9ecc8 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.99 2003/07/28 00:14:42 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.100 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "command.h"
@@ -1291,8 +1291,8 @@ unescape(const unsigned char *source, size_t len)
                case '7':
                case '8':
                case '9':
-                   c = parse_char((char **)&p);
-                       break;
+                   c = parse_char((char **) &p);
+                   break;
 
                default:
                    c = *p;
@@ -1496,13 +1496,13 @@ SyncVerbosityVariable(void)
    switch (SwitchVariable(pset.vars, "VERBOSITY",
                           "default", "terse", "verbose", NULL))
    {
-       case 1:                 /* default */
+       case 1:         /* default */
            PQsetErrorVerbosity(pset.db, PQERRORS_DEFAULT);
            break;
-       case 2:                 /* terse */
+       case 2:         /* terse */
            PQsetErrorVerbosity(pset.db, PQERRORS_TERSE);
            break;
-       case 3:                 /* verbose */
+       case 3:         /* verbose */
            PQsetErrorVerbosity(pset.db, PQERRORS_VERBOSE);
            break;
        default:                /* not set or unrecognized value */
@@ -1545,11 +1545,11 @@ editFile(const char *fname)
    sys = malloc(strlen(editorName) + strlen(fname) + 10 + 1);
    if (!sys)
        return false;
-   sprintf(sys, 
+   sprintf(sys,
 #ifndef WIN32
-       "exec "
+           "exec "
 #endif
-       "%s '%s'", editorName, fname);
+           "%s '%s'", editorName, fname);
    result = system(sys);
    if (result == -1)
        psql_error("could not start editor \"%s\"\n", editorName);
@@ -1673,7 +1673,7 @@ do_edit(const char *filename_arg, PQExpBuffer query_buf)
 #ifdef USE_READLINE
 #ifdef HAVE_REPLACE_HISTORY_ENTRY
 
-           replace_history_entry(where_history(),query_buf->data,NULL);
+           replace_history_entry(where_history(), query_buf->data, NULL);
 #else
            add_history(query_buf->data);
 #endif
@@ -1913,11 +1913,11 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
    else if (strcmp(param, "pager") == 0)
    {
        if (value && strcasecmp(value, "always") == 0)
-               popt->topt.pager = 2;
+           popt->topt.pager = 2;
        else if (popt->topt.pager == 1)
-               popt->topt.pager = 0;
+           popt->topt.pager = 0;
        else
-               popt->topt.pager = 1;
+           popt->topt.pager = 1;
        if (!quiet)
        {
            if (popt->topt.pager == 1)
@@ -1978,11 +1978,11 @@ do_shell(const char *command)
            else
                exit(EXIT_FAILURE);
        }
-       sprintf(sys, 
+       sprintf(sys,
 #ifndef WIN32
-           "exec "
+               "exec "
 #endif
-           "%s", shellName);
+               "%s", shellName);
        result = system(sys);
        free(sys);
    }
index 42299129fb9940b23d6e64591e045c585d29cd21..8bfa3aa139ff48989ea6c12df9d6a509ea73df32 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.67 2003/07/31 04:23:40 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.68 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "common.h"
 #ifndef WIN32
 
 typedef struct timeval TimevalStruct;
+
 #define GETTIMEOFDAY(T) gettimeofday(T, NULL)
 #define DIFF_MSEC(T, U) ((((T)->tv_sec - (U)->tv_sec) * 1000000.0 + (T)->tv_usec - (U)->tv_usec) / 1000.0)
 
 #else
 
 typedef struct _timeb TimevalStruct;
+
 #define GETTIMEOFDAY(T) _ftime(T)
 #define DIFF_MSEC(T, U) ((((T)->time - (U)->time) * 1000.0 + (T)->millitm - (U)->millitm))
-
 #endif
 
 extern bool prompt_state;
@@ -187,7 +188,7 @@ NoticeProcessor(void *arg, const char *message)
  * so. We use write() to print to stdout because it's better to use simple
  * facilities in a signal handler.
  */
-static PGconn     *volatile cancelConn = NULL;
+static PGconn *volatile cancelConn = NULL;
 
 volatile bool cancel_pressed = false;
 
@@ -227,7 +228,7 @@ handle_sigint(SIGNAL_ARGS)
  *
  * Returns whether our backend connection is still there.
  */
-static bool 
+static bool
 ConnectionUp()
 {
    return PQstatus(pset.db) != CONNECTION_BAD;
@@ -241,15 +242,15 @@ ConnectionUp()
  * see if it can be restored.
  *
  * Returns true if either the connection was still there, or it could be
- * restored successfully; false otherwise.  If, however, there was no
+ * restored successfully; false otherwise. If, however, there was no
  * connection and the session is non-interactive, this will exit the program
  * with a code of EXIT_BADCONN.
  */
 static bool
 CheckConnection()
 {
-   bool OK;
-   
+   bool        OK;
+
    OK = ConnectionUp();
    if (!OK)
    {
@@ -284,21 +285,23 @@ CheckConnection()
  *
  * Set cancelConn to point to the current database connection.
  */
-static void SetCancelConn(void)
+static void
+SetCancelConn(void)
 {
-  cancelConn = pset.db;
+   cancelConn = pset.db;
 }
 
 
 /*
  * ResetCancelConn
  *
- * Set cancelConn to NULL.  I don't know what this means exactly, but it saves
+ * Set cancelConn to NULL. I don't know what this means exactly, but it saves
  * having to export the variable.
  */
-void ResetCancelConn(void)
+void
+ResetCancelConn(void)
 {
-  cancelConn = NULL;
+   cancelConn = NULL;
 }
 
 
@@ -314,33 +317,32 @@ void ResetCancelConn(void)
 static bool
 AcceptResult(const PGresult *result)
 {
-   bool OK = true;
+   bool        OK = true;
 
    ResetCancelConn();
 
    if (!result)
-   {
-     OK = false;
-   }
-   else switch (PQresultStatus(result))
-   {
-     case PGRES_COMMAND_OK:
-     case PGRES_TUPLES_OK:
-     case PGRES_COPY_IN:
-        /* Fine, do nothing */
-        break;
-
-     case PGRES_COPY_OUT:
-        /* keep cancel connection for copy out state */
-        SetCancelConn();
-        break;
-
-     default:
-        OK = false;
-        break;
-   }
+       OK = false;
+   else
+       switch (PQresultStatus(result))
+       {
+           case PGRES_COMMAND_OK:
+           case PGRES_TUPLES_OK:
+           case PGRES_COPY_IN:
+               /* Fine, do nothing */
+               break;
+
+           case PGRES_COPY_OUT:
+               /* keep cancel connection for copy out state */
+               SetCancelConn();
+               break;
+
+           default:
+               OK = false;
+               break;
+       }
 
-   if (!OK) 
+   if (!OK)
    {
        CheckConnection();
        psql_error("%s", PQerrorMessage(pset.db));
@@ -365,7 +367,7 @@ PGresult *
 PSQLexec(const char *query, bool start_xact)
 {
    PGresult   *res;
-   int echo_hidden;
+   int         echo_hidden;
 
    if (!pset.db)
    {
@@ -438,41 +440,38 @@ PrintNotifications(void)
  *
  * Returns true if successful, false otherwise.
  */
-static bool 
+static bool
 PrintQueryTuples(const PGresult *results)
 {
-               /* write output to \g argument, if any */
-               if (pset.gfname)
-               {
-                   FILE       *queryFout_copy = pset.queryFout;
-                   bool        queryFoutPipe_copy = pset.queryFoutPipe;
+   /* write output to \g argument, if any */
+   if (pset.gfname)
+   {
+       FILE       *queryFout_copy = pset.queryFout;
+       bool        queryFoutPipe_copy = pset.queryFoutPipe;
 
-                   pset.queryFout = stdout;    /* so it doesn't get
-                                                * closed */
+       pset.queryFout = stdout;    /* so it doesn't get closed */
 
-                   /* open file/pipe */
-                   if (!setQFout(pset.gfname))
-                   {
-                       pset.queryFout = queryFout_copy;
-                       pset.queryFoutPipe = queryFoutPipe_copy;
+       /* open file/pipe */
+       if (!setQFout(pset.gfname))
+       {
+           pset.queryFout = queryFout_copy;
+           pset.queryFoutPipe = queryFoutPipe_copy;
            return false;
-                   }
+       }
 
-                   printQuery(results, &pset.popt, pset.queryFout);
+       printQuery(results, &pset.popt, pset.queryFout);
 
-                   /* close file/pipe, restore old setting */
-                   setQFout(NULL);
+       /* close file/pipe, restore old setting */
+       setQFout(NULL);
 
-                   pset.queryFout = queryFout_copy;
-                   pset.queryFoutPipe = queryFoutPipe_copy;
+       pset.queryFout = queryFout_copy;
+       pset.queryFoutPipe = queryFoutPipe_copy;
 
-                   free(pset.gfname);
-                   pset.gfname = NULL;
-               }
-               else
-               {
-                   printQuery(results, &pset.popt, pset.queryFout);
-               }
+       free(pset.gfname);
+       pset.gfname = NULL;
+   }
+   else
+       printQuery(results, &pset.popt, pset.queryFout);
 
    return true;
 }
@@ -487,65 +486,64 @@ PrintQueryTuples(const PGresult *results)
  * Returns true if the query executed successfully, false otherwise.
  */
 static bool
-PrintQueryResults(PGresult *results, 
-       const TimevalStruct *before, 
-       const TimevalStruct *after)
+PrintQueryResults(PGresult *results,
+                 const TimevalStruct * before,
+                 const TimevalStruct * after)
 {
-   bool    success = false;
+   bool        success = false;
 
-   if (!results) 
-     return false;
+   if (!results)
+       return false;
 
    switch (PQresultStatus(results))
    {
        case PGRES_TUPLES_OK:
            success = PrintQueryTuples(results);
-               break;
-           case PGRES_EMPTY_QUERY:
+           break;
+       case PGRES_EMPTY_QUERY:
+           success = true;
+           break;
+       case PGRES_COMMAND_OK:
+           {
+               char        buf[10];
+
                success = true;
-               break;
-           case PGRES_COMMAND_OK:
+               sprintf(buf, "%u", (unsigned int) PQoidValue(results));
+               if (!QUIET())
                {
-                   char        buf[10];
-
-                   success = true;
-                   sprintf(buf, "%u", (unsigned int) PQoidValue(results));
-                   if (!QUIET())
-                       {
-                           if (pset.popt.topt.format == PRINT_HTML)
-                           {
-                               fputs("<p>", pset.queryFout);
-                               html_escaped_print(PQcmdStatus(results), pset.queryFout);
-                               fputs("</p>\n", pset.queryFout);
-                           }
-                           else
-                           {
-                               fprintf(pset.queryFout, "%s\n", PQcmdStatus(results));
-                           }
-                       }
-                   SetVariable(pset.vars, "LASTOID", buf);
-                   break;
+                   if (pset.popt.topt.format == PRINT_HTML)
+                   {
+                       fputs("<p>", pset.queryFout);
+                       html_escaped_print(PQcmdStatus(results), pset.queryFout);
+                       fputs("</p>\n", pset.queryFout);
+                   }
+                   else
+                       fprintf(pset.queryFout, "%s\n", PQcmdStatus(results));
                }
-           case PGRES_COPY_OUT:
-               success = handleCopyOut(pset.db, pset.queryFout);
+               SetVariable(pset.vars, "LASTOID", buf);
                break;
+           }
+       case PGRES_COPY_OUT:
+           success = handleCopyOut(pset.db, pset.queryFout);
+           break;
 
-           case PGRES_COPY_IN:
-               if (pset.cur_cmd_interactive && !QUIET())
-                   puts(gettext("Enter data to be copied followed by a newline.\n"
-                                "End with a backslash and a period on a line by itself."));
+       case PGRES_COPY_IN:
+           if (pset.cur_cmd_interactive && !QUIET())
+               puts(gettext("Enter data to be copied followed by a newline.\n"
+                            "End with a backslash and a period on a line by itself."));
 
-               success = handleCopyIn(pset.db, pset.cur_cmd_source,
-                                      pset.cur_cmd_interactive ? get_prompt(PROMPT_COPY) : NULL);
-               break;
+           success = handleCopyIn(pset.db, pset.cur_cmd_source,
+             pset.cur_cmd_interactive ? get_prompt(PROMPT_COPY) : NULL);
+           break;
 
        default:
-               break;
-       }
+           break;
+   }
 
-       fflush(pset.queryFout);
+   fflush(pset.queryFout);
 
-   if (!CheckConnection()) return false;
+   if (!CheckConnection())
+       return false;
 
    /* Possible microtiming output */
    if (pset.timing && success)
@@ -572,8 +570,9 @@ bool
 SendQuery(const char *query)
 {
    PGresult   *results;
-   TimevalStruct before, after;
-   bool OK;
+   TimevalStruct before,
+               after;
+   bool        OK;
 
    if (!pset.db)
    {
@@ -599,7 +598,7 @@ SendQuery(const char *query)
        puts(query);
        fflush(stdout);
    }
-   
+
    SetCancelConn();
 
    if (PQtransactionStatus(pset.db) == PQTRANS_IDLE &&
@@ -636,7 +635,7 @@ SendQuery(const char *query)
 static bool
 is_transact_command(const char *query)
 {
-   int     wordlen;
+   int         wordlen;
 
    /*
     * First we must advance over any whitespace and comments.
@@ -693,13 +692,14 @@ is_transact_command(const char *query)
 }
 
 
-char parse_char(char **buf)
+char
+parse_char(char **buf)
 {
-  long l;
+   long        l;
 
-  l = strtol(*buf, buf, 0);
-  --*buf;
-  return (char)l;
+   l = strtol(*buf, buf, 0);
+   --*buf;
+   return (char) l;
 }
 
 
index d45fecc539cb4df8cb3faf0109c4d91a01e69cf4..6694624cad57c5c7196ffc8d8f03004aab2d2c69 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/copy.c,v 1.31 2003/07/23 08:47:39 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/copy.c,v 1.32 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "copy.h"
@@ -28,8 +28,8 @@
 
 #ifdef WIN32
 #define strcasecmp(x,y) stricmp(x,y)
-#define    __S_ISTYPE(mode, mask)  (((mode) & S_IFMT) == (mask))
-#define    S_ISDIR(mode)    __S_ISTYPE((mode), S_IFDIR)
+#define __S_ISTYPE(mode, mask) (((mode) & S_IFMT) == (mask))
+#define S_ISDIR(mode)   __S_ISTYPE((mode), S_IFDIR)
 #endif
 
 /*
@@ -142,8 +142,9 @@ parse_slash_copy(const char *args)
        goto error;
 
    /*
-    * strtokx() will not have returned a multi-character token starting with
-    * '.', so we don't need strcmp() here.  Likewise for '(', etc, below.
+    * strtokx() will not have returned a multi-character token starting
+    * with '.', so we don't need strcmp() here.  Likewise for '(', etc,
+    * below.
     */
    if (token[0] == '.')
    {
@@ -188,8 +189,7 @@ parse_slash_copy(const char *args)
    }
 
    /*
-    * Allows old COPY syntax for backward compatibility
-    * 2002-06-19
+    * Allows old COPY syntax for backward compatibility 2002-06-19
     */
    if (strcasecmp(token, "with") == 0)
    {
@@ -227,8 +227,7 @@ parse_slash_copy(const char *args)
                    0, false, pset.encoding);
 
    /*
-    * Allows old COPY syntax for backward compatibility
-    * 2002-06-19
+    * Allows old COPY syntax for backward compatibility 2002-06-19
     */
    if (token && strcasecmp(token, "using") == 0)
    {
index 70264a4487cac2e2cd17c18384f7eb7a58753d27..4679402282f91b0819d5f4a70040399055eb86c7 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.81 2003/07/27 03:32:26 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.82 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "describe.h"
@@ -139,10 +139,10 @@ describeFunctions(const char *pattern, bool verbose)
    initPQExpBuffer(&buf);
 
    printfPQExpBuffer(&buf,
-        "SELECT CASE WHEN p.proretset THEN 'setof ' ELSE '' END ||\n"
-                 "  pg_catalog.format_type(p.prorettype, NULL) as \"%s\",\n"
-                 "  n.nspname as \"%s\",\n"
-                 "  p.proname as \"%s\",\n"
+           "SELECT CASE WHEN p.proretset THEN 'setof ' ELSE '' END ||\n"
+             "  pg_catalog.format_type(p.prorettype, NULL) as \"%s\",\n"
+                     "  n.nspname as \"%s\",\n"
+                     "  p.proname as \"%s\",\n"
                  "  pg_catalog.oidvectortypes(p.proargtypes) as \"%s\"",
                      _("Result data type"), _("Schema"), _("Name"),
                      _("Argument data types"));
@@ -723,7 +723,7 @@ describeOneTableDetails(const char *schemaname,
    /* Get column info (index requires additional checks) */
    printfPQExpBuffer(&buf, "SELECT a.attname,");
    appendPQExpBuffer(&buf, "\n  pg_catalog.format_type(a.atttypid, a.atttypmod),"
-                     "\n  (SELECT substring(d.adsrc for 128) FROM pg_catalog.pg_attrdef d"
+   "\n  (SELECT substring(d.adsrc for 128) FROM pg_catalog.pg_attrdef d"
                      "\n   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),"
                      "\n  a.attnotnull, a.attnum");
    if (verbose)
@@ -765,7 +765,7 @@ describeOneTableDetails(const char *schemaname,
    {
        /* Name */
 #ifdef WIN32
-       cells[i * cols + 0] = mbvalidate(PQgetvalue(res, i, 0)); 
+       cells[i * cols + 0] = mbvalidate(PQgetvalue(res, i, 0));
 #else
        cells[i * cols + 0] = PQgetvalue(res, i, 0);    /* don't free this
                                                         * afterwards */
@@ -962,7 +962,7 @@ describeOneTableDetails(const char *schemaname,
                    foreignkey_count = 0,
                    rule_count = 0,
                    trigger_count = 0,
-                   inherits_count = 0;
+                   inherits_count = 0;
        int         count_footers = 0;
 
        /* count indexes */
@@ -1023,7 +1023,7 @@ describeOneTableDetails(const char *schemaname,
        if (tableinfo.triggers)
        {
            printfPQExpBuffer(&buf,
-                             "SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid)\n"
+                "SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid)\n"
                              "FROM pg_catalog.pg_trigger t\n"
                              "WHERE t.tgrelid = '%s' "
                              "and (not tgisconstraint "
@@ -1079,7 +1079,8 @@ describeOneTableDetails(const char *schemaname,
                              * sizeof(*footers));
 
        /* print indexes */
-       if (index_count > 0) {
+       if (index_count > 0)
+       {
            printfPQExpBuffer(&buf, _("Indexes:"));
            footers[count_footers++] = xstrdup(buf.data);
            for (i = 0; i < index_count; i++)
@@ -1093,11 +1094,11 @@ describeOneTableDetails(const char *schemaname,
 
                /* Label as primary key or unique (but not both) */
                appendPQExpBuffer(&buf,
-                                 strcmp(PQgetvalue(result1, i, 1), "t") == 0
+                             strcmp(PQgetvalue(result1, i, 1), "t") == 0
                                  ? _(" primary key,") :
-                                 (strcmp(PQgetvalue(result1, i, 2), "t") == 0
-                                  ? _(" unique,")
-                                  : ""));
+                            (strcmp(PQgetvalue(result1, i, 2), "t") == 0
+                             ? _(" unique,")
+                             : ""));
 
                /* Everything after "USING" is echoed verbatim */
                indexdef = PQgetvalue(result1, i, 3);
@@ -1112,7 +1113,8 @@ describeOneTableDetails(const char *schemaname,
        }
 
        /* print check constraints */
-       if (check_count > 0) {
+       if (check_count > 0)
+       {
            printfPQExpBuffer(&buf, _("Check constraints:"));
            footers[count_footers++] = xstrdup(buf.data);
            for (i = 0; i < check_count; i++)
@@ -1126,7 +1128,8 @@ describeOneTableDetails(const char *schemaname,
        }
 
        /* print foreign key constraints */
-       if (foreignkey_count > 0) {
+       if (foreignkey_count > 0)
+       {
            printfPQExpBuffer(&buf, _("Foreign-key constraints:"));
            footers[count_footers++] = xstrdup(buf.data);
            for (i = 0; i < foreignkey_count; i++)
@@ -1140,7 +1143,8 @@ describeOneTableDetails(const char *schemaname,
        }
 
        /* print rules */
-       if (rule_count > 0) {
+       if (rule_count > 0)
+       {
            printfPQExpBuffer(&buf, _("Rules:"));
            footers[count_footers++] = xstrdup(buf.data);
            for (i = 0; i < rule_count; i++)
@@ -1158,7 +1162,8 @@ describeOneTableDetails(const char *schemaname,
        }
 
        /* print triggers */
-       if (trigger_count > 0) {
+       if (trigger_count > 0)
+       {
            printfPQExpBuffer(&buf, _("Triggers:"));
            footers[count_footers++] = xstrdup(buf.data);
            for (i = 0; i < trigger_count; i++)
@@ -1368,9 +1373,9 @@ listTables(const char *tabtypes, const char *pattern, bool verbose)
 
    /*
     * If showSystem is specified, show only system objects (those in
-    * pg_catalog).  Otherwise, suppress system objects, including
-    * those in pg_catalog and pg_toast.  (We don't want to hide temp
-    * tables though.)
+    * pg_catalog).  Otherwise, suppress system objects, including those
+    * in pg_catalog and pg_toast.  (We don't want to hide temp tables
+    * though.)
     */
    if (showSystem)
        appendPQExpBuffer(&buf, "      AND n.nspname = 'pg_catalog'\n");
@@ -1476,11 +1481,11 @@ listConversions(const char *pattern)
    printfPQExpBuffer(&buf,
                      "SELECT n.nspname AS \"%s\",\n"
                      "       c.conname AS \"%s\",\n"
-                     "       pg_catalog.pg_encoding_to_char(c.conforencoding) AS \"%s\",\n"
-                     "       pg_catalog.pg_encoding_to_char(c.contoencoding) AS \"%s\",\n"
+   "       pg_catalog.pg_encoding_to_char(c.conforencoding) AS \"%s\",\n"
+   "       pg_catalog.pg_encoding_to_char(c.contoencoding) AS \"%s\",\n"
                      "       CASE WHEN c.condefault THEN '%s'\n"
                      "       ELSE '%s' END AS \"%s\"\n"
-                     "FROM pg_catalog.pg_conversion c, pg_catalog.pg_namespace n\n"
+          "FROM pg_catalog.pg_conversion c, pg_catalog.pg_namespace n\n"
                      "WHERE n.oid = c.connamespace\n",
                      _("Schema"),
                      _("Name"),
@@ -1525,8 +1530,8 @@ listCasts(const char *pattern)
    initPQExpBuffer(&buf);
 /* NEED LEFT JOIN FOR BINARY CASTS */
    printfPQExpBuffer(&buf,
-                     "SELECT pg_catalog.format_type(castsource, NULL) AS \"%s\",\n"
-                     "       pg_catalog.format_type(casttarget, NULL) AS \"%s\",\n"
+          "SELECT pg_catalog.format_type(castsource, NULL) AS \"%s\",\n"
+          "       pg_catalog.format_type(casttarget, NULL) AS \"%s\",\n"
                      "       CASE WHEN castfunc = 0 THEN '%s'\n"
                      "            ELSE p.proname\n"
                      "       END as \"%s\",\n"
@@ -1534,7 +1539,7 @@ listCasts(const char *pattern)
                      "            WHEN c.castcontext = 'a' THEN '%s'\n"
                      "            ELSE '%s'\n"
                      "       END as \"%s\"\n"
-                     "FROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
+            "FROM pg_catalog.pg_cast c LEFT JOIN pg_catalog.pg_proc p\n"
                      "     ON c.castfunc = p.oid\n"
                      "ORDER BY 1, 2",
                      _("Source type"),
@@ -1576,7 +1581,7 @@ listSchemas(const char *pattern)
    printfPQExpBuffer(&buf,
                      "SELECT n.nspname AS \"%s\",\n"
                      "       u.usename AS \"%s\"\n"
-                     "FROM pg_catalog.pg_namespace n LEFT JOIN pg_catalog.pg_user u\n"
+       "FROM pg_catalog.pg_namespace n LEFT JOIN pg_catalog.pg_user u\n"
                      "       ON n.nspowner=u.usesysid\n",
                      _("Name"),
                      _("Owner"));
index a884beb2e661e4e0a84db0f1b5ac82c1c60d1948..4b59a3af5fd32b2cc35a2e05f87fe11de31210ce 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2003 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.75 2003/07/25 21:48:45 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/help.c,v 1.76 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "common.h"
@@ -173,7 +173,7 @@ slashUsage(unsigned short int pager)
     */
    fprintf(output, _("General\n"));
    fprintf(output, _("  \\c[onnect] [DBNAME|- [USER]]\n"
-                     "                 connect to new database (currently \"%s\")\n"),
+       "                 connect to new database (currently \"%s\")\n"),
            PQdb(pset.db));
    fprintf(output, _("  \\cd [DIR]      change the current working directory\n"));
    fprintf(output, _("  \\copyright     show PostgreSQL usage and distribution terms\n"));
@@ -203,7 +203,7 @@ slashUsage(unsigned short int pager)
    fprintf(output, _("  \\i FILE        execute commands from file\n"));
    fprintf(output, _("  \\o [FILE]      send all query results to file or |pipe\n"));
    fprintf(output, _("  \\qecho [STRING]\n"
-                     "                 write string to query output stream (see \\o)\n"));
+   "                 write string to query output stream (see \\o)\n"));
    fprintf(output, "\n");
 
    fprintf(output, _("Informational\n"));
@@ -235,7 +235,7 @@ slashUsage(unsigned short int pager)
    fprintf(output, _("  \\pset NAME [VALUE]\n"
                      "                 set table output option\n"
                      "                 (NAME := {format|border|expanded|fieldsep|null|recordsep|\n"
-                     "                 tuples_only|title|tableattr|pager})\n"));
+             "                 tuples_only|title|tableattr|pager})\n"));
    fprintf(output, _("  \\t             show only rows (currently %s)\n"),
            ON(pset.popt.topt.tuples_only));
    fprintf(output, _("  \\T [STRING]    set HTML <table> tag attributes, or unset if none\n"));
@@ -274,7 +274,7 @@ helpSQL(const char *topic, unsigned short int pager)
    {
        int         i;
        int         items_per_column = (QL_HELP_COUNT + 2) / 3;
-       FILE        *output;
+       FILE       *output;
 
        output = PageOutput(items_per_column + 1, pager);
 
@@ -283,8 +283,8 @@ helpSQL(const char *topic, unsigned short int pager)
        for (i = 0; i < items_per_column; i++)
        {
            fprintf(output, "  %-26s%-26s",
-                  VALUE_OR_NULL(QL_HELP[i].cmd),
-                  VALUE_OR_NULL(QL_HELP[i + items_per_column].cmd));
+                   VALUE_OR_NULL(QL_HELP[i].cmd),
+                   VALUE_OR_NULL(QL_HELP[i + items_per_column].cmd));
            if (i + 2 * items_per_column < QL_HELP_COUNT)
                fprintf(output, "%-26s",
                   VALUE_OR_NULL(QL_HELP[i + 2 * items_per_column].cmd));
index b220ed894188855088f58fdd5d8bc2574ef7b765..9ebc1dc7f80b95902bd6f513cda63fa5f2ab1a51 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/input.c,v 1.26 2003/07/27 03:32:26 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/input.c,v 1.27 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "input.h"
@@ -27,12 +27,11 @@ static bool useHistory;
 
 enum histcontrol
 {
-  hctl_none = 0,
-  hctl_ignorespace = 1,
-  hctl_ignoredups = 2,
-  hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups
+   hctl_none = 0,
+   hctl_ignorespace = 1,
+   hctl_ignoredups = 2,
+   hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups
 };
-
 #endif
 
 #ifdef HAVE_ATEXIT
@@ -43,16 +42,17 @@ static void finishInput(void);
 static void finishInput(int, void *);
 #endif
 
-#define PSQLHISTORY    ".psql_history"
+#define PSQLHISTORY ".psql_history"
 
 
 #ifdef WIN32
-   /*
-    * translate DOS console character set into ANSI, needed e.g. for
-    * German umlauts
-    */
-   if (GetVariableBool(pset.vars, "WIN32_CONSOLE"))
-       OemToChar(s, s);
+
+ /*
+  * translate DOS console character set into ANSI, needed e.g. for German
+  * umlauts
+  */
+if (GetVariableBool(pset.vars, "WIN32_CONSOLE"))
+   OemToChar(s, s);
 #endif
 
 #ifdef USE_READLINE
@@ -64,11 +64,16 @@ GetHistControlConfig(void)
 
    var = GetVariable(pset.vars, "HISTCONTROL");
 
-   if (!var)                                               HC = hctl_none;
-   else if     (strcmp(var, "ignorespace") == 0)   HC = hctl_ignorespace;
-   else if     (strcmp(var, "ignoredups") == 0)        HC = hctl_ignoredups;
-   else if (strcmp(var, "ignoreboth") == 0)        HC = hctl_ignoreboth;
-   else                                                        HC = hctl_none;
+   if (!var)
+       HC = hctl_none;
+   else if (strcmp(var, "ignorespace") == 0)
+       HC = hctl_ignorespace;
+   else if (strcmp(var, "ignoredups") == 0)
+       HC = hctl_ignoredups;
+   else if (strcmp(var, "ignoreboth") == 0)
+       HC = hctl_ignoreboth;
+   else
+       HC = hctl_none;
 
    return HC;
 }
@@ -111,9 +116,9 @@ gets_interactive(const char *prompt)
        HC = GetHistControlConfig();
 
        if (((HC & hctl_ignorespace) && s[0] == ' ') ||
-           ((HC & hctl_ignoredups) && prev_hist && strcmp(s, prev_hist) == 0))
-   {
-         /* Ignore this line as far as history is concerned */
+           ((HC & hctl_ignoredups) && prev_hist && strcmp(s, prev_hist) == 0))
+       {
+           /* Ignore this line as far as history is concerned */
        }
        else
        {
@@ -216,7 +221,7 @@ saveHistory(char *fname)
    if (useHistory && fname)
    {
        if (write_history(fname) == 0)
-       return true;
+           return true;
 
        psql_error("could not save history to file \"%s\": %s\n", fname, strerror(errno));
    }
@@ -244,11 +249,12 @@ finishInput(int exitstatus, void *arg)
        if (home)
        {
            psql_history = (char *) malloc(strlen(home) + 1 +
-                                   strlen(PSQLHISTORY) + 1);
+                                          strlen(PSQLHISTORY) + 1);
            if (psql_history)
            {
-               int hist_size;
-               hist_size = GetVariableNum(pset.vars,"HISTSIZE",-1,-1,true);
+               int         hist_size;
+
+               hist_size = GetVariableNum(pset.vars, "HISTSIZE", -1, -1, true);
 
                if (hist_size >= 0)
                    stifle_history(hist_size);
index a565d20478479e7ff3e2e6496c99c43df4794068..720912b5b337fbcb1089f332b9aa0167585c20ed 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/large_obj.c,v 1.27 2003/06/28 00:12:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/large_obj.c,v 1.28 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "large_obj.h"
@@ -20,7 +20,7 @@
 
 
 /*
- * Prepare to do a large-object operation.  We *must* be inside a transaction
+ * Prepare to do a large-object operation. We *must* be inside a transaction
  * block for all these operations, so start one if needed.
  *
  * Returns TRUE if okay, FALSE if failed.  *own_transaction is set to indicate
@@ -241,7 +241,7 @@ do_lo_unlink(const char *loid_arg)
    if (is_superuser())
    {
        snprintf(buf, sizeof(buf),
-                "DELETE FROM pg_catalog.pg_description WHERE objoid = '%u' "
+            "DELETE FROM pg_catalog.pg_description WHERE objoid = '%u' "
                 "AND classoid = 'pg_catalog.pg_largeobject'::regclass",
                 loid);
        if (!(res = PSQLexec(buf, false)))
index 32c03cf24f21956975d645d84689708fca364ed3..d41627c132a7d71f295f9ccb454f687545a433d7 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.55 2003/03/21 03:28:29 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.56 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "mainloop.h"
@@ -43,8 +43,8 @@ MainLoop(FILE *source)
    volatile backslashResult slashCmdStatus = CMD_UNKNOWN;
 
    bool        success;
-   volatile char in_quote = 0;     /* == 0 for no in_quote */
-   volatile int in_xcomment = 0;   /* in extended comment */
+   volatile char in_quote = 0; /* == 0 for no in_quote */
+   volatile int in_xcomment = 0;       /* in extended comment */
    volatile int paren_level = 0;
    unsigned int query_start;
    volatile int count_eof = 0;
@@ -152,33 +152,34 @@ MainLoop(FILE *source)
            paren_level = 0;
            slashCmdStatus = CMD_UNKNOWN;
        }
-           /*
-            * otherwise, set interactive prompt if necessary and get
-            * another line
-            */
+
+       /*
+        * otherwise, set interactive prompt if necessary and get another
+        * line
+        */
        else if (pset.cur_cmd_interactive)
-           {
-               int         prompt_status;
+       {
+           int         prompt_status;
 
            fflush(stdout);
 
-               if (in_quote && in_quote == '\'')
-                   prompt_status = PROMPT_SINGLEQUOTE;
-               else if (in_quote && in_quote == '"')
-                   prompt_status = PROMPT_DOUBLEQUOTE;
-               else if (in_xcomment)
-                   prompt_status = PROMPT_COMMENT;
-               else if (paren_level)
-                   prompt_status = PROMPT_PAREN;
-               else if (query_buf->len > 0)
-                   prompt_status = PROMPT_CONTINUE;
-               else
-                   prompt_status = PROMPT_READY;
-
-               line = gets_interactive(get_prompt(prompt_status));
-           }
+           if (in_quote && in_quote == '\'')
+               prompt_status = PROMPT_SINGLEQUOTE;
+           else if (in_quote && in_quote == '"')
+               prompt_status = PROMPT_DOUBLEQUOTE;
+           else if (in_xcomment)
+               prompt_status = PROMPT_COMMENT;
+           else if (paren_level)
+               prompt_status = PROMPT_PAREN;
+           else if (query_buf->len > 0)
+               prompt_status = PROMPT_CONTINUE;
            else
-               line = gets_fromFile(source);
+               prompt_status = PROMPT_READY;
+
+           line = gets_interactive(get_prompt(prompt_status));
+       }
+       else
+           line = gets_fromFile(source);
 
 
        /* Setting this will not have effect until next line. */
@@ -199,7 +200,7 @@ MainLoop(FILE *source)
                /* This tries to mimic bash's IGNOREEOF feature. */
                count_eof++;
 
-               if (count_eof < GetVariableNum(pset.vars,"IGNOREEOF",0,10,false))
+               if (count_eof < GetVariableNum(pset.vars, "IGNOREEOF", 0, 10, false))
                {
                    if (!QUIET())
                        printf(gettext("Use \"\\q\" to leave %s.\n"), pset.progname);
@@ -208,10 +209,10 @@ MainLoop(FILE *source)
 
                puts(QUIET() ? "" : "\\q");
            }
-               break;
+           break;
        }
 
-           count_eof = 0;
+       count_eof = 0;
 
        pset.lineno++;
 
@@ -274,7 +275,7 @@ MainLoop(FILE *source)
            else if (line[i] == '/' && line[i + thislen] == '*')
            {
                in_xcomment++;
-               if (in_xcomment == 1) 
+               if (in_xcomment == 1)
                    ADVANCE_1;
            }
 
@@ -283,7 +284,7 @@ MainLoop(FILE *source)
            {
                if (line[i] == '*' && line[i + thislen] == '/' &&
                    !--in_xcomment)
-                       ADVANCE_1;
+                   ADVANCE_1;
            }
 
            /* start of quote? */
@@ -489,10 +490,10 @@ MainLoop(FILE *source)
        if (!pset.cur_cmd_interactive)
        {
            if (!success && die_on_error)
-           successResult = EXIT_USER;
-       /* Have we lost the db connection? */
+               successResult = EXIT_USER;
+           /* Have we lost the db connection? */
            else if (!pset.db)
-           successResult = EXIT_BADCONN;
+               successResult = EXIT_BADCONN;
        }
    }                           /* while !endoffile/session */
 
index 437d7271c0d45f37d3d38febf50c4e756d1c4f6d..f4dacd2a01dacadc8ffdc4a9028e99b647c2fdb4 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/mbprint.c,v 1.7 2003/07/27 03:32:26 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/mbprint.c,v 1.8 2003/08/04 00:43:29 momjian Exp $
  */
 
 #include "postgres_fe.h"
@@ -335,13 +335,15 @@ mbvalidate(unsigned char *pwcs, int encoding)
    else
    {
 #ifdef WIN32
+
        /*
-        * translate characters to DOS console encoding, e.g. needed
-        * for German umlauts
+        * translate characters to DOS console encoding, e.g. needed for
+        * German umlauts
         */
        if (GetVariableBool(pset.vars, "WIN32_CONSOLE"))
            CharToOem(pwcs, pwcs);
 #endif
+
        /*
         * other encodings needing validation should add their own
         * routines here
index 2f71aad9bc99f0b7a836d1fa80eec2090da1b98e..b2bc9afb6dc9120823be61e8f3e6792de3a02f85 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2003 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/print.c,v 1.40 2003/07/25 21:48:45 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/print.c,v 1.41 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "common.h"
@@ -306,7 +306,7 @@ print_aligned_text(const char *title, const char *const * headers,
 
        for (i = 0; i < col_count; i++)
        {
-           unsigned int        nbspace;
+           unsigned int nbspace;
 
            nbspace = widths[i] - head_w[i];
 
@@ -396,7 +396,7 @@ print_aligned_text(const char *title, const char *const * headers,
 
 static void
 print_aligned_vertical(const char *title, const char *const * headers,
-                      const char *const * cells, const char *const * footers,
+                 const char *const * cells, const char *const * footers,
                       bool opt_barebones, unsigned short int opt_border,
                       int encoding, FILE *fout)
 {
@@ -660,7 +660,8 @@ const char *opt_align, bool opt_barebones, unsigned short int opt_border,
            fputs("  <tr valign=\"top\">\n", fout);
 
        fprintf(fout, "    <td align=\"%s\">", opt_align[(i) % col_count] == 'r' ? "right" : "left");
-       if ((*ptr)[strspn(*ptr, " \t")] == '\0')  /* is string only whitespace? */
+       if ((*ptr)[strspn(*ptr, " \t")] == '\0')        /* is string only
+                                                        * whitespace? */
            fputs("&nbsp; ", fout);
        else
            html_escaped_print(*ptr, fout);
@@ -734,7 +735,8 @@ const char *opt_align, bool opt_barebones, unsigned short int opt_border,
        fputs("</th>\n", fout);
 
        fprintf(fout, "    <td align=\"%s\">", opt_align[i % col_count] == 'r' ? "right" : "left");
-       if ((*ptr)[strspn(*ptr, " \t")] == '\0') /* is string only whitespace? */
+       if ((*ptr)[strspn(*ptr, " \t")] == '\0')        /* is string only
+                                                        * whitespace? */
            fputs("&nbsp; ", fout);
        else
            html_escaped_print(*ptr, fout);
@@ -1036,7 +1038,7 @@ printTable(const char *title,
 {
    const char *default_footer[] = {NULL};
    unsigned short int border = opt->border;
-   FILE        *output;
+   FILE       *output;
 
    if (opt->format == PRINT_NOTHING)
        return;
@@ -1049,9 +1051,9 @@ printTable(const char *title,
 
    if (fout == stdout)
    {
-       int col_count = 0,
-           row_count = 0,
-           lines;
+       int         col_count = 0,
+                   row_count = 0,
+                   lines;
        const char *const * ptr;
 
        /* rough estimate of columns and rows */
index a70e7858bbe741abb137968254ac81e82f185338..7d6377fd36f7cf1ac6ddcb73f96734e650a11fbb 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/print.h,v 1.17 2003/06/12 07:52:51 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/print.h,v 1.18 2003/08/04 00:43:29 momjian Exp $
  */
 #ifndef PRINT_H
 #define PRINT_H
@@ -32,8 +32,7 @@ typedef struct _printTableOpt
    bool        expanded;       /* expanded/vertical output (if supported
                                 * by output format) */
    unsigned short int pager;   /* use pager for output (if to stdout and
-                                * stdout is a tty)
-                                * 0=off 1=on 2=always */
+                                * stdout is a tty) 0=off 1=on 2=always */
    bool        tuples_only;    /* don't output headers, row counts, etc. */
    unsigned short int border;  /* Print a border around the table.
                                 * 0=none, 1=dividing lines, 2=full */
index 0df16d4b0c6b3a86eb73ad57fd6bf6bc0785f3fd..a202806926a739d2c0692f1ee3a36d12370e876a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.26 2003/06/28 00:12:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/prompt.c,v 1.27 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "prompt.h"
@@ -86,14 +86,14 @@ get_prompt(promptStatus_t status)
        case PROMPT_PAREN:
            prompt_name = "PROMPT2";
            break;
-       
+
        case PROMPT_COPY:
            prompt_name = "PROMPT3";
            break;
    }
 
    if (prompt_name)
-     prompt_string = GetVariable(pset.vars, prompt_name);
+       prompt_string = GetVariable(pset.vars, prompt_name);
 
    destination[0] = '\0';
 
@@ -112,16 +112,17 @@ get_prompt(promptStatus_t status)
                        strncpy(buf, PQdb(pset.db), MAX_PROMPT_SIZE);
                    break;
                case '~':
-                       if (pset.db)
-                       {
+                   if (pset.db)
+                   {
                        const char *var;
-                           if (strcmp(PQdb(pset.db), PQuser(pset.db)) == 0 ||
-                               ((var = getenv("PGDATABASE")) && strcmp(var, PQdb(pset.db)) == 0))
-                               strcpy(buf, "~");
-                           else
-                               strncpy(buf, PQdb(pset.db), MAX_PROMPT_SIZE);
-                       }
-                       break;
+
+                       if (strcmp(PQdb(pset.db), PQuser(pset.db)) == 0 ||
+                           ((var = getenv("PGDATABASE")) && strcmp(var, PQdb(pset.db)) == 0))
+                           strcpy(buf, "~");
+                       else
+                           strncpy(buf, PQdb(pset.db), MAX_PROMPT_SIZE);
+                   }
+                   break;
 
                    /* DB server hostname (long/short) */
                case 'M':
@@ -172,7 +173,7 @@ get_prompt(promptStatus_t status)
                case '7':
                case '8':
                case '9':
-                   *buf = parse_char((char **)&p);
+                   *buf = parse_char((char **) &p);
                    break;
 
                case 'R':
@@ -210,22 +211,23 @@ get_prompt(promptStatus_t status)
                case 'T':
                    if (!pset.db)
                        buf[0] = '?';
-                   else switch (PQtransactionStatus(pset.db))
-                   {
-                       case PQTRANS_IDLE:
-                           buf[0] = '\0';
-                           break;
-                       case PQTRANS_ACTIVE:
-                       case PQTRANS_INTRANS:
-                           buf[0] = '*';
-                           break;
-                       case PQTRANS_INERROR:
-                           buf[0] = '!';
-                           break;
-                       default:
-                           buf[0] = '?';
-                           break;
-                   }
+                   else
+                       switch (PQtransactionStatus(pset.db))
+                       {
+                           case PQTRANS_IDLE:
+                               buf[0] = '\0';
+                               break;
+                           case PQTRANS_ACTIVE:
+                           case PQTRANS_INTRANS:
+                               buf[0] = '*';
+                               break;
+                           case PQTRANS_INERROR:
+                               buf[0] = '!';
+                               break;
+                           default:
+                               buf[0] = '?';
+                               break;
+                       }
                    break;
 
                case '?':
index 0a9eed182bfd8bece489c207edd32ed48416b4d1..e08cb94c883b406594625d0acb180fc6a9f2ef6c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/Attic/sprompt.c,v 1.5 2003/07/27 03:32:26 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/sprompt.c,v 1.6 2003/08/04 00:43:29 momjian Exp $
  */
 
 
@@ -46,10 +46,11 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
 #ifdef HAVE_TERMIOS_H
    struct termios t_orig,
                t;
+
 #else
 #ifdef WIN32
-   HANDLE t;
-   LPDWORD t_orig;
+   HANDLE      t;
+   LPDWORD     t_orig;
 #endif
 #endif
 
@@ -88,14 +89,14 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
    if (!echo)
    {
        /* get a new handle to turn echo off */
-       t_orig=(LPDWORD)malloc(sizeof(DWORD));
-       t=GetStdHandle(STD_INPUT_HANDLE);
+       t_orig = (LPDWORD) malloc(sizeof(DWORD));
+       t = GetStdHandle(STD_INPUT_HANDLE);
 
        /* save the old configuration first */
        GetConsoleMode(t, t_orig);
 
        /* set to the new mode */
-       SetConsoleMode(t, ENABLE_LINE_INPUT|ENABLE_PROCESSED_INPUT);
+       SetConsoleMode(t, ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT);
    }
 #endif
 #endif
index ab33c7f4174d1d1be1e4597cdbe9b080d364f223..c608ea6d45282fa63a13a7bc02735e1d3e11e443 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.76 2003/07/28 00:14:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.77 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 
@@ -23,7 +23,7 @@
 
 #ifndef HAVE_GETOPT_LONG
 #include "getopt_long.h"
-int optreset;
+int            optreset;
 #endif
 
 #include <locale.h>
@@ -75,7 +75,7 @@ struct adhoc_opts
 };
 
 static void parse_psql_options(int argc, char *argv[],
-                              struct adhoc_opts * options);
+                  struct adhoc_opts * options);
 static void process_psqlrc(void);
 static void showVersion(void);
 
@@ -564,7 +564,7 @@ process_psqlrc(void)
    if (home)
    {
        psqlrc = malloc(strlen(home) + 1 + strlen(PSQLRC) + 1 +
-                strlen(PG_VERSION) + 1);
+                       strlen(PG_VERSION) + 1);
        if (!psqlrc)
        {
            fprintf(stderr, gettext("%s: out of memory\n"), pset.progname);
index b6ecf114fe1a46a7db76f52b370194aea5b12374..2e6ad05e8b415ff636732bdbb377ff40a495dbe9 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/stringutils.c,v 1.32 2003/03/10 22:28:19 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/stringutils.c,v 1.33 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 
@@ -28,11 +28,11 @@ static void strip_quotes(char *source, char quote, char escape, int encoding);
  * frammishes.
  *
  * s -         string to parse, if NULL continue parsing the last string
- * whitespace -    set of whitespace characters that separate tokens
+ * whitespace - set of whitespace characters that separate tokens
  * delim -     set of non-whitespace separator characters (or NULL)
  * quote -     set of characters that can quote a token (NULL if none)
  * escape -        character that can quote quotes (0 if none)
- * del_quotes -    if TRUE, strip quotes from the returned token, else return
+ * del_quotes - if TRUE, strip quotes from the returned token, else return
  *             it exactly as found in the string
  * encoding -  the active character-set encoding
  *
@@ -71,9 +71,10 @@ strtokx(const char *s,
    if (s)
    {
        free(storage);
+
        /*
         * We may need extra space to insert delimiter nulls for adjacent
-        * tokens.  2X the space is a gross overestimate, but it's
+        * tokens.  2X the space is a gross overestimate, but it's
         * unlikely that this code will be used on huge strings anyway.
         */
        storage = (char *) malloc(2 * strlen(s) + 1);
@@ -105,10 +106,10 @@ strtokx(const char *s,
    {
        /*
         * If not at end of string, we need to insert a null to terminate
-        * the returned token.  We can just overwrite the next character
-        * if it happens to be in the whitespace set ... otherwise move over
-        * the rest of the string to make room.  (This is why we allocated
-        * extra space above).
+        * the returned token.  We can just overwrite the next character
+        * if it happens to be in the whitespace set ... otherwise move
+        * over the rest of the string to make room.  (This is why we
+        * allocated extra space above).
         */
        p = start + 1;
        if (*p != '\0')
@@ -148,7 +149,7 @@ strtokx(const char *s,
 
        /*
         * If not at end of string, we need to insert a null to terminate
-        * the returned token.  See notes above.
+        * the returned token.  See notes above.
         */
        if (*p != '\0')
        {
@@ -171,10 +172,10 @@ strtokx(const char *s,
    }
 
    /*
-    * Otherwise no quoting character.  Scan till next whitespace,
-    * delimiter or quote.  NB: at this point, *start is known not to be
-    * '\0', whitespace, delim, or quote, so we will consume at least
-    * one character.
+    * Otherwise no quoting character.  Scan till next whitespace,
+    * delimiter or quote.  NB: at this point, *start is known not to be
+    * '\0', whitespace, delim, or quote, so we will consume at least one
+    * character.
     */
    offset = strcspn(start, whitespace);
 
@@ -197,8 +198,8 @@ strtokx(const char *s,
    p = start + offset;
 
    /*
-    * If not at end of string, we need to insert a null to terminate
-    * the returned token.  See notes above.
+    * If not at end of string, we need to insert a null to terminate the
+    * returned token.  See notes above.
     */
    if (*p != '\0')
    {
index a7e9fbca3d4d8fa2661b8bb932d7e981acc5c05c..5e6abe210774363ded676baf96bcbec8fd6ddfe1 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000-2002 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.82 2003/07/29 00:03:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.83 2003/08/04 00:43:29 momjian Exp $
  */
 
 /*----------------------------------------------------------------------
@@ -80,7 +80,7 @@ static char *create_command_generator(const char *text, int state);
 static char *complete_from_query(const char *text, int state);
 static char *complete_from_schema_query(const char *text, int state);
 static char *_complete_from_query(int is_schema_query,
-                                 const char *text, int state);
+                    const char *text, int state);
 static char *complete_from_const(const char *text, int state);
 static char *complete_from_list(const char *text, int state);
 
@@ -411,33 +411,34 @@ initialize_readline(void)
 typedef struct
 {
    char       *name;
-   int        with_schema;
+   int         with_schema;
    char       *query;
 } pgsql_thing_t;
 
 pgsql_thing_t words_after_create[] = {
    {"AGGREGATE", WITH_SCHEMA, Query_for_list_of_aggregates},
-   {"CAST", NO_SCHEMA, NULL},              /* Casts have complex structures for namees, so skip it */
+   {"CAST", NO_SCHEMA, NULL},  /* Casts have complex structures for
+                                * namees, so skip it */
    {"CONVERSION", NO_SCHEMA, "SELECT conname FROM pg_catalog.pg_conversion WHERE substr(conname,1,%d)='%s'"},
    {"DATABASE", NO_SCHEMA, Query_for_list_of_databases},
    {"DOMAIN", WITH_SCHEMA, Query_for_list_of_domains},
    {"FUNCTION", WITH_SCHEMA, Query_for_list_of_functions},
    {"GROUP", NO_SCHEMA, "SELECT groname FROM pg_catalog.pg_group WHERE substr(groname,1,%d)='%s'"},
    {"LANGUAGE", NO_SCHEMA, Query_for_list_of_languages},
-   {"INDEX", WITH_SCHEMA,  Query_for_list_of_indexes},
-   {"OPERATOR", NO_SCHEMA, NULL},          /* Querying for this is probably not such
-                                * a good idea. */
+   {"INDEX", WITH_SCHEMA, Query_for_list_of_indexes},
+   {"OPERATOR", NO_SCHEMA, NULL},      /* Querying for this is probably
+                                        * not such a good idea. */
    {"RULE", NO_SCHEMA, "SELECT rulename FROM pg_catalog.pg_rules WHERE substr(rulename,1,%d)='%s'"},
    {"SCHEMA", NO_SCHEMA, Query_for_list_of_schemas},
    {"SEQUENCE", WITH_SCHEMA, Query_for_list_of_sequences},
    {"TABLE", WITH_SCHEMA, Query_for_list_of_tables},
-   {"TEMP", NO_SCHEMA, NULL},              /* for CREATE TEMP TABLE ... */
+   {"TEMP", NO_SCHEMA, NULL},  /* for CREATE TEMP TABLE ... */
    {"TRIGGER", NO_SCHEMA, "SELECT tgname FROM pg_catalog.pg_trigger WHERE substr(tgname,1,%d)='%s'"},
-   {"TYPE", WITH_SCHEMA, Query_for_list_of_datatypes },
-   {"UNIQUE", NO_SCHEMA, NULL},            /* for CREATE UNIQUE INDEX ... */
-   {"USER", NO_SCHEMA,  Query_for_list_of_users},
+   {"TYPE", WITH_SCHEMA, Query_for_list_of_datatypes},
+   {"UNIQUE", NO_SCHEMA, NULL},    /* for CREATE UNIQUE INDEX ... */
+   {"USER", NO_SCHEMA, Query_for_list_of_users},
    {"VIEW", WITH_SCHEMA, Query_for_list_of_views},
-   {NULL, NO_SCHEMA, NULL}             /* end of list */
+   {NULL, NO_SCHEMA, NULL}     /* end of list */
 };
 
 
@@ -594,9 +595,9 @@ psql_completion(char *text, int start, int end)
    };
 
    static char *backslash_commands[] = {
-       "\\a", "\\connect", "\\C", "\\cd", "\\copy", "\\copyright", 
-       "\\d",  "\\da", "\\dc", "\\dC", "\\dd", "\\dD", "\\df", "\\di",
-       "\\dl", "\\dn", "\\do", "\\dp", "\\ds", "\\dS", "\\dt", "\\dT", 
+       "\\a", "\\connect", "\\C", "\\cd", "\\copy", "\\copyright",
+       "\\d", "\\da", "\\dc", "\\dC", "\\dd", "\\dD", "\\df", "\\di",
+       "\\dl", "\\dn", "\\do", "\\dp", "\\ds", "\\dS", "\\dt", "\\dT",
        "\\dv", "\\du",
        "\\e", "\\echo", "\\encoding",
        "\\f", "\\g", "\\h", "\\help", "\\H", "\\i", "\\l",
@@ -637,19 +638,22 @@ psql_completion(char *text, int start, int end)
 
 /* CREATE or DROP but not ALTER TABLE sth DROP */
    /* complete with something you can create or drop */
-   else if (strcasecmp(prev_wd, "CREATE") == 0 || 
+   else if (strcasecmp(prev_wd, "CREATE") == 0 ||
             (strcasecmp(prev_wd, "DROP") == 0 &&
-             strcasecmp(prev3_wd,"TABLE") != 0 ))
-        matches = completion_matches(text, create_command_generator);
+             strcasecmp(prev3_wd, "TABLE") != 0))
+       matches = completion_matches(text, create_command_generator);
 
 /* ALTER */
-    /* complete with what you can alter (TABLE, GROUP, USER, ...) 
-     * unless we're in ALTER TABLE sth ALTER*/
-    else if (strcasecmp(prev_wd, "ALTER") == 0  &&
-            strcasecmp(prev3_wd, "TABLE") != 0 )
+
+   /*
+    * complete with what you can alter (TABLE, GROUP, USER, ...) unless
+    * we're in ALTER TABLE sth ALTER
+    */
+   else if (strcasecmp(prev_wd, "ALTER") == 0 &&
+            strcasecmp(prev3_wd, "TABLE") != 0)
    {
        char       *list_ALTER[] = {"DATABASE", "GROUP", "SCHEMA", "TABLE",
-                                   "TRIGGER", "USER", NULL};
+       "TRIGGER", "USER", NULL};
 
        COMPLETE_WITH_LIST(list_ALTER);
    }
@@ -683,7 +687,7 @@ psql_completion(char *text, int start, int end)
             strcasecmp(prev2_wd, "TABLE") == 0)
    {
        char       *list_ALTER2[] = {"ADD", "ALTER", "DROP", "RENAME",
-                                    "OWNER TO", NULL};
+       "OWNER TO", NULL};
 
        COMPLETE_WITH_LIST(list_ALTER2);
    }
@@ -695,14 +699,15 @@ psql_completion(char *text, int start, int end)
 
    /* If we have TABLE <sth> DROP, provide COLUMN or CONSTRAINT */
    else if (strcasecmp(prev3_wd, "TABLE") == 0 &&
-            strcasecmp(prev_wd, "DROP")  == 0)
+            strcasecmp(prev_wd, "DROP") == 0)
    {
        char       *list_TABLEDROP[] = {"COLUMN", "CONSTRAINT", NULL};
+
        COMPLETE_WITH_LIST(list_TABLEDROP);
    }
    /* If we have TABLE <sth> DROP COLUMN, provide list of columns */
    else if (strcasecmp(prev4_wd, "TABLE") == 0 &&
-            strcasecmp(prev2_wd, "DROP") == 0 && 
+            strcasecmp(prev2_wd, "DROP") == 0 &&
             strcasecmp(prev_wd, "COLUMN") == 0)
        COMPLETE_WITH_ATTR(prev3_wd);
 
@@ -769,8 +774,8 @@ psql_completion(char *text, int start, int end)
    {
        char       *list_COMMENT[] =
        {"DATABASE", "INDEX", "RULE", "SCHEMA", "SEQUENCE", "TABLE",
-        "TYPE", "VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "OPERATOR",
-        "TRIGGER", "CONSTRAINT", "DOMAIN", NULL};
+           "TYPE", "VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "OPERATOR",
+       "TRIGGER", "CONSTRAINT", "DOMAIN", NULL};
 
        COMPLETE_WITH_LIST(list_COMMENT);
    }
@@ -849,7 +854,7 @@ psql_completion(char *text, int start, int end)
             strcasecmp(prev_wd, "ON") == 0)
    {
        char       *rule_events[] = {"SELECT", "UPDATE", "INSERT",
-                                    "DELETE", NULL};
+       "DELETE", NULL};
 
        COMPLETE_WITH_LIST(rule_events);
    }
@@ -966,10 +971,11 @@ psql_completion(char *text, int start, int end)
     * sequences, and indexes
     *
     * keywords DATABASE, FUNCTION, LANGUAGE, SCHEMA added to query result
-     * via UNION; seems to work intuitively
-     *
-     * Note: GRANT/REVOKE can get quite complex; tab-completion as implemented
-     * here will only work if the privilege list contains exactly one privilege
+    * via UNION; seems to work intuitively
+    *
+    * Note: GRANT/REVOKE can get quite complex; tab-completion as
+    * implemented here will only work if the privilege list contains
+    * exactly one privilege
     */
    else if ((strcasecmp(prev3_wd, "GRANT") == 0 ||
              strcasecmp(prev3_wd, "REVOKE") == 0) &&
@@ -977,30 +983,30 @@ psql_completion(char *text, int start, int end)
        COMPLETE_WITH_QUERY("SELECT relname FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "
                            " WHERE relkind in ('r','S','v')  "
                            "   AND substr(relname,1,%d)='%s' "
-                            "   AND pg_catalog.pg_table_is_visible(c.oid) "
+                         "   AND pg_catalog.pg_table_is_visible(c.oid) "
                            "   AND relnamespace = n.oid "
-                           "   AND n.nspname NOT IN ('pg_catalog', 'pg_toast') "
-                            " UNION "
-                            "SELECT 'DATABASE' AS relname "
-                            " UNION "
-                            "SELECT 'FUNCTION' AS relname "
-                            " UNION "
-                            "SELECT 'LANGUAGE' AS relname "
-                            " UNION "
-                            "SELECT 'SCHEMA' AS relname ");
+                   "   AND n.nspname NOT IN ('pg_catalog', 'pg_toast') "
+                           " UNION "
+                           "SELECT 'DATABASE' AS relname "
+                           " UNION "
+                           "SELECT 'FUNCTION' AS relname "
+                           " UNION "
+                           "SELECT 'LANGUAGE' AS relname "
+                           " UNION "
+                           "SELECT 'SCHEMA' AS relname ");
 
    /* Complete "GRANT/REVOKE * ON * " with "TO" */
-   else if ((strcasecmp(prev4_wd, "GRANT") == 0 || 
+   else if ((strcasecmp(prev4_wd, "GRANT") == 0 ||
              strcasecmp(prev4_wd, "REVOKE") == 0) &&
             strcasecmp(prev2_wd, "ON") == 0)
    {
-       if(strcasecmp(prev_wd, "DATABASE") == 0)
+       if (strcasecmp(prev_wd, "DATABASE") == 0)
            COMPLETE_WITH_QUERY(Query_for_list_of_databases);
-       else if(strcasecmp(prev_wd, "FUNCTION") == 0)
+       else if (strcasecmp(prev_wd, "FUNCTION") == 0)
            COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions);
-       else if(strcasecmp(prev_wd, "LANGUAGE") == 0)
+       else if (strcasecmp(prev_wd, "LANGUAGE") == 0)
            COMPLETE_WITH_QUERY(Query_for_list_of_languages);
-       else if(strcasecmp(prev_wd, "SCHEMA") == 0)
+       else if (strcasecmp(prev_wd, "SCHEMA") == 0)
            COMPLETE_WITH_QUERY(Query_for_list_of_schemas);
        else
            COMPLETE_WITH_CONST("TO");
@@ -1008,8 +1014,8 @@ psql_completion(char *text, int start, int end)
 
    /*
     * TODO: to complete with user name we need prev5_wd -- wait for a
-    * more general solution there
-     * same for GRANT <sth> ON { DATABASE | FUNCTION | LANGUAGE | SCHEMA } xxx TO
+    * more general solution there same for GRANT <sth> ON { DATABASE |
+    * FUNCTION | LANGUAGE | SCHEMA } xxx TO
     */
 
 /* INSERT */
@@ -1055,7 +1061,7 @@ psql_completion(char *text, int start, int end)
 /* LOCK */
    /* Complete LOCK [TABLE] with a list of tables */
    else if (strcasecmp(prev_wd, "LOCK") == 0 ||
-            (strcasecmp(prev_wd, "TABLE") == 0 &&
+            (strcasecmp(prev_wd, "TABLE") == 0 &&
              strcasecmp(prev2_wd, "LOCK") == 0))
        COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables);
 
@@ -1078,7 +1084,7 @@ psql_completion(char *text, int start, int end)
            "ROW SHARE MODE", "ROW EXCLUSIVE MODE",
            "SHARE UPDATE EXCLUSIVE MODE", "SHARE MODE",
            "SHARE ROW EXCLUSIVE MODE",
-           "EXCLUSIVE MODE", "ACCESS EXCLUSIVE MODE", NULL};
+       "EXCLUSIVE MODE", "ACCESS EXCLUSIVE MODE", NULL};
 
        COMPLETE_WITH_LIST(lock_modes);
    }
@@ -1188,9 +1194,9 @@ psql_completion(char *text, int start, int end)
        if (strcasecmp(prev2_wd, "DateStyle") == 0)
        {
            char       *my_list[] = {"ISO", "SQL", "Postgres", "German",
-                                    "YMD", "DMY", "MDY",
-                                    "US", "European", "NonEuropean",
-                                    "DEFAULT", NULL};
+               "YMD", "DMY", "MDY",
+               "US", "European", "NonEuropean",
+           "DEFAULT", NULL};
 
            COMPLETE_WITH_LIST(my_list);
        }
@@ -1289,7 +1295,7 @@ psql_completion(char *text, int start, int end)
    {
        char       *my_list[] = {"format", "border", "expanded",
            "null", "fieldsep", "tuples_only", "title", "tableattr", "pager",
-           "recordsep", NULL};
+       "recordsep", NULL};
 
        COMPLETE_WITH_LIST(my_list);
    }
@@ -1316,7 +1322,7 @@ psql_completion(char *text, int start, int end)
        for (i = 0; words_after_create[i].name; i++)
            if (strcasecmp(prev_wd, words_after_create[i].name) == 0)
            {
-               if(words_after_create[i].with_schema == WITH_SCHEMA)
+               if (words_after_create[i].with_schema == WITH_SCHEMA)
                    COMPLETE_WITH_SCHEMA_QUERY(words_after_create[i].query);
                else
                    COMPLETE_WITH_QUERY(words_after_create[i].query);
@@ -1397,27 +1403,27 @@ create_command_generator(const char *text, int state)
 static char *
 complete_from_query(const char *text, int state)
 {
-  return _complete_from_query(0, text, state);
+   return _complete_from_query(0, text, state);
 }
 
 static char *
 complete_from_schema_query(const char *text, int state)
 {
-  return _complete_from_query(1, text, state);
+   return _complete_from_query(1, text, state);
 }
 
 
 /* This creates a list of matching things, according to a query pointed to
    by completion_charp.
    The query can be one of two kinds:
-   - A simple query which must contain a %d and a %s, which will be replaced 
+   - A simple query which must contain a %d and a %s, which will be replaced
    by the string length of the text and the text itself. The query may also
-   have another %s in it, which will be replaced by the value of 
+   have another %s in it, which will be replaced by the value of
    completion_info_charp.
-     or:
+    or:
    - A schema query used for completion of both schema and relation names;
    these are more complex and must contain in the following order:
-     %d %s %d %s %d %s %s %d %s
+    %d %s %d %s %d %s %s %d %s
    where %d is the string length of the text and %s the text itself.
 
    See top of file for examples of both kinds of query.
@@ -1445,20 +1451,21 @@ _complete_from_query(int is_schema_query, const char *text, int state)
        if (completion_charp == NULL)
            return NULL;
 
-       if(is_schema_query)
+       if (is_schema_query)
        {
-         if (snprintf(query_buffer, BUF_SIZE, completion_charp, string_length, text, string_length, text, string_length, text, text,  string_length, text,string_length,text) == -1)
-         {
-             ERROR_QUERY_TOO_LONG;
-             return NULL;
-         }
+           if (snprintf(query_buffer, BUF_SIZE, completion_charp, string_length, text, string_length, text, string_length, text, text, string_length, text, string_length, text) == -1)
+           {
+               ERROR_QUERY_TOO_LONG;
+               return NULL;
+           }
        }
-       else {
-         if (snprintf(query_buffer, BUF_SIZE, completion_charp, string_length, text, completion_info_charp) == -1)
-           {
-             ERROR_QUERY_TOO_LONG;
-             return NULL;
-           }
+       else
+       {
+           if (snprintf(query_buffer, BUF_SIZE, completion_charp, string_length, text, completion_info_charp) == -1)
+           {
+               ERROR_QUERY_TOO_LONG;
+               return NULL;
+           }
        }
 
        result = exec_query(query_buffer);
@@ -1488,7 +1495,7 @@ complete_from_list(const char *text, int state)
    static int  string_length,
                list_index,
                matches;
-   static bool casesensitive;
+   static bool casesensitive;
    char       *item;
 
    /* need to have a list */
@@ -1520,8 +1527,8 @@ complete_from_list(const char *text, int state)
    }
 
    /*
-    * No matches found. If we're not case insensitive already, lets switch
-    * to being case insensitive and try again
+    * No matches found. If we're not case insensitive already, lets
+    * switch to being case insensitive and try again
     */
    if (casesensitive && matches == 0)
    {
index 6b4c42786e76bbbecabe336e5f3903fc83c4be4f..0f3b74a12c248e1d56f11e38e18c1e036b65fafd 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/variables.c,v 1.11 2003/06/28 00:12:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/variables.c,v 1.12 2003/08/04 00:43:29 momjian Exp $
  */
 #include "postgres_fe.h"
 #include "variables.h"
@@ -67,7 +67,11 @@ GetVariableBool(VariableSpace space, const char *name)
        return false;           /* not set -> assume "off" */
    if (strcmp(val, "off") == 0)
        return false;
-   /* for backwards compatibility, anything except "off" is taken as "true" */
+
+   /*
+    * for backwards compatibility, anything except "off" is taken as
+    * "true"
+    */
    return true;
 }
 
@@ -75,65 +79,69 @@ bool
 VariableEquals(VariableSpace space, const char name[], const char value[])
 {
    const char *var;
+
    var = GetVariable(space, name);
    return var && (strcmp(var, value) == 0);
 }
 
-int 
-GetVariableNum(VariableSpace space, 
-                   const char name[], 
-                   int defaultval,
-                   int faultval,
-                   bool allowtrail)
+int
+GetVariableNum(VariableSpace space,
+              const char name[],
+              int defaultval,
+              int faultval,
+              bool allowtrail)
 {
    const char *var;
-   int result;
+   int         result;
 
    var = GetVariable(space, name);
    if (!var)
-     result = defaultval;
+       result = defaultval;
    else if (!var[0])
-     result = faultval;
+       result = faultval;
    else
    {
-       char *end;
+       char       *end;
+
        result = strtol(var, &end, 0);
        if (!allowtrail && *end)
-         result = faultval;
+           result = faultval;
    }
 
    return result;
 }
 
 int
-SwitchVariable(VariableSpace space, const char name[], const char *opt, ...)
+SwitchVariable(VariableSpace space, const char name[], const char *opt,...)
 {
-   int result;
+   int         result;
    const char *var;
 
    var = GetVariable(space, name);
-   if (var) 
+   if (var)
    {
-       va_list args;
+       va_list     args;
+
        va_start(args, opt);
-       for (result=1; opt && (strcmp(var, opt) != 0); result++)
-           opt = va_arg(args,const char *);
+       for (result = 1; opt && (strcmp(var, opt) != 0); result++)
+           opt = va_arg(args, const char *);
        if (!opt)
            result = VAR_NOTFOUND;
        va_end(args);
    }
    else
-     result = VAR_NOTSET;
+       result = VAR_NOTSET;
 
    return result;
 }
 
-void 
+void
 PrintVariables(VariableSpace space)
 {
-  struct _variable *ptr;
-  for (ptr = space->next; ptr; ptr = ptr->next)
-    printf("%s = '%s'\n", ptr->name, ptr->value);
+   struct _variable *ptr;
+
+   for (ptr = space->next; ptr; ptr = ptr->next)
+       printf("%s = '%s'\n", ptr->name, ptr->value);
 }
 
 bool
index ce239975ef3681259a0836c97487ca0cf666791f..e69df16a7c3d805e4eae639df14f5ecdd4d774b8 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/variables.h,v 1.12 2003/06/28 00:12:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/variables.h,v 1.13 2003/08/04 00:43:29 momjian Exp $
  */
 
 /*
@@ -30,33 +30,36 @@ typedef struct _variable *VariableSpace;
 
 VariableSpace CreateVariableSpace(void);
 const char *GetVariable(VariableSpace space, const char *name);
-bool   GetVariableBool(VariableSpace space, const char *name);
-bool   VariableEquals(VariableSpace space, const char name[], const char *opt);
+bool       GetVariableBool(VariableSpace space, const char *name);
+bool       VariableEquals(VariableSpace space, const char name[], const char *opt);
 
 /* Read numeric variable, or defaultval if it is not set, or faultval if its
- * value is not a valid numeric string.  If allowtrail is false, this will 
+ * value is not a valid numeric string.  If allowtrail is false, this will
  * include the case where there are trailing characters after the number.
  */
-int GetVariableNum(VariableSpace space, 
-                       const char name[], 
-                       int defaultval, 
-                       int faultval,
-                       bool allowtrail);
+int GetVariableNum(VariableSpace space,
+              const char name[],
+              int defaultval,
+              int faultval,
+              bool allowtrail);
 
 
-/* Find value of variable <name> among NULL-terminated list of alternative 
+/* Find value of variable <name> among NULL-terminated list of alternative
  * options.  Returns VAR_NOTSET if the variable was not set, VAR_NOTFOUND
  * if its value did not occur in the list of options, or the number of the
  * matching option.  The first option is 1, the second is 2 and so on.
  */
-enum { VAR_NOTSET = 0, VAR_NOTFOUND = -1 };
-int    SwitchVariable(VariableSpace space, const char name[],
-                      const char *opt, ...);
+enum
+{
+VAR_NOTSET = 0, VAR_NOTFOUND = -1};
+int
+SwitchVariable(VariableSpace space, const char name[],
+              const char *opt,...);
 
-void   PrintVariables(VariableSpace space);
+void       PrintVariables(VariableSpace space);
 
-bool   SetVariable(VariableSpace space, const char *name, const char *value);
-bool   SetVariableBool(VariableSpace space, const char *name);
-bool   DeleteVariable(VariableSpace space, const char *name);
+bool       SetVariable(VariableSpace space, const char *name, const char *value);
+bool       SetVariableBool(VariableSpace space, const char *name);
+bool       DeleteVariable(VariableSpace space, const char *name);
 
 #endif   /* VARIABLES_H */
index 3f491ac9e740717e0fb05e2d7e7def83e59be146..cd91ad0cb77abc5666612407ff5c7e2f1cffe608 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Portions Copyright (c) 2002-2003, PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/clusterdb.c,v 1.2 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/clusterdb.c,v 1.3 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 static
-void cluster_one_database(const char *dbname, const char *table,
-                         const char *host, const char *port, const char *username, bool password,
-                         const char *progname, bool echo, bool quiet);
+void
+cluster_one_database(const char *dbname, const char *table,
+ const char *host, const char *port, const char *username, bool password,
+                    const char *progname, bool echo, bool quiet);
 static
-void cluster_all_databases(const char *host, const char *port, const char *username, bool password,
-                          const char *progname, bool echo, bool quiet);
+void
+cluster_all_databases(const char *host, const char *port, const char *username, bool password,
+                     const char *progname, bool echo, bool quiet);
 
 static void help(const char *progname);
 
@@ -104,7 +106,7 @@ main(int argc, char *argv[])
            dbname = argv[optind];
            break;
        default:
-           fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+           fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
                    progname, argv[optind + 1]);
            fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
            exit(1);
@@ -124,7 +126,7 @@ main(int argc, char *argv[])
                    progname);
            exit(1);
        }
-   
+
        cluster_all_databases(host, port, username, password,
                              progname, echo, quiet);
    }
@@ -150,9 +152,10 @@ main(int argc, char *argv[])
 
 
 static
-void cluster_one_database(const char *dbname, const char *table,
-                         const char *host, const char *port, const char *username, bool password,
-                         const char *progname, bool echo, bool quiet)
+void
+cluster_one_database(const char *dbname, const char *table,
+ const char *host, const char *port, const char *username, bool password,
+                    const char *progname, bool echo, bool quiet)
 {
    PQExpBufferData sql;
 
@@ -194,8 +197,9 @@ void cluster_one_database(const char *dbname, const char *table,
 
 
 static
-void cluster_all_databases(const char *host, const char *port, const char *username, bool password,
-                          const char *progname, bool echo, bool quiet)
+void
+cluster_all_databases(const char *host, const char *port, const char *username, bool password,
+                     const char *progname, bool echo, bool quiet)
 {
    PGconn     *conn;
    PGresult   *result;
index 2e0612a8e7473ab8c5008c841e75be1f7ae6c324..dc27a94477646c93cd4474969e14e8420c3c7107 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/common.c,v 1.3 2003/05/27 19:36:54 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/common.c,v 1.4 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -78,7 +78,7 @@ handle_help_version_opts(int argc, char *argv[], const char *fixed_progname, hel
  */
 PGconn *
 connectDatabase(const char *dbname, const char *pghost, const char *pgport,
-               const char *pguser, bool require_password, const char *progname)
+        const char *pguser, bool require_password, const char *progname)
 {
    PGconn     *conn;
    char       *password = NULL;
@@ -156,7 +156,7 @@ executeQuery(PGconn *conn, const char *query, const char *progname, bool echo)
 
 
 /*
- * Check yes/no answer in a localized way.  1=yes, 0=no, -1=neither.
+ * Check yes/no answer in a localized way. 1=yes, 0=no, -1=neither.
  */
 
 /* translator: Make sure the (y/n) prompts match the translation of this. */
index 8fb33dfd0369ceb674366d1d6d45a72709a14b2a..8a6431e724504622aa12ba25d852f1a9a1074e8c 100644 (file)
@@ -1,7 +1,7 @@
 #include "postgres_fe.h"
 
 #ifdef HAVE_GETOPT_H
-# include <getopt.h>
+#include <getopt.h>
 #endif
 
 #ifndef HAVE_GETOPT_LONG
 #include "pqexpbuffer.h"
 
 #ifndef HAVE_OPTRESET
-int optreset;
+int            optreset;
 #endif
 
 const char *get_user_name(const char *progname);
 
 #define _(x) gettext((x))
-void init_nls(void);
+void       init_nls(void);
 
-typedef void (*help_handler)(const char *);
+typedef void (*help_handler) (const char *);
 
-void handle_help_version_opts(int argc, char *argv[], const char *fixed_progname, help_handler hlp);
+void       handle_help_version_opts(int argc, char *argv[], const char *fixed_progname, help_handler hlp);
 
 extern char *simple_prompt(const char *prompt, int maxlen, bool echo);
 
-PGconn *
-connectDatabase(const char *dbname, const char *pghost, const char *pgport,
-               const char *pguser, bool require_password, const char *progname);
+PGconn *connectDatabase(const char *dbname, const char *pghost, const char *pgport,
+       const char *pguser, bool require_password, const char *progname);
 
 PGresult *
-executeQuery(PGconn *conn, const char *command, const char *progname, bool echo);
+           executeQuery(PGconn *conn, const char *command, const char *progname, bool echo);
 
 int
-check_yesno_response(const char *string);
+           check_yesno_response(const char *string);
index 7677c2cc7eff53b1376540e78589fb828dc931c6..1f7df9104d58beb83a1078cba8c41bdd27fcc93a 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/createdb.c,v 1.4 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/createdb.c,v 1.5 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -115,7 +115,7 @@ main(int argc, char *argv[])
            comment = argv[optind + 1];
            break;
        default:
-           fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+           fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
                    progname, argv[optind + 2]);
            fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
            exit(1);
index 01df2a3275eff2c2de7010844621f47de141c581..3b4a9b060d88692b9a93a51f6e4c5cf59c1244c7 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/createlang.c,v 1.5 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/createlang.c,v 1.6 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -110,9 +110,9 @@ main(int argc, char *argv[])
 
    if (argc - optind > 0)
    {
-       fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+       fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
                progname, argv[optind]);
-       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
        exit(1);
    }
 
@@ -154,7 +154,7 @@ main(int argc, char *argv[])
    if (langname == NULL)
    {
        fprintf(stderr, _("%s: missing required argument language name\n"), progname);
-       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
        exit(1);
    }
 
@@ -165,37 +165,37 @@ main(int argc, char *argv[])
        if (*p >= 'A' && *p <= 'Z')
            *p += ('a' - 'A');
 
-   if (strcmp(langname, "plpgsql")==0)
+   if (strcmp(langname, "plpgsql") == 0)
    {
        trusted = true;
        handler = "plpgsql_call_handler";
        object = "plpgsql";
    }
-   else if (strcmp(langname, "pltcl")==0)
+   else if (strcmp(langname, "pltcl") == 0)
    {
        trusted = true;
        handler = "pltcl_call_handler";
        object = "pltcl";
    }
-   else if (strcmp(langname, "pltclu")==0)
+   else if (strcmp(langname, "pltclu") == 0)
    {
        trusted = false;
        handler = "pltclu_call_handler";
        object = "pltcl";
    }
-   else if (strcmp(langname, "plperl")==0)
+   else if (strcmp(langname, "plperl") == 0)
    {
        trusted = true;
        handler = "plperl_call_handler";
        object = "plperl";
    }
-   else if (strcmp(langname, "plperlu")==0)
+   else if (strcmp(langname, "plperlu") == 0)
    {
        trusted = false;
        handler = "plperl_call_handler";
        object = "plperl";
    }
-   else if (strcmp(langname, "plpythonu")==0)
+   else if (strcmp(langname, "plpythonu") == 0)
    {
        trusted = false;
        handler = "plpython_call_handler";
index 0da4e78318bb7b40e17118ced652bced9567d4f2..f113456fbca8802467ad524578fb69aa52e6c7a7 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/createuser.c,v 1.5 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/createuser.c,v 1.6 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -148,11 +148,12 @@ main(int argc, char *argv[])
 
    if (pwprompt)
    {
-       char       *pw1, *pw2;
+       char       *pw1,
+                  *pw2;
 
        pw1 = simple_prompt("Enter password for new user: ", 100, false);
        pw2 = simple_prompt("Enter it again: ", 100, false);
-       if (strcmp(pw1, pw2)!=0)
+       if (strcmp(pw1, pw2) != 0)
        {
            fprintf(stderr, _("Passwords didn't match.\n"));
            exit(1);
@@ -242,9 +243,9 @@ help(const char *progname)
    printf(_("  -P, --pwprompt            assign a password to new user\n"));
    printf(_("  -E, --encrypted           encrypt stored password\n"));
    printf(_("  -N, --unencrypted         do no encrypt stored password\n"));
-   printf(_("  -i, --sysid=SYSID         select sysid for new user\n"     ));
+   printf(_("  -i, --sysid=SYSID         select sysid for new user\n"));
    printf(_("  -e, --echo                show the commands being sent to the server\n"));
-    printf(_("  -q, --quiet               don't write any messages\n"));
+   printf(_("  -q, --quiet               don't write any messages\n"));
    printf(_("  --help                    show this help, then exit\n"));
    printf(_("  --version                 output version information, then exit\n"));
    printf(_("\nConnection options:\n"));
index a8bcc1a8f715c3469fbb5d611c012e3097b86529..5e53defd6b3315a453771299019d8859d4fedd19 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/dropdb.c,v 1.5 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/dropdb.c,v 1.6 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -88,7 +88,7 @@ main(int argc, char *argv[])
    switch (argc - optind)
    {
        case 0:
-           fprintf(stderr, _("%s: missing required argument database name\n"), progname);
+           fprintf(stderr, _("%s: missing required argument database name\n"), progname);
            fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
            exit(1);
        case 1:
index 64d0fb0f42955c9b66813374f00e4ff5349d9ae6..08a588e348576b2bd4bb14c88260b38a309a04cc 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/droplang.c,v 1.4 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/droplang.c,v 1.5 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -104,9 +104,9 @@ main(int argc, char *argv[])
 
    if (argc - optind > 0)
    {
-       fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+       fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
                progname, argv[optind]);
-       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
        exit(1);
    }
 
@@ -148,7 +148,7 @@ main(int argc, char *argv[])
    if (langname == NULL)
    {
        fprintf(stderr, _("%s: missing required argument language name\n"), progname);
-       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
+       fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
        exit(1);
    }
 
@@ -159,7 +159,8 @@ main(int argc, char *argv[])
    conn = connectDatabase(dbname, host, port, username, password, progname);
 
    /*
-    * Make sure the language is installed and find the OID of the handler function
+    * Make sure the language is installed and find the OID of the handler
+    * function
     */
    printfPQExpBuffer(&sql, "SELECT lanplcallfoid FROM pg_language WHERE lanname = '%s' AND lanispl;", langname);
    result = executeQuery(conn, sql.data, progname, echo);
@@ -178,7 +179,7 @@ main(int argc, char *argv[])
     */
    printfPQExpBuffer(&sql, "SELECT count(proname) FROM pg_proc P, pg_language L WHERE P.prolang = L.oid AND L.lanname = '%s';", langname);
    result = executeQuery(conn, sql.data, progname, echo);
-   if (strcmp(PQgetvalue(result, 0, 0), "0")!=0)
+   if (strcmp(PQgetvalue(result, 0, 0), "0") != 0)
    {
        PQfinish(conn);
        fprintf(stderr,
@@ -193,7 +194,7 @@ main(int argc, char *argv[])
     */
    printfPQExpBuffer(&sql, "SELECT count(*) FROM pg_language WHERE lanplcallfoid = %s AND lanname <> '%s';", lanplcallfoid, langname);
    result = executeQuery(conn, sql.data, progname, echo);
-   if (strcmp(PQgetvalue(result, 0, 0), "0")==0)
+   if (strcmp(PQgetvalue(result, 0, 0), "0") == 0)
        keephandler = false;
    else
        keephandler = true;
index 8018a3f122c1cde0fe2eb92b26597bc50872dae7..2d17be40d1b4774646ee548f575de6be4b86f5ed 100644 (file)
@@ -5,7 +5,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Header: /cvsroot/pgsql/src/bin/scripts/vacuumdb.c,v 1.2 2003/07/23 08:47:41 petere Exp $
+ * $Header: /cvsroot/pgsql/src/bin/scripts/vacuumdb.c,v 1.3 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 static
-void vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze, const char *table,
-                        const char *host, const char *port, const char *username, bool password,
-                        const char *progname, bool echo, bool quiet);
+void
+vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze, const char *table,
+ const char *host, const char *port, const char *username, bool password,
+                   const char *progname, bool echo, bool quiet);
 static
-void vacuum_all_databases(bool full, bool verbose, bool analyze,
-                         const char *host, const char *port, const char *username, bool password,
-                         const char *progname, bool echo, bool quiet);
+void
+vacuum_all_databases(bool full, bool verbose, bool analyze,
+ const char *host, const char *port, const char *username, bool password,
+                    const char *progname, bool echo, bool quiet);
 
 static void help(const char *progname);
 
@@ -120,7 +122,7 @@ main(int argc, char *argv[])
            dbname = argv[optind];
            break;
        default:
-           fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
+           fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"),
                    progname, argv[optind + 1]);
            fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
            exit(1);
@@ -140,7 +142,7 @@ main(int argc, char *argv[])
                    progname);
            exit(1);
        }
-   
+
        vacuum_all_databases(full, verbose, analyze,
                             host, port, username, password,
                             progname, echo, quiet);
@@ -167,9 +169,10 @@ main(int argc, char *argv[])
 
 
 static
-void vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze, const char *table,
-                        const char *host, const char *port, const char *username, bool password,
-                        const char *progname, bool echo, bool quiet)
+void
+vacuum_one_database(const char *dbname, bool full, bool verbose, bool analyze, const char *table,
+ const char *host, const char *port, const char *username, bool password,
+                   const char *progname, bool echo, bool quiet)
 {
    PQExpBufferData sql;
 
@@ -217,9 +220,10 @@ void vacuum_one_database(const char *dbname, bool full, bool verbose, bool analy
 
 
 static
-void vacuum_all_databases(bool full, bool verbose, bool analyze,
-                         const char *host, const char *port, const char *username, bool password,
-                         const char *progname, bool echo, bool quiet)
+void
+vacuum_all_databases(bool full, bool verbose, bool analyze,
+ const char *host, const char *port, const char *username, bool password,
+                    const char *progname, bool echo, bool quiet)
 {
    PGconn     *conn;
    PGresult   *result;
index 934defb8a7bb7c01b73e52ced3228b128f056420..ac61ec35ac7e1d737f4f6a9ac78f1f483a32f8f2 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: genam.h,v 1.40 2003/07/27 17:10:06 tgl Exp $
+ * $Id: genam.h,v 1.41 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -34,8 +34,8 @@ typedef struct IndexBulkDeleteResult
    BlockNumber num_pages;      /* pages remaining in index */
    double      num_index_tuples;       /* tuples remaining */
    double      tuples_removed; /* # removed by bulk-delete operation */
-   BlockNumber pages_deleted;  /* # unused pages in index */
-   BlockNumber pages_free;     /* # pages available for reuse */
+   BlockNumber pages_deleted;  /* # unused pages in index */
+   BlockNumber pages_free;     /* # pages available for reuse */
 } IndexBulkDeleteResult;
 
 /* Typedef for callback function to determine if a tuple is bulk-deletable */
@@ -46,7 +46,7 @@ typedef struct IndexVacuumCleanupInfo
 {
    bool        vacuum_full;    /* VACUUM FULL (we have exclusive lock) */
    int         message_level;  /* ereport level for progress messages */
-} IndexVacuumCleanupInfo;
+}  IndexVacuumCleanupInfo;
 
 /* Struct for heap-or-index scans of system tables */
 typedef struct SysScanDescData
@@ -89,8 +89,8 @@ extern IndexBulkDeleteResult *index_bulk_delete(Relation indexRelation,
                  IndexBulkDeleteCallback callback,
                  void *callback_state);
 extern IndexBulkDeleteResult *index_vacuum_cleanup(Relation indexRelation,
-                 IndexVacuumCleanupInfo *info,
-                 IndexBulkDeleteResult *stats);
+                    IndexVacuumCleanupInfo * info,
+                    IndexBulkDeleteResult *stats);
 extern RegProcedure index_cost_estimator(Relation indexRelation);
 extern RegProcedure index_getprocid(Relation irel, AttrNumber attnum,
                uint16 procnum);
index 06a0772bba81fda5f6de1c22cf36c1ba447db442..b6df7220860acf2d818665814a9d874bb48fec64 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: heapam.h,v 1.81 2003/02/23 20:32:12 tgl Exp $
+ * $Id: heapam.h,v 1.82 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -173,7 +173,7 @@ extern void heap_redo(XLogRecPtr lsn, XLogRecord *rptr);
 extern void heap_undo(XLogRecPtr lsn, XLogRecord *rptr);
 extern void heap_desc(char *buf, uint8 xl_info, char *rec);
 extern XLogRecPtr log_heap_clean(Relation reln, Buffer buffer,
-                                OffsetNumber *unused, int uncnt);
+              OffsetNumber *unused, int uncnt);
 extern XLogRecPtr log_heap_move(Relation reln, Buffer oldbuf,
              ItemPointerData from,
              Buffer newbuf, HeapTuple newtup);
index d6ea70cd7d1fe3c0059a6903a0105a76aca01cba..28b19c50dccd68ed1c9690d733f340778f6798a8 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nbtree.h,v 1.67 2003/02/23 22:43:09 tgl Exp $
+ * $Id: nbtree.h,v 1.68 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -26,7 +26,7 @@
  * a search has navigated to the wrong page due to concurrent page splits
  * or deletions; see src/backend/access/nbtree/README for more info.
  *
- *  In addition, we store the page's btree level (counting upwards from
+ * In addition, we store the page's btree level (counting upwards from
  * zero at a leaf page) as well as some flag bits indicating the page type
  * and status.  If the page is deleted, we replace the level with the
  * next-transaction-ID value indicating when it is safe to reclaim the page.
@@ -41,9 +41,9 @@ typedef struct BTPageOpaqueData
    BlockNumber btpo_next;      /* right sibling, or P_NONE if rightmost */
    union
    {
-       uint32  level;          /* tree level --- zero for leaf pages */
+       uint32      level;      /* tree level --- zero for leaf pages */
        TransactionId xact;     /* next transaction ID, if deleted */
-   } btpo;
+   }           btpo;
    uint16      btpo_flags;     /* flag bits, see below */
 } BTPageOpaqueData;
 
@@ -185,15 +185,16 @@ typedef BTItemData *BTItem;
  * record xl_info field
  */
 #define XLOG_BTREE_INSERT_LEAF 0x00    /* add btitem without split */
-#define XLOG_BTREE_INSERT_UPPER    0x10    /* same, on a non-leaf page */
+#define XLOG_BTREE_INSERT_UPPER 0x10   /* same, on a non-leaf page */
 #define XLOG_BTREE_INSERT_META 0x20    /* same, plus update metapage */
 #define XLOG_BTREE_SPLIT_L     0x30    /* add btitem with split */
 #define XLOG_BTREE_SPLIT_R     0x40    /* as above, new item on right */
-#define XLOG_BTREE_SPLIT_L_ROOT    0x50    /* add btitem with split of root */
-#define XLOG_BTREE_SPLIT_R_ROOT    0x60    /* as above, new item on right */
+#define XLOG_BTREE_SPLIT_L_ROOT 0x50   /* add btitem with split of root */
+#define XLOG_BTREE_SPLIT_R_ROOT 0x60   /* as above, new item on right */
 #define XLOG_BTREE_DELETE      0x70    /* delete leaf btitem */
 #define XLOG_BTREE_DELETE_PAGE 0x80    /* delete an entire page */
-#define XLOG_BTREE_DELETE_PAGE_META    0x90 /* same, plus update metapage */
+#define XLOG_BTREE_DELETE_PAGE_META 0x90       /* same, plus update
+                                                * metapage */
 #define XLOG_BTREE_NEWROOT     0xA0    /* new root page */
 #define XLOG_BTREE_NEWMETA     0xB0    /* update metadata page */
 #define XLOG_BTREE_NEWPAGE     0xC0    /* new index page during build */
@@ -216,7 +217,7 @@ typedef struct xl_btree_metadata
    uint32      level;
    BlockNumber fastroot;
    uint32      fastlevel;
-} xl_btree_metadata;
+}  xl_btree_metadata;
 
 /*
  * This is what we need to know about simple (without split) insert.
@@ -245,7 +246,7 @@ typedef struct xl_btree_insert
  * left or right split page (and thus, whether otherblk is the right or left
  * page of the split pair).  The _ROOT variants indicate that we are splitting
  * the root page, and thus that a newroot record rather than an insert or
- * split record should follow.  Note that a split record never carries a
+ * split record should follow. Note that a split record never carries a
  * metapage update --- we'll do that in the parent-level update.
  */
 typedef struct xl_btree_split
@@ -279,7 +280,7 @@ typedef struct xl_btree_delete
 /*
  * This is what we need to know about deletion of a btree page.  The target
  * identifies the tuple removed from the parent page (note that we remove
- * this tuple's downlink and the *following* tuple's key).  Note we do not
+ * this tuple's downlink and the *following* tuple's key). Note we do not
  * store any content for the deleted page --- it is just rewritten as empty
  * during recovery.
  */
@@ -290,7 +291,7 @@ typedef struct xl_btree_delete_page
    BlockNumber leftblk;        /* child block's left sibling, if any */
    BlockNumber rightblk;       /* child block's right sibling */
    /* xl_btree_metadata FOLLOWS IF XLOG_BTREE_DELETE_PAGE_META */
-} xl_btree_delete_page;
+}  xl_btree_delete_page;
 
 #define SizeOfBtreeDeletePage  (offsetof(xl_btree_delete_page, rightblk) + sizeof(BlockNumber))
 
@@ -320,7 +321,7 @@ typedef struct xl_btree_newmeta
 {
    RelFileNode node;
    xl_btree_metadata meta;
-} xl_btree_newmeta;
+}  xl_btree_newmeta;
 
 #define SizeOfBtreeNewmeta (sizeof(xl_btree_newmeta))
 
@@ -332,7 +333,7 @@ typedef struct xl_btree_newpage
    RelFileNode node;
    BlockNumber blkno;          /* location of new page */
    /* entire page contents follow at end of record */
-} xl_btree_newpage;
+}  xl_btree_newpage;
 
 #define SizeOfBtreeNewpage (offsetof(xl_btree_newpage, blkno) + sizeof(BlockNumber))
 
@@ -442,7 +443,7 @@ extern InsertIndexResult _bt_doinsert(Relation rel, BTItem btitem,
             bool index_is_unique, Relation heapRel);
 extern Buffer _bt_getstackbuf(Relation rel, BTStack stack, int access);
 extern void _bt_insert_parent(Relation rel, Buffer buf, Buffer rbuf,
-                             BTStack stack, bool is_root, bool is_only);
+                 BTStack stack, bool is_root, bool is_only);
 
 /*
  * prototypes for functions in nbtpage.c
@@ -458,7 +459,7 @@ extern void _bt_pageinit(Page page, Size size);
 extern bool _bt_page_recyclable(Page page);
 extern void _bt_metaproot(Relation rel, BlockNumber rootbknum, uint32 level);
 extern void _bt_delitems(Relation rel, Buffer buf,
-                        OffsetNumber *itemnos, int nitems);
+            OffsetNumber *itemnos, int nitems);
 extern int _bt_pagedel(Relation rel, Buffer buf, bool vacuum_full);
 
 /*
index 981b0f26483471058c0f6f0e01d440549ed1df59..69a446d657ed3f6f0a58247bec35fb5edd86b759 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: printtup.h,v 1.27 2003/05/08 18:16:37 tgl Exp $
+ * $Id: printtup.h,v 1.28 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 extern DestReceiver *printtup_create_DR(CommandDest dest, Portal portal);
 
 extern void SendRowDescriptionMessage(TupleDesc typeinfo, List *targetlist,
-                                     int16 *formats);
+                         int16 *formats);
 
 extern void debugStartup(DestReceiver *self, int operation,
-                        TupleDesc typeinfo);
+            TupleDesc typeinfo);
 extern void debugtup(HeapTuple tuple, TupleDesc typeinfo,
         DestReceiver *self);
 
 /* XXX these are really in executor/spi.c */
 extern void spi_dest_startup(DestReceiver *self, int operation,
-                            TupleDesc typeinfo);
+                TupleDesc typeinfo);
 extern void spi_printtup(HeapTuple tuple, TupleDesc typeinfo,
             DestReceiver *self);
 
index 898afa64bb5aacdeda9a3f62e5160759892bc2c3..1675248544511668ce8bf0c637b3ff2bb0b07065 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: relscan.h,v 1.30 2003/01/08 19:41:40 tgl Exp $
+ * $Id: relscan.h,v 1.31 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -76,8 +76,8 @@ typedef struct IndexScanDescData
     * the logical scan position for itself.  It does that using
     * unique_tuple_pos: -1 = before row, 0 = on row, +1 = after row.
     */
-   int         unique_tuple_pos; /* logical position */
-   int         unique_tuple_mark; /* logical marked position */
+   int         unique_tuple_pos;       /* logical position */
+   int         unique_tuple_mark;      /* logical marked position */
 
    PgStat_Info xs_pgstat_info; /* statistics collector hook */
 } IndexScanDescData;
index 1386d7e20131e028a3b2c2c9da51e330318e5761..6a8b63a3ff67c884b2ccca84f69efaf3cf25dc41 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: slru.h,v 1.1 2003/06/11 22:37:46 momjian Exp $
+ * $Id: slru.h,v 1.2 2003/08/04 00:43:30 momjian Exp $
  */
 #ifndef SLRU_H
 #define SLRU_H
 
 typedef struct SlruLockData
 {
-   LWLockId ControlLock;
+   LWLockId    ControlLock;
 /*
  * BufferLocks is set during CLOGShmemInit and does not change thereafter.
  * The value is automatically inherited by backends via fork, and
  * doesn't need to be in shared memory.
  */
-   LWLockId BufferLocks[NUM_CLOG_BUFFERS];     /* Per-buffer I/O locks */
-} SlruLockData;
+   LWLockId    BufferLocks[NUM_CLOG_BUFFERS];  /* Per-buffer I/O locks */
+}  SlruLockData;
 typedef SlruLockData *SlruLock;
 
 typedef struct SlruCtlData
 {
-   void *shared;   /* pointer to SlruSharedData */
-   SlruLock locks;
+   void       *shared;         /* pointer to SlruSharedData */
+   SlruLock    locks;
 
 /*
  * Dir is set during SimpleLruShmemInit and does not change thereafter.
  * The value is automatically inherited by backends via fork, and
  * doesn't need to be in shared memory.
  */
-   char Dir[MAXPGPATH];
-   
+   char        Dir[MAXPGPATH];
+
 /*
  * Decide which of two page numbers is "older" for truncation purposes.
  * We need to use comparison of TransactionIds here in order to do the right
  * thing with wraparound XID arithmetic.
  */
-   bool (*PagePrecedes)(int, int);
+   bool        (*PagePrecedes) (int, int);
 
-} SlruCtlData;
+}  SlruCtlData;
 typedef SlruCtlData *SlruCtl;
 
 extern int SimpleLruShmemSize(void);
 extern void SimpleLruInit(SlruCtl ctl, const char *name, const char *subdir);
 extern int SimpleLruZeroPage(SlruCtl ctl, int pageno);
-extern char    *SimpleLruReadPage(SlruCtl ctl, int pageno, TransactionId xid, bool forwrite);
+extern char *SimpleLruReadPage(SlruCtl ctl, int pageno, TransactionId xid, bool forwrite);
 extern void SimpleLruWritePage(SlruCtl ctl, int slotno);
 extern void SimpleLruSetLatestPage(SlruCtl ctl, int pageno);
 extern void SimpleLruFlush(SlruCtl ctl, bool checkpoint);
index aa284df016ff67e467138b02d9cf77a3b544e618..4a8c5f6772952825ea8279f93e1909335557fb6f 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: xact.h,v 1.52 2003/05/14 03:26:03 tgl Exp $
+ * $Id: xact.h,v 1.53 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -31,8 +31,8 @@ extern int    DefaultXactIsoLevel;
 extern int XactIsoLevel;
 
 /* Xact read-only state */
-extern bool    DefaultXactReadOnly;
-extern bool    XactReadOnly;
+extern bool DefaultXactReadOnly;
+extern bool XactReadOnly;
 
 /*
  * transaction states - transaction state from server perspective
@@ -44,7 +44,7 @@ typedef enum TransState
    TRANS_INPROGRESS,
    TRANS_COMMIT,
    TRANS_ABORT
-} TransState;
+}  TransState;
 
 /*
  * transaction block states - transaction state of client queries
@@ -57,7 +57,7 @@ typedef enum TBlockState
    TBLOCK_END,
    TBLOCK_ABORT,
    TBLOCK_ENDABORT
-} TBlockState;
+}  TBlockState;
 
 /* ----------------
  *     transaction state structure
@@ -70,7 +70,7 @@ typedef struct TransactionStateData
    AbsoluteTime startTime;
    int         startTimeUsec;
    TransState  state;
-   TBlockState blockState;
+   TBlockState blockState;
 } TransactionStateData;
 
 typedef TransactionStateData *TransactionState;
index cb2e6e523df7106dbf43a256b7d737aff6591dc0..074e126abdb15c8d2bf9739c00680cff93e34c2d 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: xlog.h,v 1.42 2003/02/22 00:45:05 tgl Exp $
+ * $Id: xlog.h,v 1.43 2003/08/04 00:43:30 momjian Exp $
  */
 #ifndef XLOG_H
 #define XLOG_H
@@ -58,7 +58,7 @@ typedef struct XLogRecord
 /*
  * If we backed up any disk blocks with the XLOG record, we use flag bits in
  * xl_info to signal it.  We support backup of up to 3 disk blocks per XLOG
- * record.  (Could support 4 if we cared to dedicate all the xl_info bits for
+ * record. (Could support 4 if we cared to dedicate all the xl_info bits for
  * this purpose; currently bit 0 of xl_info is unused and available.)
  */
 #define XLR_BKP_BLOCK_MASK     0x0E    /* all info bits used for bkp
index 3f6c23c6d148ae9a10827e2db22cc6205233bfca..f49978725d781fe2f322bf875305bb3234b2f268 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: c.h,v 1.150 2003/06/12 08:15:29 momjian Exp $
+ * $Id: c.h,v 1.151 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,7 +68,7 @@
 #include <sys/types.h>
 
 #include <errno.h>
-#include <fcntl.h>         /* ensure O_BINARY is available */
+#include <fcntl.h>             /* ensure O_BINARY is available */
 #ifdef HAVE_SUPPORTDEFS_H
 #include <SupportDefs.h>
 #endif
@@ -591,7 +591,7 @@ typedef NameData *Name;
  * Exactly the same as standard library function memset(), but considerably
  * faster for zeroing small word-aligned structures (such as parsetree nodes).
  * This has to be a macro because the main point is to avoid function-call
- * overhead.   However, we have also found that the loop is faster than
+ * overhead.   However, we have also found that the loop is faster than
  * native libc memset() on some platforms, even those with assembler
  * memset() functions.  More research needs to be done, perhaps with
  * platform-specific MEMSET_LOOP_LIMIT values or tests in configure.
@@ -707,6 +707,7 @@ typedef NameData *Name;
 #define FCNTL_NONBLOCK(sock)   fcntl(sock, F_SETFL, O_NONBLOCK)
 #else
 extern long ioctlsocket_ret;
+
 /* Returns non-0 on failure, while fcntl() returns -1 on failure */
 #ifdef WIN32
 #define FCNTL_NONBLOCK(sock)   ((ioctlsocket(sock, FIONBIO, &ioctlsocket_ret) == 0) ? 0 : -1)
@@ -754,7 +755,7 @@ extern int  vsnprintf(char *str, size_t count, const char *fmt, va_list args);
  * because it is used in both the prototypes as well as the definitions.
  * Note also the long name.  We expect that this won't collide with
  * other names causing compiler warnings.
- */ 
+ */
 
 #ifndef SIGNAL_ARGS
 #define SIGNAL_ARGS  int postgres_signal_arg
@@ -766,25 +767,25 @@ extern int    vsnprintf(char *str, size_t count, const char *fmt, va_list args);
  * that case.
  */
 #ifndef HAVE_SIGSETJMP
-# define sigjmp_buf jmp_buf
-# define sigsetjmp(x,y)    setjmp(x)
-# define siglongjmp longjmp
+#define sigjmp_buf jmp_buf
+#define sigsetjmp(x,y) setjmp(x)
+#define siglongjmp longjmp
 #endif
 
 #if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC
-extern int fdatasync(int fildes);
+extern int fdatasync(int fildes);
 #endif
 
 /* If strtoq() exists, rename it to the more standard strtoll() */
 #if defined(HAVE_LONG_LONG_INT_64) && !defined(HAVE_STRTOLL) && defined(HAVE_STRTOQ)
-# define strtoll strtoq
-# define HAVE_STRTOLL 1
+#define strtoll strtoq
+#define HAVE_STRTOLL 1
 #endif
 
 /* If strtouq() exists, rename it to the more standard strtoull() */
 #if defined(HAVE_LONG_LONG_INT_64) && !defined(HAVE_STRTOULL) && defined(HAVE_STRTOUQ)
-# define strtoull strtouq
-# define HAVE_STRTOULL 1
+#define strtoull strtouq
+#define HAVE_STRTOULL 1
 #endif
 
 /* /port compatibility functions */
index 21ed3fbf90d8ceddde3bbeb801488ea463208222..c8d9511a79cda9b5ca74f02c1dc5657202421647 100644 (file)
@@ -4,7 +4,7 @@
  *   "Catalog version number" for PostgreSQL.
  *
  * The catalog version number is used to flag incompatible changes in
- * the PostgreSQL system catalogs.  Whenever anyone changes the format of
+ * the PostgreSQL system catalogs. Whenever anyone changes the format of
  * a system catalog relation, or adds, deletes, or modifies standard
  * catalog entries in such a way that an updated backend wouldn't work
  * with an old database (or vice versa), the catalog version number
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: catversion.h,v 1.204 2003/07/30 22:56:24 tgl Exp $
+ * $Id: catversion.h,v 1.205 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
index 512c17a43cfdaa76d57410cc14dc7da99ce2f188..b12ecb46665cf1ec7dca8c9bc09ea7913398940e 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: dependency.h,v 1.8 2003/05/28 16:03:59 tgl Exp $
+ * $Id: dependency.h,v 1.9 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -85,16 +85,16 @@ extern void performDeletion(const ObjectAddress *object,
                DropBehavior behavior);
 
 extern void deleteWhatDependsOn(const ObjectAddress *object,
-                               bool showNotices);
+                   bool showNotices);
 
 extern void recordDependencyOnExpr(const ObjectAddress *depender,
                       Node *expr, List *rtable,
                       DependencyType behavior);
 
 extern void recordDependencyOnSingleRelExpr(const ObjectAddress *depender,
-                      Node *expr, Oid relId,
-                      DependencyType behavior,
-                      DependencyType self_behavior);
+                               Node *expr, Oid relId,
+                               DependencyType behavior,
+                               DependencyType self_behavior);
 
 /* in pg_depend.c */
 
index 5186d9ef5eb26bc7cd8c96192d86febb35a1a243..40162386d8625669209e5692c6378c7fcaa99c94 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_am.h,v 1.26 2003/06/22 22:04:55 tgl Exp $
+ * $Id: pg_am.h,v 1.27 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *     the genbki.sh script reads this file and generates .bki
@@ -58,7 +58,7 @@ CATALOG(pg_am)
    regproc     amrestrpos;     /* "restore marked scan position" function */
    regproc     ambuild;        /* "build new index" function */
    regproc     ambulkdelete;   /* bulk-delete function */
-   regproc     amvacuumcleanup; /* post-VACUUM cleanup function */
+   regproc     amvacuumcleanup;    /* post-VACUUM cleanup function */
    regproc     amcostestimate; /* estimate cost of an indexscan */
 } FormData_pg_am;
 
index 79f181cd6952a5d7562c14a57c37c58c4d99c5dc..15ec04c553c1d458134787b3e5ae6a6a60f967f5 100644 (file)
@@ -14,7 +14,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_amproc.h,v 1.41 2003/06/27 00:33:25 tgl Exp $
+ * $Id: pg_amproc.h,v 1.42 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -78,7 +78,7 @@ DATA(insert ( 1993 3  199 ));
 
 
 /* btree */
-DATA(insert (   397 1  382 ));
+DATA(insert (   397 1  382 ));
 DATA(insert (   421 1  357 ));
 DATA(insert (   423 1 1596 ));
 DATA(insert (   424 1 1693 ));
@@ -104,7 +104,7 @@ DATA(insert (   1996 1 1107 ));
 DATA(insert (  1998 1 1314 ));
 DATA(insert (  2000 1 1358 ));
 DATA(insert (  2002 1 1672 ));
-DATA(insert (  2003 1  360 ));
+DATA(insert (  2003 1  360 ));
 DATA(insert (  2039 1 2045 ));
 DATA(insert (  2095 1 2166 ));
 DATA(insert (  2096 1 2166 ));
@@ -134,16 +134,16 @@ DATA(insert ( 1999 1  452 ));
 DATA(insert (  2001 1 1696 ));
 DATA(insert (  2004 1  400 ));
 DATA(insert (  2040 1  452 ));
-DATA(insert (  2222 1  454 ));
-DATA(insert (  2223 1  456 ));
-DATA(insert (  2224 1  398 ));
-DATA(insert (  2225 1  450 ));
-DATA(insert (  2226 1  450 ));
-DATA(insert (  2227 1  450 ));
-DATA(insert (  2228 1  450 ));
-DATA(insert (  2229 1  456 ));
-DATA(insert (  2230 1  456 ));
-DATA(insert (  2231 1  456 ));
-DATA(insert (  2232 1  455 ));
+DATA(insert (  2222 1  454 ));
+DATA(insert (  2223 1  456 ));
+DATA(insert (  2224 1  398 ));
+DATA(insert (  2225 1  450 ));
+DATA(insert (  2226 1  450 ));
+DATA(insert (  2227 1  450 ));
+DATA(insert (  2228 1  450 ));
+DATA(insert (  2229 1  456 ));
+DATA(insert (  2230 1  456 ));
+DATA(insert (  2231 1  456 ));
+DATA(insert (  2232 1  455 ));
 
 #endif   /* PG_AMPROC_H */
index d20938f54a0eb18ef23cd92165998339eb683f8c..77df7446c84537f2c9f41bea2c66eea49860eb68 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_attribute.h,v 1.102 2003/05/08 22:19:56 tgl Exp $
+ * $Id: pg_attribute.h,v 1.103 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -238,7 +238,7 @@ typedef FormData_pg_attribute *Form_pg_attribute;
 { 1247, {"typelem"},      26, 0,   4, 10, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }, \
 { 1247, {"typinput"},     24, 0,   4, 11, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }, \
 { 1247, {"typoutput"},    24, 0,   4, 12, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }, \
-{ 1247, {"typreceive"},       24, 0,   4, 13, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }, \
+{ 1247, {"typreceive"},    24, 0,  4, 13, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }, \
 { 1247, {"typsend"},      24, 0,   4, 14, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }, \
 { 1247, {"typalign"},     18, 0,   1, 15, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
 { 1247, {"typstorage"},    18, 0,  1, 16, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
@@ -404,8 +404,8 @@ DATA(insert ( 1261 tableoid         26 0  4  -7 0 -1 -1 t p f i t f f t 0));
 { 1249, {"attnotnull"},   16, 0, 1, 14, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
 { 1249, {"atthasdef"},   16, 0, 1, 15, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
 { 1249, {"attisdropped"}, 16, 0, 1, 16, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
-{ 1249, {"attislocal"},      16, 0, 1, 17, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
-{ 1249, {"attinhcount"},  23, 0, 4,    18, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }
+{ 1249, {"attislocal"},   16, 0, 1, 17, 0, -1, -1, true, 'p', false, 'c', true, false, false, true, 0 }, \
+{ 1249, {"attinhcount"},  23, 0, 4, 18, 0, -1, -1, true, 'p', false, 'i', true, false, false, true, 0 }
 
 DATA(insert ( 1249 attrelid            26 -1  4   1 0 -1 -1 t p f i t f f t 0));
 DATA(insert ( 1249 attname         19 -1 NAMEDATALEN  2 0 -1 -1 f p f i t f f t 0));
index 6c3d47ba7f149a0a526756ca1a3be9dc4691914d..b37eecab75e3935c47f2c1fcf5c4d35ba7b39595 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 2002, PostgreSQL Global Development Group
  *
- * $Id: pg_cast.h,v 1.7 2003/05/26 00:11:27 tgl Exp $
+ * $Id: pg_cast.h,v 1.8 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -39,8 +39,10 @@ typedef FormData_pg_cast *Form_pg_cast;
 
 typedef enum CoercionCodes
 {
-   COERCION_CODE_IMPLICIT = 'i',   /* coercion in context of expression */
-   COERCION_CODE_ASSIGNMENT = 'a', /* coercion in context of assignment */
+   COERCION_CODE_IMPLICIT = 'i',       /* coercion in context of
+                                        * expression */
+   COERCION_CODE_ASSIGNMENT = 'a',     /* coercion in context of
+                                        * assignment */
    COERCION_CODE_EXPLICIT = 'e'    /* explicit cast operation */
 } CoercionCodes;
 
@@ -67,7 +69,7 @@ typedef enum CoercionCodes
  */
 DATA(insert (  20   21  714 a ));
 DATA(insert (  20   23  480 a ));
-DATA(insert (  20  700  652 i ));
+DATA(insert (  20  700  652 i ));
 DATA(insert (  20  701  482 i ));
 DATA(insert (  20 1700 1781 i ));
 DATA(insert (  21   20  754 i ));
@@ -235,10 +237,10 @@ DATA(insert (  869    650    0 i ));
 DATA(insert ( 1560 1562    0 i ));
 DATA(insert ( 1562 1560    0 i ));
 /* Cross-category casts between bit and int4, int8 */
-DATA(insert (   20 1560 2075 e ));
-DATA(insert (   23 1560 1683 e ));
-DATA(insert ( 1560   20 2076 e ));
-DATA(insert ( 1560   23 1684 e ));
+DATA(insert (  20 1560 2075 e ));
+DATA(insert (  23 1560 1683 e ));
+DATA(insert ( 1560  20 2076 e ));
+DATA(insert ( 1560  23 1684 e ));
 
 /*
  * Cross-category casts to and from TEXT
index ebbf96f6195b0920c5adebf2c0cf516c2803b843..80868188a89c2a2f2b08267196d14da054cbe1f7 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_constraint.h,v 1.6 2003/03/10 22:28:19 tgl Exp $
+ * $Id: pg_constraint.h,v 1.7 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -141,14 +141,15 @@ typedef FormData_pg_constraint *Form_pg_constraint;
  */
 
 /*
- * Used for constraint support functions where the 
+ * Used for constraint support functions where the
  * and conrelid, contypid columns being looked up
  */
-typedef enum CONSTRAINTCATEGORY {
+typedef enum CONSTRAINTCATEGORY
+{
    CONSTRAINT_RELATION,
    CONSTRAINT_DOMAIN,
    CONSTRAINT_ASSERTION
-} CONSTRAINTCATEGORY;
+}  CONSTRAINTCATEGORY;
 
 /*
  * prototypes for functions in pg_constraint.c
@@ -176,9 +177,9 @@ extern Oid CreateConstraintEntry(const char *constraintName,
 extern void RemoveConstraintById(Oid conId);
 
 extern bool ConstraintNameIsUsed(CONSTRAINTCATEGORY conCat, Oid objId, Oid objNamespace,
-                                const char *cname);
+                    const char *cname);
 extern char *GenerateConstraintName(CONSTRAINTCATEGORY conCat, Oid objId, Oid objNamespace,
-                                   int *counter);
+                      int *counter);
 extern bool ConstraintNameIsGenerated(const char *cname);
 
 #endif   /* PG_CONSTRAINT_H */
index 5d635523ca9ee31872b665cbe7ec2598bc6b3057..4c1b78ac3f3c2773cbfe77d193ecf8f6d238b5ba 100644 (file)
@@ -26,7 +26,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_opclass.h,v 1.54 2003/06/27 00:33:25 tgl Exp $
+ * $Id: pg_opclass.h,v 1.55 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -151,7 +151,7 @@ DATA(insert OID = 2039 (    403     timestamp_ops   PGNSP PGUID 1114 t 0 ));
 DATA(insert OID = 2040 (   405     timestamp_ops   PGNSP PGUID 1114 t 0 ));
 DATA(insert OID = 2095 (   403     text_pattern_ops    PGNSP PGUID   25 f 0 ));
 #define TEXT_PATTERN_BTREE_OPS_OID 2095
-DATA(insert OID = 2096 (   403     varchar_pattern_ops PGNSP PGUID 1043 f 0 ));
+DATA(insert OID = 2096 (   403     varchar_pattern_ops PGNSP PGUID 1043 f 0 ));
 #define VARCHAR_PATTERN_BTREE_OPS_OID 2096
 DATA(insert OID = 2097 (   403     bpchar_pattern_ops  PGNSP PGUID 1042 f 0 ));
 #define BPCHAR_PATTERN_BTREE_OPS_OID 2097
@@ -165,7 +165,7 @@ DATA(insert OID = 2226 (    405     cid_ops         PGNSP PGUID   29 t 0 ));
 DATA(insert OID = 2227 (   405     abstime_ops     PGNSP PGUID  702 t 0 ));
 DATA(insert OID = 2228 (   405     reltime_ops     PGNSP PGUID  703 t 0 ));
 DATA(insert OID = 2229 (   405     text_pattern_ops    PGNSP PGUID   25 f 0 ));
-DATA(insert OID = 2230 (   405     varchar_pattern_ops PGNSP PGUID 1043 f 0 ));
+DATA(insert OID = 2230 (   405     varchar_pattern_ops PGNSP PGUID 1043 f 0 ));
 DATA(insert OID = 2231 (   405     bpchar_pattern_ops  PGNSP PGUID 1042 f 0 ));
 DATA(insert OID = 2232 (   405     name_pattern_ops    PGNSP PGUID   19 f 0 ));
 
index a964ac1b3dd9b7f4223ab4aea060f0cfeb97c807..85cce6db391714570c77bf4f0e12cccd304a1934 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_operator.h,v 1.118 2003/06/27 00:33:25 tgl Exp $
+ * $Id: pg_operator.h,v 1.119 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -116,9 +116,9 @@ DATA(insert OID =  96 ( "="        PGNSP PGUID b t  23  23  16  96 518  97  97  97 521 int
 DATA(insert OID =  97 ( "<"           PGNSP PGUID b f  23  23  16 521 525   0   0   0   0 int4lt scalarltsel scalarltjoinsel ));
 DATA(insert OID =  98 ( "="           PGNSP PGUID b t  25  25  16  98 531 664 664 664 666 texteq eqsel eqjoinsel ));
 
-DATA(insert OID = 349 (  "||"     PGNSP PGUID b f 2277 2283 2277   0 0 0 0 0 0 array_append   -       -     ));
-DATA(insert OID = 374 (  "||"     PGNSP PGUID b f 2283 2277 2277   0 0 0 0 0 0 array_prepend  -       -     ));
-DATA(insert OID = 375 (  "||"     PGNSP PGUID b f 2277 2277 2277   0 0 0 0 0 0 array_cat      -       -     ));
+DATA(insert OID = 349 (  "||"     PGNSP PGUID b f 2277 2283 2277   0 0 0 0 0 0 array_append   -       -     ));
+DATA(insert OID = 374 (  "||"     PGNSP PGUID b f 2283 2277 2277   0 0 0 0 0 0 array_prepend  -       -     ));
+DATA(insert OID = 375 (  "||"     PGNSP PGUID b f 2277 2277 2277   0 0 0 0 0 0 array_cat      -       -     ));
 
 DATA(insert OID = 352 (  "="      PGNSP PGUID b t  28  28  16 352   0   0   0   0   0 xideq eqsel eqjoinsel ));
 DATA(insert OID = 353 (  "="      PGNSP PGUID b f  28  23  16   0   0   0   0   0   0 xideqint4 eqsel eqjoinsel ));
@@ -351,7 +351,7 @@ DATA(insert OID = 708 (  "<->"     PGNSP PGUID b f 628 628 701 708   0  0  0   0
 DATA(insert OID = 709 (  "<->"    PGNSP PGUID b f 601 601 701 709   0  0  0   0   0 lseg_distance - - ));
 DATA(insert OID = 712 (  "<->"    PGNSP PGUID b f 604 604 701 712   0  0  0   0   0 poly_distance - - ));
 
-DATA(insert OID = 713 (  "<>"     PGNSP PGUID b f 600 600  16 713 510  0  0   0   0 point_ne neqsel neqjoinsel ));
+DATA(insert OID = 713 (  "<>"     PGNSP PGUID b f 600 600  16 713 510  0  0   0   0 point_ne neqsel neqjoinsel ));
 
 /* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
 DATA(insert OID = 731 (  "+"      PGNSP PGUID b f  600  600    600  731  0 0 0 0 0 point_add - - ));
@@ -443,10 +443,10 @@ DATA(insert OID = 1061 ( ">="    PGNSP PGUID b f 1042 1042     16 1059 1058  0 0 0
 
 /* generic array comparison operators */
 DATA(insert OID = 1070 (  "="     PGNSP PGUID b f 2277 2277 16 1070 1071  1072 1072 1072 1073 array_eq eqsel eqjoinsel ));
-#define ARRAY_EQ_OP    1070
+#define ARRAY_EQ_OP 1070
 DATA(insert OID = 1071 (  "<>"    PGNSP PGUID b f 2277 2277 16 1071 1070  0 0 0 0 array_ne neqsel neqjoinsel ));
 DATA(insert OID = 1072 (  "<"     PGNSP PGUID b f 2277 2277 16 1073 1075  0 0 0 0 array_lt scalarltsel scalarltjoinsel ));
-#define ARRAY_LT_OP    1072
+#define ARRAY_LT_OP 1072
 DATA(insert OID = 1073 (  ">"     PGNSP PGUID b f 2277 2277 16 1072 1074  0 0 0 0 array_gt scalargtsel scalargtjoinsel ));
 DATA(insert OID = 1074 (  "<="    PGNSP PGUID b f 2277 2277 16 1075 1073  0 0 0 0 array_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 1075 (  ">="    PGNSP PGUID b f 2277 2277 16 1074 1072  0 0 0 0 array_ge scalargtsel scalargtjoinsel ));
@@ -801,25 +801,25 @@ DATA(insert OID = 2068 (  "-"    PGNSP PGUID b f 1114 1186 1114    0  0 0 0 0 0 tim
 /* character-by-character (not collation order) comparison operators for character types */
 
 DATA(insert OID = 2314 ( "~<~" PGNSP PGUID b f 25 25 16 2318 2317 0 0 0 0 text_pattern_lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 2315 ( "~<=~"    PGNSP PGUID b f 25 25 16 2317 2318 0 0 0 0 text_pattern_le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 2315 ( "~<=~" PGNSP PGUID b f 25 25 16 2317 2318 0 0 0 0 text_pattern_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 2316 ( "~=~" PGNSP PGUID b t 25 25 16 2316 2319 2314 2314 2314 2318 text_pattern_eq eqsel eqjoinsel ));
-DATA(insert OID = 2317 ( "~>=~"    PGNSP PGUID b f 25 25 16 2315 2314 0 0 0 0 text_pattern_ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 2317 ( "~>=~" PGNSP PGUID b f 25 25 16 2315 2314 0 0 0 0 text_pattern_ge scalargtsel scalargtjoinsel ));
 DATA(insert OID = 2318 ( "~>~" PGNSP PGUID b f 25 25 16 2314 2315 0 0 0 0 text_pattern_gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 2319 ( "~<>~"    PGNSP PGUID b f 25 25 16 2319 2316 0 0 0 0 text_pattern_ne neqsel neqjoinsel ));
+DATA(insert OID = 2319 ( "~<>~" PGNSP PGUID b f 25 25 16 2319 2316 0 0 0 0 text_pattern_ne neqsel neqjoinsel ));
 
 DATA(insert OID = 2326 ( "~<~" PGNSP PGUID b f 1042 1042 16 2330 2329 0 0 0 0 bpchar_pattern_lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 2327 ( "~<=~"    PGNSP PGUID b f 1042 1042 16 2329 2330 0 0 0 0 bpchar_pattern_le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 2327 ( "~<=~" PGNSP PGUID b f 1042 1042 16 2329 2330 0 0 0 0 bpchar_pattern_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 2328 ( "~=~" PGNSP PGUID b t 1042 1042 16 2328 2331 2326 2326 2326 2330 bpchar_pattern_eq eqsel eqjoinsel ));
-DATA(insert OID = 2329 ( "~>=~"    PGNSP PGUID b f 1042 1042 16 2327 2326 0 0 0 0 bpchar_pattern_ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 2329 ( "~>=~" PGNSP PGUID b f 1042 1042 16 2327 2326 0 0 0 0 bpchar_pattern_ge scalargtsel scalargtjoinsel ));
 DATA(insert OID = 2330 ( "~>~" PGNSP PGUID b f 1042 1042 16 2326 2327 0 0 0 0 bpchar_pattern_gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 2331 ( "~<>~"    PGNSP PGUID b f 1042 1042 16 2331 2328 0 0 0 0 bpchar_pattern_ne neqsel neqjoinsel ));
+DATA(insert OID = 2331 ( "~<>~" PGNSP PGUID b f 1042 1042 16 2331 2328 0 0 0 0 bpchar_pattern_ne neqsel neqjoinsel ));
 
 DATA(insert OID = 2332 ( "~<~" PGNSP PGUID b f 19 19 16 2336 2335 0 0 0 0 name_pattern_lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 2333 ( "~<=~"    PGNSP PGUID b f 19 19 16 2335 2336 0 0 0 0 name_pattern_le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 2333 ( "~<=~" PGNSP PGUID b f 19 19 16 2335 2336 0 0 0 0 name_pattern_le scalarltsel scalarltjoinsel ));
 DATA(insert OID = 2334 ( "~=~" PGNSP PGUID b t 19 19 16 2334 2337 2332 2332 2332 2336 name_pattern_eq eqsel eqjoinsel ));
-DATA(insert OID = 2335 ( "~>=~"    PGNSP PGUID b f 19 19 16 2333 2332 0 0 0 0 name_pattern_ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 2335 ( "~>=~" PGNSP PGUID b f 19 19 16 2333 2332 0 0 0 0 name_pattern_ge scalargtsel scalargtjoinsel ));
 DATA(insert OID = 2336 ( "~>~" PGNSP PGUID b f 19 19 16 2332 2333 0 0 0 0 name_pattern_gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 2337 ( "~<>~"    PGNSP PGUID b f 19 19 16 2337 2334 0 0 0 0 name_pattern_ne neqsel neqjoinsel ));
+DATA(insert OID = 2337 ( "~<>~" PGNSP PGUID b f 19 19 16 2337 2334 0 0 0 0 name_pattern_ne neqsel neqjoinsel ));
 
 
 
index e41817a0e3f3665c0ca4a5ec8dbeaa9477d12b9d..b81ad142e89b37d4607b9a79cc9b4ea911194ea3 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_proc.h,v 1.310 2003/07/30 22:56:24 tgl Exp $
+ * $Id: pg_proc.h,v 1.311 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   The script catalog/genbki.sh reads this file and generates .bki
@@ -844,7 +844,7 @@ DATA(insert OID = 456 (  hashvarlena       PGNSP PGUID 12 f f t f i 1 23 "2281" has
 DESCR("hash any varlena type");
 DATA(insert OID = 457 (  hashoidvector    PGNSP PGUID 12 f f t f i 1 23 "30"  hashoidvector - _null_ ));
 DESCR("hash");
-DATA(insert OID = 398 (  hashint2vector       PGNSP PGUID 12 f f t f i 1 23 "22"  hashint2vector - _null_ ));
+DATA(insert OID = 398 (  hashint2vector    PGNSP PGUID 12 f f t f i 1 23 "22"  hashint2vector - _null_ ));
 DESCR("hash");
 DATA(insert OID = 399 (  hashmacaddr      PGNSP PGUID 12 f f t f i 1 23 "829"  hashmacaddr - _null_ ));
 DESCR("hash");
@@ -931,9 +931,9 @@ DESCR("greater-than-or-equal");
 DATA(insert OID = 659 (  namene               PGNSP PGUID 12 f f t f i 2 16 "19 19"    namene - _null_ ));
 DESCR("not equal");
 
-DATA(insert OID = 668 (  bpchar               PGNSP PGUID 12 f f t f i 3 1042 "1042 23 16" bpchar - _null_ ));
+DATA(insert OID = 668 (  bpchar               PGNSP PGUID 12 f f t f i 3 1042 "1042 23 16" bpchar - _null_ ));
 DESCR("adjust char() to typmod length");
-DATA(insert OID = 669 (  varchar          PGNSP PGUID 12 f f t f i 3 1043 "1043 23 16" varchar - _null_ ));
+DATA(insert OID = 669 (  varchar          PGNSP PGUID 12 f f t f i 3 1043 "1043 23 16" varchar - _null_ ));
 DESCR("adjust varchar() to typmod length");
 
 DATA(insert OID = 676 (  mktinterval      PGNSP PGUID 12 f f t f i 2 704 "702 702" mktinterval - _null_ ));
@@ -1021,7 +1021,7 @@ DATA(insert OID = 378 (  array_append    PGNSP PGUID 12 f f t f i 2 2277 "2277 2
 DESCR("append element onto end of array");
 DATA(insert OID = 379 (  array_prepend    PGNSP PGUID 12 f f t f i 2 2277 "2283 2277" array_push - _null_ ));
 DESCR("prepend element onto front of array");
-DATA(insert OID = 383 (  array_cat        PGNSP PGUID 12 f f t f i 2 2277 "2277 2277" array_cat - _null_ ));
+DATA(insert OID = 383 (  array_cat        PGNSP PGUID 12 f f t f i 2 2277 "2277 2277" array_cat - _null_ ));
 DESCR("concatenate two arrays");
 DATA(insert OID = 384  (  array_coerce    PGNSP PGUID 12 f f t f i 1 2277 "2277" array_type_coerce - _null_ ));
 DESCR("coerce array type to another array type");
@@ -1329,9 +1329,9 @@ DATA(insert OID = 1036 (  aclremove          PGNSP PGUID 12 f f t f s 2 1034 "1034 10
 DESCR("remove ACL item");
 DATA(insert OID = 1037 (  aclcontains     PGNSP PGUID 12 f f t f s 2 16 "1034 1033"    aclcontains - _null_ ));
 DESCR("does ACL contain item?");
-DATA(insert OID = 1062 (  aclitemeq           PGNSP PGUID 12 f f t f s 2 16 "1033 1033"    aclitem_eq - _null_ ));
+DATA(insert OID = 1062 (  aclitemeq           PGNSP PGUID 12 f f t f s 2 16 "1033 1033"    aclitem_eq - _null_ ));
 DESCR("equality operator for ACL items");
-DATA(insert OID = 1365 (  makeaclitem     PGNSP PGUID 12 f f t f s 5 1033 "23 23 23 25 16" makeaclitem - _null_ ));
+DATA(insert OID = 1365 (  makeaclitem     PGNSP PGUID 12 f f t f s 5 1033 "23 23 23 25 16" makeaclitem - _null_ ));
 DESCR("make ACL item");
 DATA(insert OID = 1038 (  seteval         PGNSP PGUID 12 f f t t v 1 23 "26"  seteval - _null_ ));
 DESCR("internal function supporting PostQuel-style sets");
@@ -1404,7 +1404,7 @@ DATA(insert OID = 1141 (  date_pli           PGNSP PGUID 12 f f t f i 2 1082 "1082 23"
 DESCR("add");
 DATA(insert OID = 1142 (  date_mii        PGNSP PGUID 12 f f t f i 2 1082 "1082 23"    date_mii - _null_ ));
 DESCR("subtract");
-DATA(insert OID = 1143 (  time_in         PGNSP PGUID 12 f f t f s 3 1083 "2275 26 23" time_in - _null_ ));
+DATA(insert OID = 1143 (  time_in         PGNSP PGUID 12 f f t f s 3 1083 "2275 26 23" time_in - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 1144 (  time_out        PGNSP PGUID 12 f f t f i 1 2275 "1083"   time_out - _null_ ));
 DESCR("I/O");
@@ -1420,7 +1420,7 @@ DESCR("multiply");
 DATA(insert OID = 1149 (  circle_div_pt    PGNSP PGUID 12 f f t f i 2 718 "718 600"  circle_div_pt - _null_ ));
 DESCR("divide");
 
-DATA(insert OID = 1150 (  timestamptz_in   PGNSP PGUID 12 f f t f s 3 1184 "2275 26 23"    timestamptz_in - _null_ ));
+DATA(insert OID = 1150 (  timestamptz_in   PGNSP PGUID 12 f f t f s 3 1184 "2275 26 23" timestamptz_in - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 1151 (  timestamptz_out  PGNSP PGUID 12 f f t f s 1 2275 "1184"  timestamptz_out - _null_ ));
 DESCR("I/O");
@@ -1439,7 +1439,7 @@ DESCR("greater-than");
 DATA(insert OID = 1159 (  timezone        PGNSP PGUID 12 f f t f s 2 1114 "25 1184"  timestamptz_zone - _null_ ));
 DESCR("adjust timestamp to new time zone");
 
-DATA(insert OID = 1160 (  interval_in     PGNSP PGUID 12 f f t f s 3 1186 "2275 26 23" interval_in - _null_ ));
+DATA(insert OID = 1160 (  interval_in     PGNSP PGUID 12 f f t f s 3 1186 "2275 26 23" interval_in - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 1161 (  interval_out    PGNSP PGUID 12 f f t f i 1 2275 "1186"   interval_out - _null_ ));
 DESCR("I/O");
@@ -1681,7 +1681,7 @@ DATA(insert OID = 1349 (  oidvectortypes   PGNSP PGUID 12 f f t f s 1 25 "30"  oi
 DESCR("print type names of oidvector field");
 
 
-DATA(insert OID = 1350 (  timetz_in           PGNSP PGUID 12 f f t f s 3 1266 "2275 26 23" timetz_in - _null_ ));
+DATA(insert OID = 1350 (  timetz_in           PGNSP PGUID 12 f f t f s 3 1266 "2275 26 23" timetz_in - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 1351 (  timetz_out      PGNSP PGUID 12 f f t f i 1 2275 "1266"   timetz_out - _null_ ));
 DESCR("I/O");
@@ -2120,13 +2120,13 @@ DESCR("does not match LIKE expression, case-insensitive");
 DATA(insert OID = 1637 (  like_escape      PGNSP PGUID 12 f f t f i 2 25 "25 25" like_escape - _null_ ));
 DESCR("convert LIKE pattern to use backslash escapes");
 
-DATA(insert OID = 1656 (  bpcharicregexeq    PGNSP PGUID 12 f f t f i 2 16 "1042 25"   texticregexeq - _null_ ));
+DATA(insert OID = 1656 (  bpcharicregexeq   PGNSP PGUID 12 f f t f i 2 16 "1042 25"    texticregexeq - _null_ ));
 DESCR("matches regex., case-insensitive");
-DATA(insert OID = 1657 (  bpcharicregexne    PGNSP PGUID 12 f f t f i 2 16 "1042 25"   texticregexne - _null_ ));
+DATA(insert OID = 1657 (  bpcharicregexne   PGNSP PGUID 12 f f t f i 2 16 "1042 25"    texticregexne - _null_ ));
 DESCR("does not match regex., case-insensitive");
-DATA(insert OID = 1658 (  bpcharregexeq       PGNSP PGUID 12 f f t f i 2 16 "1042 25"  textregexeq - _null_ ));
+DATA(insert OID = 1658 (  bpcharregexeq    PGNSP PGUID 12 f f t f i 2 16 "1042 25" textregexeq - _null_ ));
 DESCR("matches regex., case-sensitive");
-DATA(insert OID = 1659 (  bpcharregexne       PGNSP PGUID 12 f f t f i 2 16 "1042 25"  textregexne - _null_ ));
+DATA(insert OID = 1659 (  bpcharregexne    PGNSP PGUID 12 f f t f i 2 16 "1042 25" textregexne - _null_ ));
 DESCR("does not match regex., case-sensitive");
 DATA(insert OID = 1660 (  bpchariclike     PGNSP PGUID 12 f f t f i 2 16 "1042 25" texticlike - _null_ ));
 DESCR("matches LIKE expression, case-insensitive");
@@ -2201,7 +2201,7 @@ DESCR("convert string with specified destination encoding name");
 DATA(insert OID = 1813 (  convert         PGNSP PGUID 12 f f t f s 3 25 "25 19 19"  pg_convert2 - _null_ ));
 DESCR("convert string with specified encoding names");
 
-DATA(insert OID = 1619 (  convert_using       PGNSP PGUID 12 f f t f s 2 25 "25 25"  pg_convert_using - _null_ ));
+DATA(insert OID = 1619 (  convert_using    PGNSP PGUID 12 f f t f s 2 25 "25 25"  pg_convert_using - _null_ ));
 DESCR("convert string with specified conversion name");
 
 DATA(insert OID = 1264 (  pg_char_to_encoding     PGNSP PGUID 12 f f t f s 1 23 "19"  PG_char_to_encoding - _null_ ));
@@ -2226,7 +2226,7 @@ DATA(insert OID = 1642 (  pg_get_userbyid    PGNSP PGUID 12 f f t f s 1 19 "23"
 DESCR("user name by UID (with fallback)");
 DATA(insert OID = 1643 (  pg_get_indexdef     PGNSP PGUID 12 f f t f s 1 25 "26"  pg_get_indexdef - _null_ ));
 DESCR("index description");
-DATA(insert OID = 1662 (  pg_get_triggerdef       PGNSP PGUID 12 f f t f s 1 25 "26"  pg_get_triggerdef - _null_ ));
+DATA(insert OID = 1662 (  pg_get_triggerdef    PGNSP PGUID 12 f f t f s 1 25 "26"  pg_get_triggerdef - _null_ ));
 DESCR("trigger description");
 DATA(insert OID = 1387 (  pg_get_constraintdef PGNSP PGUID 12 f f t f s 1 25 "26"  pg_get_constraintdef - _null_ ));
 DESCR("constraint description");
@@ -2300,9 +2300,9 @@ DESCR("int4 to bitstring");
 DATA(insert OID = 1684 (  int4             PGNSP PGUID 12 f f t f i 1 23 "1560"    bittoint4 - _null_ ));
 DESCR("bitstring to int4");
 
-DATA(insert OID = 1685 (  bit             PGNSP PGUID 12 f f t f i 3 1560 "1560 23 16" bit - _null_ ));
+DATA(insert OID = 1685 (  bit             PGNSP PGUID 12 f f t f i 3 1560 "1560 23 16" bit - _null_ ));
 DESCR("adjust bit() to typmod length");
-DATA(insert OID = 1687 (  varbit          PGNSP PGUID 12 f f t f i 3 1562 "1562 23 16" varbit - _null_ ));
+DATA(insert OID = 1687 (  varbit          PGNSP PGUID 12 f f t f i 3 1562 "1562 23 16" varbit - _null_ ));
 DESCR("adjust varbit() to typmod length");
 
 DATA(insert OID = 1698 (  position        PGNSP PGUID 12 f f t f i 2 23 "1560 1560" bitposition - _null_ ));
@@ -3042,29 +3042,29 @@ DATA(insert OID = 2157 (  stddev            PGNSP PGUID 12 t f f f i 1 701 "700"  aggrega
 DATA(insert OID = 2158 (  stddev           PGNSP PGUID 12 t f f f i 1 701 "701"  aggregate_dummy - _null_ ));
 DATA(insert OID = 2159 (  stddev           PGNSP PGUID 12 t f f f i 1 1700 "1700"  aggregate_dummy - _null_ ));
 
-DATA(insert OID = 2160 ( text_pattern_lt     PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_lt - _null_ ));
-DATA(insert OID = 2161 ( text_pattern_le     PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_le - _null_ ));
-DATA(insert OID = 2162 ( text_pattern_eq     PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_eq - _null_ ));
-DATA(insert OID = 2163 ( text_pattern_ge     PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_ge - _null_ ));
-DATA(insert OID = 2164 ( text_pattern_gt     PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_gt - _null_ ));
-DATA(insert OID = 2165 ( text_pattern_ne     PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_ne - _null_ ));
+DATA(insert OID = 2160 ( text_pattern_lt    PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_lt - _null_ ));
+DATA(insert OID = 2161 ( text_pattern_le    PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_le - _null_ ));
+DATA(insert OID = 2162 ( text_pattern_eq    PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_eq - _null_ ));
+DATA(insert OID = 2163 ( text_pattern_ge    PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_ge - _null_ ));
+DATA(insert OID = 2164 ( text_pattern_gt    PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_gt - _null_ ));
+DATA(insert OID = 2165 ( text_pattern_ne    PGNSP PGUID 12 f f t f i 2 16 "25 25" text_pattern_ne - _null_ ));
 DATA(insert OID = 2166 ( bttext_pattern_cmp  PGNSP PGUID 12 f f t f i 2 23 "25 25" bttext_pattern_cmp - _null_ ));
 
 /* We use the same procedures here as above since the types are binary compatible. */
-DATA(insert OID = 2174 ( bpchar_pattern_lt    PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_lt - _null_ ));
-DATA(insert OID = 2175 ( bpchar_pattern_le    PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_le - _null_ ));
-DATA(insert OID = 2176 ( bpchar_pattern_eq    PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_eq - _null_ ));
-DATA(insert OID = 2177 ( bpchar_pattern_ge    PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_ge - _null_ ));
-DATA(insert OID = 2178 ( bpchar_pattern_gt    PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_gt - _null_ ));
-DATA(insert OID = 2179 ( bpchar_pattern_ne    PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_ne - _null_ ));
+DATA(insert OID = 2174 ( bpchar_pattern_lt   PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_lt - _null_ ));
+DATA(insert OID = 2175 ( bpchar_pattern_le   PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_le - _null_ ));
+DATA(insert OID = 2176 ( bpchar_pattern_eq   PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_eq - _null_ ));
+DATA(insert OID = 2177 ( bpchar_pattern_ge   PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_ge - _null_ ));
+DATA(insert OID = 2178 ( bpchar_pattern_gt   PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_gt - _null_ ));
+DATA(insert OID = 2179 ( bpchar_pattern_ne   PGNSP PGUID 12 f f t f i 2 16 "1042 1042" text_pattern_ne - _null_ ));
 DATA(insert OID = 2180 ( btbpchar_pattern_cmp PGNSP PGUID 12 f f t f i 2 23 "1042 1042" bttext_pattern_cmp - _null_ ));
 
-DATA(insert OID = 2181 ( name_pattern_lt    PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_lt - _null_ ));
-DATA(insert OID = 2182 ( name_pattern_le    PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_le - _null_ ));
-DATA(insert OID = 2183 ( name_pattern_eq    PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_eq - _null_ ));
-DATA(insert OID = 2184 ( name_pattern_ge    PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_ge - _null_ ));
-DATA(insert OID = 2185 ( name_pattern_gt    PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_gt - _null_ ));
-DATA(insert OID = 2186 ( name_pattern_ne    PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_ne - _null_ ));
+DATA(insert OID = 2181 ( name_pattern_lt   PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_lt - _null_ ));
+DATA(insert OID = 2182 ( name_pattern_le   PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_le - _null_ ));
+DATA(insert OID = 2183 ( name_pattern_eq   PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_eq - _null_ ));
+DATA(insert OID = 2184 ( name_pattern_ge   PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_ge - _null_ ));
+DATA(insert OID = 2185 ( name_pattern_gt   PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_gt - _null_ ));
+DATA(insert OID = 2186 ( name_pattern_ne   PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_ne - _null_ ));
 DATA(insert OID = 2187 ( btname_pattern_cmp PGNSP PGUID 12 f f t f i 2 23 "19 19" btname_pattern_cmp - _null_ ));
 
 
@@ -3198,7 +3198,7 @@ DESCR("calculates md5 hash");
 
 DATA(insert OID = 2400 (  array_recv          PGNSP PGUID 12 f f t f s 2 2277 "2281 26"  array_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2401 (  array_send          PGNSP PGUID 12 f f t f s 2 17 "2277 26"  array_send - _null_ ));
+DATA(insert OID = 2401 (  array_send          PGNSP PGUID 12 f f t f s 2 17 "2277 26"  array_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2402 (  record_recv         PGNSP PGUID 12 f f t f i 1 2249 "2281"  record_recv - _null_ ));
 DESCR("I/O");
@@ -3230,7 +3230,7 @@ DATA(insert OID = 2415 (  textsend               PGNSP PGUID 12 f f t f s 1 17 "25"  text
 DESCR("I/O");
 DATA(insert OID = 2416 (  unknownrecv         PGNSP PGUID 12 f f t f i 1 705 "2281"  unknownrecv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2417 (  unknownsend         PGNSP PGUID 12 f f t f i 1 17 "705"  unknownsend - _null_ ));
+DATA(insert OID = 2417 (  unknownsend         PGNSP PGUID 12 f f t f i 1 17 "705"  unknownsend - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2418 (  oidrecv             PGNSP PGUID 12 f f t f i 1 26 "2281"  oidrecv - _null_ ));
 DESCR("I/O");
@@ -3246,15 +3246,15 @@ DATA(insert OID = 2423 (  namesend             PGNSP PGUID 12 f f t f s 1 17 "19"  name
 DESCR("I/O");
 DATA(insert OID = 2424 (  float4recv          PGNSP PGUID 12 f f t f i 1 700 "2281"  float4recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2425 (  float4send          PGNSP PGUID 12 f f t f i 1 17 "700"  float4send - _null_ ));
+DATA(insert OID = 2425 (  float4send          PGNSP PGUID 12 f f t f i 1 17 "700"  float4send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2426 (  float8recv          PGNSP PGUID 12 f f t f i 1 701 "2281"  float8recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2427 (  float8send          PGNSP PGUID 12 f f t f i 1 17 "701"  float8send - _null_ ));
+DATA(insert OID = 2427 (  float8send          PGNSP PGUID 12 f f t f i 1 17 "701"  float8send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2428 (  point_recv          PGNSP PGUID 12 f f t f i 1 600 "2281"  point_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2429 (  point_send          PGNSP PGUID 12 f f t f i 1 17 "600"  point_send - _null_ ));
+DATA(insert OID = 2429 (  point_send          PGNSP PGUID 12 f f t f i 1 17 "600"  point_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2430 (  bpcharrecv          PGNSP PGUID 12 f f t f s 1 1042 "2281"  bpcharrecv - _null_ ));
 DESCR("I/O");
@@ -3322,15 +3322,15 @@ DATA(insert OID = 2461 (  numeric_send         PGNSP PGUID 12 f f t f i 1 17 "1700"
 DESCR("I/O");
 DATA(insert OID = 2462 (  abstimerecv         PGNSP PGUID 12 f f t f i 1 702 "2281"  abstimerecv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2463 (  abstimesend         PGNSP PGUID 12 f f t f i 1 17 "702"  abstimesend - _null_ ));
+DATA(insert OID = 2463 (  abstimesend         PGNSP PGUID 12 f f t f i 1 17 "702"  abstimesend - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2464 (  reltimerecv         PGNSP PGUID 12 f f t f i 1 703 "2281"  reltimerecv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2465 (  reltimesend         PGNSP PGUID 12 f f t f i 1 17 "703"  reltimesend - _null_ ));
+DATA(insert OID = 2465 (  reltimesend         PGNSP PGUID 12 f f t f i 1 17 "703"  reltimesend - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2466 (  tintervalrecv           PGNSP PGUID 12 f f t f i 1 704 "2281"  tintervalrecv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2467 (  tintervalsend           PGNSP PGUID 12 f f t f i 1 17 "704"  tintervalsend - _null_ ));
+DATA(insert OID = 2467 (  tintervalsend           PGNSP PGUID 12 f f t f i 1 17 "704"  tintervalsend - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2468 (  date_recv               PGNSP PGUID 12 f f t f i 1 1082 "2281"  date_recv - _null_ ));
 DESCR("I/O");
@@ -3358,43 +3358,43 @@ DATA(insert OID = 2479 (  interval_send        PGNSP PGUID 12 f f t f i 1 17 "1186"
 DESCR("I/O");
 DATA(insert OID = 2480 (  lseg_recv               PGNSP PGUID 12 f f t f i 1 601 "2281"  lseg_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2481 (  lseg_send               PGNSP PGUID 12 f f t f i 1 17 "601"  lseg_send - _null_ ));
+DATA(insert OID = 2481 (  lseg_send               PGNSP PGUID 12 f f t f i 1 17 "601"  lseg_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2482 (  path_recv               PGNSP PGUID 12 f f t f i 1 602 "2281"  path_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2483 (  path_send               PGNSP PGUID 12 f f t f i 1 17 "602"  path_send - _null_ ));
+DATA(insert OID = 2483 (  path_send               PGNSP PGUID 12 f f t f i 1 17 "602"  path_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2484 (  box_recv            PGNSP PGUID 12 f f t f i 1 603 "2281"  box_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2485 (  box_send            PGNSP PGUID 12 f f t f i 1 17 "603"  box_send - _null_ ));
+DATA(insert OID = 2485 (  box_send            PGNSP PGUID 12 f f t f i 1 17 "603"  box_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2486 (  poly_recv               PGNSP PGUID 12 f f t f i 1 604 "2281"  poly_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2487 (  poly_send               PGNSP PGUID 12 f f t f i 1 17 "604"  poly_send - _null_ ));
+DATA(insert OID = 2487 (  poly_send               PGNSP PGUID 12 f f t f i 1 17 "604"  poly_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2488 (  line_recv               PGNSP PGUID 12 f f t f i 1 628 "2281"  line_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2489 (  line_send               PGNSP PGUID 12 f f t f i 1 17 "628"  line_send - _null_ ));
+DATA(insert OID = 2489 (  line_send               PGNSP PGUID 12 f f t f i 1 17 "628"  line_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2490 (  circle_recv         PGNSP PGUID 12 f f t f i 1 718 "2281"  circle_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2491 (  circle_send         PGNSP PGUID 12 f f t f i 1 17 "718"  circle_send - _null_ ));
+DATA(insert OID = 2491 (  circle_send         PGNSP PGUID 12 f f t f i 1 17 "718"  circle_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2492 (  cash_recv               PGNSP PGUID 12 f f t f i 1 790 "2281"  cash_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2493 (  cash_send               PGNSP PGUID 12 f f t f i 1 17 "790"  cash_send - _null_ ));
+DATA(insert OID = 2493 (  cash_send               PGNSP PGUID 12 f f t f i 1 17 "790"  cash_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2494 (  macaddr_recv        PGNSP PGUID 12 f f t f i 1 829 "2281"  macaddr_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2495 (  macaddr_send        PGNSP PGUID 12 f f t f i 1 17 "829"  macaddr_send - _null_ ));
+DATA(insert OID = 2495 (  macaddr_send        PGNSP PGUID 12 f f t f i 1 17 "829"  macaddr_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2496 (  inet_recv               PGNSP PGUID 12 f f t f i 1 869 "2281"  inet_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2497 (  inet_send               PGNSP PGUID 12 f f t f i 1 17 "869"  inet_send - _null_ ));
+DATA(insert OID = 2497 (  inet_send               PGNSP PGUID 12 f f t f i 1 17 "869"  inet_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2498 (  cidr_recv               PGNSP PGUID 12 f f t f i 1 650 "2281"  cidr_recv - _null_ ));
 DESCR("I/O");
-DATA(insert OID = 2499 (  cidr_send               PGNSP PGUID 12 f f t f i 1 17 "650"  cidr_send - _null_ ));
+DATA(insert OID = 2499 (  cidr_send               PGNSP PGUID 12 f f t f i 1 17 "650"  cidr_send - _null_ ));
 DESCR("I/O");
 DATA(insert OID = 2500 (  cstring_recv        PGNSP PGUID 12 f f t f s 1 2275 "2281"  cstring_recv - _null_ ));
 DESCR("I/O");
@@ -3416,7 +3416,7 @@ DATA(insert OID = 2507 (  pg_get_indexdef    PGNSP PGUID 12 f f t f s 3 25 "26 2
 DESCR("index description (full create statement or single expression) with pretty-print option");
 DATA(insert OID = 2508 (  pg_get_constraintdef PGNSP PGUID 12 f f t f s 2 25 "26 16"  pg_get_constraintdef_ext - _null_ ));
 DESCR("constraint description with pretty-print option");
-DATA(insert OID = 2509 (  pg_get_expr         PGNSP PGUID 12 f f t f s 3 25 "25 26 16" pg_get_expr_ext - _null_ ));
+DATA(insert OID = 2509 (  pg_get_expr         PGNSP PGUID 12 f f t f s 3 25 "25 26 16" pg_get_expr_ext - _null_ ));
 DESCR("deparse an encoded expression with pretty-print option");
 
 
@@ -3453,6 +3453,6 @@ extern Oid ProcedureCreate(const char *procedureName,
                const Oid *parameterTypes);
 
 extern void check_sql_fn_retval(Oid rettype, char fn_typtype,
-                               List *queryTreeList);
+                   List *queryTreeList);
 
 #endif   /* PG_PROC_H */
index c72c68265db47d567f3d486866ffa1e740eb6aef..b752bc9c60bb9f0b7696a4d43ce28495b731b1b5 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_statistic.h,v 1.20 2003/03/23 05:14:37 tgl Exp $
+ * $Id: pg_statistic.h,v 1.21 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -27,7 +27,7 @@
  */
 
 /*
- * Keep C compiler happy with anyarray, below.  This will need to go elsewhere
+ * Keep C compiler happy with anyarray, below. This will need to go elsewhere
  * if we ever use anyarray for more than pg_statistic.
  */
 typedef struct varlena anyarray;
@@ -116,8 +116,8 @@ CATALOG(pg_statistic) BKI_WITHOUT_OIDS
 
    /*
     * Values in these arrays are values of the column's data type.  We
-    * presently have to cheat quite a bit to allow polymorphic arrays
-    * of this kind, but perhaps someday it'll be a less bogus facility.
+    * presently have to cheat quite a bit to allow polymorphic arrays of
+    * this kind, but perhaps someday it'll be a less bogus facility.
     */
    anyarray    stavalues1;
    anyarray    stavalues2;
index 2b4e51c4506443ecd06b59ef642920c4fa8a6b46..57e24bfc48105e529a6a7456b0328ad0026505aa 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_type.h,v 1.145 2003/05/13 18:03:08 tgl Exp $
+ * $Id: pg_type.h,v 1.146 2003/08/04 00:43:30 momjian Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -164,9 +164,9 @@ CATALOG(pg_type) BOOTSTRAP
    int4        typtypmod;
 
    /*
-    * typndims is the declared number of dimensions for an array domain type
-    * (i.e., typbasetype is an array type; the domain's typelem will match
-    * the base type's typelem).  Otherwise zero.
+    * typndims is the declared number of dimensions for an array domain
+    * type (i.e., typbasetype is an array type; the domain's typelem will
+    * match the base type's typelem).  Otherwise zero.
     */
    int4        typndims;
 
@@ -545,7 +545,7 @@ DATA(insert OID = 2283 ( anyelement     PGNSP PGUID  4 t p t \054 0 0 anyelement_in
  */
 extern Oid TypeShellMake(const char *typeName, Oid typeNamespace);
 
-extern Oid TypeCreate(const char *typeName,
+extern Oid TypeCreate(const char *typeName,
           Oid typeNamespace,
           Oid assignedTypeOid,
           Oid relationOid,
@@ -569,17 +569,17 @@ extern Oid    TypeCreate(const char *typeName,
           bool typeNotNull);
 
 extern void GenerateTypeDependencies(Oid typeNamespace,
-                                    Oid typeObjectId,
-                                    Oid relationOid,
-                                    char relationKind,
-                                    Oid inputProcedure,
-                                    Oid outputProcedure,
-                                    Oid receiveProcedure,
-                                    Oid sendProcedure,
-                                    Oid elementType,
-                                    Oid baseType,
-                                    Node *defaultExpr,
-                                    bool rebuild);
+                        Oid typeObjectId,
+                        Oid relationOid,
+                        char relationKind,
+                        Oid inputProcedure,
+                        Oid outputProcedure,
+                        Oid receiveProcedure,
+                        Oid sendProcedure,
+                        Oid elementType,
+                        Oid baseType,
+                        Node *defaultExpr,
+                        bool rebuild);
 
 extern void TypeRename(const char *oldTypeName, Oid typeNamespace,
           const char *newTypeName);
index e3b59af1afdefdcc5ecf20ca5770440f5be3069f..68240e852d2f44b7d2053dc44272f216f6ced92b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: alter.h,v 1.1 2003/06/27 14:45:31 petere Exp $
+ * $Id: alter.h,v 1.2 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,4 +18,4 @@
 
 extern void ExecRenameStmt(RenameStmt *stmt);
 
-#endif /* ALTER_H */
+#endif   /* ALTER_H */
index 037859973b54629286b1f2bcc429adabf367ba78..5a3d91d2c419df86bd124c8cfac15af1841dc017 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: dbcommands.h,v 1.27 2003/06/27 14:45:31 petere Exp $
+ * $Id: dbcommands.h,v 1.28 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,7 +21,7 @@ extern void dropdb(const char *dbname);
 extern void RenameDatabase(const char *oldname, const char *newname);
 extern void AlterDatabaseSet(AlterDatabaseSetStmt *stmt);
 
-extern Oid get_database_oid(const char *dbname);
-extern char * get_database_name(Oid dbid);
+extern Oid get_database_oid(const char *dbname);
+extern char *get_database_name(Oid dbid);
 
 #endif   /* DBCOMMANDS_H */
index 69b2268920c9cc59717b63cfa6e3daf65cbbf0bf..60391ea0e31ab02cab885ece58df248d6b4e4080 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994-5, Regents of the University of California
  *
- * $Id: explain.h,v 1.19 2003/05/06 20:26:27 tgl Exp $
+ * $Id: explain.h,v 1.20 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,6 +23,6 @@ extern void ExplainQuery(ExplainStmt *stmt, DestReceiver *dest);
 extern TupleDesc ExplainResultDesc(ExplainStmt *stmt);
 
 extern void ExplainOnePlan(QueryDesc *queryDesc, ExplainStmt *stmt,
-                          TupOutputState *tstate);
+              TupOutputState *tstate);
 
 #endif   /* EXPLAIN_H */
index ce874df66793557711430fdda5b3c8f0b4da3d7f..25cae460b9a1d8c5c5d028dfcff37dac5065842a 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: portalcmds.h,v 1.10 2003/05/06 20:26:27 tgl Exp $
+ * $Id: portalcmds.h,v 1.11 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "utils/portal.h"
 
 
-extern void PerformCursorOpen(DeclareCursorStmt *stmt);
+extern void PerformCursorOpen(DeclareCursorStmt * stmt);
 
 extern void PerformPortalFetch(FetchStmt *stmt, DestReceiver *dest,
-                              char *completionTag);
+                  char *completionTag);
 
 extern void PerformPortalClose(const char *name);
 
index 5b8f32dd4ca18297b3316c58dc8546ae17212ca7..ca6bbb4d93e230e00196063f316c72848b8eed2a 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 2002-2003, PostgreSQL Global Development Group
  *
- * $Id: prepare.h,v 1.6 2003/05/06 21:51:42 tgl Exp $
+ * $Id: prepare.h,v 1.7 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,7 +37,7 @@ typedef struct
    List       *plan_list;      /* list of plans */
    List       *argtype_list;   /* list of parameter type OIDs */
    MemoryContext context;      /* context containing this query */
-} PreparedStatement;
+}  PreparedStatement;
 
 
 /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */
@@ -48,15 +48,15 @@ extern void ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate);
 
 /* Low-level access to stored prepared statements */
 extern void StorePreparedStatement(const char *stmt_name,
-                                  const char *query_string,
-                                  const char *commandTag,
-                                  List *query_list,
-                                  List *plan_list,
-                                  List *argtype_list);
+                      const char *query_string,
+                      const char *commandTag,
+                      List *query_list,
+                      List *plan_list,
+                      List *argtype_list);
 extern PreparedStatement *FetchPreparedStatement(const char *stmt_name,
-                                                bool throwError);
+                      bool throwError);
 extern void DropPreparedStatement(const char *stmt_name, bool showError);
 extern List *FetchPreparedStatementParams(const char *stmt_name);
-extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement *stmt);
+extern TupleDesc FetchPreparedStatementResultDesc(PreparedStatement * stmt);
 
 #endif   /* PREPARE_H */
index a0a18f0f330b4a9038e2da732bc638224d6d37b6..3c4b6f1c4a73aa42965dc845a3af71cac0bafa1d 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: sequence.h,v 1.23 2003/03/20 07:02:11 momjian Exp $
+ * $Id: sequence.h,v 1.24 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -84,7 +84,7 @@ extern Datum setval(PG_FUNCTION_ARGS);
 extern Datum setval_and_iscalled(PG_FUNCTION_ARGS);
 
 extern void DefineSequence(CreateSeqStmt *stmt);
-extern void AlterSequence(AlterSeqStmt *stmt);
+extern void AlterSequence(AlterSeqStmt * stmt);
 
 extern void seq_redo(XLogRecPtr lsn, XLogRecord *rptr);
 extern void seq_undo(XLogRecPtr lsn, XLogRecord *rptr);
index e2aa280a2e066733f825a528912af2ce545f9f09..1a2a33b3c244fac2fffc1f9f961ca4796d293db4 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: trigger.h,v 1.41 2003/03/27 14:33:11 tgl Exp $
+ * $Id: trigger.h,v 1.42 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -117,9 +117,9 @@ extern TriggerDesc *CopyTriggerDesc(TriggerDesc *trigdesc);
 extern void FreeTriggerDesc(TriggerDesc *trigdesc);
 
 extern void ExecBSInsertTriggers(EState *estate,
-                                ResultRelInfo *relinfo);
+                    ResultRelInfo *relinfo);
 extern void ExecASInsertTriggers(EState *estate,
-                                ResultRelInfo *relinfo);
+                    ResultRelInfo *relinfo);
 extern HeapTuple ExecBRInsertTriggers(EState *estate,
                     ResultRelInfo *relinfo,
                     HeapTuple trigtuple);
@@ -127,25 +127,25 @@ extern void ExecARInsertTriggers(EState *estate,
                     ResultRelInfo *relinfo,
                     HeapTuple trigtuple);
 extern void ExecBSDeleteTriggers(EState *estate,
-                                ResultRelInfo *relinfo);
+                    ResultRelInfo *relinfo);
 extern void ExecASDeleteTriggers(EState *estate,
-                                ResultRelInfo *relinfo);
+                    ResultRelInfo *relinfo);
 extern bool ExecBRDeleteTriggers(EState *estate,
-                                ResultRelInfo *relinfo,
-                                ItemPointer tupleid,
-                                CommandId cid);
+                    ResultRelInfo *relinfo,
+                    ItemPointer tupleid,
+                    CommandId cid);
 extern void ExecARDeleteTriggers(EState *estate,
                     ResultRelInfo *relinfo,
                     ItemPointer tupleid);
 extern void ExecBSUpdateTriggers(EState *estate,
-                                ResultRelInfo *relinfo);
+                    ResultRelInfo *relinfo);
 extern void ExecASUpdateTriggers(EState *estate,
-                                ResultRelInfo *relinfo);
+                    ResultRelInfo *relinfo);
 extern HeapTuple ExecBRUpdateTriggers(EState *estate,
-                                     ResultRelInfo *relinfo,
-                                     ItemPointer tupleid,
-                                     HeapTuple newtuple,
-                                     CommandId cid);
+                    ResultRelInfo *relinfo,
+                    ItemPointer tupleid,
+                    HeapTuple newtuple,
+                    CommandId cid);
 extern void ExecARUpdateTriggers(EState *estate,
                     ResultRelInfo *relinfo,
                     ItemPointer tupleid,
index 0d2e319ed44124426c3f9fd5e72dc526478a8419..662fa73d9377d3ca80a180606a12c8eef17e4303 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: typecmds.h,v 1.5 2003/02/03 21:15:44 tgl Exp $
+ * $Id: typecmds.h,v 1.6 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,7 +30,7 @@ extern void AlterDomainDefault(List *names, Node *defaultRaw);
 extern void AlterDomainNotNull(List *names, bool notNull);
 extern void AlterDomainAddConstraint(List *names, Node *constr);
 extern void AlterDomainDropConstraint(List *names, const char *constrName,
-                                     DropBehavior behavior);
+                         DropBehavior behavior);
 
 extern List *GetDomainConstraints(Oid typeOid);
 
index 5eecb53b8d2aaea741cb7c5ace746f8c4172ea70..05e04c72eba46269049791156b214fb666e88ef3 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: execdesc.h,v 1.24 2003/05/08 18:16:37 tgl Exp $
+ * $Id: execdesc.h,v 1.25 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -45,9 +45,9 @@ typedef struct QueryDesc
 
 /* in pquery.c */
 extern QueryDesc *CreateQueryDesc(Query *parsetree, Plan *plantree,
-                                 DestReceiver *dest,
-                                 ParamListInfo params,
-                                 bool doInstrument);
+               DestReceiver *dest,
+               ParamListInfo params,
+               bool doInstrument);
 
 extern void FreeQueryDesc(QueryDesc *qdesc);
 
index 741b99c75f23e4cde12a039975eba209d2092438..d68289ffe068f418c55b6cb76f67ebb3e1b11c0a 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: executor.h,v 1.96 2003/07/21 17:05:10 tgl Exp $
+ * $Id: executor.h,v 1.97 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -31,9 +31,9 @@
 /*
  * prototypes from functions in execAmi.c
  */
-extern void ExecReScan(PlanState *node, ExprContext *exprCtxt);
-extern void ExecMarkPos(PlanState *node);
-extern void ExecRestrPos(PlanState *node);
+extern void ExecReScan(PlanState * node, ExprContext *exprCtxt);
+extern void ExecMarkPos(PlanState * node);
+extern void ExecRestrPos(PlanState * node);
 extern bool ExecSupportsMarkRestore(NodeTag plantype);
 extern bool ExecSupportsBackwardScan(Plan *node);
 
@@ -48,31 +48,31 @@ extern bool execTuplesMatch(HeapTuple tuple1,
                FmgrInfo *eqfunctions,
                MemoryContext evalContext);
 extern bool execTuplesUnequal(HeapTuple tuple1,
-               HeapTuple tuple2,
-               TupleDesc tupdesc,
-               int numCols,
-               AttrNumber *matchColIdx,
-               FmgrInfo *eqfunctions,
-               MemoryContext evalContext);
+                 HeapTuple tuple2,
+                 TupleDesc tupdesc,
+                 int numCols,
+                 AttrNumber *matchColIdx,
+                 FmgrInfo *eqfunctions,
+                 MemoryContext evalContext);
 extern FmgrInfo *execTuplesMatchPrepare(TupleDesc tupdesc,
                       int numCols,
                       AttrNumber *matchColIdx);
 extern void execTuplesHashPrepare(TupleDesc tupdesc,
-                                 int numCols,
-                                 AttrNumber *matchColIdx,
-                                 FmgrInfo **eqfunctions,
-                                 FmgrInfo **hashfunctions);
+                     int numCols,
+                     AttrNumber *matchColIdx,
+                     FmgrInfo **eqfunctions,
+                     FmgrInfo **hashfunctions);
 extern TupleHashTable BuildTupleHashTable(int numCols, AttrNumber *keyColIdx,
-                                         FmgrInfo *eqfunctions,
-                                         FmgrInfo *hashfunctions,
-                                         int nbuckets, Size entrysize,
-                                         MemoryContext tablecxt,
-                                         MemoryContext tempcxt);
+                   FmgrInfo *eqfunctions,
+                   FmgrInfo *hashfunctions,
+                   int nbuckets, Size entrysize,
+                   MemoryContext tablecxt,
+                   MemoryContext tempcxt);
 extern TupleHashEntry LookupTupleHashEntry(TupleHashTable hashtable,
-                                          TupleTableSlot *slot,
-                                          bool *isnew);
+                    TupleTableSlot *slot,
+                    bool *isnew);
 extern TupleHashEntry ScanTupleHashTable(TupleHashTable hashtable,
-                                        TupleHashIterator *state);
+                  TupleHashIterator * state);
 
 /*
  * prototypes from functions in execJunk.c
@@ -93,7 +93,7 @@ extern TupleTableSlot *ExecutorRun(QueryDesc *queryDesc,
 extern void ExecutorEnd(QueryDesc *queryDesc);
 extern void ExecutorRewind(QueryDesc *queryDesc);
 extern void ExecCheckRTPerms(List *rangeTable, CmdType operation);
-extern void ExecEndPlan(PlanState *planstate, EState *estate);
+extern void ExecEndPlan(PlanState * planstate, EState *estate);
 extern void ExecConstraints(ResultRelInfo *resultRelInfo,
                TupleTableSlot *slot, EState *estate);
 extern TupleTableSlot *EvalPlanQual(EState *estate, Index rti,
@@ -103,9 +103,9 @@ extern TupleTableSlot *EvalPlanQual(EState *estate, Index rti,
  * prototypes from functions in execProcnode.c
  */
 extern PlanState *ExecInitNode(Plan *node, EState *estate);
-extern TupleTableSlot *ExecProcNode(PlanState *node);
+extern TupleTableSlot *ExecProcNode(PlanState * node);
 extern int ExecCountSlotsNode(Plan *node);
-extern void ExecEndNode(PlanState *node);
+extern void ExecEndNode(PlanState * node);
 
 /*
  * prototypes from functions in execQual.c
@@ -114,22 +114,22 @@ extern Datum GetAttributeByNum(TupleTableSlot *slot, AttrNumber attrno,
                  bool *isNull);
 extern Datum GetAttributeByName(TupleTableSlot *slot, char *attname,
                   bool *isNull);
-extern void init_fcache(Oid foid, FuncExprState *fcache,
-                       MemoryContext fcacheCxt);
-extern Datum ExecMakeFunctionResult(FuncExprState *fcache,
+extern void init_fcache(Oid foid, FuncExprState * fcache,
+           MemoryContext fcacheCxt);
+extern Datum ExecMakeFunctionResult(FuncExprState * fcache,
                       ExprContext *econtext,
                       bool *isNull,
                       ExprDoneCond *isDone);
-extern Tuplestorestate *ExecMakeTableFunctionResult(ExprState *funcexpr,
+extern Tuplestorestate *ExecMakeTableFunctionResult(ExprState * funcexpr,
                            ExprContext *econtext,
                            TupleDesc expectedDesc,
                            TupleDesc *returnDesc);
-extern Datum ExecEvalExpr(ExprState *expression, ExprContext *econtext,
+extern Datum ExecEvalExpr(ExprState * expression, ExprContext *econtext,
             bool *isNull, ExprDoneCond *isDone);
-extern Datum ExecEvalExprSwitchContext(ExprState *expression, ExprContext *econtext,
+extern Datum ExecEvalExprSwitchContext(ExprState * expression, ExprContext *econtext,
                          bool *isNull, ExprDoneCond *isDone);
-extern ExprState *ExecInitExpr(Expr *node, PlanState *parent);
-extern SubPlanState *ExecInitExprInitPlan(SubPlan *node, PlanState *parent);
+extern ExprState *ExecInitExpr(Expr *node, PlanState * parent);
+extern SubPlanState *ExecInitExprInitPlan(SubPlan *node, PlanState * parent);
 extern ExprState *ExecPrepareExpr(Expr *node, EState *estate);
 extern bool ExecQual(List *qual, ExprContext *econtext, bool resultForNull);
 extern int ExecTargetListLength(List *targetlist);
@@ -140,10 +140,10 @@ extern TupleTableSlot *ExecProject(ProjectionInfo *projInfo,
 /*
  * prototypes from functions in execScan.c
  */
-typedef TupleTableSlot *(*ExecScanAccessMtd) (ScanState *node);
+typedef TupleTableSlot *(*ExecScanAccessMtd) (ScanState * node);
 
-extern TupleTableSlot *ExecScan(ScanState *node, ExecScanAccessMtd accessMtd);
-extern void ExecAssignScanProjectionInfo(ScanState *node);
+extern TupleTableSlot *ExecScan(ScanState * node, ExecScanAccessMtd accessMtd);
+extern void ExecAssignScanProjectionInfo(ScanState * node);
 
 /*
  * prototypes from functions in execTuples.c
@@ -160,14 +160,14 @@ extern TupleTableSlot *ExecClearTuple(TupleTableSlot *slot);
 extern void ExecSetSlotDescriptor(TupleTableSlot *slot,
                      TupleDesc tupdesc, bool shouldFree);
 extern void ExecSetSlotDescriptorIsNew(TupleTableSlot *slot, bool isNew);
-extern void ExecInitResultTupleSlot(EState *estate, PlanState *planstate);
-extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate);
+extern void ExecInitResultTupleSlot(EState *estate, PlanState * planstate);
+extern void ExecInitScanTupleSlot(EState *estate, ScanState * scanstate);
 extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate);
 extern TupleTableSlot *ExecInitNullTupleSlot(EState *estate,
                      TupleDesc tupType);
 extern TupleDesc ExecTypeFromTL(List *targetList, bool hasoid);
 extern TupleDesc ExecCleanTypeFromTL(List *targetList, bool hasoid);
-extern void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg);
+extern void UpdateChangedParamSet(PlanState * node, Bitmapset * newchg);
 
 typedef struct TupOutputState
 {
@@ -177,7 +177,7 @@ typedef struct TupOutputState
 } TupOutputState;
 
 extern TupOutputState *begin_tup_output_tupdesc(DestReceiver *dest,
-                                               TupleDesc tupdesc);
+                        TupleDesc tupdesc);
 extern void do_tup_output(TupOutputState *tstate, char **values);
 extern void do_text_output_multiline(TupOutputState *tstate, char *text);
 extern void end_tup_output(TupOutputState *tstate);
@@ -224,21 +224,21 @@ extern ExprContext *MakePerTupleExprContext(EState *estate);
            ResetExprContext((estate)->es_per_tuple_exprcontext); \
    } while (0)
 
-extern void ExecAssignExprContext(EState *estate, PlanState *planstate);
-extern void ExecAssignResultType(PlanState *planstate,
+extern void ExecAssignExprContext(EState *estate, PlanState * planstate);
+extern void ExecAssignResultType(PlanState * planstate,
                     TupleDesc tupDesc, bool shouldFree);
-extern void ExecAssignResultTypeFromOuterPlan(PlanState *planstate);
-extern void ExecAssignResultTypeFromTL(PlanState *planstate);
-extern TupleDesc ExecGetResultType(PlanState *planstate);
+extern void ExecAssignResultTypeFromOuterPlan(PlanState * planstate);
+extern void ExecAssignResultTypeFromTL(PlanState * planstate);
+extern TupleDesc ExecGetResultType(PlanState * planstate);
 extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList,
-                                              ExprContext *econtext,
-                                              TupleTableSlot *slot);
-extern void ExecAssignProjectionInfo(PlanState *planstate);
-extern void ExecFreeExprContext(PlanState *planstate);
-extern TupleDesc ExecGetScanType(ScanState *scanstate);
-extern void ExecAssignScanType(ScanState *scanstate,
+                       ExprContext *econtext,
+                       TupleTableSlot *slot);
+extern void ExecAssignProjectionInfo(PlanState * planstate);
+extern void ExecFreeExprContext(PlanState * planstate);
+extern TupleDesc ExecGetScanType(ScanState * scanstate);
+extern void ExecAssignScanType(ScanState * scanstate,
                   TupleDesc tupDesc, bool shouldFree);
-extern void ExecAssignScanTypeFromOuterPlan(ScanState *scanstate);
+extern void ExecAssignScanTypeFromOuterPlan(ScanState * scanstate);
 
 extern void ExecOpenIndices(ResultRelInfo *resultRelInfo);
 extern void ExecCloseIndices(ResultRelInfo *resultRelInfo);
index da7e0bf98c47874498fa90fda8afdbd726a12798..1407e5378138b574ec0b1cfb8f62694c186b9df8 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: hashjoin.h,v 1.28 2003/06/22 22:04:55 tgl Exp $
+ * $Id: hashjoin.h,v 1.29 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -71,8 +71,9 @@ typedef struct HashTableData
    /*
     * Info about the datatype-specific hash functions for the datatypes
     * being hashed.  We assume that the inner and outer sides of each
-    * hashclause are the same type, or at least share the same hash function.
-    * This is an array of the same length as the number of hash keys.
+    * hashclause are the same type, or at least share the same hash
+    * function. This is an array of the same length as the number of hash
+    * keys.
     */
    FmgrInfo   *hashfunctions;  /* lookup data for hash functions */
 
index d6d7ea627ead9bf49e23075a5987debbc0e0549b..4f4359c23e3f49ba2e49f596c15e88896baab817 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nodeHash.h,v 1.30 2003/06/22 22:04:55 tgl Exp $
+ * $Id: nodeHash.h,v 1.31 2003/08/04 00:43:30 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,7 +30,7 @@ extern void ExecHashTableInsert(HashJoinTable hashtable,
 extern int ExecHashGetBucket(HashJoinTable hashtable,
                  ExprContext *econtext,
                  List *hashkeys);
-extern int ExecHashGetBatch(int bucketno, HashJoinTable hashtable);
+extern int ExecHashGetBatch(int bucketno, HashJoinTable hashtable);
 extern HeapTuple ExecScanHashBucket(HashJoinState *hjstate, List *hjclauses,
                   ExprContext *econtext);
 extern void ExecHashTableReset(HashJoinTable hashtable, long ntuples);
index 683c4ab7dc9efae916c56c95f5baedc85b213c72..593a2120a23109fc89e5b621e723d2fdc55222e0 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nodeSeqscan.h,v 1.16 2002/12/05 15:50:38 tgl Exp $
+ * $Id: nodeSeqscan.h,v 1.17 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 extern int ExecCountSlotsSeqScan(SeqScan *node);
 extern SeqScanState *ExecInitSeqScan(SeqScan *node, EState *estate);
-extern TupleTableSlot *ExecSeqScan(SeqScanState *node);
-extern void ExecEndSeqScan(SeqScanState *node);
-extern void ExecSeqMarkPos(SeqScanState *node);
-extern void ExecSeqRestrPos(SeqScanState *node);
-extern void ExecSeqReScan(SeqScanState *node, ExprContext *exprCtxt);
+extern TupleTableSlot *ExecSeqScan(SeqScanState * node);
+extern void ExecEndSeqScan(SeqScanState * node);
+extern void ExecSeqMarkPos(SeqScanState * node);
+extern void ExecSeqRestrPos(SeqScanState * node);
+extern void ExecSeqReScan(SeqScanState * node, ExprContext *exprCtxt);
 
 #endif   /* NODESEQSCAN_H */
index 8a3e74ebd1c12beee35b56cb8d71a0908a2c6097..ccab4dd3475f840ffec15ca12e46e4e87af0ed82 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nodeSubplan.h,v 1.15 2002/12/14 00:17:59 tgl Exp $
+ * $Id: nodeSubplan.h,v 1.16 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #include "nodes/execnodes.h"
 
-extern void ExecInitSubPlan(SubPlanState *node, EState *estate);
-extern Datum ExecSubPlan(SubPlanState *node,
-                        ExprContext *econtext,
-                        bool *isNull);
-extern void ExecEndSubPlan(SubPlanState *node);
-extern void ExecReScanSetParamPlan(SubPlanState *node, PlanState *parent);
+extern void ExecInitSubPlan(SubPlanState * node, EState *estate);
+extern Datum ExecSubPlan(SubPlanState * node,
+           ExprContext *econtext,
+           bool *isNull);
+extern void ExecEndSubPlan(SubPlanState * node);
+extern void ExecReScanSetParamPlan(SubPlanState * node, PlanState * parent);
 
-extern void ExecSetParamPlan(SubPlanState *node, ExprContext *econtext);
+extern void ExecSetParamPlan(SubPlanState * node, ExprContext *econtext);
 
 #endif   /* NODESUBPLAN_H */
index ead328da24758c18d916deef3bc24a68cdf75cc3..c7366c1af555675ec8f8849444f44d05e770f30d 100644 (file)
@@ -2,7 +2,7 @@
  *
  * spi.h
  *
- * $Id: spi.h,v 1.36 2003/03/10 03:53:51 tgl Exp $
+ * $Id: spi.h,v 1.37 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -82,8 +82,8 @@ extern int    SPI_finish(void);
 extern void SPI_push(void);
 extern void SPI_pop(void);
 extern int SPI_exec(const char *src, int tcount);
-extern int SPI_execp(void *plan, Datum *values, const char *Nulls,
-                     int tcount);
+extern int SPI_execp(void *plan, Datum *values, const char *Nulls,
+         int tcount);
 extern void *SPI_prepare(const char *src, int nargs, Oid *argtypes);
 extern void *SPI_saveplan(void *plan);
 extern int SPI_freeplan(void *plan);
index 5dd0ff2a6e32d3e4c34b1d0e6d423cdcb0bd0dac..c4a6f65dbffd5b2d7c7dee1418710f39b2350e52 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: spi_priv.h,v 1.14 2003/05/02 20:54:35 tgl Exp $
+ * $Id: spi_priv.h,v 1.15 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -27,7 +27,10 @@ typedef struct
 
 typedef struct
 {
-   /* context containing _SPI_plan itself as well as subsidiary structures */
+   /*
+    * context containing _SPI_plan itself as well as subsidiary
+    * structures
+    */
    MemoryContext plancxt;
    /* List of List of querytrees; one sublist per original parsetree */
    List       *qtlist;
index e7d9497ffee298d69f8eaeb6df19b4faa32fd141..b345fcbaedf7b0f486f42d260dbc240174082cf1 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tstoreReceiver.h,v 1.2 2003/05/06 20:26:28 tgl Exp $
+ * $Id: tstoreReceiver.h,v 1.3 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -20,6 +20,6 @@
 
 
 extern DestReceiver *CreateTuplestoreDestReceiver(Tuplestorestate *tStore,
-                                                 MemoryContext tContext);
+                            MemoryContext tContext);
 
-#endif /* TSTORE_RECEIVER_H */
+#endif   /* TSTORE_RECEIVER_H */
index 6312482a7a9b1444d975eab756664b63a81222fd..4a12cf4274b0d8c27eece68ba07246330ecec2a1 100644 (file)
@@ -15,7 +15,7 @@
  *
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
- * $Id: getaddrinfo.h,v 1.7 2003/07/23 23:30:40 tgl Exp $
+ * $Id: getaddrinfo.h,v 1.8 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 #ifndef HAVE_STRUCT_ADDRINFO
 
-struct addrinfo {
-   int     ai_flags;
-   int     ai_family;
-   int     ai_socktype;
-   int     ai_protocol;
-   size_t  ai_addrlen;
+struct addrinfo
+{
+   int         ai_flags;
+   int         ai_family;
+   int         ai_socktype;
+   int         ai_protocol;
+   size_t      ai_addrlen;
    struct sockaddr *ai_addr;
-   char   *ai_canonname;
+   char       *ai_canonname;
    struct addrinfo *ai_next;
 };
 
@@ -56,10 +57,9 @@ struct addrinfo {
 
 #define NI_NUMERICHOST 1
 #define NI_NUMERICSERV 2
+#endif   /* HAVE_STRUCT_ADDRINFO */
 
-#endif /* HAVE_STRUCT_ADDRINFO */
-
-#ifndef    NI_MAXHOST
+#ifndef NI_MAXHOST
 #define NI_MAXHOST 1025
 #define NI_MAXSERV 32
 #endif
@@ -87,16 +87,15 @@ struct addrinfo {
 #ifdef getnameinfo
 #undef getnameinfo
 #endif
-#define    getnameinfo pg_getnameinfo
+#define getnameinfo pg_getnameinfo
 
 extern int getaddrinfo(const char *node, const char *service,
-                      const struct addrinfo *hints, struct addrinfo **res);
-extern void freeaddrinfo(struct addrinfo *res);
+           const struct addrinfo * hints, struct addrinfo ** res);
+extern void freeaddrinfo(struct addrinfo * res);
 extern const char *gai_strerror(int errcode);
-extern int getnameinfo(const struct sockaddr *sa, int salen,
+extern int getnameinfo(const struct sockaddr * sa, int salen,
            char *node, int nodelen,
            char *service, int servicelen, int flags);
+#endif   /* HAVE_GETADDRINFO */
 
-#endif /* HAVE_GETADDRINFO */
-
-#endif /* GETADDRINFO_H */
+#endif   /* GETADDRINFO_H */
index 5b20622cee46ef2645d001871d8db48ef513155d..3651cdeee92b2ec42585d1338f89992a4759ddb8 100644 (file)
@@ -5,29 +5,29 @@
  * Portions Copyright (c) 2003
  * PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/include/getopt_long.h,v 1.1 2003/01/06 18:53:25 petere Exp $
+ * $Header: /cvsroot/pgsql/src/include/getopt_long.h,v 1.2 2003/08/04 00:43:29 momjian Exp $
  */
 
 /* These are picked up from the system's getopt() facility. */
-extern int opterr;
-extern int optind;
-extern int optopt;
+extern int opterr;
+extern int optind;
+extern int optopt;
 extern char *optarg;
 
 /* Some systems have this, otherwise you need to define it somewhere. */
-extern int optreset;
+extern int optreset;
 
-struct option {
+struct option
+{
    const char *name;
-   int has_arg;
-   int *flag;
-   int val;
+   int         has_arg;
+   int        *flag;
+   int         val;
 };
 
 #define no_argument 0
 #define required_argument 1
 
-int
-getopt_long(int argc, char * const argv[],
+int getopt_long(int argc, char *const argv[],
            const char *optstring,
-           const struct option *longopts, int *longindex);
+           const struct option * longopts, int *longindex);
index 8e305ee430c373321955122e46bd1845fbbd0fd4..587fea172eadfc87aed776f4a987c0d7592a5958 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: stringinfo.h,v 1.26 2003/04/24 21:16:44 tgl Exp $
+ * $Id: stringinfo.h,v 1.27 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -85,14 +85,15 @@ extern void initStringInfo(StringInfo str);
  * to str if necessary.  This is sort of like a combination of sprintf and
  * strcat.
  */
-extern void appendStringInfo(StringInfo str, const char *fmt, ...)
+extern void
+appendStringInfo(StringInfo str, const char *fmt,...)
 /* This extension allows gcc to check the format string */
 __attribute__((format(printf, 2, 3)));
 
 /*------------------------
  * appendStringInfoVA
  * Attempt to format text data under the control of fmt (an sprintf-style
- * format string) and append it to whatever is already in str.  If successful
+ * format string) and append it to whatever is already in str. If successful
  * return true; if not (because there's not enough space), return false
  * without modifying str.  Typically the caller would enlarge str and retry
  * on false return --- see appendStringInfo for standard usage pattern.
index a881e0ae0a8536c14953883cbfd1f4ec18f1e32c..bde0568d48ef8ef3ecec07566d63607988709a4a 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: crypt.h,v 1.24 2002/12/05 18:52:43 momjian Exp $
+ * $Id: crypt.h,v 1.25 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,7 +23,7 @@
 
 
 extern int md5_crypt_verify(const Port *port, const char *user,
-               char *client_pass);
+                char *client_pass);
 extern bool md5_hash(const void *buff, size_t len, char *hexsum);
 extern bool CheckMD5Pwd(char *passwd, char *storedpwd, char *seed);
 
index 5c614b168153aa82797d736440b27a1e989a5f6e..c60030ccf50f951a2a4ea517fad4755271f06ad6 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
- * $Id: ip.h,v 1.9 2003/07/23 23:30:41 tgl Exp $
+ * $Id: ip.h,v 1.10 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "libpq/pqcomm.h"
 
 
-extern int   getaddrinfo_all(const char *hostname, const char *servname,
-                            const struct addrinfo *hintp,
-                            struct addrinfo **result);
-extern void  freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai);
+extern int getaddrinfo_all(const char *hostname, const char *servname,
+               const struct addrinfo * hintp,
+               struct addrinfo ** result);
+extern void freeaddrinfo_all(int hint_ai_family, struct addrinfo * ai);
 
-extern int getnameinfo_all(const struct sockaddr_storage *addr, int salen,
-                          char *node, int nodelen,
-                          char *service, int servicelen,
-                          int flags);
+extern int getnameinfo_all(const struct sockaddr_storage * addr, int salen,
+               char *node, int nodelen,
+               char *service, int servicelen,
+               int flags);
 
-extern int   rangeSockAddr(const struct sockaddr_storage *addr,
-           const struct sockaddr_storage *netaddr,
-           const struct sockaddr_storage *netmask);
+extern int rangeSockAddr(const struct sockaddr_storage * addr,
+             const struct sockaddr_storage * netaddr,
+             const struct sockaddr_storage * netmask);
 
-extern int SockAddr_cidr_mask(struct sockaddr_storage **mask,
-               char *numbits, int family);
+extern int SockAddr_cidr_mask(struct sockaddr_storage ** mask,
+                  char *numbits, int family);
 
 #ifdef HAVE_UNIX_SOCKETS
-#define    IS_AF_UNIX(fam) ((fam) == AF_UNIX)
+#define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
 #else
-#define    IS_AF_UNIX(fam) (0)
+#define IS_AF_UNIX(fam) (0)
 #endif
 
-#endif /* IP_H */
+#endif   /* IP_H */
index 19ac0402d38f3328192fa96e3e5718b8c24405bb..44bf573313f6c88d0add5c2165763f84d87ef7de 100644 (file)
@@ -11,7 +11,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: libpq-be.h,v 1.35 2003/04/17 22:26:01 tgl Exp $
+ * $Id: libpq-be.h,v 1.36 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,8 +30,8 @@
 /*
  * This is used by the postmaster in its communication with frontends. It
  * contains all state information needed during this communication before the
- * backend is run.  The Port structure is kept in malloc'd memory and is
- * still available when a backend is running (see MyProcPort).  The data
+ * backend is run. The Port structure is kept in malloc'd memory and is
+ * still available when a backend is running (see MyProcPort). The data
  * it points to must also be malloc'd, or else palloc'd in TopMemoryContext,
  * so that it survives into PostgresMain execution!
  */
@@ -44,9 +44,10 @@ typedef struct Port
    SockAddr    raddr;          /* remote addr (client) */
 
    /*
-    * Information that needs to be saved from the startup packet and passed
-    * into backend execution.  "char *" fields are NULL if not set.
-    * guc_options points to a List of alternating option names and values.
+    * Information that needs to be saved from the startup packet and
+    * passed into backend execution.  "char *" fields are NULL if not
+    * set. guc_options points to a List of alternating option names and
+    * values.
     */
    char       *database_name;
    char       *user_name;
index 9f72b7e432c042137129f4fa596868f4d213309d..82e621fcd1ecdb8dec47d5fc9dfc9d5562cc8576 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: libpq.h,v 1.58 2003/06/12 07:36:51 momjian Exp $
+ * $Id: libpq.h,v 1.59 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,8 +46,8 @@ typedef struct
  * prototypes for functions in pqcomm.c
  */
 extern int StreamServerPort(int family, char *hostName,
-   unsigned short portNumber, char *unixSocketName, int ListenSocket[],
-   int MaxListen);
+    unsigned short portNumber, char *unixSocketName, int ListenSocket[],
+                int MaxListen);
 extern int StreamConnection(int server_fd, Port *port);
 extern void StreamClose(int sock);
 extern void TouchSocketFile(void);
@@ -66,11 +66,11 @@ extern void pq_endcopyout(bool errorAbort);
 /*
  * prototypes for functions in be-secure.c
  */
-extern int     secure_initialize(void);
-extern void        secure_destroy(void);
-extern int     secure_open_server(Port *port);
-extern void        secure_close(Port *port);
-extern ssize_t secure_read(Port *port, void *ptr, size_t len);
-extern ssize_t secure_write(Port *port, void *ptr, size_t len);
+extern int secure_initialize(void);
+extern void secure_destroy(void);
+extern int secure_open_server(Port *port);
+extern void secure_close(Port *port);
+extern ssize_t secure_read(Port *port, void *ptr, size_t len);
+extern ssize_t secure_write(Port *port, void *ptr, size_t len);
 
 #endif   /* LIBPQ_H */
index 2e41b0896adc94191c96088890b11b9e768c33b4..da756fb31660db3c4ca5b7887ee7b2f3574924e7 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pqcomm.h,v 1.91 2003/07/27 17:10:07 tgl Exp $
+ * $Id: pqcomm.h,v 1.92 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 
 #ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
-# ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
-#  define ss_family __ss_family
-# else
-#  error struct sockaddr_storage does not provide an ss_family member
-# endif
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
+#define ss_family __ss_family
+#else
+#error struct sockaddr_storage does not provide an ss_family member
+#endif
 #endif
 
 #ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN
 #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
 #endif
 
-#else /* !HAVE_STRUCT_SOCKADDR_STORAGE */
+#else                          /* !HAVE_STRUCT_SOCKADDR_STORAGE */
 
 /* Define a struct sockaddr_storage if we don't have one. */
 
-struct sockaddr_storage {
-   union {
+struct sockaddr_storage
+{
+   union
+   {
        struct sockaddr sa;     /* get the system-dependent fields */
-       int64   ss_align;       /* ensures struct is properly aligned */
-       char    ss_pad[128];    /* ensures struct has desired size */
-   } ss_stuff;
+       int64       ss_align;   /* ensures struct is properly aligned */
+       char        ss_pad[128];    /* ensures struct has desired size */
+   }           ss_stuff;
 };
 
 #define ss_family  ss_stuff.sa.sa_family
@@ -65,12 +67,12 @@ struct sockaddr_storage {
 #define ss_len     ss_stuff.sa.sa_len
 #define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
 #endif
+#endif   /* HAVE_STRUCT_SOCKADDR_STORAGE */
 
-#endif /* HAVE_STRUCT_SOCKADDR_STORAGE */
-
-typedef struct {
-   struct sockaddr_storage addr;
-   ACCEPT_TYPE_ARG3    salen;
+typedef struct
+{
+   struct sockaddr_storage addr;
+   ACCEPT_TYPE_ARG3 salen;
 } SockAddr;
 
 /* Configure the UNIX socket location for the well known port. */
@@ -148,7 +150,7 @@ extern bool Db_user_namespace;
 
 /*
  * In protocol 3.0 and later, the startup packet length is not fixed, but
- * we set an arbitrary limit on it anyway.  This is just to prevent simple
+ * we set an arbitrary limit on it anyway. This is just to prevent simple
  * denial-of-service attacks via sending enough data to run the server
  * out of memory.
  */
index 2102960e884c1f38254272a880d5c56f1196c270..9f73083e10ae873dc4afc12b65ac20588c2b3e99 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pqformat.h,v 1.18 2003/05/09 21:19:50 tgl Exp $
+ * $Id: pqformat.h,v 1.19 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -19,7 +19,7 @@ extern void pq_beginmessage(StringInfo buf, char msgtype);
 extern void pq_sendbyte(StringInfo buf, int byt);
 extern void pq_sendbytes(StringInfo buf, const char *data, int datalen);
 extern void pq_sendcountedtext(StringInfo buf, const char *str, int slen,
-                              bool countincludesself);
+                  bool countincludesself);
 extern void pq_sendtext(StringInfo buf, const char *str, int slen);
 extern void pq_sendstring(StringInfo buf, const char *str);
 extern void pq_sendint(StringInfo buf, int i, int b);
index 7c7da9d1994e2480e1b4fd8bacb85f7b103297a6..a281c586a5975f71eaf97660e4d1e45bab5e122f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: pg_wchar.h,v 1.47 2003/07/27 04:53:11 tgl Exp $ */
+/* $Id: pg_wchar.h,v 1.48 2003/08/04 00:43:31 momjian Exp $ */
 
 #ifndef PG_WCHAR_H
 #define PG_WCHAR_H
@@ -295,7 +295,7 @@ extern int  pg_database_encoding_max_length(void);
 
 extern void SetDefaultClientEncoding(void);
 extern int SetClientEncoding(int encoding, bool doit);
-extern void    InitializeClientEncoding(void);
+extern void InitializeClientEncoding(void);
 extern int pg_get_client_encoding(void);
 extern const char *pg_get_client_encoding_name(void);
 
index 7e7219ef4dc34cd95558edad15cd6e0026f405e4..2531879417cbbe422a1d1a157a1885bfe88a2c32 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: miscadmin.h,v 1.129 2003/07/29 00:03:18 tgl Exp $
+ * $Id: miscadmin.h,v 1.130 2003/08/04 00:43:29 momjian Exp $
  *
  * NOTES
  *   some of the information in this file should be moved to
@@ -54,8 +54,8 @@
  * A related, but conceptually distinct, mechanism is the "critical section"
  * mechanism.  A critical section not only holds off cancel/die interrupts,
  * but causes any ereport(ERROR) or ereport(FATAL) to become ereport(PANIC)
- * --- that is, a system-wide reset is forced.  Needless to say, only really
- * *critical* code should be marked as a critical section!  Currently, this
+ * --- that is, a system-wide reset is forced. Needless to say, only really
+ * *critical* code should be marked as a critical section! Currently, this
  * mechanism is only used for XLOG-related code.
  *
  *****************************************************************************/
@@ -196,9 +196,11 @@ extern bool NetServer;
 extern bool EnableSSL;
 extern bool SilentMode;
 extern int MaxBackends;
+
 #define DEF_MAXBACKENDS 32
 extern int ReservedBackends;
-extern DLLIMPORT int   NBuffers;
+extern DLLIMPORT int NBuffers;
+
 #define DEF_NBUFFERS (DEF_MAXBACKENDS > 8 ? DEF_MAXBACKENDS * 2 : 16)
 extern int PostPortNumber;
 extern int Unix_socket_permissions;
@@ -243,7 +245,7 @@ extern char *convertstr(unsigned char *buff, int len, int dest);
 
 /* in utils/misc/superuser.c */
 extern bool superuser(void);   /* current user is superuser */
-extern bool superuser_arg(AclId userid);   /* given user is superuser */
+extern bool superuser_arg(AclId userid);       /* given user is superuser */
 
 
 /*****************************************************************************
index 7974c44aae78540fb4de5320f37b65363d692a18..6c2e8ac13c5b99b9b13199300b842d350c2d866f 100644 (file)
@@ -13,7 +13,7 @@
  *
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
- * $Id: bitmapset.h,v 1.2 2003/06/29 23:05:05 tgl Exp $
+ * $Id: bitmapset.h,v 1.3 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 /* The unit size can be adjusted by changing these three declarations: */
 #define BITS_PER_BITMAPWORD 32
 typedef uint32 bitmapword;     /* must be an unsigned type */
-typedef int32 signedbitmapword;    /* must be the matching signed type */
+typedef int32 signedbitmapword; /* must be the matching signed type */
 
-typedef struct Bitmapset {
-   int     nwords;             /* number of words in array */
-   bitmapword words[1];        /* really [nwords] */
-} Bitmapset;                   /* VARIABLE LENGTH STRUCT */
+typedef struct Bitmapset
+{
+   int         nwords;         /* number of words in array */
+   bitmapword  words[1];       /* really [nwords] */
+}  Bitmapset;          /* VARIABLE LENGTH STRUCT */
 
 
 /* result of bms_membership */
@@ -41,41 +42,42 @@ typedef enum
    BMS_EMPTY_SET,              /* 0 members */
    BMS_SINGLETON,              /* 1 member */
    BMS_MULTIPLE                /* >1 member */
-} BMS_Membership;
+}  BMS_Membership;
 
 
 /*
  * function prototypes in nodes/bitmapset.c
  */
 
-extern Bitmapset *bms_copy(const Bitmapset *a);
-extern bool bms_equal(const Bitmapset *a, const Bitmapset *b);
+extern Bitmapset *bms_copy(const Bitmapset * a);
+extern bool bms_equal(const Bitmapset * a, const Bitmapset * b);
 extern Bitmapset *bms_make_singleton(int x);
-extern void bms_free(Bitmapset *a);
+extern void bms_free(Bitmapset * a);
+
+extern Bitmapset *bms_union(const Bitmapset * a, const Bitmapset * b);
+extern Bitmapset *bms_intersect(const Bitmapset * a, const Bitmapset * b);
+extern Bitmapset *bms_difference(const Bitmapset * a, const Bitmapset * b);
+extern bool bms_is_subset(const Bitmapset * a, const Bitmapset * b);
+extern bool bms_is_member(int x, const Bitmapset * a);
+extern bool bms_overlap(const Bitmapset * a, const Bitmapset * b);
+extern bool bms_nonempty_difference(const Bitmapset * a, const Bitmapset * b);
+extern int bms_singleton_member(const Bitmapset * a);
+extern int bms_num_members(const Bitmapset * a);
 
-extern Bitmapset *bms_union(const Bitmapset *a, const Bitmapset *b);
-extern Bitmapset *bms_intersect(const Bitmapset *a, const Bitmapset *b);
-extern Bitmapset *bms_difference(const Bitmapset *a, const Bitmapset *b);
-extern bool bms_is_subset(const Bitmapset *a, const Bitmapset *b);
-extern bool bms_is_member(int x, const Bitmapset *a);
-extern bool bms_overlap(const Bitmapset *a, const Bitmapset *b);
-extern bool bms_nonempty_difference(const Bitmapset *a, const Bitmapset *b);
-extern int bms_singleton_member(const Bitmapset *a);
-extern int bms_num_members(const Bitmapset *a);
 /* optimized tests when we don't need to know exact membership count: */
-extern BMS_Membership bms_membership(const Bitmapset *a);
-extern bool bms_is_empty(const Bitmapset *a);
+extern BMS_Membership bms_membership(const Bitmapset * a);
+extern bool bms_is_empty(const Bitmapset * a);
 
 /* these routines recycle (modify or free) their non-const inputs: */
 
-extern Bitmapset *bms_add_member(Bitmapset *a, int x);
-extern Bitmapset *bms_del_member(Bitmapset *a, int x);
-extern Bitmapset *bms_add_members(Bitmapset *a, const Bitmapset *b);
-extern Bitmapset *bms_int_members(Bitmapset *a, const Bitmapset *b);
-extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b);
-extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b);
+extern Bitmapset *bms_add_member(Bitmapset * a, int x);
+extern Bitmapset *bms_del_member(Bitmapset * a, int x);
+extern Bitmapset *bms_add_members(Bitmapset * a, const Bitmapset * b);
+extern Bitmapset *bms_int_members(Bitmapset * a, const Bitmapset * b);
+extern Bitmapset *bms_del_members(Bitmapset * a, const Bitmapset * b);
+extern Bitmapset *bms_join(Bitmapset * a, Bitmapset * b);
 
 /* support for iterating through the integer elements of a set: */
-extern int bms_first_member(Bitmapset *a);
+extern int bms_first_member(Bitmapset * a);
 
 #endif   /* BITMAPSET_H */
index c6f1342343816b3ef488e5402aae725f55f64cfc..dc68f88a62a4191b3bbcf363dc3bb5370e56c744 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: execnodes.h,v 1.100 2003/06/29 00:33:44 tgl Exp $
+ * $Id: execnodes.h,v 1.101 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,10 +46,10 @@ typedef struct IndexInfo
    NodeTag     type;
    int         ii_NumIndexAttrs;
    AttrNumber  ii_KeyAttrNumbers[INDEX_MAX_KEYS];
-   List       *ii_Expressions; /* list of Expr */
-   List       *ii_ExpressionsState; /* list of ExprState */
+   List       *ii_Expressions; /* list of Expr */
+   List       *ii_ExpressionsState;    /* list of ExprState */
    List       *ii_Predicate;   /* list of Expr */
-   List       *ii_PredicateState; /* list of ExprState */
+   List       *ii_PredicateState;      /* list of ExprState */
    bool        ii_Unique;
 } IndexInfo;
 
@@ -80,7 +80,7 @@ typedef struct ExprContext_CB
  *
  * There are two memory contexts associated with an ExprContext:
  * * ecxt_per_query_memory is a query-lifespan context, typically the same
- *   context the ExprContext node itself is allocated in.  This context
+ *   context the ExprContext node itself is allocated in.  This context
  *   can be used for purposes such as storing function call cache info.
  * * ecxt_per_tuple_memory is a short-term context for expression results.
  *   As the name suggests, it will typically be reset once per tuple,
@@ -176,7 +176,7 @@ typedef struct ReturnSetInfo
  *     call ExecProject().  -cim 6/3/91
  *
  *     ExecProject() evaluates the tlist, forms a tuple, and stores it
- *     in the given slot.  As a side-effect, the actual datum values and
+ *     in the given slot.  As a side-effect, the actual datum values and
  *     null indicators are placed in the work arrays tupValues/tupNulls.
  *
  *     targetlist      target list for projection
@@ -283,9 +283,9 @@ typedef struct EState
    NodeTag     type;
 
    /* Basic state for all query types: */
-   ScanDirection es_direction; /* current scan direction */
+   ScanDirection es_direction; /* current scan direction */
    Snapshot    es_snapshot;    /* time qual to use */
-   List       *es_range_table; /* List of RangeTableEntrys */
+   List       *es_range_table; /* List of RangeTableEntrys */
 
    /* Info about target table for insert/update/delete queries: */
    ResultRelInfo *es_result_relations; /* array of ResultRelInfos */
@@ -293,7 +293,7 @@ typedef struct EState
    ResultRelInfo *es_result_relation_info;     /* currently active array
                                                 * elt */
    JunkFilter *es_junkFilter;  /* currently active junk filter */
-   Relation    es_into_relation_descriptor; /* for SELECT INTO */
+   Relation    es_into_relation_descriptor;    /* for SELECT INTO */
 
    /* Parameter info: */
    ParamListInfo es_param_list_info;   /* values of external params */
@@ -309,10 +309,11 @@ typedef struct EState
    List       *es_rowMark;     /* not good place, but there is no other */
 
    bool        es_instrument;  /* true requests runtime instrumentation */
-   bool        es_force_oids;  /* true forces result tuples to have (space
-                                * for) OIDs --- used for SELECT INTO */
+   bool        es_force_oids;  /* true forces result tuples to have
+                                * (space for) OIDs --- used for SELECT
+                                * INTO */
 
-   List       *es_exprcontexts; /* List of ExprContexts within EState */
+   List       *es_exprcontexts;    /* List of ExprContexts within EState */
 
    /*
     * this ExprContext is for per-output-tuple operations, such as
@@ -324,10 +325,11 @@ typedef struct EState
 
    /* Below is to re-evaluate plan qual in READ COMMITTED mode */
    Plan       *es_topPlan;     /* link to top of plan tree */
-   struct evalPlanQual *es_evalPlanQual; /* chain of PlanQual states */
-   bool       *es_evTupleNull; /* local array of EPQ status */
+   struct evalPlanQual *es_evalPlanQual;       /* chain of PlanQual
+                                                * states */
+   bool       *es_evTupleNull; /* local array of EPQ status */
    HeapTuple  *es_evTuple;     /* shared array of EPQ substitute tuples */
-   bool        es_useEvalPlan; /* evaluating EPQ tuples? */
+   bool        es_useEvalPlan; /* evaluating EPQ tuples? */
 } EState;
 
 
@@ -346,7 +348,7 @@ typedef struct TupleHashEntryData
    uint32      hashkey;        /* exact hash key of this entry */
    HeapTuple   firstTuple;     /* copy of first tuple in this group */
    /* there may be additional data beyond the end of this struct */
-} TupleHashEntryData;          /* VARIABLE LENGTH STRUCT */
+}  TupleHashEntryData; /* VARIABLE LENGTH STRUCT */
 
 typedef struct TupleHashTableData
 {
@@ -359,13 +361,13 @@ typedef struct TupleHashTableData
    Size        entrysize;      /* actual size to make each hash entry */
    int         nbuckets;       /* number of buckets in hash table */
    TupleHashEntry buckets[1];  /* VARIABLE LENGTH ARRAY */
-} TupleHashTableData;          /* VARIABLE LENGTH STRUCT */
+}  TupleHashTableData; /* VARIABLE LENGTH STRUCT */
 
 typedef struct
 {
    TupleHashEntry next_entry;  /* next entry in current chain */
    int         next_bucket;    /* next chain */
-} TupleHashIterator;
+}  TupleHashIterator;
 
 #define ResetTupleHashIterator(iter) \
    ((iter)->next_entry = NULL, \
@@ -397,7 +399,7 @@ typedef struct ExprState
 {
    NodeTag     type;
    Expr       *expr;           /* associated Expr node */
-} ExprState;
+}  ExprState;
 
 /* ----------------
  *     GenericExprState node
@@ -410,7 +412,7 @@ typedef struct GenericExprState
 {
    ExprState   xprstate;
    ExprState  *arg;            /* state of my child node */
-} GenericExprState;
+}  GenericExprState;
 
 /* ----------------
  *     AggrefExprState node
@@ -421,7 +423,7 @@ typedef struct AggrefExprState
    ExprState   xprstate;
    ExprState  *target;         /* state of my child node */
    int         aggno;          /* ID number for agg within its plan node */
-} AggrefExprState;
+}  AggrefExprState;
 
 /* ----------------
  *     ArrayRefExprState node
@@ -434,7 +436,7 @@ typedef struct AggrefExprState
 typedef struct ArrayRefExprState
 {
    ExprState   xprstate;
-   List       *refupperindexpr; /* states for child nodes */
+   List       *refupperindexpr;    /* states for child nodes */
    List       *reflowerindexpr;
    ExprState  *refexpr;
    ExprState  *refassgnexpr;
@@ -442,7 +444,7 @@ typedef struct ArrayRefExprState
    int16       refelemlength;  /* typlen of the array element type */
    bool        refelembyval;   /* is the element type pass-by-value? */
    char        refelemalign;   /* typalign of the element type */
-} ArrayRefExprState;
+}  ArrayRefExprState;
 
 /* ----------------
  *     FuncExprState node
@@ -458,17 +460,17 @@ typedef struct FuncExprState
    List       *args;           /* states of argument expressions */
 
    /*
-    * Function manager's lookup info for the target function.  If func.fn_oid
-    * is InvalidOid, we haven't initialized it yet.
+    * Function manager's lookup info for the target function.  If
+    * func.fn_oid is InvalidOid, we haven't initialized it yet.
     */
    FmgrInfo    func;
 
    /*
-    * We also need to store argument values across calls when evaluating a
-    * function-returning-set.
+    * We also need to store argument values across calls when evaluating
+    * function-returning-set.
     *
-    * setArgsValid is true when we are evaluating a set-valued function
-    * and we are in the middle of a call series; we want to pass the same
+    * setArgsValid is true when we are evaluating a set-valued function and
+    * we are in the middle of a call series; we want to pass the same
     * argument values to the function again (and again, until it returns
     * ExprEndResult).
     */
@@ -486,7 +488,7 @@ typedef struct FuncExprState
     * data only if setArgsValid is true.
     */
    FunctionCallInfoData setArgs;
-} FuncExprState;
+}  FuncExprState;
 
 /* ----------------
  *     ScalarArrayOpExprState node
@@ -496,13 +498,13 @@ typedef struct FuncExprState
  */
 typedef struct ScalarArrayOpExprState
 {
-   FuncExprState   fxprstate;
+   FuncExprState fxprstate;
    /* Cached info about array element type */
-   Oid             element_type;
-   int16           typlen;
-   bool            typbyval;
-   char            typalign;
-} ScalarArrayOpExprState;
+   Oid         element_type;
+   int16       typlen;
+   bool        typbyval;
+   char        typalign;
+}  ScalarArrayOpExprState;
 
 /* ----------------
  *     BoolExprState node
@@ -512,7 +514,7 @@ typedef struct BoolExprState
 {
    ExprState   xprstate;
    List       *args;           /* states of argument expression(s) */
-} BoolExprState;
+}  BoolExprState;
 
 /* ----------------
  *     SubPlanState node
@@ -522,7 +524,7 @@ typedef struct SubPlanState
 {
    ExprState   xprstate;
    EState     *sub_estate;     /* subselect plan has its own EState */
-   struct PlanState *planstate; /* subselect plan's state tree */
+   struct PlanState *planstate;    /* subselect plan's state tree */
    List       *exprs;          /* states of combining expression(s) */
    List       *args;           /* states of argument expression(s) */
    bool        needShutdown;   /* TRUE = need to shutdown subplan */
@@ -535,11 +537,11 @@ typedef struct SubPlanState
    bool        havehashrows;   /* TRUE if hashtable is not empty */
    bool        havenullrows;   /* TRUE if hashnulls is not empty */
    MemoryContext tablecxt;     /* memory context containing tables */
-   ExprContext *innerecontext; /* working context for comparisons */
+   ExprContext *innerecontext; /* working context for comparisons */
    AttrNumber *keyColIdx;      /* control data for hash tables */
    FmgrInfo   *eqfunctions;    /* comparison functions for hash tables */
    FmgrInfo   *hashfunctions;  /* lookup data for hash functions */
-} SubPlanState;
+}  SubPlanState;
 
 /* ----------------
  *     CaseExprState node
@@ -550,7 +552,7 @@ typedef struct CaseExprState
    ExprState   xprstate;
    List       *args;           /* the arguments (list of WHEN clauses) */
    ExprState  *defresult;      /* the default result (ELSE clause) */
-} CaseExprState;
+}  CaseExprState;
 
 /* ----------------
  *     CaseWhenState node
@@ -561,7 +563,7 @@ typedef struct CaseWhenState
    ExprState   xprstate;
    ExprState  *expr;           /* condition expression */
    ExprState  *result;         /* substitution result */
-} CaseWhenState;
+}  CaseWhenState;
 
 /* ----------------
  *     ArrayExprState node
@@ -577,7 +579,7 @@ typedef struct ArrayExprState
    int16       elemlength;     /* typlen of the array element type */
    bool        elembyval;      /* is the element type pass-by-value? */
    char        elemalign;      /* typalign of the element type */
-} ArrayExprState;
+}  ArrayExprState;
 
 /* ----------------
  *     CoalesceExprState node
@@ -586,8 +588,8 @@ typedef struct ArrayExprState
 typedef struct CoalesceExprState
 {
    ExprState   xprstate;
-   List    *args;              /* the arguments */
-} CoalesceExprState;
+   List       *args;           /* the arguments */
+}  CoalesceExprState;
 
 /* ----------------
  *     CoerceToDomainState node
@@ -599,7 +601,7 @@ typedef struct CoerceToDomainState
    ExprState  *arg;            /* input expression */
    /* Cached list of constraints that need to be checked */
    List       *constraints;    /* list of DomainConstraintState nodes */
-} CoerceToDomainState;
+}  CoerceToDomainState;
 
 /*
  * DomainConstraintState - one item to check during CoerceToDomain
@@ -612,15 +614,15 @@ typedef enum DomainConstraintType
 {
    DOM_CONSTRAINT_NOTNULL,
    DOM_CONSTRAINT_CHECK
-} DomainConstraintType;
+}  DomainConstraintType;
 
 typedef struct DomainConstraintState
 {
    NodeTag     type;
-   DomainConstraintType constrainttype; /* constraint type */
+   DomainConstraintType constrainttype;        /* constraint type */
    char       *name;           /* name of constraint (for error msgs) */
    ExprState  *check_expr;     /* for CHECK, a boolean expression */
-} DomainConstraintState;
+}  DomainConstraintState;
 
 
 /* ----------------------------------------------------------------
@@ -652,13 +654,14 @@ typedef struct PlanState
                                         * plan node */
 
    /*
-    * Common structural data for all Plan types.  These links to subsidiary
-    * state trees parallel links in the associated plan tree (except for
-    * the subPlan list, which does not exist in the plan tree).
+    * Common structural data for all Plan types.  These links to
+    * subsidiary state trees parallel links in the associated plan tree
+    * (except for the subPlan list, which does not exist in the plan
+    * tree).
     */
    List       *targetlist;     /* target list to be computed at this node */
    List       *qual;           /* implicitly-ANDed qual conditions */
-   struct PlanState *lefttree; /* input plan tree(s) */
+   struct PlanState *lefttree; /* input plan tree(s) */
    struct PlanState *righttree;
    List       *initPlan;       /* Init SubPlanState nodes (un-correlated
                                 * expr subselects) */
@@ -672,13 +675,13 @@ typedef struct PlanState
    /*
     * Other run-time state needed by most if not all node types.
     */
-   TupleTableSlot *ps_OuterTupleSlot; /* slot for current "outer" tuple */
-   TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */
-   ExprContext *ps_ExprContext; /* node's expression-evaluation context */
-   ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */
-   bool        ps_TupFromTlist; /* state flag for processing set-valued
-                                 * functions in targetlist */
-} PlanState;
+   TupleTableSlot *ps_OuterTupleSlot;  /* slot for current "outer" tuple */
+   TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */
+   ExprContext *ps_ExprContext;    /* node's expression-evaluation context */
+   ProjectionInfo *ps_ProjInfo;    /* info for doing tuple projection */
+   bool        ps_TupFromTlist;/* state flag for processing set-valued
+                                * functions in targetlist */
+}  PlanState;
 
 /* ----------------
  * these are are defined to avoid confusion problems with "left"
@@ -747,7 +750,7 @@ typedef struct ScanState
    Relation    ss_currentRelation;
    HeapScanDesc ss_currentScanDesc;
    TupleTableSlot *ss_ScanTupleSlot;
-} ScanState;
+}  ScanState;
 
 /*
  * SeqScan uses a bare ScanState as its state node, since it needs
@@ -894,9 +897,9 @@ typedef struct NestLoopState
 typedef struct MergeJoinState
 {
    JoinState   js;             /* its first field is NodeTag */
-   List       *mergeclauses;       /* list of ExprState nodes */
-   List       *mj_OuterSkipQual;   /* list of ExprState nodes */
-   List       *mj_InnerSkipQual;   /* list of ExprState nodes */
+   List       *mergeclauses;   /* list of ExprState nodes */
+   List       *mj_OuterSkipQual;       /* list of ExprState nodes */
+   List       *mj_InnerSkipQual;       /* list of ExprState nodes */
    int         mj_JoinState;
    bool        mj_MatchedOuter;
    bool        mj_MatchedInner;
@@ -934,9 +937,9 @@ typedef struct HashJoinState
    HashJoinTable hj_HashTable;
    int         hj_CurBucketNo;
    HashJoinTuple hj_CurTuple;
-   List       *hj_OuterHashKeys;   /* list of ExprState nodes */
-   List       *hj_InnerHashKeys;   /* list of ExprState nodes */
-   List       *hj_HashOperators;   /* list of operator OIDs */
+   List       *hj_OuterHashKeys;       /* list of ExprState nodes */
+   List       *hj_InnerHashKeys;       /* list of ExprState nodes */
+   List       *hj_HashOperators;       /* list of operator OIDs */
    TupleTableSlot *hj_OuterTupleSlot;
    TupleTableSlot *hj_HashTupleSlot;
    TupleTableSlot *hj_NullInnerTupleSlot;
@@ -963,8 +966,8 @@ typedef struct HashJoinState
 typedef struct MaterialState
 {
    ScanState   ss;             /* its first field is NodeTag */
-   void       *tuplestorestate; /* private state of tuplestore.c */
-   bool        eof_underlying; /* reached end of underlying plan? */
+   void       *tuplestorestate;    /* private state of tuplestore.c */
+   bool        eof_underlying; /* reached end of underlying plan? */
 } MaterialState;
 
 /* ----------------
@@ -975,7 +978,7 @@ typedef struct SortState
 {
    ScanState   ss;             /* its first field is NodeTag */
    bool        sort_Done;      /* sort completed yet? */
-   void       *tuplesortstate; /* private state of tuplesort.c */
+   void       *tuplesortstate; /* private state of tuplesort.c */
 } SortState;
 
 /* ---------------------
@@ -986,7 +989,7 @@ typedef struct GroupState
 {
    ScanState   ss;             /* its first field is NodeTag */
    FmgrInfo   *eqfunctions;    /* per-field lookup data for equality fns */
-   HeapTuple   grp_firstTuple; /* copy of first tuple of current group */
+   HeapTuple   grp_firstTuple; /* copy of first tuple of current group */
    bool        grp_done;       /* indicates completion of Group scan */
 } GroupState;
 
@@ -1019,11 +1022,11 @@ typedef struct AggState
    bool        agg_done;       /* indicates completion of Agg scan */
    /* these fields are used in AGG_PLAIN and AGG_SORTED modes: */
    AggStatePerGroup pergroup;  /* per-Aggref-per-group working state */
-   HeapTuple   grp_firstTuple; /* copy of first tuple of current group */
+   HeapTuple   grp_firstTuple; /* copy of first tuple of current group */
    /* these fields are used in AGG_HASHED mode: */
    TupleHashTable hashtable;   /* hash table with one entry per group */
    bool        table_filled;   /* hash table filled yet? */
-   TupleHashIterator hashiter; /* for iterating through hash table */
+   TupleHashIterator hashiter; /* for iterating through hash table */
 } AggState;
 
 /* ----------------
@@ -1097,7 +1100,7 @@ typedef enum
    LIMIT_SUBPLANEOF,           /* at EOF of subplan (within window) */
    LIMIT_WINDOWEND,            /* stepped off end of window */
    LIMIT_WINDOWSTART           /* stepped off beginning of window */
-} LimitStateCond;
+}  LimitStateCond;
 
 typedef struct LimitState
 {
index f1b45e897bb93c9bcff56302d15ac89944939777..3f0772aa197b25d7c51c2fa1f7ee0422e55cd133 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: makefuncs.h,v 1.45 2003/07/01 19:10:53 tgl Exp $
+ * $Id: makefuncs.h,v 1.46 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 extern A_Expr *makeA_Expr(A_Expr_Kind kind, List *name,
-                         Node *lexpr, Node *rexpr);
+          Node *lexpr, Node *rexpr);
 
 extern A_Expr *makeSimpleA_Expr(A_Expr_Kind kind, const char *name,
-                               Node *lexpr, Node *rexpr);
+                Node *lexpr, Node *rexpr);
 
 extern Var *makeVar(Index varno,
        AttrNumber varattno,
@@ -50,13 +50,13 @@ extern Expr *makeBoolExpr(BoolExprType boolop, List *args);
 extern Alias *makeAlias(const char *aliasname, List *colnames);
 
 extern RelabelType *makeRelabelType(Expr *arg, Oid rtype, int32 rtypmod,
-                                   CoercionForm rformat);
+               CoercionForm rformat);
 
 extern RangeVar *makeRangeVar(char *schemaname, char *relname);
 
 extern TypeName *makeTypeName(char *typnam);
 
 extern FuncExpr *makeFuncExpr(Oid funcid, Oid rettype,
-                             List *args, CoercionForm fformat);
+            List *args, CoercionForm fformat);
 
 #endif   /* MAKEFUNC_H */
index 6e678b26b33178fce20d9b490804167dc20454dc..2bd81698d1eeab19e902a2bdc11b8daba898fa5f 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nodes.h,v 1.144 2003/07/03 16:34:25 tgl Exp $
+ * $Id: nodes.h,v 1.145 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -129,8 +129,8 @@ typedef enum NodeTag
    /*
     * TAGS FOR EXPRESSION STATE NODES (execnodes.h)
     *
-    * These correspond (not always one-for-one) to primitive nodes
-    * derived from Expr.
+    * These correspond (not always one-for-one) to primitive nodes derived
+    * from Expr.
     */
    T_ExprState = 400,
    T_GenericExprState,
index 8d7aa3ab32b61653e5bac7a76591165298893dcd..19a23096609a9bfc8358e9087b7bdbcd120f57a3 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: params.h,v 1.21 2002/12/14 00:17:59 tgl Exp $
+ * $Id: params.h,v 1.22 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@
  *   ParamListInfo
  *
  *   ParamListInfo entries are used to pass parameters into the executor
- *   for parameterized plans.  Each entry in the array defines the value
+ *   for parameterized plans.  Each entry in the array defines the value
  *   to be substituted for a PARAM_NAMED or PARAM_NUM parameter.
  *
  *     kind   : the kind of parameter (PARAM_NAMED or PARAM_NUM)
@@ -89,9 +89,9 @@ typedef ParamListInfoData *ParamListInfo;
  *   es_param_exec_vals or ecxt_param_exec_vals.
  *
  *   If execPlan is not NULL, it points to a SubPlanState node that needs
- *   to be executed to produce the value.  (This is done so that we can have
+ *   to be executed to produce the value.  (This is done so that we can have
  *   lazy evaluation of InitPlans: they aren't executed until/unless a
- *   result value is needed.)  Otherwise the value is assumed to be valid
+ *   result value is needed.)  Otherwise the value is assumed to be valid
  *   when needed.
  * ----------------
  */
index 5cfe5ec645d20a37c79d36554c0e264bf7260b21..15de2ade0ea42360b267d8b5c81c8a88e4968a9f 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parsenodes.h,v 1.243 2003/07/03 16:34:25 tgl Exp $
+ * $Id: parsenodes.h,v 1.244 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -25,7 +25,7 @@ typedef enum QuerySource
    QSRC_INSTEAD_RULE,          /* added by unconditional INSTEAD rule */
    QSRC_QUAL_INSTEAD_RULE,     /* added by conditional INSTEAD rule */
    QSRC_NON_INSTEAD_RULE       /* added by non-INSTEAD rule */
-} QuerySource;
+}  QuerySource;
 
 
 /*****************************************************************************
@@ -45,7 +45,7 @@ typedef struct Query
 
    CmdType     commandType;    /* select|insert|update|delete|utility */
 
-   QuerySource querySource;    /* where did I come from? */
+   QuerySource querySource;    /* where did I come from? */
 
    bool        canSetTag;      /* do I set the command result tag? */
 
@@ -175,12 +175,12 @@ typedef enum A_Expr_Kind
    AEXPR_DISTINCT,             /* IS DISTINCT FROM - name must be "=" */
    AEXPR_NULLIF,               /* NULLIF - name must be "=" */
    AEXPR_OF                    /* IS (not) OF - name must be "=" or "!=" */
-} A_Expr_Kind;
+}  A_Expr_Kind;
 
 typedef struct A_Expr
 {
    NodeTag     type;
-   A_Expr_Kind kind;           /* see above */
+   A_Expr_Kind kind;           /* see above */
    List       *name;           /* possibly-qualified name of operator */
    Node       *lexpr;          /* left argument, or NULL if none */
    Node       *rexpr;          /* right argument, or NULL if none */
@@ -352,7 +352,7 @@ typedef struct InhRelation
    NodeTag     type;
    RangeVar   *relation;
    bool        including_defaults;
-} InhRelation;
+}  InhRelation;
 
 /*
  * IndexElem - index parameters (used in CREATE INDEX)
@@ -668,7 +668,8 @@ typedef struct SetOperationStmt
  * object type.
  */
 
-typedef enum ObjectType {
+typedef enum ObjectType
+{
    OBJECT_AGGREGATE,
    OBJECT_CAST,
    OBJECT_COLUMN,
@@ -690,7 +691,7 @@ typedef enum ObjectType {
    OBJECT_TYPE,
    OBJECT_USER,
    OBJECT_VIEW
-} ObjectType;
+}  ObjectType;
 
 /* ----------------------
  *     Create Schema Statement
@@ -739,7 +740,7 @@ typedef struct AlterTableStmt
                                 *  E = create toast table
                                 *  U = change owner
                                 *  L = CLUSTER ON
-                                *  o = DROP OIDS
+                                *  o = DROP OIDS
                                 *------------
                                 */
    RangeVar   *relation;       /* table to work on */
@@ -773,7 +774,7 @@ typedef struct AlterDomainStmt
                                 * new owner */
    Node       *def;            /* definition of default or constraint */
    DropBehavior behavior;      /* RESTRICT or CASCADE for DROP cases */
-} AlterDomainStmt;
+}  AlterDomainStmt;
 
 
 /* ----------------------
@@ -878,14 +879,15 @@ typedef enum OnCommitAction
    ONCOMMIT_PRESERVE_ROWS,     /* ON COMMIT PRESERVE ROWS (do nothing) */
    ONCOMMIT_DELETE_ROWS,       /* ON COMMIT DELETE ROWS */
    ONCOMMIT_DROP               /* ON COMMIT DROP */
-} OnCommitAction;
+}  OnCommitAction;
 
 typedef struct CreateStmt
 {
    NodeTag     type;
    RangeVar   *relation;       /* relation to create */
    List       *tableElts;      /* column definitions (list of ColumnDef) */
-   List       *inhRelations;   /* relations to inherit from (list of inhRelation) */
+   List       *inhRelations;   /* relations to inherit from (list of
+                                * inhRelation) */
    List       *constraints;    /* constraints (list of Constraint nodes) */
    bool        hasoids;        /* should it have OIDs? */
    OnCommitAction oncommit;    /* what do we do at COMMIT? */
@@ -1094,7 +1096,7 @@ typedef struct AlterSeqStmt
    NodeTag     type;
    RangeVar   *sequence;       /* the sequence to alter */
    List       *options;
-} AlterSeqStmt;
+}  AlterSeqStmt;
 
 /* ----------------------
  *     Create {Aggregate|Operator|Type} Statement
@@ -1220,7 +1222,7 @@ typedef struct DeclareCursorStmt
    char       *portalname;     /* name of the portal (cursor) */
    int         options;        /* bitmask of options (see above) */
    Node       *query;          /* the SELECT query */
-} DeclareCursorStmt;
+}  DeclareCursorStmt;
 
 /* ----------------------
  *     Close Portal Statement
@@ -1244,7 +1246,7 @@ typedef enum FetchDirection
    /* for these, howMany indicates a position; only one row is fetched */
    FETCH_ABSOLUTE,
    FETCH_RELATIVE
-} FetchDirection;
+}  FetchDirection;
 
 #define FETCH_ALL  LONG_MAX
 
@@ -1269,8 +1271,9 @@ typedef struct IndexStmt
    char       *accessMethod;   /* name of access method (eg. btree) */
    List       *indexParams;    /* a list of IndexElem */
    Node       *whereClause;    /* qualification (partial-index predicate) */
-   List       *rangetable;     /* range table for qual and/or expressions,
-                                * filled in by transformStmt() */
+   List       *rangetable;     /* range table for qual and/or
+                                * expressions, filled in by
+                                * transformStmt() */
    bool        unique;         /* is index unique? */
    bool        primary;        /* is index on primary key? */
    bool        isconstraint;   /* is it from a CONSTRAINT clause? */
@@ -1349,7 +1352,8 @@ typedef struct RenameStmt
    RangeVar   *relation;       /* in case it's a table */
    List       *object;         /* in case it's some other object */
    List       *objarg;         /* argument types, if applicable */
-   char       *subname;        /* name of contained object (column, rule, trigger, etc) */
+   char       *subname;        /* name of contained object (column, rule,
+                                * trigger, etc) */
    char       *newname;        /* the new name */
    ObjectType  renameType;     /* OBJECT_TABLE, OBJECT_COLUMN, etc */
 } RenameStmt;
@@ -1410,7 +1414,7 @@ typedef enum TransactionStmtKind
    TRANS_STMT_START,           /* semantically identical to BEGIN */
    TRANS_STMT_COMMIT,
    TRANS_STMT_ROLLBACK
-} TransactionStmtKind;
+}  TransactionStmtKind;
 
 typedef struct TransactionStmt
 {
@@ -1602,7 +1606,8 @@ typedef struct ConstraintsSetStmt
 typedef struct ReindexStmt
 {
    NodeTag     type;
-   ObjectType  kind;           /* OBJECT_INDEX, OBJECT_TABLE, OBJECT_DATABASE */
+   ObjectType  kind;           /* OBJECT_INDEX, OBJECT_TABLE,
+                                * OBJECT_DATABASE */
    RangeVar   *relation;       /* Table or index to reindex */
    const char *name;           /* name of database to reindex */
    bool        force;
index 5bf17ceb14ed66d5be012fda8d23ab2d5da901f8..4c8ae3440edfe2fc00c25753c6dad408ac121ab1 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_list.h,v 1.37 2003/06/15 22:51:45 tgl Exp $
+ * $Id: pg_list.h,v 1.38 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -137,7 +137,7 @@ typedef struct FastList
 {
    List       *head;
    List       *tail;
-} FastList;
+}  FastList;
 
 #define FastListInit(fl)   ( (fl)->head = (fl)->tail = NIL )
 #define FastListFromList(fl, l)  \
@@ -160,11 +160,11 @@ extern List *lappend(List *list, void *datum);
 extern List *lappendi(List *list, int datum);
 extern List *lappendo(List *list, Oid datum);
 extern List *nconc(List *list1, List *list2);
-extern void FastAppend(FastList *fl, void *datum);
-extern void FastAppendi(FastList *fl, int datum);
-extern void FastAppendo(FastList *fl, Oid datum);
-extern void FastConc(FastList *fl, List *cells);
-extern void FastConcFast(FastList *fl, FastList *fl2);
+extern void FastAppend(FastList * fl, void *datum);
+extern void FastAppendi(FastList * fl, int datum);
+extern void FastAppendo(FastList * fl, Oid datum);
+extern void FastConc(FastList * fl, List *cells);
+extern void FastConcFast(FastList * fl, FastList * fl2);
 extern void *nth(int n, List *l);
 extern int length(List *list);
 extern void *llast(List *list);
index 9db779d8bf939358d34579dde781b8b077c6abc5..7a76cbba732baff19f2639fc11f90aad3d724b70 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: plannodes.h,v 1.65 2003/05/06 00:20:33 tgl Exp $
+ * $Id: plannodes.h,v 1.66 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,8 +68,8 @@ typedef struct Plan
     * Information for management of parameter-change-driven rescanning
     *
     * extParam includes the paramIDs of all external PARAM_EXEC params
-    * affecting this plan node or its children.  setParam params from
-    * the node's initPlans are not included, but their extParams are.
+    * affecting this plan node or its children.  setParam params from the
+    * node's initPlans are not included, but their extParams are.
     *
     * allParam includes all the extParam paramIDs, plus the IDs of local
     * params that affect the node (i.e., the setParams of its initplans).
@@ -315,12 +315,12 @@ typedef enum AggStrategy
    AGG_PLAIN,                  /* simple agg across all input rows */
    AGG_SORTED,                 /* grouped agg, input must be sorted */
    AGG_HASHED                  /* grouped agg, use internal hashtable */
-} AggStrategy;
+}  AggStrategy;
 
 typedef struct Agg
 {
    Plan        plan;
-   AggStrategy aggstrategy;
+   AggStrategy aggstrategy;
    int         numCols;        /* number of grouping columns */
    AttrNumber *grpColIdx;      /* their indexes in the target list */
    long        numGroups;      /* estimated number of groups in input */
index 522ddc5f90233973a3c4452530956e0a78bce778..c747d6dbbc27d786f0148f208f6f438affb43c47 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: primnodes.h,v 1.87 2003/07/03 16:34:26 tgl Exp $
+ * $Id: primnodes.h,v 1.88 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -49,7 +49,7 @@
  * associated SortClause or GroupClause lists determine the semantics.
  *
  * resorigtbl/resorigcol identify the source of the column, if it is a
- * simple reference to a column of a base table (or view).  If it is not
+ * simple reference to a column of a base table (or view). If it is not
  * a simple reference, these fields are zeroes.
  *
  * If resjunk is true then the column is a working column (such as a sort key)
@@ -63,8 +63,8 @@ typedef struct Resdom
    Oid         restype;        /* type of the value */
    int32       restypmod;      /* type-specific modifier of the value */
    char       *resname;        /* name of the column (could be NULL) */
-   Index       ressortgroupref;    /* nonzero if referenced by a
-                                    * sort/group clause */
+   Index       ressortgroupref;/* nonzero if referenced by a sort/group
+                                * clause */
    Oid         resorigtbl;     /* OID of column's source table */
    AttrNumber  resorigcol;     /* column's number in source table */
    bool        resjunk;        /* set to true to eliminate the attribute
@@ -181,10 +181,10 @@ typedef struct Const
    Datum       constvalue;     /* the constant's value */
    bool        constisnull;    /* whether the constant is null (if true,
                                 * constvalue is undefined) */
-   bool        constbyval;     /* whether this datatype is passed by value.
-                                * If true, then all the information is
-                                * stored in the Datum.
-                                * If false, then the Datum contains a
+   bool        constbyval;     /* whether this datatype is passed by
+                                * value. If true, then all the
+                                * information is stored in the Datum. If
+                                * false, then the Datum contains a
                                 * pointer to the information. */
 } Const;
 
@@ -201,7 +201,7 @@ typedef struct Const
  *             i.e. something like `$1', `$2' etc.
  *             The number is contained in the `paramid' field.
  *
- *     PARAM_EXEC:  The parameter is an internal executor parameter.
+ *     PARAM_EXEC:  The parameter is an internal executor parameter.
  *             It has a number contained in the `paramid' field.
  * ----------------
  */
@@ -277,7 +277,7 @@ typedef enum CoercionContext
    COERCION_IMPLICIT,          /* coercion in context of expression */
    COERCION_ASSIGNMENT,        /* coercion in context of assignment */
    COERCION_EXPLICIT           /* explicit cast operation */
-} CoercionContext;
+}  CoercionContext;
 
 /*
  * CoercionForm - information showing how to display a function-call node
@@ -288,7 +288,7 @@ typedef enum CoercionForm
    COERCE_EXPLICIT_CAST,       /* display as an explicit cast */
    COERCE_IMPLICIT_CAST,       /* implicit cast, so hide it */
    COERCE_DONTCARE             /* special case for pathkeys */
-} CoercionForm;
+}  CoercionForm;
 
 /*
  * FuncExpr - expression node for a function call
@@ -301,7 +301,7 @@ typedef struct FuncExpr
    bool        funcretset;     /* true if function returns set */
    CoercionForm funcformat;    /* how to display this function call */
    List       *args;           /* arguments to the function */
-} FuncExpr;
+}  FuncExpr;
 
 /*
  * OpExpr - expression node for an operator invocation
@@ -320,7 +320,7 @@ typedef struct OpExpr
    Oid         opresulttype;   /* PG_TYPE OID of result value */
    bool        opretset;       /* true if operator returns set */
    List       *args;           /* arguments to the operator (1 or 2) */
-} OpExpr;
+}  OpExpr;
 
 /*
  * DistinctExpr - expression node for "x IS DISTINCT FROM y"
@@ -351,28 +351,28 @@ typedef struct ScalarArrayOpExpr
    Oid         opfuncid;       /* PG_PROC OID of underlying function */
    bool        useOr;          /* true for ANY, false for ALL */
    List       *args;           /* the scalar and array operands */
-} ScalarArrayOpExpr;
+}  ScalarArrayOpExpr;
 
 /*
  * BoolExpr - expression node for the basic Boolean operators AND, OR, NOT
  *
  * Notice the arguments are given as a List.  For NOT, of course the list
  * must always have exactly one element.  For AND and OR, the executor can
- * handle any number of arguments.  The parser treats AND and OR as binary
+ * handle any number of arguments. The parser treats AND and OR as binary
  * and so it only produces two-element lists, but the optimizer will flatten
  * trees of AND and OR nodes to produce longer lists when possible.
  */
 typedef enum BoolExprType
 {
    AND_EXPR, OR_EXPR, NOT_EXPR
-} BoolExprType;
+}  BoolExprType;
 
 typedef struct BoolExpr
 {
    Expr        xpr;
    BoolExprType boolop;
    List       *args;           /* arguments to this expression */
-} BoolExpr;
+}  BoolExpr;
 
 /* ----------------
  * SubLink
@@ -405,7 +405,7 @@ typedef struct BoolExpr
  *
  * NOTE: in the raw output of gram.y, lefthand contains a list of raw
  * expressions; useOr and operOids are not filled in yet.  Also, subselect
- * is a raw parsetree.  During parse analysis, the parser transforms the
+ * is a raw parsetree. During parse analysis, the parser transforms the
  * lefthand expression list using normal expression transformation rules.
  * It fills operOids with the OIDs representing the specific operator(s)
  * to apply to each pair of lefthand and targetlist expressions.
@@ -452,13 +452,13 @@ typedef struct SubLink
  * (OpExpr trees) for the combining operators; their left-hand arguments are
  * the original lefthand expressions, and their right-hand arguments are
  * PARAM_EXEC Param nodes representing the outputs of the sub-select.
- * (NOTE: runtime coercion functions may be inserted as well.)  But if the
+ * (NOTE: runtime coercion functions may be inserted as well.) But if the
  * sub-select becomes an initplan rather than a subplan, these executable
  * expressions are part of the outer plan's expression tree (and the SubPlan
  * node itself is not).  In this case "exprs" is NIL to avoid duplication.
  *
  * The planner also derives lists of the values that need to be passed into
- * and out of the subplan.  Input values are represented as a list "args" of
+ * and out of the subplan. Input values are represented as a list "args" of
  * expressions to be evaluated in the outer-query context (currently these
  * args are always just Vars, but in principle they could be any expression).
  * The values are assigned to the global PARAM_EXEC params indexed by parParam
@@ -487,16 +487,17 @@ typedef struct SubPlan
                                 * (TopPlan node ?)... */
    List       *rtable;         /* range table for subselect */
    /* Information about execution strategy: */
-   bool        useHashTable;   /* TRUE to store subselect output in a hash
-                                * table (implies we are doing "IN") */
-   bool        unknownEqFalse; /* TRUE if it's okay to return FALSE when
+   bool        useHashTable;   /* TRUE to store subselect output in a
+                                * hash table (implies we are doing "IN") */
+   bool        unknownEqFalse; /* TRUE if it's okay to return FALSE when
                                 * the spec result is UNKNOWN; this allows
                                 * much simpler handling of null values */
    /* Information for passing params into and out of the subselect: */
    /* setParam and parParam are lists of integers (param IDs) */
    List       *setParam;       /* initplan subqueries have to set these
                                 * Params for parent plan */
-   List       *parParam;       /* indices of input Params from parent plan */
+   List       *parParam;       /* indices of input Params from parent
+                                * plan */
    List       *args;           /* exprs to pass as parParam values */
 } SubPlan;
 
@@ -539,7 +540,7 @@ typedef struct RelabelType
    Expr       *arg;            /* input expression */
    Oid         resulttype;     /* output type of coercion expression */
    int32       resulttypmod;   /* output typmod (usually -1) */
-   CoercionForm relabelformat; /* how to display this node */
+   CoercionForm relabelformat; /* how to display this node */
 } RelabelType;
 
 /*
@@ -574,20 +575,20 @@ typedef struct ArrayExpr
 {
    Expr        xpr;
    Oid         array_typeid;   /* type of expression result */
-   Oid         element_typeid; /* common type of expression elements */
+   Oid         element_typeid; /* common type of expression elements */
    List       *elements;       /* the array elements */
    int         ndims;          /* number of array dimensions */
-} ArrayExpr;
+}  ArrayExpr;
 
 /*
  * CoalesceExpr - a COALESCE expression
  */
 typedef struct CoalesceExpr
 {
-   Expr    xpr;
-   Oid     coalescetype;       /* type of expression result */
-   List   *args;               /* the arguments */
-} CoalesceExpr;
+   Expr        xpr;
+   Oid         coalescetype;   /* type of expression result */
+   List       *args;           /* the arguments */
+}  CoalesceExpr;
 
 /*
  * NullIfExpr - a NULLIF expression
@@ -645,8 +646,8 @@ typedef struct BooleanTest
  *
  * CoerceToDomain represents the operation of coercing a value to a domain
  * type.  At runtime (and not before) the precise set of constraints to be
- * checked will be determined.  If the value passes, it is returned as the
- * result; if not, an error is raised.  Note that this is equivalent to
+ * checked will be determined. If the value passes, it is returned as the
+ * result; if not, an error is raised. Note that this is equivalent to
  * RelabelType in the scenario where no constraints are applied.
  */
 typedef struct CoerceToDomain
@@ -655,12 +656,12 @@ typedef struct CoerceToDomain
    Expr       *arg;            /* input expression */
    Oid         resulttype;     /* domain type ID (result type) */
    int32       resulttypmod;   /* output typmod (currently always -1) */
-   CoercionForm coercionformat; /* how to display this node */
-} CoerceToDomain;
+   CoercionForm coercionformat;    /* how to display this node */
+}  CoerceToDomain;
 
 /*
  * Placeholder node for the value to be processed by a domain's check
- * constraint.  This is effectively like a Param, but can be implemented more
+ * constraint. This is effectively like a Param, but can be implemented more
  * simply since we need only one replacement value at a time.
  *
  * Note: the typeId/typeMod will be set from the domain's base type, not
@@ -672,13 +673,13 @@ typedef struct CoerceToDomainValue
    Expr        xpr;
    Oid         typeId;         /* type for substituted value */
    int32       typeMod;        /* typemod for substituted value */
-} CoerceToDomainValue;
+}  CoerceToDomainValue;
 
 /*
  * Placeholder node for a DEFAULT marker in an INSERT or UPDATE command.
  *
  * This is not an executable expression: it must be replaced by the actual
- * column default expression during rewriting.  But it is convenient to
+ * column default expression during rewriting. But it is convenient to
  * treat it as an expression node during parsing and rewriting.
  */
 typedef struct SetToDefault
@@ -686,7 +687,7 @@ typedef struct SetToDefault
    Expr        xpr;
    Oid         typeId;         /* type for substituted value */
    int32       typeMod;        /* typemod for substituted value */
-} SetToDefault;
+}  SetToDefault;
 
 /*
  * TargetEntry -
index 2ab9e0f6e7f7062c81902f46cbb6daeeca545a09..158a23427cf69f60f973d40a0b54bf645fec96db 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: relation.h,v 1.82 2003/06/29 23:05:05 tgl Exp $
+ * $Id: relation.h,v 1.83 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -43,7 +43,7 @@ typedef struct QualCost
 {
    Cost        startup;        /* one-time cost */
    Cost        per_tuple;      /* per-evaluation cost */
-} QualCost;
+}  QualCost;
 
 /*----------
  * RelOptInfo
@@ -218,12 +218,13 @@ typedef struct RelOptInfo
    Relids      index_outer_relids;     /* other relids in indexable join
                                         * clauses */
    List       *index_inner_paths;      /* InnerIndexscanInfo nodes */
+
    /*
-    * Inner indexscans are not in the main pathlist because they are
-    * not usable except in specific join contexts.  We use the
+    * Inner indexscans are not in the main pathlist because they are not
+    * usable except in specific join contexts.  We use the
     * index_inner_paths list just to avoid recomputing the best inner
-    * indexscan repeatedly for similar outer relations.  See comments
-    * for InnerIndexscanInfo.
+    * indexscan repeatedly for similar outer relations.  See comments for
+    * InnerIndexscanInfo.
     */
 } RelOptInfo;
 
@@ -266,7 +267,8 @@ typedef struct IndexOptInfo
 
    RegProcedure amcostestimate;    /* OID of the access method's cost fcn */
 
-   List       *indexprs;       /* expressions for non-simple index columns */
+   List       *indexprs;       /* expressions for non-simple index
+                                * columns */
    List       *indpred;        /* predicate if a partial index, else NIL */
    bool        unique;         /* true if a unique index */
 
@@ -413,7 +415,7 @@ typedef struct ResultPath
    Path        path;
    Path       *subpath;
    List       *constantqual;
-} ResultPath;
+}  ResultPath;
 
 /*
  * MaterialPath represents use of a Material plan node, i.e., caching of
@@ -425,7 +427,7 @@ typedef struct MaterialPath
 {
    Path        path;
    Path       *subpath;
-} MaterialPath;
+}  MaterialPath;
 
 /*
  * UniquePath represents elimination of distinct rows from the output of
@@ -442,7 +444,7 @@ typedef struct UniquePath
    Path       *subpath;
    bool        use_hash;
    double      rows;           /* estimated number of result tuples */
-} UniquePath;
+}  UniquePath;
 
 /*
  * All join-type paths share these fields.
@@ -661,7 +663,7 @@ typedef struct JoinInfo
  * relation includes all other relids appearing in those joinclauses.
  * The set of usable joinclauses, and thus the best inner indexscan,
  * thus varies depending on which outer relation we consider; so we have
- * to recompute the best such path for every join.  To avoid lots of
+ * to recompute the best such path for every join. To avoid lots of
  * redundant computation, we cache the results of such searches.  For
  * each index we compute the set of possible otherrelids (all relids
  * appearing in joinquals that could become indexquals for this index).
@@ -687,8 +689,8 @@ typedef struct InnerIndexscanInfo
    Relids      other_relids;   /* a set of relevant other relids */
    bool        isouterjoin;    /* true if join is outer */
    /* Best path for this lookup key: */
-   Path       *best_innerpath; /* best inner indexscan, or NULL if none */
-} InnerIndexscanInfo;
+   Path       *best_innerpath; /* best inner indexscan, or NULL if none */
+}  InnerIndexscanInfo;
 
 /*
  * IN clause info.
@@ -704,11 +706,12 @@ typedef struct InClauseInfo
    NodeTag     type;
    Relids      lefthand;       /* base relids in lefthand expressions */
    Relids      righthand;      /* base relids coming from the subselect */
-   List       *sub_targetlist; /* targetlist of original RHS subquery */
+   List       *sub_targetlist; /* targetlist of original RHS subquery */
+
    /*
-    * Note: sub_targetlist is just a list of Vars or expressions;
-    * it does not contain TargetEntry nodes.
+    * Note: sub_targetlist is just a list of Vars or expressions; it does
+    * not contain TargetEntry nodes.
     */
-} InClauseInfo;
+}  InClauseInfo;
 
 #endif   /* RELATION_H */
index 04add3c6f63ad04afb7acaa864776fffa606b75d..0384fafe972dd7244f747fe45b6a7bf9daea38c4 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: clauses.h,v 1.65 2003/06/25 21:30:33 momjian Exp $
+ * $Id: clauses.h,v 1.66 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -24,7 +24,7 @@
 
 
 extern Expr *make_opclause(Oid opno, Oid opresulttype, bool opretset,
-                          Expr *leftop, Expr *rightop);
+             Expr *leftop, Expr *rightop);
 extern Node *get_leftop(Expr *clause);
 extern Node *get_rightop(Expr *clause);
 
@@ -60,7 +60,7 @@ extern bool has_distinct_on_clause(Query *query);
 
 extern void clause_get_relids_vars(Node *clause, Relids *relids, List **vars);
 extern int NumRelids(Node *clause);
-extern void CommuteClause(OpExpr *clause);
+extern void CommuteClause(OpExpr * clause);
 
 extern Node *eval_const_expressions(Node *node);
 
@@ -70,18 +70,18 @@ extern Node *expression_tree_mutator(Node *node, Node *(*mutator) (),
                                                 void *context);
 
 /* flags bits for query_tree_walker and query_tree_mutator */
-#define QTW_IGNORE_RT_SUBQUERIES   0x01    /* subqueries in rtable */
-#define QTW_IGNORE_JOINALIASES     0x02    /* JOIN alias var lists */
-#define QTW_DONT_COPY_QUERY            0x04    /* do not copy top Query */
+#define QTW_IGNORE_RT_SUBQUERIES   0x01        /* subqueries in rtable */
+#define QTW_IGNORE_JOINALIASES     0x02        /* JOIN alias var lists */
+#define QTW_DONT_COPY_QUERY            0x04        /* do not copy top Query */
 
 extern bool query_tree_walker(Query *query, bool (*walker) (),
-                             void *context, int flags);
+                                         void *context, int flags);
 extern Query *query_tree_mutator(Query *query, Node *(*mutator) (),
-                                void *context, int flags);
+                                            void *context, int flags);
 
 extern bool query_or_expression_tree_walker(Node *node, bool (*walker) (),
-                                           void *context, int flags);
+                                              void *context, int flags);
 extern Node *query_or_expression_tree_mutator(Node *node, Node *(*mutator) (),
-                                             void *context, int flags);
+                                              void *context, int flags);
 
 #endif   /* CLAUSES_H */
index ad2122f46e70f9d21f2543d77c42e34ce8daae64..1f7010198753ba6283862cdaf4a17751afe268d9 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: cost.h,v 1.54 2003/07/14 22:35:54 tgl Exp $
+ * $Id: cost.h,v 1.55 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -62,20 +62,20 @@ extern void cost_functionscan(Path *path, Query *root,
 extern void cost_sort(Path *path, Query *root,
          List *pathkeys, Cost input_cost, double tuples, int width);
 extern void cost_material(Path *path,
-                         Cost input_cost, double tuples, int width);
+             Cost input_cost, double tuples, int width);
 extern void cost_agg(Path *path, Query *root,
-                    AggStrategy aggstrategy, int numAggs,
-                    int numGroupCols, double numGroups,
-                    Cost input_startup_cost, Cost input_total_cost,
-                    double input_tuples);
+        AggStrategy aggstrategy, int numAggs,
+        int numGroupCols, double numGroups,
+        Cost input_startup_cost, Cost input_total_cost,
+        double input_tuples);
 extern void cost_group(Path *path, Query *root,
-                      int numGroupCols, double numGroups,
-                      Cost input_startup_cost, Cost input_total_cost,
-                      double input_tuples);
+          int numGroupCols, double numGroups,
+          Cost input_startup_cost, Cost input_total_cost,
+          double input_tuples);
 extern void cost_nestloop(NestPath *path, Query *root);
 extern void cost_mergejoin(MergePath *path, Query *root);
 extern void cost_hashjoin(HashPath *path, Query *root);
-extern void cost_qual_eval(QualCost *cost, List *quals);
+extern void cost_qual_eval(QualCost * cost, List *quals);
 extern void set_baserel_size_estimates(Query *root, RelOptInfo *rel);
 extern void set_joinrel_size_estimates(Query *root, RelOptInfo *rel,
                           RelOptInfo *outer_rel,
@@ -89,16 +89,16 @@ extern void set_function_size_estimates(Query *root, RelOptInfo *rel);
  *   routines to compute clause selectivities
  */
 extern Selectivity restrictlist_selectivity(Query *root,
-                                           List *restrictinfo_list,
-                                           int varRelid,
-                                           JoinType jointype);
+                        List *restrictinfo_list,
+                        int varRelid,
+                        JoinType jointype);
 extern Selectivity clauselist_selectivity(Query *root,
-                                         List *clauses,
-                                         int varRelid,
-                                         JoinType jointype);
+                      List *clauses,
+                      int varRelid,
+                      JoinType jointype);
 extern Selectivity clause_selectivity(Query *root,
-                                     Node *clause,
-                                     int varRelid,
-                                     JoinType jointype);
+                  Node *clause,
+                  int varRelid,
+                  JoinType jointype);
 
 #endif   /* COST_H */
index 5c276c0fb21daffcee813f76b6fff31dde66733f..0db5f43234063b86e0c91ea4df842632aeba0a34 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: geqo_misc.h,v 1.22 2002/11/06 00:00:45 tgl Exp $
+ * $Id: geqo_misc.h,v 1.23 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -31,7 +31,6 @@
 extern void print_pool(FILE *fp, Pool *pool, int start, int stop);
 extern void print_gen(FILE *fp, Pool *pool, int generation);
 extern void print_edge_table(FILE *fp, Edge *edge_table, int num_gene);
-
 #endif   /* GEQO_DEBUG */
 
 #endif   /* GEQO_MISC_H */
index 6fd806bbaf1bb571a6302abbf29171ccebb19f05..ae26e34d2aa1b080d1196091e7036869ac791978 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: joininfo.h,v 1.23 2003/01/24 03:58:43 tgl Exp $
+ * $Id: joininfo.h,v 1.24 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,10 +21,10 @@ extern JoinInfo *find_joininfo_node(RelOptInfo *this_rel, Relids join_relids);
 extern JoinInfo *make_joininfo_node(RelOptInfo *this_rel, Relids join_relids);
 
 extern void add_join_clause_to_rels(Query *root,
-                                   RestrictInfo *restrictinfo,
-                                   Relids join_relids);
+                       RestrictInfo *restrictinfo,
+                       Relids join_relids);
 extern void remove_join_clause_from_rels(Query *root,
-                                        RestrictInfo *restrictinfo,
-                                        Relids join_relids);
+                            RestrictInfo *restrictinfo,
+                            Relids join_relids);
 
 #endif   /* JOININFO_H */
index 6d112a5cf07a8e2b51fc43938931d67d1fc8ff1e..c7b3004eac151ea7c136b964bacd9d8076036148 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pathnode.h,v 1.50 2003/02/15 20:12:41 tgl Exp $
+ * $Id: pathnode.h,v 1.51 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,10 +37,10 @@ extern TidPath *create_tidscan_path(Query *root, RelOptInfo *rel,
                    List *tideval);
 extern AppendPath *create_append_path(RelOptInfo *rel, List *subpaths);
 extern ResultPath *create_result_path(RelOptInfo *rel, Path *subpath,
-                                     List *constantqual);
+                  List *constantqual);
 extern MaterialPath *create_material_path(RelOptInfo *rel, Path *subpath);
 extern UniquePath *create_unique_path(Query *root, RelOptInfo *rel,
-                                     Path *subpath);
+                  Path *subpath);
 extern Path *create_subqueryscan_path(RelOptInfo *rel, List *pathkeys);
 extern Path *create_functionscan_path(Query *root, RelOptInfo *rel);
 
@@ -78,10 +78,10 @@ extern void build_base_rel(Query *root, int relid);
 extern RelOptInfo *build_other_rel(Query *root, int relid);
 extern RelOptInfo *find_base_rel(Query *root, int relid);
 extern RelOptInfo *build_join_rel(Query *root,
-                                 Relids joinrelids,
-                                 RelOptInfo *outer_rel,
-                                 RelOptInfo *inner_rel,
-                                 JoinType jointype,
-                                 List **restrictlist_ptr);
+              Relids joinrelids,
+              RelOptInfo *outer_rel,
+              RelOptInfo *inner_rel,
+              JoinType jointype,
+              List **restrictlist_ptr);
 
 #endif   /* PATHNODE_H */
index b36e17f91d7801989f190edc7977f0bf815a7329..b9be78c390a7248f669b41a918960d2e3c205d48 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: paths.h,v 1.67 2003/05/26 00:11:28 tgl Exp $
+ * $Id: paths.h,v 1.68 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,12 +37,12 @@ extern void debug_print_rel(Query *root, RelOptInfo *rel);
  */
 extern void create_index_paths(Query *root, RelOptInfo *rel);
 extern Path *best_inner_indexscan(Query *root, RelOptInfo *rel,
-                                 Relids outer_relids, JoinType jointype);
+                    Relids outer_relids, JoinType jointype);
 extern List *extract_or_indexqual_conditions(RelOptInfo *rel,
                                IndexOptInfo *index,
                                Expr *orsubclause);
 extern List *expand_indexqual_conditions(IndexOptInfo *index,
-                                        List *clausegroups);
+                           List *clausegroups);
 
 /*
  * orindxpath.c
@@ -73,8 +73,8 @@ extern void add_paths_to_joinrel(Query *root, RelOptInfo *joinrel,
 extern List *make_rels_by_joins(Query *root, int level, List **joinrels);
 extern RelOptInfo *make_jointree_rel(Query *root, Node *jtnode);
 extern RelOptInfo *make_join_rel(Query *root,
-                                RelOptInfo *rel1, RelOptInfo *rel2,
-                                JoinType jointype);
+             RelOptInfo *rel1, RelOptInfo *rel2,
+             JoinType jointype);
 
 /*
  * pathkeys.c
@@ -106,7 +106,7 @@ extern List *build_index_pathkeys(Query *root, RelOptInfo *rel,
                     IndexOptInfo *index,
                     ScanDirection scandir);
 extern List *build_subquery_pathkeys(Query *root, RelOptInfo *rel,
-                                    Query *subquery);
+                       Query *subquery);
 extern List *build_join_pathkeys(Query *root,
                    RelOptInfo *joinrel,
                    List *outer_pathkeys);
index 8f7cfbe6ceb67e98040ea648b687b46279928955..004ba12d6e4351760e1b370e15faf2ea7b17adf8 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: plancat.h,v 1.30 2003/06/29 23:05:05 tgl Exp $
+ * $Id: plancat.h,v 1.31 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -33,8 +33,8 @@ extern Selectivity restriction_selectivity(Query *root,
                        int varRelid);
 
 extern Selectivity join_selectivity(Query *root,
-                                   Oid operator,
-                                   List *args,
-                                   JoinType jointype);
+                Oid operator,
+                List *args,
+                JoinType jointype);
 
 #endif   /* PLANCAT_H */
index 99c9470493df5a3995a8092fa60b57f1c2637b0c..8f8022dc127dd78e885db3b61d628d263ead6aa7 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: planmain.h,v 1.72 2003/06/29 23:05:05 tgl Exp $
+ * $Id: planmain.h,v 1.73 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,7 +21,7 @@
  * prototypes for plan/planmain.c
  */
 extern void query_planner(Query *root, List *tlist, double tuple_fraction,
-                         Path **cheapest_path, Path **sorted_path);
+             Path **cheapest_path, Path **sorted_path);
 
 /*
  * prototypes for plan/createplan.c
@@ -31,18 +31,18 @@ extern SubqueryScan *make_subqueryscan(List *qptlist, List *qpqual,
                  Index scanrelid, Plan *subplan);
 extern Append *make_append(List *appendplans, bool isTarget, List *tlist);
 extern Sort *make_sort_from_sortclauses(Query *root, List *tlist,
-                                       Plan *lefttree, List *sortcls);
+                          Plan *lefttree, List *sortcls);
 extern Sort *make_sort_from_groupcols(Query *root, List *groupcls,
-                                     AttrNumber *grpColIdx, Plan *lefttree);
+                        AttrNumber *grpColIdx, Plan *lefttree);
 extern Agg *make_agg(Query *root, List *tlist, List *qual,
-                    AggStrategy aggstrategy,
-                    int numGroupCols, AttrNumber *grpColIdx,
-                    long numGroups, int numAggs,
-                    Plan *lefttree);
+        AggStrategy aggstrategy,
+        int numGroupCols, AttrNumber *grpColIdx,
+        long numGroups, int numAggs,
+        Plan *lefttree);
 extern Group *make_group(Query *root, List *tlist,
-                        int numGroupCols, AttrNumber *grpColIdx,
-                        double numGroups,
-                        Plan *lefttree);
+          int numGroupCols, AttrNumber *grpColIdx,
+          double numGroups,
+          Plan *lefttree);
 extern Material *make_material(List *tlist, Plan *lefttree);
 extern Plan *materialize_finished_plan(Plan *subplan);
 extern Unique *make_unique(List *tlist, Plan *lefttree, List *distinctList);
@@ -59,16 +59,16 @@ extern void add_base_rels_to_query(Query *root, Node *jtnode);
 extern void build_base_rel_tlists(Query *root, List *final_tlist);
 extern Relids distribute_quals_to_rels(Query *root, Node *jtnode);
 extern void process_implied_equality(Query *root,
-                                    Node *item1, Node *item2,
-                                    Oid sortop1, Oid sortop2,
-                                    Relids item1_relids, Relids item2_relids,
-                                    bool delete_it);
+                        Node *item1, Node *item2,
+                        Oid sortop1, Oid sortop2,
+                        Relids item1_relids, Relids item2_relids,
+                        bool delete_it);
 
 /*
  * prototypes for plan/setrefs.c
  */
 extern void set_plan_references(Plan *plan, List *rtable);
 extern void fix_opfuncids(Node *node);
-extern void set_opfuncid(OpExpr *opexpr);
+extern void set_opfuncid(OpExpr * opexpr);
 
 #endif   /* PLANMAIN_H */
index 52d045c51a4d569ffcefe09bbd6482422f4957bb..f25a3c79e3344b1fa460af9e7cc338c594a049f3 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: prep.h,v 1.39 2003/04/24 23:43:09 tgl Exp $
+ * $Id: prep.h,v 1.40 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,7 +53,7 @@ extern Plan *plan_set_operations(Query *parse);
 extern List *find_all_inheritors(Oid parentrel);
 
 extern List *expand_inherited_rtentry(Query *parse, Index rti,
-                       bool dup_parent);
+                        bool dup_parent);
 
 extern Node *adjust_inherited_attrs(Node *node,
                       Index old_rt_index, Oid old_relid,
index 19c3435c3e55754f975e23f6032426b9d7041a54..c4a04bf9485a3f82dd7ddce8336fc7d3a284af6b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: restrictinfo.h,v 1.17 2003/06/15 22:51:45 tgl Exp $
+ * $Id: restrictinfo.h,v 1.18 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -21,11 +21,11 @@ extern List *get_actual_clauses(List *restrictinfo_list);
 extern void get_actual_join_clauses(List *restrictinfo_list,
                        List **joinquals, List **otherquals);
 extern List *remove_redundant_join_clauses(Query *root,
-                                          List *restrictinfo_list,
-                                          JoinType jointype);
+                             List *restrictinfo_list,
+                             JoinType jointype);
 extern List *select_nonredundant_join_clauses(Query *root,
-                                             List *restrictinfo_list,
-                                             List *reference_list,
-                                             JoinType jointype);
+                                List *restrictinfo_list,
+                                List *reference_list,
+                                JoinType jointype);
 
 #endif   /* RESTRICTINFO_H */
index d22c78f8d8e694cca8f9c822e96792d10ee895a5..cdca747f7b9aff7fc4336d29ba3e194f4567c63c 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tlist.h,v 1.36 2003/06/29 23:05:05 tgl Exp $
+ * $Id: tlist.h,v 1.37 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,6 +30,6 @@ extern TargetEntry *get_sortgroupclause_tle(SortClause *sortClause,
 extern Node *get_sortgroupclause_expr(SortClause *sortClause,
                         List *targetList);
 extern List *get_sortgrouplist_exprs(List *sortClauses,
-                        List *targetList);
+                       List *targetList);
 
 #endif   /* TLIST_H */
index b7d6a7d66581404a953b63d31bacfb4f912a1db1..1b97706e0fbf6e1ce6a8f3c71f21a9569b874f80 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: analyze.h,v 1.21 2003/04/29 22:13:11 tgl Exp $
+ * $Id: analyze.h,v 1.22 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,7 +18,7 @@
 
 extern List *parse_analyze(Node *parseTree, Oid *paramTypes, int numParams);
 extern List *parse_analyze_varparams(Node *parseTree, Oid **paramTypes,
-                                    int *numParams);
+                       int *numParams);
 extern List *parse_sub_analyze(Node *parseTree, ParseState *parentParseState);
 extern List *analyzeCreateSchemaStmt(CreateSchemaStmt *stmt);
 
index 79f226fb89f44062ac9d2f925d1a357d066fb999..4b8ab5d427b560bb27dc43ff10d5368bc977b7a1 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_agg.h,v 1.27 2003/07/01 19:10:53 tgl Exp $
+ * $Id: parse_agg.h,v 1.28 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -20,11 +20,11 @@ extern void transformAggregateCall(ParseState *pstate, Aggref *agg);
 extern void parseCheckAggregates(ParseState *pstate, Query *qry);
 
 extern void build_aggregate_fnexprs(Oid agg_input_type,
-                                   Oid agg_state_type,
-                                   Oid agg_result_type,
-                                   Oid transfn_oid,
-                                   Oid finalfn_oid,
-                                   Expr **transfnexpr,
-                                   Expr **finalfnexpr);
+                       Oid agg_state_type,
+                       Oid agg_result_type,
+                       Oid transfn_oid,
+                       Oid finalfn_oid,
+                       Expr **transfnexpr,
+                       Expr **finalfnexpr);
 
 #endif   /* PARSE_AGG_H */
index 6f4f87a8b6675eefc15ab094a57e006fa8d39ac6..d7d8a16e9676e24fa50853e8e40abfb944b76c5d 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_clause.h,v 1.33 2003/07/03 19:07:53 tgl Exp $
+ * $Id: parse_clause.h,v 1.34 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,9 +22,9 @@ extern int setTargetTable(ParseState *pstate, RangeVar *relation,
 extern bool interpretInhOption(InhOption inhOpt);
 
 extern Node *transformWhereClause(ParseState *pstate, Node *clause,
-                                 const char *constructName);
+                    const char *constructName);
 extern Node *transformLimitClause(ParseState *pstate, Node *clause,
-                                 const char *constructName);
+                    const char *constructName);
 extern List *transformGroupClause(ParseState *pstate, List *grouplist,
                     List *targetlist, List *sortClause);
 extern List *transformSortClause(ParseState *pstate, List *orderlist,
@@ -33,8 +33,8 @@ extern List *transformDistinctClause(ParseState *pstate, List *distinctlist,
                        List *targetlist, List **sortClause);
 
 extern List *addAllTargetsToSortList(ParseState *pstate,
-                                    List *sortlist, List *targetlist,
-                                    bool resolveUnknown);
+                       List *sortlist, List *targetlist,
+                       bool resolveUnknown);
 extern Index assignSortGroupRef(TargetEntry *tle, List *tlist);
 extern bool targetIsInSortList(TargetEntry *tle, List *sortList);
 
index 88d7b614bb9dd020bf3cf301a958c730be6933e7..36c5c7eaf23fab4456e64779319b7de15c443ebd 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_coerce.h,v 1.53 2003/07/03 19:07:54 tgl Exp $
+ * $Id: parse_coerce.h,v 1.54 2003/08/04 00:43:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -40,42 +40,42 @@ extern bool IsPreferredType(CATEGORY category, Oid type);
 extern CATEGORY TypeCategory(Oid type);
 
 extern Node *coerce_to_target_type(ParseState *pstate,
-                                  Node *expr, Oid exprtype,
-                                  Oid targettype, int32 targettypmod,
-                                  CoercionContext ccontext,
-                                  CoercionForm cformat);
+                     Node *expr, Oid exprtype,
+                     Oid targettype, int32 targettypmod,
+                     CoercionContext ccontext,
+                     CoercionForm cformat);
 extern bool can_coerce_type(int nargs, Oid *input_typeids, Oid *target_typeids,
-                           CoercionContext ccontext);
+               CoercionContext ccontext);
 extern Node *coerce_type(ParseState *pstate, Node *node,
-                        Oid inputTypeId, Oid targetTypeId,
-                        CoercionContext ccontext, CoercionForm cformat);
+           Oid inputTypeId, Oid targetTypeId,
+           CoercionContext ccontext, CoercionForm cformat);
 extern Node *coerce_to_domain(Node *arg, Oid baseTypeId, Oid typeId,
-                             CoercionForm cformat);
+                CoercionForm cformat);
 
 extern Node *coerce_to_boolean(ParseState *pstate, Node *node,
-                              const char *constructName);
+                 const char *constructName);
 extern Node *coerce_to_integer(ParseState *pstate, Node *node,
-                              const char *constructName);
+                 const char *constructName);
 
 extern Oid select_common_type(List *typeids, const char *context);
 extern Node *coerce_to_common_type(ParseState *pstate, Node *node,
-                                  Oid targetTypeId,
-                                  const char *context);
+                     Oid targetTypeId,
+                     const char *context);
 
 extern bool check_generic_type_consistency(Oid *actual_arg_types,
-                                          Oid *declared_arg_types,
-                                          int nargs);
+                              Oid *declared_arg_types,
+                              int nargs);
 extern Oid enforce_generic_type_consistency(Oid *actual_arg_types,
-                                           Oid *declared_arg_types,
-                                           int nargs,
-                                           Oid rettype);
+                                Oid *declared_arg_types,
+                                int nargs,
+                                Oid rettype);
 extern Oid resolve_generic_type(Oid declared_type,
-                               Oid context_actual_type,
-                               Oid context_declared_type);
+                    Oid context_actual_type,
+                    Oid context_declared_type);
 
 extern bool find_coercion_pathway(Oid targetTypeId, Oid sourceTypeId,
-                                 CoercionContext ccontext,
-                                 Oid *funcid);
+                     CoercionContext ccontext,
+                     Oid *funcid);
 extern Oid find_typmod_coercion_function(Oid typeId, int *nargs);
 
 #endif   /* PARSE_COERCE_H */
index d4046b988f088f9f34aefd1185fbdf71a6079ba6..9393c1aaa4c64e58ffeb44490f2c24e1a9c30aa1 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_func.h,v 1.48 2003/07/20 21:56:35 tgl Exp $
+ * $Id: parse_func.h,v 1.49 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -50,32 +50,32 @@ extern FuncDetailCode func_get_detail(List *funcname, List *fargs,
                Oid *funcid, Oid *rettype,
                bool *retset, Oid **true_typeids);
 
-extern int func_match_argtypes(int nargs,
-                               Oid *input_typeids,
-                               FuncCandidateList raw_candidates,
-                               FuncCandidateList *candidates);
+extern int func_match_argtypes(int nargs,
+                   Oid *input_typeids,
+                   FuncCandidateList raw_candidates,
+                   FuncCandidateList *candidates);
 
 extern FuncCandidateList func_select_candidate(int nargs,
-                                              Oid *input_typeids,
-                                              FuncCandidateList candidates);
+                     Oid *input_typeids,
+                     FuncCandidateList candidates);
 
 extern bool typeInheritsFrom(Oid subclassTypeId, Oid superclassTypeId);
 
 extern void make_fn_arguments(ParseState *pstate,
-                             List *fargs,
-                             Oid *actual_arg_types,
-                             Oid *declared_arg_types);
+                 List *fargs,
+                 Oid *actual_arg_types,
+                 Oid *declared_arg_types);
 
 extern const char *funcname_signature_string(const char *funcname,
-                                            int nargs, const Oid *argtypes);
+                         int nargs, const Oid *argtypes);
 extern const char *func_signature_string(List *funcname,
-                                        int nargs, const Oid *argtypes);
+                     int nargs, const Oid *argtypes);
 
-extern Oid find_aggregate_func(List *aggname, Oid basetype, bool noError);
+extern Oid find_aggregate_func(List *aggname, Oid basetype, bool noError);
 
-extern Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes,
-                          bool noError);
+extern Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes,
+              bool noError);
 extern Oid LookupFuncNameTypeNames(List *funcname, List *argtypes,
-                                  bool noError);
+                       bool noError);
 
 #endif   /* PARSE_FUNC_H */
index 1f52963e5c018b654dd19bbe3885b51ce35cec7d..339a07ae0c1e72fde17aa7cb6fc3c5612209930f 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_node.h,v 1.35 2003/04/29 22:13:11 tgl Exp $
+ * $Id: parse_node.h,v 1.36 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -54,7 +54,8 @@ typedef struct ParseState
    int         p_numparams;    /* allocated size of p_paramtypes[] */
    int         p_next_resno;   /* next targetlist resno to assign */
    List       *p_forUpdate;    /* FOR UPDATE clause, if any (see gram.y) */
-   Node       *p_value_substitute; /* what to replace VALUE with, if any */
+   Node       *p_value_substitute;     /* what to replace VALUE with, if
+                                        * any */
    bool        p_variableparams;
    bool        p_hasAggs;
    bool        p_hasSubLinks;
index a53b1a5a23e15793cfc72864e02da7dff9197d02..e2d43f165a6bcd158e0f062e82064d4415be40db 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_oper.h,v 1.30 2003/07/04 02:51:34 tgl Exp $
+ * $Id: parse_oper.h,v 1.31 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 typedef HeapTuple Operator;
 
 /* Routines to look up an operator given name and exact input type(s) */
-extern Oid LookupOperName(List *opername, Oid oprleft, Oid oprright,
-                          bool noError);
+extern Oid LookupOperName(List *opername, Oid oprleft, Oid oprright,
+              bool noError);
 extern Oid LookupOperNameTypeNames(List *opername, TypeName *oprleft,
-                                  TypeName *oprright, bool noError);
+                       TypeName *oprright, bool noError);
 
 /* Routines to find operators matching a name and given input types */
 /* NB: the selected operator may require coercion of the input types! */
@@ -54,12 +54,12 @@ extern Oid  oprfuncid(Operator op);
 
 /* Build expression tree for an operator invocation */
 extern Expr *make_op(ParseState *pstate, List *opname,
-                    Node *ltree, Node *rtree);
+       Node *ltree, Node *rtree);
 extern Expr *make_scalar_array_op(ParseState *pstate, List *opname,
-                                 bool useOr,
-                                 Node *ltree, Node *rtree);
+                    bool useOr,
+                    Node *ltree, Node *rtree);
 extern Expr *make_op_expr(ParseState *pstate, Operator op,
-                         Node *ltree, Node *rtree,
-                         Oid ltypeId, Oid rtypeId);
+            Node *ltree, Node *rtree,
+            Oid ltypeId, Oid rtypeId);
 
 #endif   /* PARSE_OPER_H */
index 3bf316a5805c33059bd80fc57178fad1104c8781..451ef351e65a767fc37243af1670dde58afb7e3d 100644 (file)
@@ -3,10 +3,10 @@
  *
  * This file contains various configuration symbols and limits.  In
  * all cases, changing them is only useful in very rare situations or
- * for developers.  If you edit any of these, be sure to do a *full*
+ * for developers. If you edit any of these, be sure to do a *full*
  * rebuild (and an initdb if noted).
  *
- * $Id: pg_config_manual.h,v 1.4 2003/06/12 07:36:51 momjian Exp $
+ * $Id: pg_config_manual.h,v 1.5 2003/08/04 00:43:29 momjian Exp $
  *------------------------------------------------------------------------
  */
 
@@ -41,7 +41,7 @@
  *
  * Changing RELSEG_SIZE requires an initdb.
  */
-#define RELSEG_SIZE    (0x40000000 / BLCKSZ)
+#define RELSEG_SIZE (0x40000000 / BLCKSZ)
 
 /*
  * Maximum number of columns in an index and maximum number of
@@ -59,7 +59,7 @@
 /*
  * Define this to make libpgtcl's "pg_result -assign" command process
  * C-style backslash sequences in returned tuple data and convert
- * PostgreSQL array values into Tcl lists.  CAUTION: This conversion
+ * PostgreSQL array values into Tcl lists. CAUTION: This conversion
  * is *wrong* unless you install the routines in
  * contrib/string/string_io to make the server produce C-style
  * backslash sequences in the first place.
@@ -69,7 +69,7 @@
 /*
  * User locks are handled totally on the application side as long term
  * cooperative locks which extend beyond the normal transaction
- * boundaries.  Their purpose is to indicate to an application that
+ * boundaries. Their purpose is to indicate to an application that
  * someone is `working' on an item.  Define this flag to enable user
  * locks.  You will need the loadable module user-locks.c to use this
  * feature.
@@ -84,8 +84,8 @@
 
 /*
  * Define this if you want to allow the lo_import and lo_export SQL
- * functions to be executed by ordinary users.  By default these
- * functions are only available to the Postgres superuser.  CAUTION:
+ * functions to be executed by ordinary users. By default these
+ * functions are only available to the Postgres superuser. CAUTION:
  * These functions are SECURITY HOLES since they can read and write
  * any file that the PostgreSQL server has permission to access.  If
  * you turn this on, don't say we didn't warn you.
  * Disable UNIX sockets for those operating system.
  */
 #if defined(__QNX__) || defined(__BEOS__) || defined(WIN32)
-# undef HAVE_UNIX_SOCKETS
+#undef HAVE_UNIX_SOCKETS
 #endif
 
 /*
  */
 #if !defined(__QNX__) && !defined(__BEOS__) && \
    !defined(__CYGWIN__) && !defined(WIN32)
-# define HAVE_WORKING_LINK 1
+#define HAVE_WORKING_LINK 1
 #endif
-  
+
 /*
  * Define this if your operating system has _timezone rather than timezone
  */
 #if defined(__CYGWIN__) || defined(WIN32)
-# define HAVE_INT_TIMEZONE     /* has int _timezone */
-# define HAVE_UNDERSCORE_TIMEZONE 1
+#define HAVE_INT_TIMEZONE      /* has int _timezone */
+#define HAVE_UNDERSCORE_TIMEZONE 1
 #endif
-  
+
 /*
  * This is the default directory in which AF_UNIX socket files are
- * placed.  Caution: changing this risks breaking your existing client
+ * placed. Caution: changing this risks breaking your existing client
  * applications, which are likely to continue to look in the old
  * directory.  But if you just hate the idea of sockets in /tmp,
  * here's where to twiddle it.  You can also override this at runtime
  * MAX_RANDOM_VALUE.  Currently, all known implementations yield
  * 0..2^31-1, so we just hardwire this constant.  We could do a
  * configure test if it proves to be necessary.  CAUTION: Think not to
- * replace this with RAND_MAX.  RAND_MAX defines the maximum value of
+ * replace this with RAND_MAX. RAND_MAX defines the maximum value of
  * the older rand() function, which is often different from --- and
  * considerably inferior to --- random().
  */
 /*
  * Define this to cause pfree()'d memory to be cleared immediately, to
  * facilitate catching bugs that refer to already-freed values.  XXX
- * Right now, this gets defined automatically if --enable-cassert.  In
+ * Right now, this gets defined automatically if --enable-cassert. In
  * the long term it probably doesn't need to be on by default.
  */
 #ifdef USE_ASSERT_CHECKING
 
 /*
  * Define this to check memory allocation errors (scribbling on more
- * bytes than were allocated).  Right now, this gets defined
+ * bytes than were allocated). Right now, this gets defined
  * automatically if --enable-cassert.  In the long term it probably
  * doesn't need to be on by default.
  */
-#ifdef USE_ASSERT_CHECKING 
+#ifdef USE_ASSERT_CHECKING
 #define MEMORY_CONTEXT_CHECKING
 #endif
 
  */
 /* #define IPORTAL_DEBUG  */
 /* #define HEAPDEBUGALL  */
-/* #define ISTRATDEBUG  */
+/* #define ISTRATDEBUG */
 /* #define ACLDEBUG */
 /* #define RTDEBUG */
 /* #define GISTDEBUG */
index 568cf878e4761de94a58a920c06088fc68ea0b74..cc76d67d6469cf5e1f51c643534dd8a07f7bec63 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 2001-2003, PostgreSQL Global Development Group
  *
- * $Id: pgstat.h,v 1.15 2003/04/27 20:09:44 tgl Exp $
+ * $Id: pgstat.h,v 1.16 2003/08/04 00:43:29 momjian Exp $
  * ----------
  */
 #ifndef PGSTAT_H
@@ -38,7 +38,7 @@
 
 #define PGSTAT_DESTROY_COUNT   (PGSTAT_DESTROY_DELAY / PGSTAT_STAT_INTERVAL)
 
-#define PGSTAT_RESTART_INTERVAL    60      /* How often to attempt to restart */
+#define PGSTAT_RESTART_INTERVAL 60     /* How often to attempt to restart */
  /* a failed statistics collector; in seconds. */
 
 /* ----------
index c1bbfd718c7994cadc3cb48a3489699302693716..972f886f40a064559be17dcb3bbc08c078f3ca66 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: port.h,v 1.8 2003/06/24 00:44:29 momjian Exp $
+ * $Id: port.h,v 1.9 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #endif
 
 /* Portable path handling for Unix/Win32 */
-bool is_absolute_path(const char *filename);
-char *first_path_separator(const char *filename);
-char *last_path_separator(const char *filename);
-char *get_progname(char *argv0);
+bool       is_absolute_path(const char *filename);
+char      *first_path_separator(const char *filename);
+char      *last_path_separator(const char *filename);
+char      *get_progname(char *argv0);
 
 #if defined(bsdi) || defined(netbsd)
-int fseeko(FILE *stream, off_t offset, int whence);
-off_t ftello(FILE *stream);
+int            fseeko(FILE *stream, off_t offset, int whence);
+off_t      ftello(FILE *stream);
 #endif
 
 #ifdef WIN32
@@ -33,15 +33,17 @@ off_t ftello(FILE *stream);
  * Win32 doesn't have reliable rename/unlink during concurrent access
  */
 #ifndef FRONTEND
-int pgrename(const char *from, const char *to);
-int pgunlink(const char *path);      
+int            pgrename(const char *from, const char *to);
+int            pgunlink(const char *path);
+
 #define rename(from, to)   pgrename(from, to)
 #define unlink(path)       pgunlink(path)
 #endif
 
-extern int copydir(char *fromdir,char *todir);
+extern int copydir(char *fromdir, char *todir);
+
 /* Last parameter not used */
-extern int gettimeofday(struct timeval *tp, struct timezone *tzp);
+extern int gettimeofday(struct timeval * tp, struct timezone * tzp);
 
 #else
 
@@ -49,9 +51,9 @@ extern int gettimeofday(struct timeval *tp, struct timezone *tzp);
  * Win32 requires a special close for sockets and pipes, while on Unix
  * close() does them all.
  */
-#define    closesocket close
+#define closesocket close
 #endif
-  
+
 /*
  * Default "extern" declarations or macro substitutes for library routines.
  * When necessary, these routines are provided by files in src/port/.
@@ -66,15 +68,15 @@ extern char *crypt(const char *key, const char *setting);
 #endif
 
 #ifndef HAVE_GETOPT
-extern int getopt(int nargc, char *const *nargv, const char *ostr);
+extern int getopt(int nargc, char *const * nargv, const char *ostr);
 #endif
 
 #ifndef HAVE_ISINF
-extern int isinf(double x);
+extern int isinf(double x);
 #endif
 
 #if !defined(HAVE_GETHOSTNAME) && defined(KRB4)
-extern int gethostname(char *name, int namelen);
+extern int gethostname(char *name, int namelen);
 #endif
 
 #ifndef HAVE_RINT
@@ -83,14 +85,14 @@ extern double rint(double x);
 
 #ifndef HAVE_INET_ATON
 #if !defined(_MSC_VER) && !defined(__BORLANDC__)
-# include <netinet/in.h>
-# include <arpa/inet.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
 #endif
-extern int inet_aton(const char *cp, struct in_addr * addr);
+extern int inet_aton(const char *cp, struct in_addr * addr);
 #endif
 
 #ifndef HAVE_STRCASECMP
-extern int strcasecmp(char *s1, char *s2);
+extern int strcasecmp(char *s1, char *s2);
 #endif
 
 #ifndef HAVE_STRDUP
@@ -108,11 +110,11 @@ extern void srandom(unsigned int seed);
 /* thread.h */
 extern char *pqStrerror(int errnum, char *strerrbuf, size_t buflen);
 
-extern int pqGetpwuid(uid_t uid, struct passwd *resultbuf, char *buffer,
-             size_t buflen, struct passwd **result);
+extern int pqGetpwuid(uid_t uid, struct passwd * resultbuf, char *buffer,
+          size_t buflen, struct passwd ** result);
 
 extern int pqGethostbyname(const char *name,
-              struct hostent *resbuf,
-              char *buf, size_t buflen,
-              struct hostent **result,
-              int *herrno);
+               struct hostent * resbuf,
+               char *buf, size_t buflen,
+               struct hostent ** result,
+               int *herrno);
index 3a2aa59d096556bd96492f7577fe64ae5d100ae3..f4865361132a605720c77c20a443b6f22da98403 100644 (file)
@@ -8,4 +8,3 @@
 #define HAS_TEST_AND_SET
 
 typedef unsigned char slock_t;
-
index c703f59c62b28eb1d4e2214331ac3e8204cb71dc..2b818941ef04da9cef8e0f19c5355a362ebdfa6c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/include/port/cygwin.h,v 1.3 2003/05/22 17:20:28 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/include/port/cygwin.h,v 1.4 2003/08/04 00:43:32 momjian Exp $ */
 
 #define HAS_TEST_AND_SET
 typedef unsigned char slock_t;
@@ -20,4 +20,5 @@ typedef unsigned char slock_t;
 #define DLLIMPORT __declspec (dllexport)
 #else
 #define DLLIMPORT __declspec (dllimport)
+
 #endif
index aba5c72fe629d010587ff5cb25d2bebdb16e269c..7729fa5b9bb306e61d68bdf39bf25abd816f9620 100644 (file)
@@ -44,4 +44,5 @@ typedef unsigned long slock_t;
 #if defined(__powerpc__)
 #define HAS_TEST_AND_SET
 typedef unsigned int slock_t;
+
 #endif
index 83296d852ecb2101f9df940e8cbb6a5676faa72d..28883ad4b109db344524719a4137406832c75b2a 100644 (file)
@@ -31,4 +31,5 @@ typedef unsigned int slock_t;
 
 #else
 #error unrecognized CPU type for HP-UX
+
 #endif
index aba5c72fe629d010587ff5cb25d2bebdb16e269c..7729fa5b9bb306e61d68bdf39bf25abd816f9620 100644 (file)
@@ -44,4 +44,5 @@ typedef unsigned long slock_t;
 #if defined(__powerpc__)
 #define HAS_TEST_AND_SET
 typedef unsigned int slock_t;
+
 #endif
index aba5c72fe629d010587ff5cb25d2bebdb16e269c..7729fa5b9bb306e61d68bdf39bf25abd816f9620 100644 (file)
@@ -44,4 +44,5 @@ typedef unsigned long slock_t;
 #if defined(__powerpc__)
 #define HAS_TEST_AND_SET
 typedef unsigned int slock_t;
+
 #endif
index 747a2d757c805312d66de4fd3dd934932bb264ba..7ffff9b3031d326370e64f208cc867e61218259c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/include/port/win32.h,v 1.11 2003/05/16 04:59:22 momjian Exp $ */
+/* $Header: /cvsroot/pgsql/src/include/port/win32.h,v 1.12 2003/08/04 00:43:32 momjian Exp $ */
 
 /* undefine and redefine after #include */
 #undef mkdir
@@ -38,7 +38,6 @@
 #else                          /* not CYGWIN, not MSVC */
 
 #define DLLIMPORT
-
 #endif
 
 /*
  */
 struct shmid_ds
 {
-   int     dummy;
-   int     shm_nattch;
+   int         dummy;
+   int         shm_nattch;
 };
 
-int   shmdt(const void *shmaddr);
-void* shmat(int memId, void* shmaddr, int flag);
-int   shmctl(int shmid, int flag, struct shmid_ds * dummy);
-int   shmget(int memKey, int size, int flag);
+int            shmdt(const void *shmaddr);
+void      *shmat(int memId, void *shmaddr, int flag);
+int            shmctl(int shmid, int flag, struct shmid_ds * dummy);
+int            shmget(int memKey, int size, int flag);
 
 
 /*
@@ -83,45 +82,46 @@ int   shmget(int memKey, int size, int flag);
  */
 union semun
 {
-   int         val;
+   int         val;
    struct semid_ds *buf;
    unsigned short *array;
 };
 
 struct sembuf
 {
-   int         sem_flg;
-   int         sem_op;
-   int         sem_num;
+   int         sem_flg;
+   int         sem_op;
+   int         sem_num;
 };
 
-int      semctl(int semId, int semNum, int flag, union semun);
-int      semget(int semKey, int semNum, int flags);
-int      semop(int semId, struct sembuf * sops, int flag);
+int            semctl(int semId, int semNum, int flag, union semun);
+int            semget(int semKey, int semNum, int flags);
+int            semop(int semId, struct sembuf * sops, int flag);
 
 #define sleep(sec) (Sleep(sec * 1000), /* no return value */ 0)
 
 /* Some extra signals */
 #define SIGHUP             1
-#define SIGQUIT            3
-#define SIGTRAP            5
-#define SIGABRT            22    /* Set to match W32 value -- not UNIX value */
-#define SIGKILL            9
-#define SIGPIPE            13
-#define SIGALRM            14
-#define SIGSTOP            17
-#define SIGCONT            19
-#define SIGCHLD            20
-#define SIGTTIN            21
-#define SIGTTOU            22    /* Same as SIGABRT -- no problem, I hope */
-#define SIGWINCH           28
-#define SIGUSR1            30
-#define SIGUSR2            31
+#define SIGQUIT                3
+#define SIGTRAP                5
+#define SIGABRT                22  /* Set to match W32 value -- not UNIX
+                                * value */
+#define SIGKILL                9
+#define SIGPIPE                13
+#define SIGALRM                14
+#define SIGSTOP                17
+#define SIGCONT                19
+#define SIGCHLD                20
+#define SIGTTIN                21
+#define SIGTTOU                22  /* Same as SIGABRT -- no problem, I hope */
+#define SIGWINCH           28
+#define SIGUSR1                30
+#define SIGUSR2                31
 
 struct timezone
 {
-    int tz_minuteswest;         /* Minutes west of GMT.  */
-    int tz_dsttime;             /* Nonzero if DST is ever in effect.  */
+   int         tz_minuteswest; /* Minutes west of GMT.  */
+   int         tz_dsttime;     /* Nonzero if DST is ever in effect.  */
 };
 
 /* FROM SRA */
@@ -163,4 +163,3 @@ struct timezone
 #define EWOULDBLOCK WSAEWOULDBLOCK
 #define ECONNRESET WSAECONNRESET
 #define EINPROGRESS WSAEINPROGRESS
-
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
index 52db5248cb7dc643bbd6106e629a2d31d629a6d8..dc979c05372642d4e23342150bc35bb254becb7f 100644 (file)
@@ -1,2 +1 @@
 #include <sys/socket.h>
-
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
index 93df14ed7ce3a4bbd8d4a891163a05c1348bab7f..86950699e4d36c9f1e80129ada0e832fc82dafdf 100644 (file)
@@ -12,4 +12,5 @@
 /* Restore old ERROR value */
 #ifdef PGERROR
 #define ERROR PGERROR
+
 #endif
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
index 3d2da911d279c3878aff3d8140c24a313bb1cdf5..8c40afc9564eba82472073763293b7a2fec22da4 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1995, Regents of the University of California
  *
- * $Id: postgres.h,v 1.63 2003/04/06 22:45:23 petere Exp $
+ * $Id: postgres.h,v 1.64 2003/08/04 00:43:29 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -130,6 +130,7 @@ typedef struct varattrib
  */
 
 typedef unsigned long Datum;   /* XXX sizeof(long) >= sizeof(void *) */
+
 #define SIZEOF_DATUM SIZEOF_UNSIGNED_LONG
 typedef Datum *DatumPtr;
 
index 305243296ff4aa2117e80d20f3fe306fa1a723b7..1089126a3aceaad86fd8ad94c7e4b2d17938afd4 100644 (file)
@@ -1,19 +1,19 @@
 /*
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -25,7 +25,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: regcustom.h,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Id: regcustom.h,v 1.2 2003/08/04 00:43:32 momjian Exp $
  */
 
 /* headers if any */
 
 
 /* overrides for regguts.h definitions, if any */
-#define    FUNCPTR(name, args) (*name) args
-#define    MALLOC(n)       malloc(n)
-#define    FREE(p)         free(VS(p))
-#define    REALLOC(p,n)        realloc(VS(p),n)
+#define FUNCPTR(name, args) (*name) args
+#define MALLOC(n)      malloc(n)
+#define FREE(p)            free(VS(p))
+#define REALLOC(p,n)       realloc(VS(p),n)
 
 /* internal character type and related */
-typedef pg_wchar chr;  /* the type itself */
-typedef unsigned uchr;     /* unsigned type that will hold a chr */
-typedef int celt;      /* type to hold chr, MCCE number, or NOCELT */
-#define    NOCELT  (-1)        /* celt value which is not valid chr or MCCE */
-#define    CHR(c)  ((unsigned char) (c)) /* turn char literal into chr literal */
-#define    DIGITVAL(c) ((c)-'0')   /* turn chr digit into its value */
-#define    CHRBITS 32      /* bits in a chr; must not use sizeof */
-#define    CHR_MIN 0x00000000      /* smallest and largest chr; the value */
-#define    CHR_MAX 0xfffffffe      /*  CHR_MAX-CHR_MIN+1 should fit in uchr */
+typedef pg_wchar chr;          /* the type itself */
+typedef unsigned uchr;         /* unsigned type that will hold a chr */
+typedef int celt;              /* type to hold chr, MCCE number, or
+                                * NOCELT */
+
+#define NOCELT (-1)            /* celt value which is not valid chr or
+                                * MCCE */
+#define CHR(c) ((unsigned char) (c))   /* turn char literal into chr
+                                        * literal */
+#define DIGITVAL(c) ((c)-'0')  /* turn chr digit into its value */
+#define CHRBITS 32             /* bits in a chr; must not use sizeof */
+#define CHR_MIN 0x00000000     /* smallest and largest chr; the value */
+#define CHR_MAX 0xfffffffe     /* CHR_MAX-CHR_MIN+1 should fit in uchr */
 
 /* functions operating on chr */
-#define    iscalnum(x) pg_isalnum(x)
-#define    iscalpha(x) pg_isalpha(x)
-#define    iscdigit(x) pg_isdigit(x)
-#define    iscspace(x) pg_isspace(x)
+#define iscalnum(x) pg_isalnum(x)
+#define iscalpha(x) pg_isalpha(x)
+#define iscdigit(x) pg_isdigit(x)
+#define iscspace(x) pg_isspace(x)
 
 /* and pick up the standard header */
 #include "regex.h"
index 4b1a0541b51a5a33ffd2e7126ae7383bddf088b3..fbf911fdf2af930ce64d82747dcef94097505fc2 100644 (file)
@@ -1,22 +1,75 @@
 /*
- * $Id: regerrs.h,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Id: regerrs.h,v 1.2 2003/08/04 00:43:32 momjian Exp $
  */
 
-{ REG_OKAY,    "REG_OKAY", "no errors detected" },
-{ REG_NOMATCH, "REG_NOMATCH",  "failed to match" },
-{ REG_BADPAT,  "REG_BADPAT",   "invalid regexp (reg version 0.8)" },
-{ REG_ECOLLATE,    "REG_ECOLLATE", "invalid collating element" },
-{ REG_ECTYPE,  "REG_ECTYPE",   "invalid character class" },
-{ REG_EESCAPE, "REG_EESCAPE",  "invalid escape \\ sequence" },
-{ REG_ESUBREG, "REG_ESUBREG",  "invalid backreference number" },
-{ REG_EBRACK,  "REG_EBRACK",   "brackets [] not balanced" },
-{ REG_EPAREN,  "REG_EPAREN",   "parentheses () not balanced" },
-{ REG_EBRACE,  "REG_EBRACE",   "braces {} not balanced" },
-{ REG_BADBR,   "REG_BADBR",    "invalid repetition count(s)" },
-{ REG_ERANGE,  "REG_ERANGE",   "invalid character range" },
-{ REG_ESPACE,  "REG_ESPACE",   "out of memory" },
-{ REG_BADRPT,  "REG_BADRPT",   "quantifier operand invalid" },
-{ REG_ASSERT,  "REG_ASSERT",   "\"can't happen\" -- you found a bug" },
-{ REG_INVARG,  "REG_INVARG",   "invalid argument to regex function" },
-{ REG_MIXED,   "REG_MIXED",    "character widths of regex and string differ" },
-{ REG_BADOPT,  "REG_BADOPT",   "invalid embedded option" },
+{
+   REG_OKAY, "REG_OKAY", "no errors detected"
+},
+
+{
+   REG_NOMATCH, "REG_NOMATCH", "failed to match"
+},
+
+{
+   REG_BADPAT, "REG_BADPAT", "invalid regexp (reg version 0.8)"
+},
+
+{
+   REG_ECOLLATE, "REG_ECOLLATE", "invalid collating element"
+},
+
+{
+   REG_ECTYPE, "REG_ECTYPE", "invalid character class"
+},
+
+{
+   REG_EESCAPE, "REG_EESCAPE", "invalid escape \\ sequence"
+},
+
+{
+   REG_ESUBREG, "REG_ESUBREG", "invalid backreference number"
+},
+
+{
+   REG_EBRACK, "REG_EBRACK", "brackets [] not balanced"
+},
+
+{
+   REG_EPAREN, "REG_EPAREN", "parentheses () not balanced"
+},
+
+{
+   REG_EBRACE, "REG_EBRACE", "braces {} not balanced"
+},
+
+{
+   REG_BADBR, "REG_BADBR", "invalid repetition count(s)"
+},
+
+{
+   REG_ERANGE, "REG_ERANGE", "invalid character range"
+},
+
+{
+   REG_ESPACE, "REG_ESPACE", "out of memory"
+},
+
+{
+   REG_BADRPT, "REG_BADRPT", "quantifier operand invalid"
+},
+
+{
+   REG_ASSERT, "REG_ASSERT", "\"can't happen\" -- you found a bug"
+},
+
+{
+   REG_INVARG, "REG_INVARG", "invalid argument to regex function"
+},
+
+{
+   REG_MIXED, "REG_MIXED", "character widths of regex and string differ"
+},
+
+{
+   REG_BADOPT, "REG_BADOPT", "invalid embedded option"
+},
index f29379126a52e7429b397c70569e00f7a6ea0bb0..86ea386dcebd72e9656d884a98d4823800cf83e6 100644 (file)
@@ -1,15 +1,15 @@
 #ifndef _REGEX_H_
-#define    _REGEX_H_   /* never again */
+#define _REGEX_H_              /* never again */
 /*
  * regular expressions
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
@@ -17,7 +17,7 @@
  *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -29,7 +29,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: regex.h,v 1.23 2003/02/05 17:41:32 tgl Exp $
+ * $Id: regex.h,v 1.24 2003/08/04 00:43:32 momjian Exp $
  */
 
 /*
@@ -52,77 +52,81 @@ typedef long regoff_t;
  */
 
 /* the biggie, a compiled RE (or rather, a front end to same) */
-typedef struct {
-   int re_magic;       /* magic number */
-   size_t re_nsub;     /* number of subexpressions */
-   long re_info;       /* information about RE */
-#      define  REG_UBACKREF        000001
-#      define  REG_ULOOKAHEAD      000002
-#      define  REG_UBOUNDS     000004
-#      define  REG_UBRACES     000010
-#      define  REG_UBSALNUM        000020
-#      define  REG_UPBOTCH     000040
-#      define  REG_UBBS        000100
-#      define  REG_UNONPOSIX       000200
-#      define  REG_UUNSPEC     000400
-#      define  REG_UUNPORT     001000
-#      define  REG_ULOCALE     002000
-#      define  REG_UEMPTYMATCH     004000
-#      define  REG_UIMPOSSIBLE     010000
-#      define  REG_USHORTEST       020000
-   int re_csize;       /* sizeof(character) */
-   char *re_endp;      /* backward compatibility kludge */
+typedef struct
+{
+   int         re_magic;       /* magic number */
+   size_t      re_nsub;        /* number of subexpressions */
+   long        re_info;        /* information about RE */
+#define  REG_UBACKREF       000001
+#define  REG_ULOOKAHEAD         000002
+#define  REG_UBOUNDS    000004
+#define  REG_UBRACES    000010
+#define  REG_UBSALNUM       000020
+#define  REG_UPBOTCH    000040
+#define  REG_UBBS       000100
+#define  REG_UNONPOSIX      000200
+#define  REG_UUNSPEC    000400
+#define  REG_UUNPORT    001000
+#define  REG_ULOCALE    002000
+#define  REG_UEMPTYMATCH    004000
+#define  REG_UIMPOSSIBLE    010000
+#define  REG_USHORTEST      020000
+   int         re_csize;       /* sizeof(character) */
+   char       *re_endp;        /* backward compatibility kludge */
    /* the rest is opaque pointers to hidden innards */
-   char *re_guts;      /* `char *' is more portable than `void *' */
-   char *re_fns;
+   char       *re_guts;        /* `char *' is more portable than `void *' */
+   char       *re_fns;
 } regex_t;
 
 /* result reporting (may acquire more fields later) */
-typedef struct {
-   regoff_t rm_so;     /* start of substring */
-   regoff_t rm_eo;     /* end of substring */
+typedef struct
+{
+   regoff_t    rm_so;          /* start of substring */
+   regoff_t    rm_eo;          /* end of substring */
 } regmatch_t;
 
 /* supplementary control and reporting */
-typedef struct {
-   regmatch_t rm_extend;   /* see REG_EXPECT */
-} rm_detail_t;
+typedef struct
+{
+   regmatch_t  rm_extend;      /* see REG_EXPECT */
+}  rm_detail_t;
 
 
 
 /*
  * regex compilation flags
  */
-#define    REG_BASIC   000000  /* BREs (convenience) */
-#define    REG_EXTENDED    000001  /* EREs */
-#define    REG_ADVF    000002  /* advanced features in EREs */
-#define    REG_ADVANCED    000003  /* AREs (which are also EREs) */
-#define    REG_QUOTE   000004  /* no special characters, none */
-#define    REG_NOSPEC  REG_QUOTE   /* historical synonym */
-#define    REG_ICASE   000010  /* ignore case */
-#define    REG_NOSUB   000020  /* don't care about subexpressions */
-#define    REG_EXPANDED    000040  /* expanded format, white space & comments */
-#define    REG_NLSTOP  000100  /* \n doesn't match . or [^ ] */
-#define    REG_NLANCH  000200  /* ^ matches after \n, $ before */
-#define    REG_NEWLINE 000300  /* newlines are line terminators */
-#define    REG_PEND    000400  /* ugh -- backward-compatibility hack */
-#define    REG_EXPECT  001000  /* report details on partial/limited matches */
-#define    REG_BOSONLY 002000  /* temporary kludge for BOS-only matches */
-#define    REG_DUMP    004000  /* none of your business :-) */
-#define    REG_FAKE    010000  /* none of your business :-) */
-#define    REG_PROGRESS    020000  /* none of your business :-) */
+#define REG_BASIC  000000      /* BREs (convenience) */
+#define REG_EXTENDED   000001  /* EREs */
+#define REG_ADVF   000002      /* advanced features in EREs */
+#define REG_ADVANCED   000003  /* AREs (which are also EREs) */
+#define REG_QUOTE  000004      /* no special characters, none */
+#define REG_NOSPEC REG_QUOTE   /* historical synonym */
+#define REG_ICASE  000010      /* ignore case */
+#define REG_NOSUB  000020      /* don't care about subexpressions */
+#define REG_EXPANDED   000040  /* expanded format, white space & comments */
+#define REG_NLSTOP 000100      /* \n doesn't match . or [^ ] */
+#define REG_NLANCH 000200      /* ^ matches after \n, $ before */
+#define REG_NEWLINE 000300     /* newlines are line terminators */
+#define REG_PEND   000400      /* ugh -- backward-compatibility hack */
+#define REG_EXPECT 001000      /* report details on partial/limited
+                                * matches */
+#define REG_BOSONLY 002000     /* temporary kludge for BOS-only matches */
+#define REG_DUMP   004000      /* none of your business :-) */
+#define REG_FAKE   010000      /* none of your business :-) */
+#define REG_PROGRESS   020000  /* none of your business :-) */
 
 
 
 /*
  * regex execution flags
  */
-#define    REG_NOTBOL  0001    /* BOS is not BOL */
-#define    REG_NOTEOL  0002    /* EOS is not EOL */
-#define    REG_STARTEND    0004    /* backward compatibility kludge */
-#define    REG_FTRACE  0010    /* none of your business */
-#define    REG_MTRACE  0020    /* none of your business */
-#define    REG_SMALL   0040    /* none of your business */
+#define REG_NOTBOL 0001        /* BOS is not BOL */
+#define REG_NOTEOL 0002        /* EOS is not EOL */
+#define REG_STARTEND   0004    /* backward compatibility kludge */
+#define REG_FTRACE 0010        /* none of your business */
+#define REG_MTRACE 0020        /* none of your business */
+#define REG_SMALL  0040        /* none of your business */
 
 
 /*
@@ -130,36 +134,37 @@ typedef struct {
  * Be careful if modifying the list of error codes -- the table used by
  * regerror() is generated automatically from this file!
  */
-#define    REG_OKAY     0  /* no errors detected */
-#define    REG_NOMATCH  1  /* failed to match */
-#define    REG_BADPAT   2  /* invalid regexp */
-#define    REG_ECOLLATE     3  /* invalid collating element */
-#define    REG_ECTYPE   4  /* invalid character class */
-#define    REG_EESCAPE  5  /* invalid escape \ sequence */
-#define    REG_ESUBREG  6  /* invalid backreference number */
-#define    REG_EBRACK   7  /* brackets [] not balanced */
-#define    REG_EPAREN   8  /* parentheses () not balanced */
-#define    REG_EBRACE   9  /* braces {} not balanced */
-#define    REG_BADBR   10  /* invalid repetition count(s) */
-#define    REG_ERANGE  11  /* invalid character range */
-#define    REG_ESPACE  12  /* out of memory */
-#define    REG_BADRPT  13  /* quantifier operand invalid */
-#define    REG_ASSERT  15  /* "can't happen" -- you found a bug */
-#define    REG_INVARG  16  /* invalid argument to regex function */
-#define    REG_MIXED   17  /* character widths of regex and string differ */
-#define    REG_BADOPT  18  /* invalid embedded option */
+#define REG_OKAY    0          /* no errors detected */
+#define REG_NOMATCH  1         /* failed to match */
+#define REG_BADPAT  2          /* invalid regexp */
+#define REG_ECOLLATE    3      /* invalid collating element */
+#define REG_ECTYPE  4          /* invalid character class */
+#define REG_EESCAPE  5         /* invalid escape \ sequence */
+#define REG_ESUBREG  6         /* invalid backreference number */
+#define REG_EBRACK  7          /* brackets [] not balanced */
+#define REG_EPAREN  8          /* parentheses () not balanced */
+#define REG_EBRACE  9          /* braces {} not balanced */
+#define REG_BADBR  10          /* invalid repetition count(s) */
+#define REG_ERANGE 11          /* invalid character range */
+#define REG_ESPACE 12          /* out of memory */
+#define REG_BADRPT 13          /* quantifier operand invalid */
+#define REG_ASSERT 15          /* "can't happen" -- you found a bug */
+#define REG_INVARG 16          /* invalid argument to regex function */
+#define REG_MIXED  17          /* character widths of regex and string
+                                * differ */
+#define REG_BADOPT 18          /* invalid embedded option */
 /* two specials for debugging and testing */
-#define    REG_ATOI    101 /* convert error-code name to number */
-#define    REG_ITOA    102 /* convert error-code number to name */
+#define REG_ATOI   101         /* convert error-code name to number */
+#define REG_ITOA   102         /* convert error-code number to name */
 
 
 
 /*
  * the prototypes for exported functions
  */
-extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int);
-extern int pg_regexec(regex_t *, const pg_wchar *, size_t, rm_detail_t *, size_t, regmatch_t [], int);
+extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int);
+extern int pg_regexec(regex_t *, const pg_wchar *, size_t, rm_detail_t *, size_t, regmatch_t[], int);
 extern void pg_regfree(regex_t *);
 extern size_t pg_regerror(int, const regex_t *, char *, size_t);
 
-#endif /* _REGEX_H_ */
+#endif   /* _REGEX_H_ */
index a08abb8af185057bebb29acd118f7c99cdda23be..dfbd392d0929fb02a057c058f7c38c7e2971258a 100644 (file)
@@ -1,21 +1,21 @@
 /*
  * Internal interface definitions, etc., for the reg package
  *
- * Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
- * 
+ * Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
+ *
  * Development of this software was funded, in part, by Cray Research Inc.,
  * UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
  * Corporation, none of whom are responsible for the results.  The author
- * thanks all of them. 
- * 
+ * thanks all of them.
+ *
  * Redistribution and use in source and binary forms -- with or without
  * modification -- are permitted for any purpose, provided that
  * redistributions in source form retain this entire copyright notice and
  * indicate the origin and nature of any modifications.
- * 
+ *
  * I'd appreciate being given credit for this package in the documentation
  * of software which uses it, but that is not a requirement.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
@@ -27,7 +27,7 @@
  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id: regguts.h,v 1.1 2003/02/05 17:41:32 tgl Exp $
+ * $Id: regguts.h,v 1.2 2003/08/04 00:43:32 momjian Exp $
  */
 
 
 
 /* assertions */
 #ifndef assert
-#  ifndef REG_DEBUG
-#  define  NDEBUG      /* no assertions */
-#  endif
+#ifndef REG_DEBUG
+#define  NDEBUG                    /* no assertions */
+#endif
 #include <assert.h>
 #endif
 
 /* voids */
 #ifndef DISCARD
-#define    DISCARD void            /* for throwing values away */
+#define DISCARD void           /* for throwing values away */
 #endif
 #ifndef VS
-#define    VS(x)   ((void *)(x))       /* cast something to generic ptr */
+#define VS(x)  ((void *)(x))   /* cast something to generic ptr */
 #endif
 
 /* function-pointer declarator */
 #ifndef FUNCPTR
-#define    FUNCPTR(name, args) (*name) args
+#define FUNCPTR(name, args) (*name) args
 #endif
 
 /* memory allocation */
 #ifndef MALLOC
-#define    MALLOC(n)   malloc(n)
+#define MALLOC(n)  malloc(n)
 #endif
 #ifndef REALLOC
-#define    REALLOC(p, n)   realloc(VS(p), n)
+#define REALLOC(p, n)  realloc(VS(p), n)
 #endif
 #ifndef FREE
-#define    FREE(p)     free(VS(p))
+#define FREE(p)        free(VS(p))
 #endif
 
 /* want size of a char in bits, and max value in bounded quantifiers */
@@ -82,7 +82,7 @@
 #include <limits.h>
 #endif
 #ifndef _POSIX2_RE_DUP_MAX
-#define    _POSIX2_RE_DUP_MAX  255 /* normally from <limits.h> */
+#define _POSIX2_RE_DUP_MAX 255 /* normally from <limits.h> */
 #endif
 
 
  * misc
  */
 
-#define    NOTREACHED  0
-#define    xxx     1
+#define NOTREACHED 0
+#define xxx        1
 
-#define    DUPMAX  _POSIX2_RE_DUP_MAX
-#define    INFINITY    (DUPMAX+1)
+#define DUPMAX _POSIX2_RE_DUP_MAX
+#define INFINITY   (DUPMAX+1)
 
-#define    REMAGIC 0xfed7      /* magic number for main struct */
+#define REMAGIC 0xfed7         /* magic number for main struct */
 
 
 
  */
 #ifdef REG_DEBUG
 /* FDEBUG does finite-state tracing */
-#define    FDEBUG(arglist) { if (v->eflags&REG_FTRACE) printf arglist; }
+#define FDEBUG(arglist) { if (v->eflags&REG_FTRACE) printf arglist; }
 /* MDEBUG does higher-level tracing */
-#define    MDEBUG(arglist) { if (v->eflags&REG_MTRACE) printf arglist; }
+#define MDEBUG(arglist) { if (v->eflags&REG_MTRACE) printf arglist; }
 #else
-#define    FDEBUG(arglist) {}
-#define    MDEBUG(arglist) {}
+#define FDEBUG(arglist) {}
+#define MDEBUG(arglist) {}
 #endif
 
 
 /*
  * bitmap manipulation
  */
-#define    UBITS   (CHAR_BIT * sizeof(unsigned))
-#define    BSET(uv, sn)    ((uv)[(sn)/UBITS] |= (unsigned)1 << ((sn)%UBITS))
-#define    ISBSET(uv, sn)  ((uv)[(sn)/UBITS] & ((unsigned)1 << ((sn)%UBITS)))
+#define UBITS  (CHAR_BIT * sizeof(unsigned))
+#define BSET(uv, sn)   ((uv)[(sn)/UBITS] |= (unsigned)1 << ((sn)%UBITS))
+#define ISBSET(uv, sn) ((uv)[(sn)/UBITS] & ((unsigned)1 << ((sn)%UBITS)))
 
 
 
 /*
- * We dissect a chr into byts for colormap table indexing.  Here we define
- * a byt, which will be the same as a byte on most machines...  The exact
+ * We dissect a chr into byts for colormap table indexing. Here we define
+ * a byt, which will be the same as a byte on most machines... The exact
  * size of a byt is not critical, but about 8 bits is good, and extraction
  * of 8-bit chunks is sometimes especially fast.
  */
 #ifndef BYTBITS
-#define    BYTBITS 8       /* bits in a byt */
+#define BYTBITS 8              /* bits in a byt */
 #endif
-#define    BYTTAB  (1<<BYTBITS)    /* size of table with one entry per byt value */
-#define    BYTMASK (BYTTAB-1)  /* bit mask for byt */
-#define    NBYTS   ((CHRBITS+BYTBITS-1)/BYTBITS)
+#define BYTTAB (1<<BYTBITS)    /* size of table with one entry per byt
+                                * value */
+#define BYTMASK (BYTTAB-1)     /* bit mask for byt */
+#define NBYTS  ((CHRBITS+BYTBITS-1)/BYTBITS)
 /* the definition of GETCOLOR(), below, assumes NBYTS <= 4 */
 
 
  * As soon as possible, we map chrs into equivalence classes -- "colors" --
  * which are of much more manageable number.
  */
-typedef short color;       /* colors of characters */
-typedef int pcolor;        /* what color promotes to */
-#define    COLORLESS   (-1)    /* impossible color */
-#define    WHITE       0   /* default color, parent of all others */
+typedef short color;           /* colors of characters */
+typedef int pcolor;                /* what color promotes to */
+
+#define COLORLESS  (-1)        /* impossible color */
+#define WHITE      0           /* default color, parent of all others */
 
 
 
 /*
  * A colormap is a tree -- more precisely, a DAG -- indexed at each level
- * by a byt of the chr, to map the chr to a color efficiently.  Because
+ * by a byt of the chr, to map the chr to a color efficiently. Because
  * lower sections of the tree can be shared, it can exploit the usual
- * sparseness of such a mapping table.  The tree is always NBYTS levels
+ * sparseness of such a mapping table. The tree is always NBYTS levels
  * deep (in the past it was shallower during construction but was "filled"
  * to full depth at the end of that); areas that are unaltered as yet point
  * to "fill blocks" which are entirely WHITE in color.
  */
 
 /* the tree itself */
-struct colors {
-   color ccolor[BYTTAB];
+struct colors
+{
+   color       ccolor[BYTTAB];
 };
-struct ptrs {
+struct ptrs
+{
    union tree *pptr[BYTTAB];
 };
-union tree {
+union tree
+{
    struct colors colors;
    struct ptrs ptrs;
 };
-#define    tcolor  colors.ccolor
-#define    tptr    ptrs.pptr
+
+#define tcolor colors.ccolor
+#define tptr   ptrs.pptr
 
 /* internal per-color structure for the color machinery */
-struct colordesc {
-   uchr nchrs;     /* number of chars of this color */
-   color sub;      /* open subcolor (if any); free chain ptr */
-#      define  NOSUB   COLORLESS
-   struct arc *arcs;   /* color chain */
-   int flags;
-#      define  FREECOL 01  /* currently free */
-#      define  PSEUDO  02  /* pseudocolor, no real chars */
-#  define  UNUSEDCOLOR(cd) ((cd)->flags&FREECOL)
-   union tree *block;  /* block of solid color, if any */
+struct colordesc
+{
+   uchr        nchrs;          /* number of chars of this color */
+   color       sub;            /* open subcolor (if any); free chain ptr */
+#define  NOSUB  COLORLESS
+   struct arc *arcs;           /* color chain */
+   int         flags;
+#define  FREECOL 01                /* currently free */
+#define  PSEUDO  02                /* pseudocolor, no real chars */
+#define  UNUSEDCOLOR(cd) ((cd)->flags&FREECOL)
+   union tree *block;          /* block of solid color, if any */
 };
 
 /* the color map itself */
-struct colormap {
-   int magic;
-#      define  CMMAGIC 0x876
-   struct vars *v;         /* for compile error reporting */
-   size_t ncds;            /* number of colordescs */
-   size_t max;         /* highest in use */
-   color free;         /* beginning of free chain (if non-0) */
+struct colormap
+{
+   int         magic;
+#define  CMMAGIC 0x876
+   struct vars *v;             /* for compile error reporting */
+   size_t      ncds;           /* number of colordescs */
+   size_t      max;            /* highest in use */
+   color       free;           /* beginning of free chain (if non-0) */
    struct colordesc *cd;
-#  define  CDEND(cm)   (&(cm)->cd[(cm)->max + 1])
-#      define  NINLINECDS  ((size_t)10)
+#define  CDEND(cm)  (&(cm)->cd[(cm)->max + 1])
+#define  NINLINECDS  ((size_t)10)
    struct colordesc cdspace[NINLINECDS];
-   union tree tree[NBYTS];     /* tree top, plus fill blocks */
+   union tree  tree[NBYTS];    /* tree top, plus fill blocks */
 };
 
 /* optimization magic to do fast chr->color mapping */
-#define    B0(c)   ((c) & BYTMASK)
-#define    B1(c)   (((c)>>BYTBITS) & BYTMASK)
-#define    B2(c)   (((c)>>(2*BYTBITS)) & BYTMASK)
-#define    B3(c)   (((c)>>(3*BYTBITS)) & BYTMASK)
+#define B0(c)  ((c) & BYTMASK)
+#define B1(c)  (((c)>>BYTBITS) & BYTMASK)
+#define B2(c)  (((c)>>(2*BYTBITS)) & BYTMASK)
+#define B3(c)  (((c)>>(3*BYTBITS)) & BYTMASK)
 #if NBYTS == 1
-#define    GETCOLOR(cm, c) ((cm)->tree->tcolor[B0(c)])
+#define GETCOLOR(cm, c) ((cm)->tree->tcolor[B0(c)])
 #endif
 /* beware, for NBYTS>1, GETCOLOR() is unsafe -- 2nd arg used repeatedly */
 #if NBYTS == 2
-#define    GETCOLOR(cm, c) ((cm)->tree->tptr[B1(c)]->tcolor[B0(c)])
+#define GETCOLOR(cm, c) ((cm)->tree->tptr[B1(c)]->tcolor[B0(c)])
 #endif
 #if NBYTS == 4
-#define    GETCOLOR(cm, c) ((cm)->tree->tptr[B3(c)]->tptr[B2(c)]->tptr[B1(c)]->tcolor[B0(c)])
+#define GETCOLOR(cm, c) ((cm)->tree->tptr[B3(c)]->tptr[B2(c)]->tptr[B1(c)]->tcolor[B0(c)])
 #endif
 
 
@@ -226,22 +234,23 @@ struct colormap {
  * Interface definitions for locale-interface functions in locale.c.
  * Multi-character collating elements (MCCEs) cause most of the trouble.
  */
-struct cvec {
-   int nchrs;      /* number of chrs */
-   int chrspace;       /* number of chrs possible */
-   chr *chrs;      /* pointer to vector of chrs */
-   int nranges;        /* number of ranges (chr pairs) */
-   int rangespace;     /* number of chrs possible */
-   chr *ranges;        /* pointer to vector of chr pairs */
-   int nmcces;     /* number of MCCEs */
-   int mccespace;      /* number of MCCEs possible */
-   int nmccechrs;      /* number of chrs used for MCCEs */
-   chr *mcces[1];      /* pointers to 0-terminated MCCEs */
-               /* and both batches of chrs are on the end */
+struct cvec
+{
+   int         nchrs;          /* number of chrs */
+   int         chrspace;       /* number of chrs possible */
+   chr        *chrs;           /* pointer to vector of chrs */
+   int         nranges;        /* number of ranges (chr pairs) */
+   int         rangespace;     /* number of chrs possible */
+   chr        *ranges;         /* pointer to vector of chr pairs */
+   int         nmcces;         /* number of MCCEs */
+   int         mccespace;      /* number of MCCEs possible */
+   int         nmccechrs;      /* number of chrs used for MCCEs */
+   chr        *mcces[1];       /* pointers to 0-terminated MCCEs */
+   /* and both batches of chrs are on the end */
 };
 
 /* caution:  this value cannot be changed easily */
-#define    MAXMCCE 2       /* length of longest MCCE */
+#define MAXMCCE 2              /* length of longest MCCE */
 
 
 
@@ -253,54 +262,59 @@ struct cvec {
  */
 struct state;
 
-struct arc {
-   int type;
-#      define  ARCFREE '\0'
-   color co;
-   struct state *from; /* where it's from (and contained within) */
-   struct state *to;   /* where it's to */
-   struct arc *outchain;   /* *from's outs chain or free chain */
-#  define  freechain   outchain
-   struct arc *inchain;    /* *to's ins chain */
-   struct arc *colorchain; /* color's arc chain */
+struct arc
+{
+   int         type;
+#define  ARCFREE '\0'
+   color       co;
+   struct state *from;         /* where it's from (and contained within) */
+   struct state *to;           /* where it's to */
+   struct arc *outchain;       /* *from's outs chain or free chain */
+#define  freechain  outchain
+   struct arc *inchain;        /* *to's ins chain */
+   struct arc *colorchain;     /* color's arc chain */
 };
 
-struct arcbatch {      /* for bulk allocation of arcs */
+struct arcbatch
+{                              /* for bulk allocation of arcs */
    struct arcbatch *next;
-#  define  ABSIZE  10
-   struct arc a[ABSIZE];
+#define  ABSIZE  10
+   struct arc  a[ABSIZE];
 };
 
-struct state {
-   int no;
-#      define  FREESTATE   (-1)
-   char flag;      /* marks special states */
-   int nins;       /* number of inarcs */
-   struct arc *ins;    /* chain of inarcs */
-   int nouts;      /* number of outarcs */
-   struct arc *outs;   /* chain of outarcs */
-   struct arc *free;   /* chain of free arcs */
-   struct state *tmp;  /* temporary for traversal algorithms */
-   struct state *next; /* chain for traversing all */
-   struct state *prev; /* back chain */
-   struct arcbatch oas;    /* first arcbatch, avoid malloc in easy case */
-   int noas;       /* number of arcs used in first arcbatch */
+struct state
+{
+   int         no;
+#define  FREESTATE  (-1)
+   char        flag;           /* marks special states */
+   int         nins;           /* number of inarcs */
+   struct arc *ins;            /* chain of inarcs */
+   int         nouts;          /* number of outarcs */
+   struct arc *outs;           /* chain of outarcs */
+   struct arc *free;           /* chain of free arcs */
+   struct state *tmp;          /* temporary for traversal algorithms */
+   struct state *next;         /* chain for traversing all */
+   struct state *prev;         /* back chain */
+   struct arcbatch oas;        /* first arcbatch, avoid malloc in easy
+                                * case */
+   int         noas;           /* number of arcs used in first arcbatch */
 };
 
-struct nfa {
-   struct state *pre;  /* pre-initial state */
-   struct state *init; /* initial state */
-   struct state *final;    /* final state */
-   struct state *post; /* post-final state */
-   int nstates;        /* for numbering states */
-   struct state *states;   /* state-chain header */
-   struct state *slast;    /* tail of the chain */
-   struct state *free; /* free list */
-   struct colormap *cm;    /* the color map */
-   color bos[2];       /* colors, if any, assigned to BOS and BOL */
-   color eos[2];       /* colors, if any, assigned to EOS and EOL */
-   struct vars *v;     /* simplifies compile error reporting */
-   struct nfa *parent; /* parent NFA, if any */
+struct nfa
+{
+   struct state *pre;          /* pre-initial state */
+   struct state *init;         /* initial state */
+   struct state *final;        /* final state */
+   struct state *post;         /* post-final state */
+   int         nstates;        /* for numbering states */
+   struct state *states;       /* state-chain header */
+   struct state *slast;        /* tail of the chain */
+   struct state *free;         /* free list */
+   struct colormap *cm;        /* the color map */
+   color       bos[2];         /* colors, if any, assigned to BOS and BOL */
+   color       eos[2];         /* colors, if any, assigned to EOS and EOL */
+   struct vars *v;             /* simplifies compile error reporting */
+   struct nfa *parent;         /* parent NFA, if any */
 };
 
 
@@ -308,58 +322,64 @@ struct nfa {
 /*
  * definitions for compacted NFA
  */
-struct carc {
-   color co;       /* COLORLESS is list terminator */
-   int to;         /* state number */
+struct carc
+{
+   color       co;             /* COLORLESS is list terminator */
+   int         to;             /* state number */
 };
 
-struct cnfa {
-   int nstates;        /* number of states */
-   int ncolors;        /* number of colors */
-   int flags;
-#      define  HASLACONS   01  /* uses lookahead constraints */
-   int pre;        /* setup state number */
-   int post;       /* teardown state number */
-   color bos[2];       /* colors, if any, assigned to BOS and BOL */
-   color eos[2];       /* colors, if any, assigned to EOS and EOL */
-   struct carc **states;   /* vector of pointers to outarc lists */
-   struct carc *arcs;  /* the area for the lists */
+struct cnfa
+{
+   int         nstates;        /* number of states */
+   int         ncolors;        /* number of colors */
+   int         flags;
+#define  HASLACONS  01         /* uses lookahead constraints */
+   int         pre;            /* setup state number */
+   int         post;           /* teardown state number */
+   color       bos[2];         /* colors, if any, assigned to BOS and BOL */
+   color       eos[2];         /* colors, if any, assigned to EOS and EOL */
+   struct carc **states;       /* vector of pointers to outarc lists */
+   struct carc *arcs;          /* the area for the lists */
 };
-#define    ZAPCNFA(cnfa)   ((cnfa).nstates = 0)
-#define    NULLCNFA(cnfa)  ((cnfa).nstates == 0)
+
+#define ZAPCNFA(cnfa)  ((cnfa).nstates = 0)
+#define NULLCNFA(cnfa) ((cnfa).nstates == 0)
 
 
 
 /*
  * subexpression tree
  */
-struct subre {
-   char op;        /* '|', '.' (concat), 'b' (backref), '(', '=' */
-   char flags;
-#      define  LONGER  01  /* prefers longer match */
-#      define  SHORTER 02  /* prefers shorter match */
-#      define  MIXED   04  /* mixed preference below */
-#      define  CAP 010 /* capturing parens below */
-#      define  BACKR   020 /* back reference below */
-#      define  INUSE   0100    /* in use in final tree */
-#      define  LOCAL   03  /* bits which may not propagate up */
-#      define  LMIX(f) ((f)<<2)    /* LONGER -> MIXED */
-#      define  SMIX(f) ((f)<<1)    /* SHORTER -> MIXED */
-#      define  UP(f)   (((f)&~LOCAL) | (LMIX(f) & SMIX(f) & MIXED))
-#      define  MESSY(f)    ((f)&(MIXED|CAP|BACKR))
-#      define  PREF(f) ((f)&LOCAL)
-#      define  PREF2(f1, f2)   ((PREF(f1) != 0) ? PREF(f1) : PREF(f2))
-#      define  COMBINE(f1, f2) (UP((f1)|(f2)) | PREF2(f1, f2))
-   short retry;        /* index into retry memory */
-   int subno;      /* subexpression number (for 'b' and '(') */
-   short min;      /* min repetitions, for backref only */
-   short max;      /* max repetitions, for backref only */
-   struct subre *left; /* left child, if any (also freelist chain) */
-   struct subre *right;    /* right child, if any */
-   struct state *begin;    /* outarcs from here... */
-   struct state *end;  /* ...ending in inarcs here */
-   struct cnfa cnfa;   /* compacted NFA, if any */
-   struct subre *chain;    /* for bookkeeping and error cleanup */
+struct subre
+{
+   char        op;             /* '|', '.' (concat), 'b' (backref), '(',
+                                * '=' */
+   char        flags;
+#define  LONGER  01                /* prefers longer match */
+#define  SHORTER 02                /* prefers shorter match */
+#define  MIXED  04             /* mixed preference below */
+#define  CAP 010               /* capturing parens below */
+#define  BACKR  020            /* back reference below */
+#define  INUSE  0100           /* in use in final tree */
+#define  LOCAL  03             /* bits which may not propagate up */
+#define  LMIX(f) ((f)<<2)      /* LONGER -> MIXED */
+#define  SMIX(f) ((f)<<1)      /* SHORTER -> MIXED */
+#define  UP(f)  (((f)&~LOCAL) | (LMIX(f) & SMIX(f) & MIXED))
+#define  MESSY(f)   ((f)&(MIXED|CAP|BACKR))
+#define  PREF(f) ((f)&LOCAL)
+#define  PREF2(f1, f2)  ((PREF(f1) != 0) ? PREF(f1) : PREF(f2))
+#define  COMBINE(f1, f2) (UP((f1)|(f2)) | PREF2(f1, f2))
+   short       retry;          /* index into retry memory */
+   int         subno;          /* subexpression number (for 'b' and '(') */
+   short       min;            /* min repetitions, for backref only */
+   short       max;            /* max repetitions, for backref only */
+   struct subre *left;         /* left child, if any (also freelist
+                                * chain) */
+   struct subre *right;        /* right child, if any */
+   struct state *begin;        /* outarcs from here... */
+   struct state *end;          /* ...ending in inarcs here */
+   struct cnfa cnfa;           /* compacted NFA, if any */
+   struct subre *chain;        /* for bookkeeping and error cleanup */
 };
 
 
@@ -368,8 +388,9 @@ struct subre {
  * table of function pointers for generic manipulation functions
  * A regex_t's re_fns points to one of these.
  */
-struct fns {
-   void FUNCPTR(free, (regex_t *));
+struct fns
+{
+   void        FUNCPTR(free, (regex_t *));
 };
 
 
@@ -377,17 +398,18 @@ struct fns {
 /*
  * the insides of a regex_t, hidden behind a void *
  */
-struct guts {
-   int magic;
-#      define  GUTSMAGIC   0xfed9
-   int cflags;     /* copy of compile flags */
-   long info;      /* copy of re_info */
-   size_t nsub;        /* copy of re_nsub */
+struct guts
+{
+   int         magic;
+#define  GUTSMAGIC  0xfed9
+   int         cflags;         /* copy of compile flags */
+   long        info;           /* copy of re_info */
+   size_t      nsub;           /* copy of re_nsub */
    struct subre *tree;
-   struct cnfa search; /* for fast preliminary search */
-   int ntree;
+   struct cnfa search;         /* for fast preliminary search */
+   int         ntree;
    struct colormap cmap;
-   int FUNCPTR(compare, (const chr *, const chr *, size_t));
-   struct subre *lacons;   /* lookahead-constraint vector */
-   int nlacons;        /* size of lacons */
+   int         FUNCPTR(compare, (const chr *, const chr *, size_t));
+   struct subre *lacons;       /* lookahead-constraint vector */
+   int         nlacons;        /* size of lacons */
 };
index 767530fc1891ecc4da3d271638fd3858bca5ade1..f8bed9de033a6a261fa4ce29af950b03648bb5b2 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: bufmgr.h,v 1.67 2003/03/28 20:17:13 tgl Exp $
+ * $Id: bufmgr.h,v 1.68 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,7 +23,7 @@
 typedef void *Block;
 
 /* in globals.c ... this duplicates miscadmin.h */
-extern DLLIMPORT int   NBuffers;
+extern DLLIMPORT int NBuffers;
 
 /* in bufmgr.c */
 extern bool zero_damaged_pages;
@@ -33,7 +33,7 @@ extern DLLIMPORT Block *BufferBlockPointers;
 extern long *PrivateRefCount;
 
 /* in localbuf.c */
-extern DLLIMPORT int   NLocBuffer;
+extern DLLIMPORT int NLocBuffer;
 extern DLLIMPORT Block *LocalBufferBlockPointers;
 extern long *LocalRefCount;
 
index 8e93a69d77f24bd06ebbcf254d2b5666d85a1df2..b60d0ceb2f45e8f9ca45d4ee50597329bd21c764 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: freespace.h,v 1.10 2003/03/06 00:04:27 tgl Exp $
+ * $Id: freespace.h,v 1.11 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,9 +23,9 @@
  */
 typedef struct PageFreeSpaceInfo
 {
-   BlockNumber     blkno;      /* which page in relation */
-   Size            avail;      /* space available on this page */
-} PageFreeSpaceInfo;
+   BlockNumber blkno;          /* which page in relation */
+   Size        avail;          /* space available on this page */
+}  PageFreeSpaceInfo;
 
 
 /* GUC variables */
@@ -46,13 +46,13 @@ extern BlockNumber RecordAndGetPageWithFreeSpace(RelFileNode *rel,
                              Size spaceNeeded);
 extern Size GetAvgFSMRequestSize(RelFileNode *rel);
 extern void RecordRelationFreeSpace(RelFileNode *rel,
-                                   int nPages,
-                                   PageFreeSpaceInfo *pageSpaces);
+                       int nPages,
+                       PageFreeSpaceInfo * pageSpaces);
 
 extern BlockNumber GetFreeIndexPage(RelFileNode *rel);
 extern void RecordIndexFreeSpace(RelFileNode *rel,
-                                int nPages,
-                                BlockNumber *pages);
+                    int nPages,
+                    BlockNumber *pages);
 
 extern void FreeSpaceMapTruncateRel(RelFileNode *rel, BlockNumber nblocks);
 extern void FreeSpaceMapForgetRel(RelFileNode *rel);
index 60482c67b99becc9ac7a3041646a430ef643ecb0..577559f7a9573dc4253a8466dacf5c782992d269 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: lock.h,v 1.71 2003/02/19 23:41:15 momjian Exp $
+ * $Id: lock.h,v 1.72 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -160,7 +160,7 @@ typedef struct LOCK
  * information for each such holder (or would-be holder).
  *
  * PROCLOCKTAG is the key information needed to look up a PROCLOCK item in the
- * proclock hashtable.  A PROCLOCKTAG value uniquely identifies a lock
+ * proclock hashtable. A PROCLOCKTAG value uniquely identifies a lock
  * holder/waiter.
  *
  * There are two possible kinds of proclock tags: a transaction (identified
@@ -199,7 +199,8 @@ typedef struct PROCLOCK
    int         holding[MAX_LOCKMODES]; /* count of locks currently held */
    int         nHolding;       /* total of holding[] array */
    SHM_QUEUE   lockLink;       /* list link for lock's list of proclocks */
-   SHM_QUEUE   procLink;       /* list link for process's list of proclocks */
+   SHM_QUEUE   procLink;       /* list link for process's list of
+                                * proclocks */
 } PROCLOCK;
 
 #define PROCLOCK_LOCKMETHOD(proclock) \
@@ -246,9 +247,9 @@ extern int  LockShmemSize(int maxBackends);
 extern bool DeadLockCheck(PGPROC *proc);
 extern void DeadLockReport(void);
 extern void RememberSimpleDeadLock(PGPROC *proc1,
-                                  LOCKMODE lockmode,
-                                  LOCK *lock,
-                                  PGPROC *proc2);
+                      LOCKMODE lockmode,
+                      LOCK *lock,
+                      PGPROC *proc2);
 extern void InitDeadLockChecking(void);
 extern LockData *GetLockStatusData(void);
 extern const char *GetLockmodeName(LOCKMODE mode);
index b5721f4593f44c6767a5a483cde8fc155666d679..66d45e33bc4d01cb41b5f10a67a1be2d0c127cbf 100644 (file)
@@ -29,7 +29,7 @@
  *
  * CreateDestReceiver returns a receiver object appropriate to the specified
  * destination.  The executor, as well as utility statements that can return
- * tuples, are passed the resulting DestReceiver* pointer.  Each executor run
+ * tuples, are passed the resulting DestReceiver* pointer. Each executor run
  * or utility execution calls the receiver's startup method, then the
  * receiveTuple method (zero or more times), then the shutdown method.
  * The same receiver object may be re-used multiple times; eventually it is
@@ -41,8 +41,8 @@
  * object that has DestReceiver as its first field and contains additional
  * fields (see printtup.c for an example). These additional fields are then
  * accessible to the DestReceiver functions by casting the DestReceiver*
- * pointer passed to them.  The palloc'd object is pfree'd by the destroy
- * method.  Note that the caller of CreateDestReceiver should take care to
+ * pointer passed to them. The palloc'd object is pfree'd by the destroy
+ * method. Note that the caller of CreateDestReceiver should take care to
  * do so in a memory context that is long-lived enough for the receiver
  * object not to disappear while still needed.
  *
@@ -54,7 +54,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: dest.h,v 1.38 2003/05/08 18:16:37 tgl Exp $
+ * $Id: dest.h,v 1.39 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -73,7 +73,7 @@
  *     destination.  Someday this will probably need to be improved.
  *
  * Note: only the values None, Debug, Remote are legal for the global
- * variable whereToSendOutput.  The other values may be used
+ * variable whereToSendOutput. The other values may be used
  * as the destination for individual commands.
  * ----------------
  */
@@ -104,21 +104,21 @@ struct _DestReceiver
 {
    /* Called for each tuple to be output: */
    void        (*receiveTuple) (HeapTuple tuple,
-                                TupleDesc typeinfo,
-                                DestReceiver *self);
+                                            TupleDesc typeinfo,
+                                            DestReceiver *self);
    /* Per-executor-run initialization and shutdown: */
    void        (*startup) (DestReceiver *self,
-                           int operation,
-                           TupleDesc typeinfo);
+                                       int operation,
+                                       TupleDesc typeinfo);
    void        (*shutdown) (DestReceiver *self);
    /* Destroy the receiver object itself (if dynamically allocated) */
    void        (*destroy) (DestReceiver *self);
    /* CommandDest code for this receiver */
-   CommandDest mydest;
+   CommandDest mydest;
    /* Private fields might appear beyond this point... */
 };
 
-extern DestReceiver *None_Receiver;    /* permanent receiver for None */
+extern DestReceiver *None_Receiver;        /* permanent receiver for None */
 
 /* This is a forward reference to utils/portal.h */
 
index ff9cc9d76acd78e2d31e921c3cb36188f1cc9d84..9a20259ae015c004957916cfc076ebabb35d5dbc 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pquery.h,v 1.27 2003/05/08 18:16:37 tgl Exp $
+ * $Id: pquery.h,v 1.28 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 
 
 extern void ProcessQuery(Query *parsetree,
-                        Plan *plan,
-                        ParamListInfo params,
-                        DestReceiver *dest,
-                        char *completionTag);
+            Plan *plan,
+            ParamListInfo params,
+            DestReceiver *dest,
+            char *completionTag);
 
 extern PortalStrategy ChoosePortalStrategy(List *parseTrees);
 
 extern void PortalStart(Portal portal, ParamListInfo params);
 
 extern void PortalSetResultFormat(Portal portal, int nFormats,
-                                 int16 *formats);
+                     int16 *formats);
 
 extern bool PortalRun(Portal portal, long count,
-                     DestReceiver *dest, DestReceiver *altdest,
-                     char *completionTag);
+         DestReceiver *dest, DestReceiver *altdest,
+         char *completionTag);
 
 extern long PortalRunFetch(Portal portal,
-                          FetchDirection fdirection,
-                          long count,
-                          DestReceiver *dest);
+              FetchDirection fdirection,
+              long count,
+              DestReceiver *dest);
 
 #endif   /* PQUERY_H */
index ee2e4391fb5ad628d4f2865af7e823fbd972b861..1003439291469ee12906079eaee6af688aa7fb42 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tcopprot.h,v 1.58 2003/07/22 20:29:13 momjian Exp $
+ * $Id: tcopprot.h,v 1.59 2003/08/04 00:43:32 momjian Exp $
  *
  * OLD COMMENTS
  *   This file was created so that other c files could get the two
@@ -40,11 +40,10 @@ extern List *pg_parse_and_rewrite(const char *query_string,
                     Oid *paramTypes, int numParams);
 extern List *pg_parse_query(const char *query_string);
 extern List *pg_analyze_and_rewrite(Node *parsetree,
-                                   Oid *paramTypes, int numParams);
+                      Oid *paramTypes, int numParams);
 extern List *pg_rewrite_queries(List *querytree_list);
 extern Plan *pg_plan_query(Query *querytree);
 extern List *pg_plan_queries(List *querytrees, bool needSnapshot);
-
 #endif   /* BOOTSTRAP_INCLUDE */
 
 extern void die(SIGNAL_ARGS);
index 3849cf2e8573f4c26ae5bc188c9ab2a4ba76962c..8226381fbafc83f735bbd1d3823db4e6799eac3a 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: acl.h,v 1.58 2003/08/01 00:15:25 tgl Exp $
+ * $Id: acl.h,v 1.59 2003/08/04 00:43:32 momjian Exp $
  *
  * NOTES
  *   For backward-compatibility purposes we have to allow there
@@ -61,7 +61,7 @@ typedef struct AclItem
  * and the lower 15 bits are the actual privileges.
  */
 #define ACLITEM_GET_PRIVS(item)    ((item).ai_privs & 0x7FFF)
-#define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >> 15)  & 0x7FFF) 
+#define ACLITEM_GET_GOPTIONS(item) (((item).ai_privs >> 15)  & 0x7FFF)
 #define ACLITEM_GET_IDTYPE(item)   ((item).ai_privs >> 30)
 
 #define ACL_GRANT_OPTION_FOR(privs) (((privs) & 0x7FFF) << 15)
@@ -190,14 +190,14 @@ typedef enum AclObjectKind
    ACL_KIND_OPCLASS,           /* pg_opclass */
    ACL_KIND_CONVERSION,        /* pg_conversion */
    MAX_ACL_KIND                /* MUST BE LAST */
-} AclObjectKind;
+}  AclObjectKind;
 
 /*
  * routines used internally
  */
 extern Acl *acldefault(GrantObjectType objtype, AclId ownerid);
 extern Acl *aclinsert3(const Acl *old_acl, const AclItem *mod_aip,
-                      unsigned modechg, DropBehavior behavior);
+          unsigned modechg, DropBehavior behavior);
 
 /*
  * SQL functions (from acl.c)
@@ -224,7 +224,7 @@ extern AclResult pg_language_aclcheck(Oid lang_oid, AclId userid, AclMode mode);
 extern AclResult pg_namespace_aclcheck(Oid nsp_oid, AclId userid, AclMode mode);
 
 extern void aclcheck_error(AclResult aclerr, AclObjectKind objectkind,
-                          const char *objectname);
+              const char *objectname);
 
 /* ownercheck routines just return true (owner) or false (not) */
 extern bool pg_class_ownercheck(Oid class_oid, AclId userid);
index 50c222a9b4d14fd6ba0fdca0ff54c0bec5a87b43..048210087a8271691fdc1501850d1b2c11d679ff 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: array.h,v 1.42 2003/07/14 20:34:18 tgl Exp $
+ * $Id: array.h,v 1.43 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,6 +36,7 @@ typedef struct ArrayBuildState
 {
    MemoryContext mcontext;     /* where all the temp stuff is kept */
    Datum      *dvalues;        /* array of accumulated Datums */
+
    /*
     * The allocated size of dvalues[] is always a multiple of
     * ARRAY_ELEMS_CHUNKSIZE
@@ -46,22 +47,22 @@ typedef struct ArrayBuildState
    int16       typlen;         /* needed info about datatype */
    bool        typbyval;
    char        typalign;
-} ArrayBuildState;
+}  ArrayBuildState;
 
 /*
  * structure to cache type metadata needed for array manipulation
  */
 typedef struct ArrayMetaState
 {
-   Oid             element_type;
-   int16           typlen;
-   bool            typbyval;
-   char            typalign;
-   char            typdelim;
-   Oid             typelem;
-   Oid             typiofunc;
-   FmgrInfo        proc;
-} ArrayMetaState;
+   Oid         element_type;
+   int16       typlen;
+   bool        typbyval;
+   char        typalign;
+   char        typdelim;
+   Oid         typelem;
+   Oid         typiofunc;
+   FmgrInfo    proc;
+}  ArrayMetaState;
 
 /*
  * fmgr macros for array objects
@@ -151,22 +152,22 @@ extern ArrayType *construct_array(Datum *elems, int nelems,
                Oid elmtype,
                int elmlen, bool elmbyval, char elmalign);
 extern ArrayType *construct_md_array(Datum *elems,
-                 int ndims,
-                 int *dims,
-                 int *lbs,
-                 Oid elmtype, int elmlen, bool elmbyval, char elmalign);
+                  int ndims,
+                  int *dims,
+                  int *lbs,
+                  Oid elmtype, int elmlen, bool elmbyval, char elmalign);
 extern void deconstruct_array(ArrayType *array,
                  Oid elmtype,
                  int elmlen, bool elmbyval, char elmalign,
                  Datum **elemsp, int *nelemsp);
-extern ArrayBuildState *accumArrayResult(ArrayBuildState *astate,
-                                        Datum dvalue, bool disnull,
-                                        Oid element_type,
-                                        MemoryContext rcontext);
-extern Datum makeArrayResult(ArrayBuildState *astate,
-                            MemoryContext rcontext);
-extern Datum makeMdArrayResult(ArrayBuildState *astate, int ndims,
-                              int *dims, int *lbs, MemoryContext rcontext);
+extern ArrayBuildState *accumArrayResult(ArrayBuildState * astate,
+                Datum dvalue, bool disnull,
+                Oid element_type,
+                MemoryContext rcontext);
+extern Datum makeArrayResult(ArrayBuildState * astate,
+               MemoryContext rcontext);
+extern Datum makeMdArrayResult(ArrayBuildState * astate, int ndims,
+                 int *dims, int *lbs, MemoryContext rcontext);
 
 /*
  * prototypes for functions defined in arrayutils.c
@@ -187,8 +188,8 @@ extern Datum array_push(PG_FUNCTION_ARGS);
 extern Datum array_cat(PG_FUNCTION_ARGS);
 
 extern ArrayType *create_singleton_array(FunctionCallInfo fcinfo,
-                                        Oid element_type,
-                                        Datum element,
-                                        int ndims);
+                      Oid element_type,
+                      Datum element,
+                      int ndims);
 
 #endif   /* ARRAY_H */
index f2164590a36e0f091930e75972ab696da46e4cf2..b5e755882a067fe9fe56af971b27aa26f34570b6 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: builtins.h,v 1.224 2003/07/30 22:56:24 tgl Exp $
+ * $Id: builtins.h,v 1.225 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -408,7 +408,7 @@ extern Datum texticregexne(PG_FUNCTION_ARGS);
 extern Datum textregexsubstr(PG_FUNCTION_ARGS);
 extern Datum similar_escape(PG_FUNCTION_ARGS);
 extern const char *assign_regex_flavor(const char *value,
-                                      bool doit, bool interactive);
+                   bool doit, bool interactive);
 
 /* regproc.c */
 extern Datum regprocin(PG_FUNCTION_ARGS);
index 6fe4723bbeeffc76fa443efc4733c3d45f396688..109a86b0a91218cdc0dcb0ccbf77a4eef83a9ee8 100644 (file)
@@ -9,7 +9,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: datetime.h,v 1.41 2003/07/17 22:28:42 tgl Exp $
+ * $Id: datetime.h,v 1.42 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -268,8 +268,8 @@ extern int  day_tab[2][13];
   || (((m) == UTIME_MAXMONTH) && ((d) <= UTIME_MAXDAY))))))
 
 /* Julian-date equivalents of Day 0 in Unix and Postgres reckoning */
-#define UNIX_EPOCH_JDATE       2440588     /* == date2j(1970, 1, 1) */
-#define POSTGRES_EPOCH_JDATE   2451545     /* == date2j(2000, 1, 1) */
+#define UNIX_EPOCH_JDATE       2440588 /* == date2j(1970, 1, 1) */
+#define POSTGRES_EPOCH_JDATE   2451545 /* == date2j(2000, 1, 1) */
 
 
 extern void GetCurrentDateTime(struct tm * tm);
index 5c5a66a761765f158f034896a812b3faaa87ab79..faa4783d4eb5b744327f7c7f9a0a5f58dc0d0c54 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: elog.h,v 1.60 2003/07/27 18:37:52 tgl Exp $
+ * $Id: elog.h,v 1.61 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
 #define FATAL      21          /* fatal error - abort process */
 #define PANIC      22          /* take down the other backends with me */
 
- /*#define DEBUG DEBUG1*/  /* Backward compatibility with pre-7.3 */
+ /* #define DEBUG DEBUG1 */    /* Backward compatibility with pre-7.3 */
 
 
 /* macros for representing SQLSTATE strings compactly */
 #define PGSIXBIT(ch)   (((ch) - '0') & 0x3F)
-#define PGUNSIXBIT(val)    (((val) & 0x3F) + '0')
+#define PGUNSIXBIT(val) (((val) & 0x3F) + '0')
 
 #define MAKE_SQLSTATE(ch1,ch2,ch3,ch4,ch5) \
    (PGSIXBIT(ch1) + (PGSIXBIT(ch2) << 6) + (PGSIXBIT(ch3) << 12) + \
@@ -80,7 +80,7 @@
  *              ... other errxxx() fields as needed ...));
  *
  * The error level is required, and so is a primary error message (errmsg
- * or errmsg_internal).  All else is optional.  errcode() defaults to
+ * or errmsg_internal).  All else is optional. errcode() defaults to
  * ERRCODE_INTERNAL_ERROR if elevel is ERROR or more, ERRCODE_WARNING
  * if elevel is WARNING, or ERRCODE_SUCCESSFUL_COMPLETION if elevel is
  * NOTICE or below.
     (errfinish rest) : (void) 0)
 
 extern bool errstart(int elevel, const char *filename, int lineno,
-                    const char *funcname);
-extern void errfinish(int dummy, ...);
+        const char *funcname);
+extern void errfinish(int dummy,...);
 
-extern int errcode(int sqlerrcode);
+extern int errcode(int sqlerrcode);
 
-extern int errcode_for_file_access(void);
-extern int errcode_for_socket_access(void);
+extern int errcode_for_file_access(void);
+extern int errcode_for_socket_access(void);
 
-extern int errmsg(const char *fmt, ...)
+extern int
+errmsg(const char *fmt,...)
 /* This extension allows gcc to check the format string for consistency with
    the supplied arguments. */
 __attribute__((format(printf, 1, 2)));
 
-extern int errmsg_internal(const char *fmt, ...)
+extern int
+errmsg_internal(const char *fmt,...)
 /* This extension allows gcc to check the format string for consistency with
    the supplied arguments. */
 __attribute__((format(printf, 1, 2)));
 
-extern int errdetail(const char *fmt, ...)
+extern int
+errdetail(const char *fmt,...)
 /* This extension allows gcc to check the format string for consistency with
    the supplied arguments. */
 __attribute__((format(printf, 1, 2)));
 
-extern int errhint(const char *fmt, ...)
+extern int
+errhint(const char *fmt,...)
 /* This extension allows gcc to check the format string for consistency with
    the supplied arguments. */
 __attribute__((format(printf, 1, 2)));
 
-extern int errcontext(const char *fmt, ...)
+extern int
+errcontext(const char *fmt,...)
 /* This extension allows gcc to check the format string for consistency with
    the supplied arguments. */
 __attribute__((format(printf, 1, 2)));
 
-extern int errfunction(const char *funcname);
-extern int errposition(int cursorpos);
+extern int errfunction(const char *funcname);
+extern int errposition(int cursorpos);
 
 
 /*----------
@@ -133,10 +138,10 @@ extern int errposition(int cursorpos);
  *     elog(ERROR, "portal \"%s\" not found", stmt->portalname);
  *----------
  */
-#define elog    errstart(ERROR, __FILE__, __LINE__, PG_FUNCNAME_MACRO), elog_finish
+#define elog   errstart(ERROR, __FILE__, __LINE__, PG_FUNCNAME_MACRO), elog_finish
 
 extern void
-elog_finish(int elevel, const char *fmt, ...)
+elog_finish(int elevel, const char *fmt,...)
 /* This extension allows gcc to check the format string for consistency with
    the supplied arguments. */
 __attribute__((format(printf, 2, 3)));
@@ -147,9 +152,9 @@ __attribute__((format(printf, 2, 3)));
 typedef struct ErrorContextCallback
 {
    struct ErrorContextCallback *previous;
-   void (*callback) (void *arg);
-   void *arg;
-} ErrorContextCallback;
+   void        (*callback) (void *arg);
+   void       *arg;
+}  ErrorContextCallback;
 
 extern DLLIMPORT ErrorContextCallback *error_context_stack;
 
@@ -161,11 +166,12 @@ typedef enum
    PGERROR_TERSE,              /* single-line error messages */
    PGERROR_DEFAULT,            /* recommended style */
    PGERROR_VERBOSE             /* all the facts, ma'am */
-} PGErrorVerbosity;
+}  PGErrorVerbosity;
 
 extern PGErrorVerbosity Log_error_verbosity;
 extern bool Log_timestamp;
 extern bool Log_pid;
+
 #ifdef HAVE_SYSLOG
 extern int Use_syslog;
 #endif
index f076c7327bc365c422655df97ba4c98677fd5c7e..8db8e52320ca4af1d3af4e51ae4b43b3956eaba6 100644 (file)
@@ -5,13 +5,13 @@
  *
  * The error code list is kept in its own source file for possible use by
  * automatic tools.  Each error code is identified by a five-character string
- * following the SQLSTATE conventions.  The exact representation of the
+ * following the SQLSTATE conventions. The exact representation of the
  * string is determined by the MAKE_SQLSTATE() macro, which is not defined
  * in this file; it can be defined by the caller for special purposes.
  *
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
- * $Id: errcodes.h,v 1.3 2003/07/31 21:34:18 tgl Exp $
+ * $Id: errcodes.h,v 1.4 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -91,9 +91,9 @@
 #define ERRCODE_ARRAY_ELEMENT_ERROR            MAKE_SQLSTATE('2','2', '0','2','E')
 /* SQL99's actual definition of "array element error" is subscript error */
 #define ERRCODE_ARRAY_SUBSCRIPT_ERROR      ERRCODE_ARRAY_ELEMENT_ERROR
-#define ERRCODE_CHARACTER_NOT_IN_REPERTOIRE    MAKE_SQLSTATE('2','2', '0','2','1')
+#define ERRCODE_CHARACTER_NOT_IN_REPERTOIRE MAKE_SQLSTATE('2','2', '0','2','1')
 #define ERRCODE_DATETIME_FIELD_OVERFLOW        MAKE_SQLSTATE('2','2', '0','0','8')
-#define ERRCODE_DATETIME_VALUE_OUT_OF_RANGE    ERRCODE_DATETIME_FIELD_OVERFLOW
+#define ERRCODE_DATETIME_VALUE_OUT_OF_RANGE ERRCODE_DATETIME_FIELD_OVERFLOW
 #define ERRCODE_DIVISION_BY_ZERO           MAKE_SQLSTATE('2','2', '0','1','2')
 #define ERRCODE_ERROR_IN_ASSIGNMENT            MAKE_SQLSTATE('2','2', '0','0','5')
 #define ERRCODE_ESCAPE_CHARACTER_CONFLICT  MAKE_SQLSTATE('2','2', '0','0','B')
 #define ERRCODE_INVALID_REGULAR_EXPRESSION MAKE_SQLSTATE('2','2', '0','1','B')
 #define ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE   MAKE_SQLSTATE('2','2', '0','0','9')
 #define ERRCODE_INVALID_USE_OF_ESCAPE_CHARACTER        MAKE_SQLSTATE('2','2', '0','0','C')
-#define ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH    MAKE_SQLSTATE('2','2', '0','0','G')
+#define ERRCODE_MOST_SPECIFIC_TYPE_MISMATCH MAKE_SQLSTATE('2','2', '0','0','G')
 #define ERRCODE_NULL_VALUE_NOT_ALLOWED     MAKE_SQLSTATE('2','2', '0','0','4')
 #define ERRCODE_NULL_VALUE_NO_INDICATOR_PARAMETER  MAKE_SQLSTATE('2','2', '0','0','2')
 #define ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE MAKE_SQLSTATE('2','2', '0','0','3')
-#define ERRCODE_STRING_DATA_LENGTH_MISMATCH    MAKE_SQLSTATE('2','2', '0','2','6')
+#define ERRCODE_STRING_DATA_LENGTH_MISMATCH MAKE_SQLSTATE('2','2', '0','2','6')
 #define ERRCODE_STRING_DATA_RIGHT_TRUNCATION       MAKE_SQLSTATE('2','2', '0','0','1')
 #define ERRCODE_SUBSTRING_ERROR                MAKE_SQLSTATE('2','2', '0','1','1')
 #define ERRCODE_TRIM_ERROR                 MAKE_SQLSTATE('2','2', '0','2','7')
 #define ERRCODE_UNTERMINATED_C_STRING      MAKE_SQLSTATE('2','2', '0','2','4')
 #define ERRCODE_ZERO_LENGTH_CHARACTER_STRING       MAKE_SQLSTATE('2','2', '0','0','F')
 #define ERRCODE_FLOATING_POINT_EXCEPTION   MAKE_SQLSTATE('2','2', 'P','0','1')
-#define ERRCODE_INVALID_TEXT_REPRESENTATION    MAKE_SQLSTATE('2','2', 'P','0','2')
+#define ERRCODE_INVALID_TEXT_REPRESENTATION MAKE_SQLSTATE('2','2', 'P','0','2')
 #define ERRCODE_INVALID_BINARY_REPRESENTATION  MAKE_SQLSTATE('2','2', 'P','0','3')
 #define ERRCODE_BAD_COPY_FILE_FORMAT       MAKE_SQLSTATE('2','2', 'P','0','4')
 #define ERRCODE_UNTRANSLATABLE_CHARACTER   MAKE_SQLSTATE('2','2', 'P','0','5')
 #define ERRCODE_TRIGGERED_DATA_CHANGE_VIOLATION        MAKE_SQLSTATE('2','7', '0','0','0')
 
 /* Class 28 - Invalid Authorization Specification */
-#define ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION    MAKE_SQLSTATE('2','8', '0','0','0')
+#define ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION MAKE_SQLSTATE('2','8', '0','0','0')
 
 /* Class 2B - Dependent Privilege Descriptors Still Exist */
 #define ERRCODE_DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST        MAKE_SQLSTATE('2','B', '0','0','0')
 
 /* Class 2F - SQL Routine Exception */
 #define ERRCODE_SQL_ROUTINE_EXCEPTION      MAKE_SQLSTATE('2','F', '0','0','0')
-#define ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT    MAKE_SQLSTATE('2','F', '0','0','5')
+#define ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT MAKE_SQLSTATE('2','F', '0','0','5')
 #define ERRCODE_S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED     MAKE_SQLSTATE('2','F', '0','0','2')
 #define ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED   MAKE_SQLSTATE('2','F', '0','0','3')
 #define ERRCODE_S_R_E_READING_SQL_DATA_NOT_PERMITTED       MAKE_SQLSTATE('2','F', '0','0','4')
 #define ERRCODE_INVALID_COLUMN_REFERENCE   MAKE_SQLSTATE('4','2', 'P','1','0')
 #define ERRCODE_INVALID_COLUMN_DEFINITION  MAKE_SQLSTATE('4','2', '6','1','1')
 #define ERRCODE_INVALID_CURSOR_DEFINITION  MAKE_SQLSTATE('4','2', 'P','1','1')
-#define ERRCODE_INVALID_DATABASE_DEFINITION    MAKE_SQLSTATE('4','2', 'P','1','2')
-#define ERRCODE_INVALID_FUNCTION_DEFINITION    MAKE_SQLSTATE('4','2', 'P','1','3')
+#define ERRCODE_INVALID_DATABASE_DEFINITION MAKE_SQLSTATE('4','2', 'P','1','2')
+#define ERRCODE_INVALID_FUNCTION_DEFINITION MAKE_SQLSTATE('4','2', 'P','1','3')
 #define ERRCODE_INVALID_PSTATEMENT_DEFINITION  MAKE_SQLSTATE('4','2', 'P','1','4')
 #define ERRCODE_INVALID_SCHEMA_DEFINITION  MAKE_SQLSTATE('4','2', 'P','1','5')
 #define ERRCODE_INVALID_TABLE_DEFINITION   MAKE_SQLSTATE('4','2', 'P','1','6')
 #define ERRCODE_INVALID_OBJECT_DEFINITION  MAKE_SQLSTATE('4','2', 'P','1','7')
 
 /* Class 44 - WITH CHECK OPTION Violation */
-#define ERRCODE_WITH_CHECK_OPTION_VIOLATION    MAKE_SQLSTATE('4','4', '0','0','0')
+#define ERRCODE_WITH_CHECK_OPTION_VIOLATION MAKE_SQLSTATE('4','4', '0','0','0')
 
 /* Class 53 - Insufficient Resources (PostgreSQL-specific error class) */
 #define ERRCODE_INSUFFICIENT_RESOURCES     MAKE_SQLSTATE('5','3', '0','0','0')
index 979b5171e80dabd3c74be726b703b213ecb095aa..6b5816ddc86bf59b108e0d97a6ac11553f8c86be 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright 2000-2003 by PostgreSQL Global Development Group
  * Written by Peter Eisentraut <[email protected]>.
  *
- * $Id: guc.h,v 1.38 2003/07/28 19:31:32 tgl Exp $
+ * $Id: guc.h,v 1.39 2003/08/04 00:43:32 momjian Exp $
  *--------------------------------------------------------------------
  */
 #ifndef GUC_H
@@ -40,7 +40,7 @@
  * configuration file, or by client request in the connection startup
  * packet (e.g., from libpq's PGOPTIONS variable).  Furthermore, an
  * already-started backend will ignore changes to such an option in the
- * configuration file.  The idea is that these options are fixed for a
+ * configuration file. The idea is that these options are fixed for a
  * given backend once it's started, but they can vary across backends.
  *
  * SUSET options can be set at postmaster startup, with the SIGHUP
@@ -146,8 +146,8 @@ extern ArrayType *GUCArrayAdd(ArrayType *array, const char *name, const char *va
 extern ArrayType *GUCArrayDelete(ArrayType *array, const char *name);
 
 #ifdef EXEC_BACKEND
-void write_nondefault_variables(GucContext context);
-void read_nondefault_variables(void);
+void       write_nondefault_variables(GucContext context);
+void       read_nondefault_variables(void);
 #endif
 
 #endif   /* GUC_H */
index b1abc0b1074010ddacb1bc9631e9e0533ea4ab47..742b3b2ff646973fa1941024394de6906e2a0bfb 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  *
- *   $Id: guc_tables.h,v 1.4 2003/07/28 19:31:32 tgl Exp $
+ *   $Id: guc_tables.h,v 1.5 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -68,17 +68,17 @@ enum config_type
  * Generic fields applicable to all types of variables
  *
  * The short description should be less than 80 chars in length. Some
- * applications may use the long description as well, and will append 
- * it to the short description. (separated by a newline or '. ') 
+ * applications may use the long description as well, and will append
+ * it to the short description. (separated by a newline or '. ')
  */
 struct config_generic
 {
    /* constant fields, must be set correctly in initial value: */
    const char *name;           /* name of variable - MUST BE FIRST */
    GucContext  context;        /* context required to set the variable */
-   enum config_group group;    /* to help organize variables by function */
-   const char *short_desc;     /* short desc. of this variable's purpose */
-   const char *long_desc;      /* long desc. of this variable's purpose */
+   enum config_group group;    /* to help organize variables by function */
+   const char *short_desc;     /* short desc. of this variable's purpose */
+   const char *long_desc;      /* long desc. of this variable's purpose */
    int         flags;          /* flag bits, see below */
    /* variable fields, initialized at runtime: */
    enum config_type vartype;   /* type of variable (set only at startup) */
@@ -95,8 +95,8 @@ struct config_generic
 #define GUC_NO_SHOW_ALL            0x0004  /* exclude from SHOW ALL */
 #define GUC_NO_RESET_ALL       0x0008  /* exclude from RESET ALL */
 #define GUC_REPORT             0x0010  /* auto-report changes to client */
-#define GUC_NOT_IN_SAMPLE      0x0020  /* not in postgresql.conf.sample */
-#define GUC_DISALLOW_IN_FILE   0x0040  /* can't set in postgresql.conf */ 
+#define GUC_NOT_IN_SAMPLE      0x0020  /* not in postgresql.conf.sample */
+#define GUC_DISALLOW_IN_FILE   0x0040  /* can't set in postgresql.conf */
 
 /* bit values in status field */
 #define GUC_HAVE_TENTATIVE 0x0001      /* tentative value is defined */
@@ -167,10 +167,10 @@ struct config_string
 };
 
 /* constant tables corresponding to enums above and in guc.h */
-extern const char * const config_group_names[];
-extern const char * const config_type_names[];
-extern const char * const GucContext_Names[];
-extern const char * const GucSource_Names[];
+extern const char *const config_group_names[];
+extern const char *const config_type_names[];
+extern const char *const GucContext_Names[];
+extern const char *const GucSource_Names[];
 
 /* the current set of variables */
 extern struct config_generic **guc_variables;
index 45645f0216b3db1b04b1996aec593517f6f815e0..cd2c6e02fc7ce221129e6dd95d43066a0876b96f 100644 (file)
@@ -1,11 +1,11 @@
 /*-------------------------------------------------------------------------
  *
  * help_config.h
- *     Interface to the --help-config option of main.c 
- * 
+ *     Interface to the --help-config option of main.c
+ *
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  *
- *   $Id: help_config.h,v 1.1 2003/07/04 16:41:22 tgl Exp $
+ *   $Id: help_config.h,v 1.2 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
index dd6df6d56da9508ab2a79d864fe2f08236ba8a6c..9b375ed24cb3f3137215b8cb27d4ac3925e0b2dd 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: inet.h,v 1.14 2003/06/24 22:21:23 momjian Exp $
+ * $Id: inet.h,v 1.15 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,7 +23,7 @@ typedef struct
    unsigned char family;
    unsigned char bits;
    unsigned char type;
-   unsigned char ip_addr[16]; /* 128 bits of address */
+   unsigned char ip_addr[16];  /* 128 bits of address */
 } inet_struct;
 
 /*
index 1f8bcb06d1e2a29d6eea4fb27f519a24e8e739ed..129492a32531fa74412da930e3136b848886e2a8 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: lsyscache.h,v 1.76 2003/07/01 19:10:53 tgl Exp $
+ * $Id: lsyscache.h,v 1.77 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -22,7 +22,7 @@ typedef enum IOFuncSelector
    IOFunc_output,
    IOFunc_receive,
    IOFunc_send
-} IOFuncSelector;
+}  IOFuncSelector;
 
 extern bool op_in_opclass(Oid opno, Oid opclass);
 extern bool op_requires_recheck(Oid opno, Oid opclass);
@@ -67,13 +67,13 @@ extern void get_typlenbyval(Oid typid, int16 *typlen, bool *typbyval);
 extern void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval,
                     char *typalign);
 extern void get_type_io_data(Oid typid,
-                            IOFuncSelector which_func,
-                            int16 *typlen,
-                            bool *typbyval,
-                            char *typalign,
-                            char *typdelim,
-                            Oid *typelem,
-                            Oid *func);
+                IOFuncSelector which_func,
+                int16 *typlen,
+                bool *typbyval,
+                char *typalign,
+                char *typdelim,
+                Oid *typelem,
+                Oid *func);
 extern char get_typstorage(Oid typid);
 extern int32 get_typtypmod(Oid typid);
 extern Node *get_typdefault(Oid typid);
@@ -87,7 +87,7 @@ extern void getTypeOutputInfo(Oid type, Oid *typOutput, Oid *typElem,
                  bool *typIsVarlena);
 extern void getTypeBinaryInputInfo(Oid type, Oid *typReceive, Oid *typElem);
 extern void getTypeBinaryOutputInfo(Oid type, Oid *typSend, Oid *typElem,
-                                   bool *typIsVarlena);
+                       bool *typIsVarlena);
 extern Oid getBaseType(Oid typid);
 extern int32 get_typavgwidth(Oid typid, int32 typmod);
 extern int32 get_attavgwidth(Oid relid, AttrNumber attnum);
index 6934d109623909e78bbd7649c00054247fe91214..6d04ddba5d517dc3d362d1b3118990990014bceb 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: memutils.h,v 1.51 2003/05/02 20:54:36 tgl Exp $
+ * $Id: memutils.h,v 1.52 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -70,6 +70,7 @@ extern DLLIMPORT MemoryContext PostmasterContext;
 extern DLLIMPORT MemoryContext CacheMemoryContext;
 extern DLLIMPORT MemoryContext MessageContext;
 extern DLLIMPORT MemoryContext TopTransactionContext;
+
 /* These two are transient links to contexts owned by other objects: */
 extern DLLIMPORT MemoryContext QueryContext;
 extern DLLIMPORT MemoryContext PortalContext;
@@ -127,8 +128,8 @@ extern MemoryContext AllocSetContextCreate(MemoryContext parent,
  * Recommended alloc parameters for "small" contexts that are not expected
  * to contain much data (for example, a context to contain a query plan).
  */
-#define ALLOCSET_SMALL_MINSIZE   0
+#define ALLOCSET_SMALL_MINSIZE  0
 #define ALLOCSET_SMALL_INITSIZE  (1 * 1024)
-#define ALLOCSET_SMALL_MAXSIZE   (8 * 1024)
+#define ALLOCSET_SMALL_MAXSIZE  (8 * 1024)
 
 #endif   /* MEMUTILS_H */
index 7dabc52f318c1df804281b0bac982848a57f79cd..7ba40efda9dba6d7ed6ba5a6245b39262ac7b414 100644 (file)
@@ -21,7 +21,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: palloc.h,v 1.24 2002/12/16 16:22:46 tgl Exp $
+ * $Id: palloc.h,v 1.25 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@ extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
 
 #define palloc(sz) MemoryContextAlloc(CurrentMemoryContext, (sz))
 
-#define palloc0(sz)    MemoryContextAllocZero(CurrentMemoryContext, (sz))
+#define palloc0(sz) MemoryContextAllocZero(CurrentMemoryContext, (sz))
 
 /*
  * The result of palloc() is always word-aligned, so we can skip testing
@@ -61,7 +61,7 @@ extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
  * issue that it evaluates the argument multiple times isn't a problem in
  * practice.
  */
-#define palloc0fast(sz)    \
+#define palloc0fast(sz) \
    ( MemSetTest(0, sz) ? \
        MemoryContextAllocZeroAligned(CurrentMemoryContext, sz) : \
        MemoryContextAllocZero(CurrentMemoryContext, sz) )
index 7da359cbe73b40e42551a010dd8d341038b69e9e..6c7664f04db223d53b2094729933e66265926ecd 100644 (file)
@@ -9,7 +9,7 @@
  *
  * Scrolling (nonsequential access) and suspension of execution are allowed
  * only for portals that contain a single SELECT-type query.  We do not want
- * to let the client suspend an update-type query partway through!  Because
+ * to let the client suspend an update-type query partway through! Because
  * the query rewriter does not allow arbitrary ON SELECT rewrite rules,
  * only queries that were originally update-type could produce multiple
  * parse/plan trees; so the restriction to a single query is not a problem
  * For SQL cursors, we support three kinds of scroll behavior:
  *
  * (1) Neither NO SCROLL nor SCROLL was specified: to remain backward
- *     compatible, we allow backward fetches here, unless it would
- *     impose additional runtime overhead to do so.
+ *    compatible, we allow backward fetches here, unless it would
+ *    impose additional runtime overhead to do so.
  *
  * (2) NO SCROLL was specified: don't allow any backward fetches.
  *
  * (3) SCROLL was specified: allow all kinds of backward fetches, even
- *     if we need to take a performance hit to do so.  (The planner sticks
+ *    if we need to take a performance hit to do so.  (The planner sticks
  *    a Materialize node atop the query plan if needed.)
  *
  * Case #1 is converted to #2 or #3 by looking at the query itself and
@@ -39,7 +39,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: portal.h,v 1.44 2003/05/08 18:16:37 tgl Exp $
+ * $Id: portal.h,v 1.45 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -58,8 +58,8 @@
  * single result from the user's viewpoint.  However, the rule rewriter
  * may expand the single source query to zero or many actual queries.)
  *
- * PORTAL_ONE_SELECT: the portal contains one single SELECT query.  We run
- * the Executor incrementally as results are demanded.  This strategy also
+ * PORTAL_ONE_SELECT: the portal contains one single SELECT query. We run
+ * the Executor incrementally as results are demanded. This strategy also
  * supports holdable cursors (the Executor results can be dumped into a
  * tuplestore for access after transaction completion).
  *
@@ -77,7 +77,7 @@ typedef enum PortalStrategy
    PORTAL_ONE_SELECT,
    PORTAL_UTIL_SELECT,
    PORTAL_MULTI_QUERY
-} PortalStrategy;
+}  PortalStrategy;
 
 /*
  * Note: typedef Portal is declared in tcop/dest.h as
@@ -89,7 +89,7 @@ typedef struct PortalData
    /* Bookkeeping data */
    const char *name;           /* portal's name */
    MemoryContext heap;         /* subsidiary memory for portal */
-   void        (*cleanup) (Portal portal, bool isError);   /* cleanup hook */
+   void        (*cleanup) (Portal portal, bool isError);       /* cleanup hook */
    TransactionId createXact;   /* the xid of the creating xact */
 
    /* The query or queries the portal will execute */
@@ -97,15 +97,16 @@ typedef struct PortalData
    const char *commandTag;     /* command tag for original query */
    List       *parseTrees;     /* parse tree(s) */
    List       *planTrees;      /* plan tree(s) */
-   MemoryContext queryContext; /* where the above trees live */
+   MemoryContext queryContext; /* where the above trees live */
+
    /*
     * Note: queryContext effectively identifies which prepared statement
     * the portal depends on, if any.  The queryContext is *not* owned by
-    * the portal and is not to be deleted by portal destruction.  (But for
-    * a cursor it is the same as "heap", and that context is deleted by
-    * portal destruction.)
+    * the portal and is not to be deleted by portal destruction.  (But
+    * for a cursor it is the same as "heap", and that context is deleted
+    * by portal destruction.)
     */
-   ParamListInfo portalParams; /* params to pass to query */
+   ParamListInfo portalParams; /* params to pass to query */
 
    /* Features/options */
    PortalStrategy strategy;    /* see above */
@@ -113,7 +114,7 @@ typedef struct PortalData
 
    /* Status data */
    bool        portalReady;    /* PortalStart complete? */
-   bool        portalUtilReady; /* PortalRunUtility complete? */
+   bool        portalUtilReady;    /* PortalRunUtility complete? */
    bool        portalActive;   /* portal is running (can't delete it) */
    bool        portalDone;     /* portal is finished (don't re-run it) */
 
@@ -126,21 +127,21 @@ typedef struct PortalData
    int16      *formats;        /* a format code for each column */
 
    /*
-    * Where we store tuples for a held cursor or a PORTAL_UTIL_SELECT query.
-    * (A cursor held past the end of its transaction no longer has any
-    * active executor state.)
+    * Where we store tuples for a held cursor or a PORTAL_UTIL_SELECT
+    * query. (A cursor held past the end of its transaction no longer has
+    * any active executor state.)
     */
-   Tuplestorestate *holdStore; /* store for holdable cursors */
-   MemoryContext holdContext;  /* memory containing holdStore */
+   Tuplestorestate *holdStore; /* store for holdable cursors */
+   MemoryContext holdContext;  /* memory containing holdStore */
 
    /*
     * atStart, atEnd and portalPos indicate the current cursor position.
-    * portalPos is zero before the first row, N after fetching N'th row of
-    * query.  After we run off the end, portalPos = # of rows in query, and
-    * atEnd is true.  If portalPos overflows, set posOverflow (this causes
-    * us to stop relying on its value for navigation).  Note that atStart
-    * implies portalPos == 0, but not the reverse (portalPos could have
-    * overflowed).
+    * portalPos is zero before the first row, N after fetching N'th row
+    * of query.  After we run off the end, portalPos = # of rows in
+    * query, and atEnd is true.  If portalPos overflows, set posOverflow
+    * (this causes us to stop relying on its value for navigation).  Note
+    * that atStart implies portalPos == 0, but not the reverse (portalPos
+    * could have overflowed).
     */
    bool        atStart;
    bool        atEnd;
@@ -172,11 +173,11 @@ extern void PortalDrop(Portal portal, bool isError);
 extern void DropDependentPortals(MemoryContext queryContext);
 extern Portal GetPortalByName(const char *name);
 extern void PortalDefineQuery(Portal portal,
-                             const char *sourceText,
-                             const char *commandTag,
-                             List *parseTrees,
-                             List *planTrees,
-                             MemoryContext queryContext);
+                 const char *sourceText,
+                 const char *commandTag,
+                 List *parseTrees,
+                 List *planTrees,
+                 MemoryContext queryContext);
 extern void PortalCreateHoldStore(Portal portal);
 
 #endif   /* PORTAL_H */
index fd5e0c56b76e825fdbefe16bdd2d13db35c018b4..29f1923b9356e9219257b435ab6acd855d5c88d2 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: rel.h,v 1.65 2003/05/28 16:04:02 tgl Exp $
+ * $Id: rel.h,v 1.66 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -132,8 +132,8 @@ typedef struct RelationData
 
    /* These are non-NULL only for an index relation: */
    Form_pg_index rd_index;     /* pg_index tuple describing this index */
-   struct HeapTupleData *rd_indextuple; /* all of pg_index tuple */
-   /* "struct HeapTupleData *" avoids need to include htup.h here  */
+   struct HeapTupleData *rd_indextuple;        /* all of pg_index tuple */
+   /* "struct HeapTupleData *" avoids need to include htup.h here  */
    Form_pg_am  rd_am;          /* pg_am tuple for index's AM */
 
    /* index access support info (used only for an index relation) */
index cea19f26930cdcc8e17c5a6edcb01fea728cd9d9..3eec90c9423c58d94081461e54c8ee1ec59ad347 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: selfuncs.h,v 1.13 2003/05/15 15:50:20 petere Exp $
+ * $Id: selfuncs.h,v 1.14 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -66,16 +66,16 @@ extern Datum nlikejoinsel(PG_FUNCTION_ARGS);
 extern Datum icnlikejoinsel(PG_FUNCTION_ARGS);
 
 extern Selectivity booltestsel(Query *root, BoolTestType booltesttype,
-                              Node *arg, int varRelid, JoinType jointype);
+           Node *arg, int varRelid, JoinType jointype);
 extern Selectivity nulltestsel(Query *root, NullTestType nulltesttype,
-                              Node *arg, int varRelid);
+           Node *arg, int varRelid);
 
 extern void mergejoinscansel(Query *root, Node *clause,
                 Selectivity *leftscan,
                 Selectivity *rightscan);
 
 extern double estimate_num_groups(Query *root, List *groupExprs,
-                                 double input_rows);
+                   double input_rows);
 
 extern Datum btcostestimate(PG_FUNCTION_ARGS);
 extern Datum rtcostestimate(PG_FUNCTION_ARGS);
index 6a021ba52fd3dd3af293a8c3c35c32778b5b5b89..4732a47ca78a8232d3251f680bbacbf94c2fc9c9 100644 (file)
@@ -8,7 +8,7 @@
  * a dumbed-down version of tuplesort.c; it does no sorting of tuples
  * but can only store and regurgitate a sequence of tuples.  However,
  * because no sort is required, it is allowed to start reading the sequence
- * before it has all been written.  This is particularly useful for cursors,
+ * before it has all been written. This is particularly useful for cursors,
  * because it allows random access within the already-scanned portion of
  * a query without having to process the underlying scan to completion.
  * A temporary file is used to handle the data if it exceeds the
@@ -17,7 +17,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: tuplestore.h,v 1.11 2003/04/29 03:21:30 tgl Exp $
+ * $Id: tuplestore.h,v 1.12 2003/08/04 00:43:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -37,8 +37,8 @@ typedef struct Tuplestorestate Tuplestorestate;
  */
 
 extern Tuplestorestate *tuplestore_begin_heap(bool randomAccess,
-                                             bool interXact,
-                                             int maxKBytes);
+                     bool interXact,
+                     int maxKBytes);
 
 extern void tuplestore_puttuple(Tuplestorestate *state, void *tuple);
 
index a1b1f9c566701f68bb621e7b7eebeaf76d291582..15101094f58de9c1a0779e50320287dec922fd54 100644 (file)
 #include <pgtypes_date.h>
 #include <sqltypes.h>
 
-char ECPGalloc(long, int);
+char      *ECPGalloc(long, int);
 
 static int
-deccall2(Decimal *arg1, Decimal *arg2, int (*ptr)(Numeric *, Numeric *))
+deccall2(Decimal * arg1, Decimal * arg2, int (*ptr) (Numeric *, Numeric *))
 {
-   Numeric *a1, *a2;
-   int i;
+   Numeric    *a1,
+              *a2;
+   int         i;
 
    if ((a1 = PGTYPESnumeric_new()) == NULL)
        return -1211;
-   
+
    if ((a2 = PGTYPESnumeric_new()) == NULL)
    {
        PGTYPESnumeric_free(a1);
@@ -33,37 +34,39 @@ deccall2(Decimal *arg1, Decimal *arg2, int (*ptr)(Numeric *, Numeric *))
        PGTYPESnumeric_free(a2);
        return -1211;
    }
-   
+
    if (PGTYPESnumeric_from_decimal(arg2, a2) != 0)
    {
        PGTYPESnumeric_free(a1);
        PGTYPESnumeric_free(a2);
        return -1211;
    }
-   
-   i = (*ptr)(a1, a2);
-   
+
+   i = (*ptr) (a1, a2);
+
    PGTYPESnumeric_free(a1);
    PGTYPESnumeric_free(a2);
-   
+
    return (i);
 }
 
 static int
-deccall3(Decimal *arg1, Decimal *arg2, Decimal *result, int (*ptr)(Numeric *, Numeric *, Numeric *))
+deccall3(Decimal * arg1, Decimal * arg2, Decimal * result, int (*ptr) (Numeric *, Numeric *, Numeric *))
 {
-   Numeric *a1, *a2, *nres;
-   int i;
+   Numeric    *a1,
+              *a2,
+              *nres;
+   int         i;
 
-   if (risnull(CDECIMALTYPE, (char *)arg1) || risnull(CDECIMALTYPE, (char *)arg2))
+   if (risnull(CDECIMALTYPE, (char *) arg1) || risnull(CDECIMALTYPE, (char *) arg2))
    {
-       rsetnull(CDECIMALTYPE, (char *)result);
+       rsetnull(CDECIMALTYPE, (char *) result);
        return 0;
    }
-   
+
    if ((a1 = PGTYPESnumeric_new()) == NULL)
        return -1211;
-   
+
    if ((a2 = PGTYPESnumeric_new()) == NULL)
    {
        PGTYPESnumeric_free(a1);
@@ -84,7 +87,7 @@ deccall3(Decimal *arg1, Decimal *arg2, Decimal *result, int (*ptr)(Numeric *, Nu
        PGTYPESnumeric_free(nres);
        return -1211;
    }
-   
+
    if (PGTYPESnumeric_from_decimal(arg2, a2) != 0)
    {
        PGTYPESnumeric_free(a1);
@@ -92,39 +95,41 @@ deccall3(Decimal *arg1, Decimal *arg2, Decimal *result, int (*ptr)(Numeric *, Nu
        PGTYPESnumeric_free(nres);
        return -1211;
    }
-   
-   i = (*ptr)(a1, a2, nres);
-   
-   if (i == 0) /* No error */
+
+   i = (*ptr) (a1, a2, nres);
+
+   if (i == 0)                 /* No error */
        PGTYPESnumeric_to_decimal(nres, result);
 
    PGTYPESnumeric_free(nres);
    PGTYPESnumeric_free(a1);
    PGTYPESnumeric_free(a2);
-   
+
    return (i);
 }
+
 /* we start with the numeric functions */
 int
-decadd(Decimal *arg1, Decimal *arg2, Decimal *sum)
+decadd(Decimal * arg1, Decimal * arg2, Decimal * sum)
 {
    deccall3(arg1, arg2, sum, PGTYPESnumeric_add);
 
    if (errno == PGTYPES_NUM_OVERFLOW)
        return -1200;
    else if (errno != 0)
-       return -1201;   
-   else return 0;
+       return -1201;
+   else
+       return 0;
 }
 
 int
-deccmp(Decimal *arg1, Decimal *arg2)
+deccmp(Decimal * arg1, Decimal * arg2)
 {
-   return(deccall2(arg1, arg2, PGTYPESnumeric_cmp));
+   return (deccall2(arg1, arg2, PGTYPESnumeric_cmp));
 }
 
 void
-deccopy(Decimal *src, Decimal *target)
+deccopy(Decimal * src, Decimal * target)
 {
    memcpy(target, src, sizeof(Decimal));
 }
@@ -132,10 +137,10 @@ deccopy(Decimal *src, Decimal *target)
 static char *
 strndup(const char *str, size_t len)
 {
-   int real_len = strlen(str);
-   int use_len = (real_len > len) ? len : real_len;
-   
-   char *new = malloc(use_len + 1);
+   int         real_len = strlen(str);
+   int         use_len = (real_len > len) ? len : real_len;
+
+   char       *new = malloc(use_len + 1);
 
    if (new)
    {
@@ -149,15 +154,16 @@ strndup(const char *str, size_t len)
 }
 
 int
-deccvasc(char *cp, int len, Decimal *np)
+deccvasc(char *cp, int len, Decimal * np)
 {
-   char *str = strndup(cp, len); /* Decimal_in always converts the complete string */
-   int ret = 0;
-   Numeric *result;
+   char       *str = strndup(cp, len); /* Decimal_in always converts the
+                                        * complete string */
+   int         ret = 0;
+   Numeric    *result;
 
    if (risnull(CSTRINGTYPE, cp))
    {
-       rsetnull(CDECIMALTYPE, (char *)np);
+       rsetnull(CDECIMALTYPE, (char *) np);
        return 0;
    }
 
@@ -170,36 +176,39 @@ deccvasc(char *cp, int len, Decimal *np)
        {
            switch (errno)
            {
-               case PGTYPES_NUM_OVERFLOW:    ret = -1200;
-                                 break;
-               case PGTYPES_NUM_BAD_NUMERIC: ret = -1213;
-                             break;
-               default:          ret = -1216;
-                             break;
+               case PGTYPES_NUM_OVERFLOW:
+                   ret = -1200;
+                   break;
+               case PGTYPES_NUM_BAD_NUMERIC:
+                   ret = -1213;
+                   break;
+               default:
+                   ret = -1216;
+                   break;
            }
        }
        else
        {
-           if (PGTYPESnumeric_to_decimal(result, np) !=0)
+           if (PGTYPESnumeric_to_decimal(result, np) != 0)
                ret = -1200;
 
            free(result);
        }
    }
-   
+
    free(str);
    return ret;
 }
 
 int
-deccvdbl(double dbl, Decimal *np)
+deccvdbl(double dbl, Decimal * np)
 {
-   Numeric *nres = PGTYPESnumeric_new();
-   int result = 1;
-   
-   if (risnull(CDOUBLETYPE, (char *)&dbl))
+   Numeric    *nres = PGTYPESnumeric_new();
+   int         result = 1;
+
+   if (risnull(CDOUBLETYPE, (char *) &dbl))
    {
-       rsetnull(CDECIMALTYPE, (char *)np);
+       rsetnull(CDECIMALTYPE, (char *) np);
        return 0;
    }
 
@@ -211,18 +220,18 @@ deccvdbl(double dbl, Decimal *np)
        result = PGTYPESnumeric_to_decimal(nres, np);
 
    PGTYPESnumeric_free(nres);
-   return(result);
+   return (result);
 }
 
 int
-deccvint(int in, Decimal *np)
+deccvint(int in, Decimal * np)
 {
-   Numeric *nres = PGTYPESnumeric_new();
-   int result = 1;
-   
-   if (risnull(CINTTYPE, (char *)&in))
+   Numeric    *nres = PGTYPESnumeric_new();
+   int         result = 1;
+
+   if (risnull(CINTTYPE, (char *) &in))
    {
-       rsetnull(CDECIMALTYPE, (char *)np);
+       rsetnull(CDECIMALTYPE, (char *) np);
        return 0;
    }
 
@@ -234,18 +243,18 @@ deccvint(int in, Decimal *np)
        result = PGTYPESnumeric_to_decimal(nres, np);
 
    PGTYPESnumeric_free(nres);
-   return(result);
+   return (result);
 }
 
 int
-deccvlong(long lng, Decimal *np)
+deccvlong(long lng, Decimal * np)
 {
-   Numeric *nres = PGTYPESnumeric_new();
-   int result = 1;
-   
-   if (risnull(CLONGTYPE, (char *)&lng))
+   Numeric    *nres = PGTYPESnumeric_new();
+   int         result = 1;
+
+   if (risnull(CLONGTYPE, (char *) &lng))
    {
-       rsetnull(CDECIMALTYPE, (char *)np);
+       rsetnull(CDECIMALTYPE, (char *) np);
        return 0;
    }
 
@@ -257,80 +266,87 @@ deccvlong(long lng, Decimal *np)
        result = PGTYPESnumeric_to_decimal(nres, np);
 
    PGTYPESnumeric_free(nres);
-   return(result);
+   return (result);
 }
 
 int
-decdiv(Decimal *n1, Decimal *n2, Decimal *n3)
+decdiv(Decimal * n1, Decimal * n2, Decimal * n3)
 {
-   int i = deccall3(n1, n2, n3, PGTYPESnumeric_div);
+   int         i = deccall3(n1, n2, n3, PGTYPESnumeric_div);
 
    if (i != 0)
        switch (errno)
        {
-           case PGTYPES_NUM_DIVIDE_ZERO: return -1202;
-                         break;
-           case PGTYPES_NUM_OVERFLOW:    return  -1200;
-                         break;
-           default:          return -1201;
-                         break;
+           case PGTYPES_NUM_DIVIDE_ZERO:
+               return -1202;
+               break;
+           case PGTYPES_NUM_OVERFLOW:
+               return -1200;
+               break;
+           default:
+               return -1201;
+               break;
        }
 
    return 0;
 }
 
-int 
-decmul(Decimal *n1, Decimal *n2, Decimal *n3)
+int
+decmul(Decimal * n1, Decimal * n2, Decimal * n3)
 {
-   int i = deccall3(n1, n2, n3, PGTYPESnumeric_mul);
-   
+   int         i = deccall3(n1, n2, n3, PGTYPESnumeric_mul);
+
    if (i != 0)
        switch (errno)
        {
-           case PGTYPES_NUM_OVERFLOW:    return -1200;
-                         break;
-           default:          return -1201;
-                         break;
+           case PGTYPES_NUM_OVERFLOW:
+               return -1200;
+               break;
+           default:
+               return -1201;
+               break;
        }
 
    return 0;
 }
 
 int
-decsub(Decimal *n1, Decimal *n2, Decimal *n3)
+decsub(Decimal * n1, Decimal * n2, Decimal * n3)
 {
-   int i = deccall3(n1, n2, n3, PGTYPESnumeric_sub);
+   int         i = deccall3(n1, n2, n3, PGTYPESnumeric_sub);
 
    if (i != 0)
        switch (errno)
        {
-           case PGTYPES_NUM_OVERFLOW:    return -1200;
-                         break;
-           default:          return -1201;
-                         break;
+           case PGTYPES_NUM_OVERFLOW:
+               return -1200;
+               break;
+           default:
+               return -1201;
+               break;
        }
 
    return 0;
 }
 
 int
-dectoasc(Decimal *np, char *cp, int len, int right)
+dectoasc(Decimal * np, char *cp, int len, int right)
 {
-   char *str;
-   Numeric *nres = PGTYPESnumeric_new();
+   char       *str;
+   Numeric    *nres = PGTYPESnumeric_new();
 
    if (nres == NULL)
        return -1211;
 
-   if (risnull(CDECIMALTYPE, (char *)np))
+   if (risnull(CDECIMALTYPE, (char *) np))
    {
-       rsetnull(CSTRINGTYPE, (char *)cp);
+       rsetnull(CSTRINGTYPE, (char *) cp);
        return 0;
    }
 
    if (PGTYPESnumeric_from_decimal(np, nres) != 0)
        return -1211;
-   
+
    if (right >= 0)
        str = PGTYPESnumeric_to_asc(nres, right);
    else
@@ -339,26 +355,29 @@ dectoasc(Decimal *np, char *cp, int len, int right)
    PGTYPESnumeric_free(nres);
    if (!str)
        return -1;
-   
-   /* TODO: have to take care of len here and create exponatial notion if necessary */
+
+   /*
+    * TODO: have to take care of len here and create exponatial notion if
+    * necessary
+    */
    strncpy(cp, str, len);
-   free (str);
+   free(str);
 
    return 0;
 }
 
 int
-dectodbl(Decimal *np, double *dblp)
+dectodbl(Decimal * np, double *dblp)
 {
-   Numeric *nres = PGTYPESnumeric_new();
-   int i;
+   Numeric    *nres = PGTYPESnumeric_new();
+   int         i;
 
    if (nres == NULL)
        return -1211;
-           
+
    if (PGTYPESnumeric_from_decimal(np, nres) != 0)
        return -1211;
-   
+
    i = PGTYPESnumeric_to_double(nres, dblp);
    PGTYPESnumeric_free(nres);
 
@@ -366,118 +385,123 @@ dectodbl(Decimal *np, double *dblp)
 }
 
 int
-dectoint(Decimal *np, int *ip)
+dectoint(Decimal * np, int *ip)
 {
-   int ret;
-   Numeric *nres = PGTYPESnumeric_new();
+   int         ret;
+   Numeric    *nres = PGTYPESnumeric_new();
 
    if (nres == NULL)
        return -1211;
-           
+
    if (PGTYPESnumeric_from_decimal(np, nres) != 0)
        return -1211;
-   
+
    ret = PGTYPESnumeric_to_int(nres, ip);
 
    if (ret == PGTYPES_NUM_OVERFLOW)
        ret = -1200;
-   
+
    return ret;
 }
 
 int
-dectolong(Decimal *np, long *lngp) 
+dectolong(Decimal * np, long *lngp)
 {
-   int ret;
-   Numeric *nres = PGTYPESnumeric_new();;
+   int         ret;
+   Numeric    *nres = PGTYPESnumeric_new();;
 
    if (nres == NULL)
        return -1211;
-           
+
    if (PGTYPESnumeric_from_decimal(np, nres) != 0)
        return -1211;
-   
+
    ret = PGTYPESnumeric_to_long(nres, lngp);
 
    if (ret == PGTYPES_NUM_OVERFLOW)
        ret = -1200;
-   
+
    return ret;
 }
 
 /* Now the date functions */
 int
-rdatestr (Date d, char *str)
+rdatestr(Date d, char *str)
 {
-   char *tmp = PGTYPESdate_to_asc(d);
+   char       *tmp = PGTYPESdate_to_asc(d);
 
    if (!tmp)
        return -1210;
-   
+
    /* move to user allocated buffer */
    strcpy(str, tmp);
    free(tmp);
-   
+
    return 0;
 }
 
 int
-rstrdate (char *str, Date *d)
+rstrdate(char *str, Date * d)
 {
-   Date dat = PGTYPESdate_from_asc(str, NULL);
+   Date        dat = PGTYPESdate_from_asc(str, NULL);
 
    if (errno != PGTYPES_DATE_BAD_DATE && dat == 0)
        return -1218;
 
-   *d=dat;
+   *d = dat;
    return 0;
 }
 
 void
-rtoday (Date *d)
+rtoday(Date * d)
 {
    PGTYPESdate_today(d);
    return;
 }
 
 int
-rjulmdy (Date d, short mdy[3])
+rjulmdy(Date d, short mdy[3])
 {
-   int mdy_int[3];
-   
+   int         mdy_int[3];
+
    PGTYPESdate_julmdy(d, mdy_int);
-   mdy[0] = (short)mdy_int[0];
-   mdy[1] = (short)mdy_int[1];
-   mdy[2] = (short)mdy_int[2];
+   mdy[0] = (short) mdy_int[0];
+   mdy[1] = (short) mdy_int[1];
+   mdy[2] = (short) mdy_int[2];
    return 0;
 }
 
 int
-rdefmtdate (Date *d, char *fmt, char *str)
+rdefmtdate(Date * d, char *fmt, char *str)
 {
    /* TODO: take care of DBCENTURY environment variable */
    /* PGSQL functions allow all centuries */
 
    if (PGTYPESdate_defmt_asc(d, fmt, str) == 0)
        return 0;
-   
+
    switch (errno)
    {
-       case PGTYPES_DATE_ERR_ENOSHORTDATE:     return -1209;
+       case PGTYPES_DATE_ERR_ENOSHORTDATE:
+           return -1209;
        case PGTYPES_DATE_ERR_EARGS:
-       case PGTYPES_DATE_ERR_ENOTDMY:      return -1212;
-       case PGTYPES_DATE_BAD_DAY:      return -1204;
-       case PGTYPES_DATE_BAD_MONTH:        return -1205;
-       default:                return -1206; 
+       case PGTYPES_DATE_ERR_ENOTDMY:
+           return -1212;
+       case PGTYPES_DATE_BAD_DAY:
+           return -1204;
+       case PGTYPES_DATE_BAD_MONTH:
+           return -1205;
+       default:
+           return -1206;
    }
 }
 
 int
-rfmtdate (Date d, char *fmt, char *str)
+rfmtdate(Date d, char *fmt, char *str)
 {
    if (PGTYPESdate_fmt_asc(d, fmt, str) == 0)
        return 0;
-       
+
    if (errno == ENOMEM)
        return -1211;
 
@@ -485,9 +509,9 @@ rfmtdate (Date d, char *fmt, char *str)
 }
 
 int
-rmdyjul (short mdy[3], Date *d)
+rmdyjul(short mdy[3], Date * d)
 {
-   int mdy_int[3];
+   int         mdy_int[3];
 
    mdy_int[0] = mdy[0];
    mdy_int[1] = mdy[1];
@@ -499,58 +523,58 @@ rmdyjul (short mdy[3], Date *d)
 int
 rdayofweek(Date d)
 {
-   return(PGTYPESdate_dayofweek(d));
+   return (PGTYPESdate_dayofweek(d));
 }
-   
+
 /* And the datetime stuff */
 
 void
-dtcurrent (Timestamp *ts)
+dtcurrent(Timestamp *ts)
 {
-   PGTYPEStimestamp_current (ts);
+   PGTYPEStimestamp_current(ts);
 }
 
 int
-dtcvasc (char *str, Timestamp *ts)
+dtcvasc(char *str, Timestamp *ts)
 {
-   Timestamp ts_tmp;
-        int i;
-        char **endptr = &str;
+   Timestamp   ts_tmp;
+   int         i;
+   char      **endptr = &str;
 
-        ts_tmp = PGTYPEStimestamp_from_asc(str, endptr);
-        i = errno;
-        if (i) {
-                return i;
-        }
-        if (**endptr) {
-                /* extra characters exist at the end */
-                return -1264;
-        }
+   ts_tmp = PGTYPEStimestamp_from_asc(str, endptr);
+   i = errno;
+   if (i)
+       return i;
+   if (**endptr)
+   {
+       /* extra characters exist at the end */
+       return -1264;
+   }
+
+   /* everything went fine */
+   *ts = ts_tmp;
 
-        /* everything went fine */
-        *ts = ts_tmp;
-                               
    return 0;
 }
 
 int
-dtsub (Timestamp *ts1, Timestamp *ts2, Interval *iv)
+dtsub(Timestamp *ts1, Timestamp *ts2, Interval *iv)
 {
    return PGTYPEStimestamp_sub(ts1, ts2, iv);
 }
 
 int
-dttoasc (Timestamp *ts, char *output)
+dttoasc(Timestamp *ts, char *output)
 {
-   char *asctime = PGTYPEStimestamp_to_asc( *ts );
-   
-   strcpy (output, asctime); 
+   char       *asctime = PGTYPEStimestamp_to_asc(*ts);
+
+   strcpy(output, asctime);
    free(asctime);
    return 0;
 }
 
 int
-dttofmtasc (Timestamp *ts, char *output, int str_len, char *fmtstr)
+dttofmtasc(Timestamp *ts, char *output, int str_len, char *fmtstr)
 {
    return PGTYPEStimestamp_fmt_asc(ts, output, str_len, fmtstr);
 }
@@ -559,59 +583,65 @@ int
 intoasc(Interval *i, char *str)
 {
    str = PGTYPESinterval_to_asc(i);
-   
+
    if (!str)
        return -errno;
-   
+
    return 0;
 }
 
 /***************************************************************************
-                          rfmt.c  -  description
-                             -------------------
-    begin                : Wed Apr 2 2003
-    copyright            : (C) 2003 by Carsten Wolff
-    email                : [email protected]
+                         rfmt.c  -  description
+                            -------------------
+   begin                : Wed Apr 2 2003
+   copyright            : (C) 2003 by Carsten Wolff
+   email                : [email protected]
  ***************************************************************************/
 
-static struct {
-   long val;
-   int maxdigits;
-   int digits;
-   int remaining;
-   char sign;
-   char *val_string;
-} value;
+static struct
+{
+   long        val;
+   int         maxdigits;
+   int         digits;
+   int         remaining;
+   char        sign;
+   char       *val_string;
+}  value;
 
 /**
  * initialize the struct, wich holds the different forms
  * of the long value
  */
-static void initValue(long lng_val) {
-   int i, div, dig;
-   char tmp[2] = " ";
+static void
+initValue(long lng_val)
+{
+   int         i,
+               div,
+               dig;
+   char        tmp[2] = " ";
 
    /* set some obvious things */
    value.val = lng_val >= 0 ? lng_val : lng_val * (-1);
    value.sign = lng_val >= 0 ? '+' : '-';
-   value.maxdigits = log10(2)*(8*sizeof(long)-1);
+   value.maxdigits = log10(2) * (8 * sizeof(long) - 1);
 
    /* determine the number of digits */
-   for(i=1; i <= value.maxdigits; i++) {
-       if ((int)(value.val / pow(10, i)) != 0) {
-           value.digits = i+1;
-       }
+   for (i = 1; i <= value.maxdigits; i++)
+   {
+       if ((int) (value.val / pow(10, i)) != 0)
+           value.digits = i + 1;
    }
    value.remaining = value.digits;
 
    /* convert the long to string */
-   value.val_string = (char *)malloc(value.digits + 1);
-   for(i=value.digits; i > 0; i--) {
-       div = pow(10,i);
+   value.val_string = (char *) malloc(value.digits + 1);
+   for (i = value.digits; i > 0; i--)
+   {
+       div = pow(10, i);
        dig = (value.val % div) / (div / 10);
-       tmp[0] = (char)(dig + 48);
+       tmp[0] = (char) (dig + 48);
        strcat(value.val_string, tmp);
-    }
+   }
    /* safety-net */
    value.val_string[value.digits] = '\0';
    /* clean up */
@@ -619,14 +649,18 @@ static void initValue(long lng_val) {
 }
 
 /* return the position oft the right-most dot in some string */
-static int getRightMostDot(char* str) {
-   size_t len = strlen(str);
-   int i,j;
-   j=0;
-   for(i=len-1; i >= 0; i--) {
-       if (str[i] == '.') {
-           return len-j-1;
-       }
+static int
+getRightMostDot(char *str)
+{
+   size_t      len = strlen(str);
+   int         i,
+               j;
+
+   j = 0;
+   for (i = len - 1; i >= 0; i--)
+   {
+       if (str[i] == '.')
+           return len - j - 1;
        j++;
    }
    return -1;
@@ -636,29 +670,36 @@ static int getRightMostDot(char* str) {
 int
 rfmtlong(long lng_val, char *fmt, char *outbuf)
 {
-   size_t fmt_len = strlen(fmt);
-   size_t temp_len;
-   int i, j, k, dotpos;
-   int leftalign = 0, blank = 0, sign = 0, entity = 0,
-       entitydone = 0, signdone = 0, brackets_ok = 0;
-   char *temp;
-   char tmp[2] = " ";
-   char lastfmt = ' ', fmtchar = ' ';
-
-   temp = (char *) malloc(fmt_len+1);
+   size_t      fmt_len = strlen(fmt);
+   size_t      temp_len;
+   int         i,
+               j,
+               k,
+               dotpos;
+   int         leftalign = 0,
+               blank = 0,
+               sign = 0,
+               entity = 0,
+               entitydone = 0,
+               signdone = 0,
+               brackets_ok = 0;
+   char       *temp;
+   char        tmp[2] = " ";
+   char        lastfmt = ' ',
+               fmtchar = ' ';
+
+   temp = (char *) malloc(fmt_len + 1);
 
    /* put all info about the long in a struct */
    initValue(lng_val);
 
    /* '<' is the only format, where we have to align left */
-   if (strchr(fmt, (int)'<')) {
+   if (strchr(fmt, (int) '<'))
        leftalign = 1;
-   }
 
    /* '(' requires ')' */
-   if (strchr(fmt, (int)'(') && strchr(fmt, (int)')')) {
+   if (strchr(fmt, (int) '(') && strchr(fmt, (int) ')'))
        brackets_ok = 1;
-   }
 
    /* get position of the right-most dot in the format-string */
    /* and fill the temp-string wit '0's up to there. */
@@ -666,94 +707,122 @@ rfmtlong(long lng_val, char *fmt, char *outbuf)
 
    /* start to parse the formatstring */
    temp[0] = '\0';
-   j = 0;                  /* position in temp */
-   k = value.digits - 1;   /* position in the value_string */
-   for(i=fmt_len-1, j=0; i>=0; i--, j++) {
+   j = 0;                      /* position in temp */
+   k = value.digits - 1;       /* position in the value_string */
+   for (i = fmt_len - 1, j = 0; i >= 0; i--, j++)
+   {
        /* qualify, where we are in the value_string */
-       if (k < 0) {
-           if (leftalign) {
+       if (k < 0)
+       {
+           if (leftalign)
+           {
                /* can't use strncat(,,0) here, Solaris would freek out */
                temp[j] = '\0';
                break;
            }
            blank = 1;
-           if (k == -2) {
+           if (k == -2)
                entity = 1;
-           }
-           else if (k == -1) {
+           else if (k == -1)
                sign = 1;
-           }
        }
        /* if we're right side of the right-most dot, print '0' */
-       if (dotpos >= 0 && dotpos <= i) {
-           if (dotpos < i) {
-               if (fmt[i] == ')') tmp[0] = value.sign == '-' ? ')' : ' ';
-               else tmp[0] = '0';
+       if (dotpos >= 0 && dotpos <= i)
+       {
+           if (dotpos < i)
+           {
+               if (fmt[i] == ')')
+                   tmp[0] = value.sign == '-' ? ')' : ' ';
+               else
+                   tmp[0] = '0';
            }
-           else {
+           else
                tmp[0] = '.';
-           }
            strcat(temp, tmp);
            continue;
        }
        /* the ',' needs special attention, if it is in the blank area */
-       if (blank && fmt[i] == ',') fmtchar = lastfmt;
-       else fmtchar = fmt[i];
+       if (blank && fmt[i] == ',')
+           fmtchar = lastfmt;
+       else
+           fmtchar = fmt[i];
        /* analyse this format-char */
-       switch(fmtchar) {
+       switch (fmtchar)
+       {
            case ',':
                tmp[0] = ',';
                k++;
                break;
            case '*':
-               if (blank) tmp[0] = '*';
-               else tmp[0] = value.val_string[k];
+               if (blank)
+                   tmp[0] = '*';
+               else
+                   tmp[0] = value.val_string[k];
                break;
            case '&':
-               if (blank) tmp[0] = '0';
-               else tmp[0] = value.val_string[k];
+               if (blank)
+                   tmp[0] = '0';
+               else
+                   tmp[0] = value.val_string[k];
                break;
            case '#':
-               if (blank) tmp[0] = ' ';
-               else tmp[0] = value.val_string[k];
+               if (blank)
+                   tmp[0] = ' ';
+               else
+                   tmp[0] = value.val_string[k];
                break;
            case '<':
                tmp[0] = value.val_string[k];
                break;
            case '-':
-               if (sign && value.sign == '-' && !signdone) {
+               if (sign && value.sign == '-' && !signdone)
+               {
                    tmp[0] = '-';
                    signdone = 1;
                }
-               else if (blank) tmp[0] = ' ';
-               else tmp[0] = value.val_string[k];
+               else if (blank)
+                   tmp[0] = ' ';
+               else
+                   tmp[0] = value.val_string[k];
                break;
            case '+':
-               if (sign && !signdone) {
+               if (sign && !signdone)
+               {
                    tmp[0] = value.sign;
                    signdone = 1;
                }
-               else if (blank) tmp[0] = ' ';
-               else tmp[0] = value.val_string[k];
+               else if (blank)
+                   tmp[0] = ' ';
+               else
+                   tmp[0] = value.val_string[k];
                break;
            case '(':
-               if (sign && brackets_ok && value.sign == '-') tmp[0] = '(';
-               else if (blank) tmp[0] = ' ';
-               else tmp[0] = value.val_string[k];
+               if (sign && brackets_ok && value.sign == '-')
+                   tmp[0] = '(';
+               else if (blank)
+                   tmp[0] = ' ';
+               else
+                   tmp[0] = value.val_string[k];
                break;
            case ')':
-               if (brackets_ok && value.sign == '-') tmp[0] = ')';
-               else tmp[0] = ' ';
+               if (brackets_ok && value.sign == '-')
+                   tmp[0] = ')';
+               else
+                   tmp[0] = ' ';
                break;
            case '$':
-               if (blank && !entitydone) {
+               if (blank && !entitydone)
+               {
                    tmp[0] = '$';
                    entitydone = 1;
                }
-               else if (blank) tmp[0] = ' ';
-               else tmp[0] = value.val_string[k];
+               else if (blank)
+                   tmp[0] = ' ';
+               else
+                   tmp[0] = value.val_string[k];
                break;
-           default: tmp[0] = fmt[i];
+           default:
+               tmp[0] = fmt[i];
        }
        strcat(temp, tmp);
        lastfmt = fmt[i];
@@ -765,9 +834,10 @@ rfmtlong(long lng_val, char *fmt, char *outbuf)
    /* reverse the temp-string and put it into the outbuf */
    temp_len = strlen(temp);
    outbuf[0] = '\0';
-   for(i=temp_len-1; i>=0; i--) {
+   for (i = temp_len - 1; i >= 0; i--)
+   {
        tmp[0] = temp[i];
-       strcat(outbuf, tmp); 
+       strcat(outbuf, tmp);
    }
    outbuf[temp_len] = '\0';
 
@@ -782,22 +852,23 @@ void
 rupshift(char *str)
 {
    for (; *str != '\0'; str++)
-       if (islower(*str)) *str = toupper(*str);
+       if (islower(*str))
+           *str = toupper(*str);
    return;
 }
 
 int
 byleng(char *str, int len)
 {
-        for (len--; str[len] && str[len] == ' '; len--);
-        return (len+1);
+   for (len--; str[len] && str[len] == ' '; len--);
+   return (len + 1);
 }
 
 void
 ldchar(char *src, int len, char *dest)
 {
-        memmove(dest, src, len);
-        dest[len]=0;
+   memmove(dest, src, len);
+   dest[len] = 0;
 }
 
 int
@@ -825,17 +896,17 @@ rtypwidth(int sqltype, int sqllen)
 }
 
 int
-dtcvfmtasc (char *inbuf, char *fmtstr, dtime_t *dtvalue)
+dtcvfmtasc(char *inbuf, char *fmtstr, dtime_t * dtvalue)
 {
-   return PGTYPEStimestamp_defmt_asc(inbuf, fmtstr, dtvalue); 
+   return PGTYPEStimestamp_defmt_asc(inbuf, fmtstr, dtvalue);
 }
 
 static struct var_list
 {
-   int number;
-   void *pointer;
+   int         number;
+   void       *pointer;
    struct var_list *next;
-} *ivlist = NULL;
+}  *ivlist = NULL;
 
 void
 ECPG_informix_set_var(int number, void *pointer, int lineno)
@@ -853,7 +924,7 @@ ECPG_informix_set_var(int number, void *pointer, int lineno)
    }
 
    /* a new one has to be added */
-   ptr = (struct var_list *) ECPGalloc (sizeof(struct var_list), lineno);
+   ptr = (struct var_list *) ECPGalloc(sizeof(struct var_list), lineno);
    ptr->number = number;
    ptr->pointer = pointer;
    ptr->next = ivlist;
@@ -869,14 +940,15 @@ ECPG_informix_get_var(int number)
    return (ptr) ? ptr->pointer : NULL;
 }
 
-int rsetnull(int t, char *ptr)
+int
+rsetnull(int t, char *ptr)
 {
    ECPGset_informix_null(t, ptr);
    return 0;
 }
 
-int risnull(int t, char *ptr)
+int
+risnull(int t, char *ptr)
 {
-   return(ECPGis_informix_null(t, ptr));
+   return (ECPGis_informix_null(t, ptr));
 }
-
index 1030b041ab19b4b9bcb48f66b4802f5449738cb1..679efb6466b6cb38528ff6540108fa892dbe08dd 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.14 2003/08/01 13:53:36 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.15 2003/08/04 00:43:32 momjian Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
 #ifdef USE_THREADS
 static pthread_mutex_t connections_mutex = PTHREAD_MUTEX_INITIALIZER;
 #endif
-static struct connection *all_connections   = NULL;
+static struct connection *all_connections = NULL;
 static struct connection *actual_connection = NULL;
 
 static struct connection *
 ecpg_get_connection_nr(const char *connection_name)
 {
-  struct connection *ret = NULL;
-
-  if( (connection_name == NULL) || (strcmp(connection_name, "CURRENT") == 0) )
-    {
-      ret = actual_connection;
-    }
-  else
-    {
-      struct connection *con;
-      
-      for( con = all_connections; con != NULL; con = con->next)
+   struct connection *ret = NULL;
+
+   if ((connection_name == NULL) || (strcmp(connection_name, "CURRENT") == 0))
+       ret = actual_connection;
+   else
    {
-     if( strcmp(connection_name, con->name) == 0 )
-       break;
+       struct connection *con;
+
+       for (con = all_connections; con != NULL; con = con->next)
+       {
+           if (strcmp(connection_name, con->name) == 0)
+               break;
+       }
+       ret = con;
    }
-      ret = con;
-    }
 
-  return( ret );
+   return (ret);
 }
 
 struct connection *
 ECPGget_connection(const char *connection_name)
 {
-  struct connection *ret = NULL;
+   struct connection *ret = NULL;
+
 #ifdef USE_THREADS
-  pthread_mutex_lock(&connections_mutex);
+   pthread_mutex_lock(&connections_mutex);
 #endif
-  
-  ret = ecpg_get_connection_nr(connection_name);
+
+   ret = ecpg_get_connection_nr(connection_name);
 
 #ifdef USE_THREADS
-  pthread_mutex_unlock(&connections_mutex);
+   pthread_mutex_unlock(&connections_mutex);
 #endif
 
-  return (ret);
-   
+   return (ret);
+
 }
 
 static void
@@ -70,9 +69,10 @@ ecpg_finish(struct connection * act)
 
        PQfinish(act->connection);
 
-       /* no need to lock connections_mutex - we're always called
-          by ECPGdisconnect or ECPGconnect, which are holding
-          the lock */
+       /*
+        * no need to lock connections_mutex - we're always called by
+        * ECPGdisconnect or ECPGconnect, which are holding the lock
+        */
 
        /* remove act from the list */
        if (act == all_connections)
@@ -158,26 +158,26 @@ ECPGsetconn(int lineno, const char *connection_name)
 static void
 ECPGnoticeReceiver(void *arg, const PGresult *result)
 {
-   char *sqlstate = PQresultErrorField(result, 'C');
-   char *message = PQresultErrorField(result, 'M');
+   char       *sqlstate = PQresultErrorField(result, 'C');
+   char       *message = PQresultErrorField(result, 'M');
    struct sqlca_t *sqlca = ECPGget_sqlca();
 
-   int sqlcode;
+   int         sqlcode;
 
    /* these are not warnings */
-   if (strncmp(sqlstate, "00", 2)==0)
+   if (strncmp(sqlstate, "00", 2) == 0)
        return;
 
    ECPGlog("%s", message);
 
    /* map to SQLCODE for backward compatibility */
-   if (strcmp(sqlstate, ECPG_SQLSTATE_INVALID_CURSOR_NAME)==0)
+   if (strcmp(sqlstate, ECPG_SQLSTATE_INVALID_CURSOR_NAME) == 0)
        sqlcode = ECPG_WARNING_UNKNOWN_PORTAL;
-   else if (strcmp(sqlstate, ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION)==0)
+   else if (strcmp(sqlstate, ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION) == 0)
        sqlcode = ECPG_WARNING_IN_TRANSACTION;
-   else if (strcmp(sqlstate, ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION)==0)
+   else if (strcmp(sqlstate, ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION) == 0)
        sqlcode = ECPG_WARNING_NO_TRANSACTION;
-   else if (strcmp(sqlstate, ECPG_SQLSTATE_DUPLICATE_CURSOR)==0)
+   else if (strcmp(sqlstate, ECPG_SQLSTATE_DUPLICATE_CURSOR) == 0)
        sqlcode = ECPG_WARNING_PORTAL_EXISTS;
    else
        sqlcode = 0;
@@ -210,21 +210,23 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
               *options = NULL;
 
    ECPGinit_sqlca(sqlca);
-   
+
    if (INFORMIX_MODE(compat))
    {
-       char *envname;
-       
-       /* Informix uses an environment variable DBPATH that overrides
-        * the connection parameters given here.
-        * We do the same with PG_DBPATH as the syntax is different. */
+       char       *envname;
+
+       /*
+        * Informix uses an environment variable DBPATH that overrides the
+        * connection parameters given here. We do the same with PG_DBPATH
+        * as the syntax is different.
+        */
        envname = getenv("PG_DBPATH");
        if (envname)
        {
            ECPGfree(dbname);
            dbname = strdup(envname);
        }
-                   
+
    }
 
    if ((this = (struct connection *) ECPGalloc(sizeof(struct connection), lineno)) == NULL)
@@ -378,21 +380,21 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
 
    if (PQstatus(this->connection) == CONNECTION_BAD)
    {
-           const char *errmsg = PQerrorMessage(this->connection);
-           char *db = realname ? realname : "<DEFAULT>";
+       const char *errmsg = PQerrorMessage(this->connection);
+       char       *db = realname ? realname : "<DEFAULT>";
 
        ecpg_finish(this);
 #ifdef USE_THREADS
        pthread_mutex_unlock(&connections_mutex);
 #endif
        ECPGlog("connect: could not open database %s on %s port %s %s%s%s%s in line %d\n\t%s\n",
-                db,
+               db,
                host ? host : "<DEFAULT>",
                port ? port : "<DEFAULT>",
                options ? "with options " : "", options ? options : "",
                user ? "for user " : "", user ? user : "",
                lineno, errmsg);
-        
+
        ECPGraise(lineno, ECPG_CONNECT, ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION, db);
        if (host)
            ECPGfree(host);
@@ -455,14 +457,14 @@ ECPGdisconnect(int lineno, const char *connection_name)
        con = ecpg_get_connection_nr(connection_name);
 
        if (!ECPGinit(con, connection_name, lineno))
-         {
+       {
 #ifdef USE_THREADS
-           pthread_mutex_unlock(&connections_mutex);
+           pthread_mutex_unlock(&connections_mutex);
 #endif
-           return (false);
-         }
+           return (false);
+       }
        else
-         ecpg_finish(con);
+           ecpg_finish(con);
    }
 
 #ifdef USE_THREADS
index 14e459d1b60a08f274b359ff4bcc8f290671beba..e095ed671d35bf75e62775659899aa91c42c63da 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.15 2003/08/01 13:53:36 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.16 2003/08/04 00:43:32 momjian Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -24,7 +24,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
 {
    struct sqlca_t *sqlca = ECPGget_sqlca();
    char       *pval = (char *) PQgetvalue(results, act_tuple, act_field);
-   int     value_for_indicator = 0;
+   int         value_for_indicator = 0;
 
    ECPGlog("ECPGget_data line %d: RESULT: %s offset: %ld\n", lineno, pval ? pval : "", offset);
 
@@ -54,11 +54,12 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
    /* We will have to decode the value */
 
    /*
-    * check for null value and set indicator accordingly, i.e. -1 if NULL and 0 if not
+    * check for null value and set indicator accordingly, i.e. -1 if NULL
+    * and 0 if not
     */
    if (PQgetisnull(results, act_tuple, act_field))
        value_for_indicator = -1;
-   
+
    switch (ind_type)
    {
        case ECPGt_short:
@@ -81,11 +82,13 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
 #endif   /* HAVE_LONG_LONG_INT_64 */
        case ECPGt_NO_INDICATOR:
            if (value_for_indicator == -1)
-           {               
+           {
                if (force_indicator == false)
                {
-                   /* Informix has an additional way to specify NULLs
-                    * note that this uses special values to denote NULL */
+                   /*
+                    * Informix has an additional way to specify NULLs
+                    * note that this uses special values to denote NULL
+                    */
                    ECPGset_informix_null(type, var + offset * act_tuple);
                }
                else
@@ -109,13 +112,13 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
        switch (type)
        {
                long        res;
-               unsigned long   ures;
+               unsigned long ures;
                double      dres;
-               char        *scan_length;
-               Numeric     *nres;
+               char       *scan_length;
+               Numeric    *nres;
                Date        ddres;
                Timestamp   tres;
-               Interval    *ires;
+               Interval   *ires;
 
            case ECPGt_short:
            case ECPGt_int:
@@ -294,9 +297,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
            case ECPGt_unsigned_char:
                {
                    if (varcharsize == 0)
-                   {
-                       strncpy((char *) ((long) var + offset * act_tuple), pval, strlen(pval)+1);
-                   }
+                       strncpy((char *) ((long) var + offset * act_tuple), pval, strlen(pval) + 1);
                    else
                    {
                        strncpy((char *) ((long) var + offset * act_tuple), pval, varcharsize);
@@ -340,9 +341,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
 
                    variable->len = strlen(pval);
                    if (varcharsize == 0)
-                   {
                        strncpy(variable->arr, pval, variable->len);
-                   }
                    else
                    {
                        strncpy(variable->arr, pval, varcharsize);
@@ -403,12 +402,12 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                else
                    nres = PGTYPESnumeric_from_asc("0.0", &scan_length);
 
-               if (type == ECPGt_numeric)
-                   PGTYPESnumeric_copy(nres, (Numeric *)(var + offset * act_tuple));
+               if (type == ECPGt_numeric)
+                   PGTYPESnumeric_copy(nres, (Numeric *) (var + offset * act_tuple));
                else
-                   PGTYPESnumeric_to_decimal(nres, (Decimal *)(var + offset * act_tuple));
+                   PGTYPESnumeric_to_decimal(nres, (Decimal *) (var + offset * act_tuple));
                break;
-               
+
            case ECPGt_interval:
                if (pval)
                {
@@ -430,7 +429,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                else
                    ires = PGTYPESinterval_from_asc("0 seconds", NULL);
 
-               PGTYPESinterval_copy(ires, (Interval *)(var + offset * act_tuple));
+               PGTYPESinterval_copy(ires, (Interval *) (var + offset * act_tuple));
                break;
            case ECPGt_date:
                if (pval)
@@ -450,7 +449,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                        return (false);
                    }
 
-                   *((Date *)(var + offset * act_tuple)) = ddres;
+                   *((Date *) (var + offset * act_tuple)) = ddres;
                }
                break;
 
@@ -472,10 +471,10 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
                        return (false);
                    }
 
-                   *((Timestamp *)(var + offset * act_tuple)) = tres;
+                   *((Timestamp *) (var + offset * act_tuple)) = tres;
                }
                break;
-               
+
            default:
                ECPGraise(lineno, ECPG_UNSUPPORTED, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, ECPGtype_name(type));
                return (false);
index 0beae2d93ab9bf336e01bc20f53e9ea2994683cc..839fc780cbc82085c07796d39960e21d9faf8864 100644 (file)
@@ -1,6 +1,6 @@
 /* dynamic SQL support routines
  *
- * $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.5 2003/08/01 13:53:36 petere Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.6 2003/08/04 00:43:32 momjian Exp $
  */
 
 #define POSTGRES_ECPG_INTERNAL
@@ -454,7 +454,7 @@ ECPGdescriptor_lvalue(int line, const char *descriptor)
 }
 
 bool
-ECPGdescribe(int line, bool input, const char *statement, ...)
+ECPGdescribe(int line, bool input, const char *statement,...)
 {
    ECPGlog("ECPGdescribe called on line %d for %s in %s\n", line, (input) ? "input" : "output", statement);
    return false;
index cfeb4e65b0b4cbc849fe25b1bfabc87c22985b1d..33bac6e892d417f22fced09125eb3001bd002872 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.5 2003/08/01 13:53:36 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.6 2003/08/04 00:43:32 momjian Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
 
 
 void
-ECPGraise(int line, int code, const char * sqlstate, const char *str)
+ECPGraise(int line, int code, const char *sqlstate, const char *str)
 {
    struct sqlca_t *sqlca = ECPGget_sqlca();
+
    sqlca->sqlcode = code;
    strncpy(sqlca->sqlstate, sqlstate, sizeof(sqlca->sqlstate));
 
@@ -161,8 +162,8 @@ ECPGraise_backend(int line, PGresult *result, PGconn *conn, int compat)
 
    /* copy error message */
    snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
-            "'%s' in line %d.", 
-            result ? PQresultErrorField(result, 'M') : PQerrorMessage(conn),
+            "'%s' in line %d.",
+        result ? PQresultErrorField(result, 'M') : PQerrorMessage(conn),
             line);
    sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc);
 
@@ -172,9 +173,9 @@ ECPGraise_backend(int line, PGresult *result, PGconn *conn, int compat)
            sizeof(sqlca->sqlstate));
 
    /* assign SQLCODE for backward compatibility */
-   if (strncmp(sqlca->sqlstate, "23505", sizeof(sqlca->sqlstate))==0)
+   if (strncmp(sqlca->sqlstate, "23505", sizeof(sqlca->sqlstate)) == 0)
        sqlca->sqlcode = INFORMIX_MODE(compat) ? ECPG_INFORMIX_DUPLICATE_KEY : ECPG_DUPLICATE_KEY;
-   if (strncmp(sqlca->sqlstate, "21000", sizeof(sqlca->sqlstate))==0)
+   if (strncmp(sqlca->sqlstate, "21000", sizeof(sqlca->sqlstate)) == 0)
        sqlca->sqlcode = INFORMIX_MODE(compat) ? ECPG_INFORMIX_SUBSELECT_NOT_ONE : ECPG_SUBSELECT_NOT_ONE;
    else
        sqlca->sqlcode = ECPG_PGSQL;
index 0d4247897d59b2049209c4306d14103e6d1474f2..c45441d47cac9f777da861401928c5ebc09f50b5 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.22 2003/08/01 13:53:36 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.23 2003/08/04 00:43:32 momjian Exp $ */
 
 /*
  * The aim is to get a simpler inteface to the database routines.
@@ -65,7 +65,7 @@ quote_postgres(char *arg, int lineno)
 
    res[ri++] = '\'';
    res[ri] = '\0';
-   
+
    return res;
 }
 
@@ -138,13 +138,16 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
            else
                var->value = var->pointer;
 
-           /* negative values are used to indicate an array without given bounds */
+           /*
+            * negative values are used to indicate an array without given
+            * bounds
+            */
            /* reset to zero for us */
            if (var->arrsize < 0)
                var->arrsize = 0;
            if (var->varcharsize < 0)
                var->varcharsize = 0;
-       
+
            var->ind_type = va_arg(ap, enum ECPGttype);
            var->ind_pointer = va_arg(ap, char *);
            var->ind_varcharsize = va_arg(ap, long);
@@ -157,8 +160,11 @@ create_statement(int lineno, int compat, int force_indicator, struct connection
                var->ind_value = *((char **) (var->ind_pointer));
            else
                var->ind_value = var->ind_pointer;
-           
-           /* negative values are used to indicate an array without given bounds */
+
+           /*
+            * negative values are used to indicate an array without given
+            * bounds
+            */
            /* reset to zero for us */
            if (var->ind_arrsize < 0)
                var->ind_arrsize = 0;
@@ -482,11 +488,11 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
     * we do not know if the attribute is an array here
     */
 #if 0
-    if (var->arrsize > 1 && ...)
-    {
+   if (var->arrsize > 1 &&...)
+   {
        ECPGraise(stmt->lineno, ECPG_ARRAY_INSERT, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL);
        return false;
-    }
+   }
 #endif
 
    /*
@@ -739,7 +745,7 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
                break;
 
            case ECPGt_bool:
-               if (!(mallocedval = ECPGalloc(var->arrsize +sizeof ("array []"), stmt->lineno)))
+               if (!(mallocedval = ECPGalloc(var->arrsize + sizeof("array []"), stmt->lineno)))
                    return false;
 
                if (var->arrsize > 1)
@@ -838,30 +844,30 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
            case ECPGt_decimal:
            case ECPGt_numeric:
                {
-                   char *str = NULL;
-                   int slen;
-                   Numeric *nval = PGTYPESnumeric_new();
-                   
+                   char       *str = NULL;
+                   int         slen;
+                   Numeric    *nval = PGTYPESnumeric_new();
+
                    if (var->arrsize > 1)
                    {
                        for (element = 0; element < var->arrsize; element++)
                        {
                            if (var->type == ECPGt_numeric)
-                               PGTYPESnumeric_copy((Numeric *)((var + var->offset * element)->value), nval);
+                               PGTYPESnumeric_copy((Numeric *) ((var + var->offset * element)->value), nval);
                            else
-                               PGTYPESnumeric_from_decimal((Decimal *)((var + var->offset * element)->value), nval);
-                           
+                               PGTYPESnumeric_from_decimal((Decimal *) ((var + var->offset * element)->value), nval);
+
                            str = PGTYPESnumeric_to_asc(nval, 0);
                            PGTYPESnumeric_free(nval);
-                           slen = strlen (str);
-                           
+                           slen = strlen(str);
+
                            if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), stmt->lineno)))
                                return false;
-                           
+
                            if (!element)
                                strcpy(mallocedval, "array [");
-                           
-                           strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+
+                           strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                            strcpy(mallocedval + strlen(mallocedval), ",");
                        }
                        strcpy(mallocedval + strlen(mallocedval) - 1, "]");
@@ -869,22 +875,22 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
                    else
                    {
                        if (var->type == ECPGt_numeric)
-                           PGTYPESnumeric_copy((Numeric *)(var->value), nval);
+                           PGTYPESnumeric_copy((Numeric *) (var->value), nval);
                        else
-                           PGTYPESnumeric_from_decimal((Decimal *)(var->value), nval);
-                       
+                           PGTYPESnumeric_from_decimal((Decimal *) (var->value), nval);
+
                        str = PGTYPESnumeric_to_asc(nval, 0);
 
                        PGTYPESnumeric_free(nval);
-                       slen = strlen (str);
-                   
+                       slen = strlen(str);
+
                        if (!(mallocedval = ECPGalloc(slen + 1, stmt->lineno)))
                            return false;
 
-                       strncpy(mallocedval, str , slen);
+                       strncpy(mallocedval, str, slen);
                        mallocedval[slen] = '\0';
                    }
-                   
+
                    *tobeinserted_p = mallocedval;
                    *malloced_p = true;
                    free(str);
@@ -893,41 +899,41 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
 
            case ECPGt_interval:
                {
-                   char *str = NULL;
-                   int slen;
-                   
+                   char       *str = NULL;
+                   int         slen;
+
                    if (var->arrsize > 1)
                    {
                        for (element = 0; element < var->arrsize; element++)
                        {
-                           str = quote_postgres(PGTYPESinterval_to_asc((Interval *)((var + var->offset * element)->value)), stmt->lineno);
-                           slen = strlen (str);
-                           
+                           str = quote_postgres(PGTYPESinterval_to_asc((Interval *) ((var + var->offset * element)->value)), stmt->lineno);
+                           slen = strlen(str);
+
                            if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [],interval "), stmt->lineno)))
                                return false;
-                           
+
                            if (!element)
                                strcpy(mallocedval, "array [");
-                       
+
                            strcpy(mallocedval + strlen(mallocedval), "interval ");
-                           strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+                           strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                            strcpy(mallocedval + strlen(mallocedval), ",");
                        }
                        strcpy(mallocedval + strlen(mallocedval) - 1, "]");
                    }
                    else
                    {
-                       str = quote_postgres(PGTYPESinterval_to_asc((Interval *)(var->value)), stmt->lineno);
-                       slen = strlen (str);
-                   
+                       str = quote_postgres(PGTYPESinterval_to_asc((Interval *) (var->value)), stmt->lineno);
+                       slen = strlen(str);
+
                        if (!(mallocedval = ECPGalloc(slen + sizeof("interval ") + 1, stmt->lineno)))
                            return false;
 
                        strcpy(mallocedval, "interval ");
                        /* also copy trailing '\0' */
-                       strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+                       strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                    }
-                   
+
                    *tobeinserted_p = mallocedval;
                    *malloced_p = true;
                    free(str);
@@ -936,90 +942,90 @@ ECPGstore_input(const struct statement * stmt, const struct variable * var,
 
            case ECPGt_date:
                {
-                   char *str = NULL;
-                   int slen;
-                   
+                   char       *str = NULL;
+                   int         slen;
+
                    if (var->arrsize > 1)
                    {
                        for (element = 0; element < var->arrsize; element++)
                        {
-                           str = quote_postgres(PGTYPESdate_to_asc(*(Date *)((var + var->offset * element)->value)), stmt->lineno);
-                           slen = strlen (str);
-                           
+                           str = quote_postgres(PGTYPESdate_to_asc(*(Date *) ((var + var->offset * element)->value)), stmt->lineno);
+                           slen = strlen(str);
+
                            if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [],date "), stmt->lineno)))
                                return false;
-                           
+
                            if (!element)
                                strcpy(mallocedval, "array [");
-                           
+
                            strcpy(mallocedval + strlen(mallocedval), "date ");
-                           strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+                           strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                            strcpy(mallocedval + strlen(mallocedval), ",");
                        }
                        strcpy(mallocedval + strlen(mallocedval) - 1, "]");
                    }
                    else
                    {
-                       str = quote_postgres(PGTYPESdate_to_asc(*(Date *)(var->value)), stmt->lineno);
-                       slen = strlen (str);
-                   
+                       str = quote_postgres(PGTYPESdate_to_asc(*(Date *) (var->value)), stmt->lineno);
+                       slen = strlen(str);
+
                        if (!(mallocedval = ECPGalloc(slen + sizeof("date ") + 1, stmt->lineno)))
                            return false;
 
                        strcpy(mallocedval, "date ");
                        /* also copy trailing '\0' */
-                       strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+                       strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                    }
-                   
+
                    *tobeinserted_p = mallocedval;
                    *malloced_p = true;
                    free(str);
                }
                break;
-               
+
            case ECPGt_timestamp:
                {
-                   char *str = NULL;
-                   int slen;
-                   
+                   char       *str = NULL;
+                   int         slen;
+
                    if (var->arrsize > 1)
                    {
                        for (element = 0; element < var->arrsize; element++)
                        {
-                           str = quote_postgres(PGTYPEStimestamp_to_asc(*(Timestamp *)((var + var->offset * element)->value)), stmt->lineno);
-                           slen = strlen (str);
-                           
+                           str = quote_postgres(PGTYPEStimestamp_to_asc(*(Timestamp *) ((var + var->offset * element)->value)), stmt->lineno);
+                           slen = strlen(str);
+
                            if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [], timestamp "), stmt->lineno)))
                                return false;
-                           
+
                            if (!element)
                                strcpy(mallocedval, "array [");
-                           
+
                            strcpy(mallocedval + strlen(mallocedval), "timestamp ");
-                           strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+                           strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                            strcpy(mallocedval + strlen(mallocedval), ",");
                        }
                        strcpy(mallocedval + strlen(mallocedval) - 1, "]");
                    }
                    else
                    {
-                       str = quote_postgres(PGTYPEStimestamp_to_asc(*(Timestamp *)(var->value)), stmt->lineno);
-                       slen = strlen (str);
-                   
+                       str = quote_postgres(PGTYPEStimestamp_to_asc(*(Timestamp *) (var->value)), stmt->lineno);
+                       slen = strlen(str);
+
                        if (!(mallocedval = ECPGalloc(slen + sizeof("timestamp") + 1, stmt->lineno)))
                            return false;
 
                        strcpy(mallocedval, "timestamp ");
                        /* also copy trailing '\0' */
-                       strncpy(mallocedval + strlen(mallocedval), str , slen + 1);
+                       strncpy(mallocedval + strlen(mallocedval), str, slen + 1);
                    }
-                   
+
                    *tobeinserted_p = mallocedval;
                    *malloced_p = true;
                    free(str);
                }
                break;
-               
+
            default:
                /* Not implemented yet */
                ECPGraise(stmt->lineno, ECPG_UNSUPPORTED, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, (char *) ECPGtype_name(var->type));
@@ -1219,10 +1225,10 @@ ECPGexecute(struct statement * stmt)
                sqlca->sqlerrd[2] = atol(PQcmdTuples(results));
                ECPGlog("ECPGexecute line %d Ok: %s\n", stmt->lineno, cmdstat);
                if (stmt->compat != ECPG_COMPAT_INFORMIX_SE &&
-                       !sqlca->sqlerrd[2] &&
-                           ( !strncmp(cmdstat, "UPDATE", 6)
-                             || !strncmp(cmdstat, "INSERT", 6)
-                             || !strncmp(cmdstat, "DELETE", 6)))
+                   !sqlca->sqlerrd[2] &&
+                   (!strncmp(cmdstat, "UPDATE", 6)
+                    || !strncmp(cmdstat, "INSERT", 6)
+                    || !strncmp(cmdstat, "DELETE", 6)))
                    ECPGraise(stmt->lineno, ECPG_NOT_FOUND, ECPG_SQLSTATE_NO_DATA, NULL);
                break;
            case PGRES_NONFATAL_ERROR:
@@ -1326,4 +1332,3 @@ ECPGdo_descriptor(int line, const char *connection,
                  ECPGt_descriptor, descriptor, 0L, 0L, 0L,
                  ECPGt_NO_INDICATOR, NULL, 0L, 0L, 0L, ECPGt_EORT);
 }
-
index d98f158bacc0cb52473940c8ddd0b0a6a4ac78c9..3976d5b24dbf3c050424ce702e671b408063e01e 100644 (file)
@@ -5,7 +5,11 @@
 #include "libpq-fe.h"
 #include "sqlca.h"
 
-enum COMPAT_MODE { ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE};
+enum COMPAT_MODE
+{
+   ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE
+};
+
 #define INFORMIX_MODE(X) ((X) == ECPG_COMPAT_INFORMIX || (X) == ECPG_COMPAT_INFORMIX_SE)
 
 /* Here are some methods used by the lib. */
@@ -51,7 +55,7 @@ struct statement
    char       *command;
    struct connection *connection;
    enum COMPAT_MODE compat;
-   bool force_indicator;
+   bool        force_indicator;
    struct variable *inlist;
    struct variable *outlist;
 };
@@ -109,7 +113,7 @@ bool ECPGstore_result(const PGresult *results, int act_field,
 #define ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION  "08001"
 #define ECPG_SQLSTATE_CONNECTION_DOES_NOT_EXIST        "08003"
 #define ECPG_SQLSTATE_TRANSACTION_RESOLUTION_UNKNOWN   "08007"
-#define ECPG_SQLSTATE_CARDINALITY_VIOLATION    "21000"
+#define ECPG_SQLSTATE_CARDINALITY_VIOLATION "21000"
 #define ECPG_SQLSTATE_NULL_VALUE_NO_INDICATOR_PARAMETER "22002"
 #define ECPG_SQLSTATE_ACTIVE_SQL_TRANSACTION       "25001"
 #define ECPG_SQLSTATE_NO_ACTIVE_SQL_TRANSACTION        "25P01"
@@ -124,4 +128,4 @@ bool ECPGstore_result(const PGresult *results, int act_field,
 #define ECPG_SQLSTATE_ECPG_INTERNAL_ERROR  "YE000"
 #define ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY   "YE001"
 
-#endif /* _ECPG_LIB_EXTERN_H */
+#endif   /* _ECPG_LIB_EXTERN_H */
index f42b8f721e79a70b3d96fe862bd511a34b1ab2ff..e87643d8df59ba90ee0f0451d26c69ec172f7c73 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.12 2003/08/01 13:53:36 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/misc.c,v 1.13 2003/08/04 00:43:32 momjian Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -23,7 +23,7 @@
 #define LONG_LONG_MIN LLONG_MIN
 #endif
 #endif
-                                                 
+
 static struct sqlca_t sqlca_init =
 {
    {
@@ -52,8 +52,9 @@ static struct sqlca_t sqlca_init =
 };
 
 #ifdef USE_THREADS
-static pthread_key_t   sqlca_key;
-static pthread_once_t  sqlca_key_once = PTHREAD_ONCE_INIT;
+static pthread_key_t sqlca_key;
+static pthread_once_t sqlca_key_once = PTHREAD_ONCE_INIT;
+
 #else
 static struct sqlca_t sqlca =
 {
@@ -84,22 +85,23 @@ static struct sqlca_t sqlca =
 #endif
 
 #ifdef USE_THREADS
-static pthread_mutex_t debug_mutex    = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t debug_init_mutex    = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t debug_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t debug_init_mutex = PTHREAD_MUTEX_INITIALIZER;
 #endif
-static int simple_debug = 0;
+static int simple_debug = 0;
 static FILE *debugstream = NULL;
 
 void
-ECPGinit_sqlca(struct sqlca_t *sqlca)
+ECPGinit_sqlca(struct sqlca_t * sqlca)
 {
-   memcpy((char *)sqlca, (char *)&sqlca_init, sizeof(struct sqlca_t));
+   memcpy((char *) sqlca, (char *) &sqlca_init, sizeof(struct sqlca_t));
 }
 
 bool
 ECPGinit(const struct connection * con, const char *connection_name, const int lineno)
 {
    struct sqlca_t *sqlca = ECPGget_sqlca();
+
    ECPGinit_sqlca(sqlca);
    if (con == NULL)
    {
@@ -115,7 +117,7 @@ ECPGinit(const struct connection * con, const char *connection_name, const int l
 static void
 ecpg_sqlca_key_init(void)
 {
-  pthread_key_create(&sqlca_key, NULL);
+   pthread_key_create(&sqlca_key, NULL);
 }
 #endif
 
@@ -123,20 +125,20 @@ struct sqlca_t *
 ECPGget_sqlca(void)
 {
 #ifdef USE_THREADS
-  struct sqlca_t *sqlca;
-
-  pthread_once(&sqlca_key_once, ecpg_sqlca_key_init);
-
-  sqlca = pthread_getspecific(sqlca_key);
-  if( sqlca == NULL )
-    {
-      sqlca = malloc(sizeof(struct sqlca_t));
-      ECPGinit_sqlca(sqlca);
-      pthread_setspecific(sqlca_key, sqlca);
-    }
-  return( sqlca );
+   struct sqlca_t *sqlca;
+
+   pthread_once(&sqlca_key_once, ecpg_sqlca_key_init);
+
+   sqlca = pthread_getspecific(sqlca_key);
+   if (sqlca == NULL)
+   {
+       sqlca = malloc(sizeof(struct sqlca_t));
+       ECPGinit_sqlca(sqlca);
+       pthread_setspecific(sqlca_key, sqlca);
+   }
+   return (sqlca);
 #else
-  return( &sqlca );
+   return (&sqlca);
 #endif
 }
 
@@ -227,16 +229,17 @@ ECPGlog(const char *format,...)
    pthread_mutex_lock(&debug_mutex);
 #endif
 
-   if( simple_debug )
+   if (simple_debug)
    {
-       char *f = (char *)malloc(strlen(format) + 100);
-       if( f == NULL )
-         {
+       char       *f = (char *) malloc(strlen(format) + 100);
+
+       if (f == NULL)
+       {
 #ifdef USE_THREADS
            pthread_mutex_unlock(&debug_mutex);
 #endif
            return;
-         }
+       }
 
        sprintf(f, "[%d]: %s", (int) getpid(), format);
 
@@ -258,7 +261,7 @@ ECPGset_informix_null(enum ECPGttype type, void *ptr)
 {
    switch (type)
    {
-       case ECPGt_char: 
+       case ECPGt_char:
        case ECPGt_unsigned_char:
            *((char *) ptr) = 0x00;
            break;
@@ -307,10 +310,12 @@ ECPGset_informix_null(enum ECPGttype type, void *ptr)
    }
 }
 
-static bool _check(unsigned char *ptr, int length)
+static bool
+_check(unsigned char *ptr, int length)
 {
-   for (;ptr[--length] == 0xff && length >= 0; length --);
-   if (length < 0) return true;
+   for (; ptr[--length] == 0xff && length >= 0; length--);
+   if (length < 0)
+       return true;
    return false;
 }
 
@@ -319,49 +324,57 @@ ECPGis_informix_null(enum ECPGttype type, void *ptr)
 {
    switch (type)
    {
-       case ECPGt_char: 
+       case ECPGt_char:
        case ECPGt_unsigned_char:
-           if (*((char *)ptr) == 0x00) return true;
+           if (*((char *) ptr) == 0x00)
+               return true;
            break;
        case ECPGt_short:
        case ECPGt_unsigned_short:
-           if (*((short int *) ptr) == SHRT_MIN) return true;
+           if (*((short int *) ptr) == SHRT_MIN)
+               return true;
            break;
        case ECPGt_int:
        case ECPGt_unsigned_int:
-           if (*((int *) ptr) == INT_MIN) return true;
+           if (*((int *) ptr) == INT_MIN)
+               return true;
            break;
        case ECPGt_long:
        case ECPGt_unsigned_long:
        case ECPGt_date:
-           if (*((long *) ptr) == LONG_MIN) return true;
+           if (*((long *) ptr) == LONG_MIN)
+               return true;
            break;
 #ifdef HAVE_LONG_LONG_INT_64
        case ECPGt_long_long:
        case ECPGt_unsigned_long_long:
-           if (*((long long *) ptr) == LONG_LONG_MIN) return true;
+           if (*((long long *) ptr) == LONG_LONG_MIN)
+               return true;
            break;
 #endif   /* HAVE_LONG_LONG_INT_64 */
        case ECPGt_float:
-           return(_check(ptr, sizeof(float)));
+           return (_check(ptr, sizeof(float)));
            break;
        case ECPGt_double:
-           return(_check(ptr, sizeof(double)));
+           return (_check(ptr, sizeof(double)));
            break;
        case ECPGt_varchar:
-           if (*(((struct ECPGgeneric_varchar *) ptr)->arr) == 0x00) return true;
+           if (*(((struct ECPGgeneric_varchar *) ptr)->arr) == 0x00)
+               return true;
            break;
        case ECPGt_decimal:
-           if (((Decimal *) ptr)->sign == NUMERIC_NAN) return true;
+           if (((Decimal *) ptr)->sign == NUMERIC_NAN)
+               return true;
            break;
        case ECPGt_numeric:
-           if (((Numeric *) ptr)->sign == NUMERIC_NAN) return true;
+           if (((Numeric *) ptr)->sign == NUMERIC_NAN)
+               return true;
            break;
        case ECPGt_interval:
-           return(_check(ptr, sizeof(Interval)));
+           return (_check(ptr, sizeof(Interval)));
            break;
        case ECPGt_timestamp:
-           return(_check(ptr, sizeof(Timestamp)));
+           return (_check(ptr, sizeof(Timestamp)));
            break;
        default:
            break;
index 5569d36da07d9d28c28f747c3de6b411adc03b3e..55f497e03ab205f309fa8b5dd7794c8ca473ccd2 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.8 2003/08/01 13:53:36 petere Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.9 2003/08/04 00:43:32 momjian Exp $ */
 
 #define POSTGRES_ECPG_INTERNAL
 #include "postgres_fe.h"
@@ -66,7 +66,7 @@ ECPGprepare(int lineno, char *name, char *variable)
    for (this = prep_stmts; this != NULL && strcmp(this->name, name) != 0; this = this->next);
    if (this)
    {
-       bool b = ECPGdeallocate(lineno, ECPG_COMPAT_PGSQL, name);
+       bool        b = ECPGdeallocate(lineno, ECPG_COMPAT_PGSQL, name);
 
        if (!b)
            return false;
@@ -109,17 +109,19 @@ ECPGprepare(int lineno, char *name, char *variable)
 bool
 ECPGdeallocate(int lineno, int c, char *name)
 {
-   bool ret = ECPGdeallocate_one(lineno, name);
+   bool        ret = ECPGdeallocate_one(lineno, name);
    enum COMPAT_MODE compat = c;
 
    if (INFORMIX_MODE(compat))
    {
-       /* Just ignore all errors since we do not know the list of cursors we
-        * are allowed to free. We have to trust that the software. */
-           return true;
+       /*
+        * Just ignore all errors since we do not know the list of cursors
+        * we are allowed to free. We have to trust that the software.
+        */
+       return true;
    }
-   
-   if (!ret) 
+
+   if (!ret)
        ECPGraise(lineno, ECPG_INVALID_STMT, ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME, name);
 
    return ret;
@@ -156,7 +158,7 @@ ECPGdeallocate_all(int lineno)
    /* deallocate all prepared statements */
    while (prep_stmts != NULL)
    {
-       bool    b = ECPGdeallocate(lineno, ECPG_COMPAT_PGSQL, prep_stmts->name);
+       bool        b = ECPGdeallocate(lineno, ECPG_COMPAT_PGSQL, prep_stmts->name);
 
        if (!b)
            return false;
index da16faa48555879f74aa0b1ea5aadee00e669dab..ed8f31dfc8a7757c219c90306f2d8e75415e1f07 100644 (file)
@@ -3,16 +3,16 @@
 
 #ifndef dtime_t
 #define dtime_t Timestamp
-#endif /* dtime_t */
+#endif   /* dtime_t */
 
 #ifndef intrvl_t
 #define intrvl_t Interval
-#endif /* intrvl_t */
+#endif   /* intrvl_t */
 
-extern void dtcurrent (dtime_t *);
-extern int dtcvasc (char *, dtime_t *);
-extern int dtsub (dtime_t *, dtime_t *, intrvl_t *);
-extern int dttoasc (dtime_t *, char *);
-extern int dttofmtasc (dtime_t *, char *, int, char *);
-extern int intoasc(intrvl_t *, char *);
-extern int dtcvfmtasc(char *, char *, dtime_t *);
+extern void dtcurrent(dtime_t *);
+extern int dtcvasc(char *, dtime_t *);
+extern int dtsub(dtime_t *, dtime_t *, intrvl_t *);
+extern int dttoasc(dtime_t *, char *);
+extern int dttofmtasc(dtime_t *, char *, int, char *);
+extern int intoasc(intrvl_t *, char *);
+extern int dtcvfmtasc(char *, char *, dtime_t *);
index e0cb06bd5c8778fcc7d1e991d64b8dd14ceb0e21..c68e253e68273d29a7fef147b634434da6eb6736 100644 (file)
@@ -2,20 +2,19 @@
 
 #ifndef dec_t
 #define dec_t Decimal
-#endif /* dec_t */
-
-int decadd(dec_t *, dec_t *, dec_t *);
-int deccmp(dec_t *, dec_t *);
-void deccopy(dec_t *, dec_t *);
-int deccvasc(char *, int, dec_t *);
-int deccvdbl(double, dec_t *);
-int deccvint(int, dec_t *);
-int deccvlong(long, dec_t *);
-int decdiv(dec_t *, dec_t *, dec_t *);
-int decmul(dec_t *, dec_t *, dec_t *);
-int decsub(dec_t *, dec_t *, dec_t *);
-int dectoasc(dec_t *, char *, int, int);
-int dectodbl(dec_t *, double *);
-int dectoint(dec_t *, int *);
-int dectolong(dec_t *, long *);
+#endif   /* dec_t */
 
+int            decadd(dec_t *, dec_t *, dec_t *);
+int            deccmp(dec_t *, dec_t *);
+void       deccopy(dec_t *, dec_t *);
+int            deccvasc(char *, int, dec_t *);
+int            deccvdbl(double, dec_t *);
+int            deccvint(int, dec_t *);
+int            deccvlong(long, dec_t *);
+int            decdiv(dec_t *, dec_t *, dec_t *);
+int            decmul(dec_t *, dec_t *, dec_t *);
+int            decsub(dec_t *, dec_t *, dec_t *);
+int            dectoasc(dec_t *, char *, int, int);
+int            dectodbl(dec_t *, double *);
+int            dectoint(dec_t *, int *);
+int            dectolong(dec_t *, long *);
index 59991c70a9168e63ae3a80df4fe551753fff3360..b5c8ed4884f946c492c7df7f2a1f1eee334644ae 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * This file contains stuff needed to be as compatible to Informix as possible.
  */
 
 
 #ifndef Date
 #define Date long
-#endif /* ! Date */
+#endif   /* ! Date */
 
-extern int rdatestr (Date, char *);
-extern void rtoday (Date *);
-extern int rjulmdy (Date, short *);
-extern int rdefmtdate (Date *, char *, char *);
-extern int rfmtdate (Date, char *, char *);
-extern int rmdyjul (short *, Date *);
-extern int rstrdate (char *, Date *);
-extern int rdayofweek(Date);
+extern int rdatestr(Date, char *);
+extern void rtoday(Date *);
+extern int rjulmdy(Date, short *);
+extern int rdefmtdate(Date *, char *, char *);
+extern int rfmtdate(Date, char *, char *);
+extern int rmdyjul(short *, Date *);
+extern int rstrdate(char *, Date *);
+extern int rdayofweek(Date);
 
-extern int rfmtlong(long, char *, char *);
-extern int rgetmsg(int, char *, int);
-extern int risnull(int, char *);
-extern int rsetnull(int, char *);
-extern int rtypalign(int, int);
-extern int rtypmsize(int, int);
-extern int rtypwidth(int, int);
+extern int rfmtlong(long, char *, char *);
+extern int rgetmsg(int, char *, int);
+extern int risnull(int, char *);
+extern int rsetnull(int, char *);
+extern int rtypalign(int, int);
+extern int rtypmsize(int, int);
+extern int rtypwidth(int, int);
 extern void rupshift(char *);
 
-extern int byleng(char *, int);
+extern int byleng(char *, int);
 extern void ldchar(char *, int, char *);
 
 extern void ECPG_informix_set_var(int, void *, int);
index eb1936beb182ec84012d27382ed50df905b30d7e..7a551551541a66c560314ae23d5d096abca53d35 100644 (file)
@@ -52,8 +52,8 @@
 
 /* for compatibility we define some different error codes for the same error
  * if adding a new one make sure to not double define it */
-#define ECPG_INFORMIX_DUPLICATE_KEY    -239
-#define ECPG_INFORMIX_SUBSELECT_NOT_ONE    -284
+#define ECPG_INFORMIX_DUPLICATE_KEY -239
+#define ECPG_INFORMIX_SUBSELECT_NOT_ONE -284
 
 /* backend WARNINGs, starting at 600 */
 #define ECPG_WARNING_UNRECOGNIZED     -600
index 3f510fbfa600ec40f6351d79bc3c2b0c15a9d69e..fc429c96433c29545dc878d79d45bac7e2ca2a1c 100644 (file)
@@ -41,7 +41,7 @@ extern        "C"
 
 struct sqlca_t;
 
-void       ECPGinit_sqlca(struct sqlca_t *sqlca);
+void       ECPGinit_sqlca(struct sqlca_t * sqlca);
 void       ECPGdebug(int, FILE *);
 bool       ECPGstatus(int, const char *);
 bool       ECPGsetcommit(int, const char *, const char *);
@@ -57,7 +57,7 @@ bool      ECPGdeallocate_all(int);
 char      *ECPGprepared_statement(char *);
 
 void       ECPGlog(const char *format,...);
-char       *ECPGerrmsg(void);
+char      *ECPGerrmsg(void);
 
  /* print an error message */
 void       sqlprint(void);
@@ -79,14 +79,13 @@ bool        ECPGget_desc(int, char *, int,...);
 
 void       ECPGset_informix_null(enum ECPGttype, void *);
 bool       ECPGis_informix_null(enum ECPGttype, void *);
-bool       ECPGdescribe(int, bool, const char *, ...);
+bool       ECPGdescribe(int, bool, const char *,...);
 
 /* dynamic result allocation */
 void       ECPGfree_auto_mem(void);
 
 #ifdef __cplusplus
 }
-
 #endif
 
-#endif /* _ECPGLIB_H */
+#endif   /* _ECPGLIB_H */
index 7a299d0be89e3720aad3a2984fdd0cdd81b9c29d..3d544029b7322ac882df08c48aaac56aa2cd334e 100644 (file)
@@ -44,20 +44,22 @@ enum ECPGttype
    ECPGt_bool,
    ECPGt_float, ECPGt_double,
    ECPGt_varchar, ECPGt_varchar2,
-   ECPGt_numeric,          /* this is a decimal that stores its digits in a malloced array */
-   ECPGt_decimal,          /* this is a decimal that stores its digits in a fixed array */
+   ECPGt_numeric,              /* this is a decimal that stores its
+                                * digits in a malloced array */
+   ECPGt_decimal,              /* this is a decimal that stores its
+                                * digits in a fixed array */
    ECPGt_date,
    ECPGt_timestamp,
    ECPGt_interval,
    ECPGt_array,
    ECPGt_struct,
    ECPGt_union,
-   ECPGt_descriptor,       /* sql descriptor, no C variable */
+   ECPGt_descriptor,           /* sql descriptor, no C variable */
    ECPGt_char_variable,
-   ECPGt_const,            /* a constant is needed sometimes */
-   ECPGt_EOIT,         /* End of insert types. */
-   ECPGt_EORT,         /* End of result types. */
-   ECPGt_NO_INDICATOR      /* no indicator */
+   ECPGt_const,                /* a constant is needed sometimes */
+   ECPGt_EOIT,                 /* End of insert types. */
+   ECPGt_EORT,                 /* End of result types. */
+   ECPGt_NO_INDICATOR          /* no indicator */
 };
 
  /* descriptor items */
@@ -88,4 +90,4 @@ enum ECPGdtype
 }
 #endif
 
-#endif /* _ECPGTYPE_H */
+#endif   /* _ECPGTYPE_H */
index 190a9de703a9db687c919da77c4643e982e97223..391eeedce8c10b6f129e79b1485d8820d76213af 100644 (file)
@@ -8,10 +8,11 @@
 extern Date PGTYPESdate_from_asc(char *, char **);
 extern char *PGTYPESdate_to_asc(Date);
 extern Date PGTYPESdate_from_timestamp(Timestamp);
-extern void PGTYPESdate_julmdy(Date, int*);
-extern void PGTYPESdate_mdyjul(int*, Date *);
-extern int PGTYPESdate_dayofweek(Date);
-extern void PGTYPESdate_today (Date *);
-extern int PGTYPESdate_defmt_asc(Date *, char *, char *);
-extern int PGTYPESdate_fmt_asc(Date, char *, char *);
-#endif /* PGTYPES_DATETIME */
+extern void PGTYPESdate_julmdy(Date, int *);
+extern void PGTYPESdate_mdyjul(int *, Date *);
+extern int PGTYPESdate_dayofweek(Date);
+extern void PGTYPESdate_today(Date *);
+extern int PGTYPESdate_defmt_asc(Date *, char *, char *);
+extern int PGTYPESdate_fmt_asc(Date, char *, char *);
+
+#endif   /* PGTYPES_DATETIME */
index e5a102ca98d34db4ff1ef4206a19e0f671bb5b7e..4a1008adc333aaa23a37f038431cc7dfd97e788b 100644 (file)
@@ -1,4 +1,4 @@
-#define    PGTYPES_NUM_OVERFLOW        301
+#define PGTYPES_NUM_OVERFLOW       301
 #define PGTYPES_NUM_BAD_NUMERIC        302
 #define PGTYPES_NUM_DIVIDE_ZERO        303
 
@@ -10,7 +10,6 @@
 #define PGTYPES_DATE_BAD_MONTH     315
 
 #define PGTYPES_TS_BAD_TIMESTAMP   320
-#define    PGTYPES_TS_ERR_EINFTIME     321
+#define PGTYPES_TS_ERR_EINFTIME        321
 
 #define PGTYPES_INTVL_BAD_INTERVAL 330
-
index 884df67216ae39aa04f715da1c071caf82420765..4e1fa6e10b27ab7edababd44800fbccf5dcf5972 100644 (file)
@@ -4,15 +4,18 @@
 typedef struct
 {
 #ifdef HAVE_INT64_TIMESTAMP
-        int64           time;                   /* all time units other than months and years */
+   int64       time;           /* all time units other than months and
+                                * years */
 #else
-        double          time;                   /* all time units other than months and years */
+   double      time;           /* all time units other than months and
+                                * years */
 #endif
-        long           month;                  /* months and years, after time for alignment */
+   long        month;          /* months and years, after time for
+                                * alignment */
 } Interval;
 
 extern Interval *PGTYPESinterval_from_asc(char *, char **);
 extern char *PGTYPESinterval_to_asc(Interval *);
-extern int PGTYPESinterval_copy(Interval *, Interval *);
-   
-#endif /* PGTYPES_INTERVAL */
+extern int PGTYPESinterval_copy(Interval *, Interval *);
+
+#endif   /* PGTYPES_INTERVAL */
index 28b902f290d68f7308c8200c327370fd59654772..55d2924e59332b48c7684cd4b82ee5aecdbeea7e 100644 (file)
@@ -1,55 +1,59 @@
 #ifndef PGTYPES_NUMERIC
 #define PGTYPES_NUMERIC
 
-#define NUMERIC_POS                     0x0000
-#define NUMERIC_NEG                     0x4000
-#define NUMERIC_NAN                     0xC000
-#define NUMERIC_MAX_PRECISION           1000
-#define NUMERIC_MAX_DISPLAY_SCALE       NUMERIC_MAX_PRECISION
-#define NUMERIC_MIN_DISPLAY_SCALE       0
-#define NUMERIC_MIN_SIG_DIGITS          16
+#define NUMERIC_POS                        0x0000
+#define NUMERIC_NEG                        0x4000
+#define NUMERIC_NAN                        0xC000
+#define NUMERIC_MAX_PRECISION          1000
+#define NUMERIC_MAX_DISPLAY_SCALE      NUMERIC_MAX_PRECISION
+#define NUMERIC_MIN_DISPLAY_SCALE      0
+#define NUMERIC_MIN_SIG_DIGITS         16
 
 #define DECSIZE 30
 
 typedef unsigned char NumericDigit;
-typedef struct 
+typedef struct
 {
-       int ndigits;        /* number of digits in digits[] - can be 0! */
-       int weight;     /* weight of first digit */
-       int rscale;     /* result scale */
-       int dscale;     /* display scale */
-       int sign;       /* NUMERIC_POS, NUMERIC_NEG, or NUMERIC_NAN */
-       NumericDigit *buf;  /* start of alloc'd space for digits[] */
-       NumericDigit *digits;   /* decimal digits */
+   int         ndigits;        /* number of digits in digits[] - can be
+                                * 0! */
+   int         weight;         /* weight of first digit */
+   int         rscale;         /* result scale */
+   int         dscale;         /* display scale */
+   int         sign;           /* NUMERIC_POS, NUMERIC_NEG, or
+                                * NUMERIC_NAN */
+   NumericDigit *buf;          /* start of alloc'd space for digits[] */
+   NumericDigit *digits;       /* decimal digits */
 } Numeric;
 
-typedef struct 
+typedef struct
 {
-       int ndigits;        /* number of digits in digits[] - can be 0! */
-       int weight;     /* weight of first digit */
-       int rscale;     /* result scale */
-       int dscale;     /* display scale */
-       int sign;       /* NUMERIC_POS, NUMERIC_NEG, or NUMERIC_NAN */
-       NumericDigit digits[DECSIZE];   /* decimal digits */
-} Decimal;
+   int         ndigits;        /* number of digits in digits[] - can be
+                                * 0! */
+   int         weight;         /* weight of first digit */
+   int         rscale;         /* result scale */
+   int         dscale;         /* display scale */
+   int         sign;           /* NUMERIC_POS, NUMERIC_NEG, or
+                                * NUMERIC_NAN */
+   NumericDigit digits[DECSIZE];       /* decimal digits */
+}  Decimal;
 
-Numeric *PGTYPESnumeric_new(void);
-void PGTYPESnumeric_free(Numeric *);
-Numeric *PGTYPESnumeric_from_asc(char *, char **);
-char *PGTYPESnumeric_to_asc(Numeric *, int);
-int PGTYPESnumeric_add(Numeric *, Numeric *, Numeric *);
-int PGTYPESnumeric_sub(Numeric *, Numeric *, Numeric *);
-int PGTYPESnumeric_mul(Numeric *, Numeric *, Numeric *);
-int PGTYPESnumeric_div(Numeric *, Numeric *, Numeric *);
-int PGTYPESnumeric_cmp(Numeric *, Numeric *);
-int PGTYPESnumeric_from_int(signed int, Numeric *);
-int PGTYPESnumeric_from_long(signed long int, Numeric *);
-int PGTYPESnumeric_copy(Numeric *, Numeric *);
-int PGTYPESnumeric_from_double(double, Numeric *);
-int PGTYPESnumeric_to_double(Numeric *, double *);
-int PGTYPESnumeric_to_int(Numeric *, int *);
-int PGTYPESnumeric_to_long(Numeric *, long *);
-int PGTYPESnumeric_to_decimal(Numeric *, Decimal *);
-int PGTYPESnumeric_from_decimal(Decimal *, Numeric *);
+Numeric    *PGTYPESnumeric_new(void);
+void       PGTYPESnumeric_free(Numeric *);
+Numeric    *PGTYPESnumeric_from_asc(char *, char **);
+char      *PGTYPESnumeric_to_asc(Numeric *, int);
+int            PGTYPESnumeric_add(Numeric *, Numeric *, Numeric *);
+int            PGTYPESnumeric_sub(Numeric *, Numeric *, Numeric *);
+int            PGTYPESnumeric_mul(Numeric *, Numeric *, Numeric *);
+int            PGTYPESnumeric_div(Numeric *, Numeric *, Numeric *);
+int            PGTYPESnumeric_cmp(Numeric *, Numeric *);
+int            PGTYPESnumeric_from_int(signed int, Numeric *);
+int            PGTYPESnumeric_from_long(signed long int, Numeric *);
+int            PGTYPESnumeric_copy(Numeric *, Numeric *);
+int            PGTYPESnumeric_from_double(double, Numeric *);
+int            PGTYPESnumeric_to_double(Numeric *, double *);
+int            PGTYPESnumeric_to_int(Numeric *, int *);
+int            PGTYPESnumeric_to_long(Numeric *, long *);
+int            PGTYPESnumeric_to_decimal(Numeric *, Decimal *);
+int            PGTYPESnumeric_from_decimal(Decimal *, Numeric *);
 
-#endif /* PGTYPES_NUMERIC */
+#endif   /* PGTYPES_NUMERIC */
index 9294e1d77a06cd986afb9416a6fca134b353b0ec..f1aabcbea2bfe090c4874f71c01f2c33184cd805 100644 (file)
@@ -14,9 +14,9 @@ typedef double TimestampTz;
 
 extern Timestamp PGTYPEStimestamp_from_asc(char *, char **);
 extern char *PGTYPEStimestamp_to_asc(Timestamp);
-extern int PGTYPEStimestamp_sub (Timestamp *, Timestamp *, Interval *);
-extern int PGTYPEStimestamp_fmt_asc (Timestamp *, char *, int, char *);
-extern void PGTYPEStimestamp_current (Timestamp *);
-extern int PGTYPEStimestamp_defmt_asc(char *, char *, Timestamp *);
+extern int PGTYPEStimestamp_sub(Timestamp *, Timestamp *, Interval *);
+extern int PGTYPEStimestamp_fmt_asc(Timestamp *, char *, int, char *);
+extern void PGTYPEStimestamp_current(Timestamp *);
+extern int PGTYPEStimestamp_defmt_asc(char *, char *, Timestamp *);
 
-#endif /* PGTYPES_TIMESTAMP */
+#endif   /* PGTYPES_TIMESTAMP */
index 37370b6f60589540f27ef31e5ff76dacbd6465d6..8d58d3dfd36591c0b4a580aee18f344db0e0462f 100644 (file)
@@ -56,7 +56,7 @@ struct sqlca_t
 struct sqlca_t *ECPGget_sqlca(void);
 
 #ifndef POSTGRES_ECPG_INTERNAL
-# define sqlca (*ECPGget_sqlca())
+#define sqlca (*ECPGget_sqlca())
 #endif
 
 #ifdef __cplusplus
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b137891791fe96927ad78e64b0aad7bded08bdc 100644 (file)
@@ -0,0 +1 @@
+
index c50bf54314b10451ebf1438f219baee1613bad9c..1ebde04714e68af740d2966aae137f50e84058fe 100644 (file)
@@ -3,23 +3,23 @@
 #define CINTTYPE   ECPGt_int
 #define CLONGTYPE  ECPGt_long
 #define CFLOATTYPE ECPGt_float
-#define CDOUBLETYPE    ECPGt_double
+#define CDOUBLETYPE ECPGt_double
 #define CDECIMALTYPE   ECPGt_decimal
 #define CFIXCHARTYPE   108
-#define CSTRINGTYPE    ECPGt_char
+#define CSTRINGTYPE ECPGt_char
 #define CDATETYPE  ECPGt_date
 #define CMONEYTYPE 111
 #define CDTIMETYPE 112
-#define CLOCATORTYPE    113
-#define CVCHARTYPE ECPGt_varchar   
+#define CLOCATORTYPE   113
+#define CVCHARTYPE ECPGt_varchar
 #define CINVTYPE   115
 #define CFILETYPE  116
 #define CINT8TYPE  ECPGt_long_long
-#define CCOLLTYPE       118   
-#define CLVCHARTYPE     119
-#define CFIXBINTYPE     120
-#define CVARBINTYPE     121
-#define CBOOLTYPE       ECPGt_bool
-#define CROWTYPE        123
-#define CLVCHARPTRTYPE  124
+#define CCOLLTYPE      118
+#define CLVCHARTYPE        119
+#define CFIXBINTYPE        120
+#define CVARBINTYPE        121
+#define CBOOLTYPE      ECPGt_bool
+#define CROWTYPE       123
+#define CLVCHARPTRTYPE 124
 #define CTYPEMAX   25
index f9762c8ae34e066293a66839282702262f6c5f0b..986d8fc3f00178b47222f2e386c11baa1992d3e8 100644 (file)
@@ -5,7 +5,7 @@
 char *
 pgtypes_alloc(long size)
 {
-   char *new = (char *) calloc(1L, size);
+   char       *new = (char *) calloc(1L, size);
 
    if (!new)
    {
@@ -20,7 +20,7 @@ pgtypes_alloc(long size)
 char *
 pgtypes_strdup(char *str)
 {
-   char *new = (char *) strdup(str);
+   char       *new = (char *) strdup(str);
 
    if (!new)
        errno = ENOMEM;
@@ -28,40 +28,47 @@ pgtypes_strdup(char *str)
 }
 
 int
-pgtypes_fmt_replace(union un_fmt_comb replace_val, int replace_type, char** output, int *pstr_len) {
-   /* general purpose variable, set to 0 in order to fix compiler
-    * warning */
-   int i = 0;
-   switch(replace_type) {
+pgtypes_fmt_replace(union un_fmt_comb replace_val, int replace_type, char **output, int *pstr_len)
+{
+   /*
+    * general purpose variable, set to 0 in order to fix compiler warning
+    */
+   int         i = 0;
+
+   switch (replace_type)
+   {
        case PGTYPES_TYPE_NOTHING:
            break;
        case PGTYPES_TYPE_STRING_CONSTANT:
        case PGTYPES_TYPE_STRING_MALLOCED:
            i = strlen(replace_val.str_val);
-           if (i + 1 <= *pstr_len) {
-               /* copy over i + 1 bytes, that includes the
-                * tailing terminator */
+           if (i + 1 <= *pstr_len)
+           {
+               /*
+                * copy over i + 1 bytes, that includes the tailing
+                * terminator
+                */
                strncpy(*output, replace_val.str_val, i + 1);
                *pstr_len -= i;
                *output += i;
-               if (replace_type == PGTYPES_TYPE_STRING_MALLOCED) {
+               if (replace_type == PGTYPES_TYPE_STRING_MALLOCED)
                    free(replace_val.str_val);
-               }
                return 0;
-           } else {
-               return -1;
            }
+           else
+               return -1;
            break;
        case PGTYPES_TYPE_CHAR:
-           if (*pstr_len >= 2) {
+           if (*pstr_len >= 2)
+           {
                (*output)[0] = replace_val.char_val;
                (*output)[1] = '\0';
                (*pstr_len)--;
                (*output)++;
                return 0;
-           } else {
-               return -1;
            }
+           else
+               return -1;
            break;
        case PGTYPES_TYPE_DOUBLE_NF:
        case PGTYPES_TYPE_INT64:
@@ -71,53 +78,58 @@ pgtypes_fmt_replace(union un_fmt_comb replace_val, int replace_type, char** outp
        case PGTYPES_TYPE_UINT_3_LZ:
        case PGTYPES_TYPE_UINT_4_LZ:
            {
-               char* t = pgtypes_alloc(PGTYPES_FMT_NUM_MAX_DIGITS);
-               if (!t) {
+               char       *t = pgtypes_alloc(PGTYPES_FMT_NUM_MAX_DIGITS);
+
+               if (!t)
                    return ENOMEM;
-               }
-               switch (replace_type) {
+               switch (replace_type)
+               {
                    case PGTYPES_TYPE_DOUBLE_NF:
                        i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                               "%0.0g", replace_val.double_val);
+                                    "%0.0g", replace_val.double_val);
                        break;
 #ifdef HAVE_INT64
                    case PGTYPES_TYPE_INT64:
                        i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                               INT64_FORMAT, replace_val.int64_val);
+                                    INT64_FORMAT, replace_val.int64_val);
                        break;
 #endif
                    case PGTYPES_TYPE_UINT:
-                           i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                                   "%u", replace_val.uint_val);
+                       i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
+                                    "%u", replace_val.uint_val);
                        break;
                    case PGTYPES_TYPE_UINT_2_LZ:
-                           i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                                   "%02u", replace_val.uint_val);
+                       i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
+                                    "%02u", replace_val.uint_val);
                        break;
                    case PGTYPES_TYPE_UINT_2_LS:
-                           i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                                   "%2u", replace_val.uint_val);
+                       i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
+                                    "%2u", replace_val.uint_val);
                        break;
                    case PGTYPES_TYPE_UINT_3_LZ:
-                           i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                                   "%03u", replace_val.uint_val);
+                       i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
+                                    "%03u", replace_val.uint_val);
                        break;
                    case PGTYPES_TYPE_UINT_4_LZ:
-                           i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
-                                   "%04u", replace_val.uint_val);
+                       i = snprintf(t, PGTYPES_FMT_NUM_MAX_DIGITS,
+                                    "%04u", replace_val.uint_val);
                        break;
                }
 
-               if (i < 0) {
+               if (i < 0)
+               {
                    free(t);
                    return -1;
                }
                i = strlen(t);
                *pstr_len -= i;
-               /* if *pstr_len == 0, we don't have enough
-                * space for the terminator and the
-                * conversion fails */
-               if (*pstr_len <= 0) {
+
+               /*
+                * if *pstr_len == 0, we don't have enough space for the
+                * terminator and the conversion fails
+                */
+               if (*pstr_len <= 0)
+               {
                    free(t);
                    return -1;
                }
@@ -131,5 +143,3 @@ pgtypes_fmt_replace(union un_fmt_comb replace_val, int replace_type, char** outp
    }
    return 0;
 }
-
-
index 789f8400fa7d0171f3ea33b76832cd1cfd0ff1c6..34ed888b66ae32c0564d9f30c0c280da57494dde 100644 (file)
@@ -14,17 +14,17 @@ PGTYPESdate_from_timestamp(Timestamp dt)
 {
    Date        dDate;
 
-   dDate = 0; /* suppress compiler warning */
+   dDate = 0;                  /* suppress compiler warning */
 
    if (TIMESTAMP_NOT_FINITE(dt))
-       return 
+       return
 
 #ifdef HAVE_INT64_TIMESTAMP
-   /* Microseconds to days */
-   dDate = (dt / INT64CONST(86400000000));
+       /* Microseconds to days */
+           dDate = (dt / INT64CONST(86400000000));
 #else
-   /* Seconds to days */
-   dDate = (dt / 86400.0);
+       /* Seconds to days */
+           dDate = (dt / 86400.0);
 #endif
 
    return dDate;
@@ -33,7 +33,7 @@ PGTYPESdate_from_timestamp(Timestamp dt)
 Date
 PGTYPESdate_from_asc(char *str, char **endptr)
 {
-   
+
    Date        dDate;
    fsec_t      fsec;
    struct tm   tt,
@@ -44,9 +44,9 @@ PGTYPESdate_from_asc(char *str, char **endptr)
    char       *field[MAXDATEFIELDS];
    int         ftype[MAXDATEFIELDS];
    char        lowstr[MAXDATELEN + 1];
-   char        *realptr;
-   char **ptr = (endptr != NULL) ? endptr : &realptr;
-   
+   char       *realptr;
+   char      **ptr = (endptr != NULL) ? endptr : &realptr;
+
    bool        EuroDates = FALSE;
 
    errno = 0;
@@ -57,7 +57,7 @@ PGTYPESdate_from_asc(char *str, char **endptr)
    }
 
    if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf, ptr) != 0)
-    || (DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp, EuroDates) != 0))
+       || (DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tzp, EuroDates) != 0))
    {
        errno = PGTYPES_DATE_BAD_DATE;
        return 0;
@@ -69,7 +69,7 @@ PGTYPESdate_from_asc(char *str, char **endptr)
            break;
 
        case DTK_EPOCH:
-           GetEpochTime(tm); 
+           GetEpochTime(tm);
            break;
 
        default:
@@ -85,21 +85,24 @@ PGTYPESdate_from_asc(char *str, char **endptr)
 char *
 PGTYPESdate_to_asc(Date dDate)
 {
-   struct tm       tt, *tm = &tt;
-   char            buf[MAXDATELEN + 1];
-   int DateStyle=1;
+   struct tm   tt,
+              *tm = &tt;
+   char        buf[MAXDATELEN + 1];
+   int         DateStyle = 1;
    bool        EuroDates = FALSE;
-                          
+
    j2date((dDate + date2j(2000, 1, 1)), &(tm->tm_year), &(tm->tm_mon), &(tm->tm_mday));
    EncodeDateOnly(tm, DateStyle, buf, EuroDates);
    return pgtypes_strdup(buf);
 }
 
 void
-PGTYPESdate_julmdy(Date jd, intmdy)
+PGTYPESdate_julmdy(Date jd, int *mdy)
 {
-   int y, m, d;
-   
+   int         y,
+               m,
+               d;
+
    j2date((int) (jd + date2j(2000, 1, 1)), &y, &m, &d);
    mdy[0] = m;
    mdy[1] = d;
@@ -107,10 +110,10 @@ PGTYPESdate_julmdy(Date jd, int* mdy)
 }
 
 void
-PGTYPESdate_mdyjul(int* mdy, Date *jdate)
+PGTYPESdate_mdyjul(int *mdy, Date * jdate)
 {
    /* month is mdy[0] */
-   /* day   is mdy[1] */
+   /* day   is mdy[1] */
    /* year  is mdy[2] */
 
    *jdate = (Date) (date2j(mdy[2], mdy[0], mdy[1]) - date2j(2000, 1, 1));
@@ -120,19 +123,14 @@ int
 PGTYPESdate_dayofweek(Date dDate)
 {
    /*
-        Sunday:      0
-        Monday:      1
-        Tuesday:     2
-        Wednesday:   3
-        Thursday:    4
-        Friday:      5
-        Saturday:    6
-   */
-   return 6-j2day(dDate+3);
+    * Sunday:      0 Monday:      1 Tuesday:     2 Wednesday:   3
+    * Thursday:    4 Friday:      5 Saturday:    6
+    */
+   return 6 - j2day(dDate + 3);
 }
 
 void
-PGTYPESdate_today (Date *d)
+PGTYPESdate_today(Date * d)
 {
    struct tm   ts;
 
@@ -141,40 +139,60 @@ PGTYPESdate_today (Date *d)
    return;
 }
 
-#define PGTYPES_DATE_NUM_MAX_DIGITS        20 /* should suffice for most years... */
+#define PGTYPES_DATE_NUM_MAX_DIGITS        20      /* should suffice for most
+                                                * years... */
 
-#define PGTYPES_FMTDATE_DAY_DIGITS_LZ      1  /* LZ means "leading zeroes" */
+#define PGTYPES_FMTDATE_DAY_DIGITS_LZ      1   /* LZ means "leading
+                                                * zeroes" */
 #define PGTYPES_FMTDATE_DOW_LITERAL_SHORT  2
 #define PGTYPES_FMTDATE_MONTH_DIGITS_LZ        3
-#define PGTYPES_FMTDATE_MONTH_LITERAL_SHORT    4
+#define PGTYPES_FMTDATE_MONTH_LITERAL_SHORT 4
 #define PGTYPES_FMTDATE_YEAR_DIGITS_SHORT  5
 #define PGTYPES_FMTDATE_YEAR_DIGITS_LONG   6
 
 int
-PGTYPESdate_fmt_asc(Date dDate, char* fmtstring, char* outbuf) {
-   static struct {
-       char* format;
-       int component;
-   } mapping[] = {
-       /* format items have to be sorted according to their length,
-        * since the first pattern that matches gets replaced by its
-        * value */
-            {"ddd",  PGTYPES_FMTDATE_DOW_LITERAL_SHORT   },
-            {"dd",   PGTYPES_FMTDATE_DAY_DIGITS_LZ       },
-            {"mmm",  PGTYPES_FMTDATE_MONTH_LITERAL_SHORT },
-            {"mm",   PGTYPES_FMTDATE_MONTH_DIGITS_LZ     },
-            {"yyyy", PGTYPES_FMTDATE_YEAR_DIGITS_LONG    },
-            {"yy",   PGTYPES_FMTDATE_YEAR_DIGITS_SHORT   },
-            { NULL, 0 }
+PGTYPESdate_fmt_asc(Date dDate, char *fmtstring, char *outbuf)
+{
+   static struct
+   {
+       char       *format;
+       int         component;
+   }           mapping[] =
+   {
+       /*
+        * format items have to be sorted according to their length, since
+        * the first pattern that matches gets replaced by its value
+        */
+       {
+           "ddd", PGTYPES_FMTDATE_DOW_LITERAL_SHORT
+       },
+       {
+           "dd", PGTYPES_FMTDATE_DAY_DIGITS_LZ
+       },
+       {
+           "mmm", PGTYPES_FMTDATE_MONTH_LITERAL_SHORT
+       },
+       {
+           "mm", PGTYPES_FMTDATE_MONTH_DIGITS_LZ
+       },
+       {
+           "yyyy", PGTYPES_FMTDATE_YEAR_DIGITS_LONG
+       },
+       {
+           "yy", PGTYPES_FMTDATE_YEAR_DIGITS_SHORT
+       },
+       {
+           NULL, 0
+       }
    };
 
    union un_fmt_comb replace_val;
-   int replace_type;
+   int         replace_type;
 
-   int i;
-   int dow;
-   charstart_pattern;
-   struct tm tm;
+   int         i;
+   int         dow;
+   char       *start_pattern;
+   struct tm   tm;
 
    /* XXX error handling ? */
    /* copy the string over */
@@ -184,9 +202,12 @@ PGTYPESdate_fmt_asc(Date dDate, char* fmtstring, char* outbuf) {
    j2date((dDate + date2j(2000, 1, 1)), &(tm.tm_year), &(tm.tm_mon), &(tm.tm_mday));
    dow = PGTYPESdate_dayofweek(dDate);
 
-   for (i = 0; mapping[i].format != NULL; i++) {
-       while ((start_pattern = strstr(outbuf, mapping[i].format)) != NULL) {
-           switch(mapping[i].component) {
+   for (i = 0; mapping[i].format != NULL; i++)
+   {
+       while ((start_pattern = strstr(outbuf, mapping[i].format)) != NULL)
+       {
+           switch (mapping[i].component)
+           {
                case PGTYPES_FMTDATE_DOW_LITERAL_SHORT:
                    replace_val.str_val = pgtypes_date_weekdays_short[dow];
                    replace_type = PGTYPES_TYPE_STRING_CONSTANT;
@@ -196,7 +217,7 @@ PGTYPESdate_fmt_asc(Date dDate, char* fmtstring, char* outbuf) {
                    replace_type = PGTYPES_TYPE_UINT_2_LZ;
                    break;
                case PGTYPES_FMTDATE_MONTH_LITERAL_SHORT:
-                   replace_val.str_val = months[tm.tm_mon-1];
+                   replace_val.str_val = months[tm.tm_mon - 1];
                    replace_type = PGTYPES_TYPE_STRING_CONSTANT;
                    break;
                case PGTYPES_FMTDATE_MONTH_DIGITS_LZ:
@@ -212,61 +233,65 @@ PGTYPESdate_fmt_asc(Date dDate, char* fmtstring, char* outbuf) {
                    replace_type = PGTYPES_TYPE_UINT_2_LZ;
                    break;
                default:
-                   /* should not happen, set something
-                    * anyway */
+
+                   /*
+                    * should not happen, set something anyway
+                    */
                    replace_val.str_val = " ";
                    replace_type = PGTYPES_TYPE_STRING_CONSTANT;
            }
-           switch(replace_type) {
+           switch (replace_type)
+           {
                case PGTYPES_TYPE_STRING_MALLOCED:
                case PGTYPES_TYPE_STRING_CONSTANT:
                    strncpy(start_pattern, replace_val.str_val,
                            strlen(replace_val.str_val));
-                   if (replace_type == PGTYPES_TYPE_STRING_MALLOCED) {
+                   if (replace_type == PGTYPES_TYPE_STRING_MALLOCED)
                        free(replace_val.str_val);
-                   }
                    break;
                case PGTYPES_TYPE_UINT:
                    {
-                       char* t = pgtypes_alloc(PGTYPES_DATE_NUM_MAX_DIGITS);
-                       if (!t) {
+                       char       *t = pgtypes_alloc(PGTYPES_DATE_NUM_MAX_DIGITS);
+
+                       if (!t)
                            return -1;
-                       }
                        snprintf(t, PGTYPES_DATE_NUM_MAX_DIGITS,
-                               "%u", replace_val.uint_val);
+                                "%u", replace_val.uint_val);
                        strncpy(start_pattern, t, strlen(t));
                        free(t);
                    }
                    break;
                case PGTYPES_TYPE_UINT_2_LZ:
                    {
-                       char* t = pgtypes_alloc(PGTYPES_DATE_NUM_MAX_DIGITS);
-                       if (!t) {
+                       char       *t = pgtypes_alloc(PGTYPES_DATE_NUM_MAX_DIGITS);
+
+                       if (!t)
                            return -1;
-                       }
                        snprintf(t, PGTYPES_DATE_NUM_MAX_DIGITS,
-                               "%02u", replace_val.uint_val);
+                                "%02u", replace_val.uint_val);
                        strncpy(start_pattern, t, strlen(t));
                        free(t);
                    }
                    break;
                case PGTYPES_TYPE_UINT_4_LZ:
                    {
-                       char* t = pgtypes_alloc(PGTYPES_DATE_NUM_MAX_DIGITS);
-                       if (!t) {
+                       char       *t = pgtypes_alloc(PGTYPES_DATE_NUM_MAX_DIGITS);
+
+                       if (!t)
                            return -1;
-                       }
                        snprintf(t, PGTYPES_DATE_NUM_MAX_DIGITS,
-                               "%04u", replace_val.uint_val);
+                                "%04u", replace_val.uint_val);
                        strncpy(start_pattern, t, strlen(t));
                        free(t);
                    }
                    break;
                default:
-                   /* doesn't happen (we set
-                    * replace_type to
-                    * PGTYPES_TYPE_STRING_CONSTANT
-                    * in case of an error above) */
+
+                   /*
+                    * doesn't happen (we set replace_type to
+                    * PGTYPES_TYPE_STRING_CONSTANT in case of an error
+                    * above)
+                    */
                    break;
            }
        }
@@ -279,32 +304,37 @@ PGTYPESdate_fmt_asc(Date dDate, char* fmtstring, char* outbuf) {
  * PGTYPESdate_defmt_asc
  *
  * function works as follows:
- *   - first we analyze the paramters
- *   - if this is a special case with no delimiters, add delimters
- *   - find the tokens. First we look for numerical values. If we have found
- *     less than 3 tokens, we check for the months' names and thereafter for
- *     the abbreviations of the months' names.
- *   - then we see which parameter should be the date, the month and the
- *     year and from these values we calculate the date
+ *  - first we analyze the paramters
+ *  - if this is a special case with no delimiters, add delimters
+ *  - find the tokens. First we look for numerical values. If we have found
+ *    less than 3 tokens, we check for the months' names and thereafter for
+ *    the abbreviations of the months' names.
+ *  - then we see which parameter should be the date, the month and the
+ *    year and from these values we calculate the date
  */
 
-#define PGTYPES_DATE_MONTH_MAXLENGTH       20  /* probably even less  :-) */
+#define PGTYPES_DATE_MONTH_MAXLENGTH       20  /* probably even less  :-) */
 int
-PGTYPESdate_defmt_asc(Date *d, char *fmt, char *str)
+PGTYPESdate_defmt_asc(Date * d, char *fmt, char *str)
 {
-   /* token[2] = { 4,6 } means that token 2 starts at
-    * position 4 and ends at (including) position 6 */
-   int token[3][2];
-   int token_values[3] = { -1, -1, -1 };
-   char* fmt_token_order;
-   char* fmt_ystart, *fmt_mstart, *fmt_dstart;
-   int i;
-   int reading_digit;
-   int token_count;
-   char* str_copy;
-   struct tm tm;
-
-   if (!d || !str || !fmt) {
+   /*
+    * token[2] = { 4,6 } means that token 2 starts at position 4 and ends
+    * at (including) position 6
+    */
+   int         token[3][2];
+   int         token_values[3] = {-1, -1, -1};
+   char       *fmt_token_order;
+   char       *fmt_ystart,
+              *fmt_mstart,
+              *fmt_dstart;
+   int         i;
+   int         reading_digit;
+   int         token_count;
+   char       *str_copy;
+   struct tm   tm;
+
+   if (!d || !str || !fmt)
+   {
        errno = PGTYPES_DATE_ERR_EARGS;
        return -1;
    }
@@ -314,229 +344,305 @@ PGTYPESdate_defmt_asc(Date *d, char *fmt, char *str)
    fmt_mstart = strstr(fmt, "mm");
    fmt_dstart = strstr(fmt, "dd");
 
-   if (!fmt_ystart || !fmt_mstart || !fmt_dstart) {
+   if (!fmt_ystart || !fmt_mstart || !fmt_dstart)
+   {
        errno = PGTYPES_DATE_ERR_EARGS;
        return -1;
    }
 
-   if (fmt_ystart < fmt_mstart) {
+   if (fmt_ystart < fmt_mstart)
+   {
        /* y m */
-       if (fmt_dstart < fmt_ystart) {
+       if (fmt_dstart < fmt_ystart)
+       {
            /* d y m */
            fmt_token_order = "dym";
-       } else if (fmt_dstart > fmt_mstart) {
+       }
+       else if (fmt_dstart > fmt_mstart)
+       {
            /* y m d */
            fmt_token_order = "ymd";
-       } else {
+       }
+       else
+       {
            /* y d m */
            fmt_token_order = "ydm";
        }
-   } else {
+   }
+   else
+   {
        /* fmt_ystart > fmt_mstart */
        /* m y */
-       if (fmt_dstart < fmt_mstart) {
+       if (fmt_dstart < fmt_mstart)
+       {
            /* d m y */
            fmt_token_order = "dmy";
-       } else if (fmt_dstart > fmt_ystart) {
+       }
+       else if (fmt_dstart > fmt_ystart)
+       {
            /* m y d */
            fmt_token_order = "myd";
-       } else {
+       }
+       else
+       {
            /* m d y */
            fmt_token_order = "mdy";
        }
    }
 
-   /* handle the special cases where there is no delimiter between the
+   /*
+    * handle the special cases where there is no delimiter between the
     * digits. If we see this:
     *
-    * only digits, 6 or 8 bytes then it might be ddmmyy and ddmmyyyy
-    * (or similar)
+    * only digits, 6 or 8 bytes then it might be ddmmyy and ddmmyyyy (or
+    * similar)
     *
     * we reduce it to a string with delimiters and continue processing
-    * */
+    */
 
    /* check if we have only digits */
    reading_digit = 1;
-   for (i = 0; str[i]; i++) {
-       if (!isdigit(str[i])) {
+   for (i = 0; str[i]; i++)
+   {
+       if (!isdigit(str[i]))
+       {
            reading_digit = 0;
            break;
        }
    }
-   if (reading_digit) {
-       int frag_length[3];
-       int target_pos;
+   if (reading_digit)
+   {
+       int         frag_length[3];
+       int         target_pos;
 
        i = strlen(str);
-       if (i != 8 && i != 6) {
+       if (i != 8 && i != 6)
+       {
            errno = PGTYPES_DATE_ERR_ENOSHORTDATE;
            return -1;
        }
        /* okay, this really is the special case */
 
-       /* as long as the string, one additional byte for the
-        * terminator and 2 for the delimiters between the 3 fiedls
-        * */
+       /*
+        * as long as the string, one additional byte for the terminator
+        * and 2 for the delimiters between the 3 fiedls
+        */
        str_copy = pgtypes_alloc(strlen(str) + 1 + 2);
-       if (!str_copy) {
+       if (!str_copy)
            return -1;
-       }
 
        /* determine length of the fragments */
-       if (i == 6) {
-           frag_length[0] = 2; frag_length[1] = 2; frag_length[2] = 2;
-       } else {
-           if (fmt_token_order[0] == 'y') {
-               frag_length[0] = 4; frag_length[1] = 2; frag_length[2] = 2;
-           } else if (fmt_token_order[1] == 'y') {
-               frag_length[0] = 2; frag_length[1] = 4; frag_length[2] = 2;
-           } else {
-               frag_length[0] = 2; frag_length[1] = 2; frag_length[2] = 4;
+       if (i == 6)
+       {
+           frag_length[0] = 2;
+           frag_length[1] = 2;
+           frag_length[2] = 2;
+       }
+       else
+       {
+           if (fmt_token_order[0] == 'y')
+           {
+               frag_length[0] = 4;
+               frag_length[1] = 2;
+               frag_length[2] = 2;
+           }
+           else if (fmt_token_order[1] == 'y')
+           {
+               frag_length[0] = 2;
+               frag_length[1] = 4;
+               frag_length[2] = 2;
+           }
+           else
+           {
+               frag_length[0] = 2;
+               frag_length[1] = 2;
+               frag_length[2] = 4;
            }
        }
        target_pos = 0;
-       /* XXX: Here we could calculate the positions of the tokens
-        * and save the for loop down there where we again check
-        * with isdigit() for digits. */
-       for (i = 0; i < 3; i++) {
-           int start_pos = 0;
-           if (i >= 1) { start_pos += frag_length[0]; }
-           if (i == 2) { start_pos += frag_length[1]; }
+
+       /*
+        * XXX: Here we could calculate the positions of the tokens and
+        * save the for loop down there where we again check with
+        * isdigit() for digits.
+        */
+       for (i = 0; i < 3; i++)
+       {
+           int         start_pos = 0;
+
+           if (i >= 1)
+               start_pos += frag_length[0];
+           if (i == 2)
+               start_pos += frag_length[1];
 
            strncpy(str_copy + target_pos, str + start_pos,
-                       frag_length[i]);
+                   frag_length[i]);
            target_pos += frag_length[i];
-           if (i != 2) {
+           if (i != 2)
+           {
                str_copy[target_pos] = ' ';
                target_pos++;
            }
        }
        str_copy[target_pos] = '\0';
-   } else {
+   }
+   else
+   {
        str_copy = pgtypes_strdup(str);
-       if (!str_copy) {
+       if (!str_copy)
            return -1;
-       }
 
        /* convert the whole string to lower case */
-       for (i = 0; str_copy[i]; i++) {
+       for (i = 0; str_copy[i]; i++)
            str_copy[i] = (char) tolower(str_copy[i]);
-       }
    }
 
    /* look for numerical tokens */
    reading_digit = 0;
-   token_count   = 0;
-   for (i = 0; i < strlen(str_copy); i++) {
-       if (!isdigit(str_copy[i]) && reading_digit) {
+   token_count = 0;
+   for (i = 0; i < strlen(str_copy); i++)
+   {
+       if (!isdigit(str_copy[i]) && reading_digit)
+       {
            /* the token is finished */
-           token[token_count][1] = i-1;
+           token[token_count][1] = i - 1;
            reading_digit = 0;
            token_count++;
-       } else if (isdigit(str_copy[i]) && !reading_digit) {
+       }
+       else if (isdigit(str_copy[i]) && !reading_digit)
+       {
            /* we have found a token */
            token[token_count][0] = i;
            reading_digit = 1;
        }
    }
-   /* we're at the end of the input string, but maybe we are still reading a
-    * number... */
-   if (reading_digit) {
-       token[token_count][1] = i-1;
+
+   /*
+    * we're at the end of the input string, but maybe we are still
+    * reading a number...
+    */
+   if (reading_digit)
+   {
+       token[token_count][1] = i - 1;
        token_count++;
    }
 
 
-   if (token_count < 2) {
-       /* not all tokens found, no way to find 2 missing tokens
-        * with string matches */
+   if (token_count < 2)
+   {
+       /*
+        * not all tokens found, no way to find 2 missing tokens with
+        * string matches
+        */
        free(str_copy);
        errno = PGTYPES_DATE_ERR_ENOTDMY;
        return -1;
    }
 
-   if (token_count != 3) {
-       /* not all tokens found but we may find another one with
-        * string matches by testing for the months names and months
-        * abbreviations */
-       char *month_lower_tmp = pgtypes_alloc(PGTYPES_DATE_MONTH_MAXLENGTH);
-       char *start_pos;
-       int j;
-       int offset;
-       int found = 0;
-       char** list;
-
-       if (!month_lower_tmp) {
+   if (token_count != 3)
+   {
+       /*
+        * not all tokens found but we may find another one with string
+        * matches by testing for the months names and months
+        * abbreviations
+        */
+       char       *month_lower_tmp = pgtypes_alloc(PGTYPES_DATE_MONTH_MAXLENGTH);
+       char       *start_pos;
+       int         j;
+       int         offset;
+       int         found = 0;
+       char      **list;
+
+       if (!month_lower_tmp)
+       {
            /* free variables we alloc'ed before */
            free(str_copy);
            return -1;
        }
        list = pgtypes_date_months;
-       for (i = 0; list[i]; i++) {
-           for (j = 0; j < PGTYPES_DATE_MONTH_MAXLENGTH; j++) {
+       for (i = 0; list[i]; i++)
+       {
+           for (j = 0; j < PGTYPES_DATE_MONTH_MAXLENGTH; j++)
+           {
                month_lower_tmp[j] = (char) tolower(list[i][j]);
-               if (!month_lower_tmp[j]) {
+               if (!month_lower_tmp[j])
+               {
                    /* properly terminated */
                    break;
                }
            }
-           if ((start_pos = strstr(str_copy, month_lower_tmp))) {
+           if ((start_pos = strstr(str_copy, month_lower_tmp)))
+           {
                offset = start_pos - str_copy;
-               /* sort the new token into the numeric
-                * tokens, shift them if necessary */
-               if (offset < token[0][0]) {
+
+               /*
+                * sort the new token into the numeric tokens, shift them
+                * if necessary
+                */
+               if (offset < token[0][0])
+               {
                    token[2][0] = token[1][0];
                    token[2][1] = token[1][1];
                    token[1][0] = token[0][0];
                    token[1][1] = token[0][1];
                    token_count = 0;
-               } else if (offset < token[1][0]) {
+               }
+               else if (offset < token[1][0])
+               {
                    token[2][0] = token[1][0];
                    token[2][1] = token[1][1];
                    token_count = 1;
-               } else {
-                   token_count = 2;
                }
+               else
+                   token_count = 2;
                token[token_count][0] = offset;
                token[token_count][1] = offset + strlen(month_lower_tmp) - 1;
-               /* the value is the index of the month in
-                * the array of months + 1 (January is month
-                * 0) */
-               token_values[token_count] = i+1;
+
+               /*
+                * the value is the index of the month in the array of
+                * months + 1 (January is month 0)
+                */
+               token_values[token_count] = i + 1;
                found = 1;
                break;
            }
-           /* evil[tm] hack:
-            * if we read the pgtypes_date_months and haven't
-            * found a match, reset list to point to
-            * pgtypes_date_months_short and reset the counter
-            * variable i */
-           if (list == pgtypes_date_months) {
-               if (list[i+1] == NULL) {
+
+           /*
+            * evil[tm] hack: if we read the pgtypes_date_months and
+            * haven't found a match, reset list to point to
+            * pgtypes_date_months_short and reset the counter variable i
+            */
+           if (list == pgtypes_date_months)
+           {
+               if (list[i + 1] == NULL)
+               {
                    list = months;
                    i = -1;
                }
            }
        }
-       if (!found) {
+       if (!found)
+       {
            free(month_lower_tmp);
            free(str_copy);
            errno = PGTYPES_DATE_ERR_ENOTDMY;
            return -1;
        }
 
-       /* here we found a month. token[token_count] and
+       /*
+        * here we found a month. token[token_count] and
         * token_values[token_count] reflect the month's details.
         *
         * only the month can be specified with a literal. Here we can do a
         * quick check if the month is at the right position according to
-        * the format string because we can check if the token that
-        * we expect to be the month is at the position of the only
-        * token that already has a value. If we wouldn't check here
-        * we could say "December 4 1990" with a fmt string of
-        * "dd mm yy" for 12 April 1990.
+        * the format string because we can check if the token that we
+        * expect to be the month is at the position of the only token
+        * that already has a value. If we wouldn't check here we could
+        * say "December 4 1990" with a fmt string of "dd mm yy" for 12
+        * April 1990.
         */
-       if (fmt_token_order[token_count] != 'm') {
+       if (fmt_token_order[token_count] != 'm')
+       {
            /* deal with the error later on */
            token_values[token_count] = -1;
        }
@@ -544,24 +650,24 @@ PGTYPESdate_defmt_asc(Date *d, char *fmt, char *str)
    }
 
    /* terminate the tokens with ASCII-0 and get their values */
-   for (i = 0; i < 3; i++) {
+   for (i = 0; i < 3; i++)
+   {
        *(str_copy + token[i][1] + 1) = '\0';
        /* A month already has a value set, check for token_value == -1 */
-       if (token_values[i] == -1) {
+       if (token_values[i] == -1)
+       {
            errno = 0;
            token_values[i] = strtol(str_copy + token[i][0], (char **) NULL, 10);
            /* strtol sets errno in case of an error */
-           if (errno) {
+           if (errno)
                token_values[i] = -1;
-           }
        }
-       if (fmt_token_order[i] == 'd') {
+       if (fmt_token_order[i] == 'd')
            tm.tm_mday = token_values[i];
-       } else if (fmt_token_order[i] == 'm') {
+       else if (fmt_token_order[i] == 'm')
            tm.tm_mon = token_values[i];
-       } else if (fmt_token_order[i] == 'y') {
+       else if (fmt_token_order[i] == 'y')
            tm.tm_year = token_values[i];
-       }
    }
    free(str_copy);
 
@@ -577,7 +683,7 @@ PGTYPESdate_defmt_asc(Date *d, char *fmt, char *str)
        return -1;
    }
 
-   if (tm.tm_mday == 31 && (tm.tm_mon == 4 || tm.tm_mon == 6 || tm.tm_mon == 9 || tm.tm_mon ==11))
+   if (tm.tm_mday == 31 && (tm.tm_mon == 4 || tm.tm_mon == 6 || tm.tm_mon == 9 || tm.tm_mon == 11))
    {
        errno = PGTYPES_DATE_BAD_DAY;
        return -1;
index e756c9c72db8e87228eb63616b13fb320ebcae0e..ba6a38f2bd80181df982a7d193bb4953529a45c7 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <pgtypes_timestamp.h>
 
-#define MAXTZLEN             10
+#define MAXTZLEN            10
 
 #ifdef HAVE_INT64_TIMESTAMP
 
@@ -17,10 +17,10 @@ typedef double fsec_t;
 #define JROUND(j) (rint(((double) (j))*TIME_PREC_INV)/TIME_PREC_INV)
 #endif
 
-#define USE_POSTGRES_DATES              0
-#define USE_ISO_DATES                   1
-#define USE_SQL_DATES                   2
-#define USE_GERMAN_DATES                3
+#define USE_POSTGRES_DATES             0
+#define USE_ISO_DATES                  1
+#define USE_SQL_DATES                  2
+#define USE_GERMAN_DATES               3
 
 #define DAGO           "ago"
 #define EPOCH          "epoch"
@@ -49,7 +49,7 @@ typedef double fsec_t;
 #define DA_D           "ad"
 #define DB_C           "bc"
 #define DTIMEZONE      "timezone"
-#define DCURRENT           "current"
+#define DCURRENT          "current"
 
 /*
  * Fundamental time field definitions for parsing.
@@ -275,13 +275,12 @@ do { \
 #define DT_NOBEGIN     (-DBL_MAX)
 #define DT_NOEND       (DBL_MAX)
 #endif
-
 #endif   /* HAVE_INT64_TIMESTAMP */
 
-#define TIMESTAMP_NOBEGIN(j)    do {j = DT_NOBEGIN;} while (0)
-#define TIMESTAMP_NOEND(j)          do {j = DT_NOEND;} while (0)
+#define TIMESTAMP_NOBEGIN(j)   do {j = DT_NOBEGIN;} while (0)
+#define TIMESTAMP_NOEND(j)         do {j = DT_NOEND;} while (0)
 #define TIMESTAMP_IS_NOBEGIN(j) ((j) == DT_NOBEGIN)
-#define TIMESTAMP_IS_NOEND(j)   ((j) == DT_NOEND)
+#define TIMESTAMP_IS_NOEND(j)  ((j) == DT_NOEND)
 #define TIMESTAMP_NOT_FINITE(j) (TIMESTAMP_IS_NOBEGIN(j) || TIMESTAMP_IS_NOEND(j))
 
 int DecodeTimeOnly(char **field, int *ftype,
@@ -292,31 +291,30 @@ int DecodeInterval(char **field, int *ftype,
               int nf, int *dtype,
               struct tm * tm, fsec_t *fsec);
 
-int    EncodeTimeOnly(struct tm * tm, fsec_t fsec, int *tzp, int style, char *str);
-int    EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str, bool);
-int    EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str);
+int            EncodeTimeOnly(struct tm * tm, fsec_t fsec, int *tzp, int style, char *str);
+int            EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str, bool);
+int            EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str);
 
-int tm2timestamp(struct tm *, fsec_t, int *, Timestamp *);
+int            tm2timestamp(struct tm *, fsec_t, int *, Timestamp *);
 
-int    DecodeUnits(int field, char *lowtoken, int *val);
-bool   ClearDateCache(bool, bool, bool);
+int            DecodeUnits(int field, char *lowtoken, int *val);
+bool       ClearDateCache(bool, bool, bool);
 
-int    j2day(int jd);
+int            j2day(int jd);
 
-bool CheckDateTokenTables(void);
+bool       CheckDateTokenTables(void);
 
-int EncodeDateOnly(struct tm *, int, char *, bool);
-void GetEpochTime(struct tm *);
-int ParseDateTime(char *, char *, char **, int *, int, int *, char **);
-int DecodeDateTime(char **, int *, int, int *, struct tm *, fsec_t *, int *, bool);
-void j2date(int, int *, int *, int *);
-void GetCurrentDateTime(struct tm*);
-int date2j(int, int, int);
+int            EncodeDateOnly(struct tm *, int, char *, bool);
+void       GetEpochTime(struct tm *);
+int            ParseDateTime(char *, char *, char **, int *, int, int *, char **);
+int            DecodeDateTime(char **, int *, int, int *, struct tm *, fsec_t *, int *, bool);
+void       j2date(int, int *, int *, int *);
+void       GetCurrentDateTime(struct tm *);
+int            date2j(int, int, int);
 
-extern charpgtypes_date_weekdays_short[];
-extern charpgtypes_date_months[];
-extern charmonths[];
-extern chardays[];
+extern char *pgtypes_date_weekdays_short[];
+extern char *pgtypes_date_months[];
+extern char *months[];
+extern char *days[];
 
 #endif   /* DT_H */
-   
index 89f50fe9a9ab542fd00df8cb4d2074b0340db4f9..c4d28b034962230e0c9b7c5129157bba3cca7f77 100644 (file)
@@ -8,18 +8,18 @@
 #include "dt.h"
 #include "pgtypes_timestamp.h"
 
-static int day_tab[2][13] = {
-           {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0},
-       {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}};
+static int day_tab[2][13] = {
+   {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0},
+{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 0}};
 
 typedef long AbsoluteTime;
-   
-#define ABS_SIGNBIT             ((char) 0200)
-#define POS(n)                  (n)
-#define NEG(n)                  ((n)|ABS_SIGNBIT)
-#define FROMVAL(tp)             (-SIGNEDCHAR((tp)->value) * 15) /* uncompress */
-#define VALMASK                 ((char) 0177)
-#define SIGNEDCHAR(c)   ((c)&ABS_SIGNBIT? -((c)&VALMASK): (c))
+
+#define ABS_SIGNBIT                ((char) 0200)
+#define POS(n)                 (n)
+#define NEG(n)                 ((n)|ABS_SIGNBIT)
+#define FROMVAL(tp)                (-SIGNEDCHAR((tp)->value) * 15) /* uncompress */
+#define VALMASK                    ((char) 0177)
+#define SIGNEDCHAR(c)  ((c)&ABS_SIGNBIT? -((c)&VALMASK): (c))
 
 static datetkn datetktbl[] = {
 /* text, token, lexval */
@@ -497,41 +497,41 @@ static datetkn deltatktbl[] = {
 static unsigned int szdatetktbl = sizeof datetktbl / sizeof datetktbl[0];
 static unsigned int szdeltatktbl = sizeof deltatktbl / sizeof deltatktbl[0];
 
-static datetkn    *datecache[MAXDATEFIELDS] = {NULL};
+static datetkn *datecache[MAXDATEFIELDS] = {NULL};
 
-static datetkn    *deltacache[MAXDATEFIELDS] = {NULL};
+static datetkn *deltacache[MAXDATEFIELDS] = {NULL};
 
-char       *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL};
+char      *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", NULL};
 
-char       *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", NULL};
+char      *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", NULL};
 
-charpgtypes_date_weekdays_short[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", NULL};
+char      *pgtypes_date_weekdays_short[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", NULL};
 
-charpgtypes_date_months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", NULL};
+char      *pgtypes_date_months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", NULL};
 
 static datetkn *
 datebsearch(char *key, datetkn *base, unsigned int nel)
 {
-        datetkn    *last = base + nel - 1,
-                   *position;
-        int                     result;
+   datetkn    *last = base + nel - 1,
+              *position;
+   int         result;
 
    while (last >= base)
-        {
-                   position = base + ((last - base) >> 1);
-                   result = key[0] - position->token[0];
-                   if (result == 0)
-                   {
-                           result = strncmp(key, position->token, TOKMAXLEN);
-                           if (result == 0)
-                           return position;
-                   }
-                   if (result < 0)
-                     last = position - 1;
-                   else
-                      base = position + 1;
-           }
-           return NULL;
+   {
+       position = base + ((last - base) >> 1);
+       result = key[0] - position->token[0];
+       if (result == 0)
+       {
+           result = strncmp(key, position->token, TOKMAXLEN);
+           if (result == 0)
+               return position;
+       }
+       if (result < 0)
+           last = position - 1;
+       else
+           base = position + 1;
+   }
+   return NULL;
 }
 
 /* DecodeUnits()
@@ -580,7 +580,7 @@ DecodeUnits(int field, char *lowtoken, int *val)
  *
  * Rewritten to eliminate overflow problems. This now allows the
  * routines to work correctly for all Julian day counts from
- * 0 to 2147483647  (Nov 24, -4713 to Jun 3, 5874898) assuming
+ * 0 to 2147483647 (Nov 24, -4713 to Jun 3, 5874898) assuming
  * a 32-bit integer. Longer types should also work to the limits
  * of their precision.
  */
@@ -591,18 +591,21 @@ date2j(int y, int m, int d)
    int         julian;
    int         century;
 
-   if (m > 2) {
+   if (m > 2)
+   {
        m += 1;
        y += 4800;
-   } else {
+   }
+   else
+   {
        m += 13;
        y += 4799;
    }
 
-   century = y/100;
-   julian  = y*365 - 32167;
-   julian += y/4 - century + century/4;
-   julian += 7834*m/256 + d;
+   century = y / 100;
+   julian = y * 365 - 32167;
+   julian += y / 4 - century + century / 4;
+   julian += 7834 * m / 256 + d;
 
    return julian;
 }  /* date2j() */
@@ -610,25 +613,25 @@ date2j(int y, int m, int d)
 void
 j2date(int jd, int *year, int *month, int *day)
 {
-   unsigned int        julian;
-   unsigned int        quad;
-   unsigned int        extra;
+   unsigned int julian;
+   unsigned int quad;
+   unsigned int extra;
    int         y;
 
    julian = jd;
    julian += 32044;
-   quad = julian/146097;
-   extra = (julian - quad*146097)*4 + 3;
-   julian += 60 + quad*3 + extra/146097;
-   quad = julian/1461;
-   julian -= quad*1461;
+   quad = julian / 146097;
+   extra = (julian - quad * 146097) * 4 + 3;
+   julian += 60 + quad * 3 + extra / 146097;
+   quad = julian / 1461;
+   julian -= quad * 1461;
    y = julian * 4 / 1461;
    julian = ((y != 0) ? ((julian + 305) % 365) : ((julian + 306) % 366))
        + 123;
-   y += quad*4;
+   y += quad * 4;
    *year = y - 4800;
    quad = julian * 2141 / 65536;
-   *day = julian - 7834*quad/256;
+   *day = julian - 7834 * quad / 256;
    *month = (quad + 10) % 12 + 1;
 
    return;
@@ -637,13 +640,13 @@ j2date(int jd, int *year, int *month, int *day)
 int
 j2day(int date)
 {
-        unsigned int day;
+   unsigned int day;
 
-        day = date;
-        day += 1;
-        day %= 7;
-        return (int) day;
-}       /*j2day() */
+   day = date;
+   day += 1;
+   day %= 7;
+   return (int) day;
+}  /* j2day() */
 
 /* DecodeSpecial()
  * Decode text string using lookup table.
@@ -753,14 +756,14 @@ EncodeDateOnly(struct tm * tm, int style, char *str, bool EuroDates)
 static void
 TrimTrailingZeros(char *str)
 {
-    int                     len = strlen(str);
-       
-    /* chop off trailing zeros... but leave at least 2 fractional digits */
-    while ((*(str + len - 1) == '0') && (*(str + len - 3) != '.'))
-    {
-          len--;
-          *(str + len) = '\0';
-    }
+   int         len = strlen(str);
+
+   /* chop off trailing zeros... but leave at least 2 fractional digits */
+   while ((*(str + len - 1) == '0') && (*(str + len - 3) != '.'))
+   {
+       len--;
+       *(str + len) = '\0';
+   }
 }
 
 /* EncodeDateTime()
@@ -791,8 +794,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
                    tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -841,8 +844,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
                    tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -887,8 +890,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
                    tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -941,8 +944,8 @@ EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, cha
            sprintf((str + 10), " %02d:%02d", tm->tm_hour, tm->tm_min);
 
            /*
-            * Print fractional seconds if any.  The field widths here should
-            * be at least equal to MAX_TIMESTAMP_PRECISION.
+            * Print fractional seconds if any.  The field widths here
+            * should be at least equal to MAX_TIMESTAMP_PRECISION.
             *
             * In float mode, don't print fractional seconds before 1 AD,
             * since it's unlikely there's any precision left ...
@@ -1041,21 +1044,22 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
         * We have a brute force time zone per SQL99? Then use it without
         * change since we have already rotated to the time zone.
         */
-       *tzp = -tm->tm_gmtoff;      /* tm_gmtoff is Sun/DEC-ism */
+       *tzp = -tm->tm_gmtoff;  /* tm_gmtoff is Sun/DEC-ism */
+
        /*
         * XXX FreeBSD man pages indicate that this should work - tgl
         * 97/04/23
         */
        if (tzn != NULL)
        {
-               /*
-                * Copy no more than MAXTZLEN bytes of timezone to tzn, in
-                * case it contains an error message, which doesn't fit in
-                * the buffer
-                */
-               StrNCpy(*tzn, tm->tm_zone, MAXTZLEN + 1);
-               if (strlen(tm->tm_zone) > MAXTZLEN)
-                   tm->tm_isdst = -1;
+           /*
+            * Copy no more than MAXTZLEN bytes of timezone to tzn, in
+            * case it contains an error message, which doesn't fit in the
+            * buffer
+            */
+           StrNCpy(*tzn, tm->tm_zone, MAXTZLEN + 1);
+           if (strlen(tm->tm_zone) > MAXTZLEN)
+               tm->tm_isdst = -1;
        }
    }
    else
@@ -1063,19 +1067,19 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
 #elif defined(HAVE_INT_TIMEZONE)
    if (tzp != NULL)
    {
-           *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
+       *tzp = ((tm->tm_isdst > 0) ? (TIMEZONE_GLOBAL - 3600) : TIMEZONE_GLOBAL);
 
-           if (tzn != NULL)
-           {
-               /*
-                * Copy no more than MAXTZLEN bytes of timezone to tzn, in
-                * case it contains an error message, which doesn't fit in
-                * the buffer
-                */
-               StrNCpy(*tzn, tzname[tm->tm_isdst], MAXTZLEN + 1);
-               if (strlen(tzname[tm->tm_isdst]) > MAXTZLEN)
-                   tm->tm_isdst = -1;
-           }
+       if (tzn != NULL)
+       {
+           /*
+            * Copy no more than MAXTZLEN bytes of timezone to tzn, in
+            * case it contains an error message, which doesn't fit in the
+            * buffer
+            */
+           StrNCpy(*tzn, tzname[tm->tm_isdst], MAXTZLEN + 1);
+           if (strlen(tzname[tm->tm_isdst]) > MAXTZLEN)
+               tm->tm_isdst = -1;
+       }
    }
    else
        tm->tm_isdst = -1;
@@ -1245,33 +1249,33 @@ static void
 dt2time(double jd, int *hour, int *min, int *sec, fsec_t *fsec)
 {
 #ifdef HAVE_INT64_TIMESTAMP
-   int64           time;
+   int64       time;
 
 #else
-   double          time;
+   double      time;
 #endif
 
    time = jd;
 #ifdef HAVE_INT64_TIMESTAMP
-        *hour = (time / INT64CONST(3600000000));
-        time -= ((*hour) * INT64CONST(3600000000));
-        *min = (time / INT64CONST(60000000));
-        time -= ((*min) * INT64CONST(60000000));
-        *sec = (time / INT64CONST(1000000));
-        *fsec = (time - (*sec * INT64CONST(1000000)));
+   *hour = (time / INT64CONST(3600000000));
+   time -= ((*hour) * INT64CONST(3600000000));
+   *min = (time / INT64CONST(60000000));
+   time -= ((*min) * INT64CONST(60000000));
+   *sec = (time / INT64CONST(1000000));
+   *fsec = (time - (*sec * INT64CONST(1000000)));
 #else
-        *hour = (time / 3600);
-        time -= ((*hour) * 3600);
+   *hour = (time / 3600);
+   time -= ((*hour) * 3600);
    *min = (time / 60);
-        time -= ((*min) * 60);
-        *sec = time;
-        *fsec = JROUND(time - *sec);
+   time -= ((*min) * 60);
+   *sec = time;
+   *fsec = JROUND(time - *sec);
 #endif
-        return;
-}       /* dt2time() */
+   return;
+}  /* dt2time() */
+
+
 
-                                   
-               
 /* DecodeNumberField()
  * Interpret numeric string as a concatenated date or time field.
  * Use the context of previously decoded fields to help with
@@ -1279,7 +1283,7 @@ dt2time(double jd, int *hour, int *min, int *sec, fsec_t *fsec)
  */
 static int
 DecodeNumberField(int len, char *str, int fmask,
-               int *tmask, struct tm * tm, fsec_t *fsec, int *is2digits, bool EuroDates)
+int *tmask, struct tm * tm, fsec_t *fsec, int *is2digits, bool EuroDates)
 {
    char       *cp;
 
@@ -1386,7 +1390,7 @@ DecodeNumberField(int len, char *str, int fmask,
  */
 static int
 DecodeNumber(int flen, char *str, int fmask,
-            int *tmask, struct tm * tm, fsec_t *fsec, int *is2digits, bool EuroDates)
+int *tmask, struct tm * tm, fsec_t *fsec, int *is2digits, bool EuroDates)
 {
    int         val;
    char       *cp;
@@ -1405,7 +1409,7 @@ DecodeNumber(int flen, char *str, int fmask,
         */
        if ((cp - str) > 2)
            return DecodeNumberField(flen, str, (fmask | DTK_DATE_M),
-                                    tmask, tm, fsec, is2digits, EuroDates);
+                                 tmask, tm, fsec, is2digits, EuroDates);
 
        *fsec = strtod(cp, &cp);
        if (*cp != '\0')
@@ -1797,7 +1801,7 @@ DecodePosixTimezone(char *str, int *tzp)
  */
 int
 ParseDateTime(char *timestr, char *lowstr,
-             char **field, int *ftype, int maxfields, int *numfields, char **endstr)
+  char **field, int *ftype, int maxfields, int *numfields, char **endstr)
 {
    int         nf = 0;
    char       *lp = lowstr;
@@ -1980,7 +1984,7 @@ ParseDateTime(char *timestr, char *lowstr,
  */
 int
 DecodeDateTime(char **field, int *ftype, int nf,
-              int *dtype, struct tm * tm, fsec_t *fsec, int *tzp, bool EuroDates)
+     int *dtype, struct tm * tm, fsec_t *fsec, int *tzp, bool EuroDates)
 {
    int         fmask = 0,
                tmask,
@@ -2085,7 +2089,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
                         * concatenated time
                         */
                        if ((ftype[i] = DecodeNumberField(strlen(field[i]), field[i], fmask,
-                                     &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
+                          &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
                            return -1;
 
                        /*
@@ -2272,7 +2276,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
                        case DTK_TIME:
                            /* previous field was "t" for ISO time */
                            if ((ftype[i] = DecodeNumberField(strlen(field[i]), field[i], (fmask | DTK_DATE_M),
-                                     &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
+                           &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
                                return -1;
 
                            if (tmask != DTK_TIME_M)
@@ -2310,18 +2314,18 @@ DecodeDateTime(char **field, int *ftype, int nf,
                         * later. Example: 20011223 or 040506
                         */
                        if ((ftype[i] = DecodeNumberField(flen, field[i], fmask,
-                                     &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
+                          &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
                            return -1;
                    }
                    else if (flen > 4)
                    {
                        if ((ftype[i] = DecodeNumberField(flen, field[i], fmask,
-                                     &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
+                          &tmask, tm, fsec, &is2digits, EuroDates)) < 0)
                            return -1;
                    }
                    /* otherwise it is a single date/time field... */
                    else if (DecodeNumber(flen, field[i], fmask,
-                                     &tmask, tm, fsec, &is2digits, EuroDates) != 0)
+                          &tmask, tm, fsec, &is2digits, EuroDates) != 0)
                        return -1;
                }
                break;
@@ -2565,110 +2569,130 @@ DecodeDateTime(char **field, int *ftype, int nf,
  *
  * */
 
-static char* find_end_token(char* str, char* fmt) {
-   /* str: here is28the day12the hour
-    * fmt: here is%dthe day%hthe hour
+static char *
+find_end_token(char *str, char *fmt)
+{
+   /*
+    * str: here is28the day12the hour fmt: here is%dthe day%hthe hour
     *
-    * we extract the 28, we read the percent sign and the type "d"
-    * then this functions gets called as
-    * find_end_token("28the day12the hour", "the day%hthehour")
+    * we extract the 28, we read the percent sign and the type "d" then this
+    * functions gets called as find_end_token("28the day12the hour", "the
+    * day%hthehour")
     *
-    * fmt points to "the day%hthehour", next_percent points to
-    * %hthehour and we have to find a match for everything between
-    * these positions ("the day"). We look for "the day" in str and
-    * know that the pattern we are about to scan ends where this string
-    * starts (right after the "28")
+    * fmt points to "the day%hthehour", next_percent points to %hthehour and
+    * we have to find a match for everything between these positions
+    * ("the day"). We look for "the day" in str and know that the pattern
+    * we are about to scan ends where this string starts (right after the
+    * "28")
     *
     * At the end, *fmt is '\0' and *str isn't. end_position then is
     * unchanged.
     */
-   char* end_position = NULL;
-   char* next_percent, *subst_location = NULL;
-   int scan_offset = 0;
-   char last_char;
+   char       *end_position = NULL;
+   char       *next_percent,
+              *subst_location = NULL;
+   int         scan_offset = 0;
+   char        last_char;
 
    /* are we at the end? */
-   if (!*fmt) {
+   if (!*fmt)
+   {
        end_position = fmt;
        return end_position;
    }
 
    /* not at the end */
-   while (fmt[scan_offset] == '%' && fmt[scan_offset+1]) {
-       /* there is no delimiter, skip to the next delimiter
-        * if we're reading a number and then something that is not
-        * a number "9:15pm", we might be able to recover with the
-        * strtol end pointer. Go for the next percent sign */
+   while (fmt[scan_offset] == '%' && fmt[scan_offset + 1])
+   {
+       /*
+        * there is no delimiter, skip to the next delimiter if we're
+        * reading a number and then something that is not a number
+        * "9:15pm", we might be able to recover with the strtol end
+        * pointer. Go for the next percent sign
+        */
        scan_offset += 2;
    }
-   next_percent = strchr(fmt+scan_offset, '%');
-   if (next_percent) {
-       /* we don't want to allocate extra memory, so we temporarily
-        * set the '%' sign to '\0' and call strstr
-        * However since we allow whitespace to float around
-        * everything, we have to shorten the pattern until we reach
-        * a non-whitespace character */
-       
+   next_percent = strchr(fmt + scan_offset, '%');
+   if (next_percent)
+   {
+       /*
+        * we don't want to allocate extra memory, so we temporarily set
+        * the '%' sign to '\0' and call strstr However since we allow
+        * whitespace to float around everything, we have to shorten the
+        * pattern until we reach a non-whitespace character
+        */
+
        subst_location = next_percent;
-       while(*(subst_location-1) == ' ' && subst_location-1 > fmt+scan_offset) {
+       while (*(subst_location - 1) == ' ' && subst_location - 1 > fmt + scan_offset)
            subst_location--;
-       }
        last_char = *subst_location;
        *subst_location = '\0';
 
-       /* the haystack is the str and the needle is the original
-        * fmt but it ends at the position where the next percent
-        * sign would be */
-       /* There is one special case. Imagine:
-        * str = " 2", fmt = "%d %...",
-        * since we want to allow blanks as "dynamic" padding we
-        * have to accept this. Now, we are called with a fmt of
-        * " %..." and look for " " in str. We find it at the first
-        * position and never read the 2... */
-       while (*str == ' ') { str++; }
-       end_position = strstr(str, fmt+scan_offset);
+       /*
+        * the haystack is the str and the needle is the original fmt but
+        * it ends at the position where the next percent sign would be
+        */
+
+       /*
+        * There is one special case. Imagine: str = " 2", fmt = "%d
+        * %...", since we want to allow blanks as "dynamic" padding we
+        * have to accept this. Now, we are called with a fmt of " %..."
+        * and look for " " in str. We find it at the first position and
+        * never read the 2...
+        */
+       while (*str == ' ')
+           str++;
+       end_position = strstr(str, fmt + scan_offset);
        *subst_location = last_char;
-   } else {
-       /* there is no other percent sign. So everything up to
-        * the end has to match. */
+   }
+   else
+   {
+       /*
+        * there is no other percent sign. So everything up to the end has
+        * to match.
+        */
        end_position = str + strlen(str);
    }
-   if (!end_position) {
-       /* maybe we have the following case:
+   if (!end_position)
+   {
+       /*
+        * maybe we have the following case:
         *
-        * str = "4:15am"
-        * fmt = "%M:%S %p"
+        * str = "4:15am" fmt = "%M:%S %p"
         *
         * at this place we could have
         *
-        * str = "15am"
-        * fmt = " %p"
+        * str = "15am" fmt = " %p"
         *
-        * and have set fmt to " " because overwrote the % sign with
-        * a NULL
+        * and have set fmt to " " because overwrote the % sign with a NULL
         *
-        * In this case where we would have to match a space but
-        * can't find it, set end_position to the end of the string */
-       if ((fmt+scan_offset)[0] == ' ' && fmt+scan_offset+1 == subst_location) {
+        * In this case where we would have to match a space but can't find
+        * it, set end_position to the end of the string
+        */
+       if ((fmt + scan_offset)[0] == ' ' && fmt + scan_offset + 1 == subst_location)
            end_position = str + strlen(str);
-       }
    }
    return end_position;
 }
 
-static int pgtypes_defmt_scan(union un_fmt_comb* scan_val, int scan_type, char** pstr, char* pfmt) {
-   /* scan everything between pstr and pstr_end.
-    * This is not including the last character so we might set it to
-    * '\0' for the parsing */
-
-   char last_char;
-   int err = 0;
-   char* pstr_end;
-   char* strtol_end = NULL;
-   
-   while (**pstr == ' ') { pstr++; }
+static int
+pgtypes_defmt_scan(union un_fmt_comb * scan_val, int scan_type, char **pstr, char *pfmt)
+{
+   /*
+    * scan everything between pstr and pstr_end. This is not including
+    * the last character so we might set it to '\0' for the parsing
+    */
+
+   char        last_char;
+   int         err = 0;
+   char       *pstr_end;
+   char       *strtol_end = NULL;
+
+   while (**pstr == ' ')
+       pstr++;
    pstr_end = find_end_token(*pstr, pfmt);
-   if (!pstr_end) {
+   if (!pstr_end)
+   {
        /* there was an error, no match */
        err = 1;
        return err;
@@ -2676,63 +2700,80 @@ static int pgtypes_defmt_scan(union un_fmt_comb* scan_val, int scan_type, char**
    last_char = *pstr_end;
    *pstr_end = '\0';
 
-   switch(scan_type) {
+   switch (scan_type)
+   {
        case PGTYPES_TYPE_UINT:
-           /* numbers may be blank-padded, this is the only
-            * deviation from the fmt-string we accept */
-           while (**pstr == ' ') { (*pstr)++; }
+
+           /*
+            * numbers may be blank-padded, this is the only deviation
+            * from the fmt-string we accept
+            */
+           while (**pstr == ' ')
+               (*pstr)++;
            errno = 0;
            scan_val->uint_val = (unsigned int) strtol(*pstr, &strtol_end, 10);
-           if (errno) { err = 1; }
+           if (errno)
+               err = 1;
            break;
        case PGTYPES_TYPE_UINT_LONG:
-           while (**pstr == ' ') { (*pstr)++; }
+           while (**pstr == ' ')
+               (*pstr)++;
            errno = 0;
            scan_val->uint_val = (unsigned long int) strtol(*pstr, &strtol_end, 10);
-           if (errno) { err = 1; }
+           if (errno)
+               err = 1;
            break;
        case PGTYPES_TYPE_STRING_MALLOCED:
-           if (pstr) {
+           if (pstr)
                scan_val->str_val = pgtypes_strdup(*pstr);
-           }
    }
-   if (strtol_end && *strtol_end) {
+   if (strtol_end && *strtol_end)
        *pstr = strtol_end;
-   } else {
+   else
        *pstr = pstr_end;
-   }
    *pstr_end = last_char;
    return err;
 }
 
 /* XXX range checking */
-int PGTYPEStimestamp_defmt_scan(char**, char*, Timestamp *, int*, int*, int*,
-                                       int*, int*, int*, int*);
+int PGTYPEStimestamp_defmt_scan(char **, char *, Timestamp *, int *, int *, int *,
+                           int *, int *, int *, int *);
 
-int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
-           int* year, int* month, int* day,
-           int* hour, int* minute, int* second,
-           int* tz) {
+int
+PGTYPEStimestamp_defmt_scan(char **str, char *fmt, Timestamp *d,
+                           int *year, int *month, int *day,
+                           int *hour, int *minute, int *second,
+                           int *tz)
+{
    union un_fmt_comb scan_val;
-   int scan_type;
+   int         scan_type;
 
-   char *pstr, *pfmt, *tmp;
-   int err = 1;
-   int j;
-   struct tm tm;
+   char       *pstr,
+              *pfmt,
+              *tmp;
+   int         err = 1;
+   int         j;
+   struct tm   tm;
 
    pfmt = fmt;
    pstr = *str;
-   
-   while (*pfmt) {
+
+   while (*pfmt)
+   {
        err = 0;
-       while (*pfmt == ' ') { pfmt++; }
-       while (*pstr == ' ') { pstr++; }
-       if (*pfmt != '%') {
-           if (*pfmt == *pstr) {
+       while (*pfmt == ' ')
+           pfmt++;
+       while (*pstr == ' ')
+           pstr++;
+       if (*pfmt != '%')
+       {
+           if (*pfmt == *pstr)
+           {
                pfmt++;
                pstr++;
-           } else {
+           }
+           else
+           {
                /* XXX Error: no match */
                err = 1;
                return err;
@@ -2741,17 +2782,22 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
        }
        /* here *pfmt equals '%' */
        pfmt++;
-       switch(*pfmt) {
+       switch (*pfmt)
+       {
            case 'a':
                pfmt++;
-               /* we parse the day and see if it is a week
-                * day but we do not check if the week day
-                * really matches the date
-                * */
-               err = 1; j = 0;
-               while(pgtypes_date_weekdays_short[j]) {
+
+               /*
+                * we parse the day and see if it is a week day but we do
+                * not check if the week day really matches the date
+                */
+               err = 1;
+               j = 0;
+               while (pgtypes_date_weekdays_short[j])
+               {
                    if (strncmp(pgtypes_date_weekdays_short[j], pstr,
-                           strlen(pgtypes_date_weekdays_short[j])) == 0) {
+                           strlen(pgtypes_date_weekdays_short[j])) == 0)
+                   {
                        /* found it */
                        err = 0;
                        pstr += strlen(pgtypes_date_weekdays_short[j]);
@@ -2763,9 +2809,12 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
            case 'A':
                /* see note above */
                pfmt++;
-               err = 1; j = 0;
-               while(days[j]) {
-                   if (strncmp(days[j], pstr, strlen(days[j])) == 0) {
+               err = 1;
+               j = 0;
+               while (days[j])
+               {
+                   if (strncmp(days[j], pstr, strlen(days[j])) == 0)
+                   {
                        /* found it */
                        err = 0;
                        pstr += strlen(days[j]);
@@ -2777,13 +2826,16 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
            case 'b':
            case 'h':
                pfmt++;
-               err = 1; j = 0;
-               while(months[j]) {
-                   if (strncmp(months[j], pstr, strlen(months[j])) == 0) {
+               err = 1;
+               j = 0;
+               while (months[j])
+               {
+                   if (strncmp(months[j], pstr, strlen(months[j])) == 0)
+                   {
                        /* found it */
                        err = 0;
                        pstr += strlen(months[j]);
-                       *month = j+1;
+                       *month = j + 1;
                        break;
                    }
                    j++;
@@ -2792,13 +2844,16 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
            case 'B':
                /* see note above */
                pfmt++;
-               err = 1; j = 0;
-               while(pgtypes_date_months[j]) {
-                   if (strncmp(pgtypes_date_months[j], pstr, strlen(pgtypes_date_months[j])) == 0) {
+               err = 1;
+               j = 0;
+               while (pgtypes_date_months[j])
+               {
+                   if (strncmp(pgtypes_date_months[j], pstr, strlen(pgtypes_date_months[j])) == 0)
+                   {
                        /* found it */
                        err = 0;
                        pstr += strlen(pgtypes_date_months[j]);
-                       *month = j+1;
+                       *month = j + 1;
                        break;
                    }
                    j++;
@@ -2821,9 +2876,11 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                *day = scan_val.uint_val;
                break;
            case 'D':
-               /* we have to concatenate the strings in
-                * order to be able to find the end of the
-                * substitution */
+
+               /*
+                * we have to concatenate the strings in order to be able
+                * to find the end of the substitution
+                */
                pfmt++;
                tmp = pgtypes_alloc(strlen("%m/%d/%y") + strlen(pstr) + 1);
                strcpy(tmp, "%m/%d/%y");
@@ -2838,17 +2895,19 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                *month = scan_val.uint_val;
                break;
            case 'y':
-           case 'g': /* XXX difference to y (ISO) */
+           case 'g':           /* XXX difference to y (ISO) */
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (*year < 0) {
+               if (*year < 0)
+               {
                    /* not yet set */
                    *year = scan_val.uint_val;
-               } else {
-                   *year += scan_val.uint_val;
                }
-               if (*year < 100) { *year += 1900; }
+               else
+                   *year += scan_val.uint_val;
+               if (*year < 100)
+                   *year += 1900;
                break;
            case 'G':
                /* XXX difference to %V (ISO) */
@@ -2870,10 +2929,12 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               /* XXX what should we do with that? 
-                * We could say that it's sufficient if we
-                * have the year and the day within the year
-                * to get at least a specific day. */
+
+               /*
+                * XXX what should we do with that? We could say that it's
+                * sufficient if we have the year and the day within the
+                * year to get at least a specific day.
+                */
                break;
            case 'M':
                pfmt++;
@@ -2883,23 +2944,66 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                break;
            case 'n':
                pfmt++;
-               if (*pstr == '\n') { pstr++; } else { err = 1; }
+               if (*pstr == '\n')
+                   pstr++;
+               else
+                   err = 1;
                break;
            case 'p':
                err = 1;
                pfmt++;
-               if (strncmp(pstr, "am", 2)   == 0) { *hour += 0; err = 0; pstr += 2; }
-               if (strncmp(pstr, "a.m.", 4) == 0) { *hour += 0; err = 0; pstr += 4; }
-               if (strncmp(pstr, "pm", 2)   == 0) { *hour += 12; err = 0; pstr += 2; }
-               if (strncmp(pstr, "p.m.", 4) == 0) { *hour += 12; err = 0; pstr += 4; }
-               break;    
+               if (strncmp(pstr, "am", 2) == 0)
+               {
+                   *hour += 0;
+                   err = 0;
+                   pstr += 2;
+               }
+               if (strncmp(pstr, "a.m.", 4) == 0)
+               {
+                   *hour += 0;
+                   err = 0;
+                   pstr += 4;
+               }
+               if (strncmp(pstr, "pm", 2) == 0)
+               {
+                   *hour += 12;
+                   err = 0;
+                   pstr += 2;
+               }
+               if (strncmp(pstr, "p.m.", 4) == 0)
+               {
+                   *hour += 12;
+                   err = 0;
+                   pstr += 4;
+               }
+               break;
            case 'P':
                err = 1;
                pfmt++;
-               if (strncmp(pstr, "AM", 2)   == 0) { *hour += 0;  err = 0; pstr += 2; }
-               if (strncmp(pstr, "A.M.", 4) == 0) { *hour += 0;  err = 0; pstr += 4; }
-               if (strncmp(pstr, "PM", 2)   == 0) { *hour += 12; err = 0; pstr += 2; }
-               if (strncmp(pstr, "P.M.", 4) == 0) { *hour += 12; err = 0; pstr += 4; }
+               if (strncmp(pstr, "AM", 2) == 0)
+               {
+                   *hour += 0;
+                   err = 0;
+                   pstr += 2;
+               }
+               if (strncmp(pstr, "A.M.", 4) == 0)
+               {
+                   *hour += 0;
+                   err = 0;
+                   pstr += 4;
+               }
+               if (strncmp(pstr, "PM", 2) == 0)
+               {
+                   *hour += 12;
+                   err = 0;
+                   pstr += 2;
+               }
+               if (strncmp(pstr, "P.M.", 4) == 0)
+               {
+                   *hour += 12;
+                   err = 0;
+                   pstr += 4;
+               }
                break;
            case 'r':
                pfmt++;
@@ -2923,8 +3027,9 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
                /* number of seconds in scan_val.luint_val */
                {
-                   struct tm *tms;
-                   time_t et = (time_t) scan_val.luint_val;
+                   struct tm  *tms;
+                   time_t      et = (time_t) scan_val.luint_val;
+
                    tms = gmtime(&et);
                    *year = tms->tm_year;
                    *month = tms->tm_mon;
@@ -2942,7 +3047,10 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                break;
            case 't':
                pfmt++;
-               if (*pstr == '\t') { pstr++; } else { err = 1; }
+               if (*pstr == '\t')
+                   pstr++;
+               else
+                   err = 1;
                break;
            case 'T':
                pfmt++;
@@ -2956,31 +3064,36 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (scan_val.uint_val < 1 || scan_val.uint_val > 7) { err = 1; }
+               if (scan_val.uint_val < 1 || scan_val.uint_val > 7)
+                   err = 1;
                break;
            case 'U':
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (scan_val.uint_val < 0 || scan_val.uint_val > 53) { err = 1; }
+               if (scan_val.uint_val < 0 || scan_val.uint_val > 53)
+                   err = 1;
                break;
            case 'V':
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (scan_val.uint_val < 1 || scan_val.uint_val > 53) { err = 1; }
+               if (scan_val.uint_val < 1 || scan_val.uint_val > 53)
+                   err = 1;
                break;
            case 'w':
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (scan_val.uint_val < 0 || scan_val.uint_val > 6) { err = 1; }
+               if (scan_val.uint_val < 0 || scan_val.uint_val > 6)
+                   err = 1;
                break;
            case 'W':
                pfmt++;
                scan_type = PGTYPES_TYPE_UINT;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (scan_val.uint_val < 0 || scan_val.uint_val > 53) { err = 1; }
+               if (scan_val.uint_val < 0 || scan_val.uint_val > 53)
+                   err = 1;
                break;
            case 'x':
            case 'X':
@@ -2996,7 +3109,8 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                pfmt++;
                scan_type = PGTYPES_TYPE_STRING_MALLOCED;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               if (!err) {
+               if (!err)
+               {
                    err = DecodeTimezone(scan_val.str_val, tz);
                    free(scan_val.str_val);
                }
@@ -3005,16 +3119,20 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                pfmt++;
                scan_type = PGTYPES_TYPE_STRING_MALLOCED;
                err = pgtypes_defmt_scan(&scan_val, scan_type, &pstr, pfmt);
-               /* XXX use DecodeSpecial instead ? - it's
-                * declared static but the arrays as well.
-                * :-( */
-               for (j = 0; !err && j < szdatetktbl; j++) {
-                   if (strcasecmp(datetktbl[j].token, scan_val.str_val) == 0) {
-                       /* tz calculates the offset
-                        * for the seconds, the
-                        * timezone value of the
-                        * datetktbl table is in
-                        * quarter hours */
+
+               /*
+                * XXX use DecodeSpecial instead ? - it's declared static
+                * but the arrays as well. :-(
+                */
+               for (j = 0; !err && j < szdatetktbl; j++)
+               {
+                   if (strcasecmp(datetktbl[j].token, scan_val.str_val) == 0)
+                   {
+                       /*
+                        * tz calculates the offset for the seconds, the
+                        * timezone value of the datetktbl table is in
+                        * quarter hours
+                        */
                        *tz = -15 * 60 * datetktbl[j].value;
                        break;
                    }
@@ -3026,26 +3144,62 @@ int PGTYPEStimestamp_defmt_scan(char** str, char* fmt, Timestamp *d,
                break;
            case '%':
                pfmt++;
-               if (*pstr == '%') { pstr++; } else { err = 1; }
+               if (*pstr == '%')
+                   pstr++;
+               else
+                   err = 1;
                break;
            default:
                err = 1;
        }
    }
-   if (!err) {
-       if (*second < 0) { *second = 0; }
-       if (*minute < 0) { *minute = 0; }
-       if (*hour < 0) { *hour = 0; }
-       if (*day < 0) { err = 1;   *day = 1; }
-       if (*month < 0) { err = 1; *month = 1; }
-       if (*year < 0) { err = 1;  *year = 1970; }
-
-       if (*second > 59) { err = 1; *second = 0; }
-       if (*minute > 59) { err = 1; *minute = 0; }
-       if (*hour   > 23) { err = 1; *hour = 0; }
-       if (*month  > 12) { err = 1; *month = 1; }
-       if (*day > day_tab[isleap(*year)][*month-1]) {
-           *day = day_tab[isleap(*year)][*month-1];
+   if (!err)
+   {
+       if (*second < 0)
+           *second = 0;
+       if (*minute < 0)
+           *minute = 0;
+       if (*hour < 0)
+           *hour = 0;
+       if (*day < 0)
+       {
+           err = 1;
+           *day = 1;
+       }
+       if (*month < 0)
+       {
+           err = 1;
+           *month = 1;
+       }
+       if (*year < 0)
+       {
+           err = 1;
+           *year = 1970;
+       }
+
+       if (*second > 59)
+       {
+           err = 1;
+           *second = 0;
+       }
+       if (*minute > 59)
+       {
+           err = 1;
+           *minute = 0;
+       }
+       if (*hour > 23)
+       {
+           err = 1;
+           *hour = 0;
+       }
+       if (*month > 12)
+       {
+           err = 1;
+           *month = 1;
+       }
+       if (*day > day_tab[isleap(*year)][*month - 1])
+       {
+           *day = day_tab[isleap(*year)][*month - 1];
            err = 1;
        }
 
index 8004e3d421669b124c11b8ccff91abce4ffcc50c..110f56b5c9e9e738622a2067769b61b95cf1c3b3 100644 (file)
@@ -9,44 +9,46 @@
 #define PGTYPES_TYPE_STRING_MALLOCED       1
 #define PGTYPES_TYPE_STRING_CONSTANT       2
 #define PGTYPES_TYPE_CHAR          3
-#define PGTYPES_TYPE_DOUBLE_NF         4   /* no fractional part */
+#define PGTYPES_TYPE_DOUBLE_NF         4       /* no fractional part */
 #define PGTYPES_TYPE_INT64         5
 #define PGTYPES_TYPE_UINT          6
-#define PGTYPES_TYPE_UINT_2_LZ         7   /* 2 digits, pad with leading zero */
-#define PGTYPES_TYPE_UINT_2_LS         8   /* 2 digits, pad with leading space */
+#define PGTYPES_TYPE_UINT_2_LZ         7       /* 2 digits, pad with
+                                                * leading zero */
+#define PGTYPES_TYPE_UINT_2_LS         8       /* 2 digits, pad with
+                                                * leading space */
 #define PGTYPES_TYPE_UINT_3_LZ         9
 #define PGTYPES_TYPE_UINT_4_LZ         10
 #define PGTYPES_TYPE_UINT_LONG         11
 
 #define PGTYPES_FMT_NUM_MAX_DIGITS     40
 
-union un_fmt_comb {
-   char*           str_val;
-   unsigned int        uint_val;
-   char            char_val;
-   unsigned long int   luint_val;
-   double          double_val;
+union un_fmt_comb
+{
+   char       *str_val;
+   unsigned int uint_val;
+   char        char_val;
+   unsigned long int luint_val;
+   double      double_val;
 #ifdef HAVE_INT64_TIMESTAMP
-   int64           int64_val;
+   int64       int64_val;
 #endif
 };
 
-int pgtypes_fmt_replace(union un_fmt_comb, int, char**, int*);
+int            pgtypes_fmt_replace(union un_fmt_comb, int, char **, int *);
 
-char *pgtypes_alloc(long);
-char *pgtypes_strdup(char *);
+char      *pgtypes_alloc(long);
+char      *pgtypes_strdup(char *);
 
 #ifndef bool
 #define bool char
 #endif   /* ndef bool */
 
 #ifndef FALSE
-#define FALSE   0
+#define FALSE  0
 #endif   /* FALSE */
 
 #ifndef TRUE
-#define TRUE       1
-#endif  /* TRUE */
-
-#endif /* __PGTYPES_COMMON_H__ */
+#define TRUE      1
+#endif   /* TRUE */
 
+#endif   /* __PGTYPES_COMMON_H__ */
index 0646f480f4613f6e4b59b6ca41e334149b38b190..efde760c87cd6c0c920f76b2592514a3c7f7fc36 100644 (file)
@@ -743,7 +743,7 @@ tm2interval(struct tm * tm, fsec_t fsec, Interval *span)
 Interval *
 PGTYPESinterval_from_asc(char *str, char **endptr)
 {
-   Interval    *result = NULL;
+   Interval   *result = NULL;
    fsec_t      fsec;
    struct tm   tt,
               *tm = &tt;
@@ -752,8 +752,8 @@ PGTYPESinterval_from_asc(char *str, char **endptr)
    char       *field[MAXDATEFIELDS];
    int         ftype[MAXDATEFIELDS];
    char        lowstr[MAXDATELEN + MAXDATEFIELDS];
-   char            *realptr;
-   char **ptr = (endptr != NULL) ? endptr : &realptr;
+   char       *realptr;
+   char      **ptr = (endptr != NULL) ? endptr : &realptr;
 
    tm->tm_year = 0;
    tm->tm_mon = 0;
@@ -791,7 +791,7 @@ PGTYPESinterval_from_asc(char *str, char **endptr)
        errno = PGTYPES_INTVL_BAD_INTERVAL;
        return NULL;
    }
-   
+
    return result;
 }
 
@@ -802,7 +802,7 @@ PGTYPESinterval_to_asc(Interval *span)
               *tm = &tt;
    fsec_t      fsec;
    char        buf[MAXDATELEN + 1];
-   int DateStyle=0;
+   int         DateStyle = 0;
 
    if (interval2tm(*span, tm, &fsec) != 0)
    {
@@ -815,11 +815,11 @@ PGTYPESinterval_to_asc(Interval *span)
        errno = PGTYPES_INTVL_BAD_INTERVAL;
        return NULL;
    }
-   
-        return pgtypes_strdup(buf);
+
+   return pgtypes_strdup(buf);
 }
 
-int 
+int
 PGTYPESinterval_copy(Interval *intvlsrc, Interval *intrcldest)
 {
    intrcldest->time = intvlsrc->time;
@@ -827,4 +827,3 @@ PGTYPESinterval_copy(Interval *intvlsrc, Interval *intrcldest)
 
    return 0;
 }
-
index 6ac9ae48ee3f9b3c0985de17396f4d13c1735cf0..5811be61c8f1a3176045c35490e4b1ddf95813ac 100644 (file)
@@ -5,17 +5,17 @@
 #include "extern.h"
 #include "pgtypes_error.h"
 
-#define Max(x, y)               ((x) > (y) ? (x) : (y))
-#define Min(x, y)               ((x) < (y) ? (x) : (y))
+#define Max(x, y)              ((x) > (y) ? (x) : (y))
+#define Min(x, y)              ((x) < (y) ? (x) : (y))
 
-#define init_var(v)             memset(v,0,sizeof(Numeric))
+#define init_var(v)                memset(v,0,sizeof(Numeric))
 
 #define digitbuf_alloc(size) ((NumericDigit *) pgtypes_alloc(size))
-#define digitbuf_free(buf)      \
-       do { \
-                 if ((buf) != NULL) \
-                          free(buf); \
-          } while (0)
+#define digitbuf_free(buf)     \
+      do { \
+                if ((buf) != NULL) \
+                         free(buf); \
+         } while (0)
 
 #include "pgtypes_numeric.h"
 
@@ -27,7 +27,7 @@
  * typmod field.
  * ----------
  */
-static int 
+static int
 apply_typmod(Numeric *var, long typmod)
 {
    int         precision;
@@ -37,7 +37,7 @@ apply_typmod(Numeric *var, long typmod)
 
    /* Do nothing if we have a default typmod (-1) */
    if (typmod < (long) (VARHDRSZ))
-       return(0);
+       return (0);
 
    typmod -= VARHDRSZ;
    precision = (typmod >> 16) & 0xffff;
@@ -102,9 +102,9 @@ apply_typmod(Numeric *var, long typmod)
 #endif
 
 /* ----------
- *  alloc_var() -
- *  
- *   Allocate a digit buffer of ndigits digits (plus a spare digit for rounding)
+ * alloc_var() -
+ *
+ *  Allocate a digit buffer of ndigits digits (plus a spare digit for rounding)
  * ----------
  */
 static int
@@ -120,17 +120,16 @@ alloc_var(Numeric *var, int ndigits)
    return 0;
 }
 
-Numeric * 
+Numeric *
 PGTYPESnumeric_new(void)
 {
-   Numeric *var;
-       
-   if ((var = (Numeric *)pgtypes_alloc(sizeof(Numeric))) == NULL)
+   Numeric    *var;
+
+   if ((var = (Numeric *) pgtypes_alloc(sizeof(Numeric))) == NULL)
        return NULL;
 
-   if (alloc_var(var, 0) < 0) {
+   if (alloc_var(var, 0) < 0)
        return NULL;
-   }
 
    return var;
 }
@@ -141,11 +140,11 @@ PGTYPESnumeric_new(void)
  * Parse a string and put the number into a variable
  * ----------
  */
-static int 
+static int
 set_var_from_str(char *str, char **ptr, Numeric *dest)
 {
-   bool    have_dp = FALSE;
-   int i = 0;
+   bool        have_dp = FALSE;
+   int         i = 0;
 
    *ptr = str;
    while (*(*ptr))
@@ -182,7 +181,7 @@ set_var_from_str(char *str, char **ptr, Numeric *dest)
 
    if (!isdigit((unsigned char) *(*ptr)))
    {
-       errno=PGTYPES_NUM_BAD_NUMERIC;
+       errno = PGTYPES_NUM_BAD_NUMERIC;
        return -1;
    }
 
@@ -259,7 +258,7 @@ set_var_from_str(char *str, char **ptr, Numeric *dest)
        dest->weight = 0;
 
    dest->rscale = dest->dscale;
-   return(0);
+   return (0);
 }
 
 
@@ -308,7 +307,7 @@ get_str_from_var(Numeric *var, int dscale)
    /*
     * Allocate space for the result
     */
-   if ((str = (char *)pgtypes_alloc(Max(0, dscale) + Max(0, var->weight) + 4)) == NULL)
+   if ((str = (char *) pgtypes_alloc(Max(0, dscale) + Max(0, var->weight) + 4)) == NULL)
        return NULL;
    cp = str;
 
@@ -360,17 +359,18 @@ get_str_from_var(Numeric *var, int dscale)
 Numeric *
 PGTYPESnumeric_from_asc(char *str, char **endptr)
 {
-   Numeric *value = (Numeric *)pgtypes_alloc(sizeof(Numeric));
-   int ret;
+   Numeric    *value = (Numeric *) pgtypes_alloc(sizeof(Numeric));
+   int         ret;
+
 #if 0
-   long typmod = -1;
+   long        typmod = -1;
 #endif
-   char *realptr;
-   char **ptr = (endptr != NULL) ? endptr : &realptr;
-   
+   char       *realptr;
+   char      **ptr = (endptr != NULL) ? endptr : &realptr;
+
    if (!value)
        return (NULL);
-   
+
    ret = set_var_from_str(str, ptr, value);
    if (ret)
        return (NULL);
@@ -379,8 +379,8 @@ PGTYPESnumeric_from_asc(char *str, char **endptr)
    ret = apply_typmod(value, typmod);
    if (ret)
        return (NULL);
-#endif 
-   return(value);
+#endif
+   return (value);
 }
 
 char *
@@ -389,7 +389,7 @@ PGTYPESnumeric_to_asc(Numeric *num, int dscale)
    if (dscale <= 0)
        dscale = num->dscale;
 
-   return(get_str_from_var(num, dscale));
+   return (get_str_from_var(num, dscale));
 }
 
 /* ----------
@@ -410,7 +410,7 @@ zero_var(Numeric *var)
    var->sign = NUMERIC_POS;    /* anything but NAN... */
 }
 
-void  
+void
 PGTYPESnumeric_free(Numeric *var)
 {
    digitbuf_free(var->buf);
@@ -913,7 +913,7 @@ PGTYPESnumeric_sub(Numeric *var1, Numeric *var2, Numeric *result)
  * mul_var() -
  *
  * Multiplication on variable level. Product of var1 * var2 is stored
- * in result.  Accuracy of result is determined by global_rscale.
+ * in result.  Accuracy of result is determined by global_rscale.
  * ----------
  */
 int
@@ -929,7 +929,7 @@ PGTYPESnumeric_mul(Numeric *var1, Numeric *var2, Numeric *result)
                i1,
                i2;
    long        sum = 0;
-   int global_rscale = var1->rscale + var2->rscale;
+   int         global_rscale = var1->rscale + var2->rscale;
 
    res_weight = var1->weight + var2->weight + 2;
    res_ndigits = var1->ndigits + var2->ndigits + 1;
@@ -939,7 +939,7 @@ PGTYPESnumeric_mul(Numeric *var1, Numeric *var2, Numeric *result)
        res_sign = NUMERIC_NEG;
 
    if ((res_buf = digitbuf_alloc(res_ndigits)) == NULL)
-           return -1;
+       return -1;
    res_digits = res_buf;
    memset(res_digits, 0, res_ndigits);
 
@@ -1054,8 +1054,8 @@ select_div_scale(Numeric *var1, Numeric *var2, int *rscale)
    }
 
    /*
-    * Estimate weight of quotient.  If the two first digits are equal,
-    * we can't be sure, but assume that var1 is less than var2.
+    * Estimate weight of quotient.  If the two first digits are equal, we
+    * can't be sure, but assume that var1 is less than var2.
     */
    qweight = weight1 - weight2;
    if (firstdigit1 <= firstdigit2)
@@ -1081,8 +1081,8 @@ PGTYPESnumeric_div(Numeric *var1, Numeric *var2, Numeric *result)
    int         res_ndigits;
    int         res_sign;
    int         res_weight;
-   Numeric dividend;
-   Numeric divisor[10];
+   Numeric     dividend;
+   Numeric     divisor[10];
    int         ndigits_tmp;
    int         weight_tmp;
    int         rscale_tmp;
@@ -1093,16 +1093,16 @@ PGTYPESnumeric_div(Numeric *var1, Numeric *var2, Numeric *result)
    long        first_div;
    int         first_nextdigit;
    int         stat = 0;
-   int rscale;
-   int res_dscale = select_div_scale(var1, var2, &rscale);
-   
+   int         rscale;
+   int         res_dscale = select_div_scale(var1, var2, &rscale);
+
    /*
     * First of all division by zero check
     */
    ndigits_tmp = var2->ndigits + 1;
    if (ndigits_tmp == 1)
    {
-       errno= PGTYPES_NUM_DIVIDE_ZERO;
+       errno = PGTYPES_NUM_DIVIDE_ZERO;
        return -1;
    }
 
@@ -1281,29 +1281,30 @@ PGTYPESnumeric_div(Numeric *var1, Numeric *var2, Numeric *result)
 
 
 int
-PGTYPESnumeric_cmp(Numeric *var1, Numeric *var2) {
+PGTYPESnumeric_cmp(Numeric *var1, Numeric *var2)
+{
 
    /* use cmp_abs function to calculate the result */
 
    /* both are positive: normal comparation with cmp_abs */
-   if (var1->sign == NUMERIC_POS && var2->sign == NUMERIC_POS) {
+   if (var1->sign == NUMERIC_POS && var2->sign == NUMERIC_POS)
        return cmp_abs(var1, var2);
-   }
 
    /* both are negative: return the inverse of the normal comparation */
-   if (var1->sign == NUMERIC_NEG && var2->sign == NUMERIC_NEG) {
-       /* instead of inverting the result, we invert the paramter
-        * ordering */
+   if (var1->sign == NUMERIC_NEG && var2->sign == NUMERIC_NEG)
+   {
+       /*
+        * instead of inverting the result, we invert the paramter
+        * ordering
+        */
        return cmp_abs(var2, var1);
    }
 
    /* one is positive, one is negative: trivial */
-   if (var1->sign == NUMERIC_POS && var2->sign == NUMERIC_NEG) {
+   if (var1->sign == NUMERIC_POS && var2->sign == NUMERIC_NEG)
        return 1;
-   }
-   if (var1->sign == NUMERIC_NEG && var2->sign == NUMERIC_POS) {
+   if (var1->sign == NUMERIC_NEG && var2->sign == NUMERIC_POS)
        return -1;
-   }
 
    errno = PGTYPES_NUM_BAD_NUMERIC;
    return INT_MAX;
@@ -1311,67 +1312,79 @@ PGTYPESnumeric_cmp(Numeric *var1, Numeric *var2) {
 }
 
 int
-PGTYPESnumeric_from_int(signed int int_val, Numeric *var) {
+PGTYPESnumeric_from_int(signed int int_val, Numeric *var)
+{
    /* implicit conversion */
    signed long int long_int = int_val;
+
    return PGTYPESnumeric_from_long(long_int, var);
 }
 
 int
-PGTYPESnumeric_from_long(signed long int long_val, Numeric *var) {
+PGTYPESnumeric_from_long(signed long int long_val, Numeric *var)
+{
    /* calculate the size of the long int number */
    /* a number n needs log_10 n digits */
-   /* however we multiply by 10 each time and compare instead of
-    * calculating the logarithm */
 
-   int size = 0;
-   int i;
+   /*
+    * however we multiply by 10 each time and compare instead of
+    * calculating the logarithm
+    */
+
+   int         size = 0;
+   int         i;
    signed long int abs_long_val = long_val;
    signed long int extract;
    signed long int reach_limit;
-   
-   if (abs_long_val < 0) {
+
+   if (abs_long_val < 0)
+   {
        abs_long_val *= -1;
        var->sign = NUMERIC_NEG;
-   } else {
-       var->sign = NUMERIC_POS;
    }
+   else
+       var->sign = NUMERIC_POS;
 
    reach_limit = 1;
-   do {
+   do
+   {
        size++;
        reach_limit *= 10;
-   } while ((reach_limit-1) < abs_long_val);
+   } while ((reach_limit - 1) < abs_long_val);
 
    /* always add a .0 */
    size++;
 
-   if (alloc_var(var, size) < 0) {
+   if (alloc_var(var, size) < 0)
        return -1;
-   }
 
    var->rscale = 1;
    var->dscale = 1;
    var->weight = size - 2;
 
    i = 0;
-   do {
+   do
+   {
        reach_limit /= 10;
        extract = abs_long_val - (abs_long_val % reach_limit);
        var->digits[i] = extract / reach_limit;
        abs_long_val -= extract;
        i++;
-       /* we can abandon if abs_long_val reaches 0, because the
-        * memory is initialized properly and filled with '0', so
-        * converting 10000 in only one step is no problem */
+
+       /*
+        * we can abandon if abs_long_val reaches 0, because the memory is
+        * initialized properly and filled with '0', so converting 10000
+        * in only one step is no problem
+        */
    } while (abs_long_val > 0);
 
    return 0;
 }
 
 int
-PGTYPESnumeric_copy(Numeric *src, Numeric *dst) {
-   int i;
+PGTYPESnumeric_copy(Numeric *src, Numeric *dst)
+{
+   int         i;
 
    zero_var(dst);
 
@@ -1383,9 +1396,8 @@ PGTYPESnumeric_copy(Numeric *src, Numeric *dst) {
    if (alloc_var(dst, src->ndigits) != 0)
        return -1;
 
-   for (i = 0; i < src->ndigits; i++) {
+   for (i = 0; i < src->ndigits; i++)
        dst->digits[i] = src->digits[i];
-   }
 
    return 0;
 }
@@ -1393,12 +1405,12 @@ PGTYPESnumeric_copy(Numeric *src, Numeric *dst) {
 int
 PGTYPESnumeric_from_double(double d, Numeric *dst)
 {
-   char buffer[100];
-   Numeric *tmp;
-   
+   char        buffer[100];
+   Numeric    *tmp;
+
    if (sprintf(buffer, "%f", d) == 0)
        return -1;
-   
+
    if ((tmp = PGTYPESnumeric_from_asc(buffer, NULL)) == NULL)
        return -1;
    if (PGTYPESnumeric_copy(tmp, dst) != 0)
@@ -1425,17 +1437,18 @@ numericvar_to_double_no_overflow(Numeric *var, double *dp)
        free(tmp);
        errno = PGTYPES_NUM_BAD_NUMERIC;
        return -1;
-   } 
+   }
    *dp = val;
    free(tmp);
    return 0;
 }
 
 int
-PGTYPESnumeric_to_double(Numeric* nv, double* dp) {
-   double tmp;
-   int i;
-   
+PGTYPESnumeric_to_double(Numeric *nv, double *dp)
+{
+   double      tmp;
+   int         i;
+
    if ((i = numericvar_to_double_no_overflow(nv, &tmp)) != 0)
        return -1;
    *dp = tmp;
@@ -1443,72 +1456,79 @@ PGTYPESnumeric_to_double(Numeric* nv, double* dp) {
 }
 
 int
-PGTYPESnumeric_to_int(Numeric* nv, int* ip) {
-   long l;
-   int i;
-   
+PGTYPESnumeric_to_int(Numeric *nv, int *ip)
+{
+   long        l;
+   int         i;
+
    if ((i = PGTYPESnumeric_to_long(nv, &l)) != 0)
        return i;
 
-   if (l < -INT_MAX || l > INT_MAX) {
+   if (l < -INT_MAX || l > INT_MAX)
+   {
        errno = PGTYPES_NUM_OVERFLOW;
        return -1;
-   } 
+   }
 
    *ip = (int) l;
    return 0;
 }
 
 int
-PGTYPESnumeric_to_long(Numeric* nv, long* lp) {
-   int i;
-   long l = 0;
+PGTYPESnumeric_to_long(Numeric *nv, long *lp)
+{
+   int         i;
+   long        l = 0;
 
-   for (i = 1; i < nv->weight + 2; i++) {
+   for (i = 1; i < nv->weight + 2; i++)
+   {
        l *= 10;
        l += nv->buf[i];
    }
-   if (nv->buf[i] >= 5) {
+   if (nv->buf[i] >= 5)
+   {
        /* round up */
        l++;
    }
-   if (l > LONG_MAX || l < 0) {
+   if (l > LONG_MAX || l < 0)
+   {
        errno = PGTYPES_NUM_OVERFLOW;
        return -1;
    }
-   
-   if (nv->sign == NUMERIC_NEG) {
+
+   if (nv->sign == NUMERIC_NEG)
        l *= -1;
-   }
    *lp = l;
    return 0;
 }
 
 int
-PGTYPESnumeric_to_decimal(Numeric *src, Decimal *dst) {
-   int i;
+PGTYPESnumeric_to_decimal(Numeric *src, Decimal * dst)
+{
+   int         i;
 
-   if (src->ndigits > DECSIZE) {
+   if (src->ndigits > DECSIZE)
+   {
        errno = PGTYPES_NUM_OVERFLOW;
        return -1;
    }
-   
+
    dst->weight = src->weight;
    dst->rscale = src->rscale;
    dst->dscale = src->dscale;
    dst->sign = src->sign;
    dst->ndigits = src->ndigits;
 
-   for (i = 0; i < src->ndigits; i++) {
+   for (i = 0; i < src->ndigits; i++)
        dst->digits[i] = src->digits[i];
-   }
 
    return 0;
 }
 
 int
-PGTYPESnumeric_from_decimal(Decimal *src, Numeric *dst) {
-   int i;
+PGTYPESnumeric_from_decimal(Decimal * src, Numeric *dst)
+{
+   int         i;
 
    zero_var(dst);
 
@@ -1520,9 +1540,8 @@ PGTYPESnumeric_from_decimal(Decimal *src, Numeric *dst) {
    if (alloc_var(dst, src->ndigits) != 0)
        return -1;
 
-   for (i = 0; i < src->ndigits; i++) {
+   for (i = 0; i < src->ndigits; i++)
        dst->digits[i] = src->digits[i];
-   }
 
    return 0;
 }
index 4d1a13d9e5b138407bca8935c2e079ac78286f32..8a96d696b4010427ab79a935f3a347dd082bf7f2 100644 (file)
@@ -13,8 +13,8 @@
 #include "pgtypes_date.h"
 #include "datetime.h"
 
-int PGTYPEStimestamp_defmt_scan(char**, char*, Timestamp *, int*, int*, int*,
-                       int*, int*, int*, int*);
+int PGTYPEStimestamp_defmt_scan(char **, char *, Timestamp *, int *, int *, int *,
+                           int *, int *, int *, int *);
 
 #ifdef HAVE_INT64_TIMESTAMP
 static int64
@@ -89,7 +89,8 @@ static Timestamp
 SetEpochTimestamp(void)
 {
    Timestamp   dt;
-   struct tm   tt, *tm = &tt;
+   struct tm   tt,
+              *tm = &tt;
 
    GetEpochTime(tm);
    tm2timestamp(tm, 0, NULL, &dt);
@@ -101,6 +102,7 @@ dt2time(Timestamp jd, int *hour, int *min, int *sec, fsec_t *fsec)
 {
 #ifdef HAVE_INT64_TIMESTAMP
    int64       time;
+
 #else
    double      time;
 #endif
@@ -142,8 +144,8 @@ static int
 timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
 {
 #ifdef HAVE_INT64_TIMESTAMP
-   int     date,
-           date0;
+   int         date,
+               date0;
    int64       time;
 
 #else
@@ -255,8 +257,8 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
 }  /* timestamp2tm() */
 
 /* EncodeSpecialTimestamp()
- *  * Convert reserved timestamp data type to string.
- *   */
+ * * Convert reserved timestamp data type to string.
+ *  */
 static int
 EncodeSpecialTimestamp(Timestamp dt, char *str)
 {
@@ -274,21 +276,24 @@ Timestamp
 PGTYPEStimestamp_from_asc(char *str, char **endptr)
 {
    Timestamp   result;
+
 #ifdef HAVE_INT64_TIMESTAMP
    int64       noresult = 0;
+
 #else
    double      noresult = 0.0;
 #endif
    fsec_t      fsec;
-   struct tm   tt, *tm = &tt;
-   int     tz;
-   int     dtype;
-   int     nf;
-   char        *field[MAXDATEFIELDS];
-   int     ftype[MAXDATEFIELDS];
+   struct tm   tt,
+              *tm = &tt;
+   int         tz;
+   int         dtype;
+   int         nf;
+   char       *field[MAXDATEFIELDS];
+   int         ftype[MAXDATEFIELDS];
    char        lowstr[MAXDATELEN + MAXDATEFIELDS];
-        char       *realptr;
-   char        **ptr = (endptr != NULL) ? endptr : &realptr;
+   char       *realptr;
+   char      **ptr = (endptr != NULL) ? endptr : &realptr;
 
    errno = 0;
    if (strlen(str) >= sizeof(lowstr))
@@ -298,12 +303,12 @@ PGTYPEStimestamp_from_asc(char *str, char **endptr)
    }
 
    if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf, ptr) != 0)
-     || (DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tz, 0) != 0))
+   || (DecodeDateTime(field, ftype, nf, &dtype, tm, &fsec, &tz, 0) != 0))
    {
-                errno = PGTYPES_TS_BAD_TIMESTAMP;
-                return (noresult);
-        }
-   
+       errno = PGTYPES_TS_BAD_TIMESTAMP;
+       return (noresult);
+   }
+
    switch (dtype)
    {
        case DTK_DATE:
@@ -343,11 +348,13 @@ PGTYPEStimestamp_from_asc(char *str, char **endptr)
 char *
 PGTYPEStimestamp_to_asc(Timestamp tstamp)
 {
-   struct tm   tt, *tm = &tt;
+   struct tm   tt,
+              *tm = &tt;
    char        buf[MAXDATELEN + 1];
-   char        *tzn = NULL;
+   char       *tzn = NULL;
    fsec_t      fsec;
-   int     DateStyle = 1;  /* this defaults to ISO_DATES, shall we make it an option? */
+   int         DateStyle = 1;  /* this defaults to ISO_DATES, shall we
+                                * make it an option? */
 
    if (TIMESTAMP_NOT_FINITE(tstamp))
        EncodeSpecialTimestamp(tstamp, buf);
@@ -362,31 +369,34 @@ PGTYPEStimestamp_to_asc(Timestamp tstamp)
 }
 
 void
-PGTYPEStimestamp_current (Timestamp *ts)
+PGTYPEStimestamp_current(Timestamp *ts)
 {
    struct tm   tm;
-   
+
    GetCurrentDateTime(&tm);
    tm2timestamp(&tm, 0, NULL, ts);
    return;
 }
 
 static int
-dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
-                   char* output, int *pstr_len, char *fmtstr)
+dttofmtasc_replace(Timestamp *ts, Date dDate, int dow, struct tm * tm,
+                  char *output, int *pstr_len, char *fmtstr)
 {
    union un_fmt_comb replace_val;
-   int replace_type;
-   int i;
-   charp = fmtstr;
-   charq = output;
+   int         replace_type;
+   int         i;
+   char       *p = fmtstr;
+   char       *q = output;
 
-   while (*p) {
-       if (*p == '%') {
+   while (*p)
+   {
+       if (*p == '%')
+       {
            p++;
            /* fix compiler warning */
            replace_type = PGTYPES_TYPE_NOTHING;
-           switch (*p) {
+           switch (*p)
+           {
                case 'a':
                    replace_val.str_val = pgtypes_date_weekdays_short[dow];
                    replace_type = PGTYPES_TYPE_STRING_CONSTANT;
@@ -416,19 +426,21 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    replace_type = PGTYPES_TYPE_UINT_2_LZ;
                    break;
                case 'D':
-                   /* ts, dDate, dow, tm is
-                    * information about the timestamp
+
+                   /*
+                    * ts, dDate, dow, tm is information about the
+                    * timestamp
                     *
-                    * q is the start of the current
-                    * output buffer
+                    * q is the start of the current output buffer
                     *
-                    * pstr_len is a pointer to the
-                    * remaining size of output, i.e.
-                    * the size of q */
+                    * pstr_len is a pointer to the remaining size of output,
+                    * i.e. the size of q
+                    */
                    i = dttofmtasc_replace(ts, dDate, dow, tm,
-                               q, pstr_len,
-                               "%m/%d/%y");
-                   if (i) { return i; }
+                                          q, pstr_len,
+                                          "%m/%d/%y");
+                   if (i)
+                       return i;
                    break;
                case 'e':
                    replace_val.uint_val = tm->tm_mday;
@@ -436,19 +448,23 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    break;
                case 'E':
                    {
-                       char tmp[4] = "%Ex";
+                       char        tmp[4] = "%Ex";
+
                        p++;
-                       if (*p == '\0') {
+                       if (*p == '\0')
                            return -1;
-                       }
                        tmp[2] = *p;
                        /* XXX: fall back to strftime */
-                       /* strftime's month is 0
-                        * based, ours is 1 based */
+
+                       /*
+                        * strftime's month is 0 based, ours is 1 based
+                        */
                        tm->tm_mon -= 1;
                        i = strftime(q, *pstr_len, tmp, tm);
-                       if (i == 0) { return -1; }
-                       while (*q) {
+                       if (i == 0)
+                           return -1;
+                       while (*q)
+                       {
                            q++;
                            (*pstr_len)--;
                        }
@@ -460,8 +476,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    /* XXX: fall back to strftime */
                    tm->tm_mon -= 1;
                    i = strftime(q, *pstr_len, "%G", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -471,12 +489,15 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                case 'g':
                    /* XXX: fall back to strftime */
                    {
-                       char *fmt = "%g"; /* Keep compiler quiet about 2-digit year */
-   
+                       char       *fmt = "%g"; /* Keep compiler quiet
+                                                * about 2-digit year */
+
                        tm->tm_mon -= 1;
                        i = strftime(q, *pstr_len, fmt, tm);
-                       if (i == 0) { return -1; }
-                       while (*q) {
+                       if (i == 0)
+                           return -1;
+                       while (*q)
+                       {
                            q++;
                            (*pstr_len)--;
                        }
@@ -517,32 +538,32 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    replace_type = PGTYPES_TYPE_CHAR;
                    break;
                case 'p':
-                   if (tm->tm_hour < 12) {
+                   if (tm->tm_hour < 12)
                        replace_val.str_val = "AM";
-                   } else {
+                   else
                        replace_val.str_val = "PM";
-                   }
                    replace_type = PGTYPES_TYPE_STRING_CONSTANT;
                    break;
                case 'P':
-                   if (tm->tm_hour < 12) {
+                   if (tm->tm_hour < 12)
                        replace_val.str_val = "am";
-                   } else {
+                   else
                        replace_val.str_val = "pm";
-                   }
                    replace_type = PGTYPES_TYPE_STRING_CONSTANT;
                    break;
                case 'r':
                    i = dttofmtasc_replace(ts, dDate, dow, tm,
-                               q, pstr_len,
-                               "%I:%M:%S %p");
-                   if (i) { return i; }
+                                          q, pstr_len,
+                                          "%I:%M:%S %p");
+                   if (i)
+                       return i;
                    break;
                case 'R':
                    i = dttofmtasc_replace(ts, dDate, dow, tm,
-                               q, pstr_len,
-                               "%H:%M");
-                   if (i) { return i; }
+                                          q, pstr_len,
+                                          "%H:%M");
+                   if (i)
+                       return i;
                    break;
                case 's':
 #ifdef HAVE_INT64_TIMESTAMP
@@ -563,12 +584,14 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    break;
                case 'T':
                    i = dttofmtasc_replace(ts, dDate, dow, tm,
-                               q, pstr_len,
-                               "%H:%M:%S");
-                   if (i) { return i; }
+                                          q, pstr_len,
+                                          "%H:%M:%S");
+                   if (i)
+                       return i;
                    break;
                case 'u':
-                   if (dow == 0) { dow = 7; }
+                   if (dow == 0)
+                       dow = 7;
                    replace_val.uint_val = dow;
                    replace_type = PGTYPES_TYPE_UINT;
                    break;
@@ -576,8 +599,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    /* XXX: fall back to strftime */
                    tm->tm_mon -= 1;
                    i = strftime(q, *pstr_len, "%U", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -587,8 +612,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                case 'V':
                    /* XXX: fall back to strftime */
                    i = strftime(q, *pstr_len, "%V", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -602,8 +629,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    /* XXX: fall back to strftime */
                    tm->tm_mon -= 1;
                    i = strftime(q, *pstr_len, "%U", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -613,12 +642,15 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                case 'x':
                    /* XXX: fall back to strftime */
                    {
-                       char *fmt = "%x"; /* Keep compiler quiet about 2-digit year */
+                       char       *fmt = "%x"; /* Keep compiler quiet
+                                                * about 2-digit year */
 
                        tm->tm_mon -= 1;
                        i = strftime(q, *pstr_len, fmt, tm);
-                       if (i == 0) { return -1; }
-                       while (*q) {
+                       if (i == 0)
+                           return -1;
+                       while (*q)
+                       {
                            q++;
                            (*pstr_len)--;
                        }
@@ -630,8 +662,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    /* XXX: fall back to strftime */
                    tm->tm_mon -= 1;
                    i = strftime(q, *pstr_len, "%X", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -650,8 +684,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    /* XXX: fall back to strftime */
                    tm->tm_mon -= 1;
                    i = strftime(q, *pstr_len, "%z", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -662,8 +698,10 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    /* XXX: fall back to strftime */
                    tm->tm_mon -= 1;
                    i = strftime(q, *pstr_len, "%Z", tm);
-                   if (i == 0) { return -1; }
-                   while (*q) {
+                   if (i == 0)
+                       return -1;
+                   while (*q)
+                   {
                        q++;
                        (*pstr_len)--;
                    }
@@ -676,41 +714,53 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
                    break;
                case '\0':
                    /* fmtstr: blabla%' */
-                   /* this is not compliant to the
-                    * specification */
+
+                   /*
+                    * this is not compliant to the specification
+                    */
                    return -1;
                default:
-                   /* if we don't know the pattern, we
-                    * just copy it */
-                   if (*pstr_len > 1) {
+
+                   /*
+                    * if we don't know the pattern, we just copy it
+                    */
+                   if (*pstr_len > 1)
+                   {
                        *q = '%';
-                       q++; (*pstr_len)--;
-                       if (*pstr_len > 1) {
+                       q++;
+                       (*pstr_len)--;
+                       if (*pstr_len > 1)
+                       {
                            *q = *p;
-                           q++; (*pstr_len)--;
-                       } else {
+                           q++;
+                           (*pstr_len)--;
+                       }
+                       else
+                       {
                            *q = '\0';
                            return -1;
                        }
                        *q = '\0';
-                   } else {
-                       return -1;
                    }
+                   else
+                       return -1;
                    break;
            }
            i = pgtypes_fmt_replace(replace_val, replace_type, &q, pstr_len);
-           if (i) {
+           if (i)
                return i;
-           }
-       } else {
-           if (*pstr_len > 1) {
+       }
+       else
+       {
+           if (*pstr_len > 1)
+           {
                *q = *p;
                (*pstr_len)--;
                q++;
                *q = '\0';
-           } else {
-               return -1;
            }
+           else
+               return -1;
        }
        p++;
    }
@@ -719,12 +769,12 @@ dttofmtasc_replace (Timestamp *ts, Date dDate, int dow, struct tm* tm,
 
 
 int
-PGTYPEStimestamp_fmt_asc (Timestamp *ts, char *output, int str_len, char *fmtstr)
+PGTYPEStimestamp_fmt_asc(Timestamp *ts, char *output, int str_len, char *fmtstr)
 {
-   struct tm tm;
-   fsec_t fsec;
-   Date dDate;
-   int dow;
+   struct tm   tm;
+   fsec_t      fsec;
+   Date        dDate;
+   int         dow;
 
    dDate = PGTYPESdate_from_timestamp(*ts);
    dow = PGTYPESdate_dayofweek(dDate);
@@ -734,12 +784,10 @@ PGTYPEStimestamp_fmt_asc (Timestamp *ts, char *output, int str_len, char *fmtstr
 }
 
 int
-PGTYPEStimestamp_sub (Timestamp *ts1, Timestamp *ts2, Interval *iv)
+PGTYPEStimestamp_sub(Timestamp *ts1, Timestamp *ts2, Interval *iv)
 {
    if (TIMESTAMP_NOT_FINITE(*ts1) || TIMESTAMP_NOT_FINITE(*ts2))
-   {
        return PGTYPES_TS_ERR_EINFTIME;
-   }
    else
 #ifdef HAVE_INT64_TIMESTAMP
        iv->time = (ts1 - ts2);
@@ -752,28 +800,40 @@ PGTYPEStimestamp_sub (Timestamp *ts1, Timestamp *ts2, Interval *iv)
    return 0;
 }
 
-int PGTYPEStimestamp_defmt_asc(char* str, char *fmt, Timestamp *d) {
-   int year, month, day;
-   int hour, minute, second;
-   int tz;
-
-   int i;
-   char* mstr;
-   char* mfmt;
-
-   if (!fmt) {
+int
+PGTYPEStimestamp_defmt_asc(char *str, char *fmt, Timestamp *d)
+{
+   int         year,
+               month,
+               day;
+   int         hour,
+               minute,
+               second;
+   int         tz;
+
+   int         i;
+   char       *mstr;
+   char       *mfmt;
+
+   if (!fmt)
        fmt = "%Y-%m-%d %H:%M:%S";
-   }
-   if (!fmt[0]) {
+   if (!fmt[0])
        return 1;
-   }
 
    mstr = pgtypes_strdup(str);
    mfmt = pgtypes_strdup(fmt);
-   /* initialize with impossible values so that we can see if the
-    * fields where specified at all */
+
+   /*
+    * initialize with impossible values so that we can see if the fields
+    * where specified at all
+    */
    /* XXX ambiguity with 1 BC for year? */
-   year = -1; month = -1; day = -1; hour = 0; minute = -1; second = -1;
+   year = -1;
+   month = -1;
+   day = -1;
+   hour = 0;
+   minute = -1;
+   second = -1;
    tz = 0;
 
    i = PGTYPEStimestamp_defmt_scan(&mstr, mfmt, d, &year, &month, &day, &hour, &minute, &second, &tz);
@@ -781,4 +841,3 @@ int PGTYPEStimestamp_defmt_asc(char* str, char *fmt, Timestamp *d) {
    free(mfmt);
    return i;
 }
-
index 7b19227375c93e3d5d2cb185418ec2c2682454c9..fa2ee17f617aedf08dbcdf7e4118d9d2ad63b432 100644 (file)
@@ -28,24 +28,24 @@ static ScanKeyword ScanKeywords[] = {
    {"enum", SQL_ENUM},
    {"extern", S_EXTERN},
    {"float", FLOAT_P},
-        {"hour", HOUR_P},
+   {"hour", HOUR_P},
    {"int", INT_P},
    {"long", SQL_LONG},
    {"minute", MINUTE_P},
-        {"month", MONTH_P},
+   {"month", MONTH_P},
    {"register", S_REGISTER},
-        {"second", SECOND_P},
+   {"second", SECOND_P},
    {"short", SQL_SHORT},
    {"signed", SQL_SIGNED},
    {"static", S_STATIC},
    {"struct", SQL_STRUCT},
-        {"to", TO},
+   {"to", TO},
    {"typedef", S_TYPEDEF},
    {"union", UNION},
    {"unsigned", SQL_UNSIGNED},
    {"varchar", VARCHAR},
    {"volatile", S_VOLATILE},
-   {"year", YEAR_P},   
+   {"year", YEAR_P},
 };
 
 ScanKeyword *
index fb0f6dcb8598c115a2dc75916b481b2038336113..7cf8eeebb2faa8b33c0067a6590559796741c47f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.76 2003/08/01 08:21:04 meskes Exp $ */
+/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/ecpg.c,v 1.77 2003/08/04 00:43:33 momjian Exp $ */
 
 /* New main for ecpg, the PostgreSQL embedded SQL precompiler. */
 /* (C) Michael Meskes <[email protected]> Feb 5th, 1998 */
@@ -23,7 +23,7 @@ int           ret_value = 0,
            system_includes = false,
            force_indicator = true;
 
-enum COMPAT_MODE   compat = ECPG_COMPAT_PGSQL;
+enum COMPAT_MODE compat = ECPG_COMPAT_PGSQL;
 
 struct _include_path *include_paths = NULL;
 struct cursor *cur = NULL;
@@ -49,7 +49,7 @@ help(const char *progname)
           "                 \"INFORMIX\"\n"
           "                 \"INFORMIX_SE\"\n");
    printf("  -r <option>    specify runtime behaviour\n"
-              "             option may be only \"no_indicator\" at the moment\n"); 
+          "             option may be only \"no_indicator\" at the moment\n");
    printf("  -D SYMBOL      define SYMBOL\n");
    printf("  -I DIRECTORY   search DIRECTORY for include files\n");
    printf("  -o OUTFILE     write result to OUTFILE\n");
@@ -65,7 +65,8 @@ help(const char *progname)
 static void
 add_include_path(char *path)
 {
-   struct _include_path *ip = include_paths, *new;
+   struct _include_path *ip = include_paths,
+              *new;
 
    new = mm_alloc(sizeof(struct _include_path));
    new->path = path;
@@ -75,7 +76,7 @@ add_include_path(char *path)
        include_paths = new;
    else
    {
-       for (;ip->next != NULL; ip=ip->next);
+       for (; ip->next != NULL; ip = ip->next);
        ip->next = new;
    }
 }
@@ -84,21 +85,22 @@ static void
 add_preprocessor_define(char *define)
 {
    struct _defines *pd = defines;
-   char *ptr, *define_copy = mm_strdup(define);
-   
+   char       *ptr,
+              *define_copy = mm_strdup(define);
+
    defines = mm_alloc(sizeof(struct _defines));
-   
+
    /* look for = sign */
    ptr = strchr(define_copy, '=');
    if (ptr != NULL)
    {
-       char *tmp;
-       
+       char       *tmp;
+
        /* symbol gets a value */
-       for (tmp=ptr-1; *tmp == ' '; tmp--);
+       for (tmp = ptr - 1; *tmp == ' '; tmp--);
        tmp[1] = '\0';
        defines->old = define_copy;
-       defines->new = ptr+1;
+       defines->new = ptr + 1;
    }
    else
    {
@@ -141,11 +143,11 @@ main(int argc, char *const argv[])
        switch (c)
        {
            case 'o':
-               if (strcmp(optarg, "-") == 0) 
+               if (strcmp(optarg, "-") == 0)
                    yyout = stdout;
                else
                    yyout = fopen(optarg, PG_BINARY_W);
-               
+
                if (yyout == NULL)
                    perror(optarg);
                else
@@ -179,7 +181,7 @@ main(int argc, char *const argv[])
                {
                    fprintf(stderr, "Try '%s --help' for more information.\n", argv[0]);
                    return ILLEGAL_OPTION;
-               }               
+               }
                break;
            case 'r':
                if (strcmp(optarg, "no_indicator") == 0)
@@ -240,7 +242,7 @@ main(int argc, char *const argv[])
            /* If argv[fnr] is "-" we have to read from stdin */
            if (strcmp(argv[fnr], "-") == 0)
            {
-               input_filename = mm_alloc(strlen("stdin")+1);
+               input_filename = mm_alloc(strlen("stdin") + 1);
                strcpy(input_filename, "stdin");
                yyin = stdin;
            }
@@ -265,7 +267,7 @@ main(int argc, char *const argv[])
                    ptr2ext[3] = 'c';
                    ptr2ext[4] = '\0';
                }
-               
+
                yyin = fopen(input_filename, PG_BINARY_R);
            }
 
@@ -377,7 +379,7 @@ main(int argc, char *const argv[])
 
                /* finally the actual connection */
                connection = NULL;
-               
+
                /* initialize lex */
                lex_init();
 
@@ -387,7 +389,7 @@ main(int argc, char *const argv[])
                /* add some compatibility headers */
                if (INFORMIX_MODE)
                    fprintf(yyout, "/* Needed for informix compatibility */\n#include <ecpg_informix.h>\n");
-               
+
                fprintf(yyout, "/* End of automatic include section */\n");
 
                /* and parse the source */
index aa76930e7c7eb0e799fd4881aadafbbb9e40c6d6..a1ea69e1860eacd91f2d63f142f39054384816a0 100644 (file)
@@ -96,8 +96,12 @@ extern ScanKeyword *ScanKeywordLookup(char *text);
 #define INDICATOR_NOT_STRUCT   6
 #define INDICATOR_NOT_SIMPLE   7
 
-enum COMPAT_MODE { ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE};
+enum COMPAT_MODE
+{
+   ECPG_COMPAT_PGSQL = 0, ECPG_COMPAT_INFORMIX, ECPG_COMPAT_INFORMIX_SE
+};
 extern enum COMPAT_MODE compat;
+
 #define INFORMIX_MODE  (compat == ECPG_COMPAT_INFORMIX || compat == ECPG_COMPAT_INFORMIX_SE)
 
-#endif /* _ECPG_PREPROC_EXTERN_H */
+#endif   /* _ECPG_PREPROC_EXTERN_H */
index ee4bac58598ad1af4061eaf413c4b2929f4653bd..6eb1209ede4bfa5d213360bf77cc925f0868d21e 100644 (file)
@@ -220,10 +220,10 @@ static void ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, c
 
 void
 ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type,
-       const char *ind_name, struct ECPGtype * ind_type,
-       const char *prefix, const char *ind_prefix,
-       char *arr_str_siz, const char *struct_sizeof,
-       const char *ind_struct_sizeof)
+               const char *ind_name, struct ECPGtype * ind_type,
+               const char *prefix, const char *ind_prefix,
+               char *arr_str_siz, const char *struct_sizeof,
+               const char *ind_struct_sizeof)
 {
    switch (type->type)
    {
@@ -238,20 +238,20 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type,
                case ECPGt_struct:
                case ECPGt_union:
                    ECPGdump_a_struct(o, name,
-                           ind_name,
-                           type->size,
-                           type->u.element,
-                           (ind_type->type == ECPGt_NO_INDICATOR) ? ind_type : ind_type->u.element,
-                           NULL, prefix, ind_prefix);
+                                     ind_name,
+                                     type->size,
+                                     type->u.element,
+                                     (ind_type->type == ECPGt_NO_INDICATOR) ? ind_type : ind_type->u.element,
+                                     NULL, prefix, ind_prefix);
                    break;
                default:
                    if (!IS_SIMPLE_TYPE(type->u.element->type))
                        yyerror("Internal error: unknown datatype, please inform [email protected]");
 
                    ECPGdump_a_simple(o, name,
-                       type->u.element->type,
+                                     type->u.element->type,
                        type->u.element->size, type->size, NULL, prefix);
-                   
+
                    if (ind_type != NULL)
                    {
                        if (ind_type->type == ECPGt_NO_INDICATOR)
@@ -259,7 +259,7 @@ ECPGdump_a_type(FILE *o, const char *name, struct ECPGtype * type,
                        else
                        {
                            ECPGdump_a_simple(o, ind_name, ind_type->u.element->type,
-                                     ind_type->u.element->size, ind_type->size, NULL, prefix);
+                                             ind_type->u.element->size, ind_type->size, NULL, prefix);
                        }
                    }
            }
@@ -318,22 +318,23 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
    {
        char       *variable = (char *) mm_alloc(strlen(name) + ((prefix == NULL) ? 0 : strlen(prefix)) + 4);
        char       *offset = (char *) mm_alloc(strlen(name) + strlen("sizeof(struct varchar_)") + 1);
-       
+
        switch (type)
        {
-           /*
-            * we have to use the & operator except for arrays and pointers
-                         */
-           
+               /*
+                * we have to use the & operator except for arrays and
+                * pointers
+                */
+
            case ECPGt_varchar:
 
                /*
                 * we have to use the pointer except for arrays with given
                 * bounds
                 */
-               if (((atoi(arrsize) > 0) || 
-                    (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0)) &&
-                     siz == NULL)
+               if (((atoi(arrsize) > 0) ||
+                    (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0)) &&
+                   siz == NULL)
                    sprintf(variable, "(%s%s)", prefix ? prefix : "", name);
                else
                    sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
@@ -346,13 +347,13 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
 
                /*
                 * we have to use the pointer except for arrays with given
-                * bounds, ecpglib will distinguish between * and [] 
+                * bounds, ecpglib will distinguish between * and []
                 */
                if ((atoi(varcharsize) > 1 ||
-                   (atoi(arrsize) > 0) ||
-                   (atoi(varcharsize) == 0 && strcmp(varcharsize, "0") != 0) ||
-                   (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0))
-                    && siz == NULL)
+                    (atoi(arrsize) > 0) ||
+                    (atoi(varcharsize) == 0 && strcmp(varcharsize, "0") != 0) ||
+                    (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0))
+                   && siz == NULL)
                    sprintf(variable, "(%s%s)", prefix ? prefix : "", name);
                else
                    sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
@@ -362,7 +363,7 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
            case ECPGt_numeric:
 
                /*
-                *  we have to use a pointer here
+                * we have to use a pointer here
                 */
                sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
                sprintf(offset, "sizeof(Numeric)");
@@ -370,7 +371,7 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
            case ECPGt_interval:
 
                /*
-                *  we have to use a pointer here
+                * we have to use a pointer here
                 */
                sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
                sprintf(offset, "sizeof(Interval)");
@@ -378,7 +379,8 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
            case ECPGt_date:
 
                /*
-                *  we have to use a pointer and translate the variable type
+                * we have to use a pointer and translate the variable
+                * type
                 */
                sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
                sprintf(offset, "sizeof(Date)");
@@ -386,7 +388,8 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
            case ECPGt_timestamp:
 
                /*
-                *  we have to use a pointer and translate the variable type
+                * we have to use a pointer and translate the variable
+                * type
                 */
                sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
                sprintf(offset, "sizeof(Date)");
@@ -394,7 +397,7 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
            case ECPGt_const:
 
                /*
-                * just dump the const as string 
+                * just dump the const as string
                 */
                sprintf(variable, "\"%s\"", name);
                sprintf(offset, "strlen(\"%s\")", name);
@@ -405,9 +408,9 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
                 * we have to use the pointer except for arrays with given
                 * bounds
                 */
-               if (((atoi(arrsize) > 0) || 
-                    (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0)) &&
-                     siz == NULL)
+               if (((atoi(arrsize) > 0) ||
+                    (atoi(arrsize) == 0 && strcmp(arrsize, "0") != 0)) &&
+                   siz == NULL)
                    sprintf(variable, "(%s%s)", prefix ? prefix : "", name);
                else
                    sprintf(variable, "&(%s%s)", prefix ? prefix : "", name);
@@ -418,7 +421,7 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type,
 
        if (atoi(arrsize) < 0)
            strcpy(arrsize, "1");
-       
+
        if (siz == NULL || strcmp(arrsize, "0") == 0 || strcmp(arrsize, "1") == 0)
            fprintf(o, "\n\t%s,%s,(long)%s,(long)%s,%s, ", get_type(type), variable, varcharsize, arrsize, offset);
        else
@@ -476,11 +479,11 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, char *arrsiz,
 
    for (p = type->u.members; p; p = p->next)
    {
-       ECPGdump_a_type(o, p->name, p->type, 
-               (ind_p != NULL) ? ind_p->name : NULL,
-               (ind_p != NULL) ? ind_p->type : NULL, 
-               prefix, ind_prefix, arrsiz, type->struct_sizeof,
-               (ind_p != NULL) ? ind_type->struct_sizeof : NULL);
+       ECPGdump_a_type(o, p->name, p->type,
+                       (ind_p != NULL) ? ind_p->name : NULL,
+                       (ind_p != NULL) ? ind_p->type : NULL,
+                       prefix, ind_prefix, arrsiz, type->struct_sizeof,
+                       (ind_p != NULL) ? ind_type->struct_sizeof : NULL);
        if (ind_p != NULL && ind_p != &struct_no_indicator)
            ind_p = ind_p->next;
    }
index 9e8d6cea30870bd86e52fb224ca37386d6b368ac..2dd511ff854f284399082fc024e5f1b042e68382 100644 (file)
@@ -14,16 +14,17 @@ struct ECPGstruct_member
 struct ECPGtype
 {
    enum ECPGttype type;
-   char *size;     /* For array it is the number of elements.
-                * For varchar it is the maxsize of the
-                * area. */
-   char *struct_sizeof;    /* For a struct this is the sizeof() type
-                * as string */
+   char       *size;           /* For array it is the number of elements.
+                                * For varchar it is the maxsize of the
+                                * area. */
+   char       *struct_sizeof;  /* For a struct this is the sizeof() type
+                                * as string */
    union
    {
        struct ECPGtype *element;       /* For an array this is the type
-                           * of the element */
-       struct ECPGstruct_member *members;  /* A pointer to a list of members. */
+                                        * of the element */
+       struct ECPGstruct_member *members;      /* A pointer to a list of
+                                                * members. */
    }           u;
 };
 
@@ -49,9 +50,9 @@ void      ECPGfree_type(struct ECPGtype *);
    size is the maxsize in case it is a varchar. Otherwise it is the size of
       the variable (required to do array fetches of structs).
  */
-void ECPGdump_a_type(FILE *, const char *, struct ECPGtype *, 
-       const char *, struct ECPGtype *, const char *,
-       const char *, char *, const char *, const char *);
+void ECPGdump_a_type(FILE *, const char *, struct ECPGtype *,
+               const char *, struct ECPGtype *, const char *,
+               const char *, char *, const char *, const char *);
 
 /* A simple struct to keep a variable and its type. */
 struct ECPGtemp_type
@@ -83,24 +84,24 @@ struct when
 
 struct index
 {
-   char    *index1;
-   char    *index2;
-   char    *str;
+   char       *index1;
+   char       *index2;
+   char       *str;
 };
 
 struct su_symbol
 {
-   char    *su;
-   char    *symbol;
+   char       *su;
+   char       *symbol;
 };
 
 struct this_type
 {
    enum ECPGttype type_enum;
-   char    *type_str;
-   char    *type_dimension;
-   char    *type_index;
-   char    *type_sizeof;
+   char       *type_str;
+   char       *type_dimension;
+   char       *type_index;
+   char       *type_sizeof;
 };
 
 struct _include_path
@@ -182,4 +183,4 @@ typedef struct ScanKeyword
    int         value;
 } ScanKeyword;
 
-#endif /* _ECPG_PREPROC_TYPE_H */
+#endif   /* _ECPG_PREPROC_TYPE_H */
index f295d177d9c2bc8aac577a78ff7108d0a1f97164..d13561ab0ca5e19480a2fc330a4e242d8a76264d 100644 (file)
@@ -23,7 +23,8 @@ static struct variable *
 find_struct_member(char *name, char *str, struct ECPGstruct_member * members, int brace_level)
 {
    char       *next = strpbrk(++str, ".-["),
-               *end, c = '\0';
+              *end,
+               c = '\0';
 
    if (next != NULL)
    {
@@ -54,54 +55,64 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members, in
                *next = c;
                if (c == '[')
                {
-                   int count;
+                   int         count;
 
-                   /* We don't care about what's inside the array braces
-                    * so just eat up the character */
-                   for (count=1, end=next+1; count; end++)
+                   /*
+                    * We don't care about what's inside the array braces
+                    * so just eat up the character
+                    */
+                   for (count = 1, end = next + 1; count; end++)
                    {
-                         switch (*end)
-                         {
-                             case '[': count++;
-                                   break;
-                             case ']': count--;
-                                   break;
-                             default : break;
-                         }
+                       switch (*end)
+                       {
+                           case '[':
+                               count++;
+                               break;
+                           case ']':
+                               count--;
+                               break;
+                           default:
+                               break;
+                       }
                    }
                }
-               else end = next;
-           
+               else
+                   end = next;
+
                switch (*end)
                {
-                   case '\0':  /* found the end, but this time it has to be an array element */
-                           if (members->type->type != ECPGt_array)
-                           {
-                               snprintf(errortext, sizeof(errortext), "incorrectly formed variable %s", name);
-                               mmerror(PARSE_ERROR, ET_FATAL, errortext);
-                           }
-                           
-                           switch (members->type->u.element->type)
-                           {
-                               case ECPGt_array:
-                                   return (new_variable(name, ECPGmake_array_type(members->type->u.element->u.element, members->type->u.element->size), brace_level));
-                               case ECPGt_struct:
-                               case ECPGt_union:
-                                   return (new_variable(name, ECPGmake_struct_type(members->type->u.element->u.members, members->type->u.element->type, members->type->u.element->struct_sizeof), brace_level));
-                               default:
-                                   return (new_variable(name, ECPGmake_simple_type(members->type->u.element->type, members->type->u.element->size), brace_level));
-                           }
-                           break;
-                   case '-':   return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
-                           break;
-                   case '.':   if (members->type->type != ECPGt_array)
-                               return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
-                           else
-                               return (find_struct_member(name, next, members->type->u.members, brace_level));
-                           break;
-                   default :   snprintf(errortext, sizeof(errortext), "incorrectly formed variable %s", name);
+                   case '\0':  /* found the end, but this time it has to
+                                * be an array element */
+                       if (members->type->type != ECPGt_array)
+                       {
+                           snprintf(errortext, sizeof(errortext), "incorrectly formed variable %s", name);
                            mmerror(PARSE_ERROR, ET_FATAL, errortext);
-                           break;
+                       }
+
+                       switch (members->type->u.element->type)
+                       {
+                           case ECPGt_array:
+                               return (new_variable(name, ECPGmake_array_type(members->type->u.element->u.element, members->type->u.element->size), brace_level));
+                           case ECPGt_struct:
+                           case ECPGt_union:
+                               return (new_variable(name, ECPGmake_struct_type(members->type->u.element->u.members, members->type->u.element->type, members->type->u.element->struct_sizeof), brace_level));
+                           default:
+                               return (new_variable(name, ECPGmake_simple_type(members->type->u.element->type, members->type->u.element->size), brace_level));
+                       }
+                       break;
+                   case '-':
+                       return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
+                       break;
+                   case '.':
+                       if (members->type->type != ECPGt_array)
+                           return (find_struct_member(name, end, members->type->u.element->u.members, brace_level));
+                       else
+                           return (find_struct_member(name, next, members->type->u.members, brace_level));
+                       break;
+                   default:
+                       snprintf(errortext, sizeof(errortext), "incorrectly formed variable %s", name);
+                       mmerror(PARSE_ERROR, ET_FATAL, errortext);
+                       break;
                }
            }
        }
@@ -195,33 +206,40 @@ find_simple(char *name)
 struct variable *
 find_variable(char *name)
 {
-   char       *next, *end;
+   char       *next,
+              *end;
    struct variable *p;
-   int count;
+   int         count;
 
    next = strpbrk(name, ".[-");
    if (next)
    {
        if (*next == '[')
        {
-           /* We don't care about what's inside the array braces
-            * so just eat up the character */
-           for (count=1, end=next+1; count; end++)
+           /*
+            * We don't care about what's inside the array braces so just
+            * eat up the character
+            */
+           for (count = 1, end = next + 1; count; end++)
            {
-                 switch (*end)
-                 {
-                     case '[': count++;
-                           break;
-                     case ']': count--;
-                           break;
-                     default : break;
-                 }
+               switch (*end)
+               {
+                   case '[':
+                       count++;
+                       break;
+                   case ']':
+                       count--;
+                       break;
+                   default:
+                       break;
+               }
            }
-           if (*end == '.') p = find_struct(name, next, end);
+           if (*end == '.')
+               p = find_struct(name, next, end);
            else
            {
-               char c = *next;
-                
+               char        c = *next;
+
                *next = '\0';
                p = find_simple(name);
                *next = c;
@@ -237,9 +255,11 @@ find_variable(char *name)
                }
            }
        }
-       else p = find_struct(name, next, next);
+       else
+           p = find_struct(name, next, next);
    }
-   else p = find_simple(name);
+   else
+       p = find_simple(name);
 
    if (p == NULL)
    {
@@ -263,9 +283,10 @@ remove_variables(int brace_level)
            /* is it still referenced by a cursor? */
            struct cursor *ptr;
 
-                        for (ptr = cur; ptr != NULL; ptr = ptr->next)
+           for (ptr = cur; ptr != NULL; ptr = ptr->next)
            {
-               struct arguments *varptr, *prevvar;
+               struct arguments *varptr,
+                          *prevvar;
 
                for (varptr = prevvar = ptr->argsinsert; varptr != NULL; varptr = varptr->next)
                {
@@ -290,7 +311,7 @@ remove_variables(int brace_level)
                    }
                }
            }
-                           
+
            /* remove it */
            if (p == allvariables)
                prev = allvariables = p->next;
@@ -373,7 +394,7 @@ dump_variables(struct arguments * list, int mode)
    dump_variables(list->next, mode);
 
    /* Then the current element and its indicator */
-   ECPGdump_a_type(yyout, list->variable->name, list->variable->type, 
+   ECPGdump_a_type(yyout, list->variable->name, list->variable->type,
                    list->indicator->name, list->indicator->type,
                    NULL, NULL, 0, NULL, NULL);
 
@@ -512,14 +533,17 @@ adjust_array(enum ECPGttype type_enum, char **dimension, char **length, char *ty
            /* one index is the string length */
            if (atoi(*length) < 0)
            {
-               /* make sure we return length = -1 for arrays without given bounds */
+               /*
+                * make sure we return length = -1 for arrays without
+                * given bounds
+                */
                if (atoi(*dimension) < 0)
                    *length = make_str("1");
                else if (atoi(*dimension) == 0)
                    *length = make_str("-1");
-               else 
+               else
                    *length = *dimension;
-               
+
                *dimension = make_str("-1");
            }
            break;
index 97deada373457f950bada6e9876db33acf9fb5d4..b247832c227619a0e0f2e18ee58f392e4a96a1a7 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.71 2002/12/30 22:10:54 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.72 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -289,11 +289,11 @@ Pg_conndefaults(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *ar
 int
 Pg_connect(ClientData cData, Tcl_Interp *interp, int argc, CONST84 char *argv[])
 {
-   const char     *pghost = NULL;
-   const char     *pgtty = NULL;
-   const char     *pgport = NULL;
-   const char     *pgoptions = NULL;
-   const char     *dbName;
+   const char *pghost = NULL;
+   const char *pgtty = NULL;
+   const char *pgport = NULL;
+   const char *pgoptions = NULL;
+   const char *dbName;
    int         i;
    PGconn     *conn;
 
index 1e50cdcd94ff76d92e5229dadb0a2644d2a66d17..43d415cd3f5066ee5fafc7db92cac45020ece3cc 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pgtclCmds.h,v 1.29 2002/12/30 22:10:54 tgl Exp $
+ * $Id: pgtclCmds.h,v 1.30 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -93,23 +93,23 @@ typedef struct Pg_ConnectionId_s
 /* registered Tcl functions */
 /* **************************/
 extern int Pg_conndefaults(ClientData cData, Tcl_Interp *interp,
-                          int argc, CONST84 char *argv[]);
+               int argc, CONST84 char *argv[]);
 extern int Pg_connect(ClientData cData, Tcl_Interp *interp,
-                     int argc, CONST84 char *argv[]);
+          int argc, CONST84 char *argv[]);
 extern int Pg_disconnect(ClientData cData, Tcl_Interp *interp,
-                        int argc, CONST84 char *argv[]);
+             int argc, CONST84 char *argv[]);
 extern int Pg_exec(ClientData cData, Tcl_Interp *interp,
-                  int argc, CONST84 char *argv[]);
+       int argc, CONST84 char *argv[]);
 extern int Pg_execute(ClientData cData, Tcl_Interp *interp,
-                     int argc, CONST84 char *argv[]);
+          int argc, CONST84 char *argv[]);
 extern int Pg_select(ClientData cData, Tcl_Interp *interp,
-                    int argc, CONST84 char *argv[]);
+         int argc, CONST84 char *argv[]);
 extern int Pg_result(ClientData cData, Tcl_Interp *interp,
-                    int argc, CONST84 char *argv[]);
+         int argc, CONST84 char *argv[]);
 extern int Pg_lo_open(ClientData cData, Tcl_Interp *interp,
-                     int argc, CONST84 char *argv[]);
+          int argc, CONST84 char *argv[]);
 extern int Pg_lo_close(ClientData cData, Tcl_Interp *interp,
-                      int argc, CONST84 char *argv[]);
+           int argc, CONST84 char *argv[]);
 
 #ifdef PGTCL_USE_TCLOBJ
 extern int Pg_lo_read(ClientData cData, Tcl_Interp *interp, int objc,
@@ -119,25 +119,25 @@ extern int Pg_lo_write(ClientData cData, Tcl_Interp *interp, int objc,
 
 #else
 extern int Pg_lo_read(ClientData cData, Tcl_Interp *interp,
-                     int argc, CONST84 char *argv[]);
+          int argc, CONST84 char *argv[]);
 extern int Pg_lo_write(ClientData cData, Tcl_Interp *interp,
-                      int argc, CONST84 char *argv[]);
+           int argc, CONST84 char *argv[]);
 #endif
 extern int Pg_lo_lseek(ClientData cData, Tcl_Interp *interp,
-                      int argc, CONST84 char *argv[]);
+           int argc, CONST84 char *argv[]);
 extern int Pg_lo_creat(ClientData cData, Tcl_Interp *interp,
-                      int argc, CONST84 char *argv[]);
+           int argc, CONST84 char *argv[]);
 extern int Pg_lo_tell(ClientData cData, Tcl_Interp *interp,
-                     int argc, CONST84 char *argv[]);
+          int argc, CONST84 char *argv[]);
 extern int Pg_lo_unlink(ClientData cData, Tcl_Interp *interp,
-                       int argc, CONST84 char *argv[]);
+            int argc, CONST84 char *argv[]);
 extern int Pg_lo_import(ClientData cData, Tcl_Interp *interp,
-                       int argc, CONST84 char *argv[]);
+            int argc, CONST84 char *argv[]);
 extern int Pg_lo_export(ClientData cData, Tcl_Interp *interp,
-                       int argc, CONST84 char *argv[]);
+            int argc, CONST84 char *argv[]);
 extern int Pg_listen(ClientData cData, Tcl_Interp *interp,
-                    int argc, CONST84 char *argv[]);
+         int argc, CONST84 char *argv[]);
 extern int Pg_on_connection_loss(ClientData cData, Tcl_Interp *interp,
-                                int argc, CONST84 char *argv[]);
+                     int argc, CONST84 char *argv[]);
 
 #endif   /* PGTCLCMDS_H */
index 7467b0241223d7e266155d1cd82e560634427b3c..438f2a2a58676382d027faf5386f250ffba8b7c1 100644 (file)
@@ -13,7 +13,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.41 2003/03/25 02:44:36 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.42 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -296,14 +296,14 @@ PgDelConnectionId(DRIVER_DEL_PROTO)
     * the socket itself!
     *
     * XXX Unfortunately, while this works fine if we are closing due to
-    * explicit pg_disconnect, all Tcl versions through 8.4.1 dump core
-    * if we try to do it during interpreter shutdown.  Not clear why.
-    * For now, we kill the channel during pg_disconnect, but during interp
-    * shutdown we just accept leakage of the (fairly small) amount of memory
-    * taken for the channel state representation.
-    * (Note we are not leaking a socket, since libpq closed that already.)
-    * We tell the difference between pg_disconnect and interpreter shutdown
-    * by testing for interp != NULL, which is an undocumented but apparently
+    * explicit pg_disconnect, all Tcl versions through 8.4.1 dump core if
+    * we try to do it during interpreter shutdown.  Not clear why. For
+    * now, we kill the channel during pg_disconnect, but during interp
+    * shutdown we just accept leakage of the (fairly small) amount of
+    * memory taken for the channel state representation. (Note we are not
+    * leaking a socket, since libpq closed that already.) We tell the
+    * difference between pg_disconnect and interpreter shutdown by
+    * testing for interp != NULL, which is an undocumented but apparently
     * safe way to tell.
     */
 #if TCL_MAJOR_VERSION >= 8
index 102324f01d5c6f74794fdda27b6dfef51d941237..cb8a8a83cede827174b8d463d570e52d5d4db81f 100644 (file)
@@ -10,7 +10,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pgtclId.h,v 1.22 2002/12/30 22:10:54 tgl Exp $
+ * $Id: pgtclId.h,v 1.23 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -39,8 +39,8 @@ extern PGconn *PgGetConnectionId(Tcl_Interp *interp, CONST84 char *id,
 extern int PgDelConnectionId(DRIVER_DEL_PROTO);
 extern int PgOutputProc(DRIVER_OUTPUT_PROTO);
 extern int PgInputProc(DRIVER_INPUT_PROTO);
-extern int PgSetResultId(Tcl_Interp *interp, CONST84 char *connid,
-                         PGresult *res);
+extern int PgSetResultId(Tcl_Interp *interp, CONST84 char *connid,
+             PGresult *res);
 extern PGresult *PgGetResultId(Tcl_Interp *interp, CONST84 char *id);
 extern void PgDelResultId(Tcl_Interp *interp, CONST84 char *id);
 extern int PgGetConnByResultId(Tcl_Interp *interp, CONST84 char *resid);
index 68c4be03721d21e5aad0586257afef948f20a6b9..b255e92c9fd81fe57398b798df03d51c48ef1344 100644 (file)
@@ -10,7 +10,7 @@
  * exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes).
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.81 2003/06/25 01:19:47 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.82 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -388,7 +388,7 @@ pg_krb5_sendauth(char *PQerrormsg, int sock, const char *hostname)
    flags = fcntl(sock, F_GETFL);
    if (flags < 0 || fcntl(sock, F_SETFL, (long) (flags & ~O_NONBLOCK)))
    {
-       char sebuf[256];
+       char        sebuf[256];
 
        snprintf(PQerrormsg, PQERRORMSG_LENGTH,
                 libpq_gettext("could not set socket to blocking mode: %s\n"), pqStrerror(errno, sebuf, sizeof(sebuf)));
@@ -435,7 +435,7 @@ pg_krb5_sendauth(char *PQerrormsg, int sock, const char *hostname)
 
    if (fcntl(sock, F_SETFL, (long) flags))
    {
-       char sebuf[256];
+       char        sebuf[256];
 
        snprintf(PQerrormsg, PQERRORMSG_LENGTH,
                 libpq_gettext("could not restore non-blocking mode on socket: %s\n"),
@@ -496,11 +496,11 @@ pg_local_sendauth(char *PQerrormsg, PGconn *conn)
 
    if (sendmsg(conn->sock, &msg, 0) == -1)
    {
-       char sebuf[256];
+       char        sebuf[256];
 
        snprintf(PQerrormsg, PQERRORMSG_LENGTH,
-            "pg_local_sendauth: sendmsg: %s\n",
-            pqStrerror(errno, sebuf, sizeof(sebuf)));
+                "pg_local_sendauth: sendmsg: %s\n",
+                pqStrerror(errno, sebuf, sizeof(sebuf)));
        return STATUS_ERROR;
    }
    return STATUS_OK;
@@ -592,9 +592,9 @@ fe_sendauth(AuthRequest areq, PGconn *conn, const char *hostname,
        case AUTH_REQ_KRB4:
 #ifdef KRB4
            if (pg_krb4_sendauth(PQerrormsg, conn->sock,
-               (struct sockaddr_in *)&conn->laddr.addr,
-               (struct sockaddr_in *)&conn->raddr.addr,
-               hostname) != STATUS_OK)
+                              (struct sockaddr_in *) & conn->laddr.addr,
+                              (struct sockaddr_in *) & conn->raddr.addr,
+                                hostname) != STATUS_OK)
            {
                snprintf(PQerrormsg, PQERRORMSG_LENGTH,
                    libpq_gettext("Kerberos 4 authentication failed\n"));
@@ -610,7 +610,7 @@ fe_sendauth(AuthRequest areq, PGconn *conn, const char *hostname,
        case AUTH_REQ_KRB5:
 #ifdef KRB5
            if (pg_krb5_sendauth(PQerrormsg, conn->sock,
-               hostname) != STATUS_OK)
+                                hostname) != STATUS_OK)
            {
                snprintf(PQerrormsg, PQERRORMSG_LENGTH,
                    libpq_gettext("Kerberos 5 authentication failed\n"));
@@ -743,13 +743,13 @@ fe_getauthname(char *PQerrormsg)
        if (GetUserName(username, &namesize))
            name = username;
 #else
-       char pwdbuf[BUFSIZ];
+       char        pwdbuf[BUFSIZ];
        struct passwd pwdstr;
        struct passwd *pw = NULL;
 
-       ifpqGetpwuid(geteuid(), &pwdstr,
-                  pwdbuf, sizeof(pwdbuf), &pw) == 0 )
-         name = pw->pw_name;
+       if (pqGetpwuid(geteuid(), &pwdstr,
+                      pwdbuf, sizeof(pwdbuf), &pw) == 0)
+           name = pw->pw_name;
 #endif
    }
 
index 1c3443e7713592acff6196fb0573934fa1b78fa8..5ade4011b55d0a7c160ce41c48bc2621545c77b4 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.257 2003/08/01 21:27:26 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.258 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -48,7 +48,7 @@
 
 /* For FNCTL_NONBLOCK */
 #if defined(WIN32) || defined(__BEOS__)
-long ioctlsocket_ret;
+long       ioctlsocket_ret;
 #endif
 
 #define PGPASSFILE ".pgpass"
@@ -136,21 +136,21 @@ static const PQconninfoOption PQconninfoOptions[] = {
    "Backend-Debug-Options", "D", 40},
 
 #ifdef USE_SSL
+
    /*
-    * "requiressl" is deprecated, its purpose having been taken over
-    * by "sslmode". It remains for backwards compatibility.
+    * "requiressl" is deprecated, its purpose having been taken over by
+    * "sslmode". It remains for backwards compatibility.
     */
    {"requiressl", "PGREQUIRESSL", "0", NULL,
    "Require-SSL", "D", 1},
 #endif
 
    /*
-    * "sslmode" option is allowed even without client SSL support
-    * because the client can still handle SSL modes "disable" and
-    * "allow".
+    * "sslmode" option is allowed even without client SSL support because
+    * the client can still handle SSL modes "disable" and "allow".
     */
    {"sslmode", "PGSSLMODE", DefaultSSLMode, NULL,
-   "SSL-Mode", "", 8}, /* sizeof("disable") == 8 */
+   "SSL-Mode", "", 8},         /* sizeof("disable") == 8 */
 
    /* Terminating entry --- MUST BE LAST */
    {NULL, NULL, NULL, NULL,
@@ -196,7 +196,7 @@ static int parseServiceInfo(PQconninfoOption *options,
                 PQExpBuffer errorMessage);
 static char *pwdfMatchesString(char *buf, char *token);
 static char *PasswordFromFile(char *hostname, char *port, char *dbname,
-                             char *username);
+                char *username);
 
 /*
  *     Connecting to a Database
@@ -425,6 +425,7 @@ connectOptions2(PGconn *conn)
    }
 
 #ifdef NOT_USED
+
    /*
     * parse dbName to get all additional info in it, if any
     */
@@ -448,22 +449,24 @@ connectOptions2(PGconn *conn)
        {
            conn->status = CONNECTION_BAD;
            printfPQExpBuffer(&conn->errorMessage,
-                             libpq_gettext("unrecognized sslmode: \"%s\"\n"),
+                        libpq_gettext("unrecognized sslmode: \"%s\"\n"),
                              conn->sslmode);
            return false;
        }
 
 #ifndef USE_SSL
-       switch (conn->sslmode[0]) {
-           case 'a': /* "allow" */
-           case 'p': /* "prefer" */
+       switch (conn->sslmode[0])
+       {
+           case 'a':           /* "allow" */
+           case 'p':           /* "prefer" */
+
                /*
                 * warn user that an SSL connection will never be
                 * negotiated since SSL was not compiled in?
                 */
                break;
 
-           case 'r': /* "require" */
+           case 'r':           /* "require" */
                conn->status = CONNECTION_BAD;
                printfPQExpBuffer(&conn->errorMessage,
                                  libpq_gettext("sslmode \"%s\" invalid when SSL support is not compiled in\n"),
@@ -774,11 +777,11 @@ connectMakeNonblocking(PGconn *conn)
 {
    if (FCNTL_NONBLOCK(conn->sock) < 0)
    {
-       char sebuf[256];
+       char        sebuf[256];
 
        printfPQExpBuffer(&conn->errorMessage,
        libpq_gettext("could not set socket to non-blocking mode: %s\n"),
-                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
        return 0;
    }
 
@@ -801,11 +804,11 @@ connectNoDelay(PGconn *conn)
                   (char *) &on,
                   sizeof(on)) < 0)
    {
-       char sebuf[256];
+       char        sebuf[256];
 
        printfPQExpBuffer(&conn->errorMessage,
        libpq_gettext("could not set socket to TCP no delay mode: %s\n"),
-                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
        return 0;
    }
 #endif
@@ -822,12 +825,12 @@ connectNoDelay(PGconn *conn)
 static void
 connectFailureMessage(PGconn *conn, int errorno)
 {
-   char    sebuf[256];
+   char        sebuf[256];
 
 #ifdef HAVE_UNIX_SOCKETS
    if (IS_AF_UNIX(conn->raddr.addr.ss_family))
    {
-       char    service[NI_MAXHOST];
+       char        service[NI_MAXHOST];
 
        getnameinfo_all(&conn->raddr.addr, conn->raddr.salen,
                        NULL, 0,
@@ -848,7 +851,7 @@ connectFailureMessage(PGconn *conn, int errorno)
        printfPQExpBuffer(&conn->errorMessage,
                          libpq_gettext(
                                      "could not connect to server: %s\n"
-                    "\tIs the server running on host \"%s\" and accepting\n"
+                "\tIs the server running on host \"%s\" and accepting\n"
                                     "\tTCP/IP connections on port %s?\n"
                                        ),
                          SOCK_STRERROR(errorno, sebuf, sizeof(sebuf)),
@@ -873,10 +876,10 @@ static int
 connectDBStart(PGconn *conn)
 {
    int         portnum;
-   char            portstr[128];
-   struct addrinfo     *addrs = NULL;
-   struct addrinfo     hint;
-   const char      *node = NULL;
+   char        portstr[128];
+   struct addrinfo *addrs = NULL;
+   struct addrinfo hint;
+   const char *node = NULL;
    int         ret;
 
    if (!conn)
@@ -943,9 +946,9 @@ connectDBStart(PGconn *conn)
 
 #ifdef USE_SSL
    /* setup values based on SSL mode */
-   if (conn->sslmode[0] == 'd')  /* "disable" */
+   if (conn->sslmode[0] == 'd')    /* "disable" */
        conn->allow_ssl_try = false;
-   else if (conn->sslmode[0] == 'a')  /* "allow" */
+   else if (conn->sslmode[0] == 'a')   /* "allow" */
        conn->wait_ssl_try = true;
 #endif
 
@@ -955,15 +958,16 @@ connectDBStart(PGconn *conn)
    conn->addrlist = addrs;
    conn->addr_cur = addrs;
    conn->addrlist_family = hint.ai_family;
-   conn->pversion = PG_PROTOCOL(3,0);
+   conn->pversion = PG_PROTOCOL(3, 0);
    conn->status = CONNECTION_NEEDED;
 
    /*
-    * The code for processing CONNECTION_NEEDED state is in PQconnectPoll(),
-    * so that it can easily be re-executed if needed again during the
-    * asynchronous startup process.  However, we must run it once here,
-    * because callers expect a success return from this routine to mean
-    * that we are in PGRES_POLLING_WRITING connection state.
+    * The code for processing CONNECTION_NEEDED state is in
+    * PQconnectPoll(), so that it can easily be re-executed if needed
+    * again during the asynchronous startup process.  However, we must
+    * run it once here, because callers expect a success return from this
+    * routine to mean that we are in PGRES_POLLING_WRITING connection
+    * state.
     */
    if (PQconnectPoll(conn) == PGRES_POLLING_WRITING)
        return 1;
@@ -1154,8 +1158,8 @@ keep_going:                       /* We will come back to here until there
                 * Try to initiate a connection to one of the addresses
                 * returned by getaddrinfo_all().  conn->addr_cur is the
                 * next one to try.  We fail when we run out of addresses
-                * (reporting the error returned for the *last* alternative,
-                * which may not be what users expect :-().
+                * (reporting the error returned for the *last*
+                * alternative, which may not be what users expect :-().
                 */
                while (conn->addr_cur != NULL)
                {
@@ -1171,8 +1175,8 @@ keep_going:                       /* We will come back to here until there
                    if (conn->sock < 0)
                    {
                        /*
-                        * ignore socket() failure if we have more addresses
-                        * to try
+                        * ignore socket() failure if we have more
+                        * addresses to try
                         */
                        if (addr_cur->ai_next != NULL)
                        {
@@ -1180,14 +1184,15 @@ keep_going:                     /* We will come back to here until there
                            continue;
                        }
                        printfPQExpBuffer(&conn->errorMessage,
-                             libpq_gettext("could not create socket: %s\n"),
-                                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                         libpq_gettext("could not create socket: %s\n"),
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                        break;
                    }
 
                    /*
-                    * Select socket options: no delay of outgoing data for
-                    * TCP sockets, and nonblock mode.  Fail if this fails.
+                    * Select socket options: no delay of outgoing data
+                    * for TCP sockets, and nonblock mode.  Fail if this
+                    * fails.
                     */
                    if (!IS_AF_UNIX(addr_cur->ai_family))
                    {
@@ -1206,11 +1211,13 @@ keep_going:                     /* We will come back to here until there
                        conn->addr_cur = addr_cur->ai_next;
                        continue;
                    }
+
                    /*
-                    * Start/make connection.  This should not block, since
-                    * we are in nonblock mode.  If it does, well, too bad.
+                    * Start/make connection.  This should not block,
+                    * since we are in nonblock mode.  If it does, well,
+                    * too bad.
                     */
-retry_connect:
+           retry_connect:
                    if (connect(conn->sock, addr_cur->ai_addr,
                                addr_cur->ai_addrlen) < 0)
                    {
@@ -1235,18 +1242,19 @@ retry_connect:
                    {
                        /*
                         * Hm, we're connected already --- seems the
-                        * "nonblock connection" wasn't.  Advance the state
-                        * machine and go do the next stuff.
+                        * "nonblock connection" wasn't.  Advance the
+                        * state machine and go do the next stuff.
                         */
                        conn->status = CONNECTION_STARTED;
                        goto keep_going;
                    }
+
                    /*
                     * This connection failed --- set up error report,
                     * then close socket (do it this way in case close()
-                    * affects the value of errno...).  We will ignore the
-                    * connect() failure and keep going if there are
-                    * more addresses.
+                    * affects the value of errno...).  We will ignore the
+                    * connect() failure and keep going if there are more
+                    * addresses.
                     */
                    connectFailureMessage(conn, SOCK_ERRNO);
                    if (conn->sock >= 0)
@@ -1254,11 +1262,12 @@ retry_connect:
                        closesocket(conn->sock);
                        conn->sock = -1;
                    }
+
                    /*
                     * Try the next address, if any.
                     */
                    conn->addr_cur = addr_cur->ai_next;
-               } /* loop over addresses */
+               }               /* loop over addresses */
 
                /*
                 * Ooops, no more addresses.  An appropriate error message
@@ -1270,7 +1279,7 @@ retry_connect:
        case CONNECTION_STARTED:
            {
                int         optval;
-               ACCEPT_TYPE_ARG3    optlen = sizeof(optval);
+               ACCEPT_TYPE_ARG3 optlen = sizeof(optval);
 
                /*
                 * Write ready, since we've made it here, so the
@@ -1287,7 +1296,7 @@ retry_connect:
                {
                    printfPQExpBuffer(&conn->errorMessage,
                                      libpq_gettext("could not get socket error status: %s\n"),
-                                     SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                    goto error_return;
                }
                else if (optval != 0)
@@ -1298,9 +1307,11 @@ retry_connect:
                     * friendly error message.
                     */
                    connectFailureMessage(conn, optval);
+
                    /*
                     * If more addresses remain, keep trying, just as in
-                    * the case where connect() returned failure immediately.
+                    * the case where connect() returned failure
+                    * immediately.
                     */
                    if (conn->addr_cur->ai_next != NULL)
                    {
@@ -1318,13 +1329,13 @@ retry_connect:
 
                /* Fill in the client address */
                conn->laddr.salen = sizeof(conn->laddr.addr);
-               if (getsockname(conn->sock, 
-                   (struct sockaddr *)&conn->laddr.addr,
-                   &conn->laddr.salen) < 0)
+               if (getsockname(conn->sock,
+                               (struct sockaddr *) & conn->laddr.addr,
+                               &conn->laddr.salen) < 0)
                {
                    printfPQExpBuffer(&conn->errorMessage,
-                       libpq_gettext("could not get client address from socket: %s\n"),
-                                     SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                                     libpq_gettext("could not get client address from socket: %s\n"),
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                    goto error_return;
                }
 
@@ -1337,13 +1348,15 @@ retry_connect:
 
        case CONNECTION_MADE:
            {
-               char   *startpacket;
-               int     packetlen;
+               char       *startpacket;
+               int         packetlen;
 
 #ifdef USE_SSL
+
                /*
-                * If SSL is enabled and we haven't already got it running,
-                * request it instead of sending the startup message.
+                * If SSL is enabled and we haven't already got it
+                * running, request it instead of sending the startup
+                * message.
                 */
                if (IS_AF_UNIX(conn->raddr.addr.ss_family))
                {
@@ -1358,32 +1371,33 @@ retry_connect:
                    /*
                     * Send the SSL request packet.
                     *
-                    * Theoretically, this could block, but it really shouldn't
-                    * since we only got here if the socket is write-ready.
+                    * Theoretically, this could block, but it really
+                    * shouldn't since we only got here if the socket is
+                    * write-ready.
                     */
                    pv = htonl(NEGOTIATE_SSL_CODE);
                    if (pqPacketSend(conn, 0, &pv, sizeof(pv)) != STATUS_OK)
                    {
                        printfPQExpBuffer(&conn->errorMessage,
                                          libpq_gettext("could not send SSL negotiation packet: %s\n"),
-                                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                        goto error_return;
                    }
                    /* Ok, wait for response */
                    conn->status = CONNECTION_SSL_STARTUP;
                    return PGRES_POLLING_READING;
                }
-#endif /* USE_SSL */
+#endif   /* USE_SSL */
 
                /*
                 * Build the startup packet.
                 */
                if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3)
                    startpacket = pqBuildStartupPacket3(conn, &packetlen,
-                                                       EnvironmentOptions);
+                                                    EnvironmentOptions);
                else
                    startpacket = pqBuildStartupPacket2(conn, &packetlen,
-                                                       EnvironmentOptions);
+                                                    EnvironmentOptions);
                if (!startpacket)
                {
                    printfPQExpBuffer(&conn->errorMessage,
@@ -1401,7 +1415,7 @@ retry_connect:
                {
                    printfPQExpBuffer(&conn->errorMessage,
                    libpq_gettext("could not send startup packet: %s\n"),
-                                     SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                    free(startpacket);
                    goto error_return;
                }
@@ -1413,8 +1427,8 @@ retry_connect:
            }
 
            /*
-            * Handle SSL negotiation: wait for postmaster
-            * messages and respond as necessary.
+            * Handle SSL negotiation: wait for postmaster messages and
+            * respond as necessary.
             */
        case CONNECTION_SSL_STARTUP:
            {
@@ -1422,8 +1436,8 @@ retry_connect:
                PostgresPollingStatusType pollres;
 
                /*
-                * On first time through, get the postmaster's response
-                * to our SSL negotiation packet.  Be careful to read only
+                * On first time through, get the postmaster's response to
+                * our SSL negotiation packet.  Be careful to read only
                 * one byte (if there's more, it could be SSL data).
                 */
                if (conn->ssl == NULL)
@@ -1431,7 +1445,7 @@ retry_connect:
                    char        SSLok;
                    int         nread;
 
-retry_ssl_read:
+           retry_ssl_read:
                    nread = recv(conn->sock, &SSLok, 1, 0);
                    if (nread < 0)
                    {
@@ -1441,7 +1455,7 @@ retry_ssl_read:
 
                        printfPQExpBuffer(&conn->errorMessage,
                                          libpq_gettext("could not receive server response to SSL negotiation packet: %s\n"),
-                                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                        goto error_return;
                    }
                    if (nread == 0)
@@ -1455,7 +1469,7 @@ retry_ssl_read:
                    }
                    else if (SSLok == 'N')
                    {
-                       if (conn->sslmode[0] == 'r')  /* "require" */
+                       if (conn->sslmode[0] == 'r')    /* "require" */
                        {
                            /* Require SSL, but server does not want it */
                            printfPQExpBuffer(&conn->errorMessage,
@@ -1472,7 +1486,7 @@ retry_ssl_read:
                        /* Received error - probably protocol mismatch */
                        if (conn->Pfdebug)
                            fprintf(conn->Pfdebug, "Postmaster reports error, attempting fallback to pre-7.0.\n");
-                       if (conn->sslmode[0] == 'r')  /* "require" */
+                       if (conn->sslmode[0] == 'r')    /* "require" */
                        {
                            /* Require SSL, but server is too old */
                            printfPQExpBuffer(&conn->errorMessage,
@@ -1482,7 +1496,7 @@ retry_ssl_read:
                        /* Otherwise, try again without SSL */
                        conn->allow_ssl_try = false;
                        /* Assume it ain't gonna handle protocol 3, either */
-                       conn->pversion = PG_PROTOCOL(2,0);
+                       conn->pversion = PG_PROTOCOL(2, 0);
                        /* Must drop the old connection */
                        closesocket(conn->sock);
                        conn->sock = -1;
@@ -1497,6 +1511,7 @@ retry_ssl_read:
                        goto error_return;
                    }
                }
+
                /*
                 * Begin or continue the SSL negotiation process.
                 */
@@ -1508,10 +1523,10 @@ retry_ssl_read:
                    return PGRES_POLLING_WRITING;
                }
                return pollres;
-#else /* !USE_SSL */
+#else                          /* !USE_SSL */
                /* can't get here */
                goto error_return;
-#endif /* USE_SSL */
+#endif   /* USE_SSL */
            }
 
            /*
@@ -1549,7 +1564,7 @@ retry_ssl_read:
                    printfPQExpBuffer(&conn->errorMessage,
                                      libpq_gettext(
                                  "expected authentication request from "
-                                             "server, but received %c\n"),
+                                           "server, but received %c\n"),
                                      beresp);
                    goto error_return;
                }
@@ -1572,16 +1587,16 @@ retry_ssl_read:
                /*
                 * Try to validate message length before using it.
                 * Authentication requests can't be very large.  Errors
-                * can be a little larger, but not huge.  If we see a large
-                * apparent length in an error, it means we're really talking
-                * to a pre-3.0-protocol server; cope.
+                * can be a little larger, but not huge.  If we see a
+                * large apparent length in an error, it means we're
+                * really talking to a pre-3.0-protocol server; cope.
                 */
                if (beresp == 'R' && (msgLength < 8 || msgLength > 100))
                {
                    printfPQExpBuffer(&conn->errorMessage,
                                      libpq_gettext(
                                  "expected authentication request from "
-                                             "server, but received %c\n"),
+                                           "server, but received %c\n"),
                                      beresp);
                    goto error_return;
                }
@@ -1589,7 +1604,7 @@ retry_ssl_read:
                if (beresp == 'E' && (msgLength < 8 || msgLength > 30000))
                {
                    /* Handle error from a pre-3.0 server */
-                   conn->inCursor = conn->inStart + 1; /* reread data */
+                   conn->inCursor = conn->inStart + 1; /* reread data */
                    if (pqGets(&conn->errorMessage, conn))
                    {
                        /* We'll come back when there is more data */
@@ -1611,7 +1626,7 @@ retry_ssl_read:
                     */
                    if (PG_PROTOCOL_MAJOR(conn->pversion) >= 3)
                    {
-                       conn->pversion = PG_PROTOCOL(2,0);
+                       conn->pversion = PG_PROTOCOL(2, 0);
                        /* Must drop the old connection */
                        pqsecure_close(conn);
                        closesocket(conn->sock);
@@ -1626,16 +1641,16 @@ retry_ssl_read:
                /*
                 * Can't process if message body isn't all here yet.
                 *
-                * (In protocol 2.0 case, we are assuming messages carry
-                * at least 4 bytes of data.)
+                * (In protocol 2.0 case, we are assuming messages carry at
+                * least 4 bytes of data.)
                 */
                msgLength -= 4;
                avail = conn->inEnd - conn->inCursor;
                if (avail < msgLength)
                {
                    /*
-                    * Before returning, try to enlarge the input buffer if
-                    * needed to hold the whole message; see notes in
+                    * Before returning, try to enlarge the input buffer
+                    * if needed to hold the whole message; see notes in
                     * pqParseInput3.
                     */
                    if (pqCheckInBufferSpace(conn->inCursor + msgLength, conn))
@@ -1667,9 +1682,11 @@ retry_ssl_read:
                    conn->inStart = conn->inCursor;
 
 #ifdef USE_SSL
+
                    /*
                     * if sslmode is "allow" and we haven't tried an SSL
-                    * connection already, then retry with an SSL connection
+                    * connection already, then retry with an SSL
+                    * connection
                     */
                    if (conn->sslmode[0] == 'a' /* "allow" */
                        && conn->ssl == NULL
@@ -1691,8 +1708,8 @@ retry_ssl_read:
                     */
                    if (conn->sslmode[0] == 'p' /* "prefer" */
                        && conn->ssl
-                       && conn->allow_ssl_try /* redundant? */
-                       && !conn->wait_ssl_try) /* redundant? */
+                       && conn->allow_ssl_try  /* redundant? */
+                       && !conn->wait_ssl_try) /* redundant? */
                    {
                        /* only retry once */
                        conn->allow_ssl_try = false;
@@ -1797,8 +1814,8 @@ retry_ssl_read:
                 * allowed by the protocol, as are ParameterStatus and
                 * BackendKeyData messages.) Easiest way to handle this is
                 * to let PQgetResult() read the messages. We just have to
-                * fake it out about the state of the connection, by setting
-                * asyncStatus = PGASYNC_BUSY (done above).
+                * fake it out about the state of the connection, by
+                * setting asyncStatus = PGASYNC_BUSY (done above).
                 */
 
                if (PQisBusy(conn))
@@ -1852,10 +1869,11 @@ retry_ssl_read:
        case CONNECTION_SETENV:
 
            /*
-            * Do post-connection housekeeping (only needed in protocol 2.0).
+            * Do post-connection housekeeping (only needed in protocol
+            * 2.0).
             *
-            * We pretend that the connection is OK for the duration of
-            * these queries.
+            * We pretend that the connection is OK for the duration of these
+            * queries.
             */
            conn->status = CONNECTION_OK;
 
@@ -1917,10 +1935,10 @@ makeEmptyPGconn(void)
 
 #ifdef WIN32
    /* needed to use the static libpq under windows as well */
-   WSADATA wsaData;
+   WSADATA     wsaData;
 
    if (WSAStartup(MAKEWORD(1, 1), &wsaData))
-       return (PGconn*) NULL; 
+       return (PGconn *) NULL;
    WSASetLastError(0);
 #endif
 
@@ -1947,8 +1965,8 @@ makeEmptyPGconn(void)
 #endif
 
    /*
-    * We try to send at least 8K at a time, which is the usual size
-    * of pipe buffers on Unix systems.  That way, when we are sending a
+    * We try to send at least 8K at a time, which is the usual size of
+    * pipe buffers on Unix systems.  That way, when we are sending a
     * large amount of data, we avoid incurring extra kernel context swaps
     * for partial bufferloads.  The output buffer is initially made 16K
     * in size, and we try to dump it after accumulating 8K.
@@ -2211,8 +2229,8 @@ PQrequestCancel(PGconn *conn)
        goto cancel_errReturn;
    }
 retry3:
-   if (connect(tmpsock, (struct sockaddr *)&conn->raddr.addr,
-       conn->raddr.salen) < 0)
+   if (connect(tmpsock, (struct sockaddr *) & conn->raddr.addr,
+               conn->raddr.salen) < 0)
    {
        if (SOCK_ERRNO == EINTR)
            /* Interrupted system call - we'll just try again */
@@ -2404,7 +2422,7 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
 
                    key = line;
                    val = strchr(line, '=');
-                   if( val == NULL )
+                   if (val == NULL)
                    {
                        printfPQExpBuffer(errorMessage,
                                          "ERROR: syntax error in service file '%s', line %d\n",
@@ -2416,8 +2434,8 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
                    *val++ = '\0';
 
                    /*
-                    *  If not already set, set the database name to the
-                    *  name of the service
+                    * If not already set, set the database name to the
+                    * name of the service
                     */
                    for (i = 0; options[i].keyword; i++)
                    {
@@ -2641,8 +2659,8 @@ conninfo_parse(const char *conninfo, PQExpBuffer errorMessage)
    free(buf);
 
    /*
-    * If there's a service spec, use it to obtain any not-explicitly-given
-    * parameters.
+    * If there's a service spec, use it to obtain any
+    * not-explicitly-given parameters.
     */
    if (parseServiceInfo(options, errorMessage))
    {
@@ -2901,7 +2919,7 @@ PQsetClientEncoding(PGconn *conn, const char *encoding)
 PGVerbosity
 PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity)
 {
-   PGVerbosity     old;
+   PGVerbosity old;
 
    if (!conn)
        return PQERRORS_DEFAULT;
index 9285adc4599a36a739779e59730b75774baa4d62..f23aeb301656e15ce6ab2e955112c6b9b37ef859 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.141 2003/06/28 00:06:01 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.142 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -449,7 +449,7 @@ pqPrepareAsyncResult(PGconn *conn)
  * a trailing newline, and should not be more than one line).
  */
 void
-pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt, ...)
+pqInternalNotice(const PGNoticeHooks * hooks, const char *fmt,...)
 {
    char        msgBuf[1024];
    va_list     args;
@@ -462,22 +462,25 @@ pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt, ...)
    va_start(args, fmt);
    vsnprintf(msgBuf, sizeof(msgBuf), libpq_gettext(fmt), args);
    va_end(args);
-   msgBuf[sizeof(msgBuf)-1] = '\0'; /* make real sure it's terminated */
+   msgBuf[sizeof(msgBuf) - 1] = '\0';  /* make real sure it's terminated */
 
    /* Make a PGresult to pass to the notice receiver */
    res = PQmakeEmptyPGresult(NULL, PGRES_NONFATAL_ERROR);
    res->noticeHooks = *hooks;
+
    /*
     * Set up fields of notice.
     */
    pqSaveMessageField(res, 'M', msgBuf);
    pqSaveMessageField(res, 'S', libpq_gettext("NOTICE"));
    /* XXX should provide a SQLSTATE too? */
+
    /*
     * Result text is always just the primary message + newline.
     */
    res->errMsg = (char *) pqResultAlloc(res, strlen(msgBuf) + 2, FALSE);
    sprintf(res->errMsg, "%s\n", msgBuf);
+
    /*
     * Pass to receiver, then free it.
     */
@@ -491,7 +494,7 @@ pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt, ...)
  *   Returns TRUE if OK, FALSE if not enough memory to add the row
  */
 int
-pqAddTuple(PGresult *res, PGresAttValue *tup)
+pqAddTuple(PGresult *res, PGresAttValue * tup)
 {
    if (res->ntups >= res->tupArrSize)
    {
@@ -575,11 +578,12 @@ pqSaveParameterStatus(PGconn *conn, const char *name, const char *value)
            break;
        }
    }
+
    /*
     * Store new info as a single malloc block
     */
    pstatus = (pgParameterStatus *) malloc(sizeof(pgParameterStatus) +
-                                          strlen(name) + strlen(value) + 2);
+                                      strlen(name) + strlen(value) + 2);
    if (pstatus)
    {
        char       *ptr;
@@ -593,6 +597,7 @@ pqSaveParameterStatus(PGconn *conn, const char *name, const char *value)
        pstatus->next = conn->pstatus;
        conn->pstatus = pstatus;
    }
+
    /*
     * Special hacks: remember client_encoding as a numeric value, and
     * remember at least the first few bytes of server version.
@@ -635,8 +640,8 @@ PQsendQuery(PGconn *conn, const char *query)
 
    /*
     * Give the data a push.  In nonblock mode, don't complain if we're
-    * unable to send it all; PQgetResult() will do any additional flushing
-    * needed.
+    * unable to send it all; PQgetResult() will do any additional
+    * flushing needed.
     */
    if (pqFlush(conn) < 0)
    {
@@ -658,7 +663,7 @@ PQsendQueryParams(PGconn *conn,
                  const char *command,
                  int nParams,
                  const Oid *paramTypes,
-                 const char * const *paramValues,
+                 const char *const * paramValues,
                  const int *paramLengths,
                  const int *paramFormats,
                  int resultFormat)
@@ -672,7 +677,7 @@ PQsendQueryParams(PGconn *conn,
    if (PG_PROTOCOL_MAJOR(conn->pversion) < 3)
    {
        printfPQExpBuffer(&conn->errorMessage,
-               libpq_gettext("function requires at least 3.0 protocol\n"));
+            libpq_gettext("function requires at least 3.0 protocol\n"));
        return 0;
    }
 
@@ -737,7 +742,7 @@ PQsendQueryParams(PGconn *conn,
    {
        if (paramValues && paramValues[i])
        {
-           int     nbytes;
+           int         nbytes;
 
            if (paramFormats && paramFormats[i] != 0)
            {
@@ -787,8 +792,8 @@ PQsendQueryParams(PGconn *conn,
 
    /*
     * Give the data a push.  In nonblock mode, don't complain if we're
-    * unable to send it all; PQgetResult() will do any additional flushing
-    * needed.
+    * unable to send it all; PQgetResult() will do any additional
+    * flushing needed.
     */
    if (pqFlush(conn) < 0)
        goto sendFailed;
@@ -875,9 +880,9 @@ PQconsumeInput(PGconn *conn)
        return 0;
 
    /*
-    * for non-blocking connections try to flush the send-queue,
-    * otherwise we may never get a response for something that may
-    * not have already been sent because it's in our write buffer!
+    * for non-blocking connections try to flush the send-queue, otherwise
+    * we may never get a response for something that may not have already
+    * been sent because it's in our write buffer!
     */
    if (pqIsnonblocking(conn))
    {
@@ -952,11 +957,11 @@ PQgetResult(PGconn *conn)
    /* If not ready to return something, block until we are. */
    while (conn->asyncStatus == PGASYNC_BUSY)
    {
-       int     flushResult;
+       int         flushResult;
 
        /*
-        * If data remains unsent, send it.  Else we might be waiting
-        * for the result of a command the backend hasn't even got yet.
+        * If data remains unsent, send it.  Else we might be waiting for
+        * the result of a command the backend hasn't even got yet.
         */
        while ((flushResult = pqFlush(conn)) > 0)
        {
@@ -1051,7 +1056,7 @@ PQexecParams(PGconn *conn,
             const char *command,
             int nParams,
             const Oid *paramTypes,
-            const char * const *paramValues,
+            const char *const * paramValues,
             const int *paramLengths,
             const int *paramFormats,
             int resultFormat)
@@ -1089,7 +1094,7 @@ PQexecStart(PGconn *conn)
            {
                /* In protocol 3, we can get out of a COPY IN state */
                if (PQputCopyEnd(conn,
-                   libpq_gettext("COPY terminated by new PQexec")) < 0)
+                    libpq_gettext("COPY terminated by new PQexec")) < 0)
                {
                    PQclear(result);
                    return false;
@@ -1101,7 +1106,7 @@ PQexecStart(PGconn *conn)
                /* In older protocols we have to punt */
                PQclear(result);
                printfPQExpBuffer(&conn->errorMessage,
-                   libpq_gettext("COPY IN state must be terminated first\n"));
+                                 libpq_gettext("COPY IN state must be terminated first\n"));
                return false;
            }
        }
@@ -1122,7 +1127,7 @@ PQexecStart(PGconn *conn)
                /* In older protocols we have to punt */
                PQclear(result);
                printfPQExpBuffer(&conn->errorMessage,
-                   libpq_gettext("COPY OUT state must be terminated first\n"));
+                                 libpq_gettext("COPY OUT state must be terminated first\n"));
                return false;
            }
        }
@@ -1161,7 +1166,11 @@ PQexecFinish(PGconn *conn)
                pqCatenateResultError(lastResult, result->errMsg);
                PQclear(result);
                result = lastResult;
-               /* Make sure PQerrorMessage agrees with concatenated result */
+
+               /*
+                * Make sure PQerrorMessage agrees with concatenated
+                * result
+                */
                resetPQExpBuffer(&conn->errorMessage);
                appendPQExpBufferStr(&conn->errorMessage, result->errMsg);
            }
@@ -1229,8 +1238,8 @@ PQputCopyData(PGconn *conn, const char *buffer, int nbytes)
    {
        /*
         * Try to flush any previously sent data in preference to growing
-        * the output buffer.  If we can't enlarge the buffer enough to hold
-        * the data, return 0 in the nonblock case, else hard error.
+        * the output buffer.  If we can't enlarge the buffer enough to
+        * hold the data, return 0 in the nonblock case, else hard error.
         * (For simplicity, always assume 5 bytes of overhead even in
         * protocol 2.0 case.)
         */
@@ -1279,6 +1288,7 @@ PQputCopyEnd(PGconn *conn, const char *errormsg)
                          libpq_gettext("no COPY in progress\n"));
        return -1;
    }
+
    /*
     * Send the COPY END indicator.  This is simple enough that we don't
     * bother delegating it to the fe-protocol files.
@@ -1307,7 +1317,7 @@ PQputCopyEnd(PGconn *conn, const char *errormsg)
        {
            /* Ooops, no way to do this in 2.0 */
            printfPQExpBuffer(&conn->errorMessage,
-               libpq_gettext("function requires at least 3.0 protocol\n"));
+            libpq_gettext("function requires at least 3.0 protocol\n"));
            return -1;
        }
        else
@@ -1476,7 +1486,7 @@ PQputnbytes(PGconn *conn, const char *buffer, int nbytes)
  *     the application must call this routine to finish the command protocol.
  *
  * When using 3.0 protocol this is deprecated; it's cleaner to use PQgetResult
- * to get the transfer status.  Note however that when using 2.0 protocol,
+ * to get the transfer status. Note however that when using 2.0 protocol,
  * recovering from a copy failure often requires a PQreset.  PQendcopy will
  * take care of that, PQgetResult won't.
  *
@@ -1861,7 +1871,7 @@ PQoidValue(const PGresult *res)
 char *
 PQcmdTuples(PGresult *res)
 {
-   char        *p;
+   char       *p;
 
    if (!res)
        return "";
@@ -1994,7 +2004,8 @@ PQflush(PGconn *conn)
  * Needed mostly by Win32, unless multithreaded DLL (/MD in VC6)
  * Used for freeing memory from PQescapeByte()a/PQunescapeBytea()
  */
-void PQfreemem(void *ptr)
+void
+PQfreemem(void *ptr)
 {
    free(ptr);
 }
@@ -2004,11 +2015,11 @@ void PQfreemem(void *ptr)
  *
  * This function is here only for binary backward compatibility.
  * New code should use PQfreemem().  A macro will automatically map
- * calls to PQfreemem.  It should be removed in the future.  bjm 2003-03-24
+ * calls to PQfreemem. It should be removed in the future.  bjm 2003-03-24
  */
 
 #undef PQfreeNotify
-void PQfreeNotify(PGnotify *notify);
+void       PQfreeNotify(PGnotify *notify);
 
 void
 PQfreeNotify(PGnotify *notify)
@@ -2151,26 +2162,30 @@ PQescapeBytea(const unsigned char *bintext, size_t binlen, size_t *bytealen)
  *     argument to the function free(3). It is the reverse of PQescapeBytea.
  *
  *     The following transformations are made:
- *     \'   == ASCII 39 == '
- *     \\   == ASCII 92 == \
+ *     \'   == ASCII 39 == '
+ *     \\   == ASCII 92 == \
  *     \ooo == a byte whose value = ooo (ooo is an octal number)
- *     \x   == x (x is any character not matched by the above transformations)
+ *     \x   == x (x is any character not matched by the above transformations)
  *
  */
 unsigned char *
 PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen)
 {
-   size_t strtextlen, buflen;
-   unsigned char *buffer, *tmpbuf;
-   int i, j, byte;
+   size_t      strtextlen,
+               buflen;
+   unsigned char *buffer,
+              *tmpbuf;
+   int         i,
+               j,
+               byte;
 
-   if (strtext == NULL) {
+   if (strtext == NULL)
        return NULL;
-   }
 
-   strtextlen = strlen(strtext);   /* will shrink, also we discover if
-                                    * strtext isn't NULL terminated */
-   buffer = (unsigned char *)malloc(strtextlen);
+   strtextlen = strlen(strtext);       /* will shrink, also we discover
+                                        * if strtext isn't NULL
+                                        * terminated */
+   buffer = (unsigned char *) malloc(strtextlen);
    if (buffer == NULL)
        return NULL;
 
@@ -2184,9 +2199,9 @@ PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen)
                    buffer[j++] = strtext[i++];
                else
                {
-                   if ((isdigit(strtext[i]))   &&
-                       (isdigit(strtext[i+1])) &&
-                       (isdigit(strtext[i+2])))
+                   if ((isdigit(strtext[i])) &&
+                       (isdigit(strtext[i + 1])) &&
+                       (isdigit(strtext[i + 2])))
                    {
                        byte = VAL(strtext[i++]);
                        byte = (byte << 3) + VAL(strtext[i++]);
@@ -2199,7 +2214,8 @@ PQunescapeBytea(const unsigned char *strtext, size_t *retbuflen)
                buffer[j++] = strtext[i++];
        }
    }
-   buflen = j; /* buflen is the length of the unquoted data */
+   buflen = j;                 /* buflen is the length of the unquoted
+                                * data */
    tmpbuf = realloc(buffer, buflen);
 
    if (!tmpbuf)
index bc7b814c612b86664c6f4c25a350701b7e4119ed..d07ab619bbdb3d90c93877f481e11b26d29627ee 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.42 2003/06/14 17:49:54 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.43 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -396,10 +396,11 @@ lo_import(PGconn *conn, const char *filename)
    fd = open(filename, O_RDONLY | PG_BINARY, 0666);
    if (fd < 0)
    {                           /* error */
-       char sebuf[256];
+       char        sebuf[256];
+
        printfPQExpBuffer(&conn->errorMessage,
                       libpq_gettext("could not open file \"%s\": %s\n"),
-                         filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
+                     filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
        return InvalidOid;
    }
 
@@ -480,10 +481,11 @@ lo_export(PGconn *conn, Oid lobjId, const char *filename)
    fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, 0666);
    if (fd < 0)
    {                           /* error */
-       char sebuf[256];
+       char        sebuf[256];
+
        printfPQExpBuffer(&conn->errorMessage,
                       libpq_gettext("could not open file \"%s\": %s\n"),
-                         filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
+                     filename, pqStrerror(errno, sebuf, sizeof(sebuf)));
        (void) lo_close(conn, lobj);
        return -1;
    }
index 9498c9e2697069a6a9cd70a6d3cbd47568e9798d..e69bfa5f335e7387b8997aac841ec4e6a9e34e6c 100644 (file)
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.98 2003/06/23 19:20:25 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.99 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -64,8 +64,8 @@
 
 static int pqPutMsgBytes(const void *buf, size_t len, PGconn *conn);
 static int pqSendSome(PGconn *conn, int len);
-static int pqSocketCheck(PGconn *conn, int forRead, int forWrite,
-                         time_t end_time);
+static int pqSocketCheck(PGconn *conn, int forRead, int forWrite,
+             time_t end_time);
 static int pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time);
 
 
@@ -225,7 +225,7 @@ pqGetInt(int *result, size_t bytes, PGconn *conn)
            break;
        default:
            pqInternalNotice(&conn->noticeHooks,
-                            "integer of size %lu not supported by pqGetInt",
+                        "integer of size %lu not supported by pqGetInt",
                             (unsigned long) bytes);
            return EOF;
    }
@@ -261,7 +261,7 @@ pqPutInt(int value, size_t bytes, PGconn *conn)
            break;
        default:
            pqInternalNotice(&conn->noticeHooks,
-                            "integer of size %lu not supported by pqPutInt",
+                        "integer of size %lu not supported by pqPutInt",
                             (unsigned long) bytes);
            return EOF;
    }
@@ -286,14 +286,16 @@ pqCheckOutBufferSpace(int bytes_needed, PGconn *conn)
 
    if (bytes_needed <= newsize)
        return 0;
+
    /*
-    * If we need to enlarge the buffer, we first try to double it in size;
-    * if that doesn't work, enlarge in multiples of 8K.  This avoids
-    * thrashing the malloc pool by repeated small enlargements.
+    * If we need to enlarge the buffer, we first try to double it in
+    * size; if that doesn't work, enlarge in multiples of 8K.  This
+    * avoids thrashing the malloc pool by repeated small enlargements.
     *
     * Note: tests for newsize > 0 are to catch integer overflow.
     */
-   do {
+   do
+   {
        newsize *= 2;
    } while (bytes_needed > newsize && newsize > 0);
 
@@ -310,7 +312,8 @@ pqCheckOutBufferSpace(int bytes_needed, PGconn *conn)
    }
 
    newsize = conn->outBufSize;
-   do {
+   do
+   {
        newsize += 8192;
    } while (bytes_needed > newsize && newsize > 0);
 
@@ -346,14 +349,16 @@ pqCheckInBufferSpace(int bytes_needed, PGconn *conn)
 
    if (bytes_needed <= newsize)
        return 0;
+
    /*
-    * If we need to enlarge the buffer, we first try to double it in size;
-    * if that doesn't work, enlarge in multiples of 8K.  This avoids
-    * thrashing the malloc pool by repeated small enlargements.
+    * If we need to enlarge the buffer, we first try to double it in
+    * size; if that doesn't work, enlarge in multiples of 8K.  This
+    * avoids thrashing the malloc pool by repeated small enlargements.
     *
     * Note: tests for newsize > 0 are to catch integer overflow.
     */
-   do {
+   do
+   {
        newsize *= 2;
    } while (bytes_needed > newsize && newsize > 0);
 
@@ -370,7 +375,8 @@ pqCheckInBufferSpace(int bytes_needed, PGconn *conn)
    }
 
    newsize = conn->inBufSize;
-   do {
+   do
+   {
        newsize += 8192;
    } while (bytes_needed > newsize && newsize > 0);
 
@@ -435,9 +441,7 @@ pqPutMsgStart(char msg_type, bool force_len, PGconn *conn)
        endPos += 4;
    }
    else
-   {
        lenPos = -1;
-   }
 
    /* make sure there is room for message header */
    if (pqCheckOutBufferSpace(endPos, conn))
@@ -506,7 +510,7 @@ pqPutMsgEnd(PGconn *conn)
 
    if (conn->outCount >= 8192)
    {
-       int     toSend = conn->outCount - (conn->outCount % 8192);
+       int         toSend = conn->outCount - (conn->outCount % 8192);
 
        if (pqSendSome(conn, toSend) < 0)
            return EOF;
@@ -532,7 +536,7 @@ pqReadData(PGconn *conn)
 {
    int         someread = 0;
    int         nread;
-   char sebuf[256];
+   char        sebuf[256];
 
    if (conn->sock < 0)
    {
@@ -572,7 +576,8 @@ pqReadData(PGconn *conn)
        if (pqCheckInBufferSpace(conn->inEnd + 8192, conn))
        {
            /*
-            * We don't insist that the enlarge worked, but we need some room
+            * We don't insist that the enlarge worked, but we need some
+            * room
             */
            if (conn->inBufSize - conn->inEnd < 100)
                return -1;      /* errorMessage already set */
@@ -603,7 +608,7 @@ retry3:
 #endif
        printfPQExpBuffer(&conn->errorMessage,
               libpq_gettext("could not receive data from server: %s\n"),
-                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
        return -1;
    }
    if (nread > 0)
@@ -683,7 +688,7 @@ retry4:
 #endif
        printfPQExpBuffer(&conn->errorMessage,
               libpq_gettext("could not receive data from server: %s\n"),
-                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
        return -1;
    }
    if (nread > 0)
@@ -737,15 +742,15 @@ pqSendSome(PGconn *conn, int len)
    while (len > 0)
    {
        int         sent;
-       char sebuf[256];
+       char        sebuf[256];
 
        sent = pqsecure_write(conn, ptr, len);
 
        if (sent < 0)
        {
            /*
-            * Anything except EAGAIN/EWOULDBLOCK/EINTR is trouble. If it's
-            * EPIPE or ECONNRESET, assume we've lost the backend
+            * Anything except EAGAIN/EWOULDBLOCK/EINTR is trouble. If
+            * it's EPIPE or ECONNRESET, assume we've lost the backend
             * connection permanently.
             */
            switch (SOCK_ERRNO)
@@ -785,7 +790,7 @@ pqSendSome(PGconn *conn, int len)
                default:
                    printfPQExpBuffer(&conn->errorMessage,
                    libpq_gettext("could not send data to server: %s\n"),
-                                     SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
                    /* We don't assume it's a fatal error... */
                    conn->outCount = 0;
                    return -1;
@@ -803,8 +808,8 @@ pqSendSome(PGconn *conn, int len)
            /*
             * We didn't send it all, wait till we can send more.
             *
-            * If the connection is in non-blocking mode we don't wait,
-            * but return 1 to indicate that data is still pending.
+            * If the connection is in non-blocking mode we don't wait, but
+            * return 1 to indicate that data is still pending.
             */
            if (pqIsnonblocking(conn))
            {
@@ -876,7 +881,7 @@ pqWait(int forRead, int forWrite, PGconn *conn)
 int
 pqWaitTimed(int forRead, int forWrite, PGconn *conn, time_t finish_time)
 {
-   int result;
+   int         result;
 
    result = pqSocketCheck(conn, forRead, forWrite, finish_time);
 
@@ -924,14 +929,14 @@ pqWriteReady(PGconn *conn)
 static int
 pqSocketCheck(PGconn *conn, int forRead, int forWrite, time_t end_time)
 {
-   int result;
+   int         result;
 
    if (!conn)
        return -1;
    if (conn->sock < 0)
    {
        printfPQExpBuffer(&conn->errorMessage,
-                         libpq_gettext("socket not open\n"));
+                         libpq_gettext("socket not open\n"));
        return -1;
    }
 
@@ -946,18 +951,16 @@ pqSocketCheck(PGconn *conn, int forRead, int forWrite, time_t end_time)
 
    /* We will retry as long as we get EINTR */
    do
-   {
        result = pqSocketPoll(conn->sock, forRead, forWrite, end_time);
-   }
    while (result < 0 && SOCK_ERRNO == EINTR);
 
    if (result < 0)
    {
-       char sebuf[256];
+       char        sebuf[256];
 
        printfPQExpBuffer(&conn->errorMessage,
-                         libpq_gettext("select() failed: %s\n"),
-                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                         libpq_gettext("select() failed: %s\n"),
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
    }
 
    return result;
@@ -979,13 +982,13 @@ pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time)
    /* We use poll(2) if available, otherwise select(2) */
 #ifdef HAVE_POLL
    struct pollfd input_fd;
-   int           timeout_ms;
+   int         timeout_ms;
 
    if (!forRead && !forWrite)
        return 0;
 
-   input_fd.fd      = sock;
-   input_fd.events  = POLLERR;
+   input_fd.fd = sock;
+   input_fd.events = POLLERR;
    input_fd.revents = 0;
 
    if (forRead)
@@ -995,12 +998,10 @@ pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time)
 
    /* Compute appropriate timeout interval */
    if (end_time == ((time_t) -1))
-   {
        timeout_ms = -1;
-   }
    else
    {
-       time_t now = time(NULL);
+       time_t      now = time(NULL);
 
        if (end_time > now)
            timeout_ms = (end_time - now) * 1000;
@@ -1010,12 +1011,12 @@ pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time)
 
    return poll(&input_fd, 1, timeout_ms);
 
-#else /* !HAVE_POLL */
+#else                          /* !HAVE_POLL */
 
-   fd_set          input_mask;
-   fd_set          output_mask;
-   fd_set          except_mask;
-   struct timeval  timeout;
+   fd_set      input_mask;
+   fd_set      output_mask;
+   fd_set      except_mask;
+   struct timeval timeout;
    struct timeval *ptr_timeout;
 
    if (!forRead && !forWrite)
@@ -1032,12 +1033,10 @@ pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time)
 
    /* Compute appropriate timeout interval */
    if (end_time == ((time_t) -1))
-   {
        ptr_timeout = NULL;
-   }
    else
    {
-       time_t  now = time(NULL);
+       time_t      now = time(NULL);
 
        if (end_time > now)
            timeout.tv_sec = end_time - now;
@@ -1049,7 +1048,7 @@ pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time)
 
    return select(sock + 1, &input_mask, &output_mask,
                  &except_mask, ptr_timeout);
-#endif /* HAVE_POLL */
+#endif   /* HAVE_POLL */
 }
 
 
index b2d8a15f7b850d4af873f915f6b3ca7f71884418..d8727440d15e7a037e4a240344d02baea5fd60eb 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.4 2003/06/23 19:20:25 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.5 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -125,7 +125,7 @@ pqSetenvPoll(PGconn *conn)
                                        conn->next_eo->pgName, val);
 #ifdef CONNECTDEBUG
                            fprintf(stderr,
-                                   "Use environment variable %s to send %s\n",
+                             "Use environment variable %s to send %s\n",
                                    conn->next_eo->envName, setQuery);
 #endif
                            if (!PQsendQuery(conn, setQuery))
@@ -173,12 +173,12 @@ pqSetenvPoll(PGconn *conn)
            case SETENV_STATE_QUERY1_SEND:
                {
                    /*
-                    * Issue query to get information we need.  Here we must
-                    * use begin/commit in case autocommit is off by default
-                    * in a 7.3 server.
+                    * Issue query to get information we need.  Here we
+                    * must use begin/commit in case autocommit is off by
+                    * default in a 7.3 server.
                     *
-                    * Note: version() and getdatabaseencoding() exist in
-                    * all protocol-2.0-supporting backends.
+                    * Note: version() and getdatabaseencoding() exist in all
+                    * protocol-2.0-supporting backends.
                     */
                    if (!PQsendQuery(conn, "begin; select version(), getdatabaseencoding(); end"))
                        goto error_return;
@@ -219,13 +219,14 @@ pqSetenvPoll(PGconn *conn)
                        val = PQgetvalue(res, 0, 0);
                        if (val && strncmp(val, "PostgreSQL ", 11) == 0)
                        {
-                           char   *ptr;
+                           char       *ptr;
 
                            /* strip off PostgreSQL part */
                            val += 11;
+
                            /*
-                            * strip off platform part (scribbles on result,
-                            * naughty naughty)
+                            * strip off platform part (scribbles on
+                            * result, naughty naughty)
                             */
                            ptr = strchr(val, ' ');
                            if (ptr)
@@ -236,7 +237,8 @@ pqSetenvPoll(PGconn *conn)
                        }
 
                        val = PQgetvalue(res, 0, 1);
-                       if (val && *val) /* null should not happen, but */
+                       if (val && *val)        /* null should not happen,
+                                                * but */
                            pqSaveParameterStatus(conn, "server_encoding",
                                                  val);
 
@@ -256,11 +258,11 @@ pqSetenvPoll(PGconn *conn)
                    const char *query;
 
                    /*
-                    * pg_client_encoding does not exist in pre-7.2 servers.
-                    * So we need to be prepared for an error here.  Do *not*
-                    * start a transaction block, except in 7.3 servers where
-                    * we need to prevent autocommit-off from starting a
-                    * transaction anyway.
+                    * pg_client_encoding does not exist in pre-7.2
+                    * servers. So we need to be prepared for an error
+                    * here.  Do *not* start a transaction block, except
+                    * in 7.3 servers where we need to prevent
+                    * autocommit-off from starting a transaction anyway.
                     */
                    if (strncmp(conn->sversion, "7.3", 3) == 0)
                        query = "begin; select pg_client_encoding(); end";
@@ -296,16 +298,17 @@ pqSetenvPoll(PGconn *conn)
                        {
                            /* Extract client encoding and save it */
                            val = PQgetvalue(res, 0, 0);
-                           if (val && *val) /* null should not happen, but */
+                           if (val && *val)    /* null should not happen,
+                                                * but */
                                pqSaveParameterStatus(conn, "client_encoding",
                                                      val);
                        }
                        else
                        {
                            /*
-                            * Error: presumably function not available, so
-                            * use PGCLIENTENCODING or database encoding as
-                            * the fallback.
+                            * Error: presumably function not available,
+                            * so use PGCLIENTENCODING or database
+                            * encoding as the fallback.
                             */
                            val = getenv("PGCLIENTENCODING");
                            if (val && *val)
@@ -382,8 +385,8 @@ pqParseInput2(PGconn *conn)
            return;
 
        /*
-        * NOTIFY and NOTICE messages can happen in any state besides
-        * COPY OUT; always process them right away.
+        * NOTIFY and NOTICE messages can happen in any state besides COPY
+        * OUT; always process them right away.
         *
         * Most other messages should only be processed while in BUSY state.
         * (In particular, in READY state we hold off further parsing
@@ -418,13 +421,13 @@ pqParseInput2(PGconn *conn)
             */
            if (id == 'E')
            {
-               if (pqGetErrorNotice2(conn, false /* treat as notice */))
+               if (pqGetErrorNotice2(conn, false /* treat as notice */ ))
                    return;
            }
            else
            {
                pqInternalNotice(&conn->noticeHooks,
-                                "message type 0x%02x arrived from server while idle",
+                   "message type 0x%02x arrived from server while idle",
                                 id);
                /* Discard the unexpected message; good idea?? */
                conn->inStart = conn->inEnd;
@@ -672,6 +675,7 @@ getAnotherTuple(PGconn *conn, bool binary)
        if (conn->curTuple == NULL)
            goto outOfMemory;
        MemSet((char *) conn->curTuple, 0, nfields * sizeof(PGresAttValue));
+
        /*
         * If it's binary, fix the column format indicators.  We assume
         * the backend will consistently send either B or D, not a mix.
@@ -801,9 +805,9 @@ pqGetErrorNotice2(PGconn *conn, bool isError)
    }
 
    /*
-    * Make a PGresult to hold the message.  We temporarily
-    * lie about the result status, so that PQmakeEmptyPGresult doesn't
-    * uselessly copy conn->errorMessage.
+    * Make a PGresult to hold the message.  We temporarily lie about the
+    * result status, so that PQmakeEmptyPGresult doesn't uselessly copy
+    * conn->errorMessage.
     */
    res = PQmakeEmptyPGresult(conn, PGRES_EMPTY_QUERY);
    res->resultStatus = isError ? PGRES_FATAL_ERROR : PGRES_NONFATAL_ERROR;
@@ -811,13 +815,13 @@ pqGetErrorNotice2(PGconn *conn, bool isError)
 
    /*
     * Break the message into fields.  We can't do very much here, but we
-    * can split the severity code off, and remove trailing newlines.  Also,
-    * we use the heuristic that the primary message extends only to the
-    * first newline --- anything after that is detail message.  (In some
-    * cases it'd be better classed as hint, but we can hardly be expected
-    * to guess that here.)
+    * can split the severity code off, and remove trailing newlines.
+    * Also, we use the heuristic that the primary message extends only to
+    * the first newline --- anything after that is detail message.  (In
+    * some cases it'd be better classed as hint, but we can hardly be
+    * expected to guess that here.)
     */
-   while (workBuf.len > 0 && workBuf.data[workBuf.len-1] == '\n')
+   while (workBuf.len > 0 && workBuf.data[workBuf.len - 1] == '\n')
        workBuf.data[--workBuf.len] = '\0';
    splitp = strstr(workBuf.data, ":  ");
    if (splitp)
@@ -877,10 +881,10 @@ pqGetErrorNotice2(PGconn *conn, bool isError)
 /*
  * checkXactStatus - attempt to track transaction-block status of server
  *
- * This is called each time we receive a command-complete message.  By
+ * This is called each time we receive a command-complete message. By
  * watching for messages from BEGIN/COMMIT/ROLLBACK commands, we can do
  * a passable job of tracking the server's xact status.  BUT: this does
- * not work at all on 7.3 servers with AUTOCOMMIT OFF.  (Man, was that
+ * not work at all on 7.3 servers with AUTOCOMMIT OFF. (Man, was that
  * feature ever a mistake.)  Caveat user.
  *
  * The tags known here are all those used as far back as 7.0; is it worth
@@ -895,14 +899,15 @@ checkXactStatus(PGconn *conn, const char *cmdTag)
        conn->xactStatus = PQTRANS_IDLE;
    else if (strcmp(cmdTag, "ROLLBACK") == 0)
        conn->xactStatus = PQTRANS_IDLE;
-   else if (strcmp(cmdTag, "START TRANSACTION") == 0) /* 7.3 only */
+   else if (strcmp(cmdTag, "START TRANSACTION") == 0)  /* 7.3 only */
        conn->xactStatus = PQTRANS_INTRANS;
+
    /*
     * Normally we get into INERROR state by detecting an Error message.
     * However, if we see one of these tags then we know for sure the
     * server is in abort state ...
     */
-   else if (strcmp(cmdTag, "*ABORT STATE*") == 0) /* pre-7.3 only */
+   else if (strcmp(cmdTag, "*ABORT STATE*") == 0)      /* pre-7.3 only */
        conn->xactStatus = PQTRANS_INERROR;
 }
 
@@ -1005,14 +1010,14 @@ pqGetCopyData2(PGconn *conn, char **buffer, int async)
            return -2;
        }
        memcpy(*buffer, &conn->inBuffer[conn->inStart], msgLength);
-       (*buffer)[msgLength] = '\0'; /* Add terminating null */
+       (*buffer)[msgLength] = '\0';    /* Add terminating null */
 
        /* Mark message consumed */
        conn->inStart = conn->inCursor;
 
        return msgLength;
 
-   nodata:
+nodata:
        /* Don't block if async read requested */
        if (async)
            return 0;
@@ -1186,23 +1191,23 @@ pqEndcopy2(PGconn *conn)
    if (conn->errorMessage.len > 0)
    {
        /* We have to strip the trailing newline ... pain in neck... */
-       char    svLast = conn->errorMessage.data[conn->errorMessage.len-1];
+       char        svLast = conn->errorMessage.data[conn->errorMessage.len - 1];
 
        if (svLast == '\n')
-           conn->errorMessage.data[conn->errorMessage.len-1] = '\0';
+           conn->errorMessage.data[conn->errorMessage.len - 1] = '\0';
        pqInternalNotice(&conn->noticeHooks, "%s", conn->errorMessage.data);
-       conn->errorMessage.data[conn->errorMessage.len-1] = svLast;
+       conn->errorMessage.data[conn->errorMessage.len - 1] = svLast;
    }
 
    PQclear(result);
 
    /*
-    * The worst case is that we've lost sync with the backend
-    * entirely due to application screwup of the copy in/out protocol. To
-    * recover, reset the connection (talk about using a sledgehammer...)
+    * The worst case is that we've lost sync with the backend entirely
+    * due to application screwup of the copy in/out protocol. To recover,
+    * reset the connection (talk about using a sledgehammer...)
     */
    pqInternalNotice(&conn->noticeHooks,
-                    "lost synchronization with server, resetting connection");
+              "lost synchronization with server, resetting connection");
 
    /*
     * Users doing non-blocking connections need to handle the reset
@@ -1236,8 +1241,8 @@ pqFunctionCall2(PGconn *conn, Oid fnid,
 
    /* PQfn already validated connection state */
 
-   if (pqPutMsgStart('F', false, conn) < 0 || /* function call msg */
-       pqPuts(" ", conn) < 0 ||        /* dummy string */
+   if (pqPutMsgStart('F', false, conn) < 0 ||  /* function call msg */
+       pqPuts(" ", conn) < 0 ||    /* dummy string */
        pqPutInt(fnid, 4, conn) != 0 || /* function id */
        pqPutInt(nargs, 4, conn) != 0)  /* # of args */
    {
@@ -1397,7 +1402,7 @@ pqFunctionCall2(PGconn *conn, Oid fnid,
  */
 char *
 pqBuildStartupPacket2(PGconn *conn, int *packetlen,
-                     const PQEnvironmentOption *options)
+                     const PQEnvironmentOption * options)
 {
    StartupPacket *startpacket;
 
index ac39e4adc1400159d740b29eb714c3da05fb34a1..0799c318c88198c7715f54041be0692d103a2401 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.4 2003/06/23 19:20:25 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.5 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,8 +42,8 @@ static int    getParameterStatus(PGconn *conn);
 static int getNotify(PGconn *conn);
 static int getCopyStart(PGconn *conn, ExecStatusType copytype);
 static int getReadyForQuery(PGconn *conn);
-static int build_startup_packet(const PGconn *conn, char *packet,
-                                const PQEnvironmentOption *options);
+static int build_startup_packet(const PGconn *conn, char *packet,
+                    const PQEnvironmentOption * options);
 
 
 /*
@@ -98,20 +98,20 @@ pqParseInput3(PGconn *conn)
        if (avail < msgLength)
        {
            /*
-            * Before returning, enlarge the input buffer if needed to hold
-            * the whole message.  This is better than leaving it to
-            * pqReadData because we can avoid multiple cycles of realloc()
-            * when the message is large; also, we can implement a reasonable
-            * recovery strategy if we are unable to make the buffer big
-            * enough.
+            * Before returning, enlarge the input buffer if needed to
+            * hold the whole message.  This is better than leaving it to
+            * pqReadData because we can avoid multiple cycles of
+            * realloc() when the message is large; also, we can implement
+            * a reasonable recovery strategy if we are unable to make the
+            * buffer big enough.
             */
            if (pqCheckInBufferSpace(conn->inCursor + msgLength, conn))
            {
                /*
                 * XXX add some better recovery code... plan is to skip
-                * over the message using its length, then report an error.
-                * For the moment, just treat this like loss of sync (which
-                * indeed it might be!)
+                * over the message using its length, then report an
+                * error. For the moment, just treat this like loss of
+                * sync (which indeed it might be!)
                 */
                handleSyncLoss(conn, id, msgLength);
            }
@@ -119,8 +119,8 @@ pqParseInput3(PGconn *conn)
        }
 
        /*
-        * NOTIFY and NOTICE messages can happen in any state; always process
-        * them right away.
+        * NOTIFY and NOTICE messages can happen in any state; always
+        * process them right away.
         *
         * Most other messages should only be processed while in BUSY state.
         * (In particular, in READY state we hold off further parsing
@@ -153,15 +153,15 @@ pqParseInput3(PGconn *conn)
            /*
             * Unexpected message in IDLE state; need to recover somehow.
             * ERROR messages are displayed using the notice processor;
-            * ParameterStatus is handled normally;
-            * anything else is just dropped on the floor after displaying
-            * a suitable warning notice.  (An ERROR is very possibly the
-            * backend telling us why it is about to close the connection,
-            * so we don't want to just discard it...)
+            * ParameterStatus is handled normally; anything else is just
+            * dropped on the floor after displaying a suitable warning
+            * notice.  (An ERROR is very possibly the backend telling us
+            * why it is about to close the connection, so we don't want
+            * to just discard it...)
             */
            if (id == 'E')
            {
-               if (pqGetErrorNotice3(conn, false /* treat as notice */))
+               if (pqGetErrorNotice3(conn, false /* treat as notice */ ))
                    return;
            }
            else if (id == 'S')
@@ -172,7 +172,7 @@ pqParseInput3(PGconn *conn)
            else
            {
                pqInternalNotice(&conn->noticeHooks,
-                                "message type 0x%02x arrived from server while idle",
+                   "message type 0x%02x arrived from server while idle",
                                 id);
                /* Discard the unexpected message */
                conn->inCursor += msgLength;
@@ -262,11 +262,12 @@ pqParseInput3(PGconn *conn)
                            return;
                    }
                    else if (conn->result != NULL &&
-                            conn->result->resultStatus == PGRES_FATAL_ERROR)
+                        conn->result->resultStatus == PGRES_FATAL_ERROR)
                    {
                        /*
-                        * We've already choked for some reason.  Just discard
-                        * tuples till we get to the end of the query.
+                        * We've already choked for some reason.  Just
+                        * discard tuples till we get to the end of the
+                        * query.
                         */
                        conn->inCursor += msgLength;
                    }
@@ -274,7 +275,7 @@ pqParseInput3(PGconn *conn)
                    {
                        /* Set up to report error at end of query */
                        printfPQExpBuffer(&conn->errorMessage,
-                                libpq_gettext("server sent data (\"D\" message) without prior row description (\"T\" message)\n"));
+                                         libpq_gettext("server sent data (\"D\" message) without prior row description (\"T\" message)\n"));
                        pqSaveErrorResult(conn);
                        /* Discard the unexpected message */
                        conn->inCursor += msgLength;
@@ -292,16 +293,18 @@ pqParseInput3(PGconn *conn)
                    conn->copy_already_done = 0;
                    break;
                case 'd':       /* Copy Data */
+
                    /*
-                    * If we see Copy Data, just silently drop it.  This
+                    * If we see Copy Data, just silently drop it.  This
                     * would only occur if application exits COPY OUT mode
                     * too early.
                     */
                    conn->inCursor += msgLength;
                    break;
                case 'c':       /* Copy Done */
+
                    /*
-                    * If we see Copy Done, just silently drop it.  This
+                    * If we see Copy Done, just silently drop it.  This
                     * is the normal case during PQendcopy.  We will keep
                     * swallowing data, expecting to see command-complete
                     * for the COPY command.
@@ -352,11 +355,11 @@ handleSyncLoss(PGconn *conn, char id, int msgLength)
 {
    printfPQExpBuffer(&conn->errorMessage,
                      libpq_gettext(
-                         "lost synchronization with server: got message type \"%c\", length %d\n"),
+                                   "lost synchronization with server: got message type \"%c\", length %d\n"),
                      id, msgLength);
    /* build an error result holding the error message */
    pqSaveErrorResult(conn);
-   conn->asyncStatus = PGASYNC_READY; /* drop out of GetResult wait loop */
+   conn->asyncStatus = PGASYNC_READY;  /* drop out of GetResult wait loop */
 
    pqsecure_close(conn);
    closesocket(conn->sock);
@@ -488,7 +491,7 @@ getAnotherTuple(PGconn *conn, int msgLength)
    {
        /* Replace partially constructed result with an error result */
        printfPQExpBuffer(&conn->errorMessage,
-                         libpq_gettext("unexpected field count in D message\n"));
+                libpq_gettext("unexpected field count in D message\n"));
        pqSaveErrorResult(conn);
        /* Discard the failed message by pretending we read it */
        conn->inCursor = conn->inStart + 5 + msgLength;
@@ -512,7 +515,7 @@ getAnotherTuple(PGconn *conn, int msgLength)
            vlen = 0;
        if (tup[i].value == NULL)
        {
-           bool    isbinary = (result->attDescs[i].format != 0);
+           bool        isbinary = (result->attDescs[i].format != 0);
 
            tup[i].value = (char *) pqResultAlloc(result, vlen + 1, isbinary);
            if (tup[i].value == NULL)
@@ -536,9 +539,10 @@ getAnotherTuple(PGconn *conn, int msgLength)
    return 0;
 
 outOfMemory:
+
    /*
-    * Replace partially constructed result with an error result.
-    * First discard the old result to try to win back some memory.
+    * Replace partially constructed result with an error result. First
+    * discard the old result to try to win back some memory.
     */
    pqClearAsyncResult(conn);
    printfPQExpBuffer(&conn->errorMessage,
@@ -567,17 +571,18 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
    const char *val;
 
    /*
-    * Make a PGresult to hold the accumulated fields.  We temporarily
-    * lie about the result status, so that PQmakeEmptyPGresult doesn't
+    * Make a PGresult to hold the accumulated fields.  We temporarily lie
+    * about the result status, so that PQmakeEmptyPGresult doesn't
     * uselessly copy conn->errorMessage.
     */
    res = PQmakeEmptyPGresult(conn, PGRES_EMPTY_QUERY);
    res->resultStatus = isError ? PGRES_FATAL_ERROR : PGRES_NONFATAL_ERROR;
+
    /*
     * Since the fields might be pretty long, we create a temporary
     * PQExpBuffer rather than using conn->workBuffer.  workBuffer is
-    * intended for stuff that is expected to be short.  We shouldn't
-    * use conn->errorMessage either, since this might be only a notice.
+    * intended for stuff that is expected to be short.  We shouldn't use
+    * conn->errorMessage either, since this might be only a notice.
     */
    initPQExpBuffer(&workBuf);
 
@@ -599,19 +604,19 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
     * Now build the "overall" error message for PQresultErrorMessage.
     */
    resetPQExpBuffer(&workBuf);
-   val = PQresultErrorField(res, 'S'); /* Severity */
+   val = PQresultErrorField(res, 'S'); /* Severity */
    if (val)
        appendPQExpBuffer(&workBuf, "%s:  ", val);
    if (conn->verbosity == PQERRORS_VERBOSE)
    {
-       val = PQresultErrorField(res, 'C'); /* SQLSTATE Code */
+       val = PQresultErrorField(res, 'C');     /* SQLSTATE Code */
        if (val)
            appendPQExpBuffer(&workBuf, "%s: ", val);
    }
-   val = PQresultErrorField(res, 'M'); /* Primary message */
+   val = PQresultErrorField(res, 'M'); /* Primary message */
    if (val)
        appendPQExpBufferStr(&workBuf, val);
-   val = PQresultErrorField(res, 'P'); /* Position */
+   val = PQresultErrorField(res, 'P'); /* Position */
    if (val)
    {
        /* translator: %s represents a digit string */
@@ -620,13 +625,13 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
    appendPQExpBufferChar(&workBuf, '\n');
    if (conn->verbosity != PQERRORS_TERSE)
    {
-       val = PQresultErrorField(res, 'D'); /* Detail */
+       val = PQresultErrorField(res, 'D');     /* Detail */
        if (val)
            appendPQExpBuffer(&workBuf, libpq_gettext("DETAIL:  %s\n"), val);
-       val = PQresultErrorField(res, 'H'); /* Hint */
+       val = PQresultErrorField(res, 'H');     /* Hint */
        if (val)
            appendPQExpBuffer(&workBuf, libpq_gettext("HINT:  %s\n"), val);
-       val = PQresultErrorField(res, 'W'); /* Where */
+       val = PQresultErrorField(res, 'W');     /* Where */
        if (val)
            appendPQExpBuffer(&workBuf, libpq_gettext("CONTEXT:  %s\n"), val);
    }
@@ -637,7 +642,7 @@ pqGetErrorNotice3(PGconn *conn, bool isError)
 
        valf = PQresultErrorField(res, 'F');    /* File */
        vall = PQresultErrorField(res, 'L');    /* Line */
-       val = PQresultErrorField(res, 'R'); /* Routine */
+       val = PQresultErrorField(res, 'R');     /* Routine */
        if (val || valf || vall)
        {
            appendPQExpBufferStr(&workBuf, libpq_gettext("LOCATION:  "));
@@ -740,9 +745,9 @@ getNotify(PGconn *conn)
    }
 
    /*
-    * Store the strings right after the PQnotify structure so it
-    * can all be freed at once.  We don't use NAMEDATALEN because we
-    * don't want to tie this interface to a specific server name length.
+    * Store the strings right after the PQnotify structure so it can all
+    * be freed at once.  We don't use NAMEDATALEN because we don't want
+    * to tie this interface to a specific server name length.
     */
    nmlen = strlen(svname);
    extralen = strlen(conn->workBuffer.data);
@@ -869,9 +874,9 @@ pqGetCopyData3(PGconn *conn, char **buffer, int async)
    for (;;)
    {
        /*
-        * Do we have the next input message?  To make life simpler for async
-        * callers, we keep returning 0 until the next message is fully
-        * available, even if it is not Copy Data.
+        * Do we have the next input message?  To make life simpler for
+        * async callers, we keep returning 0 until the next message is
+        * fully available, even if it is not Copy Data.
         */
        conn->inCursor = conn->inStart;
        if (pqGetc(&id, conn))
@@ -908,7 +913,7 @@ pqGetCopyData3(PGconn *conn, char **buffer, int async)
                return -2;
            }
            memcpy(*buffer, &conn->inBuffer[conn->inCursor], msgLength);
-           (*buffer)[msgLength] = '\0'; /* Add terminating null */
+           (*buffer)[msgLength] = '\0';        /* Add terminating null */
 
            /* Mark message consumed */
            conn->inStart = conn->inCursor + msgLength;
@@ -920,7 +925,7 @@ pqGetCopyData3(PGconn *conn, char **buffer, int async)
        conn->inStart = conn->inCursor;
        continue;
 
-   nodata:
+nodata:
        /* Don't block if async read requested */
        if (async)
            return 0;
@@ -946,12 +951,12 @@ pqGetline3(PGconn *conn, char *s, int maxlen)
        conn->copy_is_binary)
    {
        printfPQExpBuffer(&conn->errorMessage,
-                   libpq_gettext("PQgetline: not doing text COPY OUT\n"));
+                 libpq_gettext("PQgetline: not doing text COPY OUT\n"));
        *s = '\0';
        return EOF;
    }
 
-   while ((status = PQgetlineAsync(conn, s, maxlen-1)) == 0)
+   while ((status = PQgetlineAsync(conn, s, maxlen - 1)) == 0)
    {
        /* need to load more data */
        if (pqWait(TRUE, FALSE, conn) ||
@@ -970,9 +975,9 @@ pqGetline3(PGconn *conn, char *s, int maxlen)
    }
 
    /* Add null terminator, and strip trailing \n if present */
-   if (s[status-1] == '\n')
+   if (s[status - 1] == '\n')
    {
-       s[status-1] = '\0';
+       s[status - 1] = '\0';
        return 0;
    }
    else
@@ -999,8 +1004,9 @@ pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize)
 
    /*
     * Recognize the next input message.  To make life simpler for async
-    * callers, we keep returning 0 until the next message is fully available
-    * even if it is not Copy Data.  This should keep PQendcopy from blocking.
+    * callers, we keep returning 0 until the next message is fully
+    * available even if it is not Copy Data.  This should keep PQendcopy
+    * from blocking.
     */
    conn->inCursor = conn->inStart;
    if (pqGetc(&id, conn))
@@ -1012,15 +1018,15 @@ pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize)
        return 0;
 
    /*
-    * Cannot proceed unless it's a Copy Data message.  Anything else means
-    * end of copy mode.
+    * Cannot proceed unless it's a Copy Data message.  Anything else
+    * means end of copy mode.
     */
    if (id != 'd')
        return -1;
 
    /*
-    * Move data from libpq's buffer to the caller's.  In the case where
-    * prior call found the caller's buffer too small, we use
+    * Move data from libpq's buffer to the caller's.  In the case where a
+    * prior call found the caller's buffer too small, we use
     * conn->copy_already_done to remember how much of the row was already
     * returned to the caller.
     */
@@ -1084,12 +1090,12 @@ pqEndcopy3(PGconn *conn)
    resetPQExpBuffer(&conn->errorMessage);
 
    /*
-    * Non blocking connections may have to abort at this point.  If everyone
-    * played the game there should be no problem, but in error scenarios
-    * the expected messages may not have arrived yet.  (We are assuming that
-    * the backend's packetizing will ensure that CommandComplete arrives
-    * along with the CopyDone; are there corner cases where that doesn't
-    * happen?)
+    * Non blocking connections may have to abort at this point.  If
+    * everyone played the game there should be no problem, but in error
+    * scenarios the expected messages may not have arrived yet.  (We are
+    * assuming that the backend's packetizing will ensure that
+    * CommandComplete arrives along with the CopyDone; are there corner
+    * cases where that doesn't happen?)
     */
    if (pqIsnonblocking(conn) && PQisBusy(conn))
        return (1);
@@ -1114,12 +1120,12 @@ pqEndcopy3(PGconn *conn)
    if (conn->errorMessage.len > 0)
    {
        /* We have to strip the trailing newline ... pain in neck... */
-       char    svLast = conn->errorMessage.data[conn->errorMessage.len-1];
+       char        svLast = conn->errorMessage.data[conn->errorMessage.len - 1];
 
        if (svLast == '\n')
-           conn->errorMessage.data[conn->errorMessage.len-1] = '\0';
+           conn->errorMessage.data[conn->errorMessage.len - 1] = '\0';
        pqInternalNotice(&conn->noticeHooks, "%s", conn->errorMessage.data);
-       conn->errorMessage.data[conn->errorMessage.len-1] = svLast;
+       conn->errorMessage.data[conn->errorMessage.len - 1] = svLast;
    }
 
    PQclear(result);
@@ -1148,11 +1154,11 @@ pqFunctionCall3(PGconn *conn, Oid fnid,
 
    /* PQfn already validated connection state */
 
-   if (pqPutMsgStart('F', false, conn) < 0 || /* function call msg */
-       pqPutInt(fnid, 4, conn) < 0 ||      /* function id */
-       pqPutInt(1, 2, conn) < 0 ||         /* # of format codes */
-       pqPutInt(1, 2, conn) < 0 ||         /* format code: BINARY */
-       pqPutInt(nargs, 2, conn) < 0)       /* # of args */
+   if (pqPutMsgStart('F', false, conn) < 0 ||  /* function call msg */
+       pqPutInt(fnid, 4, conn) < 0 ||  /* function id */
+       pqPutInt(1, 2, conn) < 0 ||     /* # of format codes */
+       pqPutInt(1, 2, conn) < 0 ||     /* format code: BINARY */
+       pqPutInt(nargs, 2, conn) < 0)   /* # of args */
    {
        pqHandleSendFailure(conn);
        return NULL;
@@ -1253,9 +1259,9 @@ pqFunctionCall3(PGconn *conn, Oid fnid,
            {
                /*
                 * XXX add some better recovery code... plan is to skip
-                * over the message using its length, then report an error.
-                * For the moment, just treat this like loss of sync (which
-                * indeed it might be!)
+                * over the message using its length, then report an
+                * error. For the moment, just treat this like loss of
+                * sync (which indeed it might be!)
                 */
                handleSyncLoss(conn, id, msgLength);
                break;
@@ -1352,9 +1358,9 @@ pqFunctionCall3(PGconn *conn, Oid fnid,
  */
 char *
 pqBuildStartupPacket3(PGconn *conn, int *packetlen,
-                     const PQEnvironmentOption *options)
+                     const PQEnvironmentOption * options)
 {
-   char   *startpacket;
+   char       *startpacket;
 
    *packetlen = build_startup_packet(conn, NULL, options);
    startpacket = (char *) malloc(*packetlen);
@@ -1375,9 +1381,9 @@ pqBuildStartupPacket3(PGconn *conn, int *packetlen,
  */
 static int
 build_startup_packet(const PGconn *conn, char *packet,
-                    const PQEnvironmentOption *options)
+                    const PQEnvironmentOption * options)
 {
-   int     packet_len = 0;
+   int         packet_len = 0;
    const PQEnvironmentOption *next_eo;
 
    /* Protocol version comes first. */
index 41842d3bad568ae1c20fa36fbe777adb83b61b18..37cc2ffcd242457f55b694fc5d1d9ddfe0113ece 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.26 2003/08/04 00:26:49 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.27 2003/08/04 00:43:33 momjian Exp $
  *
  * NOTES
  *   The client *requires* a valid server certificate.  Since
 
 #ifdef USE_SSL
 static int verify_cb(int ok, X509_STORE_CTX *ctx);
+
 #ifdef NOT_USED
 static int verify_peer(PGconn *);
 #endif
@@ -195,7 +196,6 @@ OvOzKGtwcTqO/1wV5gKkzu1ZVswVUQd5Gg8lJicwqRWyyNRczDDoG9jVDxmogKTH\n\
 AaqLulO7R8Ifa1SwF2DteSGVtgWEN8gDpN3RBmmPTDngyF2DHb5qmpnznwtFKdTL\n\
 KWbuHn491xNO25CQWMtem80uKw+pTnisBRF/454n1Jnhub144YRBoN8CAQI=\n\
 -----END DH PARAMETERS-----\n";
-
 #endif
 
 /* ------------------------------------------------------------ */
@@ -280,7 +280,7 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len)
 #ifdef USE_SSL
    if (conn->ssl)
    {
-   rloop:
+rloop:
        n = SSL_read(conn->ssl, ptr, len);
        switch (SSL_get_error(conn->ssl, n))
        {
@@ -290,27 +290,29 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len)
                n = 0;
                break;
            case SSL_ERROR_WANT_WRITE:
+
                /*
-                * Returning 0 here would cause caller to wait for read-ready,
-                * which is not correct since what SSL wants is wait for
-                * write-ready.  The former could get us stuck in an infinite
-                * wait, so don't risk it; busy-loop instead.
+                * Returning 0 here would cause caller to wait for
+                * read-ready, which is not correct since what SSL wants
+                * is wait for write-ready.  The former could get us stuck
+                * in an infinite wait, so don't risk it; busy-loop
+                * instead.
                 */
                goto rloop;
            case SSL_ERROR_SYSCALL:
-           {
-               char sebuf[256];
-               
-               if (n == -1)
-                   printfPQExpBuffer(&conn->errorMessage,
+               {
+                   char        sebuf[256];
+
+                   if (n == -1)
+                       printfPQExpBuffer(&conn->errorMessage,
                                libpq_gettext("SSL SYSCALL error: %s\n"),
-                                 SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
-               else
-                   printfPQExpBuffer(&conn->errorMessage,
-                               libpq_gettext("SSL SYSCALL error: EOF detected\n"));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                   else
+                       printfPQExpBuffer(&conn->errorMessage,
+                                         libpq_gettext("SSL SYSCALL error: EOF detected\n"));
 
-               break;
-           }
+                   break;
+               }
            case SSL_ERROR_SSL:
                printfPQExpBuffer(&conn->errorMessage,
                      libpq_gettext("SSL error: %s\n"), SSLerrmessage());
@@ -322,7 +324,7 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len)
                break;
            default:
                printfPQExpBuffer(&conn->errorMessage,
-                                 libpq_gettext("Unknown SSL error code\n"));
+                             libpq_gettext("Unknown SSL error code\n"));
                break;
        }
    }
@@ -354,6 +356,7 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len)
            case SSL_ERROR_NONE:
                break;
            case SSL_ERROR_WANT_READ:
+
                /*
                 * Returning 0 here causes caller to wait for write-ready,
                 * which is not really the right thing, but it's the best
@@ -365,18 +368,18 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len)
                n = 0;
                break;
            case SSL_ERROR_SYSCALL:
-           {
-               char sebuf[256];
+               {
+                   char        sebuf[256];
 
-               if (n == -1)
-                   printfPQExpBuffer(&conn->errorMessage,
+                   if (n == -1)
+                       printfPQExpBuffer(&conn->errorMessage,
                                libpq_gettext("SSL SYSCALL error: %s\n"),
-                                 SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
-               else
-                   printfPQExpBuffer(&conn->errorMessage,
-                               libpq_gettext("SSL SYSCALL error: EOF detected\n"));
-               break;
-           }
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                   else
+                       printfPQExpBuffer(&conn->errorMessage,
+                                         libpq_gettext("SSL SYSCALL error: EOF detected\n"));
+                   break;
+               }
            case SSL_ERROR_SSL:
                printfPQExpBuffer(&conn->errorMessage,
                      libpq_gettext("SSL error: %s\n"), SSLerrmessage());
@@ -388,7 +391,7 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len)
                break;
            default:
                printfPQExpBuffer(&conn->errorMessage,
-                                 libpq_gettext("Unknown SSL error code\n"));
+                             libpq_gettext("Unknown SSL error code\n"));
                break;
        }
    }
@@ -442,10 +445,11 @@ verify_peer(PGconn *conn)
    len = sizeof(addr);
    if (getpeername(conn->sock, &addr, &len) == -1)
    {
-       char sebuf[256];
+       char        sebuf[256];
+
        printfPQExpBuffer(&conn->errorMessage,
                          libpq_gettext("error querying socket: %s\n"),
-                         SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
        return -1;
    }
 
@@ -455,13 +459,13 @@ verify_peer(PGconn *conn)
 
    {
        struct hostent hpstr;
-       char buf[BUFSIZ];
-       int herrno = 0;
+       char        buf[BUFSIZ];
+       int         herrno = 0;
 
        pqGethostbyname(conn->peer_cn, &hpstr, buf, sizeof(buf),
-                       &h, &herrno);
+                       &h, &herrno);
    }
-   
+
    /* what do we know about the peer's common name? */
    if (h == NULL)
    {
@@ -485,7 +489,7 @@ verify_peer(PGconn *conn)
 
        default:
            printfPQExpBuffer(&conn->errorMessage,
-             libpq_gettext("unsupported protocol\n"));
+                             libpq_gettext("unsupported protocol\n"));
            return -1;
    }
 
@@ -514,7 +518,7 @@ verify_peer(PGconn *conn)
        default:
            printfPQExpBuffer(&conn->errorMessage,
                              libpq_gettext(
-           "server common name \"%s\" does not resolve to peer address\n"),
+                                           "server common name \"%s\" does not resolve to peer address\n"),
                              conn->peer_cn);
    }
 
@@ -532,7 +536,7 @@ verify_peer(PGconn *conn)
 static DH  *
 load_dh_file(int keylength)
 {
-   char pwdbuf[BUFSIZ];
+   char        pwdbuf[BUFSIZ];
    struct passwd pwdstr;
    struct passwd *pwd = NULL;
    FILE       *fp;
@@ -540,8 +544,8 @@ load_dh_file(int keylength)
    DH         *dh = NULL;
    int         codes;
 
-   if( pqGetpwuid(getuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pwd) == 0 )
-     return NULL;
+   if (pqGetpwuid(getuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pwd) == 0)
+       return NULL;
 
    /* attempt to open file.  It's not an error if it doesn't exist. */
    snprintf(fnbuf, sizeof fnbuf, "%s/.postgresql/dh%d.pem",
@@ -674,7 +678,7 @@ tmp_dh_cb(SSL *s, int is_export, int keylength)
 static int
 client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
 {
-   char pwdbuf[BUFSIZ];
+   char        pwdbuf[BUFSIZ];
    struct passwd pwdstr;
    struct passwd *pwd = NULL;
    struct stat buf,
@@ -683,10 +687,10 @@ client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
    FILE       *fp;
    PGconn     *conn = (PGconn *) SSL_get_app_data(ssl);
    int         (*cb) () = NULL;    /* how to read user password */
-   char sebuf[256];
+   char        sebuf[256];
 
 
-   if( pqGetpwuid(getuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pwd) == 0 )
+   if (pqGetpwuid(getuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pwd) == 0)
    {
        printfPQExpBuffer(&conn->errorMessage,
                      libpq_gettext("could not get user information\n"));
@@ -730,7 +734,7 @@ client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
        buf.st_uid != getuid())
    {
        printfPQExpBuffer(&conn->errorMessage,
-                         libpq_gettext("private key (%s) has wrong permissions\n"), fnbuf);
+       libpq_gettext("private key (%s) has wrong permissions\n"), fnbuf);
        X509_free(*x509);
        return -1;
    }
@@ -746,7 +750,7 @@ client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
        buf.st_dev != buf2.st_dev || buf.st_ino != buf2.st_ino)
    {
        printfPQExpBuffer(&conn->errorMessage,
-           libpq_gettext("private key (%s) changed during execution\n"), fnbuf);
+                         libpq_gettext("private key (%s) changed during execution\n"), fnbuf);
        X509_free(*x509);
        return -1;
    }
@@ -782,7 +786,7 @@ static int
 initialize_SSL(PGconn *conn)
 {
    struct stat buf;
-   char pwdbuf[BUFSIZ];
+   char        pwdbuf[BUFSIZ];
    struct passwd pwdstr;
    struct passwd *pwd = NULL;
    char        fnbuf[2048];
@@ -801,7 +805,7 @@ initialize_SSL(PGconn *conn)
        }
    }
 
-   if( pqGetpwuid(getuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pwd) == 0 )
+   if (pqGetpwuid(getuid(), &pwdstr, pwdbuf, sizeof(pwdbuf), &pwd) == 0)
    {
        snprintf(fnbuf, sizeof fnbuf, "%s/.postgresql/root.crt",
                 pwd->pw_dir);
@@ -809,18 +813,19 @@ initialize_SSL(PGconn *conn)
        {
            return 0;
 #ifdef NOT_USED
-           char sebuf[256];
+           char        sebuf[256];
+
            /* CLIENT CERTIFICATES NOT REQUIRED  bjm 2002-09-26 */
            printfPQExpBuffer(&conn->errorMessage,
-                libpq_gettext("could not read root certificate list (%s): %s\n"),
-                             fnbuf, pqStrerror(errno, sebuf, sizeof(sebuf)));
+                             libpq_gettext("could not read root certificate list (%s): %s\n"),
+                        fnbuf, pqStrerror(errno, sebuf, sizeof(sebuf)));
            return -1;
 #endif
        }
        if (!SSL_CTX_load_verify_locations(SSL_context, fnbuf, 0))
        {
            printfPQExpBuffer(&conn->errorMessage,
-                libpq_gettext("could not read root certificate list (%s): %s\n"),
+                             libpq_gettext("could not read root certificate list (%s): %s\n"),
                              fnbuf, SSLerrmessage());
            return -1;
        }
@@ -868,24 +873,24 @@ open_client_SSL(PGconn *conn)
        {
            case SSL_ERROR_WANT_READ:
                return PGRES_POLLING_READING;
-               
+
            case SSL_ERROR_WANT_WRITE:
                return PGRES_POLLING_WRITING;
 
            case SSL_ERROR_SYSCALL:
-           {
-               char sebuf[256];
-               
-               if (r == -1)
-                   printfPQExpBuffer(&conn->errorMessage,
+               {
+                   char        sebuf[256];
+
+                   if (r == -1)
+                       printfPQExpBuffer(&conn->errorMessage,
                                libpq_gettext("SSL SYSCALL error: %s\n"),
-                                 SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
-               else
-                   printfPQExpBuffer(&conn->errorMessage,
-                               libpq_gettext("SSL SYSCALL error: EOF detected\n"));
-               close_SSL(conn);
-               return PGRES_POLLING_FAILED;
-           }
+                       SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf)));
+                   else
+                       printfPQExpBuffer(&conn->errorMessage,
+                                         libpq_gettext("SSL SYSCALL error: EOF detected\n"));
+                   close_SSL(conn);
+                   return PGRES_POLLING_FAILED;
+               }
            case SSL_ERROR_SSL:
                printfPQExpBuffer(&conn->errorMessage,
                      libpq_gettext("SSL error: %s\n"), SSLerrmessage());
@@ -894,7 +899,7 @@ open_client_SSL(PGconn *conn)
 
            default:
                printfPQExpBuffer(&conn->errorMessage,
-                                 libpq_gettext("Unknown SSL error code\n"));
+                             libpq_gettext("Unknown SSL error code\n"));
                close_SSL(conn);
                return PGRES_POLLING_FAILED;
        }
@@ -904,6 +909,7 @@ open_client_SSL(PGconn *conn)
 
 #ifdef NOT_USED
    /* CLIENT CERTIFICATES NOT REQUIRED  bjm 2002-09-26 */
+
    /*
     * this eliminates simple man-in-the-middle attacks and simple
     * impersonations
@@ -942,6 +948,7 @@ open_client_SSL(PGconn *conn)
 
 #ifdef NOT_USED
    /* CLIENT CERTIFICATES NOT REQUIRED  bjm 2002-09-26 */
+
    /*
     * this is necessary to eliminate man-in-the-middle attacks and
     * impersonations where the attacker somehow learned the server's
index d8ff52d6b0e6a705302965de4e472034d5f808cd..c7bf37d2928c999a0e77012c4f12c86de842172b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: libpq-fe.h,v 1.94 2003/06/21 21:51:34 tgl Exp $
+ * $Id: libpq-fe.h,v 1.95 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -39,8 +39,8 @@ typedef enum
 {
    /*
     * Although it is okay to add to this list, values which become unused
-    * should never be removed, nor should constants be redefined - that would
-    * break compatibility with existing code.
+    * should never be removed, nor should constants be redefined - that
+    * would break compatibility with existing code.
     */
    CONNECTION_OK,
    CONNECTION_BAD,
@@ -67,8 +67,8 @@ typedef enum
    PGRES_POLLING_READING,      /* These two indicate that one may    */
    PGRES_POLLING_WRITING,      /* use select before polling again.   */
    PGRES_POLLING_OK,
-   PGRES_POLLING_ACTIVE        /*  unused; keep for awhile for
-                                 *  backwards compatibility */
+   PGRES_POLLING_ACTIVE        /* unused; keep for awhile for backwards
+                                * compatibility */
 } PostgresPollingStatusType;
 
 typedef enum
@@ -95,14 +95,14 @@ typedef enum
    PQTRANS_INTRANS,            /* idle, within transaction block */
    PQTRANS_INERROR,            /* idle, within failed transaction */
    PQTRANS_UNKNOWN             /* cannot determine status */
-} PGTransactionStatusType;
+}  PGTransactionStatusType;
 
 typedef enum
 {
    PQERRORS_TERSE,             /* single-line error messages */
    PQERRORS_DEFAULT,           /* recommended style */
    PQERRORS_VERBOSE            /* all the facts, ma'am */
-} PGVerbosity;
+}  PGVerbosity;
 
 /* PGconn encapsulates a connection to the backend.
  * The contents of this struct are not supposed to be known to applications.
@@ -246,7 +246,7 @@ extern char *PQoptions(const PGconn *conn);
 extern ConnStatusType PQstatus(const PGconn *conn);
 extern PGTransactionStatusType PQtransactionStatus(const PGconn *conn);
 extern const char *PQparameterStatus(const PGconn *conn,
-                                    const char *paramName);
+                 const char *paramName);
 extern int PQprotocolVersion(const PGconn *conn);
 extern char *PQerrorMessage(const PGconn *conn);
 extern int PQsocket(const PGconn *conn);
@@ -268,8 +268,8 @@ extern void PQuntrace(PGconn *conn);
 
 /* Override default notice handling routines */
 extern PQnoticeReceiver PQsetNoticeReceiver(PGconn *conn,
-                                           PQnoticeReceiver proc,
-                                           void *arg);
+                   PQnoticeReceiver proc,
+                   void *arg);
 extern PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn,
                     PQnoticeProcessor proc,
                     void *arg);
@@ -279,24 +279,24 @@ extern PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn,
 /* Simple synchronous query */
 extern PGresult *PQexec(PGconn *conn, const char *query);
 extern PGresult *PQexecParams(PGconn *conn,
-                             const char *command,
-                             int nParams,
-                             const Oid *paramTypes,
-                             const char * const *paramValues,
-                             const int *paramLengths,
-                             const int *paramFormats,
-                             int resultFormat);
+            const char *command,
+            int nParams,
+            const Oid *paramTypes,
+            const char *const * paramValues,
+            const int *paramLengths,
+            const int *paramFormats,
+            int resultFormat);
 
 /* Interface for multiple-result or asynchronous queries */
 extern int PQsendQuery(PGconn *conn, const char *query);
-extern int PQsendQueryParams(PGconn *conn,
-                             const char *command,
-                             int nParams,
-                             const Oid *paramTypes,
-                             const char * const *paramValues,
-                             const int *paramLengths,
-                             const int *paramFormats,
-                             int resultFormat);
+extern int PQsendQueryParams(PGconn *conn,
+                 const char *command,
+                 int nParams,
+                 const Oid *paramTypes,
+                 const char *const * paramValues,
+                 const int *paramLengths,
+                 const int *paramFormats,
+                 int resultFormat);
 extern PGresult *PQgetResult(PGconn *conn);
 
 /* Routines for managing an asynchronous query */
@@ -310,6 +310,7 @@ extern PGnotify *PQnotifies(PGconn *conn);
 extern int PQputCopyData(PGconn *conn, const char *buffer, int nbytes);
 extern int PQputCopyEnd(PGconn *conn, const char *errormsg);
 extern int PQgetCopyData(PGconn *conn, char **buffer, int async);
+
 /* Deprecated routines for copy in/out */
 extern int PQgetline(PGconn *conn, char *string, int length);
 extern int PQputline(PGconn *conn, const char *string);
@@ -388,21 +389,24 @@ extern unsigned char *PQunescapeBytea(const unsigned char *strtext,
 
 /* === in fe-print.c === */
 
-extern void PQprint(FILE *fout,                /* output stream */
-                   const PGresult *res,
-                   const PQprintOpt *ps);  /* option structure */
+extern void
+PQprint(FILE *fout,                /* output stream */
+       const PGresult *res,
+       const PQprintOpt *ps);  /* option structure */
 
 /*
  * really old printing routines
  */
-extern void PQdisplayTuples(const PGresult *res,
+extern void
+PQdisplayTuples(const PGresult *res,
                FILE *fp,       /* where to send the output */
                int fillAlign,  /* pad the fields with spaces */
                const char *fieldSep,   /* field separator */
                int printHeader,    /* display headers? */
                int quiet);
 
-extern void PQprintTuples(const PGresult *res,
+extern void
+PQprintTuples(const PGresult *res,
              FILE *fout,       /* output stream */
              int printAttName, /* print attribute names */
              int terseOutput,  /* delimiter bars */
index 42629c8189186555cf5c9b963c1a2ba7f7616f29..830816c323a6ea5aa6ae17757d63beb30befca61 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: libpq-int.h,v 1.78 2003/08/01 21:27:27 tgl Exp $
+ * $Id: libpq-int.h,v 1.79 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -120,16 +120,16 @@ typedef struct pgMessageField
    struct pgMessageField *next;    /* list link */
    char        code;           /* field code */
    char        contents[1];    /* field value (VARIABLE LENGTH) */
-} PGMessageField;
+}  PGMessageField;
 
 /* Fields needed for notice handling */
 typedef struct
 {
-   PQnoticeReceiver noticeRec;     /* notice message receiver */
+   PQnoticeReceiver noticeRec; /* notice message receiver */
    void       *noticeRecArg;
-   PQnoticeProcessor noticeProc;   /* notice message processor */
+   PQnoticeProcessor noticeProc;       /* notice message processor */
    void       *noticeProcArg;
-} PGNoticeHooks;
+}  PGNoticeHooks;
 
 struct pg_result
 {
@@ -201,16 +201,16 @@ typedef struct PQEnvironmentOption
 {
    const char *envName,        /* name of an environment variable */
               *pgName;         /* name of corresponding SET variable */
-} PQEnvironmentOption;
+}  PQEnvironmentOption;
 
 /* Typedef for parameter-status list entries */
 typedef struct pgParameterStatus
 {
-   struct pgParameterStatus *next; /* list link */
+   struct pgParameterStatus *next;     /* list link */
    char       *name;           /* parameter name */
    char       *value;          /* parameter value */
    /* Note: name and value are stored in same malloc block as struct is */
-} pgParameterStatus;
+}  pgParameterStatus;
 
 /* large-object-access data ... allocated only if large-object code is used. */
 typedef struct pgLobjfuncs
@@ -244,7 +244,7 @@ struct pg_conn
                                 * default constructed from pgport */
    char       *pgtty;          /* tty on which the backend messages is
                                 * displayed (OBSOLETE, NOT USED) */
-   char       *connect_timeout; /* connection timeout (numeric string) */
+   char       *connect_timeout;    /* connection timeout (numeric string) */
    char       *pgoptions;      /* options to start the backend with */
    char       *dbName;         /* database name */
    char       *pguser;         /* Postgres username and password, if any */
@@ -264,8 +264,9 @@ struct pg_conn
    /* note: xactStatus never changes to ACTIVE */
    int         nonblocking;    /* whether this connection is using a
                                 * blocking socket to the backend or not */
-   char        copy_is_binary; /* 1 = copy binary, 0 = copy text */
-   int         copy_already_done; /* # bytes already returned in COPY OUT */
+   char        copy_is_binary; /* 1 = copy binary, 0 = copy text */
+   int         copy_already_done;      /* # bytes already returned in
+                                        * COPY OUT */
    Dllist     *notifyList;     /* Notify msgs not yet handed to
                                 * application */
 
@@ -279,8 +280,8 @@ struct pg_conn
    /* Transient state needed while establishing connection */
    struct addrinfo *addrlist;  /* list of possible backend addresses */
    struct addrinfo *addr_cur;  /* the one currently being tried */
-   int         addrlist_family; /* needed to know how to free addrlist */
-   PGSetenvStatusType setenv_state; /* for 2.0 protocol only */
+   int         addrlist_family;    /* needed to know how to free addrlist */
+   PGSetenvStatusType setenv_state;    /* for 2.0 protocol only */
    const PQEnvironmentOption *next_eo;
 
    /* Miscellaneous stuff */
@@ -288,9 +289,9 @@ struct pg_conn
    int         be_key;         /* key of backend --- needed for cancels */
    char        md5Salt[4];     /* password salt received from backend */
    char        cryptSalt[2];   /* password salt received from backend */
-   pgParameterStatus *pstatus; /* ParameterStatus data */
-   int         client_encoding; /* encoding id */
-   PGVerbosity verbosity;      /* error/notice message verbosity */
+   pgParameterStatus *pstatus; /* ParameterStatus data */
+   int         client_encoding;    /* encoding id */
+   PGVerbosity verbosity;      /* error/notice message verbosity */
    PGlobjfuncs *lobjfuncs;     /* private state for large-object access
                                 * fns */
 
@@ -309,8 +310,8 @@ struct pg_conn
    int         outCount;       /* number of chars waiting in buffer */
 
    /* State for constructing messages in outBuffer */
-   int         outMsgStart;    /* offset to msg start (length word);
-                                * if -1, msg has no length word */
+   int         outMsgStart;    /* offset to msg start (length word); if
+                                * -1, msg has no length word */
    int         outMsgEnd;      /* offset to msg end (so far) */
 
    /* Status for asynchronous result construction */
@@ -350,8 +351,8 @@ extern char *const pgresStatus[];
 
 /* === in fe-connect.c === */
 
-extern int pqPacketSend(PGconn *conn, char pack_type,
-                        const void *buf, size_t buf_len);
+extern int pqPacketSend(PGconn *conn, char pack_type,
+            const void *buf, size_t buf_len);
 
 /* === in fe-exec.c === */
 
@@ -362,14 +363,15 @@ extern char *pqResultStrdup(PGresult *res, const char *str);
 extern void pqClearAsyncResult(PGconn *conn);
 extern void pqSaveErrorResult(PGconn *conn);
 extern PGresult *pqPrepareAsyncResult(PGconn *conn);
-extern void pqInternalNotice(const PGNoticeHooks *hooks, const char *fmt, ...)
+extern void
+pqInternalNotice(const PGNoticeHooks * hooks, const char *fmt,...)
 /* This lets gcc check the format string for consistency. */
 __attribute__((format(printf, 2, 3)));
-extern int pqAddTuple(PGresult *res, PGresAttValue *tup);
+extern int pqAddTuple(PGresult *res, PGresAttValue * tup);
 extern void pqSaveMessageField(PGresult *res, char code,
-                              const char *value);
+                  const char *value);
 extern void pqSaveParameterStatus(PGconn *conn, const char *name,
-                                 const char *value);
+                     const char *value);
 extern void pqHandleSendFailure(PGconn *conn);
 
 /* === in fe-protocol2.c === */
@@ -377,21 +379,21 @@ extern void pqHandleSendFailure(PGconn *conn);
 extern PostgresPollingStatusType pqSetenvPoll(PGconn *conn);
 
 extern char *pqBuildStartupPacket2(PGconn *conn, int *packetlen,
-                                  const PQEnvironmentOption *options);
+                     const PQEnvironmentOption * options);
 extern void pqParseInput2(PGconn *conn);
 extern int pqGetCopyData2(PGconn *conn, char **buffer, int async);
 extern int pqGetline2(PGconn *conn, char *s, int maxlen);
 extern int pqGetlineAsync2(PGconn *conn, char *buffer, int bufsize);
 extern int pqEndcopy2(PGconn *conn);
 extern PGresult *pqFunctionCall2(PGconn *conn, Oid fnid,
-                                int *result_buf, int *actual_result_len,
-                                int result_is_int,
-                                const PQArgBlock *args, int nargs);
+               int *result_buf, int *actual_result_len,
+               int result_is_int,
+               const PQArgBlock *args, int nargs);
 
 /* === in fe-protocol3.c === */
 
 extern char *pqBuildStartupPacket3(PGconn *conn, int *packetlen,
-                                  const PQEnvironmentOption *options);
+                     const PQEnvironmentOption * options);
 extern void pqParseInput3(PGconn *conn);
 extern int pqGetErrorNotice3(PGconn *conn, bool isError);
 extern int pqGetCopyData3(PGconn *conn, char **buffer, int async);
@@ -399,9 +401,9 @@ extern int  pqGetline3(PGconn *conn, char *s, int maxlen);
 extern int pqGetlineAsync3(PGconn *conn, char *buffer, int bufsize);
 extern int pqEndcopy3(PGconn *conn);
 extern PGresult *pqFunctionCall3(PGconn *conn, Oid fnid,
-                                int *result_buf, int *actual_result_len,
-                                int result_is_int,
-                                const PQArgBlock *args, int nargs);
+               int *result_buf, int *actual_result_len,
+               int result_is_int,
+               const PQArgBlock *args, int nargs);
 
 /* === in fe-misc.c === */
 
@@ -425,8 +427,8 @@ extern int  pqPutMsgEnd(PGconn *conn);
 extern int pqReadData(PGconn *conn);
 extern int pqFlush(PGconn *conn);
 extern int pqWait(int forRead, int forWrite, PGconn *conn);
-extern int pqWaitTimed(int forRead, int forWrite, PGconn *conn, 
-                       time_t finish_time);
+extern int pqWaitTimed(int forRead, int forWrite, PGconn *conn,
+           time_t finish_time);
 extern int pqReadReady(PGconn *conn);
 extern int pqWriteReady(PGconn *conn);
 
index 7edcac6c68ba5839e46ec533bc9b522dba1df403..b81ea4b4b616bf235863f2b9b5b3579828e475c3 100644 (file)
@@ -33,7 +33,7 @@
  *   ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.38 2003/07/31 18:36:28 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.39 2003/08/04 00:43:33 momjian Exp $
  *
  **********************************************************************/
 
@@ -284,7 +284,7 @@ plperl_call_handler(PG_FUNCTION_ARGS)
  *     create the anonymous subroutine whose text is in the SV.
  *     Returns the SV containing the RV to the closure.
  **********************************************************************/
-static SV *
+static SV  *
 plperl_create_sub(char *s, bool trusted)
 {
    dSP;
@@ -296,10 +296,11 @@ plperl_create_sub(char *s, bool trusted)
    PUSHMARK(SP);
    XPUSHs(sv_2mortal(newSVpv(s, 0)));
    PUTBACK;
+
    /*
     * G_KEEPERR seems to be needed here, else we don't recognize compile
-    * errors properly.  Perhaps it's because there's another level of eval
-    * inside mksafefunc?
+    * errors properly.  Perhaps it's because there's another level of
+    * eval inside mksafefunc?
     */
    count = perl_call_pv((trusted ? "mksafefunc" : "mkunsafefunc"),
                         G_SCALAR | G_EVAL | G_KEEPERR);
@@ -373,7 +374,7 @@ plperl_init_shared_libs(pTHX)
  * plperl_call_perl_func()     - calls a perl function through the RV
  *         stored in the prodesc structure. massages the input parms properly
  **********************************************************************/
-static SV *
+static SV  *
 plperl_call_perl_func(plperl_proc_desc * desc, FunctionCallInfo fcinfo)
 {
    dSP;
@@ -637,8 +638,8 @@ compile_plperl_function(Oid fn_oid, bool is_trigger)
                    free(prodesc);
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("plperl functions cannot return type %s",
-                                   format_type_be(procStruct->prorettype))));
+                        errmsg("plperl functions cannot return type %s",
+                               format_type_be(procStruct->prorettype))));
                }
            }
 
@@ -648,7 +649,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger)
                free(prodesc);
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("plperl functions cannot return tuples yet")));
+                  errmsg("plperl functions cannot return tuples yet")));
            }
 
            perm_fmgr_info(typeStruct->typinput, &(prodesc->result_in_func));
@@ -685,8 +686,8 @@ compile_plperl_function(Oid fn_oid, bool is_trigger)
                    free(prodesc);
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("plperl functions cannot take type %s",
-                                   format_type_be(procStruct->proargtypes[i]))));
+                          errmsg("plperl functions cannot take type %s",
+                          format_type_be(procStruct->proargtypes[i]))));
                }
 
                if (typeStruct->typrelid != InvalidOid)
@@ -739,7 +740,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger)
  * plperl_build_tuple_argument() - Build a string for a ref to a hash
  *               from all attributes of a given tuple
  **********************************************************************/
-static SV *
+static SV  *
 plperl_build_tuple_argument(HeapTuple tuple, TupleDesc tupdesc)
 {
    int         i;
index e08d6c82d7589c9ccfc2eef4af10eb821f9249a7..2cc43f86246cf1b707d51f9203b90e2911ab2680 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.64 2003/07/31 18:36:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.65 2003/08/04 00:43:33 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -88,10 +88,10 @@ static HTAB *plpgsql_HashTable = (HTAB *) NULL;
 typedef struct plpgsql_hashent
 {
    PLpgSQL_func_hashkey key;
-   PLpgSQL_function   *function;
-} plpgsql_HashEnt;
+   PLpgSQL_function *function;
+}  plpgsql_HashEnt;
 
-#define FUNCS_PER_USER     128     /* initial table size */
+#define FUNCS_PER_USER     128 /* initial table size */
 
 
 /* ----------
@@ -99,17 +99,17 @@ typedef struct plpgsql_hashent
  * ----------
  */
 static PLpgSQL_function *do_compile(FunctionCallInfo fcinfo,
-                                   HeapTuple procTup,
-                                   PLpgSQL_func_hashkey *hashkey);
+          HeapTuple procTup,
+          PLpgSQL_func_hashkey * hashkey);
 static void plpgsql_compile_error_callback(void *arg);
 static PLpgSQL_type *build_datatype(HeapTuple typeTup, int32 typmod);
 static void compute_function_hashkey(FmgrInfo *flinfo,
-                                    Form_pg_proc procStruct,
-                                    PLpgSQL_func_hashkey *hashkey);
-static PLpgSQL_function *plpgsql_HashTableLookup(PLpgSQL_func_hashkey *func_key);
-static void plpgsql_HashTableInsert(PLpgSQL_function *function,
-                                   PLpgSQL_func_hashkey *func_key);
-static void plpgsql_HashTableDelete(PLpgSQL_function *function);
+                        Form_pg_proc procStruct,
+                        PLpgSQL_func_hashkey * hashkey);
+static PLpgSQL_function *plpgsql_HashTableLookup(PLpgSQL_func_hashkey * func_key);
+static void plpgsql_HashTableInsert(PLpgSQL_function * function,
+                       PLpgSQL_func_hashkey * func_key);
+static void plpgsql_HashTableDelete(PLpgSQL_function * function);
 
 /*
  * This routine is a crock, and so is everyplace that calls it.  The problem
@@ -157,14 +157,14 @@ plpgsql_compile(FunctionCallInfo fcinfo)
    procStruct = (Form_pg_proc) GETSTRUCT(procTup);
 
    /*
-    * See if there's already a cache entry for the current FmgrInfo.
-    * If not, try to find one in the hash table.
+    * See if there's already a cache entry for the current FmgrInfo. If
+    * not, try to find one in the hash table.
     */
    function = (PLpgSQL_function *) fcinfo->flinfo->fn_extra;
 
    if (!function)
    {
-       /* First time through in this backend?  If so, init hashtable */
+       /* First time through in this backend?  If so, init hashtable */
        if (!plpgsql_HashTable)
            plpgsql_HashTableInit();
 
@@ -180,10 +180,10 @@ plpgsql_compile(FunctionCallInfo fcinfo)
    {
        /* We have a compiled function, but is it still valid? */
        if (!(function->fn_xmin == HeapTupleHeaderGetXmin(procTup->t_data) &&
-             function->fn_cmin == HeapTupleHeaderGetCmin(procTup->t_data)))
+          function->fn_cmin == HeapTupleHeaderGetCmin(procTup->t_data)))
        {
            /*
-            * Nope, drop the hashtable entry.  XXX someday, free all the
+            * Nope, drop the hashtable entry.  XXX someday, free all the
             * subsidiary storage as well.
             */
            plpgsql_HashTableDelete(function);
@@ -193,7 +193,8 @@ plpgsql_compile(FunctionCallInfo fcinfo)
    }
 
    /*
-    * If the function wasn't found or was out-of-date, we have to compile it
+    * If the function wasn't found or was out-of-date, we have to compile
+    * it
     */
    if (!function)
    {
@@ -229,7 +230,7 @@ plpgsql_compile(FunctionCallInfo fcinfo)
 static PLpgSQL_function *
 do_compile(FunctionCallInfo fcinfo,
           HeapTuple procTup,
-          PLpgSQL_func_hashkey *hashkey)
+          PLpgSQL_func_hashkey * hashkey)
 {
    Form_pg_proc procStruct = (Form_pg_proc) GETSTRUCT(procTup);
    int         functype = CALLED_AS_TRIGGER(fcinfo) ? T_TRIGGER : T_FUNCTION;
@@ -247,12 +248,12 @@ do_compile(FunctionCallInfo fcinfo,
    Oid         rettypeid;
 
    /*
-    * Setup the scanner input and error info.  We assume that this
+    * Setup the scanner input and error info.  We assume that this
     * function cannot be invoked recursively, so there's no need to save
     * and restore the static variables used here.
     */
    proc_source = DatumGetCString(DirectFunctionCall1(textout,
-                                   PointerGetDatum(&procStruct->prosrc)));
+                                 PointerGetDatum(&procStruct->prosrc)));
    plpgsql_scanner_init(proc_source, functype);
    pfree(proc_source);
 
@@ -297,13 +298,13 @@ do_compile(FunctionCallInfo fcinfo,
        case T_FUNCTION:
 
            /*
-            * Check for a polymorphic returntype. If found, use the actual
-            * returntype type from the caller's FuncExpr node, if we
-            * have one.
+            * Check for a polymorphic returntype. If found, use the
+            * actual returntype type from the caller's FuncExpr node, if
+            * we have one.
             *
-            * Note: errcode is FEATURE_NOT_SUPPORTED because it should always
-            * work; if it doesn't we're in some context that fails to make
-            * the info available.
+            * Note: errcode is FEATURE_NOT_SUPPORTED because it should
+            * always work; if it doesn't we're in some context that fails
+            * to make the info available.
             */
            rettypeid = procStruct->prorettype;
            if (rettypeid == ANYARRAYOID || rettypeid == ANYELEMENTOID)
@@ -312,9 +313,9 @@ do_compile(FunctionCallInfo fcinfo,
                if (!OidIsValid(rettypeid))
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("could not determine actual return type "
-                                   "for polymorphic function \"%s\"",
-                                   plpgsql_error_funcname)));
+                        errmsg("could not determine actual return type "
+                               "for polymorphic function \"%s\"",
+                               plpgsql_error_funcname)));
            }
 
            /*
@@ -339,7 +340,7 @@ do_compile(FunctionCallInfo fcinfo,
            {
                if (rettypeid == VOIDOID ||
                    rettypeid == RECORDOID)
-                   /* okay */ ;
+                    /* okay */ ;
                else if (rettypeid == TRIGGEROID)
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
@@ -347,8 +348,8 @@ do_compile(FunctionCallInfo fcinfo,
                else
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("plpgsql functions cannot return type %s",
-                                   format_type_be(rettypeid))));
+                       errmsg("plpgsql functions cannot return type %s",
+                              format_type_be(rettypeid))));
            }
 
            if (typeStruct->typrelid != InvalidOid ||
@@ -362,8 +363,8 @@ do_compile(FunctionCallInfo fcinfo,
                perm_fmgr_info(typeStruct->typinput, &(function->fn_retinput));
 
                /*
-                * install $0 reference, but only for polymorphic
-                * return types
+                * install $0 reference, but only for polymorphic return
+                * types
                 */
                if (procStruct->prorettype == ANYARRAYOID ||
                    procStruct->prorettype == ANYELEMENTOID)
@@ -432,8 +433,8 @@ do_compile(FunctionCallInfo fcinfo,
                if (typeStruct->typtype == 'p')
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("plpgsql functions cannot take type %s",
-                                   format_type_be(argtypeid))));
+                         errmsg("plpgsql functions cannot take type %s",
+                                format_type_be(argtypeid))));
 
                if (typeStruct->typrelid != InvalidOid)
                {
@@ -1283,7 +1284,10 @@ plpgsql_parse_tripwordtype(char *word)
            memset(cp[0], 0, (i + 1) * sizeof(char));
            memcpy(cp[0], word, i * sizeof(char));
 
-           /* qualified_att_len - one based position + 1 (null terminator) */
+           /*
+            * qualified_att_len - one based position + 1 (null
+            * terminator)
+            */
            cp[1] = (char *) palloc((qualified_att_len - i) * sizeof(char));
            memset(cp[1], 0, (qualified_att_len - i) * sizeof(char));
            memcpy(cp[1], &word[i + 1], (qualified_att_len - i - 1) * sizeof(char));
@@ -1691,7 +1695,7 @@ plpgsql_yyerror(const char *s)
    plpgsql_error_lineno = plpgsql_scanner_lineno();
    ereport(ERROR,
            (errcode(ERRCODE_SYNTAX_ERROR),
-            /* translator: first %s is a phrase like "syntax error" */
+   /* translator: first %s is a phrase like "syntax error" */
             errmsg("%s at or near \"%s\"", s, plpgsql_yytext)));
 }
 
@@ -1704,9 +1708,9 @@ plpgsql_yyerror(const char *s)
 static void
 compute_function_hashkey(FmgrInfo *flinfo,
                         Form_pg_proc procStruct,
-                        PLpgSQL_func_hashkey *hashkey)
+                        PLpgSQL_func_hashkey * hashkey)
 {
-   int     i;
+   int         i;
 
    /* Make sure any unused bytes of the struct are zero */
    MemSet(hashkey, 0, sizeof(PLpgSQL_func_hashkey));
@@ -1720,8 +1724,7 @@ compute_function_hashkey(FmgrInfo *flinfo,
 
        /*
         * Check for polymorphic arguments. If found, use the actual
-        * parameter type from the caller's FuncExpr node, if we
-        * have one.
+        * parameter type from the caller's FuncExpr node, if we have one.
         *
         * We can support arguments of type ANY the same way as normal
         * polymorphic arguments.
@@ -1759,14 +1762,14 @@ plpgsql_HashTableInit(void)
 }
 
 static PLpgSQL_function *
-plpgsql_HashTableLookup(PLpgSQL_func_hashkey *func_key)
+plpgsql_HashTableLookup(PLpgSQL_func_hashkey * func_key)
 {
-   plpgsql_HashEnt    *hentry;
+   plpgsql_HashEnt *hentry;
 
-   hentry = (plpgsql_HashEnt*) hash_search(plpgsql_HashTable,
-                                           (void *) func_key,
-                                           HASH_FIND,
-                                           NULL);
+   hentry = (plpgsql_HashEnt *) hash_search(plpgsql_HashTable,
+                                            (void *) func_key,
+                                            HASH_FIND,
+                                            NULL);
    if (hentry)
        return hentry->function;
    else
@@ -1774,16 +1777,16 @@ plpgsql_HashTableLookup(PLpgSQL_func_hashkey *func_key)
 }
 
 static void
-plpgsql_HashTableInsert(PLpgSQL_function *function,
-                       PLpgSQL_func_hashkey *func_key)
+plpgsql_HashTableInsert(PLpgSQL_function * function,
+                       PLpgSQL_func_hashkey * func_key)
 {
-   plpgsql_HashEnt    *hentry;
-   bool                found;
+   plpgsql_HashEnt *hentry;
+   bool        found;
 
-   hentry = (plpgsql_HashEnt*) hash_search(plpgsql_HashTable,
-                                           (void *) func_key,
-                                           HASH_ENTER,
-                                           &found);
+   hentry = (plpgsql_HashEnt *) hash_search(plpgsql_HashTable,
+                                            (void *) func_key,
+                                            HASH_ENTER,
+                                            &found);
    if (hentry == NULL)
        ereport(ERROR,
                (errcode(ERRCODE_OUT_OF_MEMORY),
@@ -1797,14 +1800,14 @@ plpgsql_HashTableInsert(PLpgSQL_function *function,
 }
 
 static void
-plpgsql_HashTableDelete(PLpgSQL_function *function)
+plpgsql_HashTableDelete(PLpgSQL_function * function)
 {
-   plpgsql_HashEnt    *hentry;
+   plpgsql_HashEnt *hentry;
 
-   hentry = (plpgsql_HashEnt*) hash_search(plpgsql_HashTable,
-                                           (void *) function->fn_hashkey,
-                                           HASH_REMOVE,
-                                           NULL);
+   hentry = (plpgsql_HashEnt *) hash_search(plpgsql_HashTable,
+                                          (void *) function->fn_hashkey,
+                                            HASH_REMOVE,
+                                            NULL);
    if (hentry == NULL)
        elog(WARNING, "trying to delete function that does not exist");
 }
index 89ac4a62d9a3d451fafa7836cee93dad7264cc6d..f51394a2d69e9ac16ab07634ef33a817e358a604 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.89 2003/07/27 18:38:26 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.90 2003/08/04 00:43:33 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -55,7 +55,7 @@
 #include "utils/syscache.h"
 
 
-static const char * const raise_skip_msg = "RAISE";
+static const char *const raise_skip_msg = "RAISE";
 
 /************************************************************
  * Local function forward declarations
@@ -73,7 +73,7 @@ static int exec_stmt(PLpgSQL_execstate * estate,
 static int exec_stmt_assign(PLpgSQL_execstate * estate,
                 PLpgSQL_stmt_assign * stmt);
 static int exec_stmt_perform(PLpgSQL_execstate * estate,
-                            PLpgSQL_stmt_perform * stmt);
+                 PLpgSQL_stmt_perform * stmt);
 static int exec_stmt_getdiag(PLpgSQL_execstate * estate,
                  PLpgSQL_stmt_getdiag * stmt);
 static int exec_stmt_if(PLpgSQL_execstate * estate,
@@ -129,15 +129,15 @@ static void exec_assign_expr(PLpgSQL_execstate * estate,
 static void exec_assign_value(PLpgSQL_execstate * estate,
                  PLpgSQL_datum * target,
                  Datum value, Oid valtype, bool *isNull);
-static void exec_eval_datum(PLpgSQL_execstate *estate,
-                           PLpgSQL_datum *datum,
-                           Oid expectedtypeid,
-                           Oid *typeid,
-                           Datum *value,
-                           bool *isnull);
+static void exec_eval_datum(PLpgSQL_execstate * estate,
+               PLpgSQL_datum * datum,
+               Oid expectedtypeid,
+               Oid *typeid,
+               Datum *value,
+               bool *isnull);
 static int exec_eval_subscript(PLpgSQL_execstate * estate,
-                              PLpgSQL_expr * expr,
-                              bool *isNull);
+                   PLpgSQL_expr * expr,
+                   bool *isNull);
 static Datum exec_eval_expr(PLpgSQL_execstate * estate,
               PLpgSQL_expr * expr,
               bool *isNull,
@@ -155,8 +155,8 @@ static Datum exec_cast_value(Datum value, Oid valtype,
                int32 reqtypmod,
                bool *isnull);
 static Datum exec_simple_cast_value(Datum value, Oid valtype,
-                                   Oid reqtype, int32 reqtypmod,
-                                   bool *isnull);
+                      Oid reqtype, int32 reqtypmod,
+                      bool *isnull);
 static void exec_init_tuple_store(PLpgSQL_execstate * estate);
 static bool compatible_tupdesc(TupleDesc td1, TupleDesc td2);
 static void exec_set_found(PLpgSQL_execstate * estate, bool state);
@@ -300,8 +300,8 @@ plpgsql_exec_function(PLpgSQL_function * func, FunctionCallInfo fcinfo)
        estate.err_stmt = NULL;
        estate.err_text = NULL;
        ereport(ERROR,
-               (errcode(ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT),
-                errmsg("control reached end of function without RETURN")));
+          (errcode(ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT),
+           errmsg("control reached end of function without RETURN")));
    }
 
    /*
@@ -406,7 +406,7 @@ plpgsql_exec_trigger(PLpgSQL_function * func,
    int         i;
    PLpgSQL_var *var;
    PLpgSQL_rec *rec_new,
-               *rec_old;
+              *rec_old;
    HeapTuple   rettup;
 
    /*
@@ -617,8 +617,8 @@ plpgsql_exec_trigger(PLpgSQL_function * func,
        estate.err_stmt = NULL;
        estate.err_text = NULL;
        ereport(ERROR,
-               (errcode(ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT),
-                errmsg("control reached end of trigger procedure without RETURN")));
+          (errcode(ERRCODE_S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT),
+           errmsg("control reached end of trigger procedure without RETURN")));
    }
 
    if (estate.retisset)
@@ -692,11 +692,15 @@ plpgsql_exec_error_callback(void *arg)
    {
        /*
         * We don't expend the cycles to run gettext() on err_text unless
-        * we actually need it.  Therefore, places that set up err_text should
-        * use gettext_noop() to ensure the strings get recorded in the
-        * message dictionary.
+        * we actually need it.  Therefore, places that set up err_text
+        * should use gettext_noop() to ensure the strings get recorded in
+        * the message dictionary.
+        */
+
+       /*
+        * translator: last %s is a phrase such as "while storing call
+        * arguments into local variables"
         */
-       /* translator: last %s is a phrase such as "while storing call arguments into local variables" */
        errcontext("PL/pgSQL function \"%s\" %s",
                   estate->err_func->fn_name,
                   gettext(estate->err_text));
@@ -776,9 +780,9 @@ exec_stmt_block(PLpgSQL_execstate * estate, PLpgSQL_stmt_block * block)
                            var->isnull = true;
                            if (var->notnull)
                                ereport(ERROR,
-                                       (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
-                                        errmsg("variable \"%s\" declared NOT NULL cannot default to NULL",
-                                               var->refname)));
+                               (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
+                                errmsg("variable \"%s\" declared NOT NULL cannot default to NULL",
+                                       var->refname)));
                        }
                        else
                        {
@@ -1018,7 +1022,7 @@ exec_stmt_perform(PLpgSQL_execstate * estate, PLpgSQL_stmt_perform * stmt)
    if (rc != SPI_OK_SELECT)
        ereport(ERROR,
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                errmsg("query \"%s\" did not return data", expr->query)));
+              errmsg("query \"%s\" did not return data", expr->query)));
 
    exec_set_found(estate, (estate->eval_processed != 0));
 
@@ -1619,7 +1623,7 @@ exec_stmt_return_next(PLpgSQL_execstate * estate,
    if (!estate->retisset)
        ereport(ERROR,
                (errcode(ERRCODE_SYNTAX_ERROR),
-                errmsg("cannot use RETURN NEXT in a non-SETOF function")));
+             errmsg("cannot use RETURN NEXT in a non-SETOF function")));
 
    if (estate->tuple_store == NULL)
        exec_init_tuple_store(estate);
@@ -1641,7 +1645,7 @@ exec_stmt_return_next(PLpgSQL_execstate * estate,
        if (!compatible_tupdesc(tupdesc, rec->tupdesc))
            ereport(ERROR,
                    (errcode(ERRCODE_DATATYPE_MISMATCH),
-                    errmsg("wrong record type supplied in RETURN NEXT")));
+                  errmsg("wrong record type supplied in RETURN NEXT")));
        tuple = rec->tup;
    }
    else if (stmt->row)
@@ -1653,7 +1657,7 @@ exec_stmt_return_next(PLpgSQL_execstate * estate,
        if (natts != stmt->row->nfields)
            ereport(ERROR,
                    (errcode(ERRCODE_DATATYPE_MISMATCH),
-                    errmsg("wrong record type supplied in RETURN NEXT")));
+                  errmsg("wrong record type supplied in RETURN NEXT")));
 
        dvalues = (Datum *) palloc0(natts * sizeof(Datum));
        nulls = (char *) palloc(natts * sizeof(char));
@@ -1667,7 +1671,7 @@ exec_stmt_return_next(PLpgSQL_execstate * estate,
            if (var->datatype->typoid != tupdesc->attrs[i]->atttypid)
                ereport(ERROR,
                        (errcode(ERRCODE_DATATYPE_MISMATCH),
-                        errmsg("wrong record type supplied in RETURN NEXT")));
+                  errmsg("wrong record type supplied in RETURN NEXT")));
            dvalues[i] = var->value;
            if (!var->isnull)
                nulls[i] = ' ';
@@ -1689,7 +1693,7 @@ exec_stmt_return_next(PLpgSQL_execstate * estate,
        if (natts != 1)
            ereport(ERROR,
                    (errcode(ERRCODE_DATATYPE_MISMATCH),
-                    errmsg("wrong result type supplied in RETURN NEXT")));
+                  errmsg("wrong result type supplied in RETURN NEXT")));
 
        retval = exec_eval_expr(estate,
                                stmt->expr,
@@ -1804,9 +1808,7 @@ exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt)
                            InvalidOid,
                            &paramtypeid, &paramvalue, &paramisnull);
            if (paramisnull)
-           {
                extval = "<NULL>";
-           }
            else
            {
                typetup = SearchSysCache(TYPEOID,
@@ -1820,8 +1822,8 @@ exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt)
                fmgr_info(typeStruct->typoutput, &finfo_output);
                extval = DatumGetCString(FunctionCall3(&finfo_output,
                                                       paramvalue,
-                                                      ObjectIdGetDatum(typeStruct->typelem),
-                                                      Int32GetDatum(-1)));
+                                  ObjectIdGetDatum(typeStruct->typelem),
+                                                    Int32GetDatum(-1)));
                ReleaseSysCache(typetup);
            }
            plpgsql_dstring_append(&ds, extval);
@@ -1831,9 +1833,9 @@ exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt)
 
        /*
         * Occurrences of single ' are removed. double ' are reduced to
-        * single ones.  We must do this because the parameter stored
-        * by the grammar is the raw T_STRING input literal, rather than
-        * the de-lexed string as you might expect ...
+        * single ones.  We must do this because the parameter stored by
+        * the grammar is the raw T_STRING input literal, rather than the
+        * de-lexed string as you might expect ...
         */
        if (*cp == '\'')
        {
@@ -1850,7 +1852,7 @@ exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt)
    /*
     * Throw the error (may or may not come back)
     */
-   estate->err_text = raise_skip_msg; /* suppress traceback of raise */
+   estate->err_text = raise_skip_msg;  /* suppress traceback of raise */
 
    ereport(stmt->elog_level,
            (errmsg_internal("%s", plpgsql_dstring_get(&ds))));
@@ -1950,8 +1952,8 @@ exec_prepare_plan(PLpgSQL_execstate * estate,
 
    for (i = 0; i < expr->nparams; i++)
    {
-       Datum   paramval;
-       bool    paramisnull;
+       Datum       paramval;
+       bool        paramisnull;
 
        exec_eval_datum(estate, estate->datums[expr->params[i]],
                        InvalidOid,
@@ -2041,7 +2043,7 @@ exec_stmt_execsql(PLpgSQL_execstate * estate,
        case SPI_OK_SELECT:
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("SELECT query has no destination for result data"),
+              errmsg("SELECT query has no destination for result data"),
                     errhint("If you want to discard the results, use PERFORM instead.")));
 
        default:
@@ -2501,7 +2503,7 @@ exec_stmt_open(PLpgSQL_execstate * estate, PLpgSQL_stmt_open * stmt)
            if (curvar->cursor_explicit_argrow < 0)
                ereport(ERROR,
                        (errcode(ERRCODE_SYNTAX_ERROR),
-                        errmsg("arguments given for cursor without arguments")));
+               errmsg("arguments given for cursor without arguments")));
 
            memset(&set_args, 0, sizeof(set_args));
            set_args.cmd_type = PLPGSQL_STMT_SELECT;
@@ -2600,7 +2602,7 @@ exec_stmt_fetch(PLpgSQL_execstate * estate, PLpgSQL_stmt_fetch * stmt)
    if (curvar->isnull)
        ereport(ERROR,
                (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
-                errmsg("cursor variable \"%s\" is NULL", curvar->refname)));
+            errmsg("cursor variable \"%s\" is NULL", curvar->refname)));
    curname = DatumGetCString(DirectFunctionCall1(textout, curvar->value));
 
    portal = SPI_cursor_find(curname);
@@ -2669,7 +2671,7 @@ exec_stmt_close(PLpgSQL_execstate * estate, PLpgSQL_stmt_close * stmt)
    if (curvar->isnull)
        ereport(ERROR,
                (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
-                errmsg("cursor variable \"%s\" is NULL", curvar->refname)));
+            errmsg("cursor variable \"%s\" is NULL", curvar->refname)));
    curname = DatumGetCString(DirectFunctionCall1(textout, curvar->value));
 
    portal = SPI_cursor_find(curname);
@@ -2810,10 +2812,10 @@ exec_assign_value(PLpgSQL_execstate * estate,
             */
            if (!HeapTupleIsValid(rec->tup))
                ereport(ERROR,
-                       (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                        errmsg("record \"%s\" is not assigned yet",
-                               rec->refname),
-                        errdetail("The tuple structure of a not-yet-assigned record is indeterminate.")));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("record \"%s\" is not assigned yet",
+                             rec->refname),
+                      errdetail("The tuple structure of a not-yet-assigned record is indeterminate.")));
 
            /*
             * Get the number of the records field to change and the
@@ -2898,15 +2900,16 @@ exec_assign_value(PLpgSQL_execstate * estate,
            /*
             * Target is an element of an array
             *
-            * To handle constructs like x[1][2] := something, we have to
-            * be prepared to deal with a chain of arrayelem datums.
-            * Chase back to find the base array datum, and save the
-            * subscript expressions as we go.  (We are scanning right to
-            * left here, but want to evaluate the subscripts left-to-right
-            * to minimize surprises.)
+            * To handle constructs like x[1][2] := something, we have to be
+            * prepared to deal with a chain of arrayelem datums. Chase
+            * back to find the base array datum, and save the subscript
+            * expressions as we go.  (We are scanning right to left here,
+            * but want to evaluate the subscripts left-to-right to
+            * minimize surprises.)
             */
            nsubscripts = 0;
-           do {
+           do
+           {
                PLpgSQL_arrayelem *arrayelem = (PLpgSQL_arrayelem *) target;
 
                if (nsubscripts >= MAXDIM)
@@ -2932,20 +2935,20 @@ exec_assign_value(PLpgSQL_execstate * estate,
            havenullsubscript = false;
            for (i = 0; i < nsubscripts; i++)
            {
-               bool    subisnull;
+               bool        subisnull;
 
                subscriptvals[i] =
                    exec_eval_subscript(estate,
-                                       subscripts[nsubscripts-1-i],
+                                       subscripts[nsubscripts - 1 - i],
                                        &subisnull);
                havenullsubscript |= subisnull;
            }
 
            /*
             * Skip the assignment if we have any nulls, either in the
-            * original array value, the subscripts, or the righthand side.
-            * This is pretty bogus but it corresponds to the current
-            * behavior of ExecEvalArrayRef().
+            * original array value, the subscripts, or the righthand
+            * side. This is pretty bogus but it corresponds to the
+            * current behavior of ExecEvalArrayRef().
             */
            if (oldarrayisnull || havenullsubscript || *isNull)
                return;
@@ -3014,8 +3017,8 @@ exec_assign_value(PLpgSQL_execstate * estate,
  * at the stored value in the case of pass-by-reference datatypes.
  */
 static void
-exec_eval_datum(PLpgSQL_execstate *estate,
-               PLpgSQL_datum *datum,
+exec_eval_datum(PLpgSQL_execstate * estate,
+               PLpgSQL_datum * datum,
                Oid expectedtypeid,
                Oid *typeid,
                Datum *value,
@@ -3047,10 +3050,10 @@ exec_eval_datum(PLpgSQL_execstate *estate,
            rec = (PLpgSQL_rec *) (estate->datums[recfield->recparentno]);
            if (!HeapTupleIsValid(rec->tup))
                ereport(ERROR,
-                       (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                        errmsg("record \"%s\" is not assigned yet",
-                               rec->refname),
-                        errdetail("The tuple structure of a not-yet-assigned record is indeterminate.")));
+                     (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
+                      errmsg("record \"%s\" is not assigned yet",
+                             rec->refname),
+                      errdetail("The tuple structure of a not-yet-assigned record is indeterminate.")));
            fno = SPI_fnumber(rec->tupdesc, recfield->fieldname);
            if (fno == SPI_ERROR_NOATTRIBUTE)
                ereport(ERROR,
@@ -3154,7 +3157,7 @@ exec_eval_expr(PLpgSQL_execstate * estate,
    if (rc != SPI_OK_SELECT)
        ereport(ERROR,
                (errcode(ERRCODE_WRONG_OBJECT_TYPE),
-                errmsg("query \"%s\" did not return data", expr->query)));
+              errmsg("query \"%s\" did not return data", expr->query)));
 
    /*
     * If there are no rows selected, the result is NULL.
@@ -3375,7 +3378,7 @@ exec_move_row(PLpgSQL_execstate * estate,
        else if (tupdesc)
        {
            /* If we have a tupdesc but no data, form an all-nulls tuple */
-           char        *nulls;
+           char       *nulls;
 
            /* +1 to avoid possible palloc(0) if no attributes */
            nulls = (char *) palloc(tupdesc->natts * sizeof(char) + 1);
@@ -3387,9 +3390,7 @@ exec_move_row(PLpgSQL_execstate * estate,
            pfree(nulls);
        }
        else
-       {
            rec->tup = NULL;
-       }
 
        if (tupdesc)
        {
@@ -3397,9 +3398,7 @@ exec_move_row(PLpgSQL_execstate * estate,
            rec->freetupdesc = true;
        }
        else
-       {
            rec->tupdesc = NULL;
-       }
 
        return;
    }
@@ -3415,8 +3414,8 @@ exec_move_row(PLpgSQL_execstate * estate,
     * ALTER TABLE. Ignore extra columns and assume NULL for missing
     * columns, the same as heap_getattr would do.
     *
-    * If we have no tuple data at all, we'll assign NULL to all columns
-    * of the row variable.
+    * If we have no tuple data at all, we'll assign NULL to all columns of
+    * the row variable.
     */
    if (row != NULL)
    {
@@ -3673,7 +3672,7 @@ exec_simple_check_node(Node *node)
 
        case T_ArrayExpr:
            {
-               ArrayExpr   *expr = (ArrayExpr *) node;
+               ArrayExpr  *expr = (ArrayExpr *) node;
 
                if (!exec_simple_check_node((Node *) expr->elements))
                    return FALSE;
@@ -3683,7 +3682,7 @@ exec_simple_check_node(Node *node)
 
        case T_CoalesceExpr:
            {
-               CoalesceExpr   *expr = (CoalesceExpr *) node;
+               CoalesceExpr *expr = (CoalesceExpr *) node;
 
                if (!exec_simple_check_node((Node *) expr->args))
                    return FALSE;
@@ -3791,9 +3790,9 @@ exec_simple_check_plan(PLpgSQL_expr * expr)
        return;
 
    /*
-    * Yes - this is a simple expression.  Prepare to execute it.
-    * We need an EState and an expression state tree, which we'll put
-    * into the plan context so they will have appropriate lifespan.
+    * Yes - this is a simple expression.  Prepare to execute it. We need
+    * an EState and an expression state tree, which we'll put into the
+    * plan context so they will have appropriate lifespan.
     */
    oldcontext = MemoryContextSwitchTo(spi_plan->plancxt);
 
index 2d5e92b1e2d8d0634c4e67894867788b7276b201..74be1447340b6625bf87ebbb102f7a2b7a31020f 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.28 2003/07/28 00:09:16 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v 1.29 2003/08/04 00:43:33 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -410,8 +410,8 @@ plpgsql_convert_ident(const char *s, char **output, int numidents)
        else
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
-                    errmsg("qualified identifier cannot be used here: %s",
-                           sstart)));
+                  errmsg("qualified identifier cannot be used here: %s",
+                         sstart)));
 
        /* If not done, skip whitespace, dot, whitespace */
        if (*s)
@@ -1046,7 +1046,7 @@ plpgsql_dumptree(PLpgSQL_function * func)
                       ((PLpgSQL_recfield *) d)->recparentno);
                break;
            case PLPGSQL_DTYPE_ARRAYELEM:
-               printf("ARRAYELEM of VAR %d subscript ", 
+               printf("ARRAYELEM of VAR %d subscript ",
                       ((PLpgSQL_arrayelem *) d)->arrayparentno);
                dump_expr(((PLpgSQL_arrayelem *) d)->subscript);
                printf("\n");
index 0e0072e4ff4c4f9693814a7e01c90f3fb204c53e..1705d878cc7939f1b24bd5b960cf0ea25325ece2 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.16 2003/07/31 18:36:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_handler.c,v 1.17 2003/08/04 00:43:33 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -46,7 +46,7 @@
 
 static int plpgsql_firstcall = 1;
 
-void plpgsql_init(void);
+void       plpgsql_init(void);
 static void plpgsql_init_all(void);
 
 
@@ -78,8 +78,8 @@ plpgsql_init_all(void)
        plpgsql_init();
 
    /*
-    * Any other initialization that must be done each time a new
-    * backend starts -- currently none
+    * Any other initialization that must be done each time a new backend
+    * starts -- currently none
     */
 
 }
index e12586011f13f5c57cd51d30c95db1cd9e282a85..1cb5ea2de902d616b1405539f2e92d99f8918675 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.38 2003/07/31 18:36:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.39 2003/08/04 00:43:33 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -311,7 +311,7 @@ typedef struct
    int         cmd_type;
    int         lineno;
    PLpgSQL_expr *expr;
-}   PLpgSQL_stmt_perform;
+}  PLpgSQL_stmt_perform;
 
 typedef struct
 {                              /* Get Diagnostics item     */
@@ -489,14 +489,15 @@ typedef struct
 
 typedef struct PLpgSQL_func_hashkey
 {                              /* Hash lookup key for functions */
-   Oid     funcOid;
+   Oid         funcOid;
+
    /*
     * We include actual argument types in the hash key to support
-    * polymorphic PLpgSQL functions.  Be careful that extra positions
-    * are zeroed!
+    * polymorphic PLpgSQL functions.  Be careful that extra positions are
+    * zeroed!
     */
-   Oid     argtypes[FUNC_MAX_ARGS];
-} PLpgSQL_func_hashkey;
+   Oid         argtypes[FUNC_MAX_ARGS];
+}  PLpgSQL_func_hashkey;
 
 
 typedef struct PLpgSQL_function
@@ -506,7 +507,7 @@ typedef struct PLpgSQL_function
    TransactionId fn_xmin;
    CommandId   fn_cmin;
    int         fn_functype;
-   PLpgSQL_func_hashkey *fn_hashkey; /* back-link to hashtable key */
+   PLpgSQL_func_hashkey *fn_hashkey;   /* back-link to hashtable key */
 
    Oid         fn_rettype;
    int         fn_rettyplen;
@@ -566,9 +567,9 @@ typedef struct
    ExprContext *eval_econtext;
 
    /* status information for error context reporting */
-   PLpgSQL_function   *err_func;       /* current func */
-   PLpgSQL_stmt       *err_stmt;       /* current stmt */
-   const char         *err_text;       /* additional state info */
+   PLpgSQL_function *err_func; /* current func */
+   PLpgSQL_stmt *err_stmt;     /* current stmt */
+   const char *err_text;       /* additional state info */
 }  PLpgSQL_execstate;
 
 
index 6f49e75ae4790ef08ba31d29a57091aab12076fb..bc00f4685619e999b3e71bd2d81a44a8bdb27177 100644 (file)
@@ -29,7 +29,7 @@
  * MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.36 2003/07/31 18:36:39 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.37 2003/08/04 00:43:33 momjian Exp $
  *
  *********************************************************************
  */
@@ -352,9 +352,7 @@ plpython_call_handler(PG_FUNCTION_ARGS)
        else
            PLy_restart_in_progress += 1;
        if (proc)
-       {
            Py_DECREF(proc->me);
-       }
        RERAISE_EXC();
    }
 
@@ -573,7 +571,7 @@ PLy_modify_tuple(PLyProcedure * proc, PyObject * pltd, TriggerData *tdata,
            modvalues[j] = FunctionCall3(&proc->result.out.r.atts[atti].typfunc,
                                         CStringGetDatum(src),
                 ObjectIdGetDatum(proc->result.out.r.atts[atti].typelem),
-                           Int32GetDatum(tupdesc->attrs[atti]->atttypmod));
+                        Int32GetDatum(tupdesc->attrs[atti]->atttypmod));
            modnulls[j] = ' ';
 
            Py_DECREF(plstr);
@@ -587,8 +585,8 @@ PLy_modify_tuple(PLyProcedure * proc, PyObject * pltd, TriggerData *tdata,
                           modvalues, modnulls);
 
    /*
-    * FIXME -- these leak if not explicitly pfree'd by other elog
-    * calls, no?
+    * FIXME -- these leak if not explicitly pfree'd by other elog calls,
+    * no?
     */
    pfree(modattrs);
    pfree(modvalues);
@@ -847,7 +845,7 @@ PLy_procedure_call(PLyProcedure * proc, char *kargs, PyObject * vargs)
    current = PLy_last_procedure;
    PLy_last_procedure = proc;
    PyDict_SetItemString(proc->globals, kargs, vargs);
-   rv = PyEval_EvalCode( (PyCodeObject*)proc->code, proc->globals, proc->globals);
+   rv = PyEval_EvalCode((PyCodeObject *) proc->code, proc->globals, proc->globals);
    PLy_last_procedure = current;
 
    if ((rv == NULL) || (PyErr_Occurred()))
@@ -994,7 +992,7 @@ static PLyProcedure *
 PLy_procedure_create(FunctionCallInfo fcinfo, bool is_trigger,
                     HeapTuple procTup, char *key)
 {
-   char        procName[NAMEDATALEN+256];
+   char        procName[NAMEDATALEN + 256];
 
    DECLARE_EXC();
    Form_pg_proc procStruct;
@@ -1050,7 +1048,7 @@ PLy_procedure_create(FunctionCallInfo fcinfo, bool is_trigger,
        Form_pg_type rvTypeStruct;
 
        rvTypeTup = SearchSysCache(TYPEOID,
-                                  ObjectIdGetDatum(procStruct->prorettype),
+                               ObjectIdGetDatum(procStruct->prorettype),
                                   0, 0, 0);
        if (!HeapTupleIsValid(rvTypeTup))
            elog(ERROR, "cache lookup failed for type %u",
@@ -1089,7 +1087,7 @@ PLy_procedure_create(FunctionCallInfo fcinfo, bool is_trigger,
        Form_pg_type argTypeStruct;
 
        argTypeTup = SearchSysCache(TYPEOID,
-                                   ObjectIdGetDatum(procStruct->proargtypes[i]),
+                           ObjectIdGetDatum(procStruct->proargtypes[i]),
                                    0, 0, 0);
        if (!HeapTupleIsValid(argTypeTup))
            elog(ERROR, "cache lookup failed for type %u",
@@ -1158,7 +1156,7 @@ PLy_procedure_compile(PLyProcedure * proc, const char *src)
    if ((crv != NULL) && (!PyErr_Occurred()))
    {
        int         clen;
-       char        call[NAMEDATALEN+256];
+       char        call[NAMEDATALEN + 256];
 
        Py_DECREF(crv);
 
@@ -1271,7 +1269,7 @@ PLy_input_tuple_funcs(PLyTypeInfo * arg, TupleDesc desc)
        Form_pg_type typeStruct;
 
        typeTup = SearchSysCache(TYPEOID,
-                                ObjectIdGetDatum(desc->attrs[i]->atttypid),
+                             ObjectIdGetDatum(desc->attrs[i]->atttypid),
                                 0, 0, 0);
        if (!HeapTupleIsValid(typeTup))
            elog(ERROR, "cache lookup failed for type %u",
@@ -1306,7 +1304,7 @@ PLy_output_tuple_funcs(PLyTypeInfo * arg, TupleDesc desc)
        Form_pg_type typeStruct;
 
        typeTup = SearchSysCache(TYPEOID,
-                                ObjectIdGetDatum(desc->attrs[i]->atttypid),
+                             ObjectIdGetDatum(desc->attrs[i]->atttypid),
                                 0, 0, 0);
        if (!HeapTupleIsValid(typeTup))
            elog(ERROR, "cache lookup failed for type %u",
@@ -2045,7 +2043,7 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
    int         i,
                rv;
    PLyPlanObject *plan;
-   char *nulls;
+   char       *nulls;
 
    enter();
 
@@ -2118,21 +2116,21 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
            elem = PySequence_GetItem(list, i);
            if (elem != Py_None)
            {
-                   so = PyObject_Str(elem);
-                   sv = PyString_AsString(so);
-
-                   /*
-                    * FIXME -- if this can elog, we have leak
-                    */
-                   plan->values[i] = FunctionCall3(&(plan->args[i].out.d.typfunc),
-                                                   CStringGetDatum(sv),
-                                                   ObjectIdGetDatum(plan->args[i].out.d.typelem),
-                                                   Int32GetDatum(-1));
-                   
-                   Py_DECREF(so);
-                   Py_DECREF(elem);
-
-                   nulls[i] = ' ';
+               so = PyObject_Str(elem);
+               sv = PyString_AsString(so);
+
+               /*
+                * FIXME -- if this can elog, we have leak
+                */
+               plan->values[i] = FunctionCall3(&(plan->args[i].out.d.typfunc),
+                                               CStringGetDatum(sv),
+                          ObjectIdGetDatum(plan->args[i].out.d.typelem),
+                                               Int32GetDatum(-1));
+
+               Py_DECREF(so);
+               Py_DECREF(elem);
+
+               nulls[i] = ' ';
            }
            else
            {
@@ -2144,9 +2142,7 @@ PLy_spi_execute_plan(PyObject * ob, PyObject * list, int limit)
        nulls[i] = '\0';
    }
    else
-   {
        nulls = NULL;
-   }
 
    rv = SPI_execp(plan->plan, plan->values, nulls, limit);
    RESTORE_EXC();
@@ -2347,8 +2343,8 @@ PLy_init_all(void)
        plpython_init();
 
    /*
-    * Any other initialization that must be done each time a new
-    * backend starts -- currently none
+    * Any other initialization that must be done each time a new backend
+    * starts -- currently none
     */
 
 }
index 1375c9720cd4767a5eb8ee4c169f4d80bd794655..366903618b22c9cd16b6c4deb2e8943af5324002 100644 (file)
@@ -31,7 +31,7 @@
  *   ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.73 2003/07/31 18:36:46 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.74 2003/08/04 00:43:33 momjian Exp $
  *
  **********************************************************************/
 
@@ -128,8 +128,8 @@ typedef struct pltcl_query_desc
 /**********************************************************************
  * Global data
  **********************************************************************/
-static bool    pltcl_pm_init_done = false;
-static bool    pltcl_be_init_done = false;
+static bool pltcl_pm_init_done = false;
+static bool pltcl_be_init_done = false;
 static int pltcl_call_level = 0;
 static int pltcl_restart_in_progress = 0;
 static Tcl_Interp *pltcl_hold_interp = NULL;
@@ -1095,8 +1095,8 @@ compile_pltcl_function(Oid fn_oid, bool is_trigger)
                    free(prodesc);
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                            errmsg("pltcl functions cannot return type %s",
-                                   format_type_be(procStruct->prorettype))));
+                         errmsg("pltcl functions cannot return type %s",
+                              format_type_be(procStruct->prorettype))));
                }
            }
 
@@ -1106,7 +1106,7 @@ compile_pltcl_function(Oid fn_oid, bool is_trigger)
                free(prodesc);
                ereport(ERROR,
                        (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                        errmsg("pltcl functions cannot return tuples yet")));
+                   errmsg("pltcl functions cannot return tuples yet")));
            }
 
            perm_fmgr_info(typeStruct->typinput, &(prodesc->result_in_func));
@@ -1145,7 +1145,7 @@ compile_pltcl_function(Oid fn_oid, bool is_trigger)
                    ereport(ERROR,
                            (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
                             errmsg("pltcl functions cannot take type %s",
-                                   format_type_be(procStruct->proargtypes[i]))));
+                          format_type_be(procStruct->proargtypes[i]))));
                }
 
                if (typeStruct->typrelid != InvalidOid)
@@ -2280,7 +2280,7 @@ pltcl_set_tuple_values(Tcl_Interp *interp, CONST84 char *arrayname,
 
    CONST84 char **arrptr;
    CONST84 char **nameptr;
-   CONST84 char  *nullname = NULL;
+   CONST84 char *nullname = NULL;
 
    /************************************************************
     * Prepare pointers for Tcl_SetVar2() below and in array
index 53a819d38df93a0a068260f64e31b3de98ccda2c..68959971fd34f67e76cda6c856c616e9225363e8 100644 (file)
@@ -6,13 +6,14 @@
 
 #include "postgres.h"
 
-#undef mkdir   /* no reason to use that macro because we ignore the 2nd arg */
+#undef mkdir                   /* no reason to use that macro because we
+                                * ignore the 2nd arg */
 
 #include <dirent.h>
 
 
 int
-copydir(char *fromdir,char *todir)
+copydir(char *fromdir, char *todir)
 {
    DIR        *xldir;
    struct dirent *xlde;
@@ -37,19 +38,19 @@ copydir(char *fromdir,char *todir)
 
    while ((xlde = readdir(xldir)) != NULL)
    {
-           snprintf(fromfl, MAXPGPATH, "%s/%s", fromdir, xlde->d_name);
-           snprintf(tofl, MAXPGPATH, "%s/%s", todir, xlde->d_name);
-           if (CopyFile(fromfl,tofl,TRUE) < 0)
-           {
-               int     save_errno = errno;
-
-               closedir(xldir);
-               errno = save_errno;
-               ereport(ERROR,
-                       (errcode_for_file_access(),
-                        errmsg("could not copy file \"%s\": %m", fromfl)));
-               return 1;
-           }
+       snprintf(fromfl, MAXPGPATH, "%s/%s", fromdir, xlde->d_name);
+       snprintf(tofl, MAXPGPATH, "%s/%s", todir, xlde->d_name);
+       if (CopyFile(fromfl, tofl, TRUE) < 0)
+       {
+           int         save_errno = errno;
+
+           closedir(xldir);
+           errno = save_errno;
+           ereport(ERROR,
+                   (errcode_for_file_access(),
+                    errmsg("could not copy file \"%s\": %m", fromfl)));
+           return 1;
+       }
    }
 
    closedir(xldir);
index 893e227fcf55dff85fc555171fe27fe1d2f35909..caa8d82142a505ce628265d1f705b9fcb42a4445 100644 (file)
  * modification, are permitted provided that the following conditions
  * are met:
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
+ *   notice, this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
  * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
+ *   must display the following acknowledgement:
  * This product includes software developed by the University of
  * California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 #if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)crypt.c    8.1.1.1 (Berkeley) 8/18/93";
+
 #else
 __RCSID("$NetBSD: crypt.c,v 1.18 2001/03/01 14:37:35 wiz Exp $");
 #endif
-#endif /* not lint */
+#endif   /* not lint */
 
 #include "pg_config.h"
 
@@ -57,10 +58,10 @@ __RCSID("$NetBSD: crypt.c,v 1.18 2001/03/01 14:37:35 wiz Exp $");
 #include <unistd.h>
 #endif
 
-static int des_setkey(const char *key);
-static int des_cipher(const char *in, char *out, long salt, int num_iter);
-static int setkey(const char *key);
-static int encrypt(char *block, int flag);
+static int des_setkey(const char *key);
+static int des_cipher(const char *in, char *out, long salt, int num_iter);
+static int setkey(const char *key);
+static int encrypt(char *block, int flag);
 
 /*
  * UNIX password, and DES, encryption.
@@ -89,7 +90,7 @@ static int encrypt(char *block, int flag);
 
 #ifdef CHAR_BITS
 #if CHAR_BITS != 8
-   #error C_block structure assumes 8 bit characters
+#error C_block structure assumes 8 bit characters
 #endif
 #endif
 
@@ -97,7 +98,7 @@ static int encrypt(char *block, int flag);
  * define "B64" to be the declaration for a 64 bit integer.
  * XXX this feature is currently unused, see "endian" comment below.
  */
-#define    B64 __int64
+#define B64 __int64
 
 /*
  * define "LARGEDATA" to get faster permutations, by using about 72 kilobytes
@@ -108,7 +109,7 @@ static int encrypt(char *block, int flag);
 
 /* compile with "-DSTATIC=void" when profiling */
 #ifndef STATIC
-#define    STATIC  static void
+#define STATIC static void
 #endif
 
 /*
@@ -119,7 +120,7 @@ typedef int int32_t;
 
 /* ==================================== */
 
-#define _PASSWORD_EFMT1 '_'            /* extended encryption format */
+#define _PASSWORD_EFMT1 '_'        /* extended encryption format */
 
 /*
  * Cipher-block representation (Bob Baldwin):
@@ -128,7 +129,7 @@ typedef int int32_t;
  * representation is to store one bit per byte in an array of bytes.  Bit N of
  * the NBS spec is stored as the LSB of the Nth byte (index N-1) in the array.
  * Another representation stores the 64 bits in 8 bytes, with bits 1..8 in the
- * first byte, 9..16 in the second, and so on.  The DES spec apparently has
+ * first byte, 9..16 in the second, and so on. The DES spec apparently has
  * bit 1 in the MSB of the first byte, but that is particularly noxious so we
  * bit-reverse each byte so that bit 1 is the LSB of the first byte, bit 8 is
  * the MSB of the first byte.  Specifically, the 64-bit input data and key are
@@ -136,21 +137,21 @@ typedef int int32_t;
  * MSB format.
  *
  * DES operates internally on groups of 32 bits which are expanded to 48 bits
- * by permutation E and shrunk back to 32 bits by the S boxes.  To speed up
+ * by permutation E and shrunk back to 32 bits by the S boxes. To speed up
  * the computation, the expansion is applied only once, the expanded
  * representation is maintained during the encryption, and a compression
- * permutation is applied only at the end.  To speed up the S-box lookups,
+ * permutation is applied only at the end. To speed up the S-box lookups,
  * the 48 bits are maintained as eight 6 bit groups, one per byte, which
  * directly feed the eight S-boxes.  Within each byte, the 6 bits are the
- * most significant ones.  The low two bits of each byte are zero.  (Thus,
+ * most significant ones.  The low two bits of each byte are zero. (Thus,
  * bit 1 of the 48 bit E expansion is stored as the "4"-valued bit of the
  * first byte in the eight byte representation, bit 2 of the 48 bit value is
- * the "8"-valued bit, and so on.)  In fact, a combined "SPE"-box lookup is
+ * the "8"-valued bit, and so on.) In fact, a combined "SPE"-box lookup is
  * used, in which the output is the 64 bit result of an S-box lookup which
  * has been permuted by P and expanded by E, and is ready for use in the next
  * iteration.  Two 32-bit wide tables, SPE[0] and SPE[1], are used for this
- * lookup.  Since each byte in the 48 bit path is a multiple of four, indexed
- * lookup of SPE[0] and SPE[1] is simple and fast.  The key schedule and
+ * lookup. Since each byte in the 48 bit path is a multiple of four, indexed
+ * lookup of SPE[0] and SPE[1] is simple and fast. The key schedule and
  * "salt" are also converted to this 8*(6+2) format.  The SPE table size is
  * 8*64*8 = 4K bytes.
  *
@@ -164,7 +165,7 @@ typedef int int32_t;
  * The byte-order problem is unfortunate, since on the one hand it is good
  * to have a machine-independent C_block representation (bits 1..8 in the
  * first byte, etc.), and on the other hand it is good for the LSB of the
- * first byte to be the LSB of i0.  We cannot have both these things, so we
+ * first byte to be the LSB of i0. We cannot have both these things, so we
  * currently use the "little-endian" representation and avoid any multi-byte
  * operations that depend on byte order.  This largely precludes use of the
  * 64-bit datatype since the relative order of i0 and i1 are unknown.  It
@@ -191,13 +192,13 @@ typedef int int32_t;
  * IE3264: MSB->LSB conversion, initial permutation, and expansion.
  * This is done by collecting the 32 even-numbered bits and applying
  * a 32->64 bit transformation, and then collecting the 32 odd-numbered
- * bits and applying the same transformation.  Since there are only
+ * bits and applying the same transformation.  Since there are only
  * 32 input bits, the IE3264 transformation table is half the size of
  * the usual table.
  * CF6464: Compression, final permutation, and LSB->MSB conversion.
  * This is done by two trivial 48->32 bit compressions to obtain
  * a 64-bit block (the bit numbering is given in the "CIFP" table)
- * followed by a 64->64 bit "cleanup" transformation.  (It would
+ * followed by a 64->64 bit "cleanup" transformation.  (It would
  * be possible to group the bits in the 64-bit block so that 2
  * identical 32->32 bit transformations could be used instead,
  * saving a factor of 4 in space and possibly 2 in time, but
@@ -216,7 +217,7 @@ typedef int int32_t;
  * transforms 56 bits into 48 bits, dropping 8 bits, so PC2 is not
  * invertible.  We get around that problem by using a modified PC2
  * which retains the 8 otherwise-lost bits in the unused low-order
- * bits of each byte.  The low-order bits are cleared when the
+ * bits of each byte.  The low-order bits are cleared when the
  * codes are stored into the key schedule.
  * PC2ROT[1]: Same as PC2ROT[0], but with two rotations.
  * This is faster than applying PC2ROT[0] twice,
@@ -225,7 +226,7 @@ typedef int int32_t;
  *
  * The salting is a simple permutation applied to the 48-bit result of E.
  * Specifically, if bit i (1 <= i <= 24) of the salt is set then bits i and
- * i+24 of the result are swapped.  The salt is thus a 24 bit number, with
+ * i+24 of the result are swapped. The salt is thus a 24 bit number, with
  * 16777216 possible values.  (The original salt was 12 bits and could not
  * swap bits 13..24 with 36..48.)
  *
@@ -235,45 +236,47 @@ typedef int int32_t;
  * 8% performance penalty.
  */
 
-typedef union {
+typedef union
+{
    unsigned char b[8];
-   struct {
-       int32_t i0;
-       int32_t i1;
-   } b32;
+   struct
+   {
+       int32_t     i0;
+       int32_t     i1;
+   }           b32;
 #if defined(B64)
-   B64 b64;
+   B64         b64;
 #endif
-} C_block;
+}  C_block;
 
 /*
  * Convert twenty-four-bit long in host-order
  * to six bits (and 2 low-order zeroes) per char little-endian format.
  */
-#define    TO_SIX_BIT(rslt, src) {             \
+#define TO_SIX_BIT(rslt, src) {                \
        C_block cvt;                \
        cvt.b[0] = src; src >>= 6;      \
        cvt.b[1] = src; src >>= 6;      \
        cvt.b[2] = src; src >>= 6;      \
        cvt.b[3] = src;             \
-       rslt = (cvt.b32.i0 & 0x3f3f3f3fL) << 2; \
+       rslt = (cvt.b32.i0 & 0x3f3f3f3fL) << 2; \
    }
 
 /*
  * These macros may someday permit efficient use of 64-bit integers.
  */
-#define    ZERO(d,d0,d1)           d0 = 0, d1 = 0
-#define    LOAD(d,d0,d1,bl)        d0 = (bl).b32.i0, d1 = (bl).b32.i1
-#define    LOADREG(d,d0,d1,s,s0,s1)    d0 = s0, d1 = s1
-#define    OR(d,d0,d1,bl)          d0 |= (bl).b32.i0, d1 |= (bl).b32.i1
-#define    STORE(s,s0,s1,bl)       (bl).b32.i0 = s0, (bl).b32.i1 = s1
-#define    DCL_BLOCK(d,d0,d1)      int32_t d0, d1
+#define ZERO(d,d0,d1)          d0 = 0, d1 = 0
+#define LOAD(d,d0,d1,bl)       d0 = (bl).b32.i0, d1 = (bl).b32.i1
+#define LOADREG(d,d0,d1,s,s0,s1)   d0 = s0, d1 = s1
+#define OR(d,d0,d1,bl)         d0 |= (bl).b32.i0, d1 |= (bl).b32.i1
+#define STORE(s,s0,s1,bl)      (bl).b32.i0 = s0, (bl).b32.i1 = s1
+#define DCL_BLOCK(d,d0,d1)     int32_t d0, d1
 
 #if defined(LARGEDATA)
  /* Waste memory like crazy.  Also, do permutations in line */
-#define    LGCHUNKBITS 3
-#define    CHUNKBITS   (1<<LGCHUNKBITS)
-#define    PERM6464(d,d0,d1,cpp,p)             \
+ /* Waste memory like crazy.  Also, do permutations in line */
+#define LGCHUNKBITS 3
+#define CHUNKBITS  (1<<LGCHUNKBITS)
+#define PERM6464(d,d0,d1,cpp,p)                \
    LOAD(d,d0,d1,(p)[(0<<CHUNKBITS)+(cpp)[0]]);     \
    OR (d,d0,d1,(p)[(1<<CHUNKBITS)+(cpp)[1]]);      \
    OR (d,d0,d1,(p)[(2<<CHUNKBITS)+(cpp)[2]]);      \
@@ -282,208 +285,214 @@ typedef union {
    OR (d,d0,d1,(p)[(5<<CHUNKBITS)+(cpp)[5]]);      \
    OR (d,d0,d1,(p)[(6<<CHUNKBITS)+(cpp)[6]]);      \
    OR (d,d0,d1,(p)[(7<<CHUNKBITS)+(cpp)[7]]);
-#define    PERM3264(d,d0,d1,cpp,p)             \
+#define PERM3264(d,d0,d1,cpp,p)                \
    LOAD(d,d0,d1,(p)[(0<<CHUNKBITS)+(cpp)[0]]);     \
    OR (d,d0,d1,(p)[(1<<CHUNKBITS)+(cpp)[1]]);      \
    OR (d,d0,d1,(p)[(2<<CHUNKBITS)+(cpp)[2]]);      \
    OR (d,d0,d1,(p)[(3<<CHUNKBITS)+(cpp)[3]]);
 #else
  /* "small data" */
-#define    LGCHUNKBITS 2
-#define    CHUNKBITS   (1<<LGCHUNKBITS)
-#define    PERM6464(d,d0,d1,cpp,p)             \
+ /* "small data" */
+#define LGCHUNKBITS 2
+#define CHUNKBITS  (1<<LGCHUNKBITS)
+#define PERM6464(d,d0,d1,cpp,p)                \
    { C_block tblk; permute(cpp,&tblk,p,8); LOAD (d,d0,d1,tblk); }
-#define    PERM3264(d,d0,d1,cpp,p)             \
+#define PERM3264(d,d0,d1,cpp,p)                \
    { C_block tblk; permute(cpp,&tblk,p,4); LOAD (d,d0,d1,tblk); }
-#endif /* LARGEDATA */
+#endif   /* LARGEDATA */
+
+STATIC     init_des(void);
+STATIC     init_perm(C_block[64 / CHUNKBITS][1 << CHUNKBITS], unsigned char[64], int, int);
 
-STATIC init_des(void);
-STATIC init_perm(C_block [64/CHUNKBITS][1<<CHUNKBITS], unsigned char [64], int, int);
 #ifndef LARGEDATA
-STATIC permute(unsigned char *, C_block *, C_block *, int);
+STATIC     permute(unsigned char *, C_block *, C_block *, int);
 #endif
 #ifdef DEBUG
-STATIC prtab(char *, unsigned char *, int);
+STATIC     prtab(char *, unsigned char *, int);
 #endif
 
 
 #ifndef LARGEDATA
 STATIC
 permute(cp, out, p, chars_in)
-   unsigned char *cp;
-   C_block *out;
-   C_block *p;
-   int chars_in;
+unsigned char *cp;
+C_block    *out;
+C_block    *p;
+int            chars_in;
 {
-   DCL_BLOCK(D,D0,D1);
-   C_block *tp;
-   int t;
+   DCL_BLOCK(D, D0, D1);
+   C_block    *tp;
+   int         t;
 
-   ZERO(D,D0,D1);
-   do {
+   ZERO(D, D0, D1);
+   do
+   {
        t = *cp++;
-       tp = &p[t&0xf]; OR(D,D0,D1,*tp); p += (1<<CHUNKBITS);
-       tp = &p[t>>4];  OR(D,D0,D1,*tp); p += (1<<CHUNKBITS);
+       tp = &p[t & 0xf];
+       OR(D, D0, D1, *tp);
+       p += (1 << CHUNKBITS);
+       tp = &p[t >> 4];
+       OR(D, D0, D1, *tp);
+       p += (1 << CHUNKBITS);
    } while (--chars_in > 0);
-   STORE(D,D0,D1,*out);
+   STORE(D, D0, D1, *out);
 }
-#endif /* LARGEDATA */
+#endif   /* LARGEDATA */
 
 
 /* =====  (mostly) Standard DES Tables ==================== */
 
-static unsigned char IP[] = {      /* initial permutation */
-   58, 50, 42, 34, 26, 18, 10,  2,
-   60, 52, 44, 36, 28, 20, 12,  4,
-   62, 54, 46, 38, 30, 22, 14,  6,
-   64, 56, 48, 40, 32, 24, 16,  8,
-   57, 49, 41, 33, 25, 17,  9,  1,
-   59, 51, 43, 35, 27, 19, 11,  3,
-   61, 53, 45, 37, 29, 21, 13,  5,
-   63, 55, 47, 39, 31, 23, 15,  7,
+static unsigned char IP[] = {  /* initial permutation */
+   58, 50, 42, 34, 26, 18, 10, 2,
+   60, 52, 44, 36, 28, 20, 12, 4,
+   62, 54, 46, 38, 30, 22, 14, 6,
+   64, 56, 48, 40, 32, 24, 16, 8,
+   57, 49, 41, 33, 25, 17, 9, 1,
+   59, 51, 43, 35, 27, 19, 11, 3,
+   61, 53, 45, 37, 29, 21, 13, 5,
+   63, 55, 47, 39, 31, 23, 15, 7,
 };
 
 /* The final permutation is the inverse of IP - no table is necessary */
 
-static unsigned char ExpandTr[] = {    /* expansion operation */
-   32,  1,  2,  3,  4,  5,
-    4,  5,  6,  7,  8,  9,
-    8,  9, 10, 11, 12, 13,
+static unsigned char ExpandTr[] = {        /* expansion operation */
+   32, 1, 2, 3, 4, 5,
+   4, 5, 6, 7, 8, 9,
+   8, 9, 10, 11, 12, 13,
    12, 13, 14, 15, 16, 17,
    16, 17, 18, 19, 20, 21,
    20, 21, 22, 23, 24, 25,
    24, 25, 26, 27, 28, 29,
-   28, 29, 30, 31, 32,  1,
+   28, 29, 30, 31, 32, 1,
 };
 
-static unsigned char PC1[] = {     /* permuted choice table 1 */
-   57, 49, 41, 33, 25, 17,  9,
-    1, 58, 50, 42, 34, 26, 18,
-   10,  2, 59, 51, 43, 35, 27,
-   19, 11,  3, 60, 52, 44, 36,
+static unsigned char PC1[] = { /* permuted choice table 1 */
+   57, 49, 41, 33, 25, 17, 9,
+   1, 58, 50, 42, 34, 26, 18,
+   10, 2, 59, 51, 43, 35, 27,
+   19, 11, 3, 60, 52, 44, 36,
 
    63, 55, 47, 39, 31, 23, 15,
-    7, 62, 54, 46, 38, 30, 22,
-   14,  6, 61, 53, 45, 37, 29,
-   21, 13,  5, 28, 20, 12,  4,
+   7, 62, 54, 46, 38, 30, 22,
+   14, 6, 61, 53, 45, 37, 29,
+   21, 13, 5, 28, 20, 12, 4,
 };
 
-static unsigned char Rotates[] = { /* PC1 rotation schedule */
+static unsigned char Rotates[] = {     /* PC1 rotation schedule */
    1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1,
 };
 
 /* note: each "row" of PC2 is left-padded with bits that make it invertible */
-static unsigned char PC2[] = {     /* permuted choice table 2 */
-    9, 18,    14, 17, 11, 24,  1,  5,
-   22, 25,     3, 28, 15,  6, 21, 10,
-   35, 38,    23, 19, 12,  4, 26,  8,
-   43, 54,    16,  7, 27, 20, 13,  2,
-
-    0,  0,    41, 52, 31, 37, 47, 55,
-    0,  0,    30, 40, 51, 45, 33, 48,
-    0,  0,    44, 49, 39, 56, 34, 53,
-    0,  0,    46, 42, 50, 36, 29, 32,
+static unsigned char PC2[] = { /* permuted choice table 2 */
+   9, 18, 14, 17, 11, 24, 1, 5,
+   22, 25, 3, 28, 15, 6, 21, 10,
+   35, 38, 23, 19, 12, 4, 26, 8,
+   43, 54, 16, 7, 27, 20, 13, 2,
+
+   0, 0, 41, 52, 31, 37, 47, 55,
+   0, 0, 30, 40, 51, 45, 33, 48,
+   0, 0, 44, 49, 39, 56, 34, 53,
+   0, 0, 46, 42, 50, 36, 29, 32,
 };
 
-static unsigned char S[8][64] = {  /* 48->32 bit substitution tables */
-                   /* S[1]         */
-   { 14,  4, 13,  1,  2, 15, 11,  8,  3, 10,  6, 12,  5,  9,  0,  7,
-      0, 15,  7,  4, 14,  2, 13,  1, 10,  6, 12, 11,  9,  5,  3,  8,
-      4,  1, 14,  8, 13,  6,  2, 11, 15, 12,  9,  7,  3, 10,  5,  0,
-     15, 12,  8,  2,  4,  9,  1,  7,  5, 11,  3, 14, 10,  0,  6, 13 },
-                   /* S[2]         */
-   { 15,  1,  8, 14,  6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10,
-      3, 13,  4,  7, 15,  2,  8, 14, 12,  0,  1, 10,  6,  9, 11,  5,
-      0, 14,  7, 11, 10,  4, 13,  1,  5,  8, 12,  6,  9,  3,  2, 15,
-     13,  8, 10,  1,  3, 15,  4,  2, 11,  6,  7, 12,  0,  5, 14,  9 },
-                   /* S[3]         */
-   { 10,  0,  9, 14,  6,  3, 15,  5,  1, 13, 12,  7, 11,  4,  2,  8,
-     13,  7,  0,  9,  3,  4,  6, 10,  2,  8,  5, 14, 12, 11, 15,  1,
-     13,  6,  4,  9,  8, 15,  3,  0, 11,  1,  2, 12,  5, 10, 14,  7,
-      1, 10, 13,  0,  6,  9,  8,  7,  4, 15, 14,  3, 11,  5,  2, 12 },
-                   /* S[4]         */
-   {  7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11, 12,  4, 15,
-     13,  8, 11,  5,  6, 15,  0,  3,  4,  7,  2, 12,  1, 10, 14,  9,
-     10,  6,  9,  0, 12, 11,  7, 13, 15,  1,  3, 14,  5,  2,  8,  4,
-      3, 15,  0,  6, 10,  1, 13,  8,  9,  4,  5, 11, 12,  7,  2, 14 },
-                   /* S[5]         */
-   {  2, 12,  4,  1,  7, 10, 11,  6,  8,  5,  3, 15, 13,  0, 14,  9,
-     14, 11,  2, 12,  4,  7, 13,  1,  5,  0, 15, 10,  3,  9,  8,  6,
-      4,  2,  1, 11, 10, 13,  7,  8, 15,  9, 12,  5,  6,  3,  0, 14,
-     11,  8, 12,  7,  1, 14,  2, 13,  6, 15,  0,  9, 10,  4,  5,  3 },
-                   /* S[6]         */
-   { 12,  1, 10, 15,  9,  2,  6,  8,  0, 13,  3,  4, 14,  7,  5, 11,
-     10, 15,  4,  2,  7, 12,  9,  5,  6,  1, 13, 14,  0, 11,  3,  8,
-      9, 14, 15,  5,  2,  8, 12,  3,  7,  0,  4, 10,  1, 13, 11,  6,
-      4,  3,  2, 12,  9,  5, 15, 10, 11, 14,  1,  7,  6,  0,  8, 13 },
-                   /* S[7]         */
-   {  4, 11,  2, 14, 15,  0,  8, 13,  3, 12,  9,  7,  5, 10,  6,  1,
-     13,  0, 11,  7,  4,  9,  1, 10, 14,  3,  5, 12,  2, 15,  8,  6,
-      1,  4, 11, 13, 12,  3,  7, 14, 10, 15,  6,  8,  0,  5,  9,  2,
-      6, 11, 13,  8,  1,  4, 10,  7,  9,  5,  0, 15, 14,  2,  3, 12 },
-                   /* S[8]         */
-   { 13,  2,  8,  4,  6, 15, 11,  1, 10,  9,  3, 14,  5,  0, 12,  7,
-      1, 15, 13,  8, 10,  3,  7,  4, 12,  5,  6, 11,  0, 14,  9,  2,
-      7, 11,  4,  1,  9, 12, 14,  2,  0,  6, 10, 13, 15,  3,  5,  8,
-      2,  1, 14,  7,  4, 10,  8, 13, 15, 12,  9,  0,  3,  5,  6, 11 }
+static unsigned char S[8][64] = {      /* 48->32 bit substitution tables */
+   /* S[1]         */
+   {14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
+       0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
+       4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
+   15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13},
+   /* S[2]         */
+   {15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
+       3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
+       0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
+   13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9},
+   /* S[3]         */
+   {10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
+       13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
+       13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
+   1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12},
+   /* S[4]         */
+   {7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
+       13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
+       10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
+   3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14},
+   /* S[5]         */
+   {2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
+       14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
+       4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
+   11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3},
+   /* S[6]         */
+   {12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
+       10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
+       9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
+   4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13},
+   /* S[7]         */
+   {4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
+       13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
+       1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
+   6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12},
+   /* S[8]         */
+   {13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
+       1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
+       7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
+   2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11}
 };
 
 static unsigned char P32Tr[] = {   /* 32-bit permutation function */
-   16,  7, 20, 21,
+   16, 7, 20, 21,
    29, 12, 28, 17,
-    1, 15, 23, 26,
-    5, 18, 31, 10,
-    2,  8, 24, 14,
-   32, 27,  3,  9,
-   19, 13, 30,  6,
-   22, 11,  4, 25,
+   1, 15, 23, 26,
+   5, 18, 31, 10,
+   2, 8, 24, 14,
+   32, 27, 3, 9,
+   19, 13, 30, 6,
+   22, 11, 4, 25,
 };
 
-static unsigned char CIFP[] = {        /* compressed/interleaved permutation */
-    1,  2,  3,  4,   17, 18, 19, 20,
-    5,  6,  7,  8,   21, 22, 23, 24,
-    9, 10, 11, 12,   25, 26, 27, 28,
-   13, 14, 15, 16,   29, 30, 31, 32,
+static unsigned char CIFP[] = { /* compressed/interleaved permutation */
+   1, 2, 3, 4, 17, 18, 19, 20,
+   5, 6, 7, 8, 21, 22, 23, 24,
+   9, 10, 11, 12, 25, 26, 27, 28,
+   13, 14, 15, 16, 29, 30, 31, 32,
 
-   33, 34, 35, 36,   49, 50, 51, 52,
-   37, 38, 39, 40,   53, 54, 55, 56,
-   41, 42, 43, 44,   57, 58, 59, 60,
-   45, 46, 47, 48,   61, 62, 63, 64,
+   33, 34, 35, 36, 49, 50, 51, 52,
+   37, 38, 39, 40, 53, 54, 55, 56,
+   41, 42, 43, 44, 57, 58, 59, 60,
+   45, 46, 47, 48, 61, 62, 63, 64,
 };
 
-static unsigned char itoa64[] =        /* 0..63 => ascii-64 */
-   "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+static unsigned char itoa64[] = /* 0..63 => ascii-64 */
+"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
 
 /* =====  Tables that are initialized at run time  ==================== */
 
 
-static unsigned char a64toi[128];  /* ascii-64 => 0..63 */
+static unsigned char a64toi[128];      /* ascii-64 => 0..63 */
 
 /* Initial key schedule permutation */
-static C_block PC1ROT[64/CHUNKBITS][1<<CHUNKBITS];
+static C_block PC1ROT[64 / CHUNKBITS][1 << CHUNKBITS];
 
 /* Subsequent key schedule rotation permutations */
-static C_block PC2ROT[2][64/CHUNKBITS][1<<CHUNKBITS];
+static C_block PC2ROT[2][64 / CHUNKBITS][1 << CHUNKBITS];
 
 /* Initial permutation/expansion table */
-static C_block IE3264[32/CHUNKBITS][1<<CHUNKBITS];
+static C_block IE3264[32 / CHUNKBITS][1 << CHUNKBITS];
 
-/* Table that combines the S, P, and E operations.  */
+/* Table that combines the S, P, and E operations. */
 static int32_t SPE[2][8][64];
 
 /* compressed/interleaved => final permutation table */
-static C_block CF6464[64/CHUNKBITS][1<<CHUNKBITS];
+static C_block CF6464[64 / CHUNKBITS][1 << CHUNKBITS];
 
 
 /* ==================================== */
 
 
-static C_block constdatablock;         /* encryption constant */
-static char    cryptresult[1+4+4+11+1];    /* encrypted result */
+static C_block constdatablock; /* encryption constant */
+static char cryptresult[1 + 4 + 4 + 11 + 1];   /* encrypted result */
 
 extern char *__md5crypt(const char *, const char *);   /* XXX */
-extern char *__bcrypt(const char *, const char *); /* XXX */
+extern char *__bcrypt(const char *, const char *);     /* XXX */
 
 
 /*
@@ -492,105 +501,127 @@ extern char *__bcrypt(const char *, const char *);  /* XXX */
  */
 char *
 crypt(key, setting)
-   const char *key;
-   const char *setting;
+const char *key;
+const char *setting;
 {
-   char *encp;
-   int32_t i;
-   int t;
-   int32_t salt;
-   int num_iter, salt_size;
-   C_block keyblock, rsltblock;
+   char       *encp;
+   int32_t     i;
+   int         t;
+   int32_t     salt;
+   int         num_iter,
+               salt_size;
+   C_block     keyblock,
+               rsltblock;
 
 #if 0
    /* Non-DES encryption schemes hook in here. */
-   if (setting[0] == _PASSWORD_NONDES) {
-       switch (setting[1]) {
-       case '2':
-           return (__bcrypt(key, setting));
-       case '1':
-       default:
-           return (__md5crypt(key, setting));
+   if (setting[0] == _PASSWORD_NONDES)
+   {
+       switch (setting[1])
+       {
+           case '2':
+               return (__bcrypt(key, setting));
+           case '1':
+           default:
+               return (__md5crypt(key, setting));
        }
    }
 #endif
 
-   for (i = 0; i < 8; i++) {
-       if ((t = 2*(unsigned char)(*key)) != 0)
+   for (i = 0; i < 8; i++)
+   {
+       if ((t = 2 * (unsigned char) (*key)) != 0)
            key++;
        keyblock.b[i] = t;
    }
-   if (des_setkey((char *)keyblock.b)) /* also initializes "a64toi" */
+   if (des_setkey((char *) keyblock.b))        /* also initializes
+                                                * "a64toi" */
        return (NULL);
 
    encp = &cryptresult[0];
-   switch (*setting) {
-   case _PASSWORD_EFMT1:
-       /*
-        * Involve the rest of the password 8 characters at a time.
-        */
-       while (*key) {
-           if (des_cipher((char *)(void *)&keyblock,
-               (char *)(void *)&keyblock, 0L, 1))
-               return (NULL);
-           for (i = 0; i < 8; i++) {
-               if ((t = 2*(unsigned char)(*key)) != 0)
-                   key++;
-               keyblock.b[i] ^= t;
+   switch (*setting)
+   {
+       case _PASSWORD_EFMT1:
+
+           /*
+            * Involve the rest of the password 8 characters at a time.
+            */
+           while (*key)
+           {
+               if (des_cipher((char *) (void *) &keyblock,
+                              (char *) (void *) &keyblock, 0L, 1))
+                   return (NULL);
+               for (i = 0; i < 8; i++)
+               {
+                   if ((t = 2 * (unsigned char) (*key)) != 0)
+                       key++;
+                   keyblock.b[i] ^= t;
+               }
+               if (des_setkey((char *) keyblock.b))
+                   return (NULL);
            }
-           if (des_setkey((char *)keyblock.b))
-               return (NULL);
-       }
 
-       *encp++ = *setting++;
+           *encp++ = *setting++;
 
-       /* get iteration count */
-       num_iter = 0;
-       for (i = 4; --i >= 0; ) {
-           if ((t = (unsigned char)setting[i]) == '\0')
-               t = '.';
-           encp[i] = t;
-           num_iter = (num_iter<<6) | a64toi[t];
-       }
-       setting += 4;
-       encp += 4;
-       salt_size = 4;
-       break;
-   default:
-       num_iter = 25;
-       salt_size = 2;
+           /* get iteration count */
+           num_iter = 0;
+           for (i = 4; --i >= 0;)
+           {
+               if ((t = (unsigned char) setting[i]) == '\0')
+                   t = '.';
+               encp[i] = t;
+               num_iter = (num_iter << 6) | a64toi[t];
+           }
+           setting += 4;
+           encp += 4;
+           salt_size = 4;
+           break;
+       default:
+           num_iter = 25;
+           salt_size = 2;
    }
 
    salt = 0;
-   for (i = salt_size; --i >= 0; ) {
-       if ((t = (unsigned char)setting[i]) == '\0')
+   for (i = salt_size; --i >= 0;)
+   {
+       if ((t = (unsigned char) setting[i]) == '\0')
            t = '.';
        encp[i] = t;
-       salt = (salt<<6) | a64toi[t];
+       salt = (salt << 6) | a64toi[t];
    }
    encp += salt_size;
-   if (des_cipher((char *)(void *)&constdatablock,
-       (char *)(void *)&rsltblock, salt, num_iter))
+   if (des_cipher((char *) (void *) &constdatablock,
+                  (char *) (void *) &rsltblock, salt, num_iter))
        return (NULL);
 
    /*
     * Encode the 64 cipher bits as 11 ascii characters.
     */
-   i = ((int32_t)((rsltblock.b[0]<<8) | rsltblock.b[1])<<8) |
-       rsltblock.b[2];
-   encp[3] = itoa64[i&0x3f];   i >>= 6;
-   encp[2] = itoa64[i&0x3f];   i >>= 6;
-   encp[1] = itoa64[i&0x3f];   i >>= 6;
-   encp[0] = itoa64[i];        encp += 4;
-   i = ((int32_t)((rsltblock.b[3]<<8) | rsltblock.b[4])<<8) |
-       rsltblock.b[5];
-   encp[3] = itoa64[i&0x3f];   i >>= 6;
-   encp[2] = itoa64[i&0x3f];   i >>= 6;
-   encp[1] = itoa64[i&0x3f];   i >>= 6;
-   encp[0] = itoa64[i];        encp += 4;
-   i = ((int32_t)((rsltblock.b[6])<<8) | rsltblock.b[7])<<2;
-   encp[2] = itoa64[i&0x3f];   i >>= 6;
-   encp[1] = itoa64[i&0x3f];   i >>= 6;
+   i = ((int32_t) ((rsltblock.b[0] << 8) | rsltblock.b[1]) << 8) |
+       rsltblock.b[2];
+   encp[3] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[2] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[1] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[0] = itoa64[i];
+   encp += 4;
+   i = ((int32_t) ((rsltblock.b[3] << 8) | rsltblock.b[4]) << 8) |
+       rsltblock.b[5];
+   encp[3] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[2] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[1] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[0] = itoa64[i];
+   encp += 4;
+   i = ((int32_t) ((rsltblock.b[6]) << 8) | rsltblock.b[7]) << 2;
+   encp[2] = itoa64[i & 0x3f];
+   i >>= 6;
+   encp[1] = itoa64[i & 0x3f];
+   i >>= 6;
    encp[0] = itoa64[i];
 
    encp[3] = 0;
@@ -602,8 +633,8 @@ crypt(key, setting)
 /*
  * The Key Schedule, filled in by des_setkey() or setkey().
  */
-#define    KS_SIZE 16
-static C_block KS[KS_SIZE];
+#define KS_SIZE 16
+static C_block KS[KS_SIZE];
 
 static volatile int des_ready = 0;
 
@@ -612,24 +643,25 @@ static volatile int des_ready = 0;
  */
 static int
 des_setkey(key)
-   const char *key;
+const char *key;
 {
    DCL_BLOCK(K, K0, K1);
-   C_block *ptabp;
-   int i;
+   C_block    *ptabp;
+   int         i;
 
    if (!des_ready)
        init_des();
 
-   PERM6464(K,K0,K1,(unsigned char *)key,(C_block *)PC1ROT);
-   key = (char *)&KS[0];
-   STORE(K&~0x03030303L, K0&~0x03030303L, K1, *(C_block *)key);
-   for (i = 1; i < 16; i++) {
+   PERM6464(K, K0, K1, (unsigned char *) key, (C_block *) PC1ROT);
+   key = (char *) &KS[0];
+   STORE(K & ~0x03030303L, K0 & ~0x03030303L, K1, *(C_block *) key);
+   for (i = 1; i < 16; i++)
+   {
        key += sizeof(C_block);
-       STORE(K,K0,K1,*(C_block *)key);
-       ptabp = (C_block *)PC2ROT[Rotates[i]-1];
-       PERM6464(K,K0,K1,(unsigned char *)key,ptabp);
-       STORE(K&~0x03030303L, K0&~0x03030303L, K1, *(C_block *)key);
+       STORE(K, K0, K1, *(C_block *) key);
+       ptabp = (C_block *) PC2ROT[Rotates[i] - 1];
+       PERM6464(K, K0, K1, (unsigned char *) key, ptabp);
+       STORE(K & ~0x03030303L, K0 & ~0x03030303L, K1, *(C_block *) key);
    }
    return (0);
 }
@@ -644,80 +676,93 @@ des_setkey(key)
  */
 static int
 des_cipher(in, out, salt, num_iter)
-   const char *in;
-   char *out;
-   long salt;
-   int num_iter;
+const char *in;
+char      *out;
+long       salt;
+int            num_iter;
 {
    /* variables that we want in registers, most important first */
 #if defined(pdp11)
-   int j;
+   int         j;
 #endif
-   int32_t L0, L1, R0, R1, k;
-   C_block *kp;
-   int ks_inc, loop_count;
-   C_block B;
+   int32_t     L0,
+               L1,
+               R0,
+               R1,
+               k;
+   C_block    *kp;
+   int         ks_inc,
+               loop_count;
+   C_block     B;
 
    L0 = salt;
-   TO_SIX_BIT(salt, L0);   /* convert to 4*(6+2) format */
+   TO_SIX_BIT(salt, L0);       /* convert to 4*(6+2) format */
 
 #if defined(__vax__) || defined(pdp11)
-   salt = ~salt;   /* "x &~ y" is faster than "x & y". */
-#define    SALT (~salt)
+   salt = ~salt;               /* "x &~ y" is faster than "x & y". */
+#define SALT (~salt)
 #else
-#define    SALT salt
+#define SALT salt
 #endif
 
 #if defined(MUST_ALIGN)
-   B.b[0] = in[0]; B.b[1] = in[1]; B.b[2] = in[2]; B.b[3] = in[3];
-   B.b[4] = in[4]; B.b[5] = in[5]; B.b[6] = in[6]; B.b[7] = in[7];
-   LOAD(L,L0,L1,B);
+   B.b[0] = in[0];
+   B.b[1] = in[1];
+   B.b[2] = in[2];
+   B.b[3] = in[3];
+   B.b[4] = in[4];
+   B.b[5] = in[5];
+   B.b[6] = in[6];
+   B.b[7] = in[7];
+   LOAD(L, L0, L1, B);
 #else
-   LOAD(L,L0,L1,*(C_block *)in);
+   LOAD(L, L0, L1, *(C_block *) in);
 #endif
-   LOADREG(R,R0,R1,L,L0,L1);
+   LOADREG(R, R0, R1, L, L0, L1);
    L0 &= 0x55555555L;
    L1 &= 0x55555555L;
-   L0 = (L0 << 1) | L1;    /* L0 is the even-numbered input bits */
+   L0 = (L0 << 1) | L1;        /* L0 is the even-numbered input bits */
    R0 &= 0xaaaaaaaaL;
    R1 = (R1 >> 1) & 0x55555555L;
-   L1 = R0 | R1;       /* L1 is the odd-numbered input bits */
-   STORE(L,L0,L1,B);
-   PERM3264(L,L0,L1,B.b,  (C_block *)IE3264);  /* even bits */
-   PERM3264(R,R0,R1,B.b+4,(C_block *)IE3264);  /* odd bits */
+   L1 = R0 | R1;               /* L1 is the odd-numbered input bits */
+   STORE(L, L0, L1, B);
+   PERM3264(L, L0, L1, B.b, (C_block *) IE3264);       /* even bits */
+   PERM3264(R, R0, R1, B.b + 4, (C_block *) IE3264);   /* odd bits */
 
    if (num_iter >= 0)
-   {       /* encryption */
+   {                           /* encryption */
        kp = &KS[0];
-       ks_inc  = sizeof(*kp);
+       ks_inc = sizeof(*kp);
    }
    else
-   {       /* decryption */
+   {                           /* decryption */
        num_iter = -num_iter;
-       kp = &KS[KS_SIZE-1];
-       ks_inc  = -(long)sizeof(*kp);
+       kp = &KS[KS_SIZE - 1];
+       ks_inc = -(long) sizeof(*kp);
    }
 
-   while (--num_iter >= 0) {
+   while (--num_iter >= 0)
+   {
        loop_count = 8;
-       do {
+       do
+       {
 
-#define    SPTAB(t, i) \
-       (*(int32_t *)((unsigned char *)t + i*(sizeof(int32_t)/4)))
+#define SPTAB(t, i) \
+       (*(int32_t *)((unsigned char *)t + i*(sizeof(int32_t)/4)))
 #if defined(gould)
            /* use this if B.b[i] is evaluated just once ... */
-#define    DOXOR(x,y,i)    x^=SPTAB(SPE[0][i],B.b[i]); y^=SPTAB(SPE[1][i],B.b[i]);
+#define DOXOR(x,y,i)   x^=SPTAB(SPE[0][i],B.b[i]); y^=SPTAB(SPE[1][i],B.b[i]);
 #else
 #if defined(pdp11)
            /* use this if your "long" int indexing is slow */
-#define    DOXOR(x,y,i)    j=B.b[i]; x^=SPTAB(SPE[0][i],j); y^=SPTAB(SPE[1][i],j);
+#define DOXOR(x,y,i)   j=B.b[i]; x^=SPTAB(SPE[0][i],j); y^=SPTAB(SPE[1][i],j);
 #else
            /* use this if "k" is allocated to a register ... */
-#define    DOXOR(x,y,i)    k=B.b[i]; x^=SPTAB(SPE[0][i],k); y^=SPTAB(SPE[1][i],k);
+#define DOXOR(x,y,i)   k=B.b[i]; x^=SPTAB(SPE[0][i],k); y^=SPTAB(SPE[1][i],k);
 #endif
 #endif
 
-#define    CRUNCH(p0, p1, q0, q1)  \
+#define CRUNCH(p0, p1, q0, q1) \
            k = (q0 ^ q1) & SALT;   \
            B.b32.i0 = k ^ q0 ^ kp->b32.i0;     \
            B.b32.i1 = k ^ q1 ^ kp->b32.i1;     \
@@ -735,26 +780,35 @@ des_cipher(in, out, salt, num_iter)
            CRUNCH(L0, L1, R0, R1);
            CRUNCH(R0, R1, L0, L1);
        } while (--loop_count != 0);
-       kp = (C_block *)((char *)kp-(ks_inc*KS_SIZE));
+       kp = (C_block *) ((char *) kp - (ks_inc * KS_SIZE));
 
 
        /* swap L and R */
-       L0 ^= R0;  L1 ^= R1;
-       R0 ^= L0;  R1 ^= L1;
-       L0 ^= R0;  L1 ^= R1;
+       L0 ^= R0;
+       L1 ^= R1;
+       R0 ^= L0;
+       R1 ^= L1;
+       L0 ^= R0;
+       L1 ^= R1;
    }
 
    /* store the encrypted (or decrypted) result */
    L0 = ((L0 >> 3) & 0x0f0f0f0fL) | ((L1 << 1) & 0xf0f0f0f0L);
    L1 = ((R0 >> 3) & 0x0f0f0f0fL) | ((R1 << 1) & 0xf0f0f0f0L);
-   STORE(L,L0,L1,B);
-   PERM6464(L,L0,L1,B.b, (C_block *)CF6464);
+   STORE(L, L0, L1, B);
+   PERM6464(L, L0, L1, B.b, (C_block *) CF6464);
 #if defined(MUST_ALIGN)
-   STORE(L,L0,L1,B);
-   out[0] = B.b[0]; out[1] = B.b[1]; out[2] = B.b[2]; out[3] = B.b[3];
-   out[4] = B.b[4]; out[5] = B.b[5]; out[6] = B.b[6]; out[7] = B.b[7];
+   STORE(L, L0, L1, B);
+   out[0] = B.b[0];
+   out[1] = B.b[1];
+   out[2] = B.b[2];
+   out[3] = B.b[3];
+   out[4] = B.b[4];
+   out[5] = B.b[5];
+   out[6] = B.b[6];
+   out[7] = B.b[7];
 #else
-   STORE(L,L0,L1,*(C_block *)out);
+   STORE(L, L0, L1, *(C_block *) out);
 #endif
    return (0);
 }
@@ -767,10 +821,12 @@ des_cipher(in, out, salt, num_iter)
 STATIC
 init_des()
 {
-   int i, j;
-   int32_t k;
-   int tableno;
-   static unsigned char perm[64], tmp32[32];   /* "static" for speed */
+   int         i,
+               j;
+   int32_t     k;
+   int         tableno;
+   static unsigned char perm[64],
+               tmp32[32];      /* "static" for speed */
    static volatile long init_start = 0;
 
    /*
@@ -784,15 +840,18 @@ init_des()
     */
    for (i = 0; i < 64; i++)
        perm[i] = 0;
-   for (i = 0; i < 64; i++) {
+   for (i = 0; i < 64; i++)
+   {
        if ((k = PC2[i]) == 0)
            continue;
-       k += Rotates[0]-1;
-       if ((k%28) < Rotates[0]) k -= 28;
+       k += Rotates[0] - 1;
+       if ((k % 28) < Rotates[0])
+           k -= 28;
        k = PC1[k];
-       if (k > 0) {
+       if (k > 0)
+       {
            k--;
-           k = (k|07) - (k&07);
+           k = (k | 07) - (k & 07);
            k++;
        }
        perm[i] = k;
@@ -805,20 +864,25 @@ init_des()
    /*
     * PC2ROT - PC2 inverse, then Rotate (once or twice), then PC2.
     */
-   for (j = 0; j < 2; j++) {
+   for (j = 0; j < 2; j++)
+   {
        unsigned char pc2inv[64];
+
        for (i = 0; i < 64; i++)
            perm[i] = pc2inv[i] = 0;
-       for (i = 0; i < 64; i++) {
+       for (i = 0; i < 64; i++)
+       {
            if ((k = PC2[i]) == 0)
                continue;
-           pc2inv[k-1] = i+1;
+           pc2inv[k - 1] = i + 1;
        }
-       for (i = 0; i < 64; i++) {
+       for (i = 0; i < 64; i++)
+       {
            if ((k = PC2[i]) == 0)
                continue;
            k += j;
-           if ((k%28) <= j) k -= 28;
+           if ((k % 28) <= j)
+               k -= 28;
            perm[i] = pc2inv[k];
        }
 #ifdef DEBUG
@@ -830,19 +894,22 @@ init_des()
    /*
     * Bit reverse, then initial permutation, then expansion.
     */
-   for (i = 0; i < 8; i++) {
-       for (j = 0; j < 8; j++) {
-           k = (j < 2)? 0: IP[ExpandTr[i*6+j-2]-1];
+   for (i = 0; i < 8; i++)
+   {
+       for (j = 0; j < 8; j++)
+       {
+           k = (j < 2) ? 0 : IP[ExpandTr[i * 6 + j - 2] - 1];
            if (k > 32)
                k -= 32;
            else if (k > 0)
                k--;
-           if (k > 0) {
+           if (k > 0)
+           {
                k--;
-               k = (k|07) - (k&07);
+               k = (k | 07) - (k & 07);
                k++;
            }
-           perm[i*8+j] = k;
+           perm[i * 8 + j] = k;
        }
    }
 #ifdef DEBUG
@@ -853,14 +920,16 @@ init_des()
    /*
     * Compression, then final permutation, then bit reverse.
     */
-   for (i = 0; i < 64; i++) {
-       k = IP[CIFP[i]-1];
-       if (k > 0) {
+   for (i = 0; i < 64; i++)
+   {
+       k = IP[CIFP[i] - 1];
+       if (k > 0)
+       {
            k--;
-           k = (k|07) - (k&07);
+           k = (k | 07) - (k & 07);
            k++;
        }
-       perm[k-1] = i+1;
+       perm[k - 1] = i + 1;
    }
 #ifdef DEBUG
    prtab("cftab", perm, 8);
@@ -871,31 +940,33 @@ init_des()
     * SPE table
     */
    for (i = 0; i < 48; i++)
-       perm[i] = P32Tr[ExpandTr[i]-1];
-   for (tableno = 0; tableno < 8; tableno++) {
-       for (j = 0; j < 64; j++)  {
-           k = (((j >> 0) &01) << 5)|
-               (((j >> 1) &01) << 3)|
-               (((j >> 2) &01) << 2)|
-               (((j >> 3) &01) << 1)|
-               (((j >> 4) &01) << 0)|
-               (((j >> 5) &01) << 4);
+       perm[i] = P32Tr[ExpandTr[i] - 1];
+   for (tableno = 0; tableno < 8; tableno++)
+   {
+       for (j = 0; j < 64; j++)
+       {
+           k = (((j >> 0) & 01) << 5) |
+               (((j >> 1) & 01) << 3) |
+               (((j >> 2) & 01) << 2) |
+               (((j >> 3) & 01) << 1) |
+               (((j >> 4) & 01) << 0) |
+               (((j >> 5) & 01) << 4);
            k = S[tableno][k];
-           k = (((k >> 3)&01) << 0)|
-               (((k >> 2)&01) << 1)|
-               (((k >> 1)&01) << 2)|
-               (((k >> 0)&01) << 3);
+           k = (((k >> 3) & 01) << 0) |
+               (((k >> 2) & 01) << 1) |
+               (((k >> 1) & 01) << 2) |
+               (((k >> 0) & 01) << 3);
            for (i = 0; i < 32; i++)
                tmp32[i] = 0;
            for (i = 0; i < 4; i++)
                tmp32[4 * tableno + i] = (k >> i) & 01;
            k = 0;
-           for (i = 24; --i >= 0; )
-               k = (k<<1) | tmp32[perm[i]-1];
+           for (i = 24; --i >= 0;)
+               k = (k << 1) | tmp32[perm[i] - 1];
            TO_SIX_BIT(SPE[0][tableno][j], k);
            k = 0;
-           for (i = 24; --i >= 0; )
-               k = (k<<1) | tmp32[perm[i+24]-1];
+           for (i = 24; --i >= 0;)
+               k = (k << 1) | tmp32[perm[i + 24] - 1];
            TO_SIX_BIT(SPE[1][tableno][j], k);
        }
    }
@@ -913,21 +984,27 @@ init_des()
  */
 STATIC
 init_perm(perm, p, chars_in, chars_out)
-   C_block perm[64/CHUNKBITS][1<<CHUNKBITS];
-   unsigned char p[64];
-   int chars_in, chars_out;
+C_block        perm[64 / CHUNKBITS][1 << CHUNKBITS];
+unsigned char p[64];
+int            chars_in,
+           chars_out;
 {
-   int i, j, k, l;
-
-   for (k = 0; k < chars_out*8; k++) { /* each output bit position */
-       l = p[k] - 1;       /* where this bit comes from */
+   int         i,
+               j,
+               k,
+               l;
+
+   for (k = 0; k < chars_out * 8; k++)
+   {                           /* each output bit position */
+       l = p[k] - 1;           /* where this bit comes from */
        if (l < 0)
-           continue;   /* output bit is always 0 */
-       i = l>>LGCHUNKBITS; /* which chunk this bit comes from */
-       l = 1<<(l&(CHUNKBITS-1));   /* mask for this bit */
-       for (j = 0; j < (1<<CHUNKBITS); j++) {  /* each chunk value */
+           continue;           /* output bit is always 0 */
+       i = l >> LGCHUNKBITS;   /* which chunk this bit comes from */
+       l = 1 << (l & (CHUNKBITS - 1)); /* mask for this bit */
+       for (j = 0; j < (1 << CHUNKBITS); j++)
+       {                       /* each chunk value */
            if ((j & l) != 0)
-               perm[i][j].b[k>>3] |= 1<<(k&07);
+               perm[i][j].b[k >> 3] |= 1 << (k & 07);
        }
    }
 }
@@ -937,20 +1014,24 @@ init_perm(perm, p, chars_in, chars_out)
  */
 int
 setkey(key)
-   const char *key;
+const char *key;
 {
-   int i, j, k;
-   C_block keyblock;
+   int         i,
+               j,
+               k;
+   C_block     keyblock;
 
-   for (i = 0; i < 8; i++) {
+   for (i = 0; i < 8; i++)
+   {
        k = 0;
-       for (j = 0; j < 8; j++) {
+       for (j = 0; j < 8; j++)
+       {
            k <<= 1;
-           k |= (unsigned char)*key++;
+           k |= (unsigned char) *key++;
        }
        keyblock.b[i] = k;
    }
-   return (des_setkey((char *)keyblock.b));
+   return (des_setkey((char *) keyblock.b));
 }
 
 /*
@@ -958,26 +1039,32 @@ setkey(key)
  */
 static int
 encrypt(block, flag)
-   char *block;
-   int flag;
+char      *block;
+int            flag;
 {
-   int i, j, k;
-   C_block cblock;
+   int         i,
+               j,
+               k;
+   C_block     cblock;
 
-   for (i = 0; i < 8; i++) {
+   for (i = 0; i < 8; i++)
+   {
        k = 0;
-       for (j = 0; j < 8; j++) {
+       for (j = 0; j < 8; j++)
+       {
            k <<= 1;
-           k |= (unsigned char)*block++;
+           k |= (unsigned char) *block++;
        }
        cblock.b[i] = k;
    }
-   if (des_cipher((char *)&cblock, (char *)&cblock, 0L, (flag ? -1: 1)))
+   if (des_cipher((char *) &cblock, (char *) &cblock, 0L, (flag ? -1 : 1)))
        return (1);
-   for (i = 7; i >= 0; i--) {
+   for (i = 7; i >= 0; i--)
+   {
        k = cblock.b[i];
-       for (j = 7; j >= 0; j--) {
-           *--block = k&01;
+       for (j = 7; j >= 0; j--)
+       {
+           *--block = k & 01;
            k >>= 1;
        }
    }
@@ -987,19 +1074,21 @@ encrypt(block, flag)
 #ifdef DEBUG
 STATIC
 prtab(s, t, num_rows)
-   char *s;
-   unsigned char *t;
-   int num_rows;
+char      *s;
+unsigned char *t;
+int            num_rows;
 {
-   int i, j;
-
-   (void)printf("%s:\n", s);
-   for (i = 0; i < num_rows; i++) {
-       for (j = 0; j < 8; j++) {
-            (void)printf("%3d", t[i*8+j]);
-       }
-       (void)printf("\n");
+   int         i,
+               j;
+
+   (void) printf("%s:\n", s);
+   for (i = 0; i < num_rows; i++)
+   {
+       for (j = 0; j < 8; j++)
+           (void) printf("%3d", t[i * 8 + j]);
+       (void) printf("\n");
    }
-   (void)printf("\n");
+   (void) printf("\n");
 }
+
 #endif
index 6d680a41501ba964a51f503b7a6bc96e4ecaa50a..9415517b165f79dbe9d33a988d7437041933e754 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * These are replacement versions of unlink and rename that work on
- * Win32 (NT, Win2k, XP).  replace() doesn't work on Win95/98/Me.
+ * Win32 (NT, Win2k, XP).  replace() doesn't work on Win95/98/Me.
  */
+
 #ifndef TEST_VERSION
 
 #include "postgres.h"
 int
 pgrename(const char *from, const char *to)
 {
-   int loops = 0;
+   int         loops = 0;
 
    while (!MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING))
    {
        if (GetLastError() != ERROR_ACCESS_DENIED)
            /* set errno? */
            return -1;
-       Sleep(100); /* ms */
+       Sleep(100);             /* ms */
        if (loops == 10)
 #ifndef FRONTEND
            elog(LOG, "could not rename \"%s\" to \"%s\", continuing to try",
@@ -45,14 +45,14 @@ pgrename(const char *from, const char *to)
 int
 pgunlink(const char *path)
 {
-   int loops = 0;
+   int         loops = 0;
 
    while (unlink(path))
    {
        if (errno != EACCES)
            /* set errno? */
            return -1;
-       Sleep(100); /* ms */
+       Sleep(100);             /* ms */
        if (loops == 10)
 #ifndef FRONTEND
            elog(LOG, "could not unlink \"%s\", continuing to try",
@@ -78,13 +78,13 @@ pgunlink(const char *path)
 
 
 /*
- *  Illustrates problem with Win32 rename() and unlink()
+ * Illustrates problem with Win32 rename() and unlink()
  * under concurrent access.
  *
  * Run with arg '1', then less than 5 seconds later, run with
  *  arg '2' (rename) or '3'(unlink) to see the problem.
  */
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -97,9 +97,9 @@ do { \
 } while (0)
 
 int
-main(int argc, charargv[])
+main(int argc, char *argv[])
 {
-   FILE *fd;
+   FILE       *fd;
 
    if (argc != 2)
        halt("Arg must be '1' (test), '2' (rename), or '3' (unlink)\n"
@@ -143,7 +143,7 @@ main(int argc, char* argv[])
        }
        halt("unlink successful\n");
    }
-   else    
+   else
        halt("invalid arg\n");
 
    return 0;
index 79a680f383b3a0b1c0d43d2643251452dd6d649f..b280e3f2c753001de5a4ad25b031b6f6963dc816 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/port/fseeko.c,v 1.10 2003/01/11 19:38:23 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/port/fseeko.c,v 1.11 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -40,7 +40,7 @@
 int
 fseeko(FILE *stream, off_t offset, int whence)
 {
-   off_t floc;
+   off_t       floc;
    struct stat filestat;
 
    switch (whence)
@@ -79,7 +79,7 @@ fseeko(FILE *stream, off_t offset, int whence)
            return 0;
            break;
        default:
-           errno = EINVAL;
+           errno = EINVAL;
            return -1;
    }
 
@@ -94,10 +94,11 @@ failure:
 off_t
 ftello(FILE *stream)
 {
-   off_t floc;
+   off_t       floc;
 
    if (fgetpos(stream, &floc) != 0)
        return -1;
    return floc;
 }
+
 #endif
index 011437bb9b7bd2dcf52d4115894b275feddd76f1..2466e760bedb52909f9767ebbb63146732872a08 100644 (file)
@@ -4,7 +4,7 @@
  *   Support getaddrinfo() on platforms that don't have it.
  *
  * We also supply getnameinfo() here, assuming that the platform will have
- * it if and only if it has getaddrinfo().  If this proves false on some
+ * it if and only if it has getaddrinfo(). If this proves false on some
  * platform, we'll need to split this file and provide a separate configure
  * test for getnameinfo().
  *
@@ -12,7 +12,7 @@
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/port/getaddrinfo.c,v 1.10 2003/07/23 23:30:41 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/port/getaddrinfo.c,v 1.11 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
  */
 int
 getaddrinfo(const char *node, const char *service,
-           const struct addrinfo *hintp,
-           struct addrinfo **res)
+           const struct addrinfo * hintp,
+           struct addrinfo ** res)
 {
-   struct addrinfo     *ai;
-   struct sockaddr_in  sin, *psin;
-   struct addrinfo     hints;
+   struct addrinfo *ai;
+   struct sockaddr_in sin,
+              *psin;
+   struct addrinfo hints;
 
-   if (hintp == NULL)  
+   if (hintp == NULL)
    {
        memset(&hints, 0, sizeof(hints));
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
    }
    else
-   {
        memcpy(&hints, hintp, sizeof(hints));
-   }
 
    if (hints.ai_family != AF_INET && hints.ai_family != AF_UNSPEC)
        return EAI_FAMILY;
@@ -78,20 +77,19 @@ getaddrinfo(const char *node, const char *service,
        else if (hints.ai_flags & AI_NUMERICHOST)
        {
            if (!inet_aton(node, &sin.sin_addr))
-           {
                return EAI_FAIL;
-           }
        }
        else
        {
            struct hostent *hp;
+
 #ifdef FRONTEND
            struct hostent hpstr;
-           char buf[BUFSIZ];
-           int herrno = 0;
+           char        buf[BUFSIZ];
+           int         herrno = 0;
 
            pqGethostbyname(node, &hpstr, buf, sizeof(buf),
-                           &hp, &herrno);
+                           &hp, &herrno);
 #else
            hp = gethostbyname(node);
 #endif
@@ -132,9 +130,7 @@ getaddrinfo(const char *node, const char *service,
 
    ai = malloc(sizeof(*ai));
    if (!ai)
-   {
        return EAI_MEMORY;
-   }
 
    psin = malloc(sizeof(*psin));
    if (!psin)
@@ -161,7 +157,7 @@ getaddrinfo(const char *node, const char *service,
 
 
 void
-freeaddrinfo(struct addrinfo *res)
+freeaddrinfo(struct addrinfo * res)
 {
    if (res)
    {
@@ -176,7 +172,7 @@ const char *
 gai_strerror(int errcode)
 {
 #ifdef HAVE_HSTRERROR
-   int hcode;
+   int         hcode;
 
    switch (errcode)
    {
@@ -194,7 +190,7 @@ gai_strerror(int errcode)
 
    return hstrerror(hcode);
 
-#else /* !HAVE_HSTRERROR */
+#else                          /* !HAVE_HSTRERROR */
 
    switch (errcode)
    {
@@ -206,71 +202,61 @@ gai_strerror(int errcode)
        default:
            return "Unknown server error";
    }
-
-#endif /* HAVE_HSTRERROR */
+#endif   /* HAVE_HSTRERROR */
 }
 
 /*
  * Convert an ipv4 address to a hostname.
- * 
+ *
  * Bugs:   - Only supports NI_NUMERICHOST and NI_NUMERICSERV
  *       It will never resolv a hostname.
  *     - No IPv6 support.
  */
 int
-getnameinfo(const struct sockaddr *sa, int salen,
+getnameinfo(const struct sockaddr * sa, int salen,
            char *node, int nodelen,
            char *service, int servicelen, int flags)
 {
    /* Invalid arguments. */
    if (sa == NULL || (node == NULL && service == NULL))
-   {
        return EAI_FAIL;
-   }
 
    /* We don't support those. */
    if ((node && !(flags & NI_NUMERICHOST))
        || (service && !(flags & NI_NUMERICSERV)))
-   {
        return EAI_FAIL;
-   }
 
 #ifdef HAVE_IPV6
    if (sa->sa_family == AF_INET6)
-   {
-       return  EAI_FAMILY;
-   }
+       return EAI_FAMILY;
 #endif
 
    if (node)
    {
-       int     ret = -1;
+       int         ret = -1;
 
        if (sa->sa_family == AF_INET)
        {
-           char    *p;
-           p = inet_ntoa(((struct sockaddr_in *)sa)->sin_addr);
+           char       *p;
+
+           p = inet_ntoa(((struct sockaddr_in *) sa)->sin_addr);
            ret = snprintf(node, nodelen, "%s", p);
        }
        if (ret == -1 || ret > nodelen)
-       {
            return EAI_MEMORY;
-       }
    }
 
    if (service)
    {
-       int     ret = -1;
+       int         ret = -1;
 
        if (sa->sa_family == AF_INET)
        {
            ret = snprintf(service, servicelen, "%d",
-                          ntohs(((struct sockaddr_in *)sa)->sin_port));
+                          ntohs(((struct sockaddr_in *) sa)->sin_port));
        }
        if (ret == -1 || ret > servicelen)
-       {
            return EAI_MEMORY;
-       }
    }
 
    return 0;
index 0d60673db5363dfac1591f99b43ea5801c08b653..0d697cbd89c30de85988ce6115865f4d3cf9c659 100644 (file)
@@ -94,7 +94,7 @@ const char *ostr;
            ++optind;
        if (opterr && *ostr != ':')
            (void) fprintf(stderr,
-                      "illegal option -- %c\n", optopt);
+                          "illegal option -- %c\n", optopt);
        return BADCH;
    }
    if (*++oli != ':')
index bc6779e85261739c8f64296b5eaab73e1f40b47a..bddaa934ad3289443e5af73f70422d6b161cf38c 100644 (file)
@@ -35,7 +35,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Header: /cvsroot/pgsql/src/port/getopt_long.c,v 1.1 2003/01/06 18:53:25 petere Exp $
+ * $Header: /cvsroot/pgsql/src/port/getopt_long.c,v 1.2 2003/08/04 00:43:33 momjian Exp $
  */
 
 #include <stdio.h>
@@ -49,9 +49,9 @@
 #define EMSG   ""
 
 int
-getopt_long(int argc, char * const argv[],
+getopt_long(int argc, char *const argv[],
            const char *optstring,
-           const struct option *longopts, int *longindex)
+           const struct option * longopts, int *longindex)
 {
    static char *place = EMSG;  /* option letter processing */
    char       *oli;            /* option letter list index */
@@ -86,8 +86,8 @@ getopt_long(int argc, char * const argv[],
        if (place[0] && place[0] == '-' && place[1])
        {
            /* long option */
-           size_t namelen;
-           int i;
+           size_t      namelen;
+           int         i;
 
            place++;
 
@@ -101,7 +101,7 @@ getopt_long(int argc, char * const argv[],
                    {
                        if (place[namelen] == '=')
                            optarg = place + namelen + 1;
-                       else if (optind < argc-1)
+                       else if (optind < argc - 1)
                        {
                            optind++;
                            optarg = argv[optind];
@@ -112,7 +112,7 @@ getopt_long(int argc, char * const argv[],
                                return BADARG;
                            if (opterr)
                                fprintf(stderr,
-                                       "%s: option requires an argument -- %s\n",
+                               "%s: option requires an argument -- %s\n",
                                        argv[0], place);
                            place = EMSG;
                            optind++;
index 3e2a6706d49fbeb941cd51e31d3491fc5cb7815e..02eecd1e572588b19878f2ad85898b772b2e0a9b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvsroot/pgsql/src/port/gettimeofday.c,v 1.1 2003/05/16 04:59:24 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/port/gettimeofday.c,v 1.2 2003/08/04 00:43:33 momjian Exp $
  *
  * Copyright (c) 2003 SRA, Inc.
  * Copyright (c) 2003 SKC, Inc.
@@ -34,20 +34,19 @@ static const unsigned __int64 epoch = 116444736000000000L;
  * timezone information is stored outside the kernel so tzp isn't used anymore.
  */
 int
-gettimeofday(struct timeval *tp, struct timezone *tzp)
+gettimeofday(struct timeval * tp, struct timezone * tzp)
 {
-   FILETIME        file_time;
-   SYSTEMTIME      system_time;
-   ULARGE_INTEGER  ularge;
+   FILETIME    file_time;
+   SYSTEMTIME  system_time;
+   ULARGE_INTEGER ularge;
 
    GetSystemTime(&system_time);
    SystemTimeToFileTime(&system_time, &file_time);
    ularge.LowPart = file_time.dwLowDateTime;
    ularge.HighPart = file_time.dwHighDateTime;
 
-   tp->tv_sec  = (long)((ularge.QuadPart - epoch) / 10000000L);
-   tp->tv_usec = (long)(system_time.wMilliseconds * 1000);
+   tp->tv_sec = (long) ((ularge.QuadPart - epoch) / 10000000L);
+   tp->tv_usec = (long) (system_time.wMilliseconds * 1000);
 
    return 0;
 }
-
index 9cca1586f17cb927b4093b89628bacc1a1685716..4bbe7960ec135d4d60ec7dc53a761156062dd558 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: path.c,v 1.1 2003/04/04 20:42:13 momjian Exp $ */
+/* $Id: path.c,v 1.2 2003/08/04 00:43:33 momjian Exp $ */
 
 #include "c.h"
 #include <ctype.h>
@@ -6,28 +6,32 @@
 /*
  * is_absolute_path
  */
-bool is_absolute_path(const char *filename)
+bool
+is_absolute_path(const char *filename)
 {
    return filename[0] == '/'
-#ifdef WIN32   /* WIN32 paths can either have forward or backward slashes */
+#ifdef WIN32                   /* WIN32 paths can either have forward or
+                                * backward slashes */
        || filename[0] == '\\'
        || (isalpha(filename[0]) && filename[1] == ':'
-           && (filename[2] == '\\' || filename[2] == '/'))
+           && (filename[2] == '\\' || filename[2] == '/'))
 #endif
        ;
 }
 
 
-   
+
 /*
  * first_path_separator
  */
-char *first_path_separator(const char *filename)
+char *
+first_path_separator(const char *filename)
 {
 #ifndef WIN32
    return strchr(filename, '/');
 #else
-   char *slash, *bslash;
+   char       *slash,
+              *bslash;
 
    /* How should we handle "C:file.c"? */
    slash = strchr(filename, '/');
@@ -45,12 +49,14 @@ char *first_path_separator(const char *filename)
 /*
  * last_path_separator
  */
-char *last_path_separator(const char *filename)
+char *
+last_path_separator(const char *filename)
 {
 #ifndef WIN32
    return strrchr(filename, '/');
 #else
-   char *slash, *bslash;
+   char       *slash,
+              *bslash;
 
    /* How should we handle "C:file.c"? */
    slash = strrchr(filename, '/');
index 5012cac281bcd20633634805a22ba6c37cecd5b6..659f5cd100cff2978561c38854e302c20fc294b7 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  *
- * $Id: threads.c,v 1.1 2003/06/14 14:35:42 momjian Exp $
+ * $Id: threads.c,v 1.2 2003/08/04 00:43:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -41,6 +41,7 @@ pqGetpwuid(uid_t uid, struct passwd * resultbuf, char *buffer,
           size_t buflen, struct passwd ** result)
 {
 #if defined(USE_THREADS) && defined(HAVE_GETPWUID_R)
+
    /*
     * broken (well early POSIX draft) getpwuid_r() which returns 'struct
     * passwd *'
@@ -65,6 +66,7 @@ pqGethostbyname(const char *name,
                int *herrno)
 {
 #if defined(USE_THREADS) && defined(HAVE_GETHOSTBYNAME_R)
+
    /*
     * broken (well early POSIX draft) gethostbyname_r() which returns
     * 'struct hostent *'
index 20dfb7220d994ec6dd70011d53eb7a378355ca0d..1f447b33c3954b7742bdb824a9add9a9c05434a7 100644 (file)
@@ -25,9 +25,9 @@ main(int argc, char **argv)
                j;
 
    /*
-    * If the user supplies a parameter on the command line, use it as
-    * the conninfo string; otherwise default to setting dbname=template1
-    * and using environment variables or defaults for all other connection
+    * If the user supplies a parameter on the command line, use it as the
+    * conninfo string; otherwise default to setting dbname=template1 and
+    * using environment variables or defaults for all other connection
     * parameters.
     */
    if (argc > 1)
@@ -48,7 +48,7 @@ main(int argc, char **argv)
 
    /*
     * Our test case here involves using a cursor, for which we must be
-    * inside a transaction block.  We could do the whole thing with a
+    * inside a transaction block.  We could do the whole thing with a
     * single PQexec() of "select * from pg_database", but that's too
     * trivial to make a good example.
     */
index 51c9929df3dc8edb1cbac3b5a028fa314db35f80..928ffbb5b48e29c31020829069a3dbc8bedb0206 100644 (file)
@@ -3,23 +3,23 @@
  *     Test of the asynchronous notification interface
  *
  * Start this program, then from psql in another window do
- *   NOTIFY TBL2;
+ *  NOTIFY TBL2;
  * Repeat four times to get this program to exit.
  *
  * Or, if you want to get fancy, try this:
  * populate a database with the following commands
  * (provided in src/test/examples/testlibpq2.sql):
  *
- *   CREATE TABLE TBL1 (i int4);
+ *  CREATE TABLE TBL1 (i int4);
  *
- *   CREATE TABLE TBL2 (i int4);
+ *  CREATE TABLE TBL2 (i int4);
  *
- *   CREATE RULE r1 AS ON INSERT TO TBL1 DO
- *     (INSERT INTO TBL2 VALUES (new.i); NOTIFY TBL2);
+ *  CREATE RULE r1 AS ON INSERT TO TBL1 DO
+ *    (INSERT INTO TBL2 VALUES (new.i); NOTIFY TBL2);
  *
  * and do this four times:
  *
- *   INSERT INTO TBL1 VALUES (10);
+ *  INSERT INTO TBL1 VALUES (10);
  */
 #include <stdio.h>
 #include <stdlib.h>
@@ -45,9 +45,9 @@ main(int argc, char **argv)
    int         nnotifies;
 
    /*
-    * If the user supplies a parameter on the command line, use it as
-    * the conninfo string; otherwise default to setting dbname=template1
-    * and using environment variables or defaults for all other connection
+    * If the user supplies a parameter on the command line, use it as the
+    * conninfo string; otherwise default to setting dbname=template1 and
+    * using environment variables or defaults for all other connection
     * parameters.
     */
    if (argc > 1)
@@ -67,7 +67,8 @@ main(int argc, char **argv)
    }
 
    /*
-    * Issue LISTEN command to enable notifications from the rule's NOTIFY.
+    * Issue LISTEN command to enable notifications from the rule's
+    * NOTIFY.
     */
    res = PQexec(conn, "LISTEN TBL2");
    if (PQresultStatus(res) != PGRES_COMMAND_OK)
@@ -88,9 +89,9 @@ main(int argc, char **argv)
    while (nnotifies < 4)
    {
        /*
-        * Sleep until something happens on the connection.  We use select(2)
-        * to wait for input, but you could also use poll() or similar
-        * facilities.
+        * Sleep until something happens on the connection.  We use
+        * select(2) to wait for input, but you could also use poll() or
+        * similar facilities.
         */
        int         sock;
        fd_set      input_mask;
index 4a13ceafc285df64eb30e665fcbfe46ad43ad179..43c1068a457a7dc0d26e97a29b39cfa997bc59b2 100644 (file)
@@ -13,9 +13,9 @@
  * The expected output is:
  *
  * tuple 0: got
- *  i = (4 bytes) 1
- *  t = (11 bytes) 'joe's place'
- *  b = (5 bytes) \000\001\002\003\004
+ * i = (4 bytes) 1
+ * t = (11 bytes) 'joe's place'
+ * b = (5 bytes) \000\001\002\003\004
  *
  */
 #include <stdio.h>
@@ -50,9 +50,9 @@ main(int argc, char **argv)
                b_fnum;
 
    /*
-    * If the user supplies a parameter on the command line, use it as
-    * the conninfo string; otherwise default to setting dbname=template1
-    * and using environment variables or defaults for all other connection
+    * If the user supplies a parameter on the command line, use it as the
+    * conninfo string; otherwise default to setting dbname=template1 and
+    * using environment variables or defaults for all other connection
     * parameters.
     */
    if (argc > 1)
index 04b1a9d7864d9071ab637b989137b82cd52120cf..58fee038d905053f759d6a5f78c3916b912359fe 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.57 2003/07/27 21:49:55 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.58 2003/08/04 00:43:34 momjian Exp $
  */
 
 #include "postgres.h"
@@ -218,7 +218,7 @@ typedef struct
 }  WIDGET;
 
 WIDGET    *widget_in(char *str);
-char      *widget_out(WIDGET *widget);
+char      *widget_out(WIDGET * widget);
 extern Datum pt_in_widget(PG_FUNCTION_ARGS);
 
 #define NARGS  3
@@ -250,7 +250,7 @@ widget_in(char *str)
 }
 
 char *
-widget_out(WIDGET *widget)
+widget_out(WIDGET * widget)
 {
    char       *result;
 
index c8d4cbe320f9522d35dc149268f45792f67bd37c..5e8f75ae32ebb278718757916897b5cf362d41a4 100644 (file)
@@ -40,7 +40,7 @@ complex_in(char *str)
    if (sscanf(str, " ( %lf , %lf )", &x, &y) != 2)
        ereport(ERROR,
                (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
-                errmsg("invalid input syntax for complex: \"%s\"", str)));
+              errmsg("invalid input syntax for complex: \"%s\"", str)));
 
    result = (Complex *) palloc(sizeof(Complex));
    result->x = x;