Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/array/array_iterator.h1
-rw-r--r--contrib/btree_gist/btree_gist.c720
-rw-r--r--contrib/chkpass/chkpass.c40
-rw-r--r--contrib/cube/cube.c9
-rw-r--r--contrib/dbase/dbf.c447
-rw-r--r--contrib/dbase/dbf.h135
-rw-r--r--contrib/dbase/dbf2pg.c791
-rw-r--r--contrib/dbase/endian.c44
-rw-r--r--contrib/dblink/dblink.c169
-rw-r--r--contrib/dblink/dblink.h11
-rw-r--r--contrib/fulltextindex/fti.c108
-rw-r--r--contrib/fuzzystrmatch/fuzzystrmatch.c499
-rw-r--r--contrib/fuzzystrmatch/fuzzystrmatch.h56
-rw-r--r--contrib/lo/lo.c9
-rw-r--r--contrib/mSQL-interface/mpgsql.c12
-rw-r--r--contrib/miscutil/misc_utils.h1
-rw-r--r--contrib/pg_controldata/pg_controldata.c4
-rw-r--r--contrib/pg_dumplo/lo_export.c11
-rw-r--r--contrib/pg_dumplo/lo_import.c6
-rw-r--r--contrib/pg_dumplo/main.c9
-rw-r--r--contrib/pg_dumplo/pg_dumplo.h13
-rw-r--r--contrib/pg_resetxlog/pg_resetxlog.c7
-rw-r--r--contrib/pgbench/pgbench.c149
-rw-r--r--contrib/pgcrypto/blf.c743
-rw-r--r--contrib/pgcrypto/blf.h56
-rw-r--r--contrib/pgcrypto/crypt-blowfish.c175
-rw-r--r--contrib/pgcrypto/crypt-des.c67
-rw-r--r--contrib/pgcrypto/crypt-gensalt.c103
-rw-r--r--contrib/pgcrypto/crypt-md5.c19
-rw-r--r--contrib/pgcrypto/internal.c280
-rw-r--r--contrib/pgcrypto/md5.c14
-rw-r--r--contrib/pgcrypto/mhash.c125
-rw-r--r--contrib/pgcrypto/misc.c2
-rw-r--r--contrib/pgcrypto/openssl.c242
-rw-r--r--contrib/pgcrypto/pgcrypto.c107
-rw-r--r--contrib/pgcrypto/pgcrypto.h4
-rw-r--r--contrib/pgcrypto/px-crypt.c85
-rw-r--r--contrib/pgcrypto/px-crypt.h18
-rw-r--r--contrib/pgcrypto/px-hmac.c8
-rw-r--r--contrib/pgcrypto/px.c164
-rw-r--r--contrib/pgcrypto/px.h150
-rw-r--r--contrib/pgcrypto/random.c60
-rw-r--r--contrib/pgcrypto/rijndael.c729
-rw-r--r--contrib/pgcrypto/rijndael.h78
-rw-r--r--contrib/pgcrypto/sha1.c12
-rw-r--r--contrib/pgcrypto/sha1.h3
-rw-r--r--contrib/pgstattuple/pgstattuple.c147
-rw-r--r--contrib/rserv/rserv.c6
-rw-r--r--contrib/rtree_gist/rtree_gist.c643
-rw-r--r--contrib/seg/seg.c14
-rw-r--r--contrib/spi/refint.c11
-rw-r--r--contrib/string/string_io.c1
-rw-r--r--contrib/string/string_io.h1
-rw-r--r--contrib/tsearch/crc32.c18
-rw-r--r--contrib/tsearch/crc32.h3
-rw-r--r--contrib/tsearch/deflex.h14
-rw-r--r--contrib/tsearch/gistidx.h35
-rw-r--r--contrib/tsearch/morph.c210
-rw-r--r--contrib/tsearch/morph.h6
-rw-r--r--contrib/tsearch/parser.h13
-rw-r--r--contrib/tsearch/query.c748
-rw-r--r--contrib/tsearch/query.h48
-rw-r--r--contrib/tsearch/rewrite.c278
-rw-r--r--contrib/tsearch/rewrite.h5
-rw-r--r--contrib/tsearch/txtidx.c549
-rw-r--r--contrib/tsearch/txtidx.h59
-rw-r--r--contrib/userlock/user_locks.h1
-rw-r--r--contrib/xml/pgxml.c451
-rw-r--r--contrib/xml/pgxml.h62
-rw-r--r--contrib/xml/pgxml_dom.c364
-rw-r--r--src/backend/access/common/heaptuple.c9
-rw-r--r--src/backend/access/common/indextuple.c4
-rw-r--r--src/backend/access/common/printtup.c5
-rw-r--r--src/backend/access/common/tupdesc.c10
-rw-r--r--src/backend/access/gist/gist.c959
-rw-r--r--src/backend/access/gist/gistget.c10
-rw-r--r--src/backend/access/gist/gistscan.c13
-rw-r--r--src/backend/access/gist/giststrat.c3
-rw-r--r--src/backend/access/hash/hash.c35
-rw-r--r--src/backend/access/hash/hashinsert.c6
-rw-r--r--src/backend/access/hash/hashovfl.c3
-rw-r--r--src/backend/access/hash/hashpage.c16
-rw-r--r--src/backend/access/hash/hashsearch.c3
-rw-r--r--src/backend/access/hash/hashstrat.c5
-rw-r--r--src/backend/access/heap/heapam.c85
-rw-r--r--src/backend/access/heap/hio.c61
-rw-r--r--src/backend/access/heap/stats.c8
-rw-r--r--src/backend/access/heap/tuptoaster.c40
-rw-r--r--src/backend/access/index/genam.c3
-rw-r--r--src/backend/access/index/indexam.c16
-rw-r--r--src/backend/access/index/istrat.c20
-rw-r--r--src/backend/access/nbtree/nbtcompare.c4
-rw-r--r--src/backend/access/nbtree/nbtinsert.c8
-rw-r--r--src/backend/access/nbtree/nbtpage.c6
-rw-r--r--src/backend/access/nbtree/nbtree.c64
-rw-r--r--src/backend/access/nbtree/nbtsearch.c10
-rw-r--r--src/backend/access/nbtree/nbtsort.c6
-rw-r--r--src/backend/access/nbtree/nbtstrat.c3
-rw-r--r--src/backend/access/nbtree/nbtutils.c4
-rw-r--r--src/backend/access/rtree/rtree.c167
-rw-r--r--src/backend/access/rtree/rtscan.c3
-rw-r--r--src/backend/access/rtree/rtstrat.c5
-rw-r--r--src/backend/access/transam/clog.c140
-rw-r--r--src/backend/access/transam/transam.c38
-rw-r--r--src/backend/access/transam/varsup.c50
-rw-r--r--src/backend/access/transam/xact.c40
-rw-r--r--src/backend/access/transam/xid.c5
-rw-r--r--src/backend/access/transam/xlog.c94
-rw-r--r--src/backend/access/transam/xlogutils.c6
-rw-r--r--src/backend/bootstrap/bootstrap.c9
-rw-r--r--src/backend/catalog/aclchk.c23
-rw-r--r--src/backend/catalog/heap.c162
-rw-r--r--src/backend/catalog/index.c154
-rw-r--r--src/backend/catalog/pg_aggregate.c3
-rw-r--r--src/backend/catalog/pg_operator.c30
-rw-r--r--src/backend/catalog/pg_proc.c24
-rw-r--r--src/backend/catalog/pg_type.c13
-rw-r--r--src/backend/commands/_deadcode/recipe.c16
-rw-r--r--src/backend/commands/_deadcode/recipe.h3
-rw-r--r--src/backend/commands/_deadcode/version.c10
-rw-r--r--src/backend/commands/analyze.c471
-rw-r--r--src/backend/commands/async.c65
-rw-r--r--src/backend/commands/cluster.c5
-rw-r--r--src/backend/commands/command.c892
-rw-r--r--src/backend/commands/comment.c9
-rw-r--r--src/backend/commands/copy.c12
-rw-r--r--src/backend/commands/creatinh.c46
-rw-r--r--src/backend/commands/dbcommands.c7
-rw-r--r--src/backend/commands/define.c55
-rw-r--r--src/backend/commands/explain.c14
-rw-r--r--src/backend/commands/indexcmds.c40
-rw-r--r--src/backend/commands/remove.c3
-rw-r--r--src/backend/commands/rename.c41
-rw-r--r--src/backend/commands/sequence.c50
-rw-r--r--src/backend/commands/trigger.c61
-rw-r--r--src/backend/commands/user.c110
-rw-r--r--src/backend/commands/vacuum.c253
-rw-r--r--src/backend/commands/vacuumlazy.c192
-rw-r--r--src/backend/commands/variable.c58
-rw-r--r--src/backend/commands/view.c6
-rw-r--r--src/backend/executor/_deadcode/nodeTee.c4
-rw-r--r--src/backend/executor/execAmi.c7
-rw-r--r--src/backend/executor/execFlatten.c6
-rw-r--r--src/backend/executor/execJunk.c3
-rw-r--r--src/backend/executor/execMain.c83
-rw-r--r--src/backend/executor/execProcnode.c14
-rw-r--r--src/backend/executor/execQual.c189
-rw-r--r--src/backend/executor/execScan.c3
-rw-r--r--src/backend/executor/execTuples.c13
-rw-r--r--src/backend/executor/execUtils.c30
-rw-r--r--src/backend/executor/functions.c10
-rw-r--r--src/backend/executor/instrument.c24
-rw-r--r--src/backend/executor/nodeAgg.c16
-rw-r--r--src/backend/executor/nodeAppend.c20
-rw-r--r--src/backend/executor/nodeGroup.c6
-rw-r--r--src/backend/executor/nodeHash.c33
-rw-r--r--src/backend/executor/nodeHashjoin.c12
-rw-r--r--src/backend/executor/nodeIndexscan.c20
-rw-r--r--src/backend/executor/nodeLimit.c18
-rw-r--r--src/backend/executor/nodeMaterial.c6
-rw-r--r--src/backend/executor/nodeMergejoin.c32
-rw-r--r--src/backend/executor/nodeNestloop.c10
-rw-r--r--src/backend/executor/nodeResult.c4
-rw-r--r--src/backend/executor/nodeSeqscan.c7
-rw-r--r--src/backend/executor/nodeSetOp.c11
-rw-r--r--src/backend/executor/nodeSort.c6
-rw-r--r--src/backend/executor/nodeSubplan.c3
-rw-r--r--src/backend/executor/nodeSubqueryscan.c12
-rw-r--r--src/backend/executor/nodeTidscan.c14
-rw-r--r--src/backend/executor/nodeUnique.c7
-rw-r--r--src/backend/executor/spi.c89
-rw-r--r--src/backend/lib/bit.c6
-rw-r--r--src/backend/lib/lispsort.c3
-rw-r--r--src/backend/lib/stringinfo.c3
-rw-r--r--src/backend/libpq/auth.c269
-rw-r--r--src/backend/libpq/crypt.c26
-rw-r--r--src/backend/libpq/hba.c260
-rw-r--r--src/backend/libpq/md5.c247
-rw-r--r--src/backend/libpq/password.c8
-rw-r--r--src/backend/libpq/pqcomm.c13
-rw-r--r--src/backend/libpq/pqformat.c4
-rw-r--r--src/backend/libpq/util.c3
-rw-r--r--src/backend/main/main.c46
-rw-r--r--src/backend/nodes/copyfuncs.c16
-rw-r--r--src/backend/nodes/equalfuncs.c18
-rw-r--r--src/backend/nodes/nodeFuncs.c5
-rw-r--r--src/backend/nodes/outfuncs.c5
-rw-r--r--src/backend/nodes/print.c6
-rw-r--r--src/backend/nodes/read.c10
-rw-r--r--src/backend/nodes/readfuncs.c11
-rw-r--r--src/backend/optimizer/geqo/geqo_erx.c4
-rw-r--r--src/backend/optimizer/geqo/geqo_main.c5
-rw-r--r--src/backend/optimizer/path/_deadcode/predmig.c7
-rw-r--r--src/backend/optimizer/path/_deadcode/xfunc.c7
-rw-r--r--src/backend/optimizer/path/allpaths.c76
-rw-r--r--src/backend/optimizer/path/clausesel.c22
-rw-r--r--src/backend/optimizer/path/costsize.c113
-rw-r--r--src/backend/optimizer/path/indxpath.c94
-rw-r--r--src/backend/optimizer/path/joinpath.c21
-rw-r--r--src/backend/optimizer/path/joinrels.c5
-rw-r--r--src/backend/optimizer/path/orindxpath.c6
-rw-r--r--src/backend/optimizer/path/pathkeys.c16
-rw-r--r--src/backend/optimizer/plan/createplan.c53
-rw-r--r--src/backend/optimizer/plan/initsplan.c69
-rw-r--r--src/backend/optimizer/plan/planmain.c4
-rw-r--r--src/backend/optimizer/plan/planner.c55
-rw-r--r--src/backend/optimizer/prep/prepkeyset.c1
-rw-r--r--src/backend/optimizer/prep/prepqual.c8
-rw-r--r--src/backend/optimizer/prep/preptlist.c8
-rw-r--r--src/backend/optimizer/prep/prepunion.c19
-rw-r--r--src/backend/optimizer/util/clauses.c35
-rw-r--r--src/backend/optimizer/util/joininfo.c4
-rw-r--r--src/backend/optimizer/util/pathnode.c8
-rw-r--r--src/backend/optimizer/util/plancat.c26
-rw-r--r--src/backend/optimizer/util/relnode.c32
-rw-r--r--src/backend/optimizer/util/tlist.c3
-rw-r--r--src/backend/optimizer/util/var.c10
-rw-r--r--src/backend/parser/analyze.c238
-rw-r--r--src/backend/parser/parse_agg.c3
-rw-r--r--src/backend/parser/parse_clause.c19
-rw-r--r--src/backend/parser/parse_coerce.c13
-rw-r--r--src/backend/parser/parse_expr.c46
-rw-r--r--src/backend/parser/parse_func.c112
-rw-r--r--src/backend/parser/parse_node.c6
-rw-r--r--src/backend/parser/parse_oper.c9
-rw-r--r--src/backend/parser/parse_relation.c4
-rw-r--r--src/backend/parser/parse_target.c21
-rw-r--r--src/backend/parser/parse_type.c16
-rw-r--r--src/backend/parser/parser.c3
-rw-r--r--src/backend/parser/scansup.c3
-rw-r--r--src/backend/port/beos/sem.c2
-rw-r--r--src/backend/port/beos/shm.c2
-rw-r--r--src/backend/port/beos/support.c43
-rw-r--r--src/backend/port/darwin/sem.c25
-rw-r--r--src/backend/port/dynloader/aix.c2
-rw-r--r--src/backend/port/dynloader/aix.h5
-rw-r--r--src/backend/port/dynloader/beos.c4
-rw-r--r--src/backend/port/dynloader/beos.h3
-rw-r--r--src/backend/port/dynloader/bsdi.c5
-rw-r--r--src/backend/port/dynloader/bsdi.h6
-rw-r--r--src/backend/port/dynloader/dgux.h3
-rw-r--r--src/backend/port/dynloader/freebsd.c1
-rw-r--r--src/backend/port/dynloader/freebsd.h3
-rw-r--r--src/backend/port/dynloader/hpux.c3
-rw-r--r--src/backend/port/dynloader/irix5.h1
-rw-r--r--src/backend/port/dynloader/linux.c3
-rw-r--r--src/backend/port/dynloader/linux.h9
-rw-r--r--src/backend/port/dynloader/netbsd.c1
-rw-r--r--src/backend/port/dynloader/netbsd.h3
-rw-r--r--src/backend/port/dynloader/nextstep.h1
-rw-r--r--src/backend/port/dynloader/openbsd.c1
-rw-r--r--src/backend/port/dynloader/openbsd.h3
-rw-r--r--src/backend/port/dynloader/osf.h3
-rw-r--r--src/backend/port/dynloader/sco.h3
-rw-r--r--src/backend/port/dynloader/solaris.h3
-rw-r--r--src/backend/port/dynloader/sunos4.h3
-rw-r--r--src/backend/port/dynloader/svr4.h3
-rw-r--r--src/backend/port/dynloader/ultrix4.h9
-rw-r--r--src/backend/port/dynloader/univel.h1
-rw-r--r--src/backend/port/dynloader/unixware.h1
-rw-r--r--src/backend/port/dynloader/win.h1
-rw-r--r--src/backend/port/inet_aton.c4
-rw-r--r--src/backend/port/isinf.c5
-rw-r--r--src/backend/port/nextstep/port.c1
-rw-r--r--src/backend/port/qnx4/ipc.h3
-rw-r--r--src/backend/port/qnx4/sem.c74
-rw-r--r--src/backend/port/qnx4/sem.h4
-rw-r--r--src/backend/port/qnx4/shm.c106
-rw-r--r--src/backend/port/qnx4/shm.h4
-rw-r--r--src/backend/port/qnx4/tstsem.c6
-rw-r--r--src/backend/port/snprintf.c3
-rw-r--r--src/backend/port/strcasecmp.c3
-rw-r--r--src/backend/port/strtol.c1
-rw-r--r--src/backend/port/strtoul.c1
-rw-r--r--src/backend/port/sunos4/float.h3
-rw-r--r--src/backend/postmaster/pgstat.c1039
-rw-r--r--src/backend/postmaster/postmaster.c134
-rw-r--r--src/backend/regex/engine.c34
-rw-r--r--src/backend/regex/regcomp.c9
-rw-r--r--src/backend/regex/regexec.c3
-rw-r--r--src/backend/rewrite/rewriteHandler.c64
-rw-r--r--src/backend/rewrite/rewriteManip.c19
-rw-r--r--src/backend/storage/buffer/buf_init.c6
-rw-r--r--src/backend/storage/buffer/buf_table.c9
-rw-r--r--src/backend/storage/buffer/bufmgr.c69
-rw-r--r--src/backend/storage/buffer/freelist.c10
-rw-r--r--src/backend/storage/file/buffile.c10
-rw-r--r--src/backend/storage/file/fd.c55
-rw-r--r--src/backend/storage/freespace/freespace.c156
-rw-r--r--src/backend/storage/ipc/ipc.c15
-rw-r--r--src/backend/storage/ipc/ipci.c6
-rw-r--r--src/backend/storage/ipc/shmem.c15
-rw-r--r--src/backend/storage/ipc/shmqueue.c6
-rw-r--r--src/backend/storage/ipc/sinval.c48
-rw-r--r--src/backend/storage/large_object/inv_api.c12
-rw-r--r--src/backend/storage/lmgr/deadlock.c6
-rw-r--r--src/backend/storage/lmgr/lmgr.c6
-rw-r--r--src/backend/storage/lmgr/lock.c40
-rw-r--r--src/backend/storage/lmgr/lwlock.c102
-rw-r--r--src/backend/storage/lmgr/proc.c74
-rw-r--r--src/backend/storage/lmgr/s_lock.c25
-rw-r--r--src/backend/storage/lmgr/spin.c11
-rw-r--r--src/backend/storage/page/bufpage.c19
-rw-r--r--src/backend/storage/smgr/md.c60
-rw-r--r--src/backend/storage/smgr/mm.c5
-rw-r--r--src/backend/storage/smgr/smgr.c28
-rw-r--r--src/backend/tcop/dest.c16
-rw-r--r--src/backend/tcop/fastpath.c13
-rw-r--r--src/backend/tcop/postgres.c39
-rw-r--r--src/backend/tcop/pquery.c6
-rw-r--r--src/backend/tcop/utility.c8
-rw-r--r--src/backend/tioga/Arr_TgRecipe.h3
-rw-r--r--src/backend/tioga/Varray.h1
-rw-r--r--src/backend/tioga/tgRecipe.c10
-rw-r--r--src/backend/tioga/tgRecipe.h26
-rw-r--r--src/backend/utils/adt/acl.c60
-rw-r--r--src/backend/utils/adt/arrayfuncs.c17
-rw-r--r--src/backend/utils/adt/ascii.c48
-rw-r--r--src/backend/utils/adt/cash.c4
-rw-r--r--src/backend/utils/adt/char.c10
-rw-r--r--src/backend/utils/adt/date.c28
-rw-r--r--src/backend/utils/adt/datetime.c286
-rw-r--r--src/backend/utils/adt/datum.c4
-rw-r--r--src/backend/utils/adt/encode.c144
-rw-r--r--src/backend/utils/adt/float.c25
-rw-r--r--src/backend/utils/adt/format_type.c6
-rw-r--r--src/backend/utils/adt/formatting.c474
-rw-r--r--src/backend/utils/adt/geo_ops.c57
-rw-r--r--src/backend/utils/adt/inet_net_ntop.c7
-rw-r--r--src/backend/utils/adt/inet_net_pton.c9
-rw-r--r--src/backend/utils/adt/int8.c4
-rw-r--r--src/backend/utils/adt/like.c68
-rw-r--r--src/backend/utils/adt/like_match.c8
-rw-r--r--src/backend/utils/adt/misc.c3
-rw-r--r--src/backend/utils/adt/nabstime.c140
-rw-r--r--src/backend/utils/adt/name.c6
-rw-r--r--src/backend/utils/adt/network.c75
-rw-r--r--src/backend/utils/adt/not_in.c3
-rw-r--r--src/backend/utils/adt/numeric.c24
-rw-r--r--src/backend/utils/adt/numutils.c4
-rw-r--r--src/backend/utils/adt/oracle_compat.c206
-rw-r--r--src/backend/utils/adt/pg_locale.c35
-rw-r--r--src/backend/utils/adt/pg_lzcompress.c13
-rw-r--r--src/backend/utils/adt/pgstatfuncs.c218
-rw-r--r--src/backend/utils/adt/quote.c3
-rw-r--r--src/backend/utils/adt/regexp.c3
-rw-r--r--src/backend/utils/adt/regproc.c6
-rw-r--r--src/backend/utils/adt/ri_triggers.c23
-rw-r--r--src/backend/utils/adt/ruleutils.c105
-rw-r--r--src/backend/utils/adt/selfuncs.c606
-rw-r--r--src/backend/utils/adt/tid.c15
-rw-r--r--src/backend/utils/adt/timestamp.c161
-rw-r--r--src/backend/utils/adt/varbit.c10
-rw-r--r--src/backend/utils/adt/varchar.c60
-rw-r--r--src/backend/utils/adt/varlena.c77
-rw-r--r--src/backend/utils/cache/catcache.c30
-rw-r--r--src/backend/utils/cache/inval.c48
-rw-r--r--src/backend/utils/cache/lsyscache.c49
-rw-r--r--src/backend/utils/cache/relcache.c57
-rw-r--r--src/backend/utils/cache/syscache.c8
-rw-r--r--src/backend/utils/error/elog.c50
-rw-r--r--src/backend/utils/error/exc.c8
-rw-r--r--src/backend/utils/fmgr/dfmgr.c46
-rw-r--r--src/backend/utils/fmgr/fmgr.c29
-rw-r--r--src/backend/utils/hash/dynahash.c88
-rw-r--r--src/backend/utils/hash/hashfn.c22
-rw-r--r--src/backend/utils/hash/pg_crc.c3
-rw-r--r--src/backend/utils/init/globals.c5
-rw-r--r--src/backend/utils/init/miscinit.c16
-rw-r--r--src/backend/utils/init/postinit.c21
-rw-r--r--src/backend/utils/mb/big5.c6
-rw-r--r--src/backend/utils/mb/conv.c266
-rw-r--r--src/backend/utils/mb/encnames.c339
-rw-r--r--src/backend/utils/mb/mbutils.c99
-rw-r--r--src/backend/utils/mb/wchar.c154
-rw-r--r--src/backend/utils/mb/wstrcmp.c2
-rw-r--r--src/backend/utils/misc/database.c3
-rw-r--r--src/backend/utils/misc/guc.c535
-rw-r--r--src/backend/utils/misc/ps_status.c12
-rw-r--r--src/backend/utils/mmgr/aset.c9
-rw-r--r--src/backend/utils/mmgr/mcxt.c3
-rw-r--r--src/backend/utils/mmgr/portalmem.c6
-rw-r--r--src/backend/utils/sort/logtape.c8
-rw-r--r--src/backend/utils/sort/tuplesort.c59
-rw-r--r--src/backend/utils/sort/tuplestore.c16
-rw-r--r--src/backend/utils/time/tqual.c28
-rw-r--r--src/bin/pg_dump/common.c58
-rw-r--r--src/bin/pg_dump/pg_backup.h37
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.c176
-rw-r--r--src/bin/pg_dump/pg_backup_archiver.h36
-rw-r--r--src/bin/pg_dump/pg_backup_custom.c9
-rw-r--r--src/bin/pg_dump/pg_backup_db.c46
-rw-r--r--src/bin/pg_dump/pg_backup_files.c3
-rw-r--r--src/bin/pg_dump/pg_backup_tar.c24
-rw-r--r--src/bin/pg_dump/pg_dump.c507
-rw-r--r--src/bin/pg_dump/pg_dump.h32
-rw-r--r--src/bin/pg_dump/pg_restore.c144
-rw-r--r--src/bin/pg_encoding/pg_encoding.c30
-rw-r--r--src/bin/pg_passwd/pg_passwd.c2
-rw-r--r--src/bin/pgtclsh/pgtclAppInit.c1
-rw-r--r--src/bin/pgtclsh/pgtkAppInit.c1
-rw-r--r--src/bin/psql/command.c56
-rw-r--r--src/bin/psql/command.h15
-rw-r--r--src/bin/psql/common.c17
-rw-r--r--src/bin/psql/common.h21
-rw-r--r--src/bin/psql/copy.h3
-rw-r--r--src/bin/psql/describe.c130
-rw-r--r--src/bin/psql/describe.h5
-rw-r--r--src/bin/psql/help.c16
-rw-r--r--src/bin/psql/help.h3
-rw-r--r--src/bin/psql/input.c10
-rw-r--r--src/bin/psql/input.h3
-rw-r--r--src/bin/psql/large_obj.c10
-rw-r--r--src/bin/psql/large_obj.h3
-rw-r--r--src/bin/psql/mainloop.c20
-rw-r--r--src/bin/psql/mainloop.h4
-rw-r--r--src/bin/psql/mbprint.c308
-rw-r--r--src/bin/psql/mbprint.h12
-rw-r--r--src/bin/psql/print.c127
-rw-r--r--src/bin/psql/print.h18
-rw-r--r--src/bin/psql/prompt.c8
-rw-r--r--src/bin/psql/prompt.h17
-rw-r--r--src/bin/psql/settings.h3
-rw-r--r--src/bin/psql/startup.c29
-rw-r--r--src/bin/psql/stringutils.h3
-rw-r--r--src/bin/psql/tab-complete.c28
-rw-r--r--src/bin/psql/tab-complete.h3
-rw-r--r--src/bin/psql/variables.h3
-rw-r--r--src/include/access/attnum.h3
-rw-r--r--src/include/access/clog.h3
-rw-r--r--src/include/access/genam.h15
-rw-r--r--src/include/access/gist.h31
-rw-r--r--src/include/access/gistscan.h3
-rw-r--r--src/include/access/hash.h11
-rw-r--r--src/include/access/heapam.h10
-rw-r--r--src/include/access/hio.h5
-rw-r--r--src/include/access/htup.h3
-rw-r--r--src/include/access/ibit.h3
-rw-r--r--src/include/access/iqual.h3
-rw-r--r--src/include/access/istrat.h3
-rw-r--r--src/include/access/itup.h3
-rw-r--r--src/include/access/nbtree.h3
-rw-r--r--src/include/access/printtup.h3
-rw-r--r--src/include/access/relscan.h9
-rw-r--r--src/include/access/rmgr.h3
-rw-r--r--src/include/access/rtree.h3
-rw-r--r--src/include/access/rtscan.h3
-rw-r--r--src/include/access/sdir.h9
-rw-r--r--src/include/access/skey.h7
-rw-r--r--src/include/access/strat.h5
-rw-r--r--src/include/access/transam.h7
-rw-r--r--src/include/access/tupdesc.h3
-rw-r--r--src/include/access/tupmacs.h5
-rw-r--r--src/include/access/tuptoaster.h3
-rw-r--r--src/include/access/valid.h3
-rw-r--r--src/include/access/xact.h3
-rw-r--r--src/include/access/xlog.h5
-rw-r--r--src/include/access/xlogdefs.h3
-rw-r--r--src/include/access/xlogutils.h3
-rw-r--r--src/include/bootstrap/bootstrap.h3
-rw-r--r--src/include/c.h12
-rw-r--r--src/include/catalog/catalog.h3
-rw-r--r--src/include/catalog/catname.h3
-rw-r--r--src/include/catalog/catversion.h3
-rw-r--r--src/include/catalog/heap.h9
-rw-r--r--src/include/catalog/index.h25
-rw-r--r--src/include/catalog/indexing.h3
-rw-r--r--src/include/catalog/pg_aggregate.h7
-rw-r--r--src/include/catalog/pg_am.h13
-rw-r--r--src/include/catalog/pg_amop.h3
-rw-r--r--src/include/catalog/pg_amproc.h85
-rw-r--r--src/include/catalog/pg_attrdef.h1
-rw-r--r--src/include/catalog/pg_attribute.h14
-rw-r--r--src/include/catalog/pg_class.h5
-rw-r--r--src/include/catalog/pg_control.h13
-rw-r--r--src/include/catalog/pg_database.h7
-rw-r--r--src/include/catalog/pg_description.h7
-rw-r--r--src/include/catalog/pg_group.h3
-rw-r--r--src/include/catalog/pg_index.h10
-rw-r--r--src/include/catalog/pg_inherits.h3
-rw-r--r--src/include/catalog/pg_language.h3
-rw-r--r--src/include/catalog/pg_largeobject.h3
-rw-r--r--src/include/catalog/pg_listener.h3
-rw-r--r--src/include/catalog/pg_opclass.h15
-rw-r--r--src/include/catalog/pg_operator.h69
-rw-r--r--src/include/catalog/pg_proc.h985
-rw-r--r--src/include/catalog/pg_relcheck.h1
-rw-r--r--src/include/catalog/pg_rewrite.h3
-rw-r--r--src/include/catalog/pg_shadow.h3
-rw-r--r--src/include/catalog/pg_statistic.h43
-rw-r--r--src/include/catalog/pg_trigger.h1
-rw-r--r--src/include/catalog/pg_type.h23
-rw-r--r--src/include/catalog/pg_version.h3
-rw-r--r--src/include/commands/async.h3
-rw-r--r--src/include/commands/cluster.h3
-rw-r--r--src/include/commands/command.h11
-rw-r--r--src/include/commands/comment.h1
-rw-r--r--src/include/commands/copy.h3
-rw-r--r--src/include/commands/creatinh.h3
-rw-r--r--src/include/commands/dbcommands.h3
-rw-r--r--src/include/commands/defrem.h3
-rw-r--r--src/include/commands/explain.h3
-rw-r--r--src/include/commands/proclang.h1
-rw-r--r--src/include/commands/rename.h3
-rw-r--r--src/include/commands/sequence.h3
-rw-r--r--src/include/commands/trigger.h31
-rw-r--r--src/include/commands/user.h3
-rw-r--r--src/include/commands/vacuum.h19
-rw-r--r--src/include/commands/variable.h3
-rw-r--r--src/include/commands/version.h3
-rw-r--r--src/include/commands/view.h3
-rw-r--r--src/include/executor/execFlatten.h3
-rw-r--r--src/include/executor/execdebug.h4
-rw-r--r--src/include/executor/execdefs.h3
-rw-r--r--src/include/executor/execdesc.h3
-rw-r--r--src/include/executor/executor.h5
-rw-r--r--src/include/executor/functions.h3
-rw-r--r--src/include/executor/hashjoin.h3
-rw-r--r--src/include/executor/instrument.h19
-rw-r--r--src/include/executor/nodeAgg.h3
-rw-r--r--src/include/executor/nodeAppend.h3
-rw-r--r--src/include/executor/nodeGroup.h3
-rw-r--r--src/include/executor/nodeHash.h9
-rw-r--r--src/include/executor/nodeHashjoin.h3
-rw-r--r--src/include/executor/nodeIndexscan.h3
-rw-r--r--src/include/executor/nodeLimit.h3
-rw-r--r--src/include/executor/nodeMaterial.h3
-rw-r--r--src/include/executor/nodeMergejoin.h3
-rw-r--r--src/include/executor/nodeNestloop.h3
-rw-r--r--src/include/executor/nodeResult.h3
-rw-r--r--src/include/executor/nodeSeqscan.h3
-rw-r--r--src/include/executor/nodeSetOp.h3
-rw-r--r--src/include/executor/nodeSort.h3
-rw-r--r--src/include/executor/nodeSubplan.h1
-rw-r--r--src/include/executor/nodeSubqueryscan.h3
-rw-r--r--src/include/executor/nodeTidscan.h3
-rw-r--r--src/include/executor/nodeUnique.h3
-rw-r--r--src/include/executor/spi.h13
-rw-r--r--src/include/executor/spi_priv.h3
-rw-r--r--src/include/executor/tuptable.h3
-rw-r--r--src/include/fmgr.h9
-rw-r--r--src/include/lib/dllist.h5
-rw-r--r--src/include/lib/lispsort.h3
-rw-r--r--src/include/lib/stringinfo.h6
-rw-r--r--src/include/libpq/auth.h3
-rw-r--r--src/include/libpq/be-fsstubs.h3
-rw-r--r--src/include/libpq/crypt.h7
-rw-r--r--src/include/libpq/hba.h27
-rw-r--r--src/include/libpq/libpq-be.h13
-rw-r--r--src/include/libpq/libpq-fs.h3
-rw-r--r--src/include/libpq/libpq.h3
-rw-r--r--src/include/libpq/password.h1
-rw-r--r--src/include/libpq/pqcomm.h4
-rw-r--r--src/include/libpq/pqformat.h3
-rw-r--r--src/include/libpq/pqsignal.h3
-rw-r--r--src/include/mb/pg_wchar.h240
-rw-r--r--src/include/miscadmin.h21
-rw-r--r--src/include/nodes/execnodes.h16
-rw-r--r--src/include/nodes/makefuncs.h3
-rw-r--r--src/include/nodes/memnodes.h3
-rw-r--r--src/include/nodes/nodeFuncs.h3
-rw-r--r--src/include/nodes/nodes.h374
-rw-r--r--src/include/nodes/params.h3
-rw-r--r--src/include/nodes/parsenodes.h67
-rw-r--r--src/include/nodes/pg_list.h3
-rw-r--r--src/include/nodes/plannodes.h16
-rw-r--r--src/include/nodes/primnodes.h7
-rw-r--r--src/include/nodes/print.h3
-rw-r--r--src/include/nodes/readfuncs.h3
-rw-r--r--src/include/nodes/relation.h23
-rw-r--r--src/include/optimizer/_deadcode/xfunc.h3
-rw-r--r--src/include/optimizer/clauses.h3
-rw-r--r--src/include/optimizer/cost.h35
-rw-r--r--src/include/optimizer/geqo.h3
-rw-r--r--src/include/optimizer/geqo_copy.h3
-rw-r--r--src/include/optimizer/geqo_gene.h3
-rw-r--r--src/include/optimizer/geqo_misc.h3
-rw-r--r--src/include/optimizer/geqo_mutation.h3
-rw-r--r--src/include/optimizer/geqo_pool.h3
-rw-r--r--src/include/optimizer/geqo_random.h3
-rw-r--r--src/include/optimizer/geqo_recombination.h3
-rw-r--r--src/include/optimizer/geqo_selection.h3
-rw-r--r--src/include/optimizer/joininfo.h3
-rw-r--r--src/include/optimizer/pathnode.h55
-rw-r--r--src/include/optimizer/paths.h17
-rw-r--r--src/include/optimizer/plancat.h15
-rw-r--r--src/include/optimizer/planmain.h7
-rw-r--r--src/include/optimizer/planner.h5
-rw-r--r--src/include/optimizer/prep.h5
-rw-r--r--src/include/optimizer/restrictinfo.h3
-rw-r--r--src/include/optimizer/subselect.h1
-rw-r--r--src/include/optimizer/tlist.h3
-rw-r--r--src/include/optimizer/var.h5
-rw-r--r--src/include/parser/analyze.h3
-rw-r--r--src/include/parser/gramparse.h5
-rw-r--r--src/include/parser/keywords.h3
-rw-r--r--src/include/parser/parse_agg.h3
-rw-r--r--src/include/parser/parse_clause.h3
-rw-r--r--src/include/parser/parse_coerce.h27
-rw-r--r--src/include/parser/parse_expr.h3
-rw-r--r--src/include/parser/parse_func.h15
-rw-r--r--src/include/parser/parse_node.h3
-rw-r--r--src/include/parser/parse_oper.h3
-rw-r--r--src/include/parser/parse_relation.h3
-rw-r--r--src/include/parser/parse_target.h3
-rw-r--r--src/include/parser/parse_type.h3
-rw-r--r--src/include/parser/parser.h3
-rw-r--r--src/include/parser/parsetree.h3
-rw-r--r--src/include/parser/scansup.h3
-rw-r--r--src/include/pgstat.h257
-rw-r--r--src/include/port/beos.h2
-rw-r--r--src/include/port/darwin.h1
-rw-r--r--src/include/port/darwin/sem.h4
-rw-r--r--src/include/port/linux.h1
-rw-r--r--src/include/port/netbsd.h8
-rw-r--r--src/include/port/openbsd.h8
-rw-r--r--src/include/port/solaris.h4
-rw-r--r--src/include/port/svr4.h1
-rw-r--r--src/include/postgres.h13
-rw-r--r--src/include/postgres_ext.h3
-rw-r--r--src/include/postgres_fe.h3
-rw-r--r--src/include/regex/cclass.h14
-rw-r--r--src/include/regex/regex.h1
-rw-r--r--src/include/regex/utils.h1
-rw-r--r--src/include/rewrite/prs2lock.h3
-rw-r--r--src/include/rewrite/rewriteDefine.h3
-rw-r--r--src/include/rewrite/rewriteHandler.h3
-rw-r--r--src/include/rewrite/rewriteManip.h3
-rw-r--r--src/include/rewrite/rewriteRemove.h3
-rw-r--r--src/include/rewrite/rewriteSupport.h3
-rw-r--r--src/include/rusagestub.h3
-rw-r--r--src/include/storage/backendid.h3
-rw-r--r--src/include/storage/block.h3
-rw-r--r--src/include/storage/buf.h3
-rw-r--r--src/include/storage/buf_internals.h19
-rw-r--r--src/include/storage/buffile.h3
-rw-r--r--src/include/storage/bufmgr.h5
-rw-r--r--src/include/storage/bufpage.h7
-rw-r--r--src/include/storage/fd.h5
-rw-r--r--src/include/storage/freespace.h21
-rw-r--r--src/include/storage/ipc.h3
-rw-r--r--src/include/storage/item.h3
-rw-r--r--src/include/storage/itemid.h3
-rw-r--r--src/include/storage/itempos.h3
-rw-r--r--src/include/storage/itemptr.h11
-rw-r--r--src/include/storage/large_object.h3
-rw-r--r--src/include/storage/lmgr.h7
-rw-r--r--src/include/storage/lock.h3
-rw-r--r--src/include/storage/lwlock.h40
-rw-r--r--src/include/storage/off.h3
-rw-r--r--src/include/storage/page.h3
-rw-r--r--src/include/storage/pos.h3
-rw-r--r--src/include/storage/proc.h15
-rw-r--r--src/include/storage/relfilenode.h1
-rw-r--r--src/include/storage/shmem.h3
-rw-r--r--src/include/storage/sinval.h10
-rw-r--r--src/include/storage/sinvaladt.h5
-rw-r--r--src/include/storage/smgr.h9
-rw-r--r--src/include/storage/spin.h7
-rw-r--r--src/include/tcop/dest.h13
-rw-r--r--src/include/tcop/fastpath.h3
-rw-r--r--src/include/tcop/pquery.h3
-rw-r--r--src/include/tcop/tcopdebug.h3
-rw-r--r--src/include/tcop/tcopprot.h6
-rw-r--r--src/include/tcop/utility.h3
-rw-r--r--src/include/utils/acl.h18
-rw-r--r--src/include/utils/array.h3
-rw-r--r--src/include/utils/ascii.h4
-rw-r--r--src/include/utils/bit.h3
-rw-r--r--src/include/utils/builtins.h11
-rw-r--r--src/include/utils/cash.h1
-rw-r--r--src/include/utils/catcache.h14
-rw-r--r--src/include/utils/date.h3
-rw-r--r--src/include/utils/datetime.h3
-rw-r--r--src/include/utils/datum.h3
-rw-r--r--src/include/utils/dynahash.h3
-rw-r--r--src/include/utils/dynamic_loader.h3
-rw-r--r--src/include/utils/elog.h6
-rw-r--r--src/include/utils/exc.h3
-rw-r--r--src/include/utils/excid.h14
-rw-r--r--src/include/utils/fcache.h7
-rw-r--r--src/include/utils/fmgrtab.h5
-rw-r--r--src/include/utils/formatting.h3
-rw-r--r--src/include/utils/geo_decls.h3
-rw-r--r--src/include/utils/guc.h17
-rw-r--r--src/include/utils/hsearch.h34
-rw-r--r--src/include/utils/inet.h3
-rw-r--r--src/include/utils/int8.h3
-rw-r--r--src/include/utils/inval.h3
-rw-r--r--src/include/utils/logtape.h3
-rw-r--r--src/include/utils/lsyscache.h17
-rw-r--r--src/include/utils/memutils.h3
-rw-r--r--src/include/utils/nabstime.h3
-rw-r--r--src/include/utils/numeric.h3
-rw-r--r--src/include/utils/palloc.h3
-rw-r--r--src/include/utils/pg_crc.h4
-rw-r--r--src/include/utils/pg_locale.h13
-rw-r--r--src/include/utils/pg_lzcompress.h3
-rw-r--r--src/include/utils/portal.h5
-rw-r--r--src/include/utils/ps_status.h5
-rw-r--r--src/include/utils/rel.h30
-rw-r--r--src/include/utils/relcache.h9
-rw-r--r--src/include/utils/selfuncs.h9
-rw-r--r--src/include/utils/sets.h3
-rw-r--r--src/include/utils/syscache.h5
-rw-r--r--src/include/utils/temprel.h3
-rw-r--r--src/include/utils/timestamp.h17
-rw-r--r--src/include/utils/tqual.h18
-rw-r--r--src/include/utils/tuplesort.h25
-rw-r--r--src/include/utils/tuplestore.h3
-rw-r--r--src/include/utils/varbit.h3
-rw-r--r--src/interfaces/cli/example1.c8
-rw-r--r--src/interfaces/cli/example2.c18
-rw-r--r--src/interfaces/cli/sqlcli.h104
-rw-r--r--src/interfaces/ecpg/include/ecpgerrno.h1
-rw-r--r--src/interfaces/ecpg/include/ecpglib.h1
-rw-r--r--src/interfaces/ecpg/include/ecpgtype.h3
-rw-r--r--src/interfaces/ecpg/include/sql3types.h46
-rw-r--r--src/interfaces/ecpg/include/sqlca.h8
-rw-r--r--src/interfaces/ecpg/lib/connect.c4
-rw-r--r--src/interfaces/ecpg/lib/descriptor.c98
-rw-r--r--src/interfaces/ecpg/lib/execute.c812
-rw-r--r--src/interfaces/ecpg/lib/extern.h9
-rw-r--r--src/interfaces/ecpg/lib/misc.c33
-rw-r--r--src/interfaces/ecpg/lib/pg_type.h3
-rw-r--r--src/interfaces/ecpg/lib/typename.c11
-rw-r--r--src/interfaces/ecpg/preproc/descriptor.c37
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.c10
-rw-r--r--src/interfaces/ecpg/preproc/extern.h3
-rw-r--r--src/interfaces/ecpg/preproc/output.c3
-rw-r--r--src/interfaces/ecpg/preproc/type.c13
-rw-r--r--src/interfaces/ecpg/preproc/type.h16
-rw-r--r--src/interfaces/libpgeasy/libpgeasy.c4
-rw-r--r--src/interfaces/libpgtcl/libpgtcl.h3
-rw-r--r--src/interfaces/libpgtcl/pgtcl.c9
-rw-r--r--src/interfaces/libpgtcl/pgtclCmds.c14
-rw-r--r--src/interfaces/libpgtcl/pgtclCmds.h11
-rw-r--r--src/interfaces/libpgtcl/pgtclId.c13
-rw-r--r--src/interfaces/libpgtcl/pgtclId.h3
-rw-r--r--src/interfaces/libpq/fe-auth.c100
-rw-r--r--src/interfaces/libpq/fe-auth.h3
-rw-r--r--src/interfaces/libpq/fe-connect.c93
-rw-r--r--src/interfaces/libpq/fe-exec.c117
-rw-r--r--src/interfaces/libpq/fe-lobj.c32
-rw-r--r--src/interfaces/libpq/fe-misc.c97
-rw-r--r--src/interfaces/libpq/fe-print.c4
-rw-r--r--src/interfaces/libpq/libpq-fe.h17
-rw-r--r--src/interfaces/libpq/libpq-int.h39
-rw-r--r--src/interfaces/libpq/libpqdll.c8
-rw-r--r--src/interfaces/libpq/pqexpbuffer.c4
-rw-r--r--src/interfaces/libpq/pqexpbuffer.h9
-rw-r--r--src/interfaces/libpq/pqsignal.h3
-rw-r--r--src/interfaces/libpq/win32.h4
-rw-r--r--src/interfaces/odbc/bind.c73
-rw-r--r--src/interfaces/odbc/bind.h3
-rw-r--r--src/interfaces/odbc/columninfo.c10
-rw-r--r--src/interfaces/odbc/columninfo.h11
-rw-r--r--src/interfaces/odbc/connection.c181
-rw-r--r--src/interfaces/odbc/connection.h102
-rw-r--r--src/interfaces/odbc/convert.c248
-rw-r--r--src/interfaces/odbc/convert.h23
-rw-r--r--src/interfaces/odbc/dlg_specific.c258
-rw-r--r--src/interfaces/odbc/dlg_specific.h20
-rw-r--r--src/interfaces/odbc/drvconn.c45
-rw-r--r--src/interfaces/odbc/environ.c47
-rw-r--r--src/interfaces/odbc/environ.h11
-rw-r--r--src/interfaces/odbc/execute.c81
-rw-r--r--src/interfaces/odbc/gpps.c38
-rw-r--r--src/interfaces/odbc/gpps.h19
-rw-r--r--src/interfaces/odbc/info.c530
-rw-r--r--src/interfaces/odbc/iodbc.h5
-rw-r--r--src/interfaces/odbc/isql.h55
-rw-r--r--src/interfaces/odbc/isqlext.h176
-rw-r--r--src/interfaces/odbc/lobj.c16
-rw-r--r--src/interfaces/odbc/lobj.h17
-rw-r--r--src/interfaces/odbc/misc.c24
-rw-r--r--src/interfaces/odbc/misc.h1
-rw-r--r--src/interfaces/odbc/multibyte.c22
-rw-r--r--src/interfaces/odbc/odbcapi.c633
-rw-r--r--src/interfaces/odbc/odbcapi30.c514
-rw-r--r--src/interfaces/odbc/options.c69
-rw-r--r--src/interfaces/odbc/parse.c53
-rw-r--r--src/interfaces/odbc/pgapifunc.h430
-rw-r--r--src/interfaces/odbc/pgtypes.c108
-rw-r--r--src/interfaces/odbc/pgtypes.h37
-rw-r--r--src/interfaces/odbc/psqlodbc.c4
-rw-r--r--src/interfaces/odbc/psqlodbc.h44
-rw-r--r--src/interfaces/odbc/qresult.c42
-rw-r--r--src/interfaces/odbc/qresult.h58
-rw-r--r--src/interfaces/odbc/resource.h120
-rw-r--r--src/interfaces/odbc/results.c400
-rw-r--r--src/interfaces/odbc/setup.c30
-rw-r--r--src/interfaces/odbc/socket.c31
-rw-r--r--src/interfaces/odbc/socket.h28
-rw-r--r--src/interfaces/odbc/statement.c92
-rw-r--r--src/interfaces/odbc/statement.h102
-rw-r--r--src/interfaces/odbc/tuple.c8
-rw-r--r--src/interfaces/odbc/tuple.h9
-rw-r--r--src/interfaces/odbc/tuplelist.c9
-rw-r--r--src/interfaces/odbc/tuplelist.h7
-rw-r--r--src/interfaces/perl5/ppport.h4
-rw-r--r--src/interfaces/python/pgmodule.c116
-rw-r--r--src/pl/plperl/plperl.c16
-rw-r--r--src/pl/plperl/ppport.h4
-rw-r--r--src/pl/plpgsql/src/pl_comp.c23
-rw-r--r--src/pl/plpgsql/src/pl_exec.c124
-rw-r--r--src/pl/plpgsql/src/pl_handler.c9
-rw-r--r--src/pl/plpgsql/src/plpgsql.h77
-rw-r--r--src/pl/plpython/plpython.c3868
-rw-r--r--src/pl/plpython/plpython.h51
-rw-r--r--src/pl/tcl/pltcl.c69
-rw-r--r--src/test/examples/testlibpq.c1
-rw-r--r--src/test/locale/test-ctype.c2
-rw-r--r--src/tools/entab/entab.c1
-rw-r--r--src/tutorial/complex.c4
-rw-r--r--src/tutorial/funcs.c1
-rw-r--r--src/utils/dllinit.c2
-rw-r--r--src/utils/getopt.c2
818 files changed, 21811 insertions, 20618 deletions
diff --git a/contrib/array/array_iterator.h b/contrib/array/array_iterator.h
index 68da385c9a4..7889fdc0b2a 100644
--- a/contrib/array/array_iterator.h
+++ b/contrib/array/array_iterator.h
@@ -34,7 +34,6 @@ int32 array_all_int4le(ArrayType *array, int4 value);
int32 array_oideq(ArrayType *array, Oid value);
int32 array_all_oidne(ArrayType *array, Oid value);
-
#endif
/*
diff --git a/contrib/btree_gist/btree_gist.c b/contrib/btree_gist/btree_gist.c
index 999d199ff20..4235c0a5d9b 100644
--- a/contrib/btree_gist/btree_gist.c
+++ b/contrib/btree_gist/btree_gist.c
@@ -8,43 +8,46 @@
#include "utils/geo_decls.h"
#include "utils/elog.h"
-typedef int (*CMPFUNC)(const void *a, const void *b);
-typedef void (*BINARY_UNION)(Datum*, char*);
+typedef int (*CMPFUNC) (const void *a, const void *b);
+typedef void (*BINARY_UNION) (Datum *, char *);
-typedef struct intkey {
- int4 lower;
- int4 upper;
-} INT4KEY;
+typedef struct intkey
+{
+ int4 lower;
+ int4 upper;
+} INT4KEY;
-typedef struct tskey {
- Timestamp lower;
- Timestamp upper;
-} TSKEY;
+typedef struct tskey
+{
+ Timestamp lower;
+ Timestamp upper;
+} TSKEY;
/* used for sorting */
-typedef struct rix {
- int index;
- char *r;
-} RIX;
+typedef struct rix
+{
+ int index;
+ char *r;
+} RIX;
/*
** int4key in/out
*/
PG_FUNCTION_INFO_V1(int4key_in);
PG_FUNCTION_INFO_V1(int4key_out);
-Datum int4key_in(PG_FUNCTION_ARGS);
-Datum int4key_out(PG_FUNCTION_ARGS);
+Datum int4key_in(PG_FUNCTION_ARGS);
+Datum int4key_out(PG_FUNCTION_ARGS);
/*
** tskey in/out
*/
PG_FUNCTION_INFO_V1(tskey_in);
PG_FUNCTION_INFO_V1(tskey_out);
-Datum tskey_in(PG_FUNCTION_ARGS);
-Datum tskey_out(PG_FUNCTION_ARGS);
+Datum tskey_in(PG_FUNCTION_ARGS);
+Datum tskey_out(PG_FUNCTION_ARGS);
/*
-** int4 ops
+** int4 ops
*/
PG_FUNCTION_INFO_V1(gint4_compress);
PG_FUNCTION_INFO_V1(gint4_union);
@@ -53,15 +56,15 @@ PG_FUNCTION_INFO_V1(gint4_consistent);
PG_FUNCTION_INFO_V1(gint4_penalty);
PG_FUNCTION_INFO_V1(gint4_same);
-Datum gint4_compress(PG_FUNCTION_ARGS);
-Datum gint4_union(PG_FUNCTION_ARGS);
-Datum gint4_picksplit(PG_FUNCTION_ARGS);
-Datum gint4_consistent(PG_FUNCTION_ARGS);
-Datum gint4_penalty(PG_FUNCTION_ARGS);
-Datum gint4_same(PG_FUNCTION_ARGS);
+Datum gint4_compress(PG_FUNCTION_ARGS);
+Datum gint4_union(PG_FUNCTION_ARGS);
+Datum gint4_picksplit(PG_FUNCTION_ARGS);
+Datum gint4_consistent(PG_FUNCTION_ARGS);
+Datum gint4_penalty(PG_FUNCTION_ARGS);
+Datum gint4_same(PG_FUNCTION_ARGS);
static void gint4_binary_union(Datum *r1, char *r2);
-static int int4key_cmp(const void *a, const void *b);
+static int int4key_cmp(const void *a, const void *b);
/*
** timestamp ops
@@ -73,51 +76,51 @@ PG_FUNCTION_INFO_V1(gts_consistent);
PG_FUNCTION_INFO_V1(gts_penalty);
PG_FUNCTION_INFO_V1(gts_same);
-Datum gts_compress(PG_FUNCTION_ARGS);
-Datum gts_union(PG_FUNCTION_ARGS);
-Datum gts_picksplit(PG_FUNCTION_ARGS);
-Datum gts_consistent(PG_FUNCTION_ARGS);
-Datum gts_penalty(PG_FUNCTION_ARGS);
-Datum gts_same(PG_FUNCTION_ARGS);
+Datum gts_compress(PG_FUNCTION_ARGS);
+Datum gts_union(PG_FUNCTION_ARGS);
+Datum gts_picksplit(PG_FUNCTION_ARGS);
+Datum gts_consistent(PG_FUNCTION_ARGS);
+Datum gts_penalty(PG_FUNCTION_ARGS);
+Datum gts_same(PG_FUNCTION_ARGS);
static void gts_binary_union(Datum *r1, char *r2);
-static int tskey_cmp(const void *a, const void *b);
+static int tskey_cmp(const void *a, const void *b);
/* define for comparison */
#define TSGE( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
- timestamp_ge, \
- PointerGetDatum( ts1 ), \
- PointerGetDatum( ts2 ) \
+ timestamp_ge, \
+ PointerGetDatum( ts1 ), \
+ PointerGetDatum( ts2 ) \
)))
#define TSGT( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
- timestamp_gt, \
- PointerGetDatum( ts1 ), \
- PointerGetDatum( ts2 ) \
+ timestamp_gt, \
+ PointerGetDatum( ts1 ), \
+ PointerGetDatum( ts2 ) \
)))
#define TSEQ( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
- timestamp_eq, \
- PointerGetDatum( ts1 ), \
- PointerGetDatum( ts2 ) \
+ timestamp_eq, \
+ PointerGetDatum( ts1 ), \
+ PointerGetDatum( ts2 ) \
)))
#define TSLT( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
- timestamp_lt, \
- PointerGetDatum( ts1 ), \
- PointerGetDatum( ts2 ) \
+ timestamp_lt, \
+ PointerGetDatum( ts1 ), \
+ PointerGetDatum( ts2 ) \
)))
#define TSLE( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
- timestamp_le, \
- PointerGetDatum( ts1 ), \
- PointerGetDatum( ts2 ) \
+ timestamp_le, \
+ PointerGetDatum( ts1 ), \
+ PointerGetDatum( ts2 ) \
)))
/*
** Common btree-function (for all ops)
*/
-static GIST_SPLITVEC * btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v,
- BINARY_UNION bu, CMPFUNC cmp);
+static GIST_SPLITVEC *btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v,
+ BINARY_UNION bu, CMPFUNC cmp);
PG_FUNCTION_INFO_V1(btree_decompress);
-Datum btree_decompress(PG_FUNCTION_ARGS);
+Datum btree_decompress(PG_FUNCTION_ARGS);
/**************************************************
* int4 ops
@@ -126,334 +129,364 @@ Datum btree_decompress(PG_FUNCTION_ARGS);
Datum
gint4_compress(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry=(GISTENTRY*)PG_GETARG_POINTER(0);
- GISTENTRY *retval;
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ GISTENTRY *retval;
+
+ if (entry->leafkey)
+ {
+ INT4KEY *r = palloc(sizeof(INT4KEY));
- if ( entry->leafkey) {
- INT4KEY *r = palloc(sizeof(INT4KEY));
retval = palloc(sizeof(GISTENTRY));
r->lower = r->upper = (entry->key);
-
+
gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page,
- entry->offset, sizeof(INT4KEY),FALSE);
+ entry->offset, sizeof(INT4KEY), FALSE);
- } else {
- retval = entry;
}
- PG_RETURN_POINTER( retval );
+ else
+ retval = entry;
+ PG_RETURN_POINTER(retval);
}
-Datum
+Datum
gint4_consistent(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry = (GISTENTRY*) PG_GETARG_POINTER(0);
- int4 query = PG_GETARG_INT32(1);
- INT4KEY *kkk= (INT4KEY *)DatumGetPointer(entry->key);
- StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
- bool retval;
-
- switch(strategy) {
- case BTLessEqualStrategyNumber:
- retval = ( query >= kkk->lower );
- break;
- case BTLessStrategyNumber:
- if (GIST_LEAF(entry))
- retval = ( query > kkk->lower );
- else
- retval = ( query >= kkk->lower );
- break;
- case BTEqualStrategyNumber:
- /* in leaf page kkk->lower always = kkk->upper */
- if (GIST_LEAF(entry))
- retval = ( query == kkk->lower );
- else
- retval = ( kkk->lower <= query && query <= kkk->upper );
- break;
- case BTGreaterStrategyNumber:
- if (GIST_LEAF(entry))
- retval = ( query < kkk->upper );
- else
- retval = ( query <= kkk->upper );
- break;
- case BTGreaterEqualStrategyNumber:
- retval = ( query <= kkk->upper );
- break;
- default:
- retval = FALSE;
- }
- PG_RETURN_BOOL(retval);
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ int4 query = PG_GETARG_INT32(1);
+ INT4KEY *kkk = (INT4KEY *) DatumGetPointer(entry->key);
+ StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+ bool retval;
+
+ switch (strategy)
+ {
+ case BTLessEqualStrategyNumber:
+ retval = (query >= kkk->lower);
+ break;
+ case BTLessStrategyNumber:
+ if (GIST_LEAF(entry))
+ retval = (query > kkk->lower);
+ else
+ retval = (query >= kkk->lower);
+ break;
+ case BTEqualStrategyNumber:
+ /* in leaf page kkk->lower always = kkk->upper */
+ if (GIST_LEAF(entry))
+ retval = (query == kkk->lower);
+ else
+ retval = (kkk->lower <= query && query <= kkk->upper);
+ break;
+ case BTGreaterStrategyNumber:
+ if (GIST_LEAF(entry))
+ retval = (query < kkk->upper);
+ else
+ retval = (query <= kkk->upper);
+ break;
+ case BTGreaterEqualStrategyNumber:
+ retval = (query <= kkk->upper);
+ break;
+ default:
+ retval = FALSE;
+ }
+ PG_RETURN_BOOL(retval);
}
Datum
gint4_union(PG_FUNCTION_ARGS)
{
- bytea *entryvec = (bytea*) PG_GETARG_POINTER(0);
- int i, numranges;
- INT4KEY *cur, *out=palloc(sizeof(INT4KEY));
-
- numranges = (VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY);
- *(int*) PG_GETARG_POINTER(1) = sizeof(INT4KEY);
-
- cur = (INT4KEY *)DatumGetPointer( (((GISTENTRY *)(VARDATA(entryvec)))[0].key) );
- out->lower = cur->lower;
- out->upper = cur->upper;
-
- for (i = 1; i < numranges; i++) {
- cur = (INT4KEY *)DatumGetPointer( (((GISTENTRY *)(VARDATA(entryvec)))[i].key) );
- if ( out->lower > cur->lower ) out->lower = cur->lower;
- if ( out->upper < cur->upper ) out->upper = cur->upper;
- }
+ bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
+ int i,
+ numranges;
+ INT4KEY *cur,
+ *out = palloc(sizeof(INT4KEY));
+
+ numranges = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY);
+ *(int *) PG_GETARG_POINTER(1) = sizeof(INT4KEY);
+
+ cur = (INT4KEY *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[0].key));
+ out->lower = cur->lower;
+ out->upper = cur->upper;
+
+ for (i = 1; i < numranges; i++)
+ {
+ cur = (INT4KEY *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i].key));
+ if (out->lower > cur->lower)
+ out->lower = cur->lower;
+ if (out->upper < cur->upper)
+ out->upper = cur->upper;
+ }
- PG_RETURN_POINTER( out );
+ PG_RETURN_POINTER(out);
}
Datum
gint4_penalty(PG_FUNCTION_ARGS)
{
- INT4KEY *origentry = (INT4KEY*) DatumGetPointer( ((GISTENTRY*) PG_GETARG_POINTER(0))->key );
- INT4KEY *newentry = (INT4KEY*) DatumGetPointer( ((GISTENTRY*) PG_GETARG_POINTER(1))->key );
- float *result = (float*) PG_GETARG_POINTER(2);
-
- *result = Max( newentry->upper - origentry->upper, 0 ) +
- Max( origentry->lower - newentry->lower, 0 );
-
- PG_RETURN_POINTER( result );
+ INT4KEY *origentry = (INT4KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
+ INT4KEY *newentry = (INT4KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
+ float *result = (float *) PG_GETARG_POINTER(2);
+
+ *result = Max(newentry->upper - origentry->upper, 0) +
+ Max(origentry->lower - newentry->lower, 0);
+
+ PG_RETURN_POINTER(result);
}
Datum
gint4_picksplit(PG_FUNCTION_ARGS)
{
- PG_RETURN_POINTER( btree_picksplit(
- (bytea*)PG_GETARG_POINTER(0),
- (GIST_SPLITVEC*)PG_GETARG_POINTER(1),
- gint4_binary_union,
- int4key_cmp
- ) );
+ PG_RETURN_POINTER(btree_picksplit(
+ (bytea *) PG_GETARG_POINTER(0),
+ (GIST_SPLITVEC *) PG_GETARG_POINTER(1),
+ gint4_binary_union,
+ int4key_cmp
+ ));
}
Datum
gint4_same(PG_FUNCTION_ARGS)
{
- INT4KEY *b1 = (INT4KEY*) PG_GETARG_POINTER(0);
- INT4KEY *b2 = (INT4KEY*) PG_GETARG_POINTER(1);
- bool *result = (bool*) PG_GETARG_POINTER(2);
+ INT4KEY *b1 = (INT4KEY *) PG_GETARG_POINTER(0);
+ INT4KEY *b2 = (INT4KEY *) PG_GETARG_POINTER(1);
+ bool *result = (bool *) PG_GETARG_POINTER(2);
- *result = ( b1->lower == b2->lower && b1->upper == b2->upper ) ? TRUE : FALSE;
- PG_RETURN_POINTER(result);
+ *result = (b1->lower == b2->lower && b1->upper == b2->upper) ? TRUE : FALSE;
+ PG_RETURN_POINTER(result);
}
-static void
+static void
gint4_binary_union(Datum *r1, char *r2)
{
- INT4KEY *b1;
- INT4KEY *b2 = (INT4KEY*) r2;
- if ( ! DatumGetPointer( *r1 ) ) {
- *r1 = PointerGetDatum( palloc( sizeof(INT4KEY) ) );
- b1 = (INT4KEY*)DatumGetPointer( *r1 );
- b1->upper = b2->upper;
- b1->lower = b2->lower;
- } else {
- b1 = (INT4KEY*)DatumGetPointer( *r1 );
-
- b1->lower = ( b1->lower > b2->lower ) ?
- b2->lower : b1->lower;
- b1->upper = ( b1->upper > b2->upper ) ?
- b1->upper : b2->upper;
- }
+ INT4KEY *b1;
+ INT4KEY *b2 = (INT4KEY *) r2;
+
+ if (!DatumGetPointer(*r1))
+ {
+ *r1 = PointerGetDatum(palloc(sizeof(INT4KEY)));
+ b1 = (INT4KEY *) DatumGetPointer(*r1);
+ b1->upper = b2->upper;
+ b1->lower = b2->lower;
+ }
+ else
+ {
+ b1 = (INT4KEY *) DatumGetPointer(*r1);
+
+ b1->lower = (b1->lower > b2->lower) ?
+ b2->lower : b1->lower;
+ b1->upper = (b1->upper > b2->upper) ?
+ b1->upper : b2->upper;
+ }
}
-static int
-int4key_cmp(const void *a, const void *b) {
- return ( ((INT4KEY*)(((RIX*)a)->r))->lower - ((INT4KEY*)(((RIX*)b)->r))->lower );
+static int
+int4key_cmp(const void *a, const void *b)
+{
+ return (((INT4KEY *) (((RIX *) a)->r))->lower - ((INT4KEY *) (((RIX *) b)->r))->lower);
}
/**************************************************
* timestamp ops
- **************************************************/
+ **************************************************/
Datum
gts_compress(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry=(GISTENTRY*)PG_GETARG_POINTER(0);
- GISTENTRY *retval;
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ GISTENTRY *retval;
+
+ if (entry->leafkey)
+ {
+ TSKEY *r = (TSKEY *) palloc(sizeof(TSKEY));
- if ( entry->leafkey) {
- TSKEY *r = (TSKEY *)palloc( sizeof(TSKEY) );
retval = palloc(sizeof(GISTENTRY));
- if ( entry->key ) {
- r->lower = r->upper = *(Timestamp*)(entry->key);
+ if (entry->key)
+ {
+ r->lower = r->upper = *(Timestamp *) (entry->key);
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
entry->offset, sizeof(TSKEY), FALSE);
- } else {
+ }
+ else
+ {
gistentryinit(*retval, PointerGetDatum(NULL),
entry->rel, entry->page,
entry->offset, 0, FALSE);
- }
- } else {
- retval = entry;
+ }
}
- PG_RETURN_POINTER( retval );
+ else
+ retval = entry;
+ PG_RETURN_POINTER(retval);
}
-Datum
+Datum
gts_consistent(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry = (GISTENTRY*) PG_GETARG_POINTER(0);
- Timestamp *query = (Timestamp *)PG_GETARG_POINTER(1);
- StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
- bool retval;
- TSKEY *key;
- /*
- ** if entry is not leaf, use gbox_internal_consistent,
- ** else use gbox_leaf_consistent
- */
- if ( ! entry->key )
- return FALSE;
- key = (TSKEY*) DatumGetPointer(entry->key);
-
- switch(strategy) {
- case BTLessEqualStrategyNumber:
- retval = TSGE( query, &(key->lower) );
- break;
- case BTLessStrategyNumber:
- if (GIST_LEAF(entry))
- retval = TSGT( query, &(key->lower) );
- else
- retval = TSGE( query, &(key->lower) );
- break;
- case BTEqualStrategyNumber:
- /* in leaf page key->lower always = key->upper */
- if (GIST_LEAF(entry))
- retval = TSEQ( query, &(key->lower));
- else
- retval = ( TSLE( &(key->lower), query ) && TSLE( query, &(key->upper) ) );
- break;
- case BTGreaterStrategyNumber:
- if (GIST_LEAF(entry))
- retval = TSLT( query, &(key->upper) );
- else
- retval = TSLE( query, &(key->upper) );
- break;
- case BTGreaterEqualStrategyNumber:
- retval = TSLE( query, &(key->upper) );
- break;
- default:
- retval = FALSE;
- }
- PG_RETURN_BOOL(retval);
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ Timestamp *query = (Timestamp *) PG_GETARG_POINTER(1);
+ StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+ bool retval;
+ TSKEY *key;
+
+ /*
+ * * if entry is not leaf, use gbox_internal_consistent, * else use
+ * gbox_leaf_consistent
+ */
+ if (!entry->key)
+ return FALSE;
+ key = (TSKEY *) DatumGetPointer(entry->key);
+
+ switch (strategy)
+ {
+ case BTLessEqualStrategyNumber:
+ retval = TSGE(query, &(key->lower));
+ break;
+ case BTLessStrategyNumber:
+ if (GIST_LEAF(entry))
+ retval = TSGT(query, &(key->lower));
+ else
+ retval = TSGE(query, &(key->lower));
+ break;
+ case BTEqualStrategyNumber:
+ /* in leaf page key->lower always = key->upper */
+ if (GIST_LEAF(entry))
+ retval = TSEQ(query, &(key->lower));
+ else
+ retval = (TSLE(&(key->lower), query) && TSLE(query, &(key->upper)));
+ break;
+ case BTGreaterStrategyNumber:
+ if (GIST_LEAF(entry))
+ retval = TSLT(query, &(key->upper));
+ else
+ retval = TSLE(query, &(key->upper));
+ break;
+ case BTGreaterEqualStrategyNumber:
+ retval = TSLE(query, &(key->upper));
+ break;
+ default:
+ retval = FALSE;
+ }
+ PG_RETURN_BOOL(retval);
}
Datum
gts_union(PG_FUNCTION_ARGS)
{
- bytea *entryvec = (bytea*) PG_GETARG_POINTER(0);
- int i, numranges;
- TSKEY *cur, *out=palloc(sizeof(TSKEY));
-
- numranges = (VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY);
- *(int*) PG_GETARG_POINTER(1) = sizeof(TSKEY);
-
- cur = (TSKEY *)DatumGetPointer( (((GISTENTRY *)(VARDATA(entryvec)))[0].key) );
- out->lower = cur->lower;
- out->upper = cur->upper;
-
- for (i = 1; i < numranges; i++) {
- cur = (TSKEY *)DatumGetPointer( (((GISTENTRY *)(VARDATA(entryvec)))[i].key) );
- if ( TSGT( &out->lower, &cur->lower ) ) out->lower = cur->lower;
- if ( TSLT( &out->upper, &cur->upper ) ) out->upper = cur->upper;
- }
+ bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
+ int i,
+ numranges;
+ TSKEY *cur,
+ *out = palloc(sizeof(TSKEY));
+
+ numranges = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY);
+ *(int *) PG_GETARG_POINTER(1) = sizeof(TSKEY);
+
+ cur = (TSKEY *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[0].key));
+ out->lower = cur->lower;
+ out->upper = cur->upper;
+
+ for (i = 1; i < numranges; i++)
+ {
+ cur = (TSKEY *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i].key));
+ if (TSGT(&out->lower, &cur->lower))
+ out->lower = cur->lower;
+ if (TSLT(&out->upper, &cur->upper))
+ out->upper = cur->upper;
+ }
- PG_RETURN_POINTER( out );
+ PG_RETURN_POINTER(out);
}
Datum
gts_penalty(PG_FUNCTION_ARGS)
{
- TSKEY *origentry = (TSKEY*) DatumGetPointer( ((GISTENTRY*) PG_GETARG_POINTER(0))->key );
- TSKEY *newentry = (TSKEY*) DatumGetPointer( ((GISTENTRY*) PG_GETARG_POINTER(1))->key );
- float *result = (float*) PG_GETARG_POINTER(2);
- Interval *intr;
+ TSKEY *origentry = (TSKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
+ TSKEY *newentry = (TSKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
+ float *result = (float *) PG_GETARG_POINTER(2);
+ Interval *intr;
- intr = DatumGetIntervalP( DirectFunctionCall2(
- timestamp_mi,
- TimestampGetDatum( newentry->upper ),
- TimestampGetDatum( origentry->upper )) );
+ intr = DatumGetIntervalP(DirectFunctionCall2(
+ timestamp_mi,
+ TimestampGetDatum(newentry->upper),
+ TimestampGetDatum(origentry->upper)));
/* see interval_larger */
- *result = Max( intr->time+intr->month * (30.0 * 86400),0 );
- pfree( intr );
-
- intr = DatumGetIntervalP( DirectFunctionCall2(
- timestamp_mi,
- TimestampGetDatum( origentry->lower ),
- TimestampGetDatum( newentry->lower )) );
+ *result = Max(intr->time + intr->month * (30.0 * 86400), 0);
+ pfree(intr);
+
+ intr = DatumGetIntervalP(DirectFunctionCall2(
+ timestamp_mi,
+ TimestampGetDatum(origentry->lower),
+ TimestampGetDatum(newentry->lower)));
/* see interval_larger */
- *result += Max( intr->time+intr->month * (30.0 * 86400),0 );
- pfree( intr );
-
- PG_RETURN_POINTER( result );
+ *result += Max(intr->time + intr->month * (30.0 * 86400), 0);
+ pfree(intr);
+
+ PG_RETURN_POINTER(result);
}
Datum
gts_picksplit(PG_FUNCTION_ARGS)
{
- PG_RETURN_POINTER( btree_picksplit(
- (bytea*)PG_GETARG_POINTER(0),
- (GIST_SPLITVEC*)PG_GETARG_POINTER(1),
- gts_binary_union,
- tskey_cmp
- ) );
+ PG_RETURN_POINTER(btree_picksplit(
+ (bytea *) PG_GETARG_POINTER(0),
+ (GIST_SPLITVEC *) PG_GETARG_POINTER(1),
+ gts_binary_union,
+ tskey_cmp
+ ));
}
Datum
gts_same(PG_FUNCTION_ARGS)
{
- TSKEY *b1 = (TSKEY*) PG_GETARG_POINTER(0);
- TSKEY *b2 = (TSKEY*) PG_GETARG_POINTER(1);
-
- bool *result = (bool*) PG_GETARG_POINTER(2);
- if ( b1 && b2 )
- *result = ( TSEQ( &(b1->lower), &(b2->lower) ) && TSEQ( &(b1->upper), &(b2->upper) ) ) ? TRUE : FALSE;
- else
- *result = ( b1==NULL && b2==NULL ) ? TRUE : FALSE;
- PG_RETURN_POINTER(result);
+ TSKEY *b1 = (TSKEY *) PG_GETARG_POINTER(0);
+ TSKEY *b2 = (TSKEY *) PG_GETARG_POINTER(1);
+
+ bool *result = (bool *) PG_GETARG_POINTER(2);
+
+ if (b1 && b2)
+ *result = (TSEQ(&(b1->lower), &(b2->lower)) && TSEQ(&(b1->upper), &(b2->upper))) ? TRUE : FALSE;
+ else
+ *result = (b1 == NULL && b2 == NULL) ? TRUE : FALSE;
+ PG_RETURN_POINTER(result);
}
-static void
+static void
gts_binary_union(Datum *r1, char *r2)
{
- TSKEY *b1;
- TSKEY *b2 = (TSKEY*) r2;
-
- if ( ! DatumGetPointer( *r1 ) ) {
- *r1 = PointerGetDatum( palloc( sizeof(TSKEY) ) );
- b1 = (TSKEY*)DatumGetPointer( *r1 );
- b1->upper = b2->upper;
- b1->lower = b2->lower;
- } else {
- b1 = (TSKEY*)DatumGetPointer( *r1 );
-
- b1->lower = ( TSGT( &b1->lower, &b2->lower) ) ?
- b2->lower : b1->lower;
- b1->upper = ( TSGT( &b1->upper, &b2->upper) ) ?
- b1->upper : b2->upper;
- }
+ TSKEY *b1;
+ TSKEY *b2 = (TSKEY *) r2;
+
+ if (!DatumGetPointer(*r1))
+ {
+ *r1 = PointerGetDatum(palloc(sizeof(TSKEY)));
+ b1 = (TSKEY *) DatumGetPointer(*r1);
+ b1->upper = b2->upper;
+ b1->lower = b2->lower;
+ }
+ else
+ {
+ b1 = (TSKEY *) DatumGetPointer(*r1);
+
+ b1->lower = (TSGT(&b1->lower, &b2->lower)) ?
+ b2->lower : b1->lower;
+ b1->upper = (TSGT(&b1->upper, &b2->upper)) ?
+ b1->upper : b2->upper;
+ }
}
-static int
-tskey_cmp(const void *a, const void *b) {
- return DatumGetInt32(
- DirectFunctionCall2(
- timestamp_cmp,
- TimestampGetDatum( ((TSKEY*)(((RIX*)a)->r))->lower ),
- TimestampGetDatum( ((TSKEY*)(((RIX*)b)->r))->lower )
- )
- );
+static int
+tskey_cmp(const void *a, const void *b)
+{
+ return DatumGetInt32(
+ DirectFunctionCall2(
+ timestamp_cmp,
+ TimestampGetDatum(((TSKEY *) (((RIX *) a)->r))->lower),
+ TimestampGetDatum(((TSKEY *) (((RIX *) b)->r))->lower)
+ )
+ );
}
/**************************************************
@@ -466,43 +499,48 @@ tskey_cmp(const void *a, const void *b) {
static GIST_SPLITVEC *
btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v, BINARY_UNION bu, CMPFUNC cmp)
{
- OffsetNumber i;
- RIX *array;
- OffsetNumber maxoff;
- int nbytes;
-
- maxoff = ((VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY)) - 1;
- nbytes = (maxoff + 2) * sizeof(OffsetNumber);
- v->spl_left = (OffsetNumber *) palloc(nbytes);
- v->spl_right = (OffsetNumber *) palloc(nbytes);
- v->spl_nleft = 0;
- v->spl_nright = 0;
- v->spl_ldatum = PointerGetDatum( 0 );
- v->spl_rdatum = PointerGetDatum( 0 );
- array = (RIX*)palloc( sizeof(RIX) * (maxoff+1) );
-
- /* copy the data into RIXes, and sort the RIXes */
- for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) {
- array[i].index = i;
- array[i].r=(char *)DatumGetPointer( (((GISTENTRY *)(VARDATA(entryvec)))[i].key) );
- }
- qsort((void*)&array[FirstOffsetNumber], maxoff - FirstOffsetNumber + 1,
- sizeof(RIX), cmp);
-
- for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) {
- if (i <= (maxoff - FirstOffsetNumber + 1)/2) {
- v->spl_left[ v->spl_nleft ] = array[i].index;
- v->spl_nleft++;
- (*bu)( &v->spl_ldatum, array[i].r );
- } else {
- v->spl_right[ v->spl_nright ] = array[i].index;
- v->spl_nright++;
- (*bu)( &v->spl_rdatum, array[i].r );
- }
- }
- pfree(array);
-
- return( v );
+ OffsetNumber i;
+ RIX *array;
+ OffsetNumber maxoff;
+ int nbytes;
+
+ maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1;
+ nbytes = (maxoff + 2) * sizeof(OffsetNumber);
+ v->spl_left = (OffsetNumber *) palloc(nbytes);
+ v->spl_right = (OffsetNumber *) palloc(nbytes);
+ v->spl_nleft = 0;
+ v->spl_nright = 0;
+ v->spl_ldatum = PointerGetDatum(0);
+ v->spl_rdatum = PointerGetDatum(0);
+ array = (RIX *) palloc(sizeof(RIX) * (maxoff + 1));
+
+ /* copy the data into RIXes, and sort the RIXes */
+ for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
+ {
+ array[i].index = i;
+ array[i].r = (char *) DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i].key));
+ }
+ qsort((void *) &array[FirstOffsetNumber], maxoff - FirstOffsetNumber + 1,
+ sizeof(RIX), cmp);
+
+ for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
+ {
+ if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
+ {
+ v->spl_left[v->spl_nleft] = array[i].index;
+ v->spl_nleft++;
+ (*bu) (&v->spl_ldatum, array[i].r);
+ }
+ else
+ {
+ v->spl_right[v->spl_nright] = array[i].index;
+ v->spl_nright++;
+ (*bu) (&v->spl_rdatum, array[i].r);
+ }
+ }
+ pfree(array);
+
+ return (v);
}
/*
@@ -512,38 +550,44 @@ btree_picksplit(bytea *entryvec, GIST_SPLITVEC *v, BINARY_UNION bu, CMPFUNC cmp)
Datum
btree_decompress(PG_FUNCTION_ARGS)
{
- PG_RETURN_POINTER(PG_GETARG_POINTER(0));
+ PG_RETURN_POINTER(PG_GETARG_POINTER(0));
}
/**************************************************
* In/Out for keys, not really needed
**************************************************/
-Datum
-int4key_in(PG_FUNCTION_ARGS) {
- INT4KEY *key = palloc(sizeof(INT4KEY));
+Datum
+int4key_in(PG_FUNCTION_ARGS)
+{
+ INT4KEY *key = palloc(sizeof(INT4KEY));
- if ( sscanf( PG_GETARG_POINTER(0), "%d|%d", &(key->lower), &(key->upper)) != 2 )
+ if (sscanf(PG_GETARG_POINTER(0), "%d|%d", &(key->lower), &(key->upper)) != 2)
elog(ERROR, "Error in input format");
-
- PG_RETURN_POINTER( key );
+
+ PG_RETURN_POINTER(key);
}
-Datum int4key_out(PG_FUNCTION_ARGS) {
- INT4KEY *key = (INT4KEY *) PG_GETARG_POINTER(0);
- char *str=palloc(sizeof(char)*22);
- sprintf(str,"%d|%d", key->lower, key->upper);
- PG_RETURN_POINTER( str );
+Datum
+int4key_out(PG_FUNCTION_ARGS)
+{
+ INT4KEY *key = (INT4KEY *) PG_GETARG_POINTER(0);
+ char *str = palloc(sizeof(char) * 22);
+
+ sprintf(str, "%d|%d", key->lower, key->upper);
+ PG_RETURN_POINTER(str);
}
Datum
-tskey_in(PG_FUNCTION_ARGS) {
+tskey_in(PG_FUNCTION_ARGS)
+{
elog(ERROR, "Not implemented");
- PG_RETURN_POINTER( NULL );
+ PG_RETURN_POINTER(NULL);
}
Datum
-tskey_out(PG_FUNCTION_ARGS) {
+tskey_out(PG_FUNCTION_ARGS)
+{
elog(ERROR, "Not implemented");
- PG_RETURN_POINTER( NULL );
+ PG_RETURN_POINTER(NULL);
}
diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c
index 2c5974162bd..c7c3197c92b 100644
--- a/contrib/chkpass/chkpass.c
+++ b/contrib/chkpass/chkpass.c
@@ -4,7 +4,7 @@
* darcy@druid.net
* http://www.druid.net/darcy/
*
- * $Id: chkpass.c,v 1.4 2001/05/30 02:11:46 darcy Exp $
+ * $Id: chkpass.c,v 1.5 2001/10/25 05:49:19 momjian Exp $
* best viewed with tabs set to 4
*/
@@ -31,7 +31,7 @@
typedef struct chkpass
{
- char password[16];
+ char password[16];
} chkpass;
/*
@@ -62,12 +62,12 @@ PG_FUNCTION_INFO_V1(chkpass_in)
Datum
chkpass_in(PG_FUNCTION_ARGS)
{
- char *str = PG_GETARG_CSTRING(0);
- chkpass *result;
+ char *str = PG_GETARG_CSTRING(0);
+ chkpass *result;
char mysalt[4];
- static bool random_initialized = false;
+ static bool random_initialized = false;
static char salt_chars[] =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+ "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
/* special case to let us enter encrypted passwords */
if (*str == ':')
@@ -81,7 +81,7 @@ chkpass_in(PG_FUNCTION_ARGS)
if (verify_pass(str) != 0)
{
elog(ERROR, "chkpass_in: purported CHKPASS \"%s\" is a weak password",
- str);
+ str);
PG_RETURN_POINTER(NULL);
}
@@ -159,17 +159,18 @@ Datum
chkpass_eq(PG_FUNCTION_ARGS)
{
chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0);
- text *a2 = (text *) PG_GETARG_TEXT_P(1);
- char str[10];
- int sz = 8;
+ text *a2 = (text *) PG_GETARG_TEXT_P(1);
+ char str[10];
+ int sz = 8;
if (!a1 || !a2)
PG_RETURN_BOOL(0);
- if (a2->vl_len < 12) sz = a2->vl_len - 4;
+ if (a2->vl_len < 12)
+ sz = a2->vl_len - 4;
strncpy(str, a2->vl_dat, sz);
str[sz] = 0;
- PG_RETURN_BOOL (strcmp(a1->password, crypt(str, a1->password)) == 0);
+ PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) == 0);
}
PG_FUNCTION_INFO_V1(chkpass_ne)
@@ -177,14 +178,15 @@ Datum
chkpass_ne(PG_FUNCTION_ARGS)
{
chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0);
- text *a2 = (text *) PG_GETARG_TEXT_P(1);
- char str[10];
- int sz = 8;
+ text *a2 = (text *) PG_GETARG_TEXT_P(1);
+ char str[10];
+ int sz = 8;
- if (!a1 || !a2) PG_RETURN_BOOL(0);
- if (a2->vl_len < 12) sz = a2->vl_len - 4;
+ if (!a1 || !a2)
+ PG_RETURN_BOOL(0);
+ if (a2->vl_len < 12)
+ sz = a2->vl_len - 4;
strncpy(str, a2->vl_dat, sz);
str[sz] = 0;
- PG_RETURN_BOOL (strcmp(a1->password, crypt(str, a1->password)) != 0);
+ PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) != 0);
}
-
diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c
index 72f6e5a0695..c97e86d3b40 100644
--- a/contrib/cube/cube.c
+++ b/contrib/cube/cube.c
@@ -166,7 +166,6 @@ g_cube_consistent(GISTENTRY *entry,
NDBOX * query,
StrategyNumber strategy)
{
-
/*
* if entry is not leaf, use g_cube_internal_consistent, else use
* g_cube_leaf_consistent
@@ -206,7 +205,7 @@ g_cube_union(bytea *entryvec, int *sizep)
for (i = 1; i < numranges; i++)
{
out = g_cube_binary_union(tmp, (NDBOX *)
- DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i]).key),
+ DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i]).key),
sizep);
if (i > 1)
pfree(tmp);
@@ -220,13 +219,13 @@ g_cube_union(bytea *entryvec, int *sizep)
** GiST Compress and Decompress methods for boxes
** do not do anything.
*/
-GISTENTRY *
+GISTENTRY *
g_cube_compress(GISTENTRY *entry)
{
return (entry);
}
-GISTENTRY *
+GISTENTRY *
g_cube_decompress(GISTENTRY *entry)
{
return (entry);
@@ -365,7 +364,6 @@ g_cube_picksplit(bytea *entryvec,
maxoff = OffsetNumberNext(maxoff);
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
-
/*
* If we've already decided where to place this item, just put it
* on the right list. Otherwise, we need to figure out which page
@@ -1001,7 +999,6 @@ cube_contains(NDBOX * box_a, NDBOX * box_b)
if (a->dim < b->dim)
{
-
/*
* the further comparisons will make sense if the excess
* dimensions of (b) were zeroes
diff --git a/contrib/dbase/dbf.c b/contrib/dbase/dbf.c
index 9ed0c475d12..053e9adffbf 100644
--- a/contrib/dbase/dbf.c
+++ b/contrib/dbase/dbf.c
@@ -21,159 +21,171 @@
/* open a dbf-file, get it's field-info and store this information */
-dbhead *dbf_open(u_char *file, int flags) {
- int file_no;
- dbhead *dbh;
- f_descr *fields;
- dbf_header *head;
- dbf_field *fieldc;
+dbhead *
+dbf_open(u_char *file, int flags)
+{
+ int file_no;
+ dbhead *dbh;
+ f_descr *fields;
+ dbf_header *head;
+ dbf_field *fieldc;
int t;
- if ((dbh = (dbhead *)malloc(sizeof(dbhead))) == NULL) {
- return (dbhead *)DBF_ERROR;
- }
+ if ((dbh = (dbhead *) malloc(sizeof(dbhead))) == NULL)
+ return (dbhead *) DBF_ERROR;
- if ((head = (dbf_header *)malloc(sizeof(dbf_header))) == NULL) {
+ if ((head = (dbf_header *) malloc(sizeof(dbf_header))) == NULL)
+ {
free(dbh);
- return (dbhead *)DBF_ERROR;
+ return (dbhead *) DBF_ERROR;
}
- if ((fieldc = (dbf_field *)malloc(sizeof(dbf_field))) == NULL) {
+ if ((fieldc = (dbf_field *) malloc(sizeof(dbf_field))) == NULL)
+ {
free(head);
free(dbh);
- return (dbhead *)DBF_ERROR;
+ return (dbhead *) DBF_ERROR;
}
- if ((file_no = open(file, flags)) == -1) {
+ if ((file_no = open(file, flags)) == -1)
+ {
free(fieldc);
free(head);
free(dbh);
- return (dbhead *)DBF_ERROR;
+ return (dbhead *) DBF_ERROR;
}
/* read in the disk-header */
- if (read(file_no, head, sizeof(dbf_header)) == -1) {
+ if (read(file_no, head, sizeof(dbf_header)) == -1)
+ {
close(file_no);
free(fieldc);
free(head);
free(dbh);
- return (dbhead *)DBF_ERROR;
+ return (dbhead *) DBF_ERROR;
}
- if (!(head->dbh_dbt & DBH_NORMAL)) {
- close(file_no);
- free(fieldc);
- free(head);
- free(dbh);
- return (dbhead *)DBF_ERROR;
+ if (!(head->dbh_dbt & DBH_NORMAL))
+ {
+ close(file_no);
+ free(fieldc);
+ free(head);
+ free(dbh);
+ return (dbhead *) DBF_ERROR;
}
dbh->db_fd = file_no;
- if (head->dbh_dbt & DBH_MEMO) {
+ if (head->dbh_dbt & DBH_MEMO)
dbh->db_memo = 1;
- } else {
+ else
dbh->db_memo = 0;
- }
dbh->db_year = head->dbh_year;
dbh->db_month = head->dbh_month;
dbh->db_day = head->dbh_day;
- dbh->db_hlen = get_short((u_char *)&head->dbh_hlen);
- dbh->db_records = get_long((u_char *)&head->dbh_records);
+ dbh->db_hlen = get_short((u_char *) &head->dbh_hlen);
+ dbh->db_records = get_long((u_char *) &head->dbh_records);
dbh->db_currec = 0;
- dbh->db_rlen = get_short((u_char *)&head->dbh_rlen);
+ dbh->db_rlen = get_short((u_char *) &head->dbh_rlen);
dbh->db_nfields = (dbh->db_hlen - sizeof(dbf_header)) / sizeof(dbf_field);
- /* dbh->db_hlen - sizeof(dbf_header) isn't the
- correct size, cos dbh->hlen is in fact
- a little more cos of the 0x0D (and
- possibly another byte, 0x4E, I have
- seen this somewhere). Because of rounding
- everything turns out right :) */
-
- if ((fields = (f_descr *)calloc(dbh->db_nfields, sizeof(f_descr)))
- == NULL) {
- close(file_no);
- free(fieldc);
- free(head);
- free(dbh);
- return (dbhead *)DBF_ERROR;
+ /*
+ * dbh->db_hlen - sizeof(dbf_header) isn't the correct size, cos
+ * dbh->hlen is in fact a little more cos of the 0x0D (and possibly
+ * another byte, 0x4E, I have seen this somewhere). Because of
+ * rounding everything turns out right :)
+ */
+
+ if ((fields = (f_descr *) calloc(dbh->db_nfields, sizeof(f_descr)))
+ == NULL)
+ {
+ close(file_no);
+ free(fieldc);
+ free(head);
+ free(dbh);
+ return (dbhead *) DBF_ERROR;
}
- for (t = 0; t < dbh->db_nfields; t++) {
+ for (t = 0; t < dbh->db_nfields; t++)
+ {
/* Maybe I have calculated the number of fields incorrectly. This can happen
when programs reserve lots of space at the end of the header for future
- expansion. This will catch this situation */
- if (fields[t].db_name[0] == 0x0D) {
+ expansion. This will catch this situation */
+ if (fields[t].db_name[0] == 0x0D)
+ {
dbh->db_nfields = t;
break;
}
read(file_no, fieldc, sizeof(dbf_field));
strncpy(fields[t].db_name, fieldc->dbf_name, DBF_NAMELEN);
- fields[t].db_type = fieldc->dbf_type;
+ fields[t].db_type = fieldc->dbf_type;
fields[t].db_flen = fieldc->dbf_flen;
- fields[t].db_dec = fieldc->dbf_dec;
+ fields[t].db_dec = fieldc->dbf_dec;
}
dbh->db_offset = dbh->db_hlen;
dbh->db_fields = fields;
- if ((dbh->db_buff = (u_char *)malloc(dbh->db_rlen)) == NULL) {
- return (dbhead *)DBF_ERROR;
- }
+ if ((dbh->db_buff = (u_char *) malloc(dbh->db_rlen)) == NULL)
+ return (dbhead *) DBF_ERROR;
- free(fieldc);
- free(head);
+ free(fieldc);
+ free(head);
return dbh;
}
-int dbf_write_head(dbhead *dbh) {
+int
+dbf_write_head(dbhead * dbh)
+{
dbf_header head;
- time_t now;
- struct tm *dbf_time;
+ time_t now;
+ struct tm *dbf_time;
- if (lseek(dbh->db_fd, 0, SEEK_SET) == -1) {
+ if (lseek(dbh->db_fd, 0, SEEK_SET) == -1)
return DBF_ERROR;
- }
/* fill up the diskheader */
/* Set dataarea of head to '\0' */
- memset(&head,'\0',sizeof(dbf_header));
+ memset(&head, '\0', sizeof(dbf_header));
head.dbh_dbt = DBH_NORMAL;
- if (dbh->db_memo) head.dbh_dbt = DBH_MEMO;
+ if (dbh->db_memo)
+ head.dbh_dbt = DBH_MEMO;
- now = time((time_t *)NULL);
+ now = time((time_t *) NULL);
dbf_time = localtime(&now);
head.dbh_year = dbf_time->tm_year;
- head.dbh_month = dbf_time->tm_mon + 1; /* Months since January + 1 */
+ head.dbh_month = dbf_time->tm_mon + 1; /* Months since January +
+ * 1 */
head.dbh_day = dbf_time->tm_mday;
put_long(head.dbh_records, dbh->db_records);
put_short(head.dbh_hlen, dbh->db_hlen);
put_short(head.dbh_rlen, dbh->db_rlen);
-
+
if (write(dbh->db_fd, &head, sizeof(dbf_header)) != sizeof(dbf_header))
return DBF_ERROR;
return 0;
}
-int dbf_put_fields(dbhead *dbh) {
+int
+dbf_put_fields(dbhead * dbh)
+{
dbf_field field;
u_long t;
u_char end = 0x0D;
- if (lseek(dbh->db_fd, sizeof(dbf_header), SEEK_SET) == -1) {
+ if (lseek(dbh->db_fd, sizeof(dbf_header), SEEK_SET) == -1)
return DBF_ERROR;
- }
/* Set dataarea of field to '\0' */
- memset(&field,'\0',sizeof(dbf_field));
+ memset(&field, '\0', sizeof(dbf_field));
- for (t = 0; t < dbh->db_nfields; t++) {
+ for (t = 0; t < dbh->db_nfields; t++)
+ {
strncpy(field.dbf_name, dbh->db_fields[t].db_name, DBF_NAMELEN - 1);
field.dbf_type = dbh->db_fields[t].db_type;
field.dbf_flen = dbh->db_fields[t].db_flen;
@@ -189,16 +201,18 @@ int dbf_put_fields(dbhead *dbh) {
return 0;
}
-int dbf_add_field(dbhead *dbh, u_char *name, u_char type,
- u_char length, u_char dec) {
-f_descr *ptr;
-u_char *foo;
-u_long size, field_no;
+int
+dbf_add_field(dbhead * dbh, u_char *name, u_char type,
+ u_char length, u_char dec)
+{
+ f_descr *ptr;
+ u_char *foo;
+ u_long size,
+ field_no;
size = (dbh->db_nfields + 1) * sizeof(f_descr);
- if (!(ptr = (f_descr *) realloc(dbh->db_fields, size))) {
+ if (!(ptr = (f_descr *) realloc(dbh->db_fields, size)))
return DBF_ERROR;
- }
dbh->db_fields = ptr;
field_no = dbh->db_nfields;
@@ -211,71 +225,81 @@ u_long size, field_no;
dbh->db_hlen += sizeof(dbf_field);
dbh->db_rlen += length;
- if (!(foo = (u_char *) realloc(dbh->db_buff, dbh->db_rlen))) {
+ if (!(foo = (u_char *) realloc(dbh->db_buff, dbh->db_rlen)))
return DBF_ERROR;
- }
dbh->db_buff = foo;
return 0;
}
-dbhead *dbf_open_new(u_char *name, int flags) {
-dbhead *dbh;
+dbhead *
+dbf_open_new(u_char *name, int flags)
+{
+ dbhead *dbh;
- if (!(dbh = (dbhead *)malloc(sizeof(dbhead)))) {
- return (dbhead *)DBF_ERROR;
- }
+ if (!(dbh = (dbhead *) malloc(sizeof(dbhead))))
+ return (dbhead *) DBF_ERROR;
- if (flags & O_CREAT) {
- if ((dbh->db_fd = open(name, flags, DBF_FILE_MODE)) == -1) {
+ if (flags & O_CREAT)
+ {
+ if ((dbh->db_fd = open(name, flags, DBF_FILE_MODE)) == -1)
+ {
free(dbh);
- return (dbhead *)DBF_ERROR;
+ return (dbhead *) DBF_ERROR;
}
- } else {
- if ((dbh->db_fd = open(name, flags)) == -1) {
+ }
+ else
+ {
+ if ((dbh->db_fd = open(name, flags)) == -1)
+ {
free(dbh);
- return (dbhead *)DBF_ERROR;
+ return (dbhead *) DBF_ERROR;
}
}
-
+
dbh->db_offset = 0;
dbh->db_memo = 0;
dbh->db_year = 0;
dbh->db_month = 0;
- dbh->db_day = 0;
+ dbh->db_day = 0;
dbh->db_hlen = sizeof(dbf_header) + 1;
dbh->db_records = 0;
dbh->db_currec = 0;
dbh->db_rlen = 1;
dbh->db_nfields = 0;
dbh->db_buff = NULL;
- dbh->db_fields = (f_descr *)NULL;
+ dbh->db_fields = (f_descr *) NULL;
return dbh;
}
-
-void dbf_close(dbhead *dbh) {
- int t;
+
+void
+dbf_close(dbhead * dbh)
+{
+ int t;
close(dbh->db_fd);
- for (t = 0; t < dbh->db_nfields; t++) {
+ for (t = 0; t < dbh->db_nfields; t++)
free(&dbh->db_fields[t]);
- }
- if (dbh->db_buff != NULL) {
+ if (dbh->db_buff != NULL)
free(dbh->db_buff);
- }
free(dbh);
}
-
-int dbf_get_record(dbhead *dbh, field *fields, u_long rec) {
- u_char *data;
- int t, i, offset;
- u_char *dbffield, *end;
+
+int
+dbf_get_record(dbhead * dbh, field * fields, u_long rec)
+{
+ u_char *data;
+ int t,
+ i,
+ offset;
+ u_char *dbffield,
+ *end;
/* calculate at which offset we have to read. *DON'T* forget the
0x0D which seperates field-descriptions from records!
@@ -284,112 +308,133 @@ int dbf_get_record(dbhead *dbh, field *fields, u_long rec) {
*/
offset = dbh->db_hlen + (rec * dbh->db_rlen);
- if (lseek(dbh->db_fd, offset, SEEK_SET) == -1) {
+ if (lseek(dbh->db_fd, offset, SEEK_SET) == -1)
+ {
lseek(dbh->db_fd, 0, SEEK_SET);
dbh->db_offset = 0;
return DBF_ERROR;
}
- dbh->db_offset = offset;
- dbh->db_currec = rec;
+ dbh->db_offset = offset;
+ dbh->db_currec = rec;
data = dbh->db_buff;
- read(dbh->db_fd, data, dbh->db_rlen);
-
- if (data[0] == DBF_DELETED) {
- return DBF_DELETED;
- }
-
- dbffield = &data[1];
- for (t = 0; t < dbh->db_nfields; t++) {
- strncpy(fields[t].db_name, dbh->db_fields[t].db_name, DBF_NAMELEN);
- fields[t].db_type = dbh->db_fields[t].db_type;
- fields[t].db_flen = dbh->db_fields[t].db_flen;
- fields[t].db_dec = dbh->db_fields[t].db_dec;
-
- if (fields[t].db_type == 'C') {
- end = &dbffield[fields[t].db_flen - 1 ];
- i = fields[t].db_flen;
- while (( i > 0) && ((*end < 0x21) || (*end > 0x7E))) {
- end--;
- i--;
- }
- strncpy(fields[t].db_contents, dbffield, i);
- fields[t].db_contents[i] = '\0';
- } else {
- end = dbffield;
- i = fields[t].db_flen;
- while (( i > 0) && ((*end < 0x21) || (*end > 0x7E))) {
- end++;
- i--;
- }
- strncpy(fields[t].db_contents, end, i);
- fields[t].db_contents[i] = '\0';
- }
+ read(dbh->db_fd, data, dbh->db_rlen);
+
+ if (data[0] == DBF_DELETED)
+ return DBF_DELETED;
+
+ dbffield = &data[1];
+ for (t = 0; t < dbh->db_nfields; t++)
+ {
+ strncpy(fields[t].db_name, dbh->db_fields[t].db_name, DBF_NAMELEN);
+ fields[t].db_type = dbh->db_fields[t].db_type;
+ fields[t].db_flen = dbh->db_fields[t].db_flen;
+ fields[t].db_dec = dbh->db_fields[t].db_dec;
+
+ if (fields[t].db_type == 'C')
+ {
+ end = &dbffield[fields[t].db_flen - 1];
+ i = fields[t].db_flen;
+ while ((i > 0) && ((*end < 0x21) || (*end > 0x7E)))
+ {
+ end--;
+ i--;
+ }
+ strncpy(fields[t].db_contents, dbffield, i);
+ fields[t].db_contents[i] = '\0';
+ }
+ else
+ {
+ end = dbffield;
+ i = fields[t].db_flen;
+ while ((i > 0) && ((*end < 0x21) || (*end > 0x7E)))
+ {
+ end++;
+ i--;
+ }
+ strncpy(fields[t].db_contents, end, i);
+ fields[t].db_contents[i] = '\0';
+ }
- dbffield += fields[t].db_flen;
+ dbffield += fields[t].db_flen;
}
- dbh->db_offset += dbh->db_rlen;
+ dbh->db_offset += dbh->db_rlen;
return DBF_VALID;
}
-field *dbf_build_record(dbhead *dbh) {
- int t;
- field *fields;
+field *
+dbf_build_record(dbhead * dbh)
+{
+ int t;
+ field *fields;
- if (!(fields = (field *)calloc(dbh->db_nfields, sizeof(field)))) {
- return (field *)DBF_ERROR;
- }
-
- for ( t = 0; t < dbh->db_nfields; t++) {
+ if (!(fields = (field *) calloc(dbh->db_nfields, sizeof(field))))
+ return (field *) DBF_ERROR;
+
+ for (t = 0; t < dbh->db_nfields; t++)
+ {
if (!(fields[t].db_contents =
- (u_char *)malloc(dbh->db_fields[t].db_flen + 1))) {
- for (t = 0; t < dbh->db_nfields; t++) {
- if (fields[t].db_contents != 0) {
+ (u_char *) malloc(dbh->db_fields[t].db_flen + 1)))
+ {
+ for (t = 0; t < dbh->db_nfields; t++)
+ {
+ if (fields[t].db_contents != 0)
+ {
free(fields[t].db_contents);
free(fields);
}
- return (field *)DBF_ERROR;
+ return (field *) DBF_ERROR;
}
}
strncpy(fields[t].db_name, dbh->db_fields[t].db_name, DBF_NAMELEN);
fields[t].db_type = dbh->db_fields[t].db_type;
fields[t].db_flen = dbh->db_fields[t].db_flen;
- fields[t].db_dec = dbh->db_fields[t].db_dec;
+ fields[t].db_dec = dbh->db_fields[t].db_dec;
}
return fields;
}
-void dbf_free_record(dbhead *dbh, field *rec) {
- int t;
+void
+dbf_free_record(dbhead * dbh, field * rec)
+{
+ int t;
- for ( t = 0; t < dbh->db_nfields; t++) {
+ for (t = 0; t < dbh->db_nfields; t++)
free(rec[t].db_contents);
- }
free(rec);
}
-int dbf_put_record(dbhead *dbh, field *rec, u_long where) {
- u_long offset, new, idx, t, h, length;
- u_char *data, end = 0x1a;
- double fl;
- u_char foo[128], format[32];
-
-/* offset: offset in file for this record
+int
+dbf_put_record(dbhead * dbh, field * rec, u_long where)
+{
+ u_long offset,
+ new,
+ idx,
+ t,
+ h,
+ length;
+ u_char *data,
+ end = 0x1a;
+ double fl;
+ u_char foo[128],
+ format[32];
+
+/* offset: offset in file for this record
new: real offset after lseek
idx: index to which place we are inside the 'hardcore'-data for this
record
t: field-counter
data: the hardcore-data that is put on disk
h: index into the field-part in the hardcore-data
- length: length of the data to copy
+ length: length of the data to copy
fl: a float used to get the right precision with real numbers
foo: copy of db_contents when field is not 'C'
- format: sprintf format-string to get the right precision with real numbers
+ format: sprintf format-string to get the right precision with real numbers
NOTE: this declaration of 'foo' can cause overflow when the contents-field
is longer the 127 chars (which is highly unlikely, cos it is not used
@@ -399,16 +444,17 @@ int dbf_put_record(dbhead *dbh, field *rec, u_long where) {
DO A SEEK_END WITH 0!!!!!! USE -1 !!!!!!!!!!
*/
- if (where > dbh->db_records) {
- if ((new = lseek(dbh->db_fd, -1, SEEK_END)) == -1) {
+ if (where > dbh->db_records)
+ {
+ if ((new = lseek(dbh->db_fd, -1, SEEK_END)) == -1)
return DBF_ERROR;
- }
dbh->db_records++;
- } else {
+ }
+ else
+ {
offset = dbh->db_hlen + (where * dbh->db_rlen);
- if ((new = lseek(dbh->db_fd, offset, SEEK_SET)) == -1) {
+ if ((new = lseek(dbh->db_fd, offset, SEEK_SET)) == -1)
return DBF_ERROR;
- }
}
dbh->db_offset = new;
@@ -416,49 +462,54 @@ int dbf_put_record(dbhead *dbh, field *rec, u_long where) {
data = dbh->db_buff;
/* Set dataarea of data to ' ' (space) */
- memset(data,' ',dbh->db_rlen);
+ memset(data, ' ', dbh->db_rlen);
/* data[0] = DBF_VALID; */
idx = 1;
- for (t = 0; t < dbh->db_nfields; t++) {
+ for (t = 0; t < dbh->db_nfields; t++)
+ {
/* if field is empty, don't do a thing */
- if (rec[t].db_contents[0] != '\0') {
+ if (rec[t].db_contents[0] != '\0')
+ {
/* Handle text */
- if (rec[t].db_type == 'C') {
- if (strlen(rec[t].db_contents) > rec[t].db_flen) {
- length = rec[t].db_flen;
- } else {
- length = strlen(rec[t].db_contents);
+ if (rec[t].db_type == 'C')
+ {
+ if (strlen(rec[t].db_contents) > rec[t].db_flen)
+ length = rec[t].db_flen;
+ else
+ length = strlen(rec[t].db_contents);
+ strncpy(data + idx, rec[t].db_contents, length);
}
- strncpy(data+idx, rec[t].db_contents, length);
- } else {
+ else
+ {
/* Handle the rest */
/* Numeric is special, because of real numbers */
- if ((rec[t].db_type == 'N') && (rec[t].db_dec != 0)) {
- fl = atof(rec[t].db_contents);
- sprintf(format, "%%.%df", rec[t].db_dec);
- sprintf(foo, format, fl);
- } else {
- strcpy(foo, rec[t].db_contents);
- }
- if (strlen(foo) > rec[t].db_flen) {
- length = rec[t].db_flen;
- } else {
- length = strlen(foo);
+ if ((rec[t].db_type == 'N') && (rec[t].db_dec != 0))
+ {
+ fl = atof(rec[t].db_contents);
+ sprintf(format, "%%.%df", rec[t].db_dec);
+ sprintf(foo, format, fl);
+ }
+ else
+ strcpy(foo, rec[t].db_contents);
+ if (strlen(foo) > rec[t].db_flen)
+ length = rec[t].db_flen;
+ else
+ length = strlen(foo);
+ h = rec[t].db_flen - length;
+ strncpy(data + idx + h, foo, length);
}
- h = rec[t].db_flen - length;
- strncpy(data+idx+h, foo, length);
}
- }
- idx += rec[t].db_flen;
+ idx += rec[t].db_flen;
}
if (write(dbh->db_fd, data, dbh->db_rlen) != dbh->db_rlen)
return DBF_ERROR;
/* There's a 0x1A at the end of a dbf-file */
- if (where == dbh->db_records) {
+ if (where == dbh->db_records)
+ {
if (write(dbh->db_fd, &end, 1) != 1)
return DBF_ERROR;
}
diff --git a/contrib/dbase/dbf.h b/contrib/dbase/dbf.h
index a6e92517ead..b54093bacee 100644
--- a/contrib/dbase/dbf.h
+++ b/contrib/dbase/dbf.h
@@ -26,7 +26,7 @@
/* maximum fieldname-length */
-#define DBF_NAMELEN 11
+#define DBF_NAMELEN 11
/* magic-cookies for the file */
@@ -37,89 +37,93 @@
#define DBF_ERROR -1
#define DBF_VALID 0x20
-#define DBF_DELETED 0x2A
+#define DBF_DELETED 0x2A
/* diskheader */
-typedef struct {
- u_char dbh_dbt; /* indentification field */
- u_char dbh_year; /* last modification-date */
- u_char dbh_month;
- u_char dbh_day;
- u_char dbh_records[4]; /* number of records */
- u_char dbh_hlen[2]; /* length of this header */
- u_char dbh_rlen[2]; /* length of a record */
- u_char dbh_stub[20]; /* misc stuff we don't need */
-} dbf_header;
+typedef struct
+{
+ u_char dbh_dbt; /* indentification field */
+ u_char dbh_year; /* last modification-date */
+ u_char dbh_month;
+ u_char dbh_day;
+ u_char dbh_records[4]; /* number of records */
+ u_char dbh_hlen[2]; /* length of this header */
+ u_char dbh_rlen[2]; /* length of a record */
+ u_char dbh_stub[20]; /* misc stuff we don't need */
+} dbf_header;
/* disk field-description */
-typedef struct {
- u_char dbf_name[DBF_NAMELEN]; /* field-name terminated with \0 */
- u_char dbf_type; /* field-type */
- u_char dbf_reserved[4]; /* some reserved stuff */
- u_char dbf_flen; /* field-length */
- u_char dbf_dec; /* number of decimal positions if
- type is 'N' */
- u_char dbf_stub[14]; /* stuff we don't need */
-} dbf_field;
+typedef struct
+{
+ u_char dbf_name[DBF_NAMELEN]; /* field-name terminated with \0 */
+ u_char dbf_type; /* field-type */
+ u_char dbf_reserved[4]; /* some reserved stuff */
+ u_char dbf_flen; /* field-length */
+ u_char dbf_dec; /* number of decimal positions if type is
+ * 'N' */
+ u_char dbf_stub[14]; /* stuff we don't need */
+} dbf_field;
/* memory field-description */
-typedef struct {
- u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */
- u_char db_type; /* field-type */
- u_char db_flen; /* field-length */
- u_char db_dec; /* number of decimal positions */
-} f_descr;
+typedef struct
+{
+ u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */
+ u_char db_type; /* field-type */
+ u_char db_flen; /* field-length */
+ u_char db_dec; /* number of decimal positions */
+} f_descr;
/* memory dfb-header */
-typedef struct {
- int db_fd; /* file-descriptor */
- u_long db_offset; /* current offset in file */
- u_char db_memo; /* memo-file present */
- u_char db_year; /* last update as YYMMDD */
- u_char db_month;
- u_char db_day;
- u_long db_hlen; /* length of the diskheader, for
- calculating the offsets */
- u_long db_records; /* number of records */
- u_long db_currec; /* current record-number starting
- at 0 */
- u_short db_rlen; /* length of the record */
- u_char db_nfields; /* number of fields */
- u_char *db_buff; /* record-buffer to save malloc()'s */
- f_descr *db_fields; /* pointer to an array of field-
- descriptions */
-} dbhead;
+typedef struct
+{
+ int db_fd; /* file-descriptor */
+ u_long db_offset; /* current offset in file */
+ u_char db_memo; /* memo-file present */
+ u_char db_year; /* last update as YYMMDD */
+ u_char db_month;
+ u_char db_day;
+ u_long db_hlen; /* length of the diskheader, for
+ * calculating the offsets */
+ u_long db_records; /* number of records */
+ u_long db_currec; /* current record-number starting at 0 */
+ u_short db_rlen; /* length of the record */
+ u_char db_nfields; /* number of fields */
+ u_char *db_buff; /* record-buffer to save malloc()'s */
+ f_descr *db_fields; /* pointer to an array of field-
+ * descriptions */
+} dbhead;
/* structure that contains everything a user wants from a field, including
the contents (in ASCII). Warning! db_flen may be bigger than the actual
length of db_name! This is because a field doesn't have to be completely
filled */
-
-typedef struct {
- u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */
- u_char db_type; /* field-type */
- u_char db_flen; /* field-length */
- u_char db_dec; /* number of decimal positions */
- u_char* db_contents; /* contents of the field in ASCII */
-} field;
+
+typedef struct
+{
+ u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */
+ u_char db_type; /* field-type */
+ u_char db_flen; /* field-length */
+ u_char db_dec; /* number of decimal positions */
+ u_char *db_contents; /* contents of the field in ASCII */
+} field;
/* prototypes for functions */
-extern dbhead* dbf_open(u_char *file ,int flags);
-extern int dbf_write_head(dbhead *dbh);
-extern int dbf_put_fields(dbhead *dbh);
-extern int dbf_add_field(dbhead *dbh, u_char *name, u_char type,
- u_char length, u_char dec);
-extern dbhead * dbf_open_new(u_char *name, int flags);
-extern void dbf_close(dbhead *dbh);
-extern int dbf_get_record(dbhead *dbh, field *fields, u_long rec);
-extern field* dbf_build_record(dbhead *dbh);
-extern void dbf_free_record(dbhead *dbh, field* fields);
-extern int dbf_put_record(dbhead *dbh, field *rec, u_long where);
+extern dbhead *dbf_open(u_char *file, int flags);
+extern int dbf_write_head(dbhead * dbh);
+extern int dbf_put_fields(dbhead * dbh);
+extern int dbf_add_field(dbhead * dbh, u_char *name, u_char type,
+ u_char length, u_char dec);
+extern dbhead *dbf_open_new(u_char *name, int flags);
+extern void dbf_close(dbhead * dbh);
+extern int dbf_get_record(dbhead * dbh, field * fields, u_long rec);
+extern field *dbf_build_record(dbhead * dbh);
+extern void dbf_free_record(dbhead * dbh, field * fields);
+extern int dbf_put_record(dbhead * dbh, field * rec, u_long where);
/*********************************************************************
@@ -131,5 +135,4 @@ extern long get_long(u_char *cp);
extern void put_long(u_char *cp, long lval);
extern short get_short(u_char *cp);
extern void put_short(u_char *cp, short lval);
-
-#endif /* _DBF_H */
+#endif /* _DBF_H */
diff --git a/contrib/dbase/dbf2pg.c b/contrib/dbase/dbf2pg.c
index 839bb7211f4..e2393de5422 100644
--- a/contrib/dbase/dbf2pg.c
+++ b/contrib/dbase/dbf2pg.c
@@ -22,146 +22,178 @@
#include "libpq-fe.h"
#include "dbf.h"
-int verbose = 0, upper = 0, lower = 0, create = 0, fieldlow = 0;
-int del = 0;
-unsigned int begin = 0, end = 0;
+int verbose = 0,
+ upper = 0,
+ lower = 0,
+ create = 0,
+ fieldlow = 0;
+int del = 0;
+unsigned int begin = 0,
+ end = 0;
unsigned int t_block = 0;
#ifdef HAVE_ICONV_H
-char *charset_from=NULL;
-char *charset_to="ISO-8859-1";
-iconv_t iconv_d;
-char convert_charset_buff[8192];
+char *charset_from = NULL;
+char *charset_to = "ISO-8859-1";
+iconv_t iconv_d;
+char convert_charset_buff[8192];
#endif
-char *host = NULL;
-char *dbase = "test";
-char *table = "test";
-char *username = NULL;
-char *password = NULL;
-char *subarg = NULL;
-char escape_buff[8192];
+char *host = NULL;
+char *dbase = "test";
+char *table = "test";
+char *username = NULL;
+char *password = NULL;
+char *subarg = NULL;
+char escape_buff[8192];
-void do_substitute(char *subarg, dbhead *dbh);
+void do_substitute(char *subarg, dbhead * dbh);
inline void strtoupper(char *string);
inline void strtolower(char *string);
-void do_create(PGconn *, char*, dbhead*);
-void do_inserts(PGconn *, char*, dbhead*);
-int check_table(PGconn *, char*);
+void do_create(PGconn *, char *, dbhead *);
+void do_inserts(PGconn *, char *, dbhead *);
+int check_table(PGconn *, char *);
+
+char *Escape(char *);
-char *Escape(char*);
#ifdef HAVE_ICONV_H
-char *convert_charset(char *string);
+char *convert_charset(char *string);
#endif
-void usage(void);
+void usage(void);
unsigned int isinteger(char *);
-char *simple_prompt(const char *prompt, int maxlen, bool echo);
+char *simple_prompt(const char *prompt, int maxlen, bool echo);
-unsigned int isinteger(char *buff) {
- char *i=buff;
+unsigned int
+isinteger(char *buff)
+{
+ char *i = buff;
- while (*i != '\0') {
- if (i==buff)
+ while (*i != '\0')
+ {
+ if (i == buff)
if ((*i == '-') ||
- (*i == '+')) {
- i++; continue;
+ (*i == '+'))
+ {
+ i++;
+ continue;
}
- if (!isdigit((int)*i)) return 0;
+ if (!isdigit((int) *i))
+ return 0;
i++;
}
return 1;
}
-inline void strtoupper(char *string) {
- while(*string != '\0') {
+inline void
+strtoupper(char *string)
+{
+ while (*string != '\0')
+ {
*string = toupper(*string);
string++;
}
}
-inline void strtolower(char *string) {
- while(*string != '\0') {
+inline void
+strtolower(char *string)
+{
+ while (*string != '\0')
+ {
*string = tolower(*string);
string++;
}
}
/* FIXME: should this check for overflow? */
-char *Escape(char *string) {
- char *foo, *bar;
-
- foo = escape_buff;
-
- bar = string;
- while (*bar != '\0') {
- if ((*bar == '\t') ||
- (*bar == '\n') ||
- (*bar == '\\')) {
- *foo++ = '\\';
- }
- *foo++ = *bar++;
- }
- *foo = '\0';
-
- return escape_buff;
-}
+char *
+Escape(char *string)
+{
+ char *foo,
+ *bar;
-#ifdef HAVE_ICONV_H
-char *convert_charset(char *string) {
- size_t in_size, out_size, nconv;
- char *in_ptr,*out_ptr;
+ foo = escape_buff;
- in_size=strlen(string)+1;
- out_size=sizeof(convert_charset_buff);
- in_ptr=string;
- out_ptr=convert_charset_buff;
+ bar = string;
+ while (*bar != '\0')
+ {
+ if ((*bar == '\t') ||
+ (*bar == '\n') ||
+ (*bar == '\\'))
+ *foo++ = '\\';
+ *foo++ = *bar++;
+ }
+ *foo = '\0';
+
+ return escape_buff;
+}
- iconv(iconv_d, NULL, &in_size, &out_ptr, &out_size); /* necessary to reset state information */
- while(in_size>0)
+#ifdef HAVE_ICONV_H
+char *
+convert_charset(char *string)
+{
+ size_t in_size,
+ out_size,
+ nconv;
+ char *in_ptr,
+ *out_ptr;
+
+ in_size = strlen(string) + 1;
+ out_size = sizeof(convert_charset_buff);
+ in_ptr = string;
+ out_ptr = convert_charset_buff;
+
+ iconv(iconv_d, NULL, &in_size, &out_ptr, &out_size); /* necessary to reset
+ * state information */
+ while (in_size > 0)
{
nconv = iconv(iconv_d, &in_ptr, &in_size, &out_ptr, &out_size);
- if(nconv == (size_t) -1)
+ if (nconv == (size_t) -1)
{
printf("WARNING: cannot convert charset of string \"%s\".\n",
- string);
- strcpy(convert_charset_buff,string);
+ string);
+ strcpy(convert_charset_buff, string);
return convert_charset_buff;
}
}
- *out_ptr = 0; /* terminate output string */
+ *out_ptr = 0; /* terminate output string */
return convert_charset_buff;
}
#endif
-int check_table(PGconn *conn, char *table) {
- char *q = "select relname from pg_class where "
- "relkind='r' and relname !~* '^pg'";
- PGresult *res;
- int i = 0;
+int
+check_table(PGconn *conn, char *table)
+{
+ char *q = "select relname from pg_class where "
+ "relkind='r' and relname !~* '^pg'";
+ PGresult *res;
+ int i = 0;
- if (!(res = PQexec(conn, q))) {
+ if (!(res = PQexec(conn, q)))
+ {
printf("%s\n", PQerrorMessage(conn));
return 0;
}
- for (i = 0; i < PQntuples(res); i++) {
- if (!strcmp(table, PQgetvalue(res, i, PQfnumber(res, "relname")))) {
+ for (i = 0; i < PQntuples(res); i++)
+ {
+ if (!strcmp(table, PQgetvalue(res, i, PQfnumber(res, "relname"))))
return 1;
- }
}
return 0;
}
-void usage(void){
+void
+usage(void)
+{
printf("dbf2pg\n"
-"usage: dbf2pg [-u | -l] [-h hostname] [-W] [-U username]\n"
-" [-B transaction_size] [-F charset_from [-T charset_to]]\n"
-" [-s oldname=newname[,oldname=newname[...]]] [-d dbase]\n"
-" [-t table] [-c | -D] [-f] [-v[v]] dbf-file\n");
+ "usage: dbf2pg [-u | -l] [-h hostname] [-W] [-U username]\n"
+ " [-B transaction_size] [-F charset_from [-T charset_to]]\n"
+ " [-s oldname=newname[,oldname=newname[...]]] [-d dbase]\n"
+ " [-t table] [-c | -D] [-f] [-v[v]] dbf-file\n");
}
/* patch submitted by Jeffrey Y. Sue <jysue@aloha.net> */
@@ -169,66 +201,80 @@ void usage(void){
/* Mainly for avoiding conflicts between fieldnames and SQL-reserved */
/* keywords */
-void do_substitute(char *subarg, dbhead *dbh)
+void
+do_substitute(char *subarg, dbhead * dbh)
{
- /* NOTE: subarg is modified in this function */
- int i,bad;
- char *p,*oldname,*newname;
- if (!subarg) {
- return;
- }
- if (verbose>1) {
- printf("Substituting new field names\n");
- }
- /* use strstr instead of strtok because of possible empty tokens */
- oldname = subarg;
- while (oldname && strlen(oldname) && (p=strstr(oldname,"=")) ) {
- *p = '\0'; /* mark end of oldname */
- newname = ++p; /* point past \0 of oldname */
- if (strlen(newname)) { /* if not an empty string */
- p = strstr(newname,",");
- if (p) {
- *p = '\0'; /* mark end of newname */
- p++; /* point past where the comma was */
- }
- }
- if (strlen(newname)>=DBF_NAMELEN) {
- printf("Truncating new field name %s to %d chars\n",
- newname,DBF_NAMELEN-1);
- newname[DBF_NAMELEN-1] = '\0';
- }
- bad = 1;
- for (i=0;i<dbh->db_nfields;i++) {
- if (strcmp(dbh->db_fields[i].db_name,oldname)==0) {
- bad = 0;
- strcpy(dbh->db_fields[i].db_name,newname);
- if (verbose>1) {
- printf("Substitute old:%s new:%s\n",
- oldname,newname);
- }
- break;
- }
- }
- if (bad) {
- printf("Warning: old field name %s not found\n",
- oldname);
- }
- oldname = p;
- }
-} /* do_substitute */
-
-void do_create(PGconn *conn, char *table, dbhead *dbh) {
- char *query;
- char t[20];
- int i, length;
- PGresult *res;
-
- if (verbose > 1) {
- printf("Building CREATE-clause\n");
+ /* NOTE: subarg is modified in this function */
+ int i,
+ bad;
+ char *p,
+ *oldname,
+ *newname;
+
+ if (!subarg)
+ return;
+ if (verbose > 1)
+ printf("Substituting new field names\n");
+ /* use strstr instead of strtok because of possible empty tokens */
+ oldname = subarg;
+ while (oldname && strlen(oldname) && (p = strstr(oldname, "=")))
+ {
+ *p = '\0'; /* mark end of oldname */
+ newname = ++p; /* point past \0 of oldname */
+ if (strlen(newname))
+ { /* if not an empty string */
+ p = strstr(newname, ",");
+ if (p)
+ {
+ *p = '\0'; /* mark end of newname */
+ p++; /* point past where the comma was */
+ }
+ }
+ if (strlen(newname) >= DBF_NAMELEN)
+ {
+ printf("Truncating new field name %s to %d chars\n",
+ newname, DBF_NAMELEN - 1);
+ newname[DBF_NAMELEN - 1] = '\0';
+ }
+ bad = 1;
+ for (i = 0; i < dbh->db_nfields; i++)
+ {
+ if (strcmp(dbh->db_fields[i].db_name, oldname) == 0)
+ {
+ bad = 0;
+ strcpy(dbh->db_fields[i].db_name, newname);
+ if (verbose > 1)
+ {
+ printf("Substitute old:%s new:%s\n",
+ oldname, newname);
+ }
+ break;
+ }
+ }
+ if (bad)
+ {
+ printf("Warning: old field name %s not found\n",
+ oldname);
+ }
+ oldname = p;
}
+} /* do_substitute */
- if (!(query = (char *)malloc(
- (dbh->db_nfields * 40) + 29 + strlen(table)))) {
+void
+do_create(PGconn *conn, char *table, dbhead * dbh)
+{
+ char *query;
+ char t[20];
+ int i,
+ length;
+ PGresult *res;
+
+ if (verbose > 1)
+ printf("Building CREATE-clause\n");
+
+ if (!(query = (char *) malloc(
+ (dbh->db_nfields * 40) + 29 + strlen(table))))
+ {
fprintf(stderr, "Memory allocation error in function do_create\n");
PQfinish(conn);
close(dbh->db_fd);
@@ -238,61 +284,65 @@ void do_create(PGconn *conn, char *table, dbhead *dbh) {
sprintf(query, "CREATE TABLE %s (", table);
length = strlen(query);
- for ( i = 0; i < dbh->db_nfields; i++) {
- if (!strlen(dbh->db_fields[i].db_name)) {
- continue;
- /* skip field if length of name == 0 */
- }
- if ((strlen(query) != length)) {
- strcat(query, ",");
- }
-
- if (fieldlow)
- strtolower(dbh->db_fields[i].db_name);
-
- strcat(query, dbh->db_fields[i].db_name);
- switch(dbh->db_fields[i].db_type) {
- case 'D':
- strcat(query, " date");
- break;
- case 'C':
- if (dbh->db_fields[i].db_flen > 1) {
- strcat(query, " varchar");
- sprintf(t, "(%d)",
- dbh->db_fields[i].db_flen);
- strcat(query, t);
- } else {
- strcat(query, " char");
- }
- break;
- case 'N':
- if (dbh->db_fields[i].db_dec != 0) {
- strcat(query, " real");
- } else {
- strcat(query, " int");
- }
- break;
- case 'L':
- strcat(query, " char");
- break;
- }
+ for (i = 0; i < dbh->db_nfields; i++)
+ {
+ if (!strlen(dbh->db_fields[i].db_name))
+ {
+ continue;
+ /* skip field if length of name == 0 */
+ }
+ if ((strlen(query) != length))
+ strcat(query, ",");
+
+ if (fieldlow)
+ strtolower(dbh->db_fields[i].db_name);
+
+ strcat(query, dbh->db_fields[i].db_name);
+ switch (dbh->db_fields[i].db_type)
+ {
+ case 'D':
+ strcat(query, " date");
+ break;
+ case 'C':
+ if (dbh->db_fields[i].db_flen > 1)
+ {
+ strcat(query, " varchar");
+ sprintf(t, "(%d)",
+ dbh->db_fields[i].db_flen);
+ strcat(query, t);
+ }
+ else
+ strcat(query, " char");
+ break;
+ case 'N':
+ if (dbh->db_fields[i].db_dec != 0)
+ strcat(query, " real");
+ else
+ strcat(query, " int");
+ break;
+ case 'L':
+ strcat(query, " char");
+ break;
+ }
}
strcat(query, ")");
- if (verbose > 1) {
+ if (verbose > 1)
+ {
printf("Sending create-clause\n");
printf("%s\n", query);
}
- if ((res = PQexec(conn, query)) == NULL) {
+ if ((res = PQexec(conn, query)) == NULL)
+ {
fprintf(stderr, "Error creating table!\n");
fprintf(stderr, "Detailed report: %s\n", PQerrorMessage(conn));
- close(dbh->db_fd);
- free(dbh);
- free(query);
- PQfinish(conn);
- exit(1);
+ close(dbh->db_fd);
+ free(dbh);
+ free(query);
+ PQfinish(conn);
+ exit(1);
}
PQclear(res);
@@ -300,148 +350,179 @@ void do_create(PGconn *conn, char *table, dbhead *dbh) {
}
/* FIXME: can be optimized to not use strcat, but it is worth the effort? */
-void do_inserts(PGconn *conn, char *table, dbhead *dbh) {
- PGresult *res;
- field *fields;
- int i, h, result;
- char *query, *foo;
+void
+do_inserts(PGconn *conn, char *table, dbhead * dbh)
+{
+ PGresult *res;
+ field *fields;
+ int i,
+ h,
+ result;
+ char *query,
+ *foo;
char pgdate[10];
- if (verbose > 1) {
+ if (verbose > 1)
printf("Inserting records\n");
- }
- h = 2; /* 2 because of terminating \n\0 */
+ h = 2; /* 2 because of terminating \n\0 */
- for ( i = 0 ; i < dbh->db_nfields ; i++ ) {
+ for (i = 0; i < dbh->db_nfields; i++)
+ {
h += dbh->db_fields[i].db_flen > 2 ?
- dbh->db_fields[i].db_flen :
- 2; /* account for possible NULL values (\N) */
- h += 1; /* the delimiter */
+ dbh->db_fields[i].db_flen :
+ 2; /* account for possible NULL values (\N) */
+ h += 1; /* the delimiter */
}
- /* make sure we can build the COPY query, note that we don't need to just
- add this value, since the COPY query is a separate query (see below) */
- if (h < 17+strlen(table)) h = 17+strlen(table);
+ /*
+ * make sure we can build the COPY query, note that we don't need to
+ * just add this value, since the COPY query is a separate query (see
+ * below)
+ */
+ if (h < 17 + strlen(table))
+ h = 17 + strlen(table);
- if (!(query = (char *)malloc(h))) {
+ if (!(query = (char *) malloc(h)))
+ {
PQfinish(conn);
fprintf(stderr,
- "Memory allocation error in function do_inserts (query)\n");
+ "Memory allocation error in function do_inserts (query)\n");
close(dbh->db_fd);
free(dbh);
exit(1);
}
- if ((fields = dbf_build_record(dbh)) == (field *)DBF_ERROR) {
- fprintf(stderr,
- "Couldn't allocate memory for record in do_insert\n");
+ if ((fields = dbf_build_record(dbh)) == (field *) DBF_ERROR)
+ {
+ fprintf(stderr,
+ "Couldn't allocate memory for record in do_insert\n");
PQfinish(conn);
- free(query);
- dbf_close(dbh);
- exit(1);
- }
-
- if (end == 0) /* "end" is a user option, if not specified, */
- end = dbh->db_records; /* then all records are processed. */
-
- if (t_block == 0) /* user not specified transaction block size */
- t_block = end-begin; /* then we set it to be the full data */
-
- for (i = begin; i < end; i++) {
+ free(query);
+ dbf_close(dbh);
+ exit(1);
+ }
+
+ if (end == 0) /* "end" is a user option, if not
+ * specified, */
+ end = dbh->db_records; /* then all records are processed. */
+
+ if (t_block == 0) /* user not specified transaction block
+ * size */
+ t_block = end - begin; /* then we set it to be the full data */
+
+ for (i = begin; i < end; i++)
+ {
/* we need to start a new transaction and COPY statement */
- if (((i-begin) % t_block) == 0) {
+ if (((i - begin) % t_block) == 0)
+ {
if (verbose > 1)
fprintf(stderr, "Transaction: START\n");
res = PQexec(conn, "BEGIN");
- if (res == NULL) {
+ if (res == NULL)
+ {
fprintf(stderr, "Error starting transaction!\n");
fprintf(stderr, "Detailed report: %s\n", PQerrorMessage(conn));
- exit(1);
+ exit(1);
}
sprintf(query, "COPY %s FROM stdin", table);
res = PQexec(conn, query);
- if (res == NULL) {
+ if (res == NULL)
+ {
fprintf(stderr, "Error starting COPY!\n");
fprintf(stderr, "Detailed report: %s\n", PQerrorMessage(conn));
- exit(1);
+ exit(1);
}
}
/* build line and submit */
- result = dbf_get_record(dbh, fields, i);
- if (result == DBF_VALID) {
+ result = dbf_get_record(dbh, fields, i);
+ if (result == DBF_VALID)
+ {
query[0] = '\0';
- for (h = 0; h < dbh->db_nfields; h++) {
- if (!strlen(fields[h].db_name)) {
+ for (h = 0; h < dbh->db_nfields; h++)
+ {
+ if (!strlen(fields[h].db_name))
continue;
- }
- if (h!=0) /* not for the first field! */
- strcat(query, "\t"); /* COPY statement field separator */
+ if (h != 0) /* not for the first field! */
+ strcat(query, "\t"); /* COPY statement field
+ * separator */
- if (upper) {
- strtoupper(fields[h].db_contents);
- }
- if (lower) {
+ if (upper)
+ strtoupper(fields[h].db_contents);
+ if (lower)
strtolower(fields[h].db_contents);
- }
foo = fields[h].db_contents;
#ifdef HAVE_ICONV_H
- if(charset_from)
+ if (charset_from)
foo = convert_charset(foo);
#endif
foo = Escape(foo);
/* handle the date first - liuk */
- if(fields[h].db_type=='D') {
- if((strlen(foo)==8) && isinteger(foo)) {
- sprintf(pgdate,"%c%c%c%c-%c%c-%c%c",
- foo[0],foo[1],foo[2],foo[3],
- foo[4],foo[5],foo[6],foo[7]);
- strcat(query,pgdate);
- } else {
- /* empty field must be inserted as NULL value in this
- way */
- strcat(query,"\\N");
+ if (fields[h].db_type == 'D')
+ {
+ if ((strlen(foo) == 8) && isinteger(foo))
+ {
+ sprintf(pgdate, "%c%c%c%c-%c%c-%c%c",
+ foo[0], foo[1], foo[2], foo[3],
+ foo[4], foo[5], foo[6], foo[7]);
+ strcat(query, pgdate);
+ }
+ else
+ {
+ /*
+ * empty field must be inserted as NULL value in
+ * this way
+ */
+ strcat(query, "\\N");
}
}
else if ((fields[h].db_type == 'N') &&
- (fields[h].db_dec == 0)){
- if (isinteger(foo)) {
+ (fields[h].db_dec == 0))
+ {
+ if (isinteger(foo))
strcat(query, foo);
- } else {
+ else
+ {
strcat(query, "\\N");
if (verbose)
fprintf(stderr, "Illegal numeric value found "
- "in record %d, field \"%s\"\n",
- i, fields[h].db_name);
+ "in record %d, field \"%s\"\n",
+ i, fields[h].db_name);
}
- } else {
+ }
+ else
+ {
strcat(query, foo); /* must be character */
}
}
strcat(query, "\n");
- if ((verbose > 1) && (( i % 100) == 0)) {/* Only show every 100 */
- printf("Inserting record %d\n", i); /* records. */
+ if ((verbose > 1) && ((i % 100) == 0))
+ { /* Only show every 100 */
+ printf("Inserting record %d\n", i); /* records. */
}
PQputline(conn, query);
}
/* we need to end this copy and transaction */
- if (((i-begin) % t_block) == t_block-1) {
+ if (((i - begin) % t_block) == t_block - 1)
+ {
if (verbose > 1)
fprintf(stderr, "Transaction: END\n");
PQputline(conn, "\\.\n");
- if (PQendcopy(conn) != 0) {
+ if (PQendcopy(conn) != 0)
+ {
fprintf(stderr, "Something went wrong while copying. Check "
- "your tables!\n");
+ "your tables!\n");
exit(1);
}
res = PQexec(conn, "END");
- if (res == NULL) {
+ if (res == NULL)
+ {
fprintf(stderr, "Error committing work!\n");
fprintf(stderr, "Detailed report: %s\n", PQerrorMessage(conn));
exit(1);
@@ -451,17 +532,20 @@ void do_inserts(PGconn *conn, char *table, dbhead *dbh) {
/* last row copied in, end copy and transaction */
/* remember, i is now 1 greater then when we left the loop */
- if (((i-begin) % t_block) != 0) {
+ if (((i - begin) % t_block) != 0)
+ {
if (verbose > 1)
fprintf(stderr, "Transaction: END\n");
PQputline(conn, "\\.\n");
- if (PQendcopy(conn) != 0) {
+ if (PQendcopy(conn) != 0)
+ {
fprintf(stderr, "Something went wrong while copying. Check "
- "your tables!\n");
+ "your tables!\n");
}
res = PQexec(conn, "END");
- if (res == NULL) {
+ if (res == NULL)
+ {
fprintf(stderr, "Error committing work!\n");
fprintf(stderr, "Detailed report: %s\n", PQerrorMessage(conn));
exit(1);
@@ -492,7 +576,9 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
{
int length;
char *destination;
- FILE *termin, *termout;
+ FILE *termin,
+ *termout;
+
#ifdef HAVE_TERMIOS_H
struct termios t_orig,
t;
@@ -505,8 +591,8 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
prompt_state = true; /* disable SIGINT */
/*
- * Do not try to collapse these into one "w+" mode file.
- * Doesn't work on some platforms (eg, HPUX 10.20).
+ * Do not try to collapse these into one "w+" mode file. Doesn't work
+ * on some platforms (eg, HPUX 10.20).
*/
termin = fopen("/dev/tty", "r");
termout = fopen("/dev/tty", "w");
@@ -529,7 +615,7 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
tcsetattr(fileno(termin), TCSAFLUSH, &t);
}
#endif
-
+
if (prompt)
{
fputs(gettext(prompt), termout);
@@ -579,19 +665,23 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
}
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
{
- PGconn *conn;
+ PGconn *conn;
int i;
- extern int optind;
- extern char *optarg;
- char *query;
- dbhead *dbh;
+ extern int optind;
+ extern char *optarg;
+ char *query;
+ dbhead *dbh;
- while ((i = getopt(argc, argv, "DWflucvh:b:e:d:t:s:B:U:F:T:")) != EOF) {
- switch (i) {
+ while ((i = getopt(argc, argv, "DWflucvh:b:e:d:t:s:B:U:F:T:")) != EOF)
+ {
+ switch (i)
+ {
case 'D':
- if (create) {
+ if (create)
+ {
usage();
printf("Can't use -c and -D at the same time!\n");
exit(1);
@@ -599,32 +689,34 @@ int main(int argc, char **argv)
del = 1;
break;
case 'W':
- password=simple_prompt("Password: ",100,0);
+ password = simple_prompt("Password: ", 100, 0);
break;
case 'f':
- fieldlow=1;
+ fieldlow = 1;
break;
case 'v':
verbose++;
break;
case 'c':
- if (del) {
+ if (del)
+ {
usage();
printf("Can't use -c and -D at the same time!\n");
exit(1);
}
- create=1;
+ create = 1;
break;
case 'l':
- lower=1;
+ lower = 1;
break;
case 'u':
- if (lower) {
+ if (lower)
+ {
usage();
printf("Can't use -u and -l at the same time!\n");
exit(1);
}
- upper=1;
+ upper = 1;
break;
case 'b':
begin = atoi(optarg);
@@ -633,28 +725,28 @@ int main(int argc, char **argv)
end = atoi(optarg);
break;
case 'h':
- host = (char *)strdup(optarg);
+ host = (char *) strdup(optarg);
break;
case 'd':
- dbase = (char *)strdup(optarg);
+ dbase = (char *) strdup(optarg);
break;
case 't':
- table = (char *)strdup(optarg);
- break;
+ table = (char *) strdup(optarg);
+ break;
case 's':
- subarg = (char *)strdup(optarg);
+ subarg = (char *) strdup(optarg);
break;
case 'B':
t_block = atoi(optarg);
break;
case 'U':
- username = (char *)strdup(optarg);
+ username = (char *) strdup(optarg);
break;
case 'F':
- charset_from = (char *)strdup(optarg);
+ charset_from = (char *) strdup(optarg);
break;
case 'T':
- charset_to = (char *)strdup(optarg);
+ charset_to = (char *) strdup(optarg);
break;
case ':':
usage();
@@ -663,7 +755,11 @@ int main(int argc, char **argv)
break;
case '?':
usage();
- /* FIXME: Ivan thinks this is bad: printf("unknown argument: %s\n", argv[0]); */
+
+ /*
+ * FIXME: Ivan thinks this is bad: printf("unknown
+ * argument: %s\n", argv[0]);
+ */
exit(1);
break;
default:
@@ -674,80 +770,83 @@ int main(int argc, char **argv)
argc -= optind;
argv = &argv[optind];
- if (argc != 1) {
+ if (argc != 1)
+ {
usage();
- if(username)
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
exit(1);
}
#ifdef HAVE_ICONV_H
- if(charset_from)
+ if (charset_from)
{
- if(verbose>1)
+ if (verbose > 1)
printf("Setting conversion from charset \"%s\" to \"%s\".\n",
- charset_from,charset_to);
- iconv_d = iconv_open(charset_to,charset_from);
- if(iconv_d == (iconv_t) -1)
+ charset_from, charset_to);
+ iconv_d = iconv_open(charset_to, charset_from);
+ if (iconv_d == (iconv_t) - 1)
{
printf("Cannot convert from charset \"%s\" to charset \"%s\".\n",
- charset_from,charset_to);
+ charset_from, charset_to);
exit(1);
}
}
#endif
- if (verbose > 1) {
+ if (verbose > 1)
printf("Opening dbf-file\n");
- }
- if ((dbh = dbf_open(argv[0], O_RDONLY)) == (dbhead *)-1) {
+ if ((dbh = dbf_open(argv[0], O_RDONLY)) == (dbhead *) - 1)
+ {
fprintf(stderr, "Couldn't open xbase-file %s\n", argv[0]);
- if(username)
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
- if(charset_from)
+ if (charset_from)
iconv_close(iconv_d);
exit(1);
}
if (fieldlow)
- for ( i = 0 ; i < dbh->db_nfields ; i++ )
- strtolower(dbh->db_fields[i].db_name);
+ for (i = 0; i < dbh->db_nfields; i++)
+ strtolower(dbh->db_fields[i].db_name);
- if (verbose) {
+ if (verbose)
+ {
printf("dbf-file: %s, PG-dbase: %s, PG-table: %s\n", argv[0],
- dbase,
- table);
+ dbase,
+ table);
printf("Number of records: %ld\n", dbh->db_records);
printf("NAME:\t\tLENGTH:\t\tTYPE:\n");
printf("-------------------------------------\n");
- for (i = 0; i < dbh->db_nfields ; i++) {
- printf("%-12s\t%7d\t\t%5c\n",dbh->db_fields[i].db_name,
- dbh->db_fields[i].db_flen,
- dbh->db_fields[i].db_type);
+ for (i = 0; i < dbh->db_nfields; i++)
+ {
+ printf("%-12s\t%7d\t\t%5c\n", dbh->db_fields[i].db_name,
+ dbh->db_fields[i].db_flen,
+ dbh->db_fields[i].db_type);
}
}
- if (verbose > 1) {
+ if (verbose > 1)
printf("Making connection to PG-server\n");
- }
- conn = PQsetdbLogin(host,NULL,NULL,NULL, dbase, username, password);
- if (PQstatus(conn) != CONNECTION_OK) {
+ conn = PQsetdbLogin(host, NULL, NULL, NULL, dbase, username, password);
+ if (PQstatus(conn) != CONNECTION_OK)
+ {
fprintf(stderr, "Couldn't get a connection with the ");
fprintf(stderr, "designated host!\n");
fprintf(stderr, "Detailed report: %s\n", PQerrorMessage(conn));
close(dbh->db_fd);
free(dbh);
- if(username)
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
- if(charset_from)
+ if (charset_from)
iconv_close(iconv_d);
exit(1);
}
@@ -756,55 +855,60 @@ int main(int argc, char **argv)
do_substitute(subarg, dbh);
/* create table if specified, else check if target table exists */
- if (!create) {
- if (!check_table(conn, table)) {
+ if (!create)
+ {
+ if (!check_table(conn, table))
+ {
printf("Table does not exist!\n");
- if(username)
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
- if(charset_from)
+ if (charset_from)
iconv_close(iconv_d);
exit(1);
}
- if (del) {
- if (!(query = (char *)malloc(13 + strlen(table)))) {
+ if (del)
+ {
+ if (!(query = (char *) malloc(13 + strlen(table))))
+ {
printf("Memory-allocation error in main (delete)!\n");
close(dbh->db_fd);
free(dbh);
PQfinish(conn);
- if(username)
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
- if(charset_from)
+ if (charset_from)
iconv_close(iconv_d);
exit(1);
}
- if (verbose > 1) {
+ if (verbose > 1)
printf("Deleting from original table\n");
- }
sprintf(query, "DELETE FROM %s", table);
PQexec(conn, query);
free(query);
}
- } else {
- if (!(query = (char *)malloc(12 + strlen(table)))) {
+ }
+ else
+ {
+ if (!(query = (char *) malloc(12 + strlen(table))))
+ {
printf("Memory-allocation error in main (drop)!\n");
close(dbh->db_fd);
free(dbh);
PQfinish(conn);
- if(username)
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
- if(charset_from)
+ if (charset_from)
iconv_close(iconv_d);
exit(1);
}
- if (verbose > 1) {
+ if (verbose > 1)
printf("Dropping original table (if one exists)\n");
- }
sprintf(query, "DROP TABLE %s", table);
PQexec(conn, query);
free(query);
@@ -819,18 +923,17 @@ int main(int argc, char **argv)
PQexec(conn, "SET DATESTYLE TO 'ISO';");
do_inserts(conn, table, dbh);
- if (verbose > 1) {
+ if (verbose > 1)
printf("Closing up....\n");
- }
- close(dbh->db_fd);
- free(dbh);
- PQfinish(conn);
- if(username)
+ close(dbh->db_fd);
+ free(dbh);
+ PQfinish(conn);
+ if (username)
free(username);
- if(password)
+ if (password)
free(password);
- if(charset_from)
+ if (charset_from)
iconv_close(iconv_d);
exit(0);
}
diff --git a/contrib/dbase/endian.c b/contrib/dbase/endian.c
index 55c53d89800..5bc6a186a0e 100644
--- a/contrib/dbase/endian.c
+++ b/contrib/dbase/endian.c
@@ -5,41 +5,45 @@
/*
* routine to change little endian long to host long
*/
-long get_long(u_char *cp)
+long
+get_long(u_char *cp)
{
- long ret;
+ long ret;
- ret = *cp++;
- ret += ((*cp++)<<8);
- ret += ((*cp++)<<16);
- ret += ((*cp++)<<24);
+ ret = *cp++;
+ ret += ((*cp++) << 8);
+ ret += ((*cp++) << 16);
+ ret += ((*cp++) << 24);
- return ret;
+ return ret;
}
-void put_long(u_char *cp, long lval)
+void
+put_long(u_char *cp, long lval)
{
- cp[0] = lval & 0xff;
- cp[1] = (lval >> 8) & 0xff;
- cp[2] = (lval >> 16) & 0xff;
- cp[3] = (lval >> 24) & 0xff;
+ cp[0] = lval & 0xff;
+ cp[1] = (lval >> 8) & 0xff;
+ cp[2] = (lval >> 16) & 0xff;
+ cp[3] = (lval >> 24) & 0xff;
}
/*
* routine to change little endian short to host short
*/
-short get_short(u_char *cp)
+short
+get_short(u_char *cp)
{
- short ret;
+ short ret;
- ret = *cp++;
- ret += ((*cp++)<<8);
+ ret = *cp++;
+ ret += ((*cp++) << 8);
- return ret;
+ return ret;
}
-void put_short(u_char *cp, short sval)
+void
+put_short(u_char *cp, short sval)
{
- cp[0] = sval & 0xff;
- cp[1] = (sval >> 8) & 0xff;
+ cp[0] = sval & 0xff;
+ cp[1] = (sval >> 8) & 0xff;
}
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index e858cfd0ba2..4ab1315fa71 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -4,18 +4,18 @@
* Functions returning results from a remote database
*
* Copyright (c) Joseph Conway <joe.conway@mail.com>, 2001;
- *
+ *
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies.
- *
+ *
* IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIMS ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
@@ -30,29 +30,28 @@ PG_FUNCTION_INFO_V1(dblink);
Datum
dblink(PG_FUNCTION_ARGS)
{
- PGconn *conn = NULL;
- PGresult *res = NULL;
- dblink_results *results;
- char *optstr;
- char *sqlstatement;
- char *curstr = "DECLARE mycursor CURSOR FOR ";
- char *execstatement;
- char *msg;
- int ntuples = 0;
- ReturnSetInfo *rsi;
-
- if (PG_ARGISNULL(0) || PG_ARGISNULL(1)) {
+ PGconn *conn = NULL;
+ PGresult *res = NULL;
+ dblink_results *results;
+ char *optstr;
+ char *sqlstatement;
+ char *curstr = "DECLARE mycursor CURSOR FOR ";
+ char *execstatement;
+ char *msg;
+ int ntuples = 0;
+ ReturnSetInfo *rsi;
+
+ if (PG_ARGISNULL(0) || PG_ARGISNULL(1))
elog(ERROR, "dblink: NULL arguments are not permitted");
- }
- if (fcinfo->resultinfo == NULL || ! IsA(fcinfo->resultinfo, ReturnSetInfo)) {
+ if (fcinfo->resultinfo == NULL || !IsA(fcinfo->resultinfo, ReturnSetInfo))
elog(ERROR, "dblink: function called in context that does not accept a set result");
- }
optstr = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(0))));
sqlstatement = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(1))));
- if (fcinfo->flinfo->fn_extra == NULL) {
+ if (fcinfo->flinfo->fn_extra == NULL)
+ {
conn = PQconnectdb(optstr);
if (PQstatus(conn) == CONNECTION_BAD)
@@ -73,13 +72,14 @@ dblink(PG_FUNCTION_ARGS)
PQclear(res);
execstatement = (char *) palloc(strlen(curstr) + strlen(sqlstatement) + 1);
- if (execstatement != NULL) {
+ if (execstatement != NULL)
+ {
strcpy(execstatement, curstr);
strcat(execstatement, sqlstatement);
strcat(execstatement, "\0");
- } else {
- elog(ERROR, "dblink: insufficient memory" );
}
+ else
+ elog(ERROR, "dblink: insufficient memory");
res = PQexec(conn, execstatement);
if (!res || (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK))
@@ -88,23 +88,27 @@ dblink(PG_FUNCTION_ARGS)
PQclear(res);
PQfinish(conn);
elog(ERROR, "dblink: sql error: %s", msg);
- } else {
+ }
+ else
+ {
/*
* got results, start fetching them
*/
- PQclear(res);
+ PQclear(res);
- res = PQexec(conn, "FETCH ALL in mycursor");
- if (!res || PQresultStatus(res) != PGRES_TUPLES_OK) {
+ res = PQexec(conn, "FETCH ALL in mycursor");
+ if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
+ {
msg = pstrdup(PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
elog(ERROR, "dblink: sql error: %s", msg);
- }
+ }
ntuples = PQntuples(res);
- if (ntuples > 0) {
+ if (ntuples > 0)
+ {
results = init_dblink_results(fcinfo->flinfo->fn_mcxt);
results->tup_num = 0;
@@ -116,44 +120,48 @@ dblink(PG_FUNCTION_ARGS)
results = NULL;
results = fcinfo->flinfo->fn_extra;
- /* close the cursor */
- res = PQexec(conn, "CLOSE mycursor");
- PQclear(res);
+ /* close the cursor */
+ res = PQexec(conn, "CLOSE mycursor");
+ PQclear(res);
- /* commit the transaction */
- res = PQexec(conn, "COMMIT");
- PQclear(res);
+ /* commit the transaction */
+ res = PQexec(conn, "COMMIT");
+ PQclear(res);
- /* close the connection to the database and cleanup */
- PQfinish(conn);
+ /* close the connection to the database and cleanup */
+ PQfinish(conn);
- rsi = (ReturnSetInfo *)fcinfo->resultinfo;
+ rsi = (ReturnSetInfo *) fcinfo->resultinfo;
rsi->isDone = ExprMultipleResult;
PG_RETURN_POINTER(results);
- } else {
+ }
+ else
+ {
- PQclear(res);
+ PQclear(res);
- /* close the cursor */
- res = PQexec(conn, "CLOSE mycursor");
- PQclear(res);
+ /* close the cursor */
+ res = PQexec(conn, "CLOSE mycursor");
+ PQclear(res);
- /* commit the transaction */
- res = PQexec(conn, "COMMIT");
- PQclear(res);
+ /* commit the transaction */
+ res = PQexec(conn, "COMMIT");
+ PQclear(res);
- /* close the connection to the database and cleanup */
- PQfinish(conn);
+ /* close the connection to the database and cleanup */
+ PQfinish(conn);
- rsi = (ReturnSetInfo *)fcinfo->resultinfo;
- rsi->isDone = ExprEndResult ;
+ rsi = (ReturnSetInfo *) fcinfo->resultinfo;
+ rsi->isDone = ExprEndResult;
PG_RETURN_NULL();
}
}
- } else {
+ }
+ else
+ {
/*
* check for more results
*/
@@ -162,29 +170,30 @@ dblink(PG_FUNCTION_ARGS)
results->tup_num++;
ntuples = PQntuples(results->res);
- if (results->tup_num < ntuples) {
-
+ if (results->tup_num < ntuples)
+ {
/*
* fetch them if available
*/
- rsi = (ReturnSetInfo *)fcinfo->resultinfo;
+ rsi = (ReturnSetInfo *) fcinfo->resultinfo;
rsi->isDone = ExprMultipleResult;
PG_RETURN_POINTER(results);
- } else {
-
+ }
+ else
+ {
/*
* or if no more, clean things up
*/
results = fcinfo->flinfo->fn_extra;
- PQclear(results->res);
+ PQclear(results->res);
- rsi = (ReturnSetInfo *)fcinfo->resultinfo;
- rsi->isDone = ExprEndResult ;
+ rsi = (ReturnSetInfo *) fcinfo->resultinfo;
+ rsi->isDone = ExprEndResult;
PG_RETURN_NULL();
}
@@ -204,48 +213,48 @@ PG_FUNCTION_INFO_V1(dblink_tok);
Datum
dblink_tok(PG_FUNCTION_ARGS)
{
- dblink_results *results;
- int fldnum;
- text *result_text;
- char *result;
- int nfields = 0;
- int text_len = 0;
-
- if (PG_ARGISNULL(0) || PG_ARGISNULL(1)) {
+ dblink_results *results;
+ int fldnum;
+ text *result_text;
+ char *result;
+ int nfields = 0;
+ int text_len = 0;
+
+ if (PG_ARGISNULL(0) || PG_ARGISNULL(1))
elog(ERROR, "dblink: NULL arguments are not permitted");
- }
results = (dblink_results *) PG_GETARG_POINTER(0);
- if (results == NULL) {
+ if (results == NULL)
elog(ERROR, "dblink: function called with invalid result pointer");
- }
fldnum = PG_GETARG_INT32(1);
- if (fldnum < 0) {
+ if (fldnum < 0)
elog(ERROR, "dblink: field number < 0 not permitted");
- }
nfields = PQnfields(results->res);
- if (fldnum > (nfields - 1)) {
+ if (fldnum > (nfields - 1))
elog(ERROR, "dblink: field number %d does not exist", fldnum);
- }
- if (PQgetisnull(results->res, results->tup_num, fldnum) == 1) {
+ if (PQgetisnull(results->res, results->tup_num, fldnum) == 1)
+ {
PG_RETURN_NULL();
- } else {
+ }
+ else
+ {
text_len = PQgetlength(results->res, results->tup_num, fldnum);
result = (char *) palloc(text_len + 1);
- if (result != NULL) {
+ if (result != NULL)
+ {
strcpy(result, PQgetvalue(results->res, results->tup_num, fldnum));
strcat(result, "\0");
- } else {
- elog(ERROR, "dblink: insufficient memory" );
}
+ else
+ elog(ERROR, "dblink: insufficient memory");
result_text = DatumGetTextP(DirectFunctionCall1(textin, CStringGetDatum(result)));
@@ -267,8 +276,8 @@ dblink_tok(PG_FUNCTION_ARGS)
dblink_results *
init_dblink_results(MemoryContext fn_mcxt)
{
- MemoryContext oldcontext;
- dblink_results *retval;
+ MemoryContext oldcontext;
+ dblink_results *retval;
oldcontext = MemoryContextSwitchTo(fn_mcxt);
diff --git a/contrib/dblink/dblink.h b/contrib/dblink/dblink.h
index 1b2a48e9fb3..f4de437e3df 100644
--- a/contrib/dblink/dblink.h
+++ b/contrib/dblink/dblink.h
@@ -4,18 +4,18 @@
* Functions returning results from a remote database
*
* Copyright (c) Joseph Conway <joe.conway@mail.com>, 2001;
- *
+ *
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies.
- *
+ *
* IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIMS ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
@@ -52,9 +52,9 @@ typedef struct
/*
* the actual query results
*/
- PGresult *res;
+ PGresult *res;
-} dblink_results;
+} dblink_results;
/*
* External declarations
@@ -66,5 +66,4 @@ extern Datum dblink_tok(PG_FUNCTION_ARGS);
* Internal declarations
*/
dblink_results *init_dblink_results(MemoryContext fn_mcxt);
-
#endif /* DBLINK_H */
diff --git a/contrib/fulltextindex/fti.c b/contrib/fulltextindex/fti.c
index 8fd568d7208..a259e4b08bd 100644
--- a/contrib/fulltextindex/fti.c
+++ b/contrib/fulltextindex/fti.c
@@ -6,52 +6,52 @@
#include "commands/trigger.h"
/*
- * Trigger function accepts variable number of arguments:
+ * Trigger function accepts variable number of arguments:
*
* 1. relation in which to store the substrings
* 2. fields to extract substrings from
*
- * The relation in which to insert *must* have the following layout:
+ * The relation in which to insert *must* have the following layout:
*
* string varchar(#)
* id oid
*
- * where # is the largest size of the varchar columns being indexed
+ * where # is the largest size of the varchar columns being indexed
*
* Example:
*
- * -- Create the SQL function based on the compiled shared object
- * create function fti() returns opaque as
- * '/usr/local/pgsql/lib/contrib/fti.so' language 'C';
+ * -- Create the SQL function based on the compiled shared object
+ * create function fti() returns opaque as
+ * '/usr/local/pgsql/lib/contrib/fti.so' language 'C';
*
- * -- Create the FTI table
- * create table product_fti (string varchar(255), id oid);
+ * -- Create the FTI table
+ * create table product_fti (string varchar(255), id oid);
*
- * -- Create an index to assist string matches
- * create index product_fti_string_idx on product_fti (string);
+ * -- Create an index to assist string matches
+ * create index product_fti_string_idx on product_fti (string);
*
- * -- Create an index to assist trigger'd deletes
- * create index product_fti_id_idx on product_fti (id);
+ * -- Create an index to assist trigger'd deletes
+ * create index product_fti_id_idx on product_fti (id);
*
- * -- Create an index on the product oid column to assist joins
- * -- between the fti table and the product table
- * create index product_oid_idx on product (oid);
+ * -- Create an index on the product oid column to assist joins
+ * -- between the fti table and the product table
+ * create index product_oid_idx on product (oid);
*
- * -- Create the trigger to perform incremental changes to the full text index.
- * create trigger product_fti_trig after update or insert or delete on product
- * for each row execute procedure fti(product_fti, title, artist);
- * ^^^^^^^^^^^
- * table where full text index is stored
- * ^^^^^^^^^^^^^
- * columns to index in the base table
+ * -- Create the trigger to perform incremental changes to the full text index.
+ * create trigger product_fti_trig after update or insert or delete on product
+ * for each row execute procedure fti(product_fti, title, artist);
+ * ^^^^^^^^^^^
+ * table where full text index is stored
+ * ^^^^^^^^^^^^^
+ * columns to index in the base table
*
- * After populating 'product', try something like:
+ * After populating 'product', try something like:
*
- * SELECT DISTINCT(p.*) FROM product p, product_fti f1, product_fti f2 WHERE
+ * SELECT DISTINCT(p.*) FROM product p, product_fti f1, product_fti f2 WHERE
* f1.string ~ '^slippery' AND f2.string ~ '^wet' AND p.oid=f1.id AND p.oid=f2.id;
*
- * To check that your indicies are being used correctly, make sure you
- * EXPLAIN SELECT ... your test query above.
+ * To check that your indicies are being used correctly, make sure you
+ * EXPLAIN SELECT ... your test query above.
*
* CHANGELOG
* ---------
@@ -76,14 +76,14 @@
* TODO
* ----
*
- * prevent generating duplicate words for an oid in the fti table
- * save a plan for deletes
- * create a function that will make the index *after* we have populated
- * the main table (probably first delete all contents to be sure there's
- * nothing in it, then re-populate the fti-table)
+ * prevent generating duplicate words for an oid in the fti table
+ * save a plan for deletes
+ * create a function that will make the index *after* we have populated
+ * the main table (probably first delete all contents to be sure there's
+ * nothing in it, then re-populate the fti-table)
*
- * can we do something with operator overloading or a seperate function
- * that can build the final query automatigally?
+ * can we do something with operator overloading or a seperate function
+ * that can build the final query automatigally?
*/
#define MAX_FTI_QUERY_LENGTH 8192
@@ -103,16 +103,15 @@ char *StopWords[] = { /* list of words to skip in indexing */
"the",
"yes"
};
-
-#endif /* USE_STOP_WORDS */
+#endif /* USE_STOP_WORDS */
/* stuff for caching query-plans, stolen from contrib/spi/\*.c */
typedef struct
{
- char *ident;
- int nplans;
- void **splan;
-} EPlan;
+ char *ident;
+ int nplans;
+ void **splan;
+} EPlan;
static EPlan *InsertPlans = NULL;
static EPlan *DeletePlans = NULL;
@@ -201,13 +200,11 @@ fti(PG_FUNCTION_ARGS)
Oid *argtypes;
Datum values[1];
EPlan *plan;
- int i;
+ int i;
snprintf(query, MAX_FTI_QUERY_LENGTH, "D%s", indexname);
for (i = 1; i < nargs; i++)
- {
snprintf(query, MAX_FTI_QUERY_LENGTH, "%s$%s", query, args[i]);
- }
plan = find_plan(query, &DeletePlans, &nDeletePlans);
if (plan->nplans <= 0)
@@ -238,23 +235,21 @@ fti(PG_FUNCTION_ARGS)
if (isinsert)
{
- char *substring;
- char *column;
- void *pplan;
- Oid *argtypes;
+ char *substring;
+ char *column;
+ void *pplan;
+ Oid *argtypes;
Datum values[2];
int colnum;
- struct varlena *data;
- EPlan *plan;
- int i;
- char *buff;
- char *string;
+ struct varlena *data;
+ EPlan *plan;
+ int i;
+ char *buff;
+ char *string;
snprintf(query, MAX_FTI_QUERY_LENGTH, "I%s", indexname);
for (i = 1; i < nargs; i++)
- {
snprintf(query, MAX_FTI_QUERY_LENGTH, "%s$%s", query, args[i]);
- }
plan = find_plan(query, &InsertPlans, &nInsertPlans);
@@ -269,7 +264,7 @@ fti(PG_FUNCTION_ARGS)
/* prepare plan to gain speed */
snprintf(query, MAX_FTI_QUERY_LENGTH, "INSERT INTO %s (string, id) VALUES ($1, $2)",
- indexname);
+ indexname);
pplan = SPI_prepare(query, 2, argtypes);
if (!pplan)
elog(ERROR, "Full Text Indexing: SPI_prepare: Returned NULL in insert");
@@ -303,7 +298,7 @@ fti(PG_FUNCTION_ARGS)
string++;
}
- data = (struct varlena *) palloc(sizeof(int32) + strlen(column) + 1);
+ data = (struct varlena *) palloc(sizeof(int32) + strlen(column) +1);
buff = palloc(strlen(column) + 1);
/* saves lots of calls in while-loop and in breakup() */
@@ -348,7 +343,6 @@ breakup(char *string, char *substring)
while (cur_pos > string) /* don't read before start of 'string' */
{
-
/*
* skip pieces at the end of a string that are not alfa-numeric
* (ie. 'string$%^&', last_start first points to '&', and after
@@ -409,7 +403,7 @@ is_stopword(char *text)
else
StopHigh = StopMiddle;
}
-#endif /* USE_STOP_WORDS */
+#endif /* USE_STOP_WORDS */
return (false);
}
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.c b/contrib/fuzzystrmatch/fuzzystrmatch.c
index d6ec0f5c30a..94b9e9de779 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.c
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.c
@@ -24,13 +24,13 @@
* documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies.
- *
+ *
* IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS 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
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
@@ -50,23 +50,22 @@ PG_FUNCTION_INFO_V1(levenshtein);
Datum
levenshtein(PG_FUNCTION_ARGS)
{
- char *str_s;
- char *str_s0;
- char *str_t;
- int cols = 0;
- int rows = 0;
- int *u_cells;
- int *l_cells;
- int *tmp;
- int i;
- int j;
+ char *str_s;
+ char *str_s0;
+ char *str_t;
+ int cols = 0;
+ int rows = 0;
+ int *u_cells;
+ int *l_cells;
+ int *tmp;
+ int i;
+ int j;
/*
- * Fetch the arguments.
- * str_s is referred to as the "source"
- * cols = length of source + 1 to allow for the initialization column
- * str_t is referred to as the "target", rows = length of target + 1
- * rows = length of target + 1 to allow for the initialization row
+ * Fetch the arguments. str_s is referred to as the "source" cols =
+ * length of source + 1 to allow for the initialization column str_t
+ * is referred to as the "target", rows = length of target + 1 rows =
+ * length of target + 1 to allow for the initialization row
*/
str_s = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(0))));
str_t = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(1))));
@@ -75,18 +74,19 @@ levenshtein(PG_FUNCTION_ARGS)
rows = strlen(str_t) + 1;
/*
- * Restrict the length of the strings being compared to something reasonable
- * because we will have to perform rows * cols calcualtions. If longer strings need to be
- * compared, increase MAX_LEVENSHTEIN_STRLEN to suit (but within your tolerance for
- * speed and memory usage).
+ * Restrict the length of the strings being compared to something
+ * reasonable because we will have to perform rows * cols
+ * calcualtions. If longer strings need to be compared, increase
+ * MAX_LEVENSHTEIN_STRLEN to suit (but within your tolerance for speed
+ * and memory usage).
*/
if ((cols > MAX_LEVENSHTEIN_STRLEN + 1) || (rows > MAX_LEVENSHTEIN_STRLEN + 1))
elog(ERROR, "levenshtein: Arguments may not exceed %d characters in length", MAX_LEVENSHTEIN_STRLEN);
/*
- * If either rows or cols is 0, the answer is the other value.
- * This makes sense since it would take that many insertions
- * the build a matching string
+ * If either rows or cols is 0, the answer is the other value. This
+ * makes sense since it would take that many insertions the build a
+ * matching string
*/
if (cols == 0)
@@ -96,8 +96,9 @@ levenshtein(PG_FUNCTION_ARGS)
PG_RETURN_INT32(cols);
/*
- * Allocate two vectors of integers. One will be used for the "upper" row,
- * the other for the "lower" row. Initialize the "upper" row to 0..cols
+ * Allocate two vectors of integers. One will be used for the "upper"
+ * row, the other for the "lower" row. Initialize the "upper" row to
+ * 0..cols
*/
u_cells = palloc(sizeof(int) * cols);
for (i = 0; i < cols; i++)
@@ -106,33 +107,35 @@ levenshtein(PG_FUNCTION_ARGS)
l_cells = palloc(sizeof(int) * cols);
/*
- * Use str_s0 to "rewind" the pointer to str_s in the nested for loop below
+ * Use str_s0 to "rewind" the pointer to str_s in the nested for loop
+ * below
*/
str_s0 = str_s;
/*
- * Loop throught the rows, starting at row 1. Row 0 is used for the initial
- * "upper" row.
+ * Loop throught the rows, starting at row 1. Row 0 is used for the
+ * initial "upper" row.
*/
for (j = 1; j < rows; j++)
{
/*
- * We'll always start with col 1,
- * and initialize lower row col 0 to j
+ * We'll always start with col 1, and initialize lower row col 0
+ * to j
*/
l_cells[0] = j;
for (i = 1; i < cols; i++)
{
- int c = 0;
- int c1 = 0;
- int c2 = 0;
- int c3 = 0;
+ int c = 0;
+ int c1 = 0;
+ int c2 = 0;
+ int c3 = 0;
/*
- * The "cost" value is 0 if the character at the current col position
- * in the source string, matches the character at the current row position
- * in the target string; cost is 1 otherwise.
+ * The "cost" value is 0 if the character at the current col
+ * position in the source string, matches the character at the
+ * current row position in the target string; cost is 1
+ * otherwise.
*/
c = ((CHAREQ(str_s, str_t)) ? 0 : 1);
@@ -152,8 +155,7 @@ levenshtein(PG_FUNCTION_ARGS)
c3 = u_cells[i - 1] + c;
/*
- * The lower right cell is set to the minimum
- * of c1, c2, c3
+ * The lower right cell is set to the minimum of c1, c2, c3
*/
l_cells[i] = (c1 < c2 ? c1 : c2) < c3 ? (c1 < c2 ? c1 : c2) : c3;
@@ -164,8 +166,8 @@ levenshtein(PG_FUNCTION_ARGS)
}
/*
- * Lower row now becomes the upper row, and the upper row
- * gets reused as the new lower row.
+ * Lower row now becomes the upper row, and the upper row gets
+ * reused as the new lower row.
*/
tmp = u_cells;
u_cells = l_cells;
@@ -183,8 +185,8 @@ levenshtein(PG_FUNCTION_ARGS)
}
/*
- * Because the final value (at position row, col) was swapped from
- * the lower row to the upper row, that's where we'll find it.
+ * Because the final value (at position row, col) was swapped from the
+ * lower row to the upper row, that's where we'll find it.
*/
PG_RETURN_INT32(u_cells[cols - 1]);
}
@@ -199,10 +201,10 @@ Datum
metaphone(PG_FUNCTION_ARGS)
{
int reqlen;
- char *str_i;
+ char *str_i;
size_t str_i_len;
- char *metaph;
- text *result_text;
+ char *metaph;
+ text *result_text;
int retval;
str_i = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(0))));
@@ -240,7 +242,7 @@ metaphone(PG_FUNCTION_ARGS)
}
-/*
+/*
* Original code by Michael G Schwern starts here.
* Code slightly modified for use as PostgreSQL
* function (palloc, etc). Original includes
@@ -255,26 +257,28 @@ metaphone(PG_FUNCTION_ARGS)
/* Look at the current letter in the word */
#define Curr_Letter (toupper(word[w_idx]))
/* Go N letters back. */
-#define Look_Back_Letter(n) (w_idx >= n ? toupper(word[w_idx-n]) : '\0')
+#define Look_Back_Letter(n) (w_idx >= n ? toupper(word[w_idx-n]) : '\0')
/* Previous letter. I dunno, should this return null on failure? */
#define Prev_Letter (Look_Back_Letter(1))
/* Look two letters down. It makes sure you don't walk off the string. */
#define After_Next_Letter (Next_Letter != '\0' ? toupper(word[w_idx+2]) \
- : '\0')
+ : '\0')
#define Look_Ahead_Letter(n) (toupper(Lookahead(word+w_idx, n)))
-
+
/* Allows us to safely look ahead an arbitrary # of letters */
/* I probably could have just used strlen... */
-char Lookahead(char * word, int how_far) {
- char letter_ahead = '\0'; /* null by default */
- int idx;
- for(idx = 0; word[idx] != '\0' && idx < how_far; idx++);
- /* Edge forward in the string... */
-
- letter_ahead = word[idx]; /* idx will be either == to how_far or
- * at the end of the string
- */
+char
+Lookahead(char *word, int how_far)
+{
+ char letter_ahead = '\0'; /* null by default */
+ int idx;
+
+ for (idx = 0; word[idx] != '\0' && idx < how_far; idx++);
+ /* Edge forward in the string... */
+
+ letter_ahead = word[idx]; /* idx will be either == to how_far or at
+ * the end of the string */
return letter_ahead;
}
@@ -282,29 +286,30 @@ char Lookahead(char * word, int how_far) {
/* phonize one letter */
#define Phonize(c) do {(*phoned_word)[p_idx++] = c;} while (0)
/* Slap a null character on the end of the phoned word */
-#define End_Phoned_Word do {(*phoned_word)[p_idx] = '\0';} while (0)
+#define End_Phoned_Word do {(*phoned_word)[p_idx] = '\0';} while (0)
/* How long is the phoned word? */
#define Phone_Len (p_idx)
/* Note is a letter is a 'break' in the word */
-#define Isbreak(c) (!isalpha(c))
-
-
-int _metaphone (
- /* IN */
- char * word,
- int max_phonemes,
- /* OUT */
- char ** phoned_word
-) {
- int w_idx = 0; /* point in the phonization we're at. */
- int p_idx = 0; /* end of the phoned phrase */
-
+#define Isbreak(c) (!isalpha(c))
+
+
+int
+_metaphone(
+ /* IN */
+ char *word,
+ int max_phonemes,
+ /* OUT */
+ char **phoned_word
+)
+{
+ int w_idx = 0; /* point in the phonization we're at. */
+ int p_idx = 0; /* end of the phoned phrase */
+
/*-- Parameter checks --*/
/*
- * Shouldn't be necessary, but left these here anyway
- * jec Aug 3, 2001
+ * Shouldn't be necessary, but left these here anyway jec Aug 3, 2001
*/
/* Negative phoneme length is meaningless */
@@ -314,13 +319,16 @@ int _metaphone (
/* Empty/null string is meaningless */
if ((word == NULL) || !(strlen(word) > 0))
elog(ERROR, "metaphone: Input string length must be > 0");
-
+
/*-- Allocate memory for our phoned_phrase --*/
- if (max_phonemes == 0) { /* Assume largest possible */
- *phoned_word = palloc(sizeof(char) * strlen(word) + 1);
+ if (max_phonemes == 0)
+ { /* Assume largest possible */
+ *phoned_word = palloc(sizeof(char) * strlen(word) +1);
if (!*phoned_word)
return META_ERROR;
- } else {
+ }
+ else
+ {
*phoned_word = palloc(sizeof(char) * max_phonemes + 1);
if (!*phoned_word)
return META_ERROR;
@@ -328,62 +336,70 @@ int _metaphone (
/*-- The first phoneme has to be processed specially. --*/
/* Find our first letter */
- for( ; !isalpha(Curr_Letter); w_idx++ ) {
+ for (; !isalpha(Curr_Letter); w_idx++)
+ {
/* On the off chance we were given nothing but crap... */
- if( Curr_Letter == '\0' ) {
+ if (Curr_Letter == '\0')
+ {
End_Phoned_Word
- return META_SUCCESS; /* For testing */
+ return META_SUCCESS; /* For testing */
}
- }
-
- switch (Curr_Letter) {
- /* AE becomes E */
+ }
+
+ switch (Curr_Letter)
+ {
+ /* AE becomes E */
case 'A':
- if( Next_Letter == 'E' ) {
+ if (Next_Letter == 'E')
+ {
Phonize('E');
- w_idx+=2;
+ w_idx += 2;
}
/* Remember, preserve vowels at the beginning */
- else {
+ else
+ {
Phonize('A');
w_idx++;
}
break;
- /* [GKP]N becomes N */
+ /* [GKP]N becomes N */
case 'G':
case 'K':
case 'P':
- if( Next_Letter == 'N' ) {
+ if (Next_Letter == 'N')
+ {
Phonize('N');
- w_idx+=2;
+ w_idx += 2;
}
break;
- /* WH becomes H,
- WR becomes R
- W if followed by a vowel */
+
+ /*
+ * WH becomes H, WR becomes R W if followed by a vowel
+ */
case 'W':
- if( Next_Letter == 'H' ||
- Next_Letter == 'R' )
+ if (Next_Letter == 'H' ||
+ Next_Letter == 'R')
{
- Phonize(Next_Letter);
- w_idx+=2;
+ Phonize(Next_Letter);
+ w_idx += 2;
}
- else if ( isvowel(Next_Letter) ) {
- Phonize('W');
- w_idx+=2;
+ else if (isvowel(Next_Letter))
+ {
+ Phonize('W');
+ w_idx += 2;
}
/* else ignore */
break;
- /* X becomes S */
+ /* X becomes S */
case 'X':
Phonize('S');
w_idx++;
break;
- /* Vowels are kept */
- /* We did A already
- case 'A':
- case 'a':
- */
+ /* Vowels are kept */
+
+ /*
+ * We did A already case 'A': case 'a':
+ */
case 'E':
case 'I':
case 'O':
@@ -395,220 +411,235 @@ int _metaphone (
/* do nothing */
break;
}
-
-
-
+
+
+
/* On to the metaphoning */
- for(; Curr_Letter != '\0' &&
- (max_phonemes == 0 || Phone_Len < max_phonemes);
- w_idx++) {
- /* How many letters to skip because an eariler encoding handled
- * multiple letters */
- unsigned short int skip_letter = 0;
-
-
- /* THOUGHT: It would be nice if, rather than having things like...
- * well, SCI. For SCI you encode the S, then have to remember
- * to skip the C. So the phonome SCI invades both S and C. It would
- * be better, IMHO, to skip the C from the S part of the encoding.
- * Hell, I'm trying it.
+ for (; Curr_Letter != '\0' &&
+ (max_phonemes == 0 || Phone_Len < max_phonemes);
+ w_idx++)
+ {
+ /*
+ * How many letters to skip because an eariler encoding handled
+ * multiple letters
*/
-
+ unsigned short int skip_letter = 0;
+
+
+ /*
+ * THOUGHT: It would be nice if, rather than having things
+ * like... well, SCI. For SCI you encode the S, then have to
+ * remember to skip the C. So the phonome SCI invades both S and
+ * C. It would be better, IMHO, to skip the C from the S part of
+ * the encoding. Hell, I'm trying it.
+ */
+
/* Ignore non-alphas */
- if( !isalpha(Curr_Letter) )
+ if (!isalpha(Curr_Letter))
continue;
-
+
/* Drop duplicates, except CC */
- if( Curr_Letter == Prev_Letter &&
- Curr_Letter != 'C' )
+ if (Curr_Letter == Prev_Letter &&
+ Curr_Letter != 'C')
continue;
-
- switch (Curr_Letter) {
- /* B -> B unless in MB */
+
+ switch (Curr_Letter)
+ {
+ /* B -> B unless in MB */
case 'B':
- if( Prev_Letter != 'M' )
+ if (Prev_Letter != 'M')
Phonize('B');
break;
- /* 'sh' if -CIA- or -CH, but not SCH, except SCHW.
- * (SCHW is handled in S)
- * S if -CI-, -CE- or -CY-
- * dropped if -SCI-, SCE-, -SCY- (handed in S)
- * else K
- */
+
+ /*
+ * 'sh' if -CIA- or -CH, but not SCH, except SCHW. (SCHW
+ * is handled in S) S if -CI-, -CE- or -CY- dropped if
+ * -SCI-, SCE-, -SCY- (handed in S) else K
+ */
case 'C':
- if( MAKESOFT(Next_Letter) ) { /* C[IEY] */
- if( After_Next_Letter == 'A' &&
- Next_Letter == 'I' ) { /* CIA */
+ if (MAKESOFT(Next_Letter))
+ { /* C[IEY] */
+ if (After_Next_Letter == 'A' &&
+ Next_Letter == 'I')
+ { /* CIA */
Phonize(SH);
}
/* SC[IEY] */
- else if ( Prev_Letter == 'S' ) {
- /* Dropped */
- }
- else {
- Phonize('S');
+ else if (Prev_Letter == 'S')
+ {
+ /* Dropped */
}
+ else
+ Phonize('S');
}
- else if ( Next_Letter == 'H' ) {
+ else if (Next_Letter == 'H')
+ {
#ifndef USE_TRADITIONAL_METAPHONE
- if( After_Next_Letter == 'R' ||
- Prev_Letter == 'S' ) { /* Christ, School */
+ if (After_Next_Letter == 'R' ||
+ Prev_Letter == 'S')
+ { /* Christ, School */
Phonize('K');
}
- else {
+ else
Phonize(SH);
- }
#else
Phonize(SH);
#endif
skip_letter++;
}
- else {
+ else
Phonize('K');
- }
break;
- /* J if in -DGE-, -DGI- or -DGY-
- * else T
- */
+
+ /*
+ * J if in -DGE-, -DGI- or -DGY- else T
+ */
case 'D':
- if( Next_Letter == 'G' &&
- MAKESOFT(After_Next_Letter) ) {
+ if (Next_Letter == 'G' &&
+ MAKESOFT(After_Next_Letter))
+ {
Phonize('J');
skip_letter++;
}
else
Phonize('T');
break;
- /* F if in -GH and not B--GH, D--GH, -H--GH, -H---GH
- * else dropped if -GNED, -GN,
- * else dropped if -DGE-, -DGI- or -DGY- (handled in D)
- * else J if in -GE-, -GI, -GY and not GG
- * else K
- */
+
+ /*
+ * F if in -GH and not B--GH, D--GH, -H--GH, -H---GH else
+ * dropped if -GNED, -GN, else dropped if -DGE-, -DGI- or
+ * -DGY- (handled in D) else J if in -GE-, -GI, -GY and
+ * not GG else K
+ */
case 'G':
- if( Next_Letter == 'H' ) {
- if( !( NOGHTOF(Look_Back_Letter(3)) ||
- Look_Back_Letter(4) == 'H' ) ) {
+ if (Next_Letter == 'H')
+ {
+ if (!(NOGHTOF(Look_Back_Letter(3)) ||
+ Look_Back_Letter(4) == 'H'))
+ {
Phonize('F');
skip_letter++;
}
- else {
+ else
+ {
/* silent */
}
}
- else if( Next_Letter == 'N' ) {
- if( Isbreak(After_Next_Letter) ||
- ( After_Next_Letter == 'E' &&
- Look_Ahead_Letter(3) == 'D' ) ) {
+ else if (Next_Letter == 'N')
+ {
+ if (Isbreak(After_Next_Letter) ||
+ (After_Next_Letter == 'E' &&
+ Look_Ahead_Letter(3) == 'D'))
+ {
/* dropped */
}
else
Phonize('K');
}
- else if( MAKESOFT(Next_Letter) &&
- Prev_Letter != 'G' ) {
+ else if (MAKESOFT(Next_Letter) &&
+ Prev_Letter != 'G')
Phonize('J');
- }
- else {
+ else
Phonize('K');
- }
break;
- /* H if before a vowel and not after C,G,P,S,T */
+ /* H if before a vowel and not after C,G,P,S,T */
case 'H':
- if( isvowel(Next_Letter) &&
- !AFFECTH(Prev_Letter) )
+ if (isvowel(Next_Letter) &&
+ !AFFECTH(Prev_Letter))
Phonize('H');
break;
- /* dropped if after C
- * else K
- */
+
+ /*
+ * dropped if after C else K
+ */
case 'K':
- if( Prev_Letter != 'C' )
+ if (Prev_Letter != 'C')
Phonize('K');
break;
- /* F if before H
- * else P
- */
+
+ /*
+ * F if before H else P
+ */
case 'P':
- if( Next_Letter == 'H' ) {
+ if (Next_Letter == 'H')
Phonize('F');
- }
- else {
+ else
Phonize('P');
- }
break;
- /* K
- */
+
+ /*
+ * K
+ */
case 'Q':
Phonize('K');
break;
- /* 'sh' in -SH-, -SIO- or -SIA- or -SCHW-
- * else S
- */
+
+ /*
+ * 'sh' in -SH-, -SIO- or -SIA- or -SCHW- else S
+ */
case 'S':
- if( Next_Letter == 'I' &&
- ( After_Next_Letter == 'O' ||
- After_Next_Letter == 'A' ) ) {
+ if (Next_Letter == 'I' &&
+ (After_Next_Letter == 'O' ||
+ After_Next_Letter == 'A'))
Phonize(SH);
- }
- else if ( Next_Letter == 'H' ) {
+ else if (Next_Letter == 'H')
+ {
Phonize(SH);
skip_letter++;
}
#ifndef USE_TRADITIONAL_METAPHONE
- else if ( Next_Letter == 'C' &&
- Look_Ahead_Letter(2) == 'H' &&
- Look_Ahead_Letter(3) == 'W' ) {
+ else if (Next_Letter == 'C' &&
+ Look_Ahead_Letter(2) == 'H' &&
+ Look_Ahead_Letter(3) == 'W')
+ {
Phonize(SH);
skip_letter += 2;
}
#endif
- else {
+ else
Phonize('S');
- }
break;
- /* 'sh' in -TIA- or -TIO-
- * else 'th' before H
- * else T
- */
+
+ /*
+ * 'sh' in -TIA- or -TIO- else 'th' before H else T
+ */
case 'T':
- if( Next_Letter == 'I' &&
- ( After_Next_Letter == 'O' ||
- After_Next_Letter == 'A' ) ) {
+ if (Next_Letter == 'I' &&
+ (After_Next_Letter == 'O' ||
+ After_Next_Letter == 'A'))
Phonize(SH);
- }
- else if ( Next_Letter == 'H' ) {
+ else if (Next_Letter == 'H')
+ {
Phonize(TH);
skip_letter++;
}
- else {
+ else
Phonize('T');
- }
break;
- /* F */
+ /* F */
case 'V':
Phonize('F');
break;
- /* W before a vowel, else dropped */
+ /* W before a vowel, else dropped */
case 'W':
- if( isvowel(Next_Letter) )
+ if (isvowel(Next_Letter))
Phonize('W');
break;
- /* KS */
+ /* KS */
case 'X':
Phonize('K');
Phonize('S');
break;
- /* Y if followed by a vowel */
+ /* Y if followed by a vowel */
case 'Y':
- if( isvowel(Next_Letter) )
+ if (isvowel(Next_Letter))
Phonize('Y');
break;
- /* S */
+ /* S */
case 'Z':
Phonize('S');
break;
- /* No transformation */
+ /* No transformation */
case 'F':
case 'J':
case 'L':
@@ -620,15 +651,15 @@ int _metaphone (
default:
/* nothing */
break;
- } /* END SWITCH */
-
+ } /* END SWITCH */
+
w_idx += skip_letter;
- } /* END FOR */
-
+ } /* END FOR */
+
End_Phoned_Word;
-
- return(META_SUCCESS);
-} /* END metaphone */
+
+ return (META_SUCCESS);
+} /* END metaphone */
/*
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.h b/contrib/fuzzystrmatch/fuzzystrmatch.h
index 9a9be1e9a01..9c539818434 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.h
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.h
@@ -24,13 +24,13 @@
* documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies.
- *
+ *
* IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS 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
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
@@ -88,7 +88,7 @@ static const char *soundex_table = "01230120022455012623010202";
*/
#define MAX_METAPHONE_STRLEN 255
-/*
+/*
* Original code by Michael G Schwern starts here.
* Code slightly modified for use as PostgreSQL
* function (combined *.h into here).
@@ -96,26 +96,26 @@ static const char *soundex_table = "01230120022455012623010202";
/**************************************************************************
metaphone -- Breaks english phrases down into their phonemes.
-
+
Input
- word -- An english word to be phonized
- max_phonemes -- How many phonemes to calculate. If 0, then it
+ word -- An english word to be phonized
+ max_phonemes -- How many phonemes to calculate. If 0, then it
will phonize the entire phrase.
- phoned_word -- The final phonized word. (We'll allocate the
+ phoned_word -- The final phonized word. (We'll allocate the
memory.)
Output
error -- A simple error flag, returns TRUE or FALSE
-
- NOTES: ALL non-alpha characters are ignored, this includes whitespace,
+
+ NOTES: ALL non-alpha characters are ignored, this includes whitespace,
although non-alpha characters will break up phonemes.
****************************************************************************/
/**************************************************************************
my constants -- constants I like
-
+
Probably redundant.
-
+
***************************************************************************/
#define META_ERROR FALSE
@@ -123,22 +123,23 @@ static const char *soundex_table = "01230120022455012623010202";
#define META_FAILURE FALSE
-/* I add modifications to the traditional metaphone algorithm that you
+/* I add modifications to the traditional metaphone algorithm that you
might find in books. Define this if you want metaphone to behave
traditionally */
#undef USE_TRADITIONAL_METAPHONE
/* Special encodings */
-#define SH 'X'
+#define SH 'X'
#define TH '0'
-char Lookahead(char * word, int how_far);
-int _metaphone (
- /* IN */
- char * word,
- int max_phonemes,
- /* OUT */
- char ** phoned_word
+char Lookahead(char *word, int how_far);
+int
+_metaphone(
+ /* IN */
+ char *word,
+ int max_phonemes,
+ /* OUT */
+ char **phoned_word
);
/* Metachar.h ... little bits about characters for metaphone */
@@ -146,9 +147,9 @@ int _metaphone (
/*-- Character encoding array & accessing macros --*/
/* Stolen directly out of the book... */
-char _codes[26] = {
- 1,16,4,16,9,2,4,16,9,2,0,2,2,2,1,4,0,2,4,4,1,0,0,0,8,0
-/* a b c d e f g h i j k l m n o p q r s t u v w x y z */
+char _codes[26] = {
+ 1, 16, 4, 16, 9, 2, 4, 16, 9, 2, 0, 2, 2, 2, 1, 4, 0, 2, 4, 4, 1, 0, 0, 0, 8, 0
+/* a b c d e f g h i j k l m n o p q r s t u v w x y z */
};
@@ -157,16 +158,15 @@ char _codes[26] = {
#define isvowel(c) (ENCODE(c) & 1) /* AEIOU */
/* These letters are passed through unchanged */
-#define NOCHANGE(c) (ENCODE(c) & 2) /* FJMNR */
+#define NOCHANGE(c) (ENCODE(c) & 2) /* FJMNR */
/* These form dipthongs when preceding H */
-#define AFFECTH(c) (ENCODE(c) & 4) /* CGPST */
+#define AFFECTH(c) (ENCODE(c) & 4) /* CGPST */
/* These make C and G soft */
-#define MAKESOFT(c) (ENCODE(c) & 8) /* EIY */
+#define MAKESOFT(c) (ENCODE(c) & 8) /* EIY */
/* These prevent GH from becoming F */
-#define NOGHTOF(c) (ENCODE(c) & 16) /* BDH */
-
+#define NOGHTOF(c) (ENCODE(c) & 16) /* BDH */
#endif /* FUZZYSTRMATCH_H */
diff --git a/contrib/lo/lo.c b/contrib/lo/lo.c
index 1dcdc358501..431756e9a77 100644
--- a/contrib/lo/lo.c
+++ b/contrib/lo/lo.c
@@ -1,7 +1,7 @@
/*
* PostgreSQL type definitions for managed LargeObjects.
*
- * $Header: /cvsroot/pgsql/contrib/lo/lo.c,v 1.8 2001/03/22 03:59:09 momjian Exp $
+ * $Header: /cvsroot/pgsql/contrib/lo/lo.c,v 1.9 2001/10/25 05:49:19 momjian Exp $
*
*/
@@ -33,8 +33,8 @@ typedef Oid Blob;
*/
Blob *lo_in(char *str); /* Create from String */
-char *lo_out(Blob * addr);/* Output oid as String */
-Oid lo_oid(Blob * addr);/* Return oid as an oid */
+char *lo_out(Blob * addr); /* Output oid as String */
+Oid lo_oid(Blob * addr); /* Return oid as an oid */
Blob *lo(Oid oid); /* Return Blob based on oid */
Datum lo_manage(PG_FUNCTION_ARGS); /* Trigger handler */
@@ -64,7 +64,6 @@ lo_in(char *str)
}
else
{
-
/*
* There is no Oid passed, so create a new one
*/
@@ -140,7 +139,7 @@ lo_manage(PG_FUNCTION_ARGS)
TupleDesc tupdesc; /* Tuple Descriptor */
HeapTuple rettuple; /* Tuple to be returned */
bool isdelete; /* are we deleting? */
- HeapTuple newtuple = NULL;/* The new value for tuple */
+ HeapTuple newtuple = NULL; /* The new value for tuple */
HeapTuple trigtuple; /* The original value of tuple */
if (!CALLED_AS_TRIGGER(fcinfo))
diff --git a/contrib/mSQL-interface/mpgsql.c b/contrib/mSQL-interface/mpgsql.c
index 5b35fe1638e..8b59485471c 100644
--- a/contrib/mSQL-interface/mpgsql.c
+++ b/contrib/mSQL-interface/mpgsql.c
@@ -229,7 +229,7 @@ msqlGetSequenceInfo(int a, char *b)
{
}
-m_field *
+m_field *
msqlFetchField(m_result * mr)
{
m_field *m = (m_field *) mr->fieldCursor;
@@ -242,7 +242,7 @@ msqlFetchField(m_result * mr)
return NULL;
}
-m_result *
+m_result *
msqlListDBs(int a)
{
m_result *m;
@@ -256,7 +256,7 @@ msqlListDBs(int a)
return NULL;
}
-m_result *
+m_result *
msqlListTables(int a)
{
m_result *m;
@@ -272,13 +272,13 @@ msqlListTables(int a)
return NULL;
}
-m_result *
+m_result *
msqlListFields(int a, char *b)
{
}
-m_result *
+m_result *
msqlListIndex(int a, char *b, char *c)
{
m_result *m;
@@ -294,7 +294,7 @@ msqlListIndex(int a, char *b, char *c)
return NULL;
}
-m_result *
+m_result *
msqlStoreResult(void)
{
if (queryres)
diff --git a/contrib/miscutil/misc_utils.h b/contrib/miscutil/misc_utils.h
index f4577f49de4..0fb07012dfa 100644
--- a/contrib/miscutil/misc_utils.h
+++ b/contrib/miscutil/misc_utils.h
@@ -6,5 +6,4 @@ int unlisten(char *relname);
int max(int x, int y);
int min(int x, int y);
int active_listeners(text *relname);
-
#endif
diff --git a/contrib/pg_controldata/pg_controldata.c b/contrib/pg_controldata/pg_controldata.c
index bf7209cb294..1cbd352caf6 100644
--- a/contrib/pg_controldata/pg_controldata.c
+++ b/contrib/pg_controldata/pg_controldata.c
@@ -6,7 +6,7 @@
* copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001;
* licence: BSD
*
- * $Header: /cvsroot/pgsql/contrib/pg_controldata/Attic/pg_controldata.c,v 1.4 2001/09/06 10:49:29 petere Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_controldata/Attic/pg_controldata.c,v 1.5 2001/10/25 05:49:19 momjian Exp $
*/
#include "postgres.h"
@@ -24,7 +24,7 @@ dbState(DBState state)
{
switch (state)
{
- case DB_STARTUP:
+ case DB_STARTUP:
return "STARTUP";
case DB_SHUTDOWNED:
return "SHUTDOWNED";
diff --git a/contrib/pg_dumplo/lo_export.c b/contrib/pg_dumplo/lo_export.c
index ef625497911..adb216fee2f 100644
--- a/contrib/pg_dumplo/lo_export.c
+++ b/contrib/pg_dumplo/lo_export.c
@@ -1,7 +1,7 @@
/* -------------------------------------------------------------------------
* pg_dumplo
*
- * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_export.c,v 1.7 2001/03/22 06:16:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_export.c,v 1.8 2001/10/25 05:49:19 momjian Exp $
*
* Karel Zak 1999-2000
* -------------------------------------------------------------------------
@@ -32,14 +32,14 @@ load_lolist(LODumpMaster * pgLO)
int i;
int n;
- /*
+ /*
* Now find any candidate tables who have columns of type oid.
*
* NOTE: System tables including pg_largeobject will be ignored.
* Otherwise we'd end up dumping all LOs, referenced or not.
*
- * NOTE: the system oid column is ignored, as it has attnum < 1.
- * This shouldn't matter for correctness, but it saves time.
+ * NOTE: the system oid column is ignored, as it has attnum < 1. This
+ * shouldn't matter for correctness, but it saves time.
*/
pgLO->res = PQexec(pgLO->conn,
"SELECT c.relname, a.attname "
@@ -107,8 +107,7 @@ pglo_export(LODumpMaster * pgLO)
for (ll = pgLO->lolist; ll->lo_table != NULL; ll++)
{
-
- /*
+ /*
* Query: find the LOs referenced by this column
*/
sprintf(Qbuff, "SELECT DISTINCT l.loid FROM \"%s\" x, pg_largeobject l WHERE x.\"%s\" = l.loid",
diff --git a/contrib/pg_dumplo/lo_import.c b/contrib/pg_dumplo/lo_import.c
index a75e905be1e..aec2aa0ceed 100644
--- a/contrib/pg_dumplo/lo_import.c
+++ b/contrib/pg_dumplo/lo_import.c
@@ -1,7 +1,7 @@
/* -------------------------------------------------------------------------
* pg_dumplo
*
- * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_import.c,v 1.5 2001/03/22 06:16:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_import.c,v 1.6 2001/10/25 05:49:19 momjian Exp $
*
* Karel Zak 1999-2000
* -------------------------------------------------------------------------
@@ -50,7 +50,7 @@ pglo_import(LODumpMaster * pgLO)
sprintf(lo_path, "%s/%s", pgLO->space, path);
- /*
+ /*
* Import LO
*/
if ((new_oid = lo_import(pgLO->conn, lo_path)) == 0)
@@ -78,7 +78,7 @@ pglo_import(LODumpMaster * pgLO)
pgLO->counter++;
- /*
+ /*
* UPDATE oid in tab
*/
sprintf(Qbuff, "UPDATE \"%s\" SET \"%s\"=%u WHERE \"%s\"=%u",
diff --git a/contrib/pg_dumplo/main.c b/contrib/pg_dumplo/main.c
index 211753b6059..45f5dc63129 100644
--- a/contrib/pg_dumplo/main.c
+++ b/contrib/pg_dumplo/main.c
@@ -1,7 +1,7 @@
/* -------------------------------------------------------------------------
* pg_dumplo
*
- * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.8 2001/03/22 06:16:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.9 2001/10/25 05:49:19 momjian Exp $
*
* Karel Zak 1999-2000
* -------------------------------------------------------------------------
@@ -152,7 +152,7 @@ main(int argc, char **argv)
exit(RE_ERROR);
}
- /*
+ /*
* Check space
*/
if (!pgLO->space && !pgLO->action == ACTION_SHOW)
@@ -170,7 +170,7 @@ main(int argc, char **argv)
exit(RE_ERROR);
}
- /*
+ /*
* Make connection
*/
pgLO->conn = PQsetdbLogin(pgLO->host, NULL, NULL, NULL, pgLO->db,
@@ -186,7 +186,7 @@ main(int argc, char **argv)
pgLO->user = PQuser(pgLO->conn);
- /*
+ /*
* Init index file
*/
if (pgLO->action != ACTION_SHOW)
@@ -304,7 +304,6 @@ usage()
"-q run quietly\n"
"-w not dump, but show all LO in DB\n"
); /* puts() */
-
#endif
puts(
diff --git a/contrib/pg_dumplo/pg_dumplo.h b/contrib/pg_dumplo/pg_dumplo.h
index 3ab25495cb1..1c76cfb624c 100644
--- a/contrib/pg_dumplo/pg_dumplo.h
+++ b/contrib/pg_dumplo/pg_dumplo.h
@@ -1,7 +1,7 @@
/* -------------------------------------------------------------------------
* pg_dumplo
*
- * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/pg_dumplo.h,v 1.4 2001/03/22 03:59:10 momjian Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/pg_dumplo.h,v 1.5 2001/10/25 05:49:19 momjian Exp $
*
* Karel Zak 1999-2000
* -------------------------------------------------------------------------
@@ -64,11 +64,11 @@ typedef struct
typedef enum
{
- ACTION_NONE,
- ACTION_SHOW,
- ACTION_EXPORT_ATTR,
- ACTION_EXPORT_ALL,
- ACTION_IMPORT
+ ACTION_NONE,
+ ACTION_SHOW,
+ ACTION_EXPORT_ATTR,
+ ACTION_EXPORT_ALL,
+ ACTION_IMPORT
} PGLODUMP_ACTIONS;
extern char *progname;
@@ -78,5 +78,4 @@ extern void index_file(LODumpMaster * pgLO);
extern void load_lolist(LODumpMaster * pgLO);
extern void pglo_export(LODumpMaster * pgLO);
extern void pglo_import(LODumpMaster * pgLO);
-
#endif /* PG_DUMPLO_H */
diff --git a/contrib/pg_resetxlog/pg_resetxlog.c b/contrib/pg_resetxlog/pg_resetxlog.c
index 20db41ccf49..b6981345e2f 100644
--- a/contrib/pg_resetxlog/pg_resetxlog.c
+++ b/contrib/pg_resetxlog/pg_resetxlog.c
@@ -23,7 +23,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/contrib/pg_resetxlog/Attic/pg_resetxlog.c,v 1.7 2001/10/25 00:55:48 momjian Exp $
+ * $Header: /cvsroot/pgsql/contrib/pg_resetxlog/Attic/pg_resetxlog.c,v 1.8 2001/10/25 05:49:19 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -147,7 +147,6 @@ ReadControlFile(void)
if ((fd = open(ControlFilePath, O_RDONLY)) < 0)
{
-
/*
* If pg_control is not there at all, or we can't read it, the
* odds are we've been handed a bad DataDir path, so give up. User
@@ -412,7 +411,6 @@ CheckControlVersion0(char *buffer, int len)
(char *) malloc(_INTL_MAXLOGRECSZ));
if (record == NULL)
{
-
/*
* We have to guess at the checkpoint contents.
*/
@@ -493,7 +491,7 @@ ReadRecordV0(XLogRecPtr *RecPtr, char *buffer)
readFile = XLogFileOpen(readId, readSeg);
if (readFile < 0)
goto next_record_is_invalid;
- readOff = (uint32) (-1);/* force read to occur below */
+ readOff = (uint32) (-1); /* force read to occur below */
}
targetPageOff = ((RecPtr->xrecoff % XLogSegSize) / BLCKSZ) * BLCKSZ;
@@ -617,7 +615,6 @@ GuessControlValues(void)
{
#ifdef USE_LOCALE
char *localeptr;
-
#endif
/*
diff --git a/contrib/pgbench/pgbench.c b/contrib/pgbench/pgbench.c
index 5fc18fe6889..c8aa0c14b72 100644
--- a/contrib/pgbench/pgbench.c
+++ b/contrib/pgbench/pgbench.c
@@ -1,5 +1,5 @@
/*
- * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.11 2001/10/24 08:07:22 ishii Exp $
+ * $Header: /cvsroot/pgsql/contrib/pgbench/pgbench.c,v 1.12 2001/10/25 05:49:19 momjian Exp $
*
* pgbench: a simple TPC-B like benchmark program for PostgreSQL
* written by Tatsuo Ishii
@@ -39,7 +39,6 @@
/* for getrlimit */
#include <sys/resource.h>
-
#endif /* WIN32 */
/********************************************************************
@@ -67,7 +66,8 @@ int tps = 1;
int remains; /* number of remained clients */
-int is_connect; /* establish connection for each transactoin */
+int is_connect; /* establish connection for each
+ * transactoin */
char *pghost = "";
char *pgport = NULL;
@@ -107,31 +107,32 @@ getrand(int min, int max)
}
/* set up a connection to the backend */
-static PGconn *doConnect()
+static PGconn *
+doConnect()
{
- PGconn *con;
-
- con = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName,
- login, pwd);
- if (con == NULL)
- {
- fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
- fprintf(stderr, "Memory allocatin problem?\n");
- return(NULL);
- }
-
- if (PQstatus(con) == CONNECTION_BAD)
- {
- fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
-
- if (PQerrorMessage(con))
- fprintf(stderr, "%s", PQerrorMessage(con));
- else
- fprintf(stderr, "No explanation from the backend\n");
+ PGconn *con;
+
+ con = PQsetdbLogin(pghost, pgport, pgoptions, pgtty, dbName,
+ login, pwd);
+ if (con == NULL)
+ {
+ fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
+ fprintf(stderr, "Memory allocatin problem?\n");
+ return (NULL);
+ }
+
+ if (PQstatus(con) == CONNECTION_BAD)
+ {
+ fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
+
+ if (PQerrorMessage(con))
+ fprintf(stderr, "%s", PQerrorMessage(con));
+ else
+ fprintf(stderr, "No explanation from the backend\n");
- return(NULL);
- }
- return (con);
+ return (NULL);
+ }
+ return (con);
}
/* throw away response from backend */
@@ -162,7 +163,7 @@ check(CState * state, PGresult *res, int n, int good)
st->con = NULL;
return (-1);
}
- return (0); /* OK */
+ return (0); /* OK */
}
/* process a transaction */
@@ -242,8 +243,8 @@ doOne(CState * state, int n, int debug)
if (is_connect)
{
- PQfinish(st->con);
- st->con = NULL;
+ PQfinish(st->con);
+ st->con = NULL;
}
if (++st->cnt >= nxacts)
@@ -251,8 +252,8 @@ doOne(CState * state, int n, int debug)
remains--; /* I've done */
if (st->con != NULL)
{
- PQfinish(st->con);
- st->con = NULL;
+ PQfinish(st->con);
+ st->con = NULL;
}
return;
}
@@ -267,15 +268,15 @@ doOne(CState * state, int n, int debug)
if (st->con == NULL)
{
- if ((st->con = doConnect()) == NULL)
- {
- fprintf(stderr, "Client %d aborted in establishing connection.\n",
- n);
- remains--; /* I've aborted */
- PQfinish(st->con);
- st->con = NULL;
- return;
- }
+ if ((st->con = doConnect()) == NULL)
+ {
+ fprintf(stderr, "Client %d aborted in establishing connection.\n",
+ n);
+ remains--; /* I've aborted */
+ PQfinish(st->con);
+ st->con = NULL;
+ return;
+ }
}
switch (st->state)
@@ -358,8 +359,8 @@ doSelectOnly(CState * state, int n, int debug)
if (is_connect)
{
- PQfinish(st->con);
- st->con = NULL;
+ PQfinish(st->con);
+ st->con = NULL;
}
if (++st->cnt >= nxacts)
@@ -367,8 +368,8 @@ doSelectOnly(CState * state, int n, int debug)
remains--; /* I've done */
if (st->con != NULL)
{
- PQfinish(st->con);
- st->con = NULL;
+ PQfinish(st->con);
+ st->con = NULL;
}
return;
}
@@ -383,15 +384,15 @@ doSelectOnly(CState * state, int n, int debug)
if (st->con == NULL)
{
- if ((st->con = doConnect()) == NULL)
- {
- fprintf(stderr, "Client %d aborted in establishing connection.\n",
- n);
- remains--; /* I've aborted */
- PQfinish(st->con);
- st->con = NULL;
- return;
- }
+ if ((st->con = doConnect()) == NULL)
+ {
+ fprintf(stderr, "Client %d aborted in establishing connection.\n",
+ n);
+ remains--; /* I've aborted */
+ PQfinish(st->con);
+ st->con = NULL;
+ return;
+ }
}
switch (st->state)
@@ -450,7 +451,7 @@ init()
int i;
if ((con = doConnect()) == NULL)
- exit(1);
+ exit(1);
for (i = 0; i < (sizeof(DDLs) / sizeof(char *)); i++)
{
@@ -532,29 +533,30 @@ init()
if (j % 10000 == 0)
{
/*
- * every 10000 tuples, we commit the copy command.
- * this should avoid generating too much WAL logs
+ * every 10000 tuples, we commit the copy command. this should
+ * avoid generating too much WAL logs
*/
fprintf(stderr, "%d tuples done.\n", j);
if (PQputline(con, "\\.\n"))
{
- fprintf(stderr, "very last PQputline failed\n");
- exit(1);
+ fprintf(stderr, "very last PQputline failed\n");
+ exit(1);
}
if (PQendcopy(con))
{
- fprintf(stderr, "PQendcopy failed\n");
- exit(1);
+ fprintf(stderr, "PQendcopy failed\n");
+ exit(1);
}
+
/*
* do a checkpoint to purge the old WAL logs
*/
res = PQexec(con, "checkpoint");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
- fprintf(stderr, "%s", PQerrorMessage(con));
- exit(1);
+ fprintf(stderr, "%s", PQerrorMessage(con));
+ exit(1);
}
}
}
@@ -634,7 +636,6 @@ main(int argc, char **argv)
#ifndef __CYGWIN__
struct rlimit rlim;
-
#endif
PGconn *con;
@@ -691,9 +692,9 @@ main(int argc, char **argv)
}
#endif /* #ifndef __CYGWIN__ */
break;
- case 'C':
- is_connect = 1;
- break;
+ case 'C':
+ is_connect = 1;
+ break;
case 's':
tps = atoi(optarg);
if (tps <= 0)
@@ -734,7 +735,7 @@ main(int argc, char **argv)
if (is_init_mode)
{
- init();
+ init();
exit(0);
}
@@ -749,7 +750,7 @@ main(int argc, char **argv)
/* opening connection... */
con = doConnect();
if (con == NULL)
- exit(1);
+ exit(1);
if (PQstatus(con) == CONNECTION_BAD)
{
@@ -836,12 +837,12 @@ main(int argc, char **argv)
if (is_connect == 0)
{
- /* make connections to the database */
- for (i = 0; i < nclients; i++)
- {
- if ((state[i].con = doConnect()) == NULL)
- exit(1);
- }
+ /* make connections to the database */
+ for (i = 0; i < nclients; i++)
+ {
+ if ((state[i].con = doConnect()) == NULL)
+ exit(1);
+ }
}
/* time after connections set up */
diff --git a/contrib/pgcrypto/blf.c b/contrib/pgcrypto/blf.c
index 28d44d9de9f..aae5b6033a4 100644
--- a/contrib/pgcrypto/blf.c
+++ b/contrib/pgcrypto/blf.c
@@ -11,15 +11,15 @@
* 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:
- * This product includes software developed by Niels Provos.
+ * must display the following acknowledgement:
+ * This product includes software developed by Niels Provos.
* 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
+ * derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -46,338 +46,354 @@
#undef inline
#ifdef __GNUC__
#define inline __inline
-#else /* !__GNUC__ */
+#else /* !__GNUC__ */
#define inline
-#endif /* !__GNUC__ */
+#endif /* !__GNUC__ */
/* Function for Feistel Networks */
-#define F(s, x) ((((s)[ (((x)>>24)&0xFF)] \
+#define F(s, x) ((((s)[ (((x)>>24)&0xFF)] \
+ (s)[0x100 + (((x)>>16)&0xFF)]) \
^ (s)[0x200 + (((x)>> 8)&0xFF)]) \
- + (s)[0x300 + ( (x) &0xFF)])
+ + (s)[0x300 + ( (x) &0xFF)])
#define BLFRND(s,p,i,j,n) (i ^= F(s,j) ^ (p)[n])
void
-Blowfish_encipher(blf_ctx *c, uint32 *x)
+Blowfish_encipher(blf_ctx * c, uint32 *x)
{
- uint32 Xl;
- uint32 Xr;
- uint32 *s = c->S[0];
- uint32 *p = c->P;
+ uint32 Xl;
+ uint32 Xr;
+ uint32 *s = c->S[0];
+ uint32 *p = c->P;
Xl = x[0];
Xr = x[1];
Xl ^= p[0];
- BLFRND(s, p, Xr, Xl, 1); BLFRND(s, p, Xl, Xr, 2);
- BLFRND(s, p, Xr, Xl, 3); BLFRND(s, p, Xl, Xr, 4);
- BLFRND(s, p, Xr, Xl, 5); BLFRND(s, p, Xl, Xr, 6);
- BLFRND(s, p, Xr, Xl, 7); BLFRND(s, p, Xl, Xr, 8);
- BLFRND(s, p, Xr, Xl, 9); BLFRND(s, p, Xl, Xr, 10);
- BLFRND(s, p, Xr, Xl, 11); BLFRND(s, p, Xl, Xr, 12);
- BLFRND(s, p, Xr, Xl, 13); BLFRND(s, p, Xl, Xr, 14);
- BLFRND(s, p, Xr, Xl, 15); BLFRND(s, p, Xl, Xr, 16);
+ BLFRND(s, p, Xr, Xl, 1);
+ BLFRND(s, p, Xl, Xr, 2);
+ BLFRND(s, p, Xr, Xl, 3);
+ BLFRND(s, p, Xl, Xr, 4);
+ BLFRND(s, p, Xr, Xl, 5);
+ BLFRND(s, p, Xl, Xr, 6);
+ BLFRND(s, p, Xr, Xl, 7);
+ BLFRND(s, p, Xl, Xr, 8);
+ BLFRND(s, p, Xr, Xl, 9);
+ BLFRND(s, p, Xl, Xr, 10);
+ BLFRND(s, p, Xr, Xl, 11);
+ BLFRND(s, p, Xl, Xr, 12);
+ BLFRND(s, p, Xr, Xl, 13);
+ BLFRND(s, p, Xl, Xr, 14);
+ BLFRND(s, p, Xr, Xl, 15);
+ BLFRND(s, p, Xl, Xr, 16);
x[0] = Xr ^ p[17];
x[1] = Xl;
}
void
-Blowfish_decipher(blf_ctx *c, uint32 *x)
+Blowfish_decipher(blf_ctx * c, uint32 *x)
{
- uint32 Xl;
- uint32 Xr;
- uint32 *s = c->S[0];
- uint32 *p = c->P;
+ uint32 Xl;
+ uint32 Xr;
+ uint32 *s = c->S[0];
+ uint32 *p = c->P;
Xl = x[0];
Xr = x[1];
Xl ^= p[17];
- BLFRND(s, p, Xr, Xl, 16); BLFRND(s, p, Xl, Xr, 15);
- BLFRND(s, p, Xr, Xl, 14); BLFRND(s, p, Xl, Xr, 13);
- BLFRND(s, p, Xr, Xl, 12); BLFRND(s, p, Xl, Xr, 11);
- BLFRND(s, p, Xr, Xl, 10); BLFRND(s, p, Xl, Xr, 9);
- BLFRND(s, p, Xr, Xl, 8); BLFRND(s, p, Xl, Xr, 7);
- BLFRND(s, p, Xr, Xl, 6); BLFRND(s, p, Xl, Xr, 5);
- BLFRND(s, p, Xr, Xl, 4); BLFRND(s, p, Xl, Xr, 3);
- BLFRND(s, p, Xr, Xl, 2); BLFRND(s, p, Xl, Xr, 1);
+ BLFRND(s, p, Xr, Xl, 16);
+ BLFRND(s, p, Xl, Xr, 15);
+ BLFRND(s, p, Xr, Xl, 14);
+ BLFRND(s, p, Xl, Xr, 13);
+ BLFRND(s, p, Xr, Xl, 12);
+ BLFRND(s, p, Xl, Xr, 11);
+ BLFRND(s, p, Xr, Xl, 10);
+ BLFRND(s, p, Xl, Xr, 9);
+ BLFRND(s, p, Xr, Xl, 8);
+ BLFRND(s, p, Xl, Xr, 7);
+ BLFRND(s, p, Xr, Xl, 6);
+ BLFRND(s, p, Xl, Xr, 5);
+ BLFRND(s, p, Xr, Xl, 4);
+ BLFRND(s, p, Xl, Xr, 3);
+ BLFRND(s, p, Xr, Xl, 2);
+ BLFRND(s, p, Xl, Xr, 1);
x[0] = Xr ^ p[0];
x[1] = Xl;
}
void
-Blowfish_initstate(blf_ctx *c)
+Blowfish_initstate(blf_ctx * c)
{
/* P-box and S-box tables initialized with digits of Pi */
const blf_ctx initstate =
- { {
- {
- 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
- 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
- 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
- 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
- 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
- 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
- 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
- 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
- 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
- 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
- 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
- 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
- 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
- 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
- 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
- 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
- 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
- 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
- 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
- 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
- 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
- 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
- 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
- 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
- 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
- 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
- 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
- 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
- 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
- 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
- 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
- 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
- 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
- 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
- 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
- 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
- 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
- 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
- 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
- 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
- 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
- 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
- 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
- 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
- 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
- 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
- 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
- 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
- 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
- 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
- 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
- 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
- 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
- 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
- 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
- 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
- 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
- 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
- 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
- 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
- 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
- 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
- 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
- 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a},
- {
- 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
- 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
- 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
- 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
- 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
- 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
- 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
- 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
- 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
- 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
- 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
- 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
- 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
- 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
- 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
- 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
- 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
- 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
- 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
- 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
- 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
- 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
- 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
- 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
- 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
- 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
- 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
- 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
- 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
- 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
- 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
- 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
- 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
- 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
- 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
- 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
- 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
- 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
- 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
- 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
- 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
- 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
- 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
- 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
- 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
- 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
- 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
- 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
- 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
- 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
- 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
- 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
- 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
- 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
- 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
- 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
- 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
- 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
- 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
- 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
- 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
- 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
- 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
- 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7},
- {
- 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
- 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
- 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
- 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
- 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
- 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
- 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
- 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
- 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
- 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
- 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
- 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
- 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
- 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
- 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
- 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
- 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
- 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
- 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
- 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
- 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
- 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
- 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
- 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
- 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
- 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
- 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
- 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
- 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
- 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
- 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
- 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
- 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
- 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
- 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
- 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
- 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
- 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
- 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
- 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
- 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
- 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
- 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
- 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
- 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
- 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
- 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
- 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
- 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
- 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
- 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
- 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
- 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
- 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
- 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
- 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
- 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
- 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
- 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
- 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
- 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
- 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
- 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
- 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0},
- {
- 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
- 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
- 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
- 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
- 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
- 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
- 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
- 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
- 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
- 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
- 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
- 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
- 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
- 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
- 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
- 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
- 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
- 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
- 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
- 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
- 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
- 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
- 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
- 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
- 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
- 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
- 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
- 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
- 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
- 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
- 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
- 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
- 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
- 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
- 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
- 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
- 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
- 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
- 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
- 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
- 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
- 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
- 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
- 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
- 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
- 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
- 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
- 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
- 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
- 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
- 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
- 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
- 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
- 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
- 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
- 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
- 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
- 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
- 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
- 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
- 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
- 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
- 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
- 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}
+ {{
+ {
+ 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
+ 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
+ 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
+ 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
+ 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
+ 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
+ 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
+ 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
+ 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
+ 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
+ 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
+ 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
+ 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
+ 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
+ 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
+ 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
+ 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
+ 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
+ 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
+ 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
+ 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
+ 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
+ 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
+ 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
+ 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
+ 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
+ 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
+ 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
+ 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
+ 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
+ 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
+ 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
+ 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
+ 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
+ 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
+ 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
+ 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
+ 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
+ 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
+ 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
+ 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
+ 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
+ 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
+ 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
+ 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
+ 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
+ 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
+ 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
+ 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
+ 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
+ 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
+ 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
+ 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
+ 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
+ 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
+ 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
+ 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
+ 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
+ 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
+ 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
+ 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
+ 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
+ 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
+ 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a},
+ {
+ 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
+ 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
+ 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
+ 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
+ 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
+ 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
+ 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
+ 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
+ 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
+ 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
+ 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
+ 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
+ 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
+ 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
+ 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
+ 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
+ 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
+ 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
+ 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
+ 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
+ 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
+ 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
+ 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
+ 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
+ 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
+ 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
+ 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
+ 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
+ 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
+ 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
+ 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
+ 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
+ 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
+ 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
+ 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
+ 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
+ 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
+ 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
+ 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
+ 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
+ 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
+ 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
+ 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
+ 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
+ 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
+ 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
+ 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
+ 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
+ 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
+ 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
+ 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
+ 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
+ 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
+ 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
+ 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
+ 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
+ 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
+ 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
+ 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
+ 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
+ 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
+ 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
+ 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
+ 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7},
+ {
+ 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
+ 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
+ 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
+ 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
+ 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
+ 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
+ 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
+ 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
+ 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
+ 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
+ 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
+ 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
+ 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
+ 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
+ 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
+ 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
+ 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
+ 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
+ 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
+ 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
+ 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
+ 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
+ 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
+ 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
+ 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
+ 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
+ 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
+ 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
+ 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
+ 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
+ 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
+ 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
+ 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
+ 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
+ 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
+ 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
+ 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
+ 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
+ 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
+ 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
+ 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
+ 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
+ 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
+ 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
+ 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
+ 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
+ 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
+ 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
+ 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
+ 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
+ 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
+ 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
+ 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
+ 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
+ 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
+ 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
+ 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
+ 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
+ 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
+ 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
+ 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
+ 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
+ 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
+ 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0},
+ {
+ 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
+ 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
+ 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
+ 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
+ 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
+ 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
+ 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
+ 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
+ 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
+ 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
+ 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
+ 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
+ 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
+ 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
+ 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
+ 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
+ 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
+ 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
+ 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
+ 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
+ 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
+ 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
+ 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
+ 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
+ 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
+ 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
+ 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
+ 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
+ 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
+ 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
+ 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
+ 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
+ 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
+ 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
+ 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
+ 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
+ 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
+ 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
+ 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
+ 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
+ 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
+ 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
+ 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
+ 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
+ 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
+ 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
+ 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
+ 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
+ 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
+ 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
+ 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
+ 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
+ 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
+ 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
+ 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
+ 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
+ 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
+ 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
+ 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
+ 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
+ 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
+ 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
+ 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
+ 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}
},
{
0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
@@ -385,7 +401,7 @@ Blowfish_initstate(blf_ctx *c)
0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
0x9216d5d9, 0x8979fb1b
- } };
+ }};
*c = initstate;
@@ -394,14 +410,15 @@ Blowfish_initstate(blf_ctx *c)
uint32
Blowfish_stream2word(const uint8 *data, uint16 databytes, uint16 *current)
{
- uint8 i;
- uint16 j;
- uint32 temp;
+ uint8 i;
+ uint16 j;
+ uint32 temp;
temp = 0x00000000;
j = *current;
- for (i = 0; i < 4; i++, j++) {
+ for (i = 0; i < 4; i++, j++)
+ {
if (j >= databytes)
j = 0;
temp = (temp << 8) | data[j];
@@ -412,16 +429,17 @@ Blowfish_stream2word(const uint8 *data, uint16 databytes, uint16 *current)
}
void
-Blowfish_expand0state(blf_ctx *c, const uint8 *key, uint16 keybytes)
+Blowfish_expand0state(blf_ctx * c, const uint8 *key, uint16 keybytes)
{
- uint16 i;
- uint16 j;
- uint16 k;
- uint32 temp;
- uint32 data[2];
+ uint16 i;
+ uint16 j;
+ uint16 k;
+ uint32 temp;
+ uint32 data[2];
j = 0;
- for (i = 0; i < BLF_N + 2; i++) {
+ for (i = 0; i < BLF_N + 2; i++)
+ {
/* Extract 4 int8 to 1 int32 from keystream */
temp = Blowfish_stream2word(key, keybytes, &j);
c->P[i] = c->P[i] ^ temp;
@@ -430,15 +448,18 @@ Blowfish_expand0state(blf_ctx *c, const uint8 *key, uint16 keybytes)
j = 0;
data[0] = 0x00000000;
data[1] = 0x00000000;
- for (i = 0; i < BLF_N + 2; i += 2) {
+ for (i = 0; i < BLF_N + 2; i += 2)
+ {
Blowfish_encipher(c, data);
c->P[i] = data[0];
c->P[i + 1] = data[1];
}
- for (i = 0; i < 4; i++) {
- for (k = 0; k < 256; k += 2) {
+ for (i = 0; i < 4; i++)
+ {
+ for (k = 0; k < 256; k += 2)
+ {
Blowfish_encipher(c, data);
c->S[i][k] = data[0];
@@ -449,17 +470,18 @@ Blowfish_expand0state(blf_ctx *c, const uint8 *key, uint16 keybytes)
void
-Blowfish_expandstate(blf_ctx *c, const uint8 *data, uint16 databytes,
- const uint8 *key, uint16 keybytes)
+Blowfish_expandstate(blf_ctx * c, const uint8 *data, uint16 databytes,
+ const uint8 *key, uint16 keybytes)
{
- uint16 i;
- uint16 j;
- uint16 k;
- uint32 temp;
- uint32 d[2];
+ uint16 i;
+ uint16 j;
+ uint16 k;
+ uint32 temp;
+ uint32 d[2];
j = 0;
- for (i = 0; i < BLF_N + 2; i++) {
+ for (i = 0; i < BLF_N + 2; i++)
+ {
/* Extract 4 int8 to 1 int32 from keystream */
temp = Blowfish_stream2word(key, keybytes, &j);
c->P[i] = c->P[i] ^ temp;
@@ -468,7 +490,8 @@ Blowfish_expandstate(blf_ctx *c, const uint8 *data, uint16 databytes,
j = 0;
d[0] = 0x00000000;
d[1] = 0x00000000;
- for (i = 0; i < BLF_N + 2; i += 2) {
+ for (i = 0; i < BLF_N + 2; i += 2)
+ {
d[0] ^= Blowfish_stream2word(data, databytes, &j);
d[1] ^= Blowfish_stream2word(data, databytes, &j);
Blowfish_encipher(c, d);
@@ -477,9 +500,11 @@ Blowfish_expandstate(blf_ctx *c, const uint8 *data, uint16 databytes,
c->P[i + 1] = d[1];
}
- for (i = 0; i < 4; i++) {
- for (k = 0; k < 256; k += 2) {
- d[0]^= Blowfish_stream2word(data, databytes, &j);
+ for (i = 0; i < 4; i++)
+ {
+ for (k = 0; k < 256; k += 2)
+ {
+ d[0] ^= Blowfish_stream2word(data, databytes, &j);
d[1] ^= Blowfish_stream2word(data, databytes, &j);
Blowfish_encipher(c, d);
@@ -491,7 +516,7 @@ Blowfish_expandstate(blf_ctx *c, const uint8 *data, uint16 databytes,
}
void
-blf_key(blf_ctx *c, const uint8 *k, uint16 len)
+blf_key(blf_ctx * c, const uint8 *k, uint16 len)
{
/* Initalize S-boxes and subkeys with Pi */
Blowfish_initstate(c);
@@ -501,38 +526,43 @@ blf_key(blf_ctx *c, const uint8 *k, uint16 len)
}
void
-blf_enc(blf_ctx *c, uint32 *data, uint16 blocks)
+blf_enc(blf_ctx * c, uint32 *data, uint16 blocks)
{
- uint32 *d;
- uint16 i;
+ uint32 *d;
+ uint16 i;
d = data;
- for (i = 0; i < blocks; i++) {
+ for (i = 0; i < blocks; i++)
+ {
Blowfish_encipher(c, d);
d += 2;
}
}
void
-blf_dec(blf_ctx *c, uint32 *data, uint16 blocks)
+blf_dec(blf_ctx * c, uint32 *data, uint16 blocks)
{
- uint32 *d;
- uint16 i;
+ uint32 *d;
+ uint16 i;
d = data;
- for (i = 0; i < blocks; i++) {
+ for (i = 0; i < blocks; i++)
+ {
Blowfish_decipher(c, d);
d += 2;
}
}
void
-blf_ecb_encrypt(blf_ctx *c, uint8 *data, uint32 len)
+blf_ecb_encrypt(blf_ctx * c, uint8 *data, uint32 len)
{
- uint32 l, r, d[2];
- uint32 i;
+ uint32 l,
+ r,
+ d[2];
+ uint32 i;
- for (i = 0; i < len; i += 8) {
+ for (i = 0; i < len; i += 8)
+ {
l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
d[0] = l;
@@ -553,12 +583,15 @@ blf_ecb_encrypt(blf_ctx *c, uint8 *data, uint32 len)
}
void
-blf_ecb_decrypt(blf_ctx *c, uint8 *data, uint32 len)
+blf_ecb_decrypt(blf_ctx * c, uint8 *data, uint32 len)
{
- uint32 l, r, d[2];
- uint32 i;
+ uint32 l,
+ r,
+ d[2];
+ uint32 i;
- for (i = 0; i < len; i += 8) {
+ for (i = 0; i < len; i += 8)
+ {
l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
d[0] = l;
@@ -579,12 +612,16 @@ blf_ecb_decrypt(blf_ctx *c, uint8 *data, uint32 len)
}
void
-blf_cbc_encrypt(blf_ctx *c, uint8 *iv, uint8 *data, uint32 len)
+blf_cbc_encrypt(blf_ctx * c, uint8 *iv, uint8 *data, uint32 len)
{
- uint32 l, r, d[2];
- uint32 i, j;
+ uint32 l,
+ r,
+ d[2];
+ uint32 i,
+ j;
- for (i = 0; i < len; i += 8) {
+ for (i = 0; i < len; i += 8)
+ {
for (j = 0; j < 8; j++)
data[j] ^= iv[j];
l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
@@ -608,15 +645,19 @@ blf_cbc_encrypt(blf_ctx *c, uint8 *iv, uint8 *data, uint32 len)
}
void
-blf_cbc_decrypt(blf_ctx *c, uint8 *iva, uint8 *data, uint32 len)
+blf_cbc_decrypt(blf_ctx * c, uint8 *iva, uint8 *data, uint32 len)
{
- uint32 l, r, d[2];
- uint8 *iv;
- uint32 i, j;
+ uint32 l,
+ r,
+ d[2];
+ uint8 *iv;
+ uint32 i,
+ j;
iv = data + len - 16;
data = data + len - 8;
- for (i = len - 8; i >= 8; i -= 8) {
+ for (i = len - 8; i >= 8; i -= 8)
+ {
l = data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3];
r = data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7];
d[0] = l;
diff --git a/contrib/pgcrypto/blf.h b/contrib/pgcrypto/blf.h
index daf9703b775..37d40218035 100644
--- a/contrib/pgcrypto/blf.h
+++ b/contrib/pgcrypto/blf.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: blf.h,v 1.3 2001/05/15 02:40:35 deraadt Exp $ */
+/* $OpenBSD: blf.h,v 1.3 2001/05/15 02:40:35 deraadt Exp $ */
/*
* Blowfish - a fast block cipher designed by Bruce Schneier
@@ -10,15 +10,15 @@
* 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:
- * This product includes software developed by Niels Provos.
+ * must display the following acknowledgement:
+ * This product includes software developed by Niels Provos.
* 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
+ * derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
@@ -42,14 +42,15 @@
* of the key affect all cipherbits.
*/
-#define BLF_N 16 /* Number of Subkeys */
-#define BLF_MAXKEYLEN ((BLF_N-2)*4) /* 448 bits */
+#define BLF_N 16 /* Number of Subkeys */
+#define BLF_MAXKEYLEN ((BLF_N-2)*4) /* 448 bits */
/* Blowfish context */
-typedef struct BlowfishContext {
- uint32 S[4][256]; /* S-Boxes */
- uint32 P[BLF_N + 2]; /* Subkeys */
-} blf_ctx;
+typedef struct BlowfishContext
+{
+ uint32 S[4][256]; /* S-Boxes */
+ uint32 P[BLF_N + 2]; /* Subkeys */
+} blf_ctx;
/* Raw access to customized Blowfish
* blf_key is just:
@@ -57,26 +58,25 @@ typedef struct BlowfishContext {
* Blowfish_expand0state( state, key, keylen )
*/
-void Blowfish_encipher (blf_ctx *, uint32 *);
-void Blowfish_decipher (blf_ctx *, uint32 *);
-void Blowfish_initstate (blf_ctx *);
-void Blowfish_expand0state (blf_ctx *, const uint8 *, uint16);
-void Blowfish_expandstate
- (blf_ctx *, const uint8 *, uint16, const uint8 *, uint16);
+void Blowfish_encipher(blf_ctx *, uint32 *);
+void Blowfish_decipher(blf_ctx *, uint32 *);
+void Blowfish_initstate(blf_ctx *);
+void Blowfish_expand0state(blf_ctx *, const uint8 *, uint16);
+void Blowfish_expandstate
+ (blf_ctx *, const uint8 *, uint16, const uint8 *, uint16);
/* Standard Blowfish */
-void blf_key (blf_ctx *, const uint8 *, uint16);
-void blf_enc (blf_ctx *, uint32 *, uint16);
-void blf_dec (blf_ctx *, uint32 *, uint16);
+void blf_key(blf_ctx *, const uint8 *, uint16);
+void blf_enc(blf_ctx *, uint32 *, uint16);
+void blf_dec(blf_ctx *, uint32 *, uint16);
/* Converts uint8 to uint32 */
-uint32 Blowfish_stream2word (const uint8 *, uint16, uint16 *);
+uint32 Blowfish_stream2word(const uint8 *, uint16, uint16 *);
-void blf_ecb_encrypt (blf_ctx *, uint8 *, uint32);
-void blf_ecb_decrypt (blf_ctx *, uint8 *, uint32);
-
-void blf_cbc_encrypt (blf_ctx *, uint8 *, uint8 *, uint32);
-void blf_cbc_decrypt (blf_ctx *, uint8 *, uint8 *, uint32);
+void blf_ecb_encrypt(blf_ctx *, uint8 *, uint32);
+void blf_ecb_decrypt(blf_ctx *, uint8 *, uint32);
+void blf_cbc_encrypt(blf_ctx *, uint8 *, uint8 *, uint32);
+void blf_cbc_decrypt(blf_ctx *, uint8 *, uint8 *, uint32);
#endif
diff --git a/contrib/pgcrypto/crypt-blowfish.c b/contrib/pgcrypto/crypt-blowfish.c
index d60807f2417..3bc8e19fa90 100644
--- a/contrib/pgcrypto/crypt-blowfish.c
+++ b/contrib/pgcrypto/crypt-blowfish.c
@@ -57,10 +57,11 @@ typedef unsigned int BF_word;
typedef BF_word BF_key[BF_N + 2];
-typedef struct {
- BF_word S[4][0x100];
- BF_key P;
-} BF_ctx;
+typedef struct
+{
+ BF_word S[4][0x100];
+ BF_key P;
+} BF_ctx;
/*
* Magic IV for 64 Blowfish encryptions that we do at the end.
@@ -347,7 +348,7 @@ static BF_ctx BF_init_state = {
};
static unsigned char BF_itoa64[64 + 1] =
- "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
static unsigned char BF_atoi64[0x60] = {
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1,
@@ -367,22 +368,30 @@ do { \
(dst) = tmp; \
} while (0)
-static int BF_decode(BF_word *dst, const char *src, int size)
+static int
+BF_decode(BF_word * dst, const char *src, int size)
{
- unsigned char *dptr = (unsigned char *)dst;
+ unsigned char *dptr = (unsigned char *) dst;
unsigned char *end = dptr + size;
- unsigned char *sptr = (unsigned char *)src;
- unsigned int tmp, c1, c2, c3, c4;
-
- do {
+ unsigned char *sptr = (unsigned char *) src;
+ unsigned int tmp,
+ c1,
+ c2,
+ c3,
+ c4;
+
+ do
+ {
BF_safe_atoi64(c1, *sptr++);
BF_safe_atoi64(c2, *sptr++);
*dptr++ = (c1 << 2) | ((c2 & 0x30) >> 4);
- if (dptr >= end) break;
+ if (dptr >= end)
+ break;
BF_safe_atoi64(c3, *sptr++);
*dptr++ = ((c2 & 0x0F) << 4) | ((c3 & 0x3C) >> 2);
- if (dptr >= end) break;
+ if (dptr >= end)
+ break;
BF_safe_atoi64(c4, *sptr++);
*dptr++ = ((c3 & 0x03) << 6) | c4;
@@ -391,18 +400,22 @@ static int BF_decode(BF_word *dst, const char *src, int size)
return 0;
}
-static void BF_encode(char *dst, const BF_word *src, int size)
+static void
+BF_encode(char *dst, const BF_word * src, int size)
{
- unsigned char *sptr = (unsigned char *)src;
+ unsigned char *sptr = (unsigned char *) src;
unsigned char *end = sptr + size;
- unsigned char *dptr = (unsigned char *)dst;
- unsigned int c1, c2;
+ unsigned char *dptr = (unsigned char *) dst;
+ unsigned int c1,
+ c2;
- do {
+ do
+ {
c1 = *sptr++;
*dptr++ = BF_itoa64[c1 >> 2];
c1 = (c1 & 0x03) << 4;
- if (sptr >= end) {
+ if (sptr >= end)
+ {
*dptr++ = BF_itoa64[c1];
break;
}
@@ -411,7 +424,8 @@ static void BF_encode(char *dst, const BF_word *src, int size)
c1 |= c2 >> 4;
*dptr++ = BF_itoa64[c1];
c1 = (c2 & 0x0f) << 2;
- if (sptr >= end) {
+ if (sptr >= end)
+ {
*dptr++ = BF_itoa64[c1];
break;
}
@@ -423,18 +437,20 @@ static void BF_encode(char *dst, const BF_word *src, int size)
} while (sptr < end);
}
-static void BF_swap(BF_word *x, int count)
+static void
+BF_swap(BF_word * x, int count)
{
- static int endianness_check = 1;
- char *is_little_endian = (char *)&endianness_check;
- BF_word tmp;
+ static int endianness_check = 1;
+ char *is_little_endian = (char *) &endianness_check;
+ BF_word tmp;
if (*is_little_endian)
- do {
- tmp = *x;
- tmp = (tmp << 16) | (tmp >> 16);
- *x++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF);
- } while (--count);
+ do
+ {
+ tmp = *x;
+ tmp = (tmp << 16) | (tmp >> 16);
+ *x++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF);
+ } while (--count);
}
#if BF_SCALE
@@ -504,7 +520,8 @@ static void BF_swap(BF_word *x, int count)
#if BF_ASM
-extern void _BF_body_r(BF_ctx *ctx);
+extern void _BF_body_r(BF_ctx * ctx);
+
#define BF_body() \
_BF_body_r(&data.ctx);
@@ -527,22 +544,28 @@ extern void _BF_body_r(BF_ctx *ctx);
*(ptr - 2) = L; \
*(ptr - 1) = R; \
} while (ptr < &data.ctx.S[3][0xFF]);
-
#endif
-static void BF_set_key(const char *key, BF_key expanded, BF_key initial)
+static void
+BF_set_key(const char *key, BF_key expanded, BF_key initial)
{
const char *ptr = key;
- int i, j;
- BF_word tmp;
+ int i,
+ j;
+ BF_word tmp;
- for (i = 0; i < BF_N + 2; i++) {
+ for (i = 0; i < BF_N + 2; i++)
+ {
tmp = 0;
- for (j = 0; j < 4; j++) {
+ for (j = 0; j < 4; j++)
+ {
tmp <<= 8;
tmp |= *ptr;
- if (!*ptr) ptr = key; else ptr++;
+ if (!*ptr)
+ ptr = key;
+ else
+ ptr++;
}
expanded[i] = tmp;
@@ -550,41 +573,51 @@ static void BF_set_key(const char *key, BF_key expanded, BF_key initial)
}
}
-char *_crypt_blowfish_rn(const char *key, const char *setting,
- char *output, int size)
+char *
+_crypt_blowfish_rn(const char *key, const char *setting,
+ char *output, int size)
{
- struct {
- BF_ctx ctx;
- BF_key expanded_key;
- union {
- BF_word salt[4];
- BF_word output[6];
- } binary;
- } data;
- BF_word L, R;
- BF_word tmp1, tmp2, tmp3, tmp4;
- BF_word *ptr;
- BF_word count;
- int i;
-
- if (size < 7 + 22 + 31 + 1) {
+ struct
+ {
+ BF_ctx ctx;
+ BF_key expanded_key;
+ union
+ {
+ BF_word salt[4];
+ BF_word output[6];
+ } binary;
+ } data;
+ BF_word L,
+ R;
+ BF_word tmp1,
+ tmp2,
+ tmp3,
+ tmp4;
+ BF_word *ptr;
+ BF_word count;
+ int i;
+
+ if (size < 7 + 22 + 31 + 1)
+ {
__set_errno(ERANGE);
return NULL;
}
if (setting[0] != '$' ||
- setting[1] != '2' ||
- setting[2] != 'a' ||
- setting[3] != '$' ||
- setting[4] < '0' || setting[4] > '3' ||
- setting[5] < '0' || setting[5] > '9' ||
- setting[6] != '$') {
+ setting[1] != '2' ||
+ setting[2] != 'a' ||
+ setting[3] != '$' ||
+ setting[4] < '0' || setting[4] > '3' ||
+ setting[5] < '0' || setting[5] > '9' ||
+ setting[6] != '$')
+ {
__set_errno(EINVAL);
return NULL;
}
- count = (BF_word)1 << ((setting[4] - '0') * 10 + (setting[5] - '0'));
- if (count < 16 || BF_decode(data.binary.salt, &setting[7], 16)) {
+ count = (BF_word) 1 << ((setting[4] - '0') * 10 + (setting[5] - '0'));
+ if (count < 16 || BF_decode(data.binary.salt, &setting[7], 16))
+ {
memset(data.binary.salt, 0, sizeof(data.binary.salt));
__set_errno(EINVAL);
return NULL;
@@ -596,7 +629,8 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
memcpy(data.ctx.S, BF_init_state.S, sizeof(data.ctx.S));
L = R = 0;
- for (i = 0; i < BF_N + 2; i += 2) {
+ for (i = 0; i < BF_N + 2; i += 2)
+ {
L ^= data.binary.salt[i & 2];
R ^= data.binary.salt[(i & 2) + 1];
BF_ENCRYPT;
@@ -605,7 +639,8 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
}
ptr = data.ctx.S[0];
- do {
+ do
+ {
ptr += 4;
L ^= data.binary.salt[(BF_N + 2) & 3];
R ^= data.binary.salt[(BF_N + 3) & 3];
@@ -620,7 +655,8 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
*(ptr - 1) = R;
} while (ptr < &data.ctx.S[3][0xFF]);
- do {
+ do
+ {
data.ctx.P[0] ^= data.expanded_key[0];
data.ctx.P[1] ^= data.expanded_key[1];
data.ctx.P[2] ^= data.expanded_key[2];
@@ -668,12 +704,14 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
BF_body();
} while (--count);
- for (i = 0; i < 6; i += 2) {
+ for (i = 0; i < 6; i += 2)
+ {
L = BF_magic_w[i];
R = BF_magic_w[i + 1];
count = 64;
- do {
+ do
+ {
BF_ENCRYPT;
} while (--count);
@@ -683,7 +721,7 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
memcpy(output, setting, 7 + 22 - 1);
output[7 + 22 - 1] = BF_itoa64[(int)
- BF_atoi64[(int)setting[7 + 22 - 1] - 0x20] & 0x30];
+ BF_atoi64[(int) setting[7 + 22 - 1] - 0x20] & 0x30];
/* This has to be bug-compatible with the original implementation, so
* only encode 23 of the 24 bytes. :-) */
@@ -698,4 +736,3 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
return output;
}
-
diff --git a/contrib/pgcrypto/crypt-des.c b/contrib/pgcrypto/crypt-des.c
index de6b1865e37..eacb192ad08 100644
--- a/contrib/pgcrypto/crypt-des.c
+++ b/contrib/pgcrypto/crypt-des.c
@@ -244,8 +244,8 @@ des_init()
}
/*
- * Convert the inverted S-boxes into 4 arrays of 8 bits.
- * Each will handle 12 bits of the S-box input.
+ * Convert the inverted S-boxes into 4 arrays of 8 bits. Each will
+ * handle 12 bits of the S-box input.
*/
for (b = 0; b < 4; b++)
for (i = 0; i < 64; i++)
@@ -409,10 +409,9 @@ des_setkey(const char *key)
&& rawkey1 == old_rawkey1)
{
/*
- * Already setup for this key.
- * This optimisation fails on a zero key (which is weak and
- * has bad parity anyway) in order to simplify the starting
- * conditions.
+ * Already setup for this key. This optimisation fails on a zero
+ * key (which is weak and has bad parity anyway) in order to
+ * simplify the starting conditions.
*/
return (0);
}
@@ -420,7 +419,7 @@ des_setkey(const char *key)
old_rawkey1 = rawkey1;
/*
- * Do key permutation and split into two 28-bit subkeys.
+ * Do key permutation and split into two 28-bit subkeys.
*/
k0 = key_perm_maskl[0][rawkey0 >> 25]
| key_perm_maskl[1][(rawkey0 >> 17) & 0x7f]
@@ -438,8 +437,9 @@ des_setkey(const char *key)
| key_perm_maskr[5][(rawkey1 >> 17) & 0x7f]
| key_perm_maskr[6][(rawkey1 >> 9) & 0x7f]
| key_perm_maskr[7][(rawkey1 >> 1) & 0x7f];
+
/*
- * Rotate subkeys and do compression permutation.
+ * Rotate subkeys and do compression permutation.
*/
shifts = 0;
for (round = 0; round < 16; round++)
@@ -476,10 +476,10 @@ des_setkey(const char *key)
}
static int
-do_des(uint32 l_in, uint32 r_in, uint32 * l_out, uint32 * r_out, int count)
+do_des(uint32 l_in, uint32 r_in, uint32 *l_out, uint32 *r_out, int count)
{
/*
- * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
+ * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
*/
uint32 l,
r,
@@ -513,7 +513,7 @@ do_des(uint32 l_in, uint32 r_in, uint32 * l_out, uint32 * r_out, int count)
}
/*
- * Do initial permutation (IP).
+ * Do initial permutation (IP).
*/
l = ip_maskl[0][l_in >> 24]
| ip_maskl[1][(l_in >> 16) & 0xff]
@@ -556,21 +556,24 @@ do_des(uint32 l_in, uint32 r_in, uint32 * l_out, uint32 * r_out, int count)
| ((r & 0x000001f8) << 3)
| ((r & 0x0000001f) << 1)
| ((r & 0x80000000) >> 31);
+
/*
- * Do salting for crypt() and friends, and
- * XOR with the permuted key.
+ * Do salting for crypt() and friends, and XOR with the
+ * permuted key.
*/
f = (r48l ^ r48r) & saltbits;
r48l ^= f ^ *kl++;
r48r ^= f ^ *kr++;
+
/*
- * Do sbox lookups (which shrink it back to 32 bits)
- * and do the pbox permutation at the same time.
+ * Do sbox lookups (which shrink it back to 32 bits) and do
+ * the pbox permutation at the same time.
*/
f = psbox[0][m_sbox[0][r48l >> 12]]
| psbox[1][m_sbox[1][r48l & 0xfff]]
| psbox[2][m_sbox[2][r48r >> 12]]
| psbox[3][m_sbox[3][r48r & 0xfff]];
+
/*
* Now that we've permuted things, complete f().
*/
@@ -581,6 +584,7 @@ do_des(uint32 l_in, uint32 r_in, uint32 * l_out, uint32 * r_out, int count)
r = l;
l = f;
}
+
/*
* Do final permutation (inverse of IP).
*/
@@ -654,8 +658,8 @@ px_crypt_des(const char *key, const char *setting)
/*
- * Copy the key, shifting each character up by one bit
- * and padding with zeros.
+ * Copy the key, shifting each character up by one bit and padding
+ * with zeros.
*/
q = (uint8 *) keybuf;
while (q - (uint8 *) keybuf - 8)
@@ -670,9 +674,8 @@ px_crypt_des(const char *key, const char *setting)
if (*setting == _PASSWORD_EFMT1)
{
/*
- * "new"-style:
- * setting - underscore, 4 bytes of count, 4 bytes of salt
- * key - unlimited characters
+ * "new"-style: setting - underscore, 4 bytes of count, 4 bytes of
+ * salt key - unlimited characters
*/
for (i = 1, count = 0L; i < 5; i++)
count |= ascii_to_bin(setting[i]) << (i - 1) * 6;
@@ -687,6 +690,7 @@ px_crypt_des(const char *key, const char *setting)
*/
if (des_cipher((uint8 *) keybuf, (uint8 *) keybuf, 0L, 1))
return (NULL);
+
/*
* And XOR with the next 8 characters of the key.
*/
@@ -700,11 +704,10 @@ px_crypt_des(const char *key, const char *setting)
strncpy(output, setting, 9);
/*
- * Double check that we weren't given a short setting.
- * If we were, the above code will probably have created
- * wierd values for count and salt, but we don't really care.
- * Just make sure the output string doesn't have an extra
- * NUL in it.
+ * Double check that we weren't given a short setting. If we were,
+ * the above code will probably have created wierd values for
+ * count and salt, but we don't really care. Just make sure the
+ * output string doesn't have an extra NUL in it.
*/
output[9] = '\0';
p = output + strlen(output);
@@ -713,9 +716,7 @@ px_crypt_des(const char *key, const char *setting)
#endif /* !DISABLE_XDES */
{
/*
- * "old"-style:
- * setting - 2 bytes of salt
- * key - up to 8 characters
+ * "old"-style: setting - 2 bytes of salt key - up to 8 characters
*/
count = 25;
@@ -723,22 +724,24 @@ px_crypt_des(const char *key, const char *setting)
| ascii_to_bin(setting[0]);
output[0] = setting[0];
+
/*
- * If the encrypted password that the salt was extracted from
- * is only 1 character long, the salt will be corrupted. We
- * need to ensure that the output string doesn't have an extra
- * NUL in it!
+ * If the encrypted password that the salt was extracted from is
+ * only 1 character long, the salt will be corrupted. We need to
+ * ensure that the output string doesn't have an extra NUL in it!
*/
output[1] = setting[1] ? setting[1] : output[0];
p = output + 2;
}
setup_salt(salt);
+
/*
* Do it.
*/
if (do_des(0L, 0L, &r0, &r1, count))
return (NULL);
+
/*
* Now encode the result...
*/
diff --git a/contrib/pgcrypto/crypt-gensalt.c b/contrib/pgcrypto/crypt-gensalt.c
index 69138268424..9c017b0e4d0 100644
--- a/contrib/pgcrypto/crypt-gensalt.c
+++ b/contrib/pgcrypto/crypt-gensalt.c
@@ -7,7 +7,7 @@
* entirely in crypt_blowfish.c.
*
* Put bcrypt generator also here as crypt-blowfish.c
- * may not be compiled always. -- marko
+ * may not be compiled always. -- marko
*/
#include "postgres.h"
@@ -22,48 +22,55 @@
typedef unsigned int BF_word;
unsigned char _crypt_itoa64[64 + 1] =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-char *_crypt_gensalt_traditional_rn(unsigned long count,
- const char *input, int size, char *output, int output_size)
+char *
+_crypt_gensalt_traditional_rn(unsigned long count,
+ const char *input, int size, char *output, int output_size)
{
- if (size < 2 || output_size < 2 + 1 || (count && count != 25)) {
- if (output_size > 0) output[0] = '\0';
+ if (size < 2 || output_size < 2 + 1 || (count && count != 25))
+ {
+ if (output_size > 0)
+ output[0] = '\0';
__set_errno((output_size < 2 + 1) ? ERANGE : EINVAL);
return NULL;
}
- output[0] = _crypt_itoa64[(unsigned int)input[0] & 0x3f];
- output[1] = _crypt_itoa64[(unsigned int)input[1] & 0x3f];
+ output[0] = _crypt_itoa64[(unsigned int) input[0] & 0x3f];
+ output[1] = _crypt_itoa64[(unsigned int) input[1] & 0x3f];
output[2] = '\0';
return output;
}
-char *_crypt_gensalt_extended_rn(unsigned long count,
- const char *input, int size, char *output, int output_size)
+char *
+_crypt_gensalt_extended_rn(unsigned long count,
+ const char *input, int size, char *output, int output_size)
{
unsigned long value;
/* Even iteration counts make it easier to detect weak DES keys from a look
* at the hash, so they should be avoided */
if (size < 3 || output_size < 1 + 4 + 4 + 1 ||
- (count && (count > 0xffffff || !(count & 1)))) {
- if (output_size > 0) output[0] = '\0';
+ (count && (count > 0xffffff || !(count & 1))))
+ {
+ if (output_size > 0)
+ output[0] = '\0';
__set_errno((output_size < 1 + 4 + 4 + 1) ? ERANGE : EINVAL);
return NULL;
}
- if (!count) count = 725;
+ if (!count)
+ count = 725;
output[0] = '_';
output[1] = _crypt_itoa64[count & 0x3f];
output[2] = _crypt_itoa64[(count >> 6) & 0x3f];
output[3] = _crypt_itoa64[(count >> 12) & 0x3f];
output[4] = _crypt_itoa64[(count >> 18) & 0x3f];
- value = (unsigned long)input[0] |
- ((unsigned long)input[1] << 8) |
- ((unsigned long)input[2] << 16);
+ value = (unsigned long) input[0] |
+ ((unsigned long) input[1] << 8) |
+ ((unsigned long) input[2] << 16);
output[5] = _crypt_itoa64[value & 0x3f];
output[6] = _crypt_itoa64[(value >> 6) & 0x3f];
output[7] = _crypt_itoa64[(value >> 12) & 0x3f];
@@ -73,13 +80,16 @@ char *_crypt_gensalt_extended_rn(unsigned long count,
return output;
}
-char *_crypt_gensalt_md5_rn(unsigned long count,
- const char *input, int size, char *output, int output_size)
+char *
+_crypt_gensalt_md5_rn(unsigned long count,
+ const char *input, int size, char *output, int output_size)
{
unsigned long value;
- if (size < 3 || output_size < 3 + 4 + 1 || (count && count != 1000)) {
- if (output_size > 0) output[0] = '\0';
+ if (size < 3 || output_size < 3 + 4 + 1 || (count && count != 1000))
+ {
+ if (output_size > 0)
+ output[0] = '\0';
__set_errno((output_size < 3 + 4 + 1) ? ERANGE : EINVAL);
return NULL;
}
@@ -87,19 +97,20 @@ char *_crypt_gensalt_md5_rn(unsigned long count,
output[0] = '$';
output[1] = '1';
output[2] = '$';
- value = (unsigned long)input[0] |
- ((unsigned long)input[1] << 8) |
- ((unsigned long)input[2] << 16);
+ value = (unsigned long) input[0] |
+ ((unsigned long) input[1] << 8) |
+ ((unsigned long) input[2] << 16);
output[3] = _crypt_itoa64[value & 0x3f];
output[4] = _crypt_itoa64[(value >> 6) & 0x3f];
output[5] = _crypt_itoa64[(value >> 12) & 0x3f];
output[6] = _crypt_itoa64[(value >> 18) & 0x3f];
output[7] = '\0';
- if (size >= 6 && output_size >= 3 + 4 + 4 + 1) {
- value = (unsigned long)input[3] |
- ((unsigned long)input[4] << 8) |
- ((unsigned long)input[5] << 16);
+ if (size >= 6 && output_size >= 3 + 4 + 4 + 1)
+ {
+ value = (unsigned long) input[3] |
+ ((unsigned long) input[4] << 8) |
+ ((unsigned long) input[5] << 16);
output[7] = _crypt_itoa64[value & 0x3f];
output[8] = _crypt_itoa64[(value >> 6) & 0x3f];
output[9] = _crypt_itoa64[(value >> 12) & 0x3f];
@@ -113,20 +124,24 @@ char *_crypt_gensalt_md5_rn(unsigned long count,
static unsigned char BF_itoa64[64 + 1] =
- "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-static void BF_encode(char *dst, const BF_word *src, int size)
+static void
+BF_encode(char *dst, const BF_word * src, int size)
{
- unsigned char *sptr = (unsigned char *)src;
+ unsigned char *sptr = (unsigned char *) src;
unsigned char *end = sptr + size;
- unsigned char *dptr = (unsigned char *)dst;
- unsigned int c1, c2;
+ unsigned char *dptr = (unsigned char *) dst;
+ unsigned int c1,
+ c2;
- do {
+ do
+ {
c1 = *sptr++;
*dptr++ = BF_itoa64[c1 >> 2];
c1 = (c1 & 0x03) << 4;
- if (sptr >= end) {
+ if (sptr >= end)
+ {
*dptr++ = BF_itoa64[c1];
break;
}
@@ -135,7 +150,8 @@ static void BF_encode(char *dst, const BF_word *src, int size)
c1 |= c2 >> 4;
*dptr++ = BF_itoa64[c1];
c1 = (c2 & 0x0f) << 2;
- if (sptr >= end) {
+ if (sptr >= end)
+ {
*dptr++ = BF_itoa64[c1];
break;
}
@@ -147,17 +163,21 @@ static void BF_encode(char *dst, const BF_word *src, int size)
} while (sptr < end);
}
-char *_crypt_gensalt_blowfish_rn(unsigned long count,
- const char *input, int size, char *output, int output_size)
+char *
+_crypt_gensalt_blowfish_rn(unsigned long count,
+ const char *input, int size, char *output, int output_size)
{
if (size < 16 || output_size < 7 + 22 + 1 ||
- (count && (count < 4 || count > 31))) {
- if (output_size > 0) output[0] = '\0';
+ (count && (count < 4 || count > 31)))
+ {
+ if (output_size > 0)
+ output[0] = '\0';
__set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL);
return NULL;
}
- if (!count) count = 5;
+ if (!count)
+ count = 5;
output[0] = '$';
output[1] = '2';
@@ -167,9 +187,8 @@ char *_crypt_gensalt_blowfish_rn(unsigned long count,
output[5] = '0' + count % 10;
output[6] = '$';
- BF_encode(&output[7], (BF_word *)input, 16);
+ BF_encode(&output[7], (BF_word *) input, 16);
output[7 + 22] = '\0';
return output;
}
-
diff --git a/contrib/pgcrypto/crypt-md5.c b/contrib/pgcrypto/crypt-md5.c
index 02fba694965..7b45bb2151b 100644
--- a/contrib/pgcrypto/crypt-md5.c
+++ b/contrib/pgcrypto/crypt-md5.c
@@ -9,7 +9,7 @@
* $FreeBSD: src/lib/libcrypt/crypt-md5.c,v 1.5 1999/12/17 20:21:45 peter Exp $
*
*/
-/* $Id: crypt-md5.c,v 1.1 2001/08/21 01:32:01 momjian Exp $ */
+/* $Id: crypt-md5.c,v 1.2 2001/10/25 05:49:19 momjian Exp $ */
#include <postgres.h>
#include "px.h"
@@ -23,12 +23,9 @@
char *
px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
{
- static char *magic = "$1$"; /*
- * This string is magic for
- * this algorithm. Having
- * it this way, we can get
- * get better later on
- */
+ static char *magic = "$1$"; /* This string is magic for this
+ * algorithm. Having it this way, we can
+ * get get better later on */
static char *p;
static const char *sp,
*ep;
@@ -43,7 +40,7 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
if (!passwd || dstlen < 120)
return NULL;
-
+
/* Refine the Salt first */
sp = salt;
@@ -99,9 +96,9 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
px_md_finish(ctx, final);
/*
- * and now, just to make sure things don't run too fast
- * On a 60 Mhz Pentium this takes 34 msec, so you would
- * need 30 seconds to build a 1000 entry dictionary...
+ * and now, just to make sure things don't run too fast On a 60 Mhz
+ * Pentium this takes 34 msec, so you would need 30 seconds to build a
+ * 1000 entry dictionary...
*/
for (i = 0; i < 1000; i++)
{
diff --git a/contrib/pgcrypto/internal.c b/contrib/pgcrypto/internal.c
index 421f5f17392..00ff81e5b7a 100644
--- a/contrib/pgcrypto/internal.c
+++ b/contrib/pgcrypto/internal.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: internal.c,v 1.5 2001/10/15 19:12:48 tgl Exp $
+ * $Id: internal.c,v 1.6 2001/10/25 05:49:19 momjian Exp $
*/
@@ -61,11 +61,18 @@ static struct int_digest
{
char *name;
void (*init) (PX_MD * h);
-} int_digest_list[] =
+} int_digest_list[] =
+
{
- { "md5", init_md5 },
- { "sha1", init_sha1 },
- { NULL, NULL }
+ {
+ "md5", init_md5
+ },
+ {
+ "sha1", init_sha1
+ },
+ {
+ NULL, NULL
+ }
};
/* MD5 */
@@ -83,7 +90,7 @@ int_md5_block_len(PX_MD * h)
}
static void
-int_md5_update(PX_MD * h, const uint8 * data, uint dlen)
+int_md5_update(PX_MD * h, const uint8 *data, uint dlen)
{
MD5_CTX *ctx = (MD5_CTX *) h->p.ptr;
@@ -99,7 +106,7 @@ int_md5_reset(PX_MD * h)
}
static void
-int_md5_finish(PX_MD * h, uint8 * dst)
+int_md5_finish(PX_MD * h, uint8 *dst)
{
MD5_CTX *ctx = (MD5_CTX *) h->p.ptr;
@@ -130,7 +137,7 @@ int_sha1_block_len(PX_MD * h)
}
static void
-int_sha1_update(PX_MD * h, const uint8 * data, uint dlen)
+int_sha1_update(PX_MD * h, const uint8 *data, uint dlen)
{
SHA1_CTX *ctx = (SHA1_CTX *) h->p.ptr;
@@ -146,7 +153,7 @@ int_sha1_reset(PX_MD * h)
}
static void
-int_sha1_finish(PX_MD * h, uint8 * dst)
+int_sha1_finish(PX_MD * h, uint8 *dst)
{
SHA1_CTX *ctx = (SHA1_CTX *) h->p.ptr;
@@ -209,22 +216,27 @@ init_sha1(PX_MD * md)
#define INT_MAX_KEY (512/8)
#define INT_MAX_IV (128/8)
-struct int_ctx {
- uint8 keybuf[INT_MAX_KEY];
- uint8 iv[INT_MAX_IV];
- union {
- blf_ctx bf;
+struct int_ctx
+{
+ uint8 keybuf[INT_MAX_KEY];
+ uint8 iv[INT_MAX_IV];
+ union
+ {
+ blf_ctx bf;
rijndael_ctx rj;
- } ctx;
- uint keylen;
- int is_init;
- int mode;
+ } ctx;
+ uint keylen;
+ int is_init;
+ int mode;
};
-static void intctx_free(PX_Cipher *c)
+static void
+intctx_free(PX_Cipher * c)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
- if (cx) {
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
+
+ if (cx)
+ {
memset(cx, 0, sizeof *cx);
px_free(cx);
}
@@ -238,78 +250,88 @@ static void intctx_free(PX_Cipher *c)
#define MODE_ECB 0
#define MODE_CBC 1
-static uint rj_block_size(PX_Cipher *c)
+static uint
+rj_block_size(PX_Cipher * c)
{
- return 128/8;
+ return 128 / 8;
}
-static uint rj_key_size(PX_Cipher *c)
+static uint
+rj_key_size(PX_Cipher * c)
{
- return 256/8;
+ return 256 / 8;
}
-static uint rj_iv_size(PX_Cipher *c)
+static uint
+rj_iv_size(PX_Cipher * c)
{
- return 128/8;
+ return 128 / 8;
}
-static int rj_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
+static int
+rj_init(PX_Cipher * c, const uint8 *key, uint klen, const uint8 *iv)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
- if (klen <= 128/8)
- cx->keylen = 128/8;
- else if (klen <= 192/8)
- cx->keylen = 192/8;
- else if (klen <= 256/8)
- cx->keylen = 256/8;
+ if (klen <= 128 / 8)
+ cx->keylen = 128 / 8;
+ else if (klen <= 192 / 8)
+ cx->keylen = 192 / 8;
+ else if (klen <= 256 / 8)
+ cx->keylen = 256 / 8;
else
return -1;
memcpy(&cx->keybuf, key, klen);
if (iv)
- memcpy(cx->iv, iv, 128/8);
+ memcpy(cx->iv, iv, 128 / 8);
return 0;
}
-static int rj_real_init(struct int_ctx *cx, int dir)
+static int
+rj_real_init(struct int_ctx * cx, int dir)
{
- aes_set_key(&cx->ctx.rj, cx->keybuf, cx->keylen*8, dir);
+ aes_set_key(&cx->ctx.rj, cx->keybuf, cx->keylen * 8, dir);
return 0;
}
-static int rj_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+static int
+rj_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
-
- if (!cx->is_init) {
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
+
+ if (!cx->is_init)
+ {
if (rj_real_init(cx, 1))
return -1;
}
-
+
if (dlen == 0)
return 0;
- if ((dlen & 15) || (((unsigned)res) & 3))
+ if ((dlen & 15) || (((unsigned) res) & 3))
return -1;
memcpy(res, data, dlen);
- if (cx->mode == MODE_CBC) {
+ if (cx->mode == MODE_CBC)
+ {
aes_cbc_encrypt(&cx->ctx.rj, cx->iv, res, dlen);
memcpy(cx->iv, res + dlen - 16, 16);
- } else
+ }
+ else
aes_ecb_encrypt(&cx->ctx.rj, res, dlen);
-
+
return 0;
}
-static int rj_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+static int
+rj_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
-
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
+
if (!cx->is_init)
if (rj_real_init(cx, 0))
return -1;
@@ -317,17 +339,19 @@ static int rj_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
if (dlen == 0)
return 0;
- if ((dlen & 15) || (((unsigned)res) & 3))
+ if ((dlen & 15) || (((unsigned) res) & 3))
return -1;
memcpy(res, data, dlen);
- if (cx->mode == MODE_CBC) {
+ if (cx->mode == MODE_CBC)
+ {
aes_cbc_decrypt(&cx->ctx.rj, cx->iv, res, dlen);
memcpy(cx->iv, data + dlen - 16, 16);
- } else
+ }
+ else
aes_ecb_decrypt(&cx->ctx.rj, res, dlen);
-
+
return 0;
}
@@ -335,11 +359,12 @@ static int rj_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
* initializers
*/
-static PX_Cipher * rj_load(int mode)
+static PX_Cipher *
+rj_load(int mode)
{
- PX_Cipher *c;
+ PX_Cipher *c;
struct int_ctx *cx;
-
+
c = px_alloc(sizeof *c);
memset(c, 0, sizeof *c);
@@ -363,24 +388,28 @@ static PX_Cipher * rj_load(int mode)
* blowfish
*/
-static uint bf_block_size(PX_Cipher *c)
+static uint
+bf_block_size(PX_Cipher * c)
{
return 8;
}
-static uint bf_key_size(PX_Cipher *c)
+static uint
+bf_key_size(PX_Cipher * c)
{
return BLF_MAXKEYLEN;
}
-static uint bf_iv_size(PX_Cipher *c)
+static uint
+bf_iv_size(PX_Cipher * c)
{
return 8;
}
-static int bf_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
+static int
+bf_init(PX_Cipher * c, const uint8 *key, uint klen, const uint8 *iv)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
blf_key(&cx->ctx.bf, key, klen);
if (iv)
@@ -389,55 +418,60 @@ static int bf_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
return 0;
}
-static int bf_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+static int
+bf_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
if (dlen == 0)
return 0;
-
- if ((dlen & 7) || (((unsigned)res) & 3))
+
+ if ((dlen & 7) || (((unsigned) res) & 3))
return -1;
memcpy(res, data, dlen);
- switch (cx->mode) {
- case MODE_ECB:
- blf_ecb_encrypt(&cx->ctx.bf, res, dlen);
- break;
- case MODE_CBC:
- blf_cbc_encrypt(&cx->ctx.bf, cx->iv, res, dlen);
- memcpy(cx->iv, res + dlen - 8, 8);
+ switch (cx->mode)
+ {
+ case MODE_ECB:
+ blf_ecb_encrypt(&cx->ctx.bf, res, dlen);
+ break;
+ case MODE_CBC:
+ blf_cbc_encrypt(&cx->ctx.bf, cx->iv, res, dlen);
+ memcpy(cx->iv, res + dlen - 8, 8);
}
return 0;
}
-static int bf_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+static int
+bf_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- struct int_ctx *cx = (struct int_ctx *)c->ptr;
+ struct int_ctx *cx = (struct int_ctx *) c->ptr;
if (dlen == 0)
return 0;
- if ((dlen & 7) || (((unsigned)res) & 3))
+ if ((dlen & 7) || (((unsigned) res) & 3))
return -1;
memcpy(res, data, dlen);
- switch (cx->mode) {
- case MODE_ECB:
- blf_ecb_decrypt(&cx->ctx.bf, res, dlen);
- break;
- case MODE_CBC:
- blf_cbc_decrypt(&cx->ctx.bf, cx->iv, res, dlen);
- memcpy(cx->iv, data + dlen - 8, 8);
+ switch (cx->mode)
+ {
+ case MODE_ECB:
+ blf_ecb_decrypt(&cx->ctx.bf, res, dlen);
+ break;
+ case MODE_CBC:
+ blf_cbc_decrypt(&cx->ctx.bf, cx->iv, res, dlen);
+ memcpy(cx->iv, data + dlen - 8, 8);
}
return 0;
}
-static PX_Cipher * bf_load(int mode)
+static PX_Cipher *
+bf_load(int mode)
{
- PX_Cipher *c;
+ PX_Cipher *c;
struct int_ctx *cx;
-
+
c = px_alloc(sizeof *c);
memset(c, 0, sizeof *c);
@@ -458,47 +492,64 @@ static PX_Cipher * bf_load(int mode)
/* ciphers */
-static PX_Cipher * rj_128_ecb()
+static PX_Cipher *
+rj_128_ecb()
{
return rj_load(MODE_ECB);
}
-static PX_Cipher * rj_128_cbc()
+static PX_Cipher *
+rj_128_cbc()
{
return rj_load(MODE_CBC);
}
-static PX_Cipher * bf_ecb_load()
+static PX_Cipher *
+bf_ecb_load()
{
return bf_load(MODE_ECB);
}
-static PX_Cipher * bf_cbc_load()
+static PX_Cipher *
+bf_cbc_load()
{
return bf_load(MODE_CBC);
}
-static struct {
- char *name;
- PX_Cipher *(*load)(void);
-} int_ciphers [] = {
- { "bf-cbc", bf_cbc_load },
- { "bf-ecb", bf_ecb_load },
- { "aes-128-cbc", rj_128_cbc },
- { "aes-128-ecb", rj_128_ecb },
- { NULL, NULL }
+static struct
+{
+ char *name;
+ PX_Cipher *(*load) (void);
+} int_ciphers[] =
+
+{
+ {
+ "bf-cbc", bf_cbc_load
+ },
+ {
+ "bf-ecb", bf_ecb_load
+ },
+ {
+ "aes-128-cbc", rj_128_cbc
+ },
+ {
+ "aes-128-ecb", rj_128_ecb
+ },
+ {
+ NULL, NULL
+ }
};
-static PX_Alias int_aliases [] = {
- { "bf", "bf-cbc" },
- { "blowfish", "bf-cbc" },
- { "aes", "aes-128-cbc" },
- { "aes-ecb", "aes-128-ecb" },
- { "aes-cbc", "aes-128-cbc" },
- { "aes-128", "aes-128-cbc" },
- { "rijndael", "aes-128-cbc" },
- { "rijndael-128", "aes-128-cbc" },
- { NULL, NULL }
+static PX_Alias int_aliases[] = {
+ {"bf", "bf-cbc"},
+ {"blowfish", "bf-cbc"},
+ {"aes", "aes-128-cbc"},
+ {"aes-ecb", "aes-128-ecb"},
+ {"aes-cbc", "aes-128-cbc"},
+ {"aes-128", "aes-128-cbc"},
+ {"rijndael", "aes-128-cbc"},
+ {"rijndael-128", "aes-128-cbc"},
+ {NULL, NULL}
};
/* PUBLIC FUNCTIONS */
@@ -523,15 +574,16 @@ px_find_digest(const char *name, PX_MD ** res)
}
int
-px_find_cipher(const char *name, PX_Cipher **res)
+px_find_cipher(const char *name, PX_Cipher ** res)
{
- int i;
- PX_Cipher *c = NULL;
+ int i;
+ PX_Cipher *c = NULL;
name = px_resolve_alias(int_aliases, name);
for (i = 0; int_ciphers[i].name; i++)
- if (!strcmp(int_ciphers[i].name, name)) {
+ if (!strcmp(int_ciphers[i].name, name))
+ {
c = int_ciphers[i].load();
break;
}
@@ -542,5 +594,3 @@ px_find_cipher(const char *name, PX_Cipher **res)
*res = c;
return 0;
}
-
-
diff --git a/contrib/pgcrypto/md5.c b/contrib/pgcrypto/md5.c
index d022d61627f..4b03f196067 100644
--- a/contrib/pgcrypto/md5.c
+++ b/contrib/pgcrypto/md5.c
@@ -1,4 +1,4 @@
-/* $Id: md5.c,v 1.7 2001/10/25 01:29:37 momjian Exp $ */
+/* $Id: md5.c,v 1.8 2001/10/25 05:49:19 momjian Exp $ */
/* $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $ */
/*
@@ -132,7 +132,7 @@ static const uint8 md5_paddat[MD5_BUFLEN] = {
static void md5_calc(uint8 *, md5_ctxt *);
void
-md5_init(md5_ctxt *ctxt)
+md5_init(md5_ctxt * ctxt)
{
ctxt->md5_n = 0;
ctxt->md5_i = 0;
@@ -144,7 +144,7 @@ md5_init(md5_ctxt *ctxt)
}
void
-md5_loop(md5_ctxt *ctxt, const uint8 *input, unsigned len)
+md5_loop(md5_ctxt * ctxt, const uint8 *input, unsigned len)
{
unsigned int gap,
i;
@@ -173,7 +173,7 @@ md5_loop(md5_ctxt *ctxt, const uint8 *input, unsigned len)
}
void
-md5_pad(md5_ctxt *ctxt)
+md5_pad(md5_ctxt * ctxt)
{
unsigned int gap;
@@ -215,7 +215,7 @@ md5_pad(md5_ctxt *ctxt)
}
void
-md5_result(uint8 *digest, md5_ctxt *ctxt)
+md5_result(uint8 *digest, md5_ctxt * ctxt)
{
/* 4 byte words */
#if BYTE_ORDER == LITTLE_ENDIAN
@@ -242,11 +242,11 @@ md5_result(uint8 *digest, md5_ctxt *ctxt)
}
#if BYTE_ORDER == BIG_ENDIAN
-static uint32 X[16];
+static uint32 X[16];
#endif
static void
-md5_calc(uint8 *b64, md5_ctxt *ctxt)
+md5_calc(uint8 *b64, md5_ctxt * ctxt)
{
uint32 A = ctxt->md5_sta;
uint32 B = ctxt->md5_stb;
diff --git a/contrib/pgcrypto/mhash.c b/contrib/pgcrypto/mhash.c
index 36d70471a99..8811232c37e 100644
--- a/contrib/pgcrypto/mhash.c
+++ b/contrib/pgcrypto/mhash.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: mhash.c,v 1.4 2001/08/21 00:42:41 momjian Exp $
+ * $Id: mhash.c,v 1.5 2001/10/25 05:49:19 momjian Exp $
*/
#include <postgres.h>
@@ -75,7 +75,7 @@ digest_reset(PX_MD * h)
}
static void
-digest_update(PX_MD * h, const uint8 * data, uint dlen)
+digest_update(PX_MD * h, const uint8 *data, uint dlen)
{
MHASH mh = (MHASH) h->p.ptr;
@@ -83,7 +83,7 @@ digest_update(PX_MD * h, const uint8 * data, uint dlen)
}
static void
-digest_finish(PX_MD * h, uint8 * dst)
+digest_finish(PX_MD * h, uint8 *dst)
{
MHASH mh = (MHASH) h->p.ptr;
uint hlen = digest_result_size(h);
@@ -111,34 +111,37 @@ digest_free(PX_MD * h)
/* ENCRYPT / DECRYPT */
static uint
-cipher_block_size(PX_Cipher *c)
+cipher_block_size(PX_Cipher * c)
{
- MCRYPT ctx = (MCRYPT)c->ptr;
+ MCRYPT ctx = (MCRYPT) c->ptr;
+
return mcrypt_enc_get_block_size(ctx);
}
static uint
-cipher_key_size(PX_Cipher *c)
+cipher_key_size(PX_Cipher * c)
{
- MCRYPT ctx = (MCRYPT)c->ptr;
+ MCRYPT ctx = (MCRYPT) c->ptr;
+
return mcrypt_enc_get_key_size(ctx);
}
static uint
-cipher_iv_size(PX_Cipher *c)
+cipher_iv_size(PX_Cipher * c)
{
- MCRYPT ctx = (MCRYPT)c->ptr;
+ MCRYPT ctx = (MCRYPT) c->ptr;
+
return mcrypt_enc_mode_has_iv(ctx)
? mcrypt_enc_get_iv_size(ctx) : 0;
}
static int
-cipher_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
+cipher_init(PX_Cipher * c, const uint8 *key, uint klen, const uint8 *iv)
{
- int err;
- MCRYPT ctx = (MCRYPT)c->ptr;
+ int err;
+ MCRYPT ctx = (MCRYPT) c->ptr;
- err = mcrypt_generic_init(ctx, (char *)key, klen, (char*)iv);
+ err = mcrypt_generic_init(ctx, (char *) key, klen, (char *) iv);
if (err < 0)
elog(ERROR, "mcrypt_generic_init error: %s", mcrypt_strerror(err));
@@ -147,10 +150,10 @@ cipher_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
}
static int
-cipher_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+cipher_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- int err;
- MCRYPT ctx = (MCRYPT)c->ptr;
+ int err;
+ MCRYPT ctx = (MCRYPT) c->ptr;
memcpy(res, data, dlen);
@@ -161,10 +164,10 @@ cipher_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
}
static int
-cipher_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+cipher_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- int err;
- MCRYPT ctx = (MCRYPT)c->ptr;
+ int err;
+ MCRYPT ctx = (MCRYPT) c->ptr;
memcpy(res, data, dlen);
@@ -176,15 +179,15 @@ cipher_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
static void
-cipher_free(PX_Cipher *c)
+cipher_free(PX_Cipher * c)
{
- MCRYPT ctx = (MCRYPT)c->ptr;
+ MCRYPT ctx = (MCRYPT) c->ptr;
if (c->pstat)
mcrypt_generic_end(ctx);
else
mcrypt_module_close(ctx);
-
+
px_free(c);
}
@@ -223,33 +226,34 @@ static char *modes[] = {
};
static PX_Alias aliases[] = {
- {"bf", "blowfish" },
- {"3des", "tripledes" },
- {"des3", "tripledes" },
- {"aes", "rijndael-128" },
- {"rijndael", "rijndael-128" },
- {"aes-128", "rijndael-128" },
- {"aes-192", "rijndael-192" },
- {"aes-256", "rijndael-256" },
- { NULL, NULL }
+ {"bf", "blowfish"},
+ {"3des", "tripledes"},
+ {"des3", "tripledes"},
+ {"aes", "rijndael-128"},
+ {"rijndael", "rijndael-128"},
+ {"aes-128", "rijndael-128"},
+ {"aes-192", "rijndael-192"},
+ {"aes-256", "rijndael-256"},
+ {NULL, NULL}
};
static PX_Alias mode_aliases[] = {
-#if 0 /* N/A */
- { "cfb", "ncfb" },
- { "ofb", "nofb" },
- { "cfb64", "ncfb" },
+#if 0 /* N/A */
+ {"cfb", "ncfb"},
+ {"ofb", "nofb"},
+ {"cfb64", "ncfb"},
#endif
/* { "ofb64", "nofb" }, not sure it works */
- { "cfb8", "cfb" },
- { "ofb8", "ofb" },
- { NULL, NULL }
+ {"cfb8", "cfb"},
+ {"ofb8", "ofb"},
+ {NULL, NULL}
};
-static int is_mode(char *s)
+static int
+is_mode(char *s)
{
- char **p;
-
+ char **p;
+
if (*s >= '0' && *s <= '9')
return 0;
@@ -263,7 +267,7 @@ static int is_mode(char *s)
/* PUBLIC FUNCTIONS */
int
-px_find_digest(const char *name, PX_MD **res)
+px_find_digest(const char *name, PX_MD ** res)
{
PX_MD *h;
MHASH mh;
@@ -290,19 +294,21 @@ px_find_digest(const char *name, PX_MD **res)
int
-px_find_cipher(const char *name, PX_Cipher **res)
+px_find_cipher(const char *name, PX_Cipher ** res)
{
- char nbuf[PX_MAX_NAMELEN + 1];
+ char nbuf[PX_MAX_NAMELEN + 1];
const char *mode = NULL;
- char *p;
- MCRYPT ctx;
+ char *p;
+ MCRYPT ctx;
- PX_Cipher *c;
+ PX_Cipher *c;
strcpy(nbuf, name);
-
- if ((p = strrchr(nbuf, '-')) != NULL) {
- if (is_mode(p + 1)) {
+
+ if ((p = strrchr(nbuf, '-')) != NULL)
+ {
+ if (is_mode(p + 1))
+ {
mode = p + 1;
*p = 0;
}
@@ -310,19 +316,19 @@ px_find_cipher(const char *name, PX_Cipher **res)
name = px_resolve_alias(aliases, nbuf);
- if (!mode) {
+ if (!mode)
+ {
mode = "cbc";
+
/*
- if (mcrypt_module_is_block_algorithm(name, NULL))
- mode = "cbc";
- else
- mode = "stream";
- */
+ * if (mcrypt_module_is_block_algorithm(name, NULL)) mode = "cbc";
+ * else mode = "stream";
+ */
}
mode = px_resolve_alias(mode_aliases, mode);
-
- ctx = mcrypt_module_open((char*)name, NULL, (char*)mode, NULL);
- if (ctx == (void*)MCRYPT_FAILED)
+
+ ctx = mcrypt_module_open((char *) name, NULL, (char *) mode, NULL);
+ if (ctx == (void *) MCRYPT_FAILED)
return -1;
c = palloc(sizeof *c);
@@ -339,4 +345,3 @@ px_find_cipher(const char *name, PX_Cipher **res)
*res = c;
return 0;
}
-
diff --git a/contrib/pgcrypto/misc.c b/contrib/pgcrypto/misc.c
index 7a3c4297085..5c803c0d5b9 100644
--- a/contrib/pgcrypto/misc.c
+++ b/contrib/pgcrypto/misc.c
@@ -33,7 +33,7 @@
#include "px-crypt.h"
char px_crypt_a64[] =
- "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
/* 0000000000111111111122222222223333333333444444444455555555556666 */
/* 0123456789012345678901234567890123456789012345678901234567890123 */
diff --git a/contrib/pgcrypto/openssl.c b/contrib/pgcrypto/openssl.c
index 6b2ae9c98a9..f9769b7e208 100644
--- a/contrib/pgcrypto/openssl.c
+++ b/contrib/pgcrypto/openssl.c
@@ -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.5 2001/09/23 04:12:44 momjian Exp $
+ * $Id: openssl.c,v 1.6 2001/10/25 05:49:19 momjian Exp $
*/
#include <postgres.h>
@@ -60,7 +60,7 @@ digest_reset(PX_MD * h)
}
static void
-digest_update(PX_MD * h, const uint8 * data, uint dlen)
+digest_update(PX_MD * h, const uint8 *data, uint dlen)
{
EVP_MD_CTX *ctx = (EVP_MD_CTX *) h->p.ptr;
@@ -68,7 +68,7 @@ digest_update(PX_MD * h, const uint8 * data, uint dlen)
}
static void
-digest_finish(PX_MD * h, uint8 * dst)
+digest_finish(PX_MD * h, uint8 *dst)
{
EVP_MD_CTX *ctx = (EVP_MD_CTX *) h->p.ptr;
@@ -94,50 +94,57 @@ digest_free(PX_MD * h)
*/
-typedef struct {
- union {
- struct {
- BF_KEY key;
- int num;
- } bf;
+typedef struct
+{
+ union
+ {
+ struct
+ {
+ BF_KEY key;
+ int num;
+ } bf;
EVP_CIPHER_CTX evp_ctx;
- } u;
+ } u;
const EVP_CIPHER *evp_ciph;
- uint8 key[EVP_MAX_KEY_LENGTH];
- uint8 iv[EVP_MAX_IV_LENGTH];
- uint klen;
- uint init;
-} ossldata;
+ uint8 key[EVP_MAX_KEY_LENGTH];
+ uint8 iv[EVP_MAX_IV_LENGTH];
+ uint klen;
+ uint init;
+} ossldata;
/* generic EVP */
static uint
-gen_evp_block_size(PX_Cipher *c)
+gen_evp_block_size(PX_Cipher * c)
{
- ossldata *od = (ossldata *)c->ptr;
+ ossldata *od = (ossldata *) c->ptr;
+
return EVP_CIPHER_block_size(od->evp_ciph);
}
static uint
-gen_evp_key_size(PX_Cipher *c)
+gen_evp_key_size(PX_Cipher * c)
{
- ossldata *od = (ossldata *)c->ptr;
+ ossldata *od = (ossldata *) c->ptr;
+
return EVP_CIPHER_key_length(od->evp_ciph);
}
static uint
-gen_evp_iv_size(PX_Cipher *c)
+gen_evp_iv_size(PX_Cipher * c)
{
- uint ivlen;
- ossldata *od = (ossldata *)c->ptr;
+ uint ivlen;
+ ossldata *od = (ossldata *) c->ptr;
+
ivlen = EVP_CIPHER_iv_length(od->evp_ciph);
return ivlen;
}
static void
-gen_evp_free(PX_Cipher *c)
+gen_evp_free(PX_Cipher * c)
{
- ossldata *od = (ossldata*)c->ptr;
+ ossldata *od = (ossldata *) c->ptr;
+
memset(od, 0, sizeof(*od));
pfree(od);
pfree(c);
@@ -146,13 +153,14 @@ gen_evp_free(PX_Cipher *c)
/* fun */
static int
-gen_evp_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
+gen_evp_init(PX_Cipher * c, const uint8 *key, uint klen, const uint8 *iv)
{
- ossldata *od = (ossldata*)c->ptr;
- uint bs = gen_evp_block_size(c);
- if (iv) {
+ ossldata *od = (ossldata *) c->ptr;
+ uint bs = gen_evp_block_size(c);
+
+ if (iv)
memcpy(od->iv, iv, bs);
- } else
+ else
memset(od->iv, 0, bs);
memcpy(od->key, key, klen);
od->klen = klen;
@@ -161,19 +169,20 @@ gen_evp_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
}
static void
-_gen_init(PX_Cipher *c, int enc)
+_gen_init(PX_Cipher * c, int enc)
{
- ossldata *od = c->ptr;
-
+ ossldata *od = c->ptr;
+
od->evp_ciph->init(&od->u.evp_ctx, od->key, od->iv, enc);
od->init = 1;
od->u.evp_ctx.encrypt = enc;
}
static int
-gen_evp_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+gen_evp_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
if (!od->init)
_gen_init(c, 1);
od->evp_ciph->do_cipher(&od->u.evp_ctx, res, data, dlen);
@@ -181,9 +190,10 @@ gen_evp_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
}
static int
-gen_evp_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+gen_evp_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
if (!od->init)
_gen_init(c, 0);
od->evp_ciph->do_cipher(&od->u.evp_ctx, res, data, dlen);
@@ -193,84 +203,95 @@ gen_evp_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
/* Blowfish */
static int
-bf_init(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv)
+bf_init(PX_Cipher * c, const uint8 *key, uint klen, const uint8 *iv)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_set_key(&od->u.bf.key, klen, key);
- if (iv) {
+ if (iv)
memcpy(od->iv, iv, BF_BLOCK);
- } else
+ else
memset(od->iv, 0, BF_BLOCK);
od->u.bf.num = 0;
return 0;
}
static int
-bf_ecb_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_ecb_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- uint bs = gen_evp_block_size(c), i;
- ossldata *od = c->ptr;
+ uint bs = gen_evp_block_size(c),
+ i;
+ ossldata *od = c->ptr;
+
for (i = 0; i < dlen / bs; i++)
- BF_ecb_encrypt(data+i*bs, res+i*bs, &od->u.bf.key, BF_ENCRYPT);
+ BF_ecb_encrypt(data + i * bs, res + i * bs, &od->u.bf.key, BF_ENCRYPT);
return 0;
}
static int
-bf_ecb_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_ecb_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- uint bs = gen_evp_block_size(c), i;
- ossldata *od = c->ptr;
+ uint bs = gen_evp_block_size(c),
+ i;
+ ossldata *od = c->ptr;
+
for (i = 0; i < dlen / bs; i++)
- BF_ecb_encrypt(data+i*bs, res+i*bs, &od->u.bf.key, BF_DECRYPT);
+ BF_ecb_encrypt(data + i * bs, res + i * bs, &od->u.bf.key, BF_DECRYPT);
return 0;
}
static int
-bf_cbc_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_cbc_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_cbc_encrypt(data, res, dlen, &od->u.bf.key, od->iv, BF_ENCRYPT);
return 0;
}
static int
-bf_cbc_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_cbc_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_cbc_encrypt(data, res, dlen, &od->u.bf.key, od->iv, BF_DECRYPT);
return 0;
}
static int
-bf_cfb64_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_cfb64_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_cfb64_encrypt(data, res, dlen, &od->u.bf.key, od->iv,
- &od->u.bf.num, BF_ENCRYPT);
+ &od->u.bf.num, BF_ENCRYPT);
return 0;
}
static int
-bf_cfb64_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_cfb64_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_cfb64_encrypt(data, res, dlen, &od->u.bf.key, od->iv,
- &od->u.bf.num, BF_DECRYPT);
+ &od->u.bf.num, BF_DECRYPT);
return 0;
}
static int
-bf_ofb64_encrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_ofb64_encrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_ofb64_encrypt(data, res, dlen, &od->u.bf.key, od->iv, &od->u.bf.num);
return 0;
}
static int
-bf_ofb64_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
+bf_ofb64_decrypt(PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res)
{
- ossldata *od = c->ptr;
+ ossldata *od = c->ptr;
+
BF_ofb64_encrypt(data, res, dlen, &od->u.bf.key, od->iv, &od->u.bf.num);
return 0;
}
@@ -279,14 +300,14 @@ bf_ofb64_decrypt(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res)
* aliases
*/
-static PX_Alias ossl_aliases [] = {
- { "bf", "bf-cbc" },
- { "blowfish", "bf-cbc" },
- { "blowfish-cbc", "bf-cbc" },
- { "blowfish-ecb", "bf-ecb" },
- { "blowfish-cfb", "bf-cfb" },
- { "blowfish-ofb", "bf-ofb" },
- { NULL }
+static PX_Alias ossl_aliases[] = {
+ {"bf", "bf-cbc"},
+ {"blowfish", "bf-cbc"},
+ {"blowfish-cbc", "bf-cbc"},
+ {"blowfish-ecb", "bf-ecb"},
+ {"blowfish-cfb", "bf-cfb"},
+ {"blowfish-ofb", "bf-ofb"},
+ {NULL}
};
/*
@@ -299,19 +320,44 @@ static PX_Alias ossl_mode_aliases [] = {
/*
* Special handlers
*/
-struct {
- char *name;
- PX_Cipher cf;
-} spec_types [] = {
- { "bf-cbc", { gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
- bf_init, bf_cbc_encrypt, bf_cbc_decrypt, gen_evp_free}},
- { "bf-ecb", { gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
- bf_init, bf_ecb_encrypt, bf_ecb_decrypt, gen_evp_free}},
- { "bf-cfb", { gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
- bf_init, bf_cfb64_encrypt, bf_cfb64_decrypt, gen_evp_free}},
- { "bf-ofb", { gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
- bf_init, bf_ofb64_encrypt, bf_ofb64_decrypt, gen_evp_free}},
- { NULL }
+struct
+{
+ char *name;
+ PX_Cipher cf;
+} spec_types[] =
+
+{
+ {
+ "bf-cbc",
+ {
+ gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
+ bf_init, bf_cbc_encrypt, bf_cbc_decrypt, gen_evp_free
+ }
+ },
+ {
+ "bf-ecb",
+ {
+ gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
+ bf_init, bf_ecb_encrypt, bf_ecb_decrypt, gen_evp_free
+ }
+ },
+ {
+ "bf-cfb",
+ {
+ gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
+ bf_init, bf_cfb64_encrypt, bf_cfb64_decrypt, gen_evp_free
+ }
+ },
+ {
+ "bf-ofb",
+ {
+ gen_evp_block_size, gen_evp_key_size, gen_evp_iv_size,
+ bf_init, bf_ofb64_encrypt, bf_ofb64_decrypt, gen_evp_free
+ }
+ },
+ {
+ NULL
+ }
};
/*
@@ -322,7 +368,7 @@ static PX_Cipher gen_evp_handler = {
gen_evp_init, gen_evp_encrypt, gen_evp_decrypt, gen_evp_free
};
-static int px_openssl_initialized = 0;
+static int px_openssl_initialized = 0;
/* ATM not needed
static void *o_alloc(uint s) { return px_alloc(s); }
@@ -333,7 +379,7 @@ static void o_free(void *p) { px_free(p); }
/* PUBLIC functions */
int
-px_find_digest(const char *name, PX_MD **res)
+px_find_digest(const char *name, PX_MD ** res)
{
const EVP_MD *md;
EVP_MD_CTX *ctx;
@@ -342,7 +388,7 @@ px_find_digest(const char *name, PX_MD **res)
if (!px_openssl_initialized)
{
px_openssl_initialized = 1;
- /*CRYPTO_set_mem_functions(o_alloc, o_realloc, o_free);*/
+ /* CRYPTO_set_mem_functions(o_alloc, o_realloc, o_free); */
OpenSSL_add_all_algorithms();
}
@@ -368,17 +414,19 @@ px_find_digest(const char *name, PX_MD **res)
int
-px_find_cipher(const char *name, PX_Cipher **res)
+px_find_cipher(const char *name, PX_Cipher ** res)
{
- uint i;
- PX_Cipher *c = NULL, *csrc;
- ossldata *od;
+ uint i;
+ PX_Cipher *c = NULL,
+ *csrc;
+ ossldata *od;
const EVP_CIPHER *evp_c;
- if (!px_openssl_initialized) {
+ if (!px_openssl_initialized)
+ {
px_openssl_initialized = 1;
- /*CRYPTO_set_mem_functions(o_alloc, o_realloc, o_free);*/
+ /* CRYPTO_set_mem_functions(o_alloc, o_realloc, o_free); */
OpenSSL_add_all_algorithms();
}
@@ -390,23 +438,23 @@ px_find_cipher(const char *name, PX_Cipher **res)
od = px_alloc(sizeof(*od));
memset(od, 0, sizeof(*od));
od->evp_ciph = evp_c;
-
+
csrc = NULL;
for (i = 0; spec_types[i].name; i++)
- if (!strcmp(name, spec_types[i].name)) {
+ if (!strcmp(name, spec_types[i].name))
+ {
csrc = &spec_types[i].cf;
break;
}
-
+
if (csrc == NULL)
csrc = &gen_evp_handler;
c = px_alloc(sizeof(*c));
memcpy(c, csrc, sizeof(*c));
c->ptr = od;
-
+
*res = c;
return 0;
}
-
diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c
index 2bd9b21e167..a6424e61fb3 100644
--- a/contrib/pgcrypto/pgcrypto.c
+++ b/contrib/pgcrypto/pgcrypto.c
@@ -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.9 2001/09/23 04:12:44 momjian Exp $
+ * $Id: pgcrypto.c,v 1.10 2001/10/25 05:49:19 momjian Exp $
*/
#include <postgres.h>
@@ -41,7 +41,7 @@
typedef int (*PFN) (const char *name, void **res);
static void *
- find_provider(text * name, PFN pf, char *desc, int silent);
+ find_provider(text *name, PFN pf, char *desc, int silent);
/* SQL function: hash(text, text) returns text */
PG_FUNCTION_INFO_V1(pg_digest);
@@ -313,17 +313,21 @@ PG_FUNCTION_INFO_V1(pg_encrypt);
Datum
pg_encrypt(PG_FUNCTION_ARGS)
{
- int err;
- bytea *data, *key, *res;
- text *type;
- PX_Combo *c;
- uint dlen, klen, rlen;
-
+ int err;
+ bytea *data,
+ *key,
+ *res;
+ text *type;
+ PX_Combo *c;
+ uint dlen,
+ klen,
+ rlen;
+
if (PG_ARGISNULL(0) || PG_ARGISNULL(1) || PG_ARGISNULL(2))
PG_RETURN_NULL();
-
+
type = PG_GETARG_TEXT_P(2);
- c = find_provider(type, (PFN)px_find_combo, "Cipher", 0);
+ c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
data = PG_GETARG_BYTEA_P(0);
key = PG_GETARG_BYTEA_P(1);
@@ -341,8 +345,9 @@ pg_encrypt(PG_FUNCTION_ARGS)
PG_FREE_IF_COPY(data, 0);
PG_FREE_IF_COPY(key, 1);
PG_FREE_IF_COPY(type, 2);
-
- if (err) {
+
+ if (err)
+ {
pfree(res);
elog(ERROR, "encrypt error: %d", err);
}
@@ -357,17 +362,21 @@ PG_FUNCTION_INFO_V1(pg_decrypt);
Datum
pg_decrypt(PG_FUNCTION_ARGS)
{
- int err;
- bytea *data, *key, *res;
- text *type;
- PX_Combo *c;
- uint dlen, klen, rlen;
-
+ int err;
+ bytea *data,
+ *key,
+ *res;
+ text *type;
+ PX_Combo *c;
+ uint dlen,
+ klen,
+ rlen;
+
if (PG_ARGISNULL(0) || PG_ARGISNULL(1) || PG_ARGISNULL(2))
PG_RETURN_NULL();
-
+
type = PG_GETARG_TEXT_P(2);
- c = find_provider(type, (PFN)px_find_combo, "Cipher", 0);
+ c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
data = PG_GETARG_BYTEA_P(0);
key = PG_GETARG_BYTEA_P(1);
@@ -401,18 +410,24 @@ PG_FUNCTION_INFO_V1(pg_encrypt_iv);
Datum
pg_encrypt_iv(PG_FUNCTION_ARGS)
{
- int err;
- bytea *data, *key, *iv, *res;
- text *type;
- PX_Combo *c;
- uint dlen, klen, ivlen, rlen;
-
+ int err;
+ bytea *data,
+ *key,
+ *iv,
+ *res;
+ text *type;
+ PX_Combo *c;
+ uint dlen,
+ klen,
+ ivlen,
+ rlen;
+
if (PG_ARGISNULL(0) || PG_ARGISNULL(1)
- || PG_ARGISNULL(2) || PG_ARGISNULL(3))
+ || PG_ARGISNULL(2) || PG_ARGISNULL(3))
PG_RETURN_NULL();
-
+
type = PG_GETARG_TEXT_P(3);
- c = find_provider(type, (PFN)px_find_combo, "Cipher", 0);
+ c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
data = PG_GETARG_BYTEA_P(0);
key = PG_GETARG_BYTEA_P(1);
@@ -449,18 +464,24 @@ PG_FUNCTION_INFO_V1(pg_decrypt_iv);
Datum
pg_decrypt_iv(PG_FUNCTION_ARGS)
{
- int err;
- bytea *data, *key, *iv, *res;
- text *type;
- PX_Combo *c;
- uint dlen, klen, rlen, ivlen;
-
+ int err;
+ bytea *data,
+ *key,
+ *iv,
+ *res;
+ text *type;
+ PX_Combo *c;
+ uint dlen,
+ klen,
+ rlen,
+ ivlen;
+
if (PG_ARGISNULL(0) || PG_ARGISNULL(1)
- || PG_ARGISNULL(2) || PG_ARGISNULL(3))
+ || PG_ARGISNULL(2) || PG_ARGISNULL(3))
PG_RETURN_NULL();
-
+
type = PG_GETARG_TEXT_P(3);
- c = find_provider(type, (PFN)px_find_combo, "Cipher", 0);
+ c = find_provider(type, (PFN) px_find_combo, "Cipher", 0);
data = PG_GETARG_BYTEA_P(0);
key = PG_GETARG_BYTEA_P(1);
@@ -480,7 +501,7 @@ pg_decrypt_iv(PG_FUNCTION_ARGS)
if (err)
elog(ERROR, "decrypt_iv error: %d", err);
-
+
VARATT_SIZEP(res) = VARHDRSZ + rlen;
PG_FREE_IF_COPY(data, 0);
@@ -497,15 +518,15 @@ PG_FUNCTION_INFO_V1(pg_cipher_exists);
Datum
pg_cipher_exists(PG_FUNCTION_ARGS)
{
- text *arg;
- PX_Combo *c;
+ text *arg;
+ PX_Combo *c;
if (PG_ARGISNULL(0))
PG_RETURN_NULL();
arg = PG_GETARG_TEXT_P(0);
- c = find_provider(arg, (PFN)px_find_combo, "Cipher", 1);
+ c = find_provider(arg, (PFN) px_find_combo, "Cipher", 1);
if (c != NULL)
px_combo_free(c);
@@ -514,7 +535,7 @@ pg_cipher_exists(PG_FUNCTION_ARGS)
static void *
-find_provider(text * name,
+find_provider(text *name,
PFN provider_lookup,
char *desc, int silent)
{
diff --git a/contrib/pgcrypto/pgcrypto.h b/contrib/pgcrypto/pgcrypto.h
index 1b49c8d895b..26d04c5dc41 100644
--- a/contrib/pgcrypto/pgcrypto.h
+++ b/contrib/pgcrypto/pgcrypto.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: pgcrypto.h,v 1.5 2001/09/23 04:12:44 momjian Exp $
+ * $Id: pgcrypto.h,v 1.6 2001/10/25 05:49:20 momjian Exp $
*/
#ifndef _PG_CRYPTO_H
@@ -45,6 +45,4 @@ Datum pg_decrypt(PG_FUNCTION_ARGS);
Datum pg_encrypt_iv(PG_FUNCTION_ARGS);
Datum pg_decrypt_iv(PG_FUNCTION_ARGS);
Datum pg_cipher_exists(PG_FUNCTION_ARGS);
-
#endif
-
diff --git a/contrib/pgcrypto/px-crypt.c b/contrib/pgcrypto/px-crypt.c
index 7d767279b15..c0821408087 100644
--- a/contrib/pgcrypto/px-crypt.c
+++ b/contrib/pgcrypto/px-crypt.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: px-crypt.c,v 1.2 2001/09/23 04:12:44 momjian Exp $
+ * $Id: px-crypt.c,v 1.3 2001/10/25 05:49:20 momjian Exp $
*/
#include <postgres.h>
@@ -38,7 +38,7 @@
static char *
run_crypt_des(const char *psw, const char *salt,
- char *buf, unsigned len)
+ char *buf, unsigned len)
{
char *res;
@@ -51,37 +51,51 @@ run_crypt_des(const char *psw, const char *salt,
static char *
run_crypt_md5(const char *psw, const char *salt,
- char *buf, unsigned len)
+ char *buf, unsigned len)
{
char *res;
+
res = px_crypt_md5(psw, salt, buf, len);
return res;
}
static char *
run_crypt_bf(const char *psw, const char *salt,
- char *buf, unsigned len)
+ char *buf, unsigned len)
{
char *res;
+
res = _crypt_blowfish_rn(psw, salt, buf, len);
return res;
}
static struct
{
- char *id;
+ char *id;
unsigned id_len;
char *(*crypt) (const char *psw, const char *salt,
char *buf, unsigned len);
} px_crypt_list[] =
{
- { "$2a$", 4, run_crypt_bf },
- { "$2$", 3, NULL }, /* N/A */
- { "$1$", 3, run_crypt_md5 },
- { "_", 1, run_crypt_des },
- { "", 0, run_crypt_des },
- { NULL, 0, NULL }
+ {
+ "$2a$", 4, run_crypt_bf
+ },
+ {
+ "$2$", 3, NULL
+ }, /* N/A */
+ {
+ "$1$", 3, run_crypt_md5
+ },
+ {
+ "_", 1, run_crypt_des
+ },
+ {
+ "", 0, run_crypt_des
+ },
+ {
+ NULL, 0, NULL
+ }
};
char *
@@ -125,41 +139,45 @@ px_crypt(const char *psw, const char *salt,
* salt generators
*/
-struct generator {
- char *name;
- char *(*gen)(unsigned long count, const char *input, int size,
- char *output, int output_size);
- int input_len;
- int def_rounds;
- int min_rounds;
- int max_rounds;
+struct generator
+{
+ char *name;
+ char *(*gen) (unsigned long count, const char *input, int size,
+ char *output, int output_size);
+ int input_len;
+ int def_rounds;
+ int min_rounds;
+ int max_rounds;
};
-static struct generator gen_list [] = {
- { "des", _crypt_gensalt_traditional_rn, 2, 0, 0, 0 },
- { "md5", _crypt_gensalt_md5_rn, 6, 0, 0, 0 },
- { "xdes", _crypt_gensalt_extended_rn, 3, PX_XDES_ROUNDS, 1, 0xFFFFFF },
- { "bf", _crypt_gensalt_blowfish_rn, 16, PX_BF_ROUNDS, 4, 31 },
- { NULL, NULL, 0, 0, 0 }
+static struct generator gen_list[] = {
+ {"des", _crypt_gensalt_traditional_rn, 2, 0, 0, 0},
+ {"md5", _crypt_gensalt_md5_rn, 6, 0, 0, 0},
+ {"xdes", _crypt_gensalt_extended_rn, 3, PX_XDES_ROUNDS, 1, 0xFFFFFF},
+ {"bf", _crypt_gensalt_blowfish_rn, 16, PX_BF_ROUNDS, 4, 31},
+ {NULL, NULL, 0, 0, 0}
};
uint
px_gen_salt(const char *salt_type, char *buf, int rounds)
{
- int i, res;
+ int i,
+ res;
struct generator *g;
- char *p;
- char rbuf[16];
-
- for (i = 0; gen_list[i].name; i++) {
+ char *p;
+ char rbuf[16];
+
+ for (i = 0; gen_list[i].name; i++)
+ {
g = &gen_list[i];
if (strcasecmp(g->name, salt_type) != 0)
continue;
- if (g->def_rounds) {
+ if (g->def_rounds)
+ {
if (rounds == 0)
rounds = g->def_rounds;
-
+
if (rounds < g->min_rounds || rounds > g->max_rounds)
return 0;
}
@@ -170,10 +188,9 @@ px_gen_salt(const char *salt_type, char *buf, int rounds)
p = g->gen(rounds, rbuf, g->input_len, buf, PX_MAX_SALT_LEN);
memset(rbuf, 0, sizeof(rbuf));
-
+
return p != NULL ? strlen(p) : 0;
}
return 0;
}
-
diff --git a/contrib/pgcrypto/px-crypt.h b/contrib/pgcrypto/px-crypt.h
index 5edebb3d3be..7265d414915 100644
--- a/contrib/pgcrypto/px-crypt.h
+++ b/contrib/pgcrypto/px-crypt.h
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: px-crypt.h,v 1.2 2001/09/23 04:12:44 momjian Exp $
+ * $Id: px-crypt.h,v 1.3 2001/10/25 05:49:20 momjian Exp $
*/
#ifndef _PX_CRYPT_H
@@ -36,7 +36,7 @@
#define PX_MAX_CRYPT 128
/* max salt returned by gen_salt() */
-#define PX_MAX_SALT_LEN 128
+#define PX_MAX_SALT_LEN 128
/* default rounds for xdes salt */
/* NetBSD bin/passwd/local_passwd.c has (29 * 25)*/
@@ -58,19 +58,20 @@ unsigned px_gen_salt(const char *salt_type, char *dst, int rounds);
/* misc.c */
extern void px_crypt_to64(char *s, unsigned long v, int n);
extern char px_crypt_a64[];
+
/* avoid conflicts with system libs */
#define _crypt_to64 px_crypt_to64
#define _crypt_a64 px_crypt_a64
/* crypt-gensalt.c */
char *_crypt_gensalt_traditional_rn(unsigned long count,
- const char *input, int size, char *output, int output_size);
+ const char *input, int size, char *output, int output_size);
char *_crypt_gensalt_extended_rn(unsigned long count,
- const char *input, int size, char *output, int output_size);
+ const char *input, int size, char *output, int output_size);
char *_crypt_gensalt_md5_rn(unsigned long count,
- const char *input, int size, char *output, int output_size);
+ const char *input, int size, char *output, int output_size);
char *_crypt_gensalt_blowfish_rn(unsigned long count,
- const char *input, int size, char *output, int output_size);
+ const char *input, int size, char *output, int output_size);
#ifndef PX_SYSTEM_CRYPT
@@ -85,8 +86,7 @@ char *_crypt_blowfish_rn(const char *key, const char *setting,
char *px_crypt_des(const char *key, const char *setting);
/* crypt-md5.c */
-char *px_crypt_md5(const char *pw, const char *salt,
- char *dst, unsigned dstlen);
-
+char *px_crypt_md5(const char *pw, const char *salt,
+ char *dst, unsigned dstlen);
#endif /* !PX_SYSTEM_CRYPT */
#endif /* _PX_CRYPT_H */
diff --git a/contrib/pgcrypto/px-hmac.c b/contrib/pgcrypto/px-hmac.c
index d635aba124c..147a559238e 100644
--- a/contrib/pgcrypto/px-hmac.c
+++ b/contrib/pgcrypto/px-hmac.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: px-hmac.c,v 1.1 2001/08/21 01:32:01 momjian Exp $
+ * $Id: px-hmac.c,v 1.2 2001/10/25 05:49:20 momjian Exp $
*/
@@ -50,7 +50,7 @@ hmac_block_size(PX_HMAC * h)
}
static void
-hmac_init(PX_HMAC * h, const uint8 * key, uint klen)
+hmac_init(PX_HMAC * h, const uint8 *key, uint klen)
{
uint bs,
hlen,
@@ -95,13 +95,13 @@ hmac_reset(PX_HMAC * h)
}
static void
-hmac_update(PX_HMAC * h, const uint8 * data, uint dlen)
+hmac_update(PX_HMAC * h, const uint8 *data, uint dlen)
{
px_md_update(h->md, data, dlen);
}
static void
-hmac_finish(PX_HMAC * h, uint8 * dst)
+hmac_finish(PX_HMAC * h, uint8 *dst)
{
PX_MD *md = h->md;
uint bs,
diff --git a/contrib/pgcrypto/px.c b/contrib/pgcrypto/px.c
index 9c18f6f250e..20550bf1003 100644
--- a/contrib/pgcrypto/px.c
+++ b/contrib/pgcrypto/px.c
@@ -1,7 +1,7 @@
/*
* px.c
* Various cryptographic stuff for PostgreSQL.
- *
+ *
* Copyright (c) 2001 Marko Kreen
* All rights reserved.
*
@@ -9,15 +9,15 @@
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR 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)
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: px.c,v 1.2 2001/09/06 03:21:39 momjian Exp $
+ * $Id: px.c,v 1.3 2001/10/25 05:49:20 momjian Exp $
*/
#include <postgres.h>
@@ -35,9 +35,10 @@
const char *
-px_resolve_alias(const PX_Alias *list, const char *name)
+px_resolve_alias(const PX_Alias * list, const char *name)
{
- while (list->name) {
+ while (list->name)
+ {
if (!strcasecmp(list->alias, name))
return list->name;
list++;
@@ -50,32 +51,35 @@ px_resolve_alias(const PX_Alias *list, const char *name)
*/
static uint
-combo_encrypt_len(PX_Combo *cx, uint dlen)
+combo_encrypt_len(PX_Combo * cx, uint dlen)
{
return dlen + 512;
}
static uint
-combo_decrypt_len(PX_Combo *cx, uint dlen)
+combo_decrypt_len(PX_Combo * cx, uint dlen)
{
return dlen;
}
static int
-combo_init(PX_Combo *cx, const uint8 *key, uint klen,
- const uint8 *iv, uint ivlen)
+combo_init(PX_Combo * cx, const uint8 *key, uint klen,
+ const uint8 *iv, uint ivlen)
{
- int err;
- uint bs, ks, ivs;
- PX_Cipher *c = cx->cipher;
- uint8 *ivbuf = NULL;
- uint8 *keybuf;
+ int err;
+ uint bs,
+ ks,
+ ivs;
+ PX_Cipher *c = cx->cipher;
+ uint8 *ivbuf = NULL;
+ uint8 *keybuf;
bs = px_cipher_block_size(c);
ks = px_cipher_key_size(c);
ivs = px_cipher_iv_size(c);
- if (ivs > 0) {
+ if (ivs > 0)
+ {
ivbuf = px_alloc(ivs);
memset(ivbuf, 0, ivs);
if (ivlen > ivs)
@@ -97,39 +101,48 @@ combo_init(PX_Combo *cx, const uint8 *key, uint klen,
}
static int
-combo_encrypt(PX_Combo *cx, const uint8 *data, uint dlen,
- uint8 *res, uint *rlen)
+combo_encrypt(PX_Combo * cx, const uint8 *data, uint dlen,
+ uint8 *res, uint *rlen)
{
- int err = 0;
- uint8 *bbuf;
- uint bs, maxlen, bpos, i, pad;
+ int err = 0;
+ uint8 *bbuf;
+ uint bs,
+ maxlen,
+ bpos,
+ i,
+ pad;
- PX_Cipher *c = cx->cipher;
+ PX_Cipher *c = cx->cipher;
bbuf = NULL;
maxlen = *rlen;
bs = px_cipher_block_size(c);
-
+
/* encrypt */
- if (bs > 1) {
+ if (bs > 1)
+ {
bbuf = px_alloc(bs * 4);
bpos = dlen % bs;
*rlen = dlen - bpos;
memcpy(bbuf, data + *rlen, bpos);
/* encrypt full-block data */
- if (*rlen) {
+ if (*rlen)
+ {
err = px_cipher_encrypt(c, data, *rlen, res);
if (err)
goto out;
}
-
+
/* bbuf has now bpos bytes of stuff */
- if (cx->padding) {
+ if (cx->padding)
+ {
pad = bs - (bpos % bs);
for (i = 0; i < pad; i++)
bbuf[bpos++] = pad;
- } else if (bpos % bs) {
+ }
+ else if (bpos % bs)
+ {
/* ERROR? */
pad = bs - (bpos % bs);
for (i = 0; i < pad; i++)
@@ -137,11 +150,14 @@ combo_encrypt(PX_Combo *cx, const uint8 *data, uint dlen,
}
/* encrypt the rest - pad */
- if (bpos) {
+ if (bpos)
+ {
err = px_cipher_encrypt(c, bbuf, bpos, res + *rlen);
*rlen += bpos;
}
- } else {
+ }
+ else
+ {
/* stream cipher/mode - no pad needed */
err = px_cipher_encrypt(c, data, dlen, res);
if (err)
@@ -149,48 +165,53 @@ combo_encrypt(PX_Combo *cx, const uint8 *data, uint dlen,
*rlen = dlen;
}
out:
- if (bbuf) px_free(bbuf);
+ if (bbuf)
+ px_free(bbuf);
return err;
}
static int
-combo_decrypt(PX_Combo *cx, const uint8 *data, uint dlen,
- uint8 *res, uint *rlen)
+combo_decrypt(PX_Combo * cx, const uint8 *data, uint dlen,
+ uint8 *res, uint *rlen)
{
- uint bs, i, pad;
- uint pad_ok;
+ uint bs,
+ i,
+ pad;
+ uint pad_ok;
- PX_Cipher *c = cx->cipher;
+ PX_Cipher *c = cx->cipher;
bs = px_cipher_block_size(c);
- if (bs > 1 && (dlen % bs) != 0) {
+ if (bs > 1 && (dlen % bs) != 0)
goto block_error;
- }
-
+
/* decrypt */
*rlen = dlen;
px_cipher_decrypt(c, data, dlen, res);
-
+
/* unpad */
- if (bs > 1 && cx->padding) {
+ if (bs > 1 && cx->padding)
+ {
pad = res[*rlen - 1];
pad_ok = 0;
- if (pad > 0 && pad <= bs && pad <= *rlen) {
+ if (pad > 0 && pad <= bs && pad <= *rlen)
+ {
pad_ok = 1;
for (i = *rlen - pad; i < *rlen; i++)
- if (res[i] != pad) {
+ if (res[i] != pad)
+ {
pad_ok = 0;
break;
}
}
-
+
if (pad_ok)
*rlen -= pad;
}
return 0;
-
+
/* error reporting should be done in pgcrypto.c */
block_error:
elog(NOTICE, "Data not a multiple of block size");
@@ -198,7 +219,7 @@ block_error:
}
static void
-combo_free(PX_Combo *cx)
+combo_free(PX_Combo * cx)
{
if (cx->cipher)
px_cipher_free(cx->cipher);
@@ -211,31 +232,38 @@ combo_free(PX_Combo *cx)
static int
parse_cipher_name(char *full, char **cipher, char **pad)
{
- char *p, *p2, *q;
+ char *p,
+ *p2,
+ *q;
+
*cipher = full;
*pad = NULL;
-
+
p = strchr(full, '/');
if (p != NULL)
*p++ = 0;
- while (p != NULL) {
+ while (p != NULL)
+ {
if ((q = strchr(p, '/')) != NULL)
*q++ = 0;
-
- if (!*p) {
+
+ if (!*p)
+ {
p = q;
continue;
}
p2 = strchr(p, ':');
- if (p2 != NULL) {
+ if (p2 != NULL)
+ {
*p2++ = 0;
if (!strcmp(p, "pad"))
*pad = p2;
else
return -1;
- } else
+ }
+ else
return -1;
-
+
p = q;
}
return 0;
@@ -244,12 +272,14 @@ parse_cipher_name(char *full, char **cipher, char **pad)
/* provider */
int
-px_find_combo(const char *name, PX_Combo **res)
+px_find_combo(const char *name, PX_Combo ** res)
{
- int err;
- char *buf, *s_cipher, *s_pad;
+ int err;
+ char *buf,
+ *s_cipher,
+ *s_pad;
- PX_Combo *cx;
+ PX_Combo *cx;
cx = px_alloc(sizeof(*cx));
memset(cx, 0, sizeof(*cx));
@@ -258,7 +288,8 @@ px_find_combo(const char *name, PX_Combo **res)
strcpy(buf, name);
err = parse_cipher_name(buf, &s_cipher, &s_pad);
- if (err) {
+ if (err)
+ {
px_free(buf);
px_free(cx);
return err;
@@ -267,15 +298,17 @@ px_find_combo(const char *name, PX_Combo **res)
err = px_find_cipher(s_cipher, &cx->cipher);
if (err)
goto err1;
-
- if (s_pad != NULL) {
+
+ if (s_pad != NULL)
+ {
if (!strcmp(s_pad, "pkcs"))
cx->padding = 1;
else if (!strcmp(s_pad, "none"))
cx->padding = 0;
else
goto err1;
- } else
+ }
+ else
cx->padding = 1;
cx->init = combo_init;
@@ -290,7 +323,7 @@ px_find_combo(const char *name, PX_Combo **res)
*res = cx;
return 0;
-
+
err1:
if (cx->cipher)
px_cipher_free(cx->cipher);
@@ -298,4 +331,3 @@ err1:
px_free(buf);
return -1;
}
-
diff --git a/contrib/pgcrypto/px.h b/contrib/pgcrypto/px.h
index d4cffc3c069..d2a87b26e19 100644
--- a/contrib/pgcrypto/px.h
+++ b/contrib/pgcrypto/px.h
@@ -1,7 +1,7 @@
/*
* px.h
* Header file for pgcrypto.
- *
+ *
* Copyright (c) 2001 Marko Kreen
* All rights reserved.
*
@@ -9,15 +9,15 @@
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR 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)
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: px.h,v 1.2 2001/09/23 04:12:44 momjian Exp $
+ * $Id: px.h,v 1.3 2001/10/25 05:49:20 momjian Exp $
*/
#ifndef __PX_H
@@ -36,22 +36,21 @@
#define px_alloc(s) palloc(s)
#define px_realloc(p, s) prealloc(p, s)
-#define px_free(p) pfree(p)
+#define px_free(p) pfree(p)
#else
-void *xalloc(size_t s);
-void *xrealloc(void *p, size_t s);
-void xfree(void *p);
+void *xalloc(size_t s);
+void *xrealloc(void *p, size_t s);
+void xfree(void *p);
#define px_alloc(s) xalloc(s)
#define px_realloc(p, s) xrealloc(p, s)
-#define px_free(p) xfree(p)
-
+#define px_free(p) xfree(p)
#endif
/* max len of 'type' parms */
-#define PX_MAX_NAMELEN 128
+#define PX_MAX_NAMELEN 128
/* max salt returned */
#define PX_MAX_SALT_LEN 128
@@ -63,79 +62,86 @@ typedef struct px_hmac PX_HMAC;
typedef struct px_cipher PX_Cipher;
typedef struct px_combo PX_Combo;
-struct px_digest {
- uint (*result_size)(PX_MD *h);
- uint (*block_size)(PX_MD *h);
- void (*reset)(PX_MD *h);
- void (*update)(PX_MD *h, const uint8 *data, uint dlen);
- void (*finish)(PX_MD *h, uint8 *dst);
- void (*free)(PX_MD *h);
+struct px_digest
+{
+ uint (*result_size) (PX_MD * h);
+ uint (*block_size) (PX_MD * h);
+ void (*reset) (PX_MD * h);
+ void (*update) (PX_MD * h, const uint8 *data, uint dlen);
+ void (*finish) (PX_MD * h, uint8 *dst);
+ void (*free) (PX_MD * h);
/* private */
- union {
- uint code;
+ union
+ {
+ uint code;
const void *ptr;
- } p;
+ } p;
};
-struct px_alias {
- char *alias;
- char *name;
+struct px_alias
+{
+ char *alias;
+ char *name;
};
-struct px_hmac {
- uint (*result_size)(PX_HMAC *h);
- uint (*block_size)(PX_HMAC *h);
- void (*reset)(PX_HMAC *h);
- void (*update)(PX_HMAC *h, const uint8 *data, uint dlen);
- void (*finish)(PX_HMAC *h, uint8 *dst);
- void (*free)(PX_HMAC *h);
- void (*init)(PX_HMAC *h, const uint8 *key, uint klen);
-
- PX_MD *md;
+struct px_hmac
+{
+ uint (*result_size) (PX_HMAC * h);
+ uint (*block_size) (PX_HMAC * h);
+ void (*reset) (PX_HMAC * h);
+ void (*update) (PX_HMAC * h, const uint8 *data, uint dlen);
+ void (*finish) (PX_HMAC * h, uint8 *dst);
+ void (*free) (PX_HMAC * h);
+ void (*init) (PX_HMAC * h, const uint8 *key, uint klen);
+
+ PX_MD *md;
/* private */
- struct {
- uint8 *ipad;
- uint8 *opad;
- } p;
+ struct
+ {
+ uint8 *ipad;
+ uint8 *opad;
+ } p;
};
-struct px_cipher {
- uint (*block_size)(PX_Cipher *c);
- uint (*key_size)(PX_Cipher *c); /* max key len */
- uint (*iv_size)(PX_Cipher *c);
-
- int (*init)(PX_Cipher *c, const uint8 *key, uint klen, const uint8 *iv);
- int (*encrypt)(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res);
- int (*decrypt)(PX_Cipher *c, const uint8 *data, uint dlen, uint8 *res);
- void (*free)(PX_Cipher *c);
+struct px_cipher
+{
+ uint (*block_size) (PX_Cipher * c);
+ uint (*key_size) (PX_Cipher * c); /* max key len */
+ uint (*iv_size) (PX_Cipher * c);
+
+ int (*init) (PX_Cipher * c, const uint8 *key, uint klen, const uint8 *iv);
+ int (*encrypt) (PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res);
+ int (*decrypt) (PX_Cipher * c, const uint8 *data, uint dlen, uint8 *res);
+ void (*free) (PX_Cipher * c);
/* private */
- void *ptr;
- int pstat; /* mcrypt uses it */
+ void *ptr;
+ int pstat; /* mcrypt uses it */
};
-struct px_combo {
- int (*init)(PX_Combo *cx, const uint8 *key, uint klen,
- const uint8 *iv, uint ivlen);
- int (*encrypt)(PX_Combo *cx, const uint8 *data, uint dlen,
- uint8 *res, uint *rlen);
- int (*decrypt)(PX_Combo *cx, const uint8 *data, uint dlen,
- uint8 *res, uint *rlen);
- uint (*encrypt_len)(PX_Combo *cx, uint dlen);
- uint (*decrypt_len)(PX_Combo *cx, uint dlen);
- void (*free)(PX_Combo *cx);
-
- PX_Cipher *cipher;
- uint padding;
+struct px_combo
+{
+ int (*init) (PX_Combo * cx, const uint8 *key, uint klen,
+ const uint8 *iv, uint ivlen);
+ int (*encrypt) (PX_Combo * cx, const uint8 *data, uint dlen,
+ uint8 *res, uint *rlen);
+ int (*decrypt) (PX_Combo * cx, const uint8 *data, uint dlen,
+ uint8 *res, uint *rlen);
+ uint (*encrypt_len) (PX_Combo * cx, uint dlen);
+ uint (*decrypt_len) (PX_Combo * cx, uint dlen);
+ void (*free) (PX_Combo * cx);
+
+ PX_Cipher *cipher;
+ uint padding;
};
-int px_find_digest(const char *name, PX_MD **res);
-int px_find_hmac(const char *name, PX_HMAC **res);
-int px_find_cipher(const char *name, PX_Cipher **res);
-int px_find_combo(const char *name, PX_Combo **res);
+int px_find_digest(const char *name, PX_MD ** res);
+int px_find_hmac(const char *name, PX_HMAC ** res);
+int px_find_cipher(const char *name, PX_Cipher ** res);
+int px_find_combo(const char *name, PX_Combo ** res);
-int px_get_random_bytes(uint8 *dst, unsigned count);
+int px_get_random_bytes(uint8 *dst, unsigned count);
-const char *px_resolve_alias(const PX_Alias *aliases, const char *name);
+const char *px_resolve_alias(const PX_Alias * aliases, const char *name);
#define px_md_result_size(md) (md)->result_size(md)
#define px_md_block_size(md) (md)->block_size(md)
@@ -174,6 +180,4 @@ const char *px_resolve_alias(const PX_Alias *aliases, const char *name);
(c)->decrypt(c, data, dlen, res, rlen)
#define px_combo_free(c) (c)->free(c)
-
-#endif /* __PX_H */
-
+#endif /* __PX_H */
diff --git a/contrib/pgcrypto/random.c b/contrib/pgcrypto/random.c
index 179d450ef9b..559e40c4561 100644
--- a/contrib/pgcrypto/random.c
+++ b/contrib/pgcrypto/random.c
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: random.c,v 1.2 2001/09/29 03:12:51 momjian Exp $
+ * $Id: random.c,v 1.3 2001/10/25 05:49:20 momjian Exp $
*/
@@ -44,13 +44,15 @@
static int
safe_read(int fd, void *buf, size_t count)
{
- int done = 0;
- char *p = buf;
- int res;
-
- while (count) {
+ int done = 0;
+ char *p = buf;
+ int res;
+
+ while (count)
+ {
res = read(fd, p, count);
- if (res <= 0) {
+ if (res <= 0)
+ {
if (errno == EINTR)
continue;
return -1;
@@ -65,8 +67,8 @@ safe_read(int fd, void *buf, size_t count)
int
px_get_random_bytes(uint8 *dst, unsigned count)
{
- int fd;
- int res;
+ int fd;
+ int res;
fd = open(RAND_DEV, O_RDONLY);
if (fd == -1)
@@ -75,21 +77,20 @@ px_get_random_bytes(uint8 *dst, unsigned count)
close(fd);
return res;
}
-
-#endif /* RAND_DEV */
+#endif /* RAND_DEV */
#ifdef RAND_SILLY
-int px_get_random_bytes(uint8 *dst, unsigned count)
+int
+px_get_random_bytes(uint8 *dst, unsigned count)
{
- int i;
- for (i = 0; i < count; i++) {
+ int i;
+
+ for (i = 0; i < count; i++)
*dst++ = random();
- }
return i;
}
-
-#endif /* RAND_SILLY */
+#endif /* RAND_SILLY */
#ifdef RAND_OPENSSL
@@ -98,30 +99,29 @@ int px_get_random_bytes(uint8 *dst, unsigned count)
#include <openssl/rand.h>
#include <openssl/err.h>
-static int openssl_random_init = 0;
+static int openssl_random_init = 0;
-int px_get_random_bytes(uint8 *dst, unsigned count)
+int
+px_get_random_bytes(uint8 *dst, unsigned count)
{
- int res;
+ int res;
- if (!openssl_random_init) {
- if (RAND_get_rand_method() == NULL) {
+ if (!openssl_random_init)
+ {
+ if (RAND_get_rand_method() == NULL)
RAND_set_rand_method(RAND_SSLeay());
- }
openssl_random_init = 1;
}
-
+
/*
- * OpenSSL random should re-feeded occasionally.
- * From /dev/urandom preferrably.
+ * OpenSSL random should re-feeded occasionally. From /dev/urandom
+ * preferrably.
*/
-
+
res = RAND_bytes(dst, count);
if (res > 0)
return count;
return -1;
}
-
-#endif /* RAND_OPENSSL */
-
+#endif /* RAND_OPENSSL */
diff --git a/contrib/pgcrypto/rijndael.c b/contrib/pgcrypto/rijndael.c
index 258202fa991..cca8759e8b6 100644
--- a/contrib/pgcrypto/rijndael.c
+++ b/contrib/pgcrypto/rijndael.c
@@ -1,40 +1,40 @@
-/* $OpenBSD: rijndael.c,v 1.6 2000/12/09 18:51:34 markus Exp $ */
-
-/* This is an independent implementation of the encryption algorithm: */
-/* */
-/* RIJNDAEL by Joan Daemen and Vincent Rijmen */
-/* */
-/* which is a candidate algorithm in the Advanced Encryption Standard */
-/* programme of the US National Institute of Standards and Technology. */
-/* */
-/* Copyright in this implementation is held by Dr B R Gladman but I */
+/* $OpenBSD: rijndael.c,v 1.6 2000/12/09 18:51:34 markus Exp $ */
+
+/* This is an independent implementation of the encryption algorithm: */
+/* */
+/* RIJNDAEL by Joan Daemen and Vincent Rijmen */
+/* */
+/* which is a candidate algorithm in the Advanced Encryption Standard */
+/* programme of the US National Institute of Standards and Technology. */
+/* */
+/* Copyright in this implementation is held by Dr B R Gladman but I */
/* hereby give permission for its free direct or derivative use subject */
-/* to acknowledgment of its origin and compliance with any conditions */
-/* that the originators of the algorithm place on its exploitation. */
-/* */
-/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999 */
+/* to acknowledgment of its origin and compliance with any conditions */
+/* that the originators of the algorithm place on its exploitation. */
+/* */
+/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999 */
/* Timing data for Rijndael (rijndael.c)
Algorithm: rijndael (rijndael.c)
128 bit key:
-Key Setup: 305/1389 cycles (encrypt/decrypt)
-Encrypt: 374 cycles = 68.4 mbits/sec
-Decrypt: 352 cycles = 72.7 mbits/sec
-Mean: 363 cycles = 70.5 mbits/sec
+Key Setup: 305/1389 cycles (encrypt/decrypt)
+Encrypt: 374 cycles = 68.4 mbits/sec
+Decrypt: 352 cycles = 72.7 mbits/sec
+Mean: 363 cycles = 70.5 mbits/sec
192 bit key:
-Key Setup: 277/1595 cycles (encrypt/decrypt)
-Encrypt: 439 cycles = 58.3 mbits/sec
-Decrypt: 425 cycles = 60.2 mbits/sec
-Mean: 432 cycles = 59.3 mbits/sec
+Key Setup: 277/1595 cycles (encrypt/decrypt)
+Encrypt: 439 cycles = 58.3 mbits/sec
+Decrypt: 425 cycles = 60.2 mbits/sec
+Mean: 432 cycles = 59.3 mbits/sec
256 bit key:
-Key Setup: 374/1960 cycles (encrypt/decrypt)
-Encrypt: 502 cycles = 51.0 mbits/sec
-Decrypt: 498 cycles = 51.4 mbits/sec
-Mean: 500 cycles = 51.2 mbits/sec
+Key Setup: 374/1960 cycles (encrypt/decrypt)
+Encrypt: 502 cycles = 51.0 mbits/sec
+Decrypt: 498 cycles = 51.4 mbits/sec
+Mean: 500 cycles = 51.2 mbits/sec
*/
@@ -47,29 +47,29 @@ Mean: 500 cycles = 51.2 mbits/sec
static void gen_tabs(void);
-/* 3. Basic macros for speeding up generic operations */
+/* 3. Basic macros for speeding up generic operations */
-/* Circular rotate of 32 bit values */
+/* Circular rotate of 32 bit values */
-#define rotr(x,n) (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
-#define rotl(x,n) (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
+#define rotr(x,n) (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
+#define rotl(x,n) (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
-/* Invert byte order in a 32 bit variable */
+/* Invert byte order in a 32 bit variable */
-#define bswap(x) ((rotl(x, 8) & 0x00ff00ff) | (rotr(x, 8) & 0xff00ff00))
+#define bswap(x) ((rotl(x, 8) & 0x00ff00ff) | (rotr(x, 8) & 0xff00ff00))
-/* Extract byte from a 32 bit quantity (little endian notation) */
+/* Extract byte from a 32 bit quantity (little endian notation) */
-#define byte(x,n) ((u1byte)((x) >> (8 * n)))
+#define byte(x,n) ((u1byte)((x) >> (8 * n)))
#if BYTE_ORDER != LITTLE_ENDIAN
#define BYTE_SWAP
#endif
-#ifdef BYTE_SWAP
-#define io_swap(x) bswap(x)
+#ifdef BYTE_SWAP
+#define io_swap(x) bswap(x)
#else
-#define io_swap(x) (x)
+#define io_swap(x) (x)
#endif
#ifdef PRINT_TABS
@@ -81,279 +81,311 @@ static void gen_tabs(void);
#include "rijndael.tbl"
#define tab_gen 1
-#else /* !PRE_CALC_TABLES */
+#else /* !PRE_CALC_TABLES */
-static u1byte pow_tab[256];
-static u1byte log_tab[256];
-static u1byte sbx_tab[256];
-static u1byte isb_tab[256];
-static u4byte rco_tab[ 10];
-static u4byte ft_tab[4][256];
-static u4byte it_tab[4][256];
+static u1byte pow_tab[256];
+static u1byte log_tab[256];
+static u1byte sbx_tab[256];
+static u1byte isb_tab[256];
+static u4byte rco_tab[10];
+static u4byte ft_tab[4][256];
+static u4byte it_tab[4][256];
-#ifdef LARGE_TABLES
-static u4byte fl_tab[4][256];
-static u4byte il_tab[4][256];
+#ifdef LARGE_TABLES
+static u4byte fl_tab[4][256];
+static u4byte il_tab[4][256];
#endif
-static u4byte tab_gen = 0;
-#endif /* !PRE_CALC_TABLES */
+static u4byte tab_gen = 0;
+#endif /* !PRE_CALC_TABLES */
-#define ff_mult(a,b) (a && b ? pow_tab[(log_tab[a] + log_tab[b]) % 255] : 0)
+#define ff_mult(a,b) (a && b ? pow_tab[(log_tab[a] + log_tab[b]) % 255] : 0)
-#define f_rn(bo, bi, n, k) \
- bo[n] = ft_tab[0][byte(bi[n],0)] ^ \
- ft_tab[1][byte(bi[(n + 1) & 3],1)] ^ \
- ft_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
- ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
+#define f_rn(bo, bi, n, k) \
+ bo[n] = ft_tab[0][byte(bi[n],0)] ^ \
+ ft_tab[1][byte(bi[(n + 1) & 3],1)] ^ \
+ ft_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
+ ft_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
-#define i_rn(bo, bi, n, k) \
- bo[n] = it_tab[0][byte(bi[n],0)] ^ \
- it_tab[1][byte(bi[(n + 3) & 3],1)] ^ \
- it_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
- it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
+#define i_rn(bo, bi, n, k) \
+ bo[n] = it_tab[0][byte(bi[n],0)] ^ \
+ it_tab[1][byte(bi[(n + 3) & 3],1)] ^ \
+ it_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
+ it_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
#ifdef LARGE_TABLES
-#define ls_box(x) \
- ( fl_tab[0][byte(x, 0)] ^ \
- fl_tab[1][byte(x, 1)] ^ \
- fl_tab[2][byte(x, 2)] ^ \
- fl_tab[3][byte(x, 3)] )
+#define ls_box(x) \
+ ( fl_tab[0][byte(x, 0)] ^ \
+ fl_tab[1][byte(x, 1)] ^ \
+ fl_tab[2][byte(x, 2)] ^ \
+ fl_tab[3][byte(x, 3)] )
-#define f_rl(bo, bi, n, k) \
- bo[n] = fl_tab[0][byte(bi[n],0)] ^ \
- fl_tab[1][byte(bi[(n + 1) & 3],1)] ^ \
- fl_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
- fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
+#define f_rl(bo, bi, n, k) \
+ bo[n] = fl_tab[0][byte(bi[n],0)] ^ \
+ fl_tab[1][byte(bi[(n + 1) & 3],1)] ^ \
+ fl_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
+ fl_tab[3][byte(bi[(n + 3) & 3],3)] ^ *(k + n)
-#define i_rl(bo, bi, n, k) \
- bo[n] = il_tab[0][byte(bi[n],0)] ^ \
- il_tab[1][byte(bi[(n + 3) & 3],1)] ^ \
- il_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
- il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
+#define i_rl(bo, bi, n, k) \
+ bo[n] = il_tab[0][byte(bi[n],0)] ^ \
+ il_tab[1][byte(bi[(n + 3) & 3],1)] ^ \
+ il_tab[2][byte(bi[(n + 2) & 3],2)] ^ \
+ il_tab[3][byte(bi[(n + 1) & 3],3)] ^ *(k + n)
#else
-#define ls_box(x) \
- ((u4byte)sbx_tab[byte(x, 0)] << 0) ^ \
- ((u4byte)sbx_tab[byte(x, 1)] << 8) ^ \
- ((u4byte)sbx_tab[byte(x, 2)] << 16) ^ \
- ((u4byte)sbx_tab[byte(x, 3)] << 24)
-
-#define f_rl(bo, bi, n, k) \
- bo[n] = (u4byte)sbx_tab[byte(bi[n],0)] ^ \
- rotl(((u4byte)sbx_tab[byte(bi[(n + 1) & 3],1)]), 8) ^ \
- rotl(((u4byte)sbx_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \
- rotl(((u4byte)sbx_tab[byte(bi[(n + 3) & 3],3)]), 24) ^ *(k + n)
-
-#define i_rl(bo, bi, n, k) \
- bo[n] = (u4byte)isb_tab[byte(bi[n],0)] ^ \
- rotl(((u4byte)isb_tab[byte(bi[(n + 3) & 3],1)]), 8) ^ \
- rotl(((u4byte)isb_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \
- rotl(((u4byte)isb_tab[byte(bi[(n + 1) & 3],3)]), 24) ^ *(k + n)
-
+#define ls_box(x) \
+ ((u4byte)sbx_tab[byte(x, 0)] << 0) ^ \
+ ((u4byte)sbx_tab[byte(x, 1)] << 8) ^ \
+ ((u4byte)sbx_tab[byte(x, 2)] << 16) ^ \
+ ((u4byte)sbx_tab[byte(x, 3)] << 24)
+
+#define f_rl(bo, bi, n, k) \
+ bo[n] = (u4byte)sbx_tab[byte(bi[n],0)] ^ \
+ rotl(((u4byte)sbx_tab[byte(bi[(n + 1) & 3],1)]), 8) ^ \
+ rotl(((u4byte)sbx_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \
+ rotl(((u4byte)sbx_tab[byte(bi[(n + 3) & 3],3)]), 24) ^ *(k + n)
+
+#define i_rl(bo, bi, n, k) \
+ bo[n] = (u4byte)isb_tab[byte(bi[n],0)] ^ \
+ rotl(((u4byte)isb_tab[byte(bi[(n + 3) & 3],1)]), 8) ^ \
+ rotl(((u4byte)isb_tab[byte(bi[(n + 2) & 3],2)]), 16) ^ \
+ rotl(((u4byte)isb_tab[byte(bi[(n + 1) & 3],3)]), 24) ^ *(k + n)
#endif
static void
gen_tabs(void)
{
#ifndef PRE_CALC_TABLES
- u4byte i, t;
- u1byte p, q;
+ u4byte i,
+ t;
+ u1byte p,
+ q;
- /* log and power tables for GF(2**8) finite field with */
- /* 0x11b as modular polynomial - the simplest prmitive */
- /* root is 0x11, used here to generate the tables */
+ /* log and power tables for GF(2**8) finite field with */
+ /* 0x11b as modular polynomial - the simplest prmitive */
+ /* root is 0x11, used here to generate the tables */
- for(i = 0,p = 1; i < 256; ++i) {
- pow_tab[i] = (u1byte)p; log_tab[p] = (u1byte)i;
+ for (i = 0, p = 1; i < 256; ++i)
+ {
+ pow_tab[i] = (u1byte) p;
+ log_tab[p] = (u1byte) i;
p = p ^ (p << 1) ^ (p & 0x80 ? 0x01b : 0);
}
- log_tab[1] = 0; p = 1;
+ log_tab[1] = 0;
+ p = 1;
- for(i = 0; i < 10; ++i) {
- rco_tab[i] = p;
+ for (i = 0; i < 10; ++i)
+ {
+ rco_tab[i] = p;
p = (p << 1) ^ (p & 0x80 ? 0x1b : 0);
}
- /* note that the affine byte transformation matrix in */
- /* rijndael specification is in big endian format with */
- /* bit 0 as the most significant bit. In the remainder */
- /* of the specification the bits are numbered from the */
- /* least significant end of a byte. */
-
- for(i = 0; i < 256; ++i) {
- p = (i ? pow_tab[255 - log_tab[i]] : 0); q = p;
- q = (q >> 7) | (q << 1); p ^= q;
- q = (q >> 7) | (q << 1); p ^= q;
- q = (q >> 7) | (q << 1); p ^= q;
- q = (q >> 7) | (q << 1); p ^= q ^ 0x63;
- sbx_tab[i] = (u1byte)p; isb_tab[p] = (u1byte)i;
+ /* note that the affine byte transformation matrix in */
+ /* rijndael specification is in big endian format with */
+ /* bit 0 as the most significant bit. In the remainder */
+ /* of the specification the bits are numbered from the */
+ /* least significant end of a byte. */
+
+ for (i = 0; i < 256; ++i)
+ {
+ p = (i ? pow_tab[255 - log_tab[i]] : 0);
+ q = p;
+ q = (q >> 7) | (q << 1);
+ p ^= q;
+ q = (q >> 7) | (q << 1);
+ p ^= q;
+ q = (q >> 7) | (q << 1);
+ p ^= q;
+ q = (q >> 7) | (q << 1);
+ p ^= q ^ 0x63;
+ sbx_tab[i] = (u1byte) p;
+ isb_tab[p] = (u1byte) i;
}
- for(i = 0; i < 256; ++i) {
- p = sbx_tab[i];
+ for (i = 0; i < 256; ++i)
+ {
+ p = sbx_tab[i];
-#ifdef LARGE_TABLES
-
- t = p; fl_tab[0][i] = t;
- fl_tab[1][i] = rotl(t, 8);
+#ifdef LARGE_TABLES
+
+ t = p;
+ fl_tab[0][i] = t;
+ fl_tab[1][i] = rotl(t, 8);
fl_tab[2][i] = rotl(t, 16);
fl_tab[3][i] = rotl(t, 24);
#endif
- t = ((u4byte)ff_mult(2, p)) |
- ((u4byte)p << 8) |
- ((u4byte)p << 16) |
- ((u4byte)ff_mult(3, p) << 24);
-
+ t = ((u4byte) ff_mult(2, p)) |
+ ((u4byte) p << 8) |
+ ((u4byte) p << 16) |
+ ((u4byte) ff_mult(3, p) << 24);
+
ft_tab[0][i] = t;
- ft_tab[1][i] = rotl(t, 8);
+ ft_tab[1][i] = rotl(t, 8);
ft_tab[2][i] = rotl(t, 16);
ft_tab[3][i] = rotl(t, 24);
- p = isb_tab[i];
+ p = isb_tab[i];
-#ifdef LARGE_TABLES
-
- t = p; il_tab[0][i] = t;
- il_tab[1][i] = rotl(t, 8);
- il_tab[2][i] = rotl(t, 16);
+#ifdef LARGE_TABLES
+
+ t = p;
+ il_tab[0][i] = t;
+ il_tab[1][i] = rotl(t, 8);
+ il_tab[2][i] = rotl(t, 16);
il_tab[3][i] = rotl(t, 24);
-#endif
- t = ((u4byte)ff_mult(14, p)) |
- ((u4byte)ff_mult( 9, p) << 8) |
- ((u4byte)ff_mult(13, p) << 16) |
- ((u4byte)ff_mult(11, p) << 24);
-
- it_tab[0][i] = t;
- it_tab[1][i] = rotl(t, 8);
- it_tab[2][i] = rotl(t, 16);
- it_tab[3][i] = rotl(t, 24);
+#endif
+ t = ((u4byte) ff_mult(14, p)) |
+ ((u4byte) ff_mult(9, p) << 8) |
+ ((u4byte) ff_mult(13, p) << 16) |
+ ((u4byte) ff_mult(11, p) << 24);
+
+ it_tab[0][i] = t;
+ it_tab[1][i] = rotl(t, 8);
+ it_tab[2][i] = rotl(t, 16);
+ it_tab[3][i] = rotl(t, 24);
}
tab_gen = 1;
-#endif /* !PRE_CALC_TABLES */
+#endif /* !PRE_CALC_TABLES */
}
#define star_x(x) (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)
-#define imix_col(y,x) \
- u = star_x(x); \
- v = star_x(u); \
- w = star_x(v); \
- t = w ^ (x); \
- (y) = u ^ v ^ w; \
+#define imix_col(y,x) \
+ u = star_x(x); \
+ v = star_x(u); \
+ w = star_x(v); \
+ t = w ^ (x); \
+ (y) = u ^ v ^ w; \
(y) ^= rotr(u ^ t, 8) ^ \
- rotr(v ^ t, 16) ^ \
- rotr(t,24)
+ rotr(v ^ t, 16) ^ \
+ rotr(t,24)
-/* initialise the key schedule from the user supplied key */
+/* initialise the key schedule from the user supplied key */
-#define loop4(i) \
-do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
- t ^= e_key[4 * i]; e_key[4 * i + 4] = t; \
- t ^= e_key[4 * i + 1]; e_key[4 * i + 5] = t; \
- t ^= e_key[4 * i + 2]; e_key[4 * i + 6] = t; \
- t ^= e_key[4 * i + 3]; e_key[4 * i + 7] = t; \
+#define loop4(i) \
+do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
+ t ^= e_key[4 * i]; e_key[4 * i + 4] = t; \
+ t ^= e_key[4 * i + 1]; e_key[4 * i + 5] = t; \
+ t ^= e_key[4 * i + 2]; e_key[4 * i + 6] = t; \
+ t ^= e_key[4 * i + 3]; e_key[4 * i + 7] = t; \
} while (0)
-#define loop6(i) \
-do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
- t ^= e_key[6 * i]; e_key[6 * i + 6] = t; \
- t ^= e_key[6 * i + 1]; e_key[6 * i + 7] = t; \
- t ^= e_key[6 * i + 2]; e_key[6 * i + 8] = t; \
- t ^= e_key[6 * i + 3]; e_key[6 * i + 9] = t; \
- t ^= e_key[6 * i + 4]; e_key[6 * i + 10] = t; \
- t ^= e_key[6 * i + 5]; e_key[6 * i + 11] = t; \
+#define loop6(i) \
+do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
+ t ^= e_key[6 * i]; e_key[6 * i + 6] = t; \
+ t ^= e_key[6 * i + 1]; e_key[6 * i + 7] = t; \
+ t ^= e_key[6 * i + 2]; e_key[6 * i + 8] = t; \
+ t ^= e_key[6 * i + 3]; e_key[6 * i + 9] = t; \
+ t ^= e_key[6 * i + 4]; e_key[6 * i + 10] = t; \
+ t ^= e_key[6 * i + 5]; e_key[6 * i + 11] = t; \
} while (0)
-#define loop8(i) \
-do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
- t ^= e_key[8 * i]; e_key[8 * i + 8] = t; \
- t ^= e_key[8 * i + 1]; e_key[8 * i + 9] = t; \
- t ^= e_key[8 * i + 2]; e_key[8 * i + 10] = t; \
- t ^= e_key[8 * i + 3]; e_key[8 * i + 11] = t; \
- t = e_key[8 * i + 4] ^ ls_box(t); \
- e_key[8 * i + 12] = t; \
- t ^= e_key[8 * i + 5]; e_key[8 * i + 13] = t; \
- t ^= e_key[8 * i + 6]; e_key[8 * i + 14] = t; \
- t ^= e_key[8 * i + 7]; e_key[8 * i + 15] = t; \
+#define loop8(i) \
+do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
+ t ^= e_key[8 * i]; e_key[8 * i + 8] = t; \
+ t ^= e_key[8 * i + 1]; e_key[8 * i + 9] = t; \
+ t ^= e_key[8 * i + 2]; e_key[8 * i + 10] = t; \
+ t ^= e_key[8 * i + 3]; e_key[8 * i + 11] = t; \
+ t = e_key[8 * i + 4] ^ ls_box(t); \
+ e_key[8 * i + 12] = t; \
+ t ^= e_key[8 * i + 5]; e_key[8 * i + 13] = t; \
+ t ^= e_key[8 * i + 6]; e_key[8 * i + 14] = t; \
+ t ^= e_key[8 * i + 7]; e_key[8 * i + 15] = t; \
} while (0)
rijndael_ctx *
-rijndael_set_key(rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len,
- int encrypt)
-{
- u4byte i, t, u, v, w;
- u4byte *e_key = ctx->e_key;
- u4byte *d_key = ctx->d_key;
+rijndael_set_key(rijndael_ctx * ctx, const u4byte * in_key, const u4byte key_len,
+ int encrypt)
+{
+ u4byte i,
+ t,
+ u,
+ v,
+ w;
+ u4byte *e_key = ctx->e_key;
+ u4byte *d_key = ctx->d_key;
ctx->decrypt = !encrypt;
- if(!tab_gen)
+ if (!tab_gen)
gen_tabs();
ctx->k_len = (key_len + 31) / 32;
- e_key[0] = io_swap(in_key[0]); e_key[1] = io_swap(in_key[1]);
- e_key[2] = io_swap(in_key[2]); e_key[3] = io_swap(in_key[3]);
-
- switch(ctx->k_len) {
- case 4: t = e_key[3];
- for(i = 0; i < 10; ++i)
- loop4(i);
- break;
-
- case 6: e_key[4] = io_swap(in_key[4]); t = e_key[5] = io_swap(in_key[5]);
- for(i = 0; i < 8; ++i)
- loop6(i);
- break;
-
- case 8: e_key[4] = io_swap(in_key[4]); e_key[5] = io_swap(in_key[5]);
- e_key[6] = io_swap(in_key[6]); t = e_key[7] = io_swap(in_key[7]);
- for(i = 0; i < 7; ++i)
- loop8(i);
- break;
+ e_key[0] = io_swap(in_key[0]);
+ e_key[1] = io_swap(in_key[1]);
+ e_key[2] = io_swap(in_key[2]);
+ e_key[3] = io_swap(in_key[3]);
+
+ switch (ctx->k_len)
+ {
+ case 4:
+ t = e_key[3];
+ for (i = 0; i < 10; ++i)
+ loop4(i);
+ break;
+
+ case 6:
+ e_key[4] = io_swap(in_key[4]);
+ t = e_key[5] = io_swap(in_key[5]);
+ for (i = 0; i < 8; ++i)
+ loop6(i);
+ break;
+
+ case 8:
+ e_key[4] = io_swap(in_key[4]);
+ e_key[5] = io_swap(in_key[5]);
+ e_key[6] = io_swap(in_key[6]);
+ t = e_key[7] = io_swap(in_key[7]);
+ for (i = 0; i < 7; ++i)
+ loop8(i);
+ break;
}
- if (!encrypt) {
- d_key[0] = e_key[0]; d_key[1] = e_key[1];
- d_key[2] = e_key[2]; d_key[3] = e_key[3];
+ if (!encrypt)
+ {
+ d_key[0] = e_key[0];
+ d_key[1] = e_key[1];
+ d_key[2] = e_key[2];
+ d_key[3] = e_key[3];
- for(i = 4; i < 4 * ctx->k_len + 24; ++i) {
+ for (i = 4; i < 4 * ctx->k_len + 24; ++i)
imix_col(d_key[i], e_key[i]);
- }
}
return ctx;
}
-/* encrypt a block of text */
+/* encrypt a block of text */
#define f_nround(bo, bi, k) \
- f_rn(bo, bi, 0, k); \
- f_rn(bo, bi, 1, k); \
- f_rn(bo, bi, 2, k); \
- f_rn(bo, bi, 3, k); \
- k += 4
+ f_rn(bo, bi, 0, k); \
+ f_rn(bo, bi, 1, k); \
+ f_rn(bo, bi, 2, k); \
+ f_rn(bo, bi, 3, k); \
+ k += 4
#define f_lround(bo, bi, k) \
- f_rl(bo, bi, 0, k); \
- f_rl(bo, bi, 1, k); \
- f_rl(bo, bi, 2, k); \
- f_rl(bo, bi, 3, k)
+ f_rl(bo, bi, 0, k); \
+ f_rl(bo, bi, 1, k); \
+ f_rl(bo, bi, 2, k); \
+ f_rl(bo, bi, 3, k)
void
-rijndael_encrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
-{
- u4byte k_len = ctx->k_len;
- u4byte *e_key = ctx->e_key;
- u4byte b0[4], b1[4], *kp;
+rijndael_encrypt(rijndael_ctx * ctx, const u4byte * in_blk, u4byte * out_blk)
+{
+ u4byte k_len = ctx->k_len;
+ u4byte *e_key = ctx->e_key;
+ u4byte b0[4],
+ b1[4],
+ *kp;
b0[0] = io_swap(in_blk[0]) ^ e_key[0];
b0[1] = io_swap(in_blk[1]) ^ e_key[1];
@@ -362,46 +394,59 @@ rijndael_encrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
kp = e_key + 4;
- if(k_len > 6) {
- f_nround(b1, b0, kp); f_nround(b0, b1, kp);
+ if (k_len > 6)
+ {
+ f_nround(b1, b0, kp);
+ f_nround(b0, b1, kp);
}
- if(k_len > 4) {
- f_nround(b1, b0, kp); f_nround(b0, b1, kp);
+ if (k_len > 4)
+ {
+ f_nround(b1, b0, kp);
+ f_nround(b0, b1, kp);
}
- f_nround(b1, b0, kp); f_nround(b0, b1, kp);
- f_nround(b1, b0, kp); f_nround(b0, b1, kp);
- f_nround(b1, b0, kp); f_nround(b0, b1, kp);
- f_nround(b1, b0, kp); f_nround(b0, b1, kp);
- f_nround(b1, b0, kp); f_lround(b0, b1, kp);
-
- out_blk[0] = io_swap(b0[0]); out_blk[1] = io_swap(b0[1]);
- out_blk[2] = io_swap(b0[2]); out_blk[3] = io_swap(b0[3]);
+ f_nround(b1, b0, kp);
+ f_nround(b0, b1, kp);
+ f_nround(b1, b0, kp);
+ f_nround(b0, b1, kp);
+ f_nround(b1, b0, kp);
+ f_nround(b0, b1, kp);
+ f_nround(b1, b0, kp);
+ f_nround(b0, b1, kp);
+ f_nround(b1, b0, kp);
+ f_lround(b0, b1, kp);
+
+ out_blk[0] = io_swap(b0[0]);
+ out_blk[1] = io_swap(b0[1]);
+ out_blk[2] = io_swap(b0[2]);
+ out_blk[3] = io_swap(b0[3]);
}
-/* decrypt a block of text */
+/* decrypt a block of text */
#define i_nround(bo, bi, k) \
- i_rn(bo, bi, 0, k); \
- i_rn(bo, bi, 1, k); \
- i_rn(bo, bi, 2, k); \
- i_rn(bo, bi, 3, k); \
- k -= 4
+ i_rn(bo, bi, 0, k); \
+ i_rn(bo, bi, 1, k); \
+ i_rn(bo, bi, 2, k); \
+ i_rn(bo, bi, 3, k); \
+ k -= 4
#define i_lround(bo, bi, k) \
- i_rl(bo, bi, 0, k); \
- i_rl(bo, bi, 1, k); \
- i_rl(bo, bi, 2, k); \
- i_rl(bo, bi, 3, k)
+ i_rl(bo, bi, 0, k); \
+ i_rl(bo, bi, 1, k); \
+ i_rl(bo, bi, 2, k); \
+ i_rl(bo, bi, 3, k)
void
-rijndael_decrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
-{
- u4byte b0[4], b1[4], *kp;
- u4byte k_len = ctx->k_len;
- u4byte *e_key = ctx->e_key;
- u4byte *d_key = ctx->d_key;
+rijndael_decrypt(rijndael_ctx * ctx, const u4byte * in_blk, u4byte * out_blk)
+{
+ u4byte b0[4],
+ b1[4],
+ *kp;
+ u4byte k_len = ctx->k_len;
+ u4byte *e_key = ctx->e_key;
+ u4byte *d_key = ctx->d_key;
b0[0] = io_swap(in_blk[0]) ^ e_key[4 * k_len + 24];
b0[1] = io_swap(in_blk[1]) ^ e_key[4 * k_len + 25];
@@ -410,22 +455,33 @@ rijndael_decrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
kp = d_key + 4 * (k_len + 5);
- if(k_len > 6) {
- i_nround(b1, b0, kp); i_nround(b0, b1, kp);
+ if (k_len > 6)
+ {
+ i_nround(b1, b0, kp);
+ i_nround(b0, b1, kp);
}
- if(k_len > 4) {
- i_nround(b1, b0, kp); i_nround(b0, b1, kp);
+ if (k_len > 4)
+ {
+ i_nround(b1, b0, kp);
+ i_nround(b0, b1, kp);
}
- i_nround(b1, b0, kp); i_nround(b0, b1, kp);
- i_nround(b1, b0, kp); i_nround(b0, b1, kp);
- i_nround(b1, b0, kp); i_nround(b0, b1, kp);
- i_nround(b1, b0, kp); i_nround(b0, b1, kp);
- i_nround(b1, b0, kp); i_lround(b0, b1, kp);
-
- out_blk[0] = io_swap(b0[0]); out_blk[1] = io_swap(b0[1]);
- out_blk[2] = io_swap(b0[2]); out_blk[3] = io_swap(b0[3]);
+ i_nround(b1, b0, kp);
+ i_nround(b0, b1, kp);
+ i_nround(b1, b0, kp);
+ i_nround(b0, b1, kp);
+ i_nround(b1, b0, kp);
+ i_nround(b0, b1, kp);
+ i_nround(b1, b0, kp);
+ i_nround(b0, b1, kp);
+ i_nround(b1, b0, kp);
+ i_lround(b0, b1, kp);
+
+ out_blk[0] = io_swap(b0[0]);
+ out_blk[1] = io_swap(b0[1]);
+ out_blk[2] = io_swap(b0[2]);
+ out_blk[3] = io_swap(b0[3]);
}
/*
@@ -435,19 +491,24 @@ rijndael_decrypt(rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
* should be true for PX. -marko
*/
-void aes_set_key(rijndael_ctx * ctx, const uint8 *key, uint keybits, int enc)
+void
+aes_set_key(rijndael_ctx * ctx, const uint8 *key, uint keybits, int enc)
{
- uint32 *k;
- k = (uint32*)key;
+ uint32 *k;
+
+ k = (uint32 *) key;
rijndael_set_key(ctx, k, keybits, enc);
}
-void aes_ecb_encrypt(rijndael_ctx *ctx, uint8 *data, unsigned len)
+void
+aes_ecb_encrypt(rijndael_ctx * ctx, uint8 *data, unsigned len)
{
- unsigned bs = 16;
- uint32 *d;
- while (len >= bs) {
- d = (uint32*)data;
+ unsigned bs = 16;
+ uint32 *d;
+
+ while (len >= bs)
+ {
+ d = (uint32 *) data;
rijndael_encrypt(ctx, d, d);
len -= bs;
@@ -455,12 +516,15 @@ void aes_ecb_encrypt(rijndael_ctx *ctx, uint8 *data, unsigned len)
}
}
-void aes_ecb_decrypt(rijndael_ctx *ctx, uint8 *data, unsigned len)
+void
+aes_ecb_decrypt(rijndael_ctx * ctx, uint8 *data, unsigned len)
{
- unsigned bs = 16;
- uint32 *d;
- while (len >= bs) {
- d = (uint32*)data;
+ unsigned bs = 16;
+ uint32 *d;
+
+ while (len >= bs)
+ {
+ d = (uint32 *) data;
rijndael_decrypt(ctx, d, d);
len -= bs;
@@ -468,42 +532,55 @@ void aes_ecb_decrypt(rijndael_ctx *ctx, uint8 *data, unsigned len)
}
}
-void aes_cbc_encrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
+void
+aes_cbc_encrypt(rijndael_ctx * ctx, uint8 *iva, uint8 *data, unsigned len)
{
- uint32 *iv = (uint32 *)iva;
- uint32 *d = (uint32 *)data;
- unsigned bs = 16;
-
- while (len >= bs) {
- d[0] ^= iv[0]; d[1] ^= iv[1];
- d[2] ^= iv[2]; d[3] ^= iv[3];
-
+ uint32 *iv = (uint32 *) iva;
+ uint32 *d = (uint32 *) data;
+ unsigned bs = 16;
+
+ while (len >= bs)
+ {
+ d[0] ^= iv[0];
+ d[1] ^= iv[1];
+ d[2] ^= iv[2];
+ d[3] ^= iv[3];
+
rijndael_encrypt(ctx, d, d);
iv = d;
- d += bs/4;
+ d += bs / 4;
len -= bs;
}
}
-void aes_cbc_decrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
+void
+aes_cbc_decrypt(rijndael_ctx * ctx, uint8 *iva, uint8 *data, unsigned len)
{
- uint32 *d = (uint32 *)data;
- unsigned bs = 16;
- uint32 buf[4], iv[4];
+ uint32 *d = (uint32 *) data;
+ unsigned bs = 16;
+ uint32 buf[4],
+ iv[4];
memcpy(iv, iva, bs);
- while (len >= bs) {
- buf[0] = d[0]; buf[1] = d[1];
- buf[2] = d[2]; buf[3] = d[3];
-
+ while (len >= bs)
+ {
+ buf[0] = d[0];
+ buf[1] = d[1];
+ buf[2] = d[2];
+ buf[3] = d[3];
+
rijndael_decrypt(ctx, buf, d);
-
- d[0] ^= iv[0]; d[1] ^= iv[1];
- d[2] ^= iv[2]; d[3] ^= iv[3];
-
- iv[0] = buf[0]; iv[1] = buf[1];
- iv[2] = buf[2]; iv[3] = buf[3];
+
+ d[0] ^= iv[0];
+ d[1] ^= iv[1];
+ d[2] ^= iv[2];
+ d[3] ^= iv[3];
+
+ iv[0] = buf[0];
+ iv[1] = buf[1];
+ iv[2] = buf[2];
+ iv[3] = buf[3];
d += 4;
len -= bs;
}
@@ -514,15 +591,18 @@ void aes_cbc_decrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
*
* On i386 lifts 17k from .bss to .rodata
* and avoids 1k code and setup time.
- * -marko
+ * -marko
*/
#ifdef PRINT_TABS
-static void show256u8(char *name, uint8 *data)
+static void
+show256u8(char *name, uint8 *data)
{
- int i;
+ int i;
+
printf("static const u1byte %s[256] = {\n ", name);
- for (i = 0; i < 256; ) {
+ for (i = 0; i < 256;)
+ {
printf("%u", pow_tab[i++]);
if (i < 256)
printf(i % 16 ? ", " : ",\n ");
@@ -531,12 +611,17 @@ static void show256u8(char *name, uint8 *data)
}
-static void show4x256u32(char *name, uint32 data[4][256])
+static void
+show4x256u32(char *name, uint32 data[4][256])
{
- int i, j;
+ int i,
+ j;
+
printf("static const u4byte %s[4][256] = {\n{\n ", name);
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 256; ) {
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 256;)
+ {
printf("0x%08x", data[i][j]);
j++;
if (j < 256)
@@ -547,11 +632,12 @@ static void show4x256u32(char *name, uint32 data[4][256])
printf("};\n\n");
}
-int main()
+int
+main()
{
- int i;
- char *hdr = "/* Generated by rijndael.c */\n\n";
-
+ int i;
+ char *hdr = "/* Generated by rijndael.c */\n\n";
+
gen_tabs();
printf(hdr);
@@ -559,7 +645,7 @@ int main()
show256u8("log_tab", log_tab);
show256u8("sbx_tab", sbx_tab);
show256u8("isb_tab", isb_tab);
-
+
show4x256u32("ft_tab", ft_tab);
show4x256u32("it_tab", it_tab);
#ifdef LARGE_TABLES
@@ -567,14 +653,15 @@ int main()
show4x256u32("il_tab", il_tab);
#endif
printf("static const u4byte rco_tab[10] = {\n ");
- for (i = 0; i < 10; i++) {
+ for (i = 0; i < 10; i++)
+ {
printf("0x%08x", rco_tab[i]);
- if (i < 9) printf(", ");
- if (i == 4) printf("\n ");
+ if (i < 9)
+ printf(", ");
+ if (i == 4)
+ printf("\n ");
}
printf("\n};\n\n");
return 0;
}
-
#endif
-
diff --git a/contrib/pgcrypto/rijndael.h b/contrib/pgcrypto/rijndael.h
index bdefda828ff..2f54e0c738f 100644
--- a/contrib/pgcrypto/rijndael.h
+++ b/contrib/pgcrypto/rijndael.h
@@ -1,57 +1,57 @@
-/* $OpenBSD: rijndael.h,v 1.3 2001/05/09 23:01:32 markus Exp $ */
-
-/* This is an independent implementation of the encryption algorithm: */
-/* */
-/* RIJNDAEL by Joan Daemen and Vincent Rijmen */
-/* */
-/* which is a candidate algorithm in the Advanced Encryption Standard */
-/* programme of the US National Institute of Standards and Technology. */
-/* */
-/* Copyright in this implementation is held by Dr B R Gladman but I */
+/* $OpenBSD: rijndael.h,v 1.3 2001/05/09 23:01:32 markus Exp $ */
+
+/* This is an independent implementation of the encryption algorithm: */
+/* */
+/* RIJNDAEL by Joan Daemen and Vincent Rijmen */
+/* */
+/* which is a candidate algorithm in the Advanced Encryption Standard */
+/* programme of the US National Institute of Standards and Technology. */
+/* */
+/* Copyright in this implementation is held by Dr B R Gladman but I */
/* hereby give permission for its free direct or derivative use subject */
-/* to acknowledgment of its origin and compliance with any conditions */
-/* that the originators of the algorithm place on its exploitation. */
-/* */
-/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999 */
+/* to acknowledgment of its origin and compliance with any conditions */
+/* that the originators of the algorithm place on its exploitation. */
+/* */
+/* Dr Brian Gladman (gladman@seven77.demon.co.uk) 14th January 1999 */
#ifndef _RIJNDAEL_H_
#define _RIJNDAEL_H_
-/* 1. Standard types for AES cryptography source code */
+/* 1. Standard types for AES cryptography source code */
-typedef uint8 u1byte; /* an 8 bit unsigned character type */
-typedef uint16 u2byte; /* a 16 bit unsigned integer type */
-typedef uint32 u4byte; /* a 32 bit unsigned integer type */
+typedef uint8 u1byte; /* an 8 bit unsigned character type */
+typedef uint16 u2byte; /* a 16 bit unsigned integer type */
+typedef uint32 u4byte; /* a 32 bit unsigned integer type */
-typedef int8 s1byte; /* an 8 bit signed character type */
-typedef int16 s2byte; /* a 16 bit signed integer type */
-typedef int32 s4byte; /* a 32 bit signed integer type */
+typedef int8 s1byte; /* an 8 bit signed character type */
+typedef int16 s2byte; /* a 16 bit signed integer type */
+typedef int32 s4byte; /* a 32 bit signed integer type */
-typedef struct _rijndael_ctx {
- u4byte k_len;
- int decrypt;
- u4byte e_key[64];
- u4byte d_key[64];
-} rijndael_ctx;
+typedef struct _rijndael_ctx
+{
+ u4byte k_len;
+ int decrypt;
+ u4byte e_key[64];
+ u4byte d_key[64];
+} rijndael_ctx;
-/* 2. Standard interface for AES cryptographic routines */
+/* 2. Standard interface for AES cryptographic routines */
/* These are all based on 32 bit unsigned values and will therefore */
-/* require endian conversions for big-endian architectures */
+/* require endian conversions for big-endian architectures */
rijndael_ctx *
-rijndael_set_key (rijndael_ctx *, const u4byte *, const u4byte, int);
-void rijndael_encrypt (rijndael_ctx *, const u4byte *, u4byte *);
-void rijndael_decrypt (rijndael_ctx *, const u4byte *, u4byte *);
+ rijndael_set_key(rijndael_ctx *, const u4byte *, const u4byte, int);
+void rijndael_encrypt(rijndael_ctx *, const u4byte *, u4byte *);
+void rijndael_decrypt(rijndael_ctx *, const u4byte *, u4byte *);
/* conventional interface */
-void aes_set_key(rijndael_ctx * ctx, const uint8 *key, uint keybits, int enc);
-void aes_ecb_encrypt(rijndael_ctx *ctx, uint8 *data, unsigned len);
-void aes_ecb_decrypt(rijndael_ctx *ctx, uint8 *data, unsigned len);
-void aes_cbc_encrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len);
-void aes_cbc_decrypt(rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len);
+void aes_set_key(rijndael_ctx * ctx, const uint8 *key, uint keybits, int enc);
+void aes_ecb_encrypt(rijndael_ctx * ctx, uint8 *data, unsigned len);
+void aes_ecb_decrypt(rijndael_ctx * ctx, uint8 *data, unsigned len);
+void aes_cbc_encrypt(rijndael_ctx * ctx, uint8 *iva, uint8 *data, unsigned len);
+void aes_cbc_decrypt(rijndael_ctx * ctx, uint8 *iva, uint8 *data, unsigned len);
-
-#endif /* _RIJNDAEL_H_ */
+#endif /* _RIJNDAEL_H_ */
diff --git a/contrib/pgcrypto/sha1.c b/contrib/pgcrypto/sha1.c
index 20c6230540b..26095697907 100644
--- a/contrib/pgcrypto/sha1.c
+++ b/contrib/pgcrypto/sha1.c
@@ -1,4 +1,4 @@
-/* $Id: sha1.c,v 1.7 2001/10/25 01:29:37 momjian Exp $ */
+/* $Id: sha1.c,v 1.8 2001/10/25 05:49:20 momjian Exp $ */
/* $KAME: sha1.c,v 1.3 2000/02/22 14:01:18 itojun Exp $ */
/*
@@ -87,7 +87,7 @@ do { \
static void sha1_step(struct sha1_ctxt *);
static void
-sha1_step(struct sha1_ctxt *ctxt)
+sha1_step(struct sha1_ctxt * ctxt)
{
uint32 a,
b,
@@ -232,7 +232,7 @@ sha1_step(struct sha1_ctxt *ctxt)
/*------------------------------------------------------------*/
void
-sha1_init(struct sha1_ctxt *ctxt)
+sha1_init(struct sha1_ctxt * ctxt)
{
bzero(ctxt, sizeof(struct sha1_ctxt));
H(0) = 0x67452301;
@@ -243,7 +243,7 @@ sha1_init(struct sha1_ctxt *ctxt)
}
void
-sha1_pad(struct sha1_ctxt *ctxt)
+sha1_pad(struct sha1_ctxt * ctxt)
{
size_t padlen; /* pad length in bytes */
size_t padstart;
@@ -286,7 +286,7 @@ sha1_pad(struct sha1_ctxt *ctxt)
}
void
-sha1_loop(struct sha1_ctxt *ctxt, const uint8 *input0, size_t len)
+sha1_loop(struct sha1_ctxt * ctxt, const uint8 *input0, size_t len)
{
const uint8 *input;
size_t gaplen;
@@ -314,7 +314,7 @@ sha1_loop(struct sha1_ctxt *ctxt, const uint8 *input0, size_t len)
}
void
-sha1_result(struct sha1_ctxt *ctxt, uint8 *digest0)
+sha1_result(struct sha1_ctxt * ctxt, uint8 *digest0)
{
uint8 *digest;
diff --git a/contrib/pgcrypto/sha1.h b/contrib/pgcrypto/sha1.h
index c83bd7191a5..03c6443ccc4 100644
--- a/contrib/pgcrypto/sha1.h
+++ b/contrib/pgcrypto/sha1.h
@@ -1,4 +1,4 @@
-/* $Id: sha1.h,v 1.5 2001/08/21 00:42:41 momjian Exp $ */
+/* $Id: sha1.h,v 1.6 2001/10/25 05:49:20 momjian Exp $ */
/* $KAME: sha1.h,v 1.4 2000/02/22 14:01:18 itojun Exp $ */
/*
@@ -71,5 +71,4 @@ typedef struct sha1_ctxt SHA1_CTX;
#define SHA1Final(x, y) sha1_result((y), (x))
#define SHA1_RESULTLEN (160/8)
-
#endif /* _NETINET6_SHA1_H_ */
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c
index e88be905011..45e92298100 100644
--- a/contrib/pgstattuple/pgstattuple.c
+++ b/contrib/pgstattuple/pgstattuple.c
@@ -1,5 +1,5 @@
/*
- * $Header: /cvsroot/pgsql/contrib/pgstattuple/pgstattuple.c,v 1.1 2001/10/01 01:52:38 ishii Exp $
+ * $Header: /cvsroot/pgsql/contrib/pgstattuple/pgstattuple.c,v 1.2 2001/10/25 05:49:20 momjian Exp $
*
* Copyright (c) 2001 Tatsuo Ishii
*
@@ -42,90 +42,91 @@ extern Datum pgstattuple(PG_FUNCTION_ARGS);
Datum
pgstattuple(PG_FUNCTION_ARGS)
{
- Name p = PG_GETARG_NAME(0);
-
- Relation rel;
- HeapScanDesc scan;
- HeapTuple tuple;
- BlockNumber nblocks;
- BlockNumber block = InvalidBlockNumber;
- double table_len;
- uint64 tuple_len = 0;
- uint64 dead_tuple_len = 0;
- uint32 tuple_count = 0;
- uint32 dead_tuple_count = 0;
- double tuple_percent;
- double dead_tuple_percent;
-
- Buffer buffer = InvalidBuffer;
- uint64 free_space = 0; /* free/reusable space in bytes */
- double free_percent; /* free/reusable space in % */
-
- rel = heap_openr(NameStr(*p), NoLock);
- nblocks = RelationGetNumberOfBlocks(rel);
- scan = heap_beginscan(rel, false, SnapshotAny, 0, NULL);
-
- while ((tuple = heap_getnext(scan,0)))
- {
- if (HeapTupleSatisfiesNow(tuple->t_data))
+ Name p = PG_GETARG_NAME(0);
+
+ Relation rel;
+ HeapScanDesc scan;
+ HeapTuple tuple;
+ BlockNumber nblocks;
+ BlockNumber block = InvalidBlockNumber;
+ double table_len;
+ uint64 tuple_len = 0;
+ uint64 dead_tuple_len = 0;
+ uint32 tuple_count = 0;
+ uint32 dead_tuple_count = 0;
+ double tuple_percent;
+ double dead_tuple_percent;
+
+ Buffer buffer = InvalidBuffer;
+ uint64 free_space = 0; /* free/reusable space in bytes */
+ double free_percent; /* free/reusable space in % */
+
+ rel = heap_openr(NameStr(*p), NoLock);
+ nblocks = RelationGetNumberOfBlocks(rel);
+ scan = heap_beginscan(rel, false, SnapshotAny, 0, NULL);
+
+ while ((tuple = heap_getnext(scan, 0)))
{
- tuple_len += tuple->t_len;
- tuple_count++;
+ if (HeapTupleSatisfiesNow(tuple->t_data))
+ {
+ tuple_len += tuple->t_len;
+ tuple_count++;
+ }
+ else
+ {
+ dead_tuple_len += tuple->t_len;
+ dead_tuple_count++;
+ }
+
+ if (!BlockNumberIsValid(block) ||
+ block != BlockIdGetBlockNumber(&tuple->t_self.ip_blkid))
+ {
+ block = BlockIdGetBlockNumber(&tuple->t_self.ip_blkid);
+ buffer = ReadBuffer(rel, block);
+ free_space += PageGetFreeSpace((Page) BufferGetPage(buffer));
+ ReleaseBuffer(buffer);
+ }
}
- else
+ heap_endscan(scan);
+ heap_close(rel, NoLock);
+
+ table_len = (double) nblocks *BLCKSZ;
+
+ if (nblocks == 0)
{
- dead_tuple_len += tuple->t_len;
- dead_tuple_count++;
+ tuple_percent = 0.0;
+ dead_tuple_percent = 0.0;
+ free_percent = 0.0;
}
-
- if (!BlockNumberIsValid(block) ||
- block != BlockIdGetBlockNumber(&tuple->t_self.ip_blkid))
+ else
{
- block = BlockIdGetBlockNumber(&tuple->t_self.ip_blkid);
- buffer = ReadBuffer(rel, block);
- free_space += PageGetFreeSpace((Page)BufferGetPage(buffer));
- ReleaseBuffer(buffer);
+ tuple_percent = (double) tuple_len *100.0 / table_len;
+ dead_tuple_percent = (double) dead_tuple_len *100.0 / table_len;
+ free_percent = (double) free_space *100.0 / table_len;
}
- }
- heap_endscan(scan);
- heap_close(rel, NoLock);
-
- table_len = (double)nblocks*BLCKSZ;
-
- if (nblocks == 0)
- {
- tuple_percent = 0.0;
- dead_tuple_percent = 0.0;
- free_percent = 0.0;
- }
- else
- {
- tuple_percent = (double)tuple_len*100.0/table_len;
- dead_tuple_percent = (double)dead_tuple_len*100.0/table_len;
- free_percent = (double)free_space*100.0/table_len;
- }
- elog(NOTICE,"physical length: %.2fMB live tuples: %u (%.2fMB, %.2f%%) dead tuples: %u (%.2fMB, %.2f%%) free/reusable space: %.2fMB (%.2f%%) overhead: %.2f%%",
+ elog(NOTICE, "physical length: %.2fMB live tuples: %u (%.2fMB, %.2f%%) dead tuples: %u (%.2fMB, %.2f%%) free/reusable space: %.2fMB (%.2f%%) overhead: %.2f%%",
- table_len/1024/1024, /* phsical length in MB */
+ table_len / 1024 / 1024, /* phsical length in MB */
- tuple_count, /* number of live tuples */
- (double)tuple_len/1024/1024, /* live tuples in MB */
- tuple_percent, /* live tuples in % */
+ tuple_count, /* number of live tuples */
+ (double) tuple_len / 1024 / 1024, /* live tuples in MB */
+ tuple_percent, /* live tuples in % */
- dead_tuple_count, /* number of dead tuples */
- (double)dead_tuple_len/1024/1024, /* dead tuples in MB */
- dead_tuple_percent, /* dead tuples in % */
+ dead_tuple_count, /* number of dead tuples */
+ (double) dead_tuple_len / 1024 / 1024, /* dead tuples in MB */
+ dead_tuple_percent, /* dead tuples in % */
- (double)free_space/1024/1024, /* free/available space in MB */
+ (double) free_space / 1024 / 1024, /* free/available space in
+ * MB */
- free_percent, /* free/available space in % */
+ free_percent, /* free/available space in % */
- /* overhead in % */
- (nblocks == 0)?0.0: 100.0
- - tuple_percent
- - dead_tuple_percent
- - free_percent);
+ /* overhead in % */
+ (nblocks == 0) ? 0.0 : 100.0
+ - tuple_percent
+ - dead_tuple_percent
+ - free_percent);
- PG_RETURN_FLOAT8(dead_tuple_percent);
+ PG_RETURN_FLOAT8(dead_tuple_percent);
}
diff --git a/contrib/rserv/rserv.c b/contrib/rserv/rserv.c
index 02c71220d62..be4a136a1b9 100644
--- a/contrib/rserv/rserv.c
+++ b/contrib/rserv/rserv.c
@@ -24,7 +24,6 @@ Datum _rserv_debug_(PG_FUNCTION_ARGS);
HeapTuple _rserv_log_(void);
int32 _rserv_sync_(int32);
int32 _rserv_debug_(int32);
-
#endif
static int debug = 0;
@@ -44,7 +43,7 @@ _rserv_log_()
char **args; /* argument: argnum */
Relation rel; /* triggered relation */
HeapTuple tuple; /* tuple to return */
- HeapTuple newtuple = NULL;/* tuple to return */
+ HeapTuple newtuple = NULL; /* tuple to return */
TupleDesc tupdesc; /* tuple description */
int keynum;
char *key;
@@ -88,6 +87,7 @@ _rserv_log_()
newtuple = CurrentTriggerData->tg_newtuple;
#ifndef PG_FUNCTION_INFO_V1
+
/*
* Setting CurrentTriggerData to NULL prevents direct calls to trigger
* functions in queries. Normally, trigger functions have to be called
@@ -207,7 +207,6 @@ _rserv_sync_(int32 server)
{
#ifdef PG_FUNCTION_INFO_V1
int32 server = PG_GETARG_INT32(0);
-
#endif
char sql[8192];
char buf[8192];
@@ -253,7 +252,6 @@ _rserv_debug_(int32 newval)
{
#ifdef PG_FUNCTION_INFO_V1
int32 newval = PG_GETARG_INT32(0);
-
#endif
int32 oldval = debug;
diff --git a/contrib/rtree_gist/rtree_gist.c b/contrib/rtree_gist/rtree_gist.c
index ca6263fc9eb..cbbe024c030 100644
--- a/contrib/rtree_gist/rtree_gist.c
+++ b/contrib/rtree_gist/rtree_gist.c
@@ -1,13 +1,13 @@
/*-------------------------------------------------------------------------
*
* rtree_gist.c
- * pg_amproc entries for GiSTs over 2-D boxes.
+ * pg_amproc entries for GiSTs over 2-D boxes.
* This gives R-tree behavior, with Guttman's poly-time split algorithm.
*
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/contrib/rtree_gist/Attic/rtree_gist.c,v 1.3 2001/10/01 17:53:11 tgl Exp $
+ * $Header: /cvsroot/pgsql/contrib/rtree_gist/Attic/rtree_gist.c,v 1.4 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -20,9 +20,9 @@
#include "utils/geo_decls.h"
#include "utils/elog.h"
-typedef Datum (*RDF)(PG_FUNCTION_ARGS);
-typedef Datum (*BINARY_UNION)(Datum, Datum, int*);
-typedef float (*SIZE_BOX)(Datum);
+typedef Datum (*RDF) (PG_FUNCTION_ARGS);
+typedef Datum (*BINARY_UNION) (Datum, Datum, int *);
+typedef float (*SIZE_BOX) (Datum);
/*
** box ops
@@ -34,24 +34,24 @@ PG_FUNCTION_INFO_V1(gbox_consistent);
PG_FUNCTION_INFO_V1(gbox_penalty);
PG_FUNCTION_INFO_V1(gbox_same);
-Datum gbox_compress(PG_FUNCTION_ARGS);
-Datum gbox_union(PG_FUNCTION_ARGS);
-Datum gbox_picksplit(PG_FUNCTION_ARGS);
-Datum gbox_consistent(PG_FUNCTION_ARGS);
-Datum gbox_penalty(PG_FUNCTION_ARGS);
-Datum gbox_same(PG_FUNCTION_ARGS);
+Datum gbox_compress(PG_FUNCTION_ARGS);
+Datum gbox_union(PG_FUNCTION_ARGS);
+Datum gbox_picksplit(PG_FUNCTION_ARGS);
+Datum gbox_consistent(PG_FUNCTION_ARGS);
+Datum gbox_penalty(PG_FUNCTION_ARGS);
+Datum gbox_same(PG_FUNCTION_ARGS);
static bool gbox_leaf_consistent(BOX *key, BOX *query, StrategyNumber strategy);
-static float size_box( Datum box );
+static float size_box(Datum box);
/*
-** Polygon ops
+** Polygon ops
*/
PG_FUNCTION_INFO_V1(gpoly_compress);
PG_FUNCTION_INFO_V1(gpoly_consistent);
-Datum gpoly_compress(PG_FUNCTION_ARGS);
-Datum gpoly_consistent(PG_FUNCTION_ARGS);
+Datum gpoly_compress(PG_FUNCTION_ARGS);
+Datum gpoly_consistent(PG_FUNCTION_ARGS);
/*
** Common rtree-function (for all ops)
@@ -60,7 +60,7 @@ static bool rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strat
PG_FUNCTION_INFO_V1(rtree_decompress);
-Datum rtree_decompress(PG_FUNCTION_ARGS);
+Datum rtree_decompress(PG_FUNCTION_ARGS);
/**************************************************
* Box ops
@@ -75,21 +75,21 @@ Datum rtree_decompress(PG_FUNCTION_ARGS);
Datum
gbox_consistent(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry = (GISTENTRY*) PG_GETARG_POINTER(0);
- BOX *query = (BOX*) PG_GETARG_POINTER(1);
- StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
-
- /*
- ** if entry is not leaf, use gbox_internal_consistent,
- ** else use gbox_leaf_consistent
- */
- if ( ! (DatumGetPointer(entry->key) != NULL && query) )
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ BOX *query = (BOX *) PG_GETARG_POINTER(1);
+ StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+
+ /*
+ * * if entry is not leaf, use gbox_internal_consistent, * else use
+ * gbox_leaf_consistent
+ */
+ if (!(DatumGetPointer(entry->key) != NULL && query))
PG_RETURN_BOOL(FALSE);
- if (GIST_LEAF(entry))
- PG_RETURN_BOOL(gbox_leaf_consistent((BOX *) DatumGetPointer(entry->key), query, strategy));
- else
- PG_RETURN_BOOL(rtree_internal_consistent((BOX *) DatumGetPointer(entry->key), query, strategy));
+ if (GIST_LEAF(entry))
+ PG_RETURN_BOOL(gbox_leaf_consistent((BOX *) DatumGetPointer(entry->key), query, strategy));
+ else
+ PG_RETURN_BOOL(rtree_internal_consistent((BOX *) DatumGetPointer(entry->key), query, strategy));
}
@@ -100,30 +100,33 @@ gbox_consistent(PG_FUNCTION_ARGS)
Datum
gbox_union(PG_FUNCTION_ARGS)
{
- bytea *entryvec = (bytea*) PG_GETARG_POINTER(0);
- int *sizep = (int*) PG_GETARG_POINTER(1);
- int numranges, i;
- BOX *cur, *pageunion;
-
- numranges = (VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY);
- pageunion = (BOX *)palloc( sizeof(BOX) );
- cur = DatumGetBoxP( ((GISTENTRY *) VARDATA(entryvec))[0].key );
- memcpy( (void*)pageunion, (void*)cur, sizeof( BOX ) );
-
- for (i = 1; i < numranges; i++) {
- cur = DatumGetBoxP( ((GISTENTRY *) VARDATA(entryvec))[i].key );
- if ( pageunion->high.x < cur->high.x )
- pageunion->high.x = cur->high.x;
- if ( pageunion->low.x > cur->low.x )
- pageunion->low.x = cur->low.x;
- if ( pageunion->high.y < cur->high.y )
- pageunion->high.y = cur->high.y;
- if ( pageunion->low.y > cur->low.y )
- pageunion->low.y = cur->low.y;
- }
- *sizep = sizeof(BOX);
-
- PG_RETURN_POINTER(pageunion);
+ bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
+ int *sizep = (int *) PG_GETARG_POINTER(1);
+ int numranges,
+ i;
+ BOX *cur,
+ *pageunion;
+
+ numranges = (VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY);
+ pageunion = (BOX *) palloc(sizeof(BOX));
+ cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[0].key);
+ memcpy((void *) pageunion, (void *) cur, sizeof(BOX));
+
+ for (i = 1; i < numranges; i++)
+ {
+ cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key);
+ if (pageunion->high.x < cur->high.x)
+ pageunion->high.x = cur->high.x;
+ if (pageunion->low.x > cur->low.x)
+ pageunion->low.x = cur->low.x;
+ if (pageunion->high.y < cur->high.y)
+ pageunion->high.y = cur->high.y;
+ if (pageunion->low.y > cur->low.y)
+ pageunion->low.y = cur->low.y;
+ }
+ *sizep = sizeof(BOX);
+
+ PG_RETURN_POINTER(pageunion);
}
/*
@@ -143,18 +146,19 @@ gbox_compress(PG_FUNCTION_ARGS)
Datum
gbox_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);
- Datum ud;
- float tmp1;
-
- ud = DirectFunctionCall2(rt_box_union, origentry->key, newentry->key);
- tmp1 = size_box( ud );
- if (DatumGetPointer(ud) != NULL) pfree(DatumGetPointer(ud));
-
- *result = tmp1 - size_box( origentry->key );
- PG_RETURN_POINTER(result);
+ GISTENTRY *origentry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ GISTENTRY *newentry = (GISTENTRY *) PG_GETARG_POINTER(1);
+ float *result = (float *) PG_GETARG_POINTER(2);
+ Datum ud;
+ float tmp1;
+
+ ud = DirectFunctionCall2(rt_box_union, origentry->key, newentry->key);
+ tmp1 = size_box(ud);
+ if (DatumGetPointer(ud) != NULL)
+ pfree(DatumGetPointer(ud));
+
+ *result = tmp1 - size_box(origentry->key);
+ PG_RETURN_POINTER(result);
}
/*
@@ -165,145 +169,183 @@ gbox_penalty(PG_FUNCTION_ARGS)
Datum
gbox_picksplit(PG_FUNCTION_ARGS)
{
- bytea *entryvec = (bytea*)PG_GETARG_POINTER(0);
- GIST_SPLITVEC *v = (GIST_SPLITVEC*)PG_GETARG_POINTER(1);
- OffsetNumber i;
- OffsetNumber *listL, *listR, *listB, *listT;
- BOX *unionL,*unionR,*unionB,*unionT;
- int posL, posR, posB, posT;
- BOX pageunion;
- BOX *cur;
- char direction=' ';
- bool allisequal=true;
- OffsetNumber maxoff;
- int nbytes;
-
- posL = posR = posB = posT = 0;
- maxoff = ((VARSIZE(entryvec) - VARHDRSZ)/sizeof(GISTENTRY)) - 1;
-
- cur = DatumGetBoxP( ((GISTENTRY *) VARDATA(entryvec))[FirstOffsetNumber].key );
- memcpy( (void*)&pageunion, (void*)cur, sizeof( BOX ) );
-
- /* find MBR */
- for (i = OffsetNumberNext(FirstOffsetNumber); i <= maxoff; i = OffsetNumberNext(i)) {
- cur = DatumGetBoxP( ((GISTENTRY *) VARDATA(entryvec))[i].key );
- if ( pageunion.high.x < cur->high.x )
- { allisequal=false; pageunion.high.x = cur->high.x; }
- if ( pageunion.low.x > cur->low.x )
- { allisequal=false; pageunion.low.x = cur->low.x; }
- if ( pageunion.high.y < cur->high.y )
- { allisequal=false; pageunion.high.y = cur->high.y; }
- if ( pageunion.low.y > cur->low.y )
- { allisequal=false; pageunion.low.y = cur->low.y; }
- }
-
- nbytes = (maxoff + 2) * sizeof(OffsetNumber);
- listL = (OffsetNumber*)palloc( nbytes );
- listR = (OffsetNumber*)palloc( nbytes );
- unionL = (BOX*)palloc( sizeof(BOX) );
- unionR = (BOX*)palloc( sizeof(BOX) );
- if ( allisequal ) {
- cur = DatumGetBoxP( ((GISTENTRY *) VARDATA(entryvec))[OffsetNumberNext(FirstOffsetNumber)].key );
- if ( memcmp( (void*)cur, (void*)&pageunion, sizeof( BOX ) ) == 0 ) {
- v->spl_left = listL;
- v->spl_right = listR;
- v->spl_nleft = v->spl_nright = 0;
- memcpy( (void*)unionL, (void*)&pageunion, sizeof( BOX ) );
- memcpy( (void*)unionR, (void*)&pageunion, sizeof( BOX ) );
-
- for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) {
- if (i <= (maxoff - FirstOffsetNumber + 1)/2) {
- v->spl_left[ v->spl_nleft ] = i;
- v->spl_nleft++;
- } else {
- v->spl_right[ v->spl_nright ] = i;
- v->spl_nright++;
- }
+ bytea *entryvec = (bytea *) PG_GETARG_POINTER(0);
+ GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
+ OffsetNumber i;
+ OffsetNumber *listL,
+ *listR,
+ *listB,
+ *listT;
+ BOX *unionL,
+ *unionR,
+ *unionB,
+ *unionT;
+ int posL,
+ posR,
+ posB,
+ posT;
+ BOX pageunion;
+ BOX *cur;
+ char direction = ' ';
+ bool allisequal = true;
+ OffsetNumber maxoff;
+ int nbytes;
+
+ posL = posR = posB = posT = 0;
+ maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1;
+
+ cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[FirstOffsetNumber].key);
+ memcpy((void *) &pageunion, (void *) cur, sizeof(BOX));
+
+ /* find MBR */
+ for (i = OffsetNumberNext(FirstOffsetNumber); i <= maxoff; i = OffsetNumberNext(i))
+ {
+ cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key);
+ if (pageunion.high.x < cur->high.x)
+ {
+ allisequal = false;
+ pageunion.high.x = cur->high.x;
}
- v->spl_ldatum = BoxPGetDatum( unionL );
- v->spl_rdatum = BoxPGetDatum( unionR );
+ if (pageunion.low.x > cur->low.x)
+ {
+ allisequal = false;
+ pageunion.low.x = cur->low.x;
+ }
+ if (pageunion.high.y < cur->high.y)
+ {
+ allisequal = false;
+ pageunion.high.y = cur->high.y;
+ }
+ if (pageunion.low.y > cur->low.y)
+ {
+ allisequal = false;
+ pageunion.low.y = cur->low.y;
+ }
+ }
- PG_RETURN_POINTER( v );
+ nbytes = (maxoff + 2) * sizeof(OffsetNumber);
+ listL = (OffsetNumber *) palloc(nbytes);
+ listR = (OffsetNumber *) palloc(nbytes);
+ unionL = (BOX *) palloc(sizeof(BOX));
+ unionR = (BOX *) palloc(sizeof(BOX));
+ if (allisequal)
+ {
+ cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[OffsetNumberNext(FirstOffsetNumber)].key);
+ if (memcmp((void *) cur, (void *) &pageunion, sizeof(BOX)) == 0)
+ {
+ v->spl_left = listL;
+ v->spl_right = listR;
+ v->spl_nleft = v->spl_nright = 0;
+ memcpy((void *) unionL, (void *) &pageunion, sizeof(BOX));
+ memcpy((void *) unionR, (void *) &pageunion, sizeof(BOX));
+
+ for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
+ {
+ if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
+ {
+ v->spl_left[v->spl_nleft] = i;
+ v->spl_nleft++;
+ }
+ else
+ {
+ v->spl_right[v->spl_nright] = i;
+ v->spl_nright++;
+ }
+ }
+ v->spl_ldatum = BoxPGetDatum(unionL);
+ v->spl_rdatum = BoxPGetDatum(unionR);
+
+ PG_RETURN_POINTER(v);
+ }
}
- }
- listB = (OffsetNumber*)palloc( nbytes );
- listT = (OffsetNumber*)palloc( nbytes );
- unionB = (BOX*)palloc( sizeof(BOX) );
- unionT = (BOX*)palloc( sizeof(BOX) );
+ listB = (OffsetNumber *) palloc(nbytes);
+ listT = (OffsetNumber *) palloc(nbytes);
+ unionB = (BOX *) palloc(sizeof(BOX));
+ unionT = (BOX *) palloc(sizeof(BOX));
#define ADDLIST( list, unionD, pos ) do { \
if ( pos ) { \
- if ( unionD->high.x < cur->high.x ) unionD->high.x = cur->high.x; \
- if ( unionD->low.x > cur->low.x ) unionD->low.x = cur->low.x; \
- if ( unionD->high.y < cur->high.y ) unionD->high.y = cur->high.y; \
- if ( unionD->low.y > cur->low.y ) unionD->low.y = cur->low.y; \
+ if ( unionD->high.x < cur->high.x ) unionD->high.x = cur->high.x; \
+ if ( unionD->low.x > cur->low.x ) unionD->low.x = cur->low.x; \
+ if ( unionD->high.y < cur->high.y ) unionD->high.y = cur->high.y; \
+ if ( unionD->low.y > cur->low.y ) unionD->low.y = cur->low.y; \
} else { \
- memcpy( (void*)unionD, (void*) cur, sizeof( BOX ) ); \
+ memcpy( (void*)unionD, (void*) cur, sizeof( BOX ) ); \
} \
list[pos] = i; \
(pos)++; \
} while(0)
- for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) {
- cur = DatumGetBoxP( ((GISTENTRY *) VARDATA(entryvec))[i].key );
- if ( cur->low.x - pageunion.low.x < pageunion.high.x - cur->high.x )
- ADDLIST( listL, unionL, posL );
- else
- ADDLIST( listR, unionR, posR );
- if ( cur->low.y - pageunion.low.y < pageunion.high.y - cur->high.y )
- ADDLIST( listB, unionB, posB );
- else
- ADDLIST( listT, unionT, posT );
- }
-
- /* which split more optimal? */
-
- if ( Max( posL, posR ) < Max( posB, posT ) ) {
- direction = 'x';
- } else if ( Max( posL, posR ) > Max( posB, posT ) ) {
- direction = 'y';
- } else {
- Datum interLR = DirectFunctionCall2(rt_box_inter,
- BoxPGetDatum(unionL),
- BoxPGetDatum(unionR));
- Datum interBT = DirectFunctionCall2(rt_box_inter,
- BoxPGetDatum(unionB),
- BoxPGetDatum(unionT));
- float sizeLR, sizeBT;
-
- sizeLR = size_box( interLR );
- sizeBT = size_box( interBT );
-
- if ( sizeLR < sizeBT )
+ for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
+ {
+ cur = DatumGetBoxP(((GISTENTRY *) VARDATA(entryvec))[i].key);
+ if (cur->low.x - pageunion.low.x < pageunion.high.x - cur->high.x)
+ ADDLIST(listL, unionL, posL);
+ else
+ ADDLIST(listR, unionR, posR);
+ if (cur->low.y - pageunion.low.y < pageunion.high.y - cur->high.y)
+ ADDLIST(listB, unionB, posB);
+ else
+ ADDLIST(listT, unionT, posT);
+ }
+
+ /* which split more optimal? */
+
+ if (Max(posL, posR) < Max(posB, posT))
direction = 'x';
- else
+ else if (Max(posL, posR) > Max(posB, posT))
direction = 'y';
+ else
+ {
+ Datum interLR = DirectFunctionCall2(rt_box_inter,
+ BoxPGetDatum(unionL),
+ BoxPGetDatum(unionR));
+ Datum interBT = DirectFunctionCall2(rt_box_inter,
+ BoxPGetDatum(unionB),
+ BoxPGetDatum(unionT));
+ float sizeLR,
+ sizeBT;
+
+ sizeLR = size_box(interLR);
+ sizeBT = size_box(interBT);
+
+ if (sizeLR < sizeBT)
+ direction = 'x';
+ else
+ direction = 'y';
+ }
+
+ if (direction == 'x')
+ {
+ pfree(unionB);
+ pfree(listB);
+ pfree(unionT);
+ pfree(listT);
+
+ v->spl_left = listL;
+ v->spl_right = listR;
+ v->spl_nleft = posL;
+ v->spl_nright = posR;
+ v->spl_ldatum = BoxPGetDatum(unionL);
+ v->spl_rdatum = BoxPGetDatum(unionR);
+ }
+ else
+ {
+ pfree(unionR);
+ pfree(listR);
+ pfree(unionL);
+ pfree(listL);
+
+ v->spl_left = listB;
+ v->spl_right = listT;
+ v->spl_nleft = posB;
+ v->spl_nright = posT;
+ v->spl_ldatum = BoxPGetDatum(unionB);
+ v->spl_rdatum = BoxPGetDatum(unionT);
}
- if ( direction == 'x' ) {
- pfree( unionB ); pfree( listB );
- pfree( unionT ); pfree( listT );
-
- v->spl_left = listL;
- v->spl_right = listR;
- v->spl_nleft = posL;
- v->spl_nright = posR;
- v->spl_ldatum = BoxPGetDatum( unionL );
- v->spl_rdatum = BoxPGetDatum( unionR );
- } else {
- pfree( unionR ); pfree( listR );
- pfree( unionL ); pfree( listL );
-
- v->spl_left = listB;
- v->spl_right = listT;
- v->spl_nleft = posB;
- v->spl_nright = posT;
- v->spl_ldatum = BoxPGetDatum( unionB );
- v->spl_rdatum = BoxPGetDatum( unionT );
- }
-
- PG_RETURN_POINTER (v);
+ PG_RETURN_POINTER(v);
}
/*
@@ -312,66 +354,71 @@ gbox_picksplit(PG_FUNCTION_ARGS)
Datum
gbox_same(PG_FUNCTION_ARGS)
{
- BOX *b1 = (BOX*) PG_GETARG_POINTER(0);
- BOX *b2 = (BOX*) PG_GETARG_POINTER(1);
- bool *result = (bool*) PG_GETARG_POINTER(2);
- if ( b1 && b2 )
- *result = DatumGetBool( DirectFunctionCall2( box_same, PointerGetDatum(b1), PointerGetDatum(b2)) );
- else
- *result = ( b1==NULL && b2==NULL ) ? TRUE : FALSE;
- PG_RETURN_POINTER(result);
+ BOX *b1 = (BOX *) PG_GETARG_POINTER(0);
+ BOX *b2 = (BOX *) PG_GETARG_POINTER(1);
+ bool *result = (bool *) PG_GETARG_POINTER(2);
+
+ if (b1 && b2)
+ *result = DatumGetBool(DirectFunctionCall2(box_same, PointerGetDatum(b1), PointerGetDatum(b2)));
+ else
+ *result = (b1 == NULL && b2 == NULL) ? TRUE : FALSE;
+ PG_RETURN_POINTER(result);
}
-/*
+/*
** SUPPORT ROUTINES for boxes
*/
-static bool
+static bool
gbox_leaf_consistent(BOX *key,
- BOX *query,
- StrategyNumber strategy)
+ BOX *query,
+ StrategyNumber strategy)
{
- bool retval;
-
- switch(strategy) {
- case RTLeftStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_left, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTOverLeftStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_overleft, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTOverlapStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTOverRightStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_overright, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTRightStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_right, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTSameStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_same, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTContainsStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_contain, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTContainedByStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_contained, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- default:
- retval = FALSE;
- }
- return(retval);
+ bool retval;
+
+ switch (strategy)
+ {
+ case RTLeftStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_left, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTOverLeftStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_overleft, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTOverlapStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_overlap, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTOverRightStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_overright, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTRightStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_right, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTSameStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_same, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTContainsStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_contain, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTContainedByStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_contained, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ default:
+ retval = FALSE;
+ }
+ return (retval);
}
-static float
-size_box( Datum box ) {
- if ( DatumGetPointer(box) != NULL ) {
- float size;
+static float
+size_box(Datum box)
+{
+ if (DatumGetPointer(box) != NULL)
+ {
+ float size;
- DirectFunctionCall2( rt_box_size,
- box, PointerGetDatum( &size ) );
+ DirectFunctionCall2(rt_box_size,
+ box, PointerGetDatum(&size));
return size;
- } else
+ }
+ else
return 0.0;
}
@@ -382,91 +429,97 @@ size_box( Datum box ) {
Datum
gpoly_compress(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry=(GISTENTRY*)PG_GETARG_POINTER(0);
- GISTENTRY *retval;
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ GISTENTRY *retval;
- if ( entry->leafkey) {
+ if (entry->leafkey)
+ {
retval = palloc(sizeof(GISTENTRY));
- if ( DatumGetPointer(entry->key) != NULL ) {
- POLYGON *in;
- BOX *r;
+ if (DatumGetPointer(entry->key) != NULL)
+ {
+ POLYGON *in;
+ BOX *r;
+
in = (POLYGON *) PG_DETOAST_DATUM(entry->key);
- r = (BOX *) palloc( sizeof(BOX) );
- memcpy( (void*)r, (void*)&(in->boundbox), sizeof(BOX) );
- if ( in != (POLYGON *) DatumGetPointer(entry->key) )
- pfree( in );
+ r = (BOX *) palloc(sizeof(BOX));
+ memcpy((void *) r, (void *) &(in->boundbox), sizeof(BOX));
+ if (in != (POLYGON *) DatumGetPointer(entry->key))
+ pfree(in);
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
entry->offset, sizeof(BOX), FALSE);
- } else {
+ }
+ else
+ {
gistentryinit(*retval, (Datum) 0,
entry->rel, entry->page,
- entry->offset, 0,FALSE);
- }
- } else {
- retval = entry;
+ entry->offset, 0, FALSE);
+ }
}
- PG_RETURN_POINTER( retval );
+ else
+ retval = entry;
+ PG_RETURN_POINTER(retval);
}
Datum
gpoly_consistent(PG_FUNCTION_ARGS)
{
- GISTENTRY *entry = (GISTENTRY*) PG_GETARG_POINTER(0);
- POLYGON *query = (POLYGON*)PG_DETOAST_DATUM( PG_GETARG_POINTER(1) );
- StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
- bool result;
-
- /*
- ** if entry is not leaf, use gbox_internal_consistent,
- ** else use gbox_leaf_consistent
- */
- if ( ! (DatumGetPointer(entry->key) != NULL && query) )
+ GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
+ POLYGON *query = (POLYGON *) PG_DETOAST_DATUM(PG_GETARG_POINTER(1));
+ StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
+ bool result;
+
+ /*
+ * * if entry is not leaf, use gbox_internal_consistent, * else use
+ * gbox_leaf_consistent
+ */
+ if (!(DatumGetPointer(entry->key) != NULL && query))
PG_RETURN_BOOL(FALSE);
- result = rtree_internal_consistent((BOX *) DatumGetPointer(entry->key),
- &(query->boundbox), strategy);
+ result = rtree_internal_consistent((BOX *) DatumGetPointer(entry->key),
+ &(query->boundbox), strategy);
- PG_FREE_IF_COPY(query,1);
- PG_RETURN_BOOL( result );
+ PG_FREE_IF_COPY(query, 1);
+ PG_RETURN_BOOL(result);
}
/*****************************************
* Common rtree-function (for all ops)
*****************************************/
-static bool
+static bool
rtree_internal_consistent(BOX *key,
- BOX *query,
- StrategyNumber strategy)
+ BOX *query,
+ StrategyNumber strategy)
{
- bool retval;
-
- switch(strategy) {
- case RTLeftStrategyNumber:
- case RTOverLeftStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_overleft, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTOverlapStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTOverRightStrategyNumber:
- case RTRightStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_right, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTSameStrategyNumber:
- case RTContainsStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_contain, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- case RTContainedByStrategyNumber:
- retval = DatumGetBool( DirectFunctionCall2( box_overlap, PointerGetDatum(key), PointerGetDatum(query) ) );
- break;
- default:
- retval = FALSE;
- }
- return(retval);
+ bool retval;
+
+ switch (strategy)
+ {
+ case RTLeftStrategyNumber:
+ case RTOverLeftStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_overleft, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTOverlapStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_overlap, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTOverRightStrategyNumber:
+ case RTRightStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_right, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTSameStrategyNumber:
+ case RTContainsStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_contain, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ case RTContainedByStrategyNumber:
+ retval = DatumGetBool(DirectFunctionCall2(box_overlap, PointerGetDatum(key), PointerGetDatum(query)));
+ break;
+ default:
+ retval = FALSE;
+ }
+ return (retval);
}
/*
diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index 124299ab44d..097304b6385 100644
--- a/contrib/seg/seg.c
+++ b/contrib/seg/seg.c
@@ -138,7 +138,6 @@ seg_out(SEG * seg)
if (seg->lower == seg->upper && seg->l_ext == seg->u_ext)
{
-
/*
* indicates that this interval was built by seg_in off a single
* point
@@ -219,7 +218,6 @@ gseg_consistent(GISTENTRY *entry,
SEG * query,
StrategyNumber strategy)
{
-
/*
* * if entry is not leaf, use gseg_internal_consistent, * else use
* gseg_leaf_consistent
@@ -253,7 +251,7 @@ gseg_union(bytea *entryvec, int *sizep)
for (i = 1; i < numranges; i++)
{
out = gseg_binary_union(tmp, (SEG *)
- DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[i].key),
+ DatumGetPointer(((GISTENTRY *) VARDATA(entryvec))[i].key),
sizep);
if (i > 1)
pfree(tmp);
@@ -267,13 +265,13 @@ gseg_union(bytea *entryvec, int *sizep)
** GiST Compress and Decompress methods for segments
** do not do anything.
*/
-GISTENTRY *
+GISTENTRY *
gseg_compress(GISTENTRY *entry)
{
return (entry);
}
-GISTENTRY *
+GISTENTRY *
gseg_decompress(GISTENTRY *entry)
{
return (entry);
@@ -415,7 +413,6 @@ gseg_picksplit(bytea *entryvec,
maxoff = OffsetNumberNext(maxoff);
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{
-
/*
* If we've already decided where to place this item, just put it
* on the right list. Otherwise, we need to figure out which page
@@ -614,7 +611,7 @@ seg_overlap(SEG * a, SEG * b)
((a->upper >= b->upper) && (a->lower <= b->upper))
||
((b->upper >= a->upper) && (b->lower <= a->upper))
- );
+ );
}
/* seg_overleft -- is the right edge of (a) located to the left of the right edge of (b)?
@@ -757,7 +754,6 @@ seg_size(SEG * a)
int32
seg_cmp(SEG * a, SEG * b)
{
-
/*
* First compare on lower boundary position
*/
@@ -968,7 +964,6 @@ restore(char *result, float val, int n)
{
if (abs(exp) <= 4)
{
-
/*
* remove the decimal point from the mantyssa and write the
* digits to the buf array
@@ -989,7 +984,6 @@ restore(char *result, float val, int n)
{
if (dp - 10 + exp >= n)
{
-
/*
* the decimal point is behind the last significant
* digit; the digits in between must be converted to
diff --git a/contrib/spi/refint.c b/contrib/spi/refint.c
index dcc9f54daf5..441c1e884d9 100644
--- a/contrib/spi/refint.c
+++ b/contrib/spi/refint.c
@@ -52,7 +52,7 @@ check_primary_key(PG_FUNCTION_ARGS)
HeapTuple tuple = NULL; /* tuple to return */
TupleDesc tupdesc; /* tuple description */
EPlan *plan; /* prepared plan */
- Oid *argtypes = NULL;/* key types to prepare execution plan */
+ Oid *argtypes = NULL; /* key types to prepare execution plan */
bool isnull; /* to know is some column NULL or not */
char ident[2 * NAMEDATALEN]; /* to identify myself */
int ret;
@@ -235,10 +235,10 @@ check_foreign_key(PG_FUNCTION_ARGS)
char *relname; /* referencing relation name */
Relation rel; /* triggered relation */
HeapTuple trigtuple = NULL; /* tuple to being changed */
- HeapTuple newtuple = NULL;/* tuple to return */
+ HeapTuple newtuple = NULL; /* tuple to return */
TupleDesc tupdesc; /* tuple description */
EPlan *plan; /* prepared plan(s) */
- Oid *argtypes = NULL;/* key types to prepare execution plan */
+ Oid *argtypes = NULL; /* key types to prepare execution plan */
bool isnull; /* to know is some column NULL or not */
bool isequal = true; /* are keys in both tuples equal (in
* UPDATE) */
@@ -402,11 +402,11 @@ check_foreign_key(PG_FUNCTION_ARGS)
/*---------
* For 'R'estrict action we construct SELECT query:
*
- * SELECT 1
+ * SELECT 1
* FROM _referencing_relation_
* WHERE Fkey1 = $1 [AND Fkey2 = $2 [...]]
*
- * to check is tuple referenced or not.
+ * to check is tuple referenced or not.
*---------
*/
if (action == 'r')
@@ -537,7 +537,6 @@ check_foreign_key(PG_FUNCTION_ARGS)
*/
for (r = 0; r < nrefs; r++)
{
-
/*
* For 'R'estrict we may to execute plan for one tuple only, for
* other actions - for all tuples.
diff --git a/contrib/string/string_io.c b/contrib/string/string_io.c
index 840782dd515..fdc6da1915e 100644
--- a/contrib/string/string_io.c
+++ b/contrib/string/string_io.c
@@ -359,7 +359,6 @@ c_charin(unsigned char *str)
{
return (string_input(str, 1, 0, NULL));
}
-
#endif
/* end of file */
diff --git a/contrib/string/string_io.h b/contrib/string/string_io.h
index 556c33660ce..b6a368698af 100644
--- a/contrib/string/string_io.h
+++ b/contrib/string/string_io.h
@@ -13,7 +13,6 @@ struct varlena *c_textin(unsigned char *str);
int32 *
c_charin(unsigned char *str)
#endif
-
#endif
/*
diff --git a/contrib/tsearch/crc32.c b/contrib/tsearch/crc32.c
index 61cb6ed3ed7..dc93db727c1 100644
--- a/contrib/tsearch/crc32.c
+++ b/contrib/tsearch/crc32.c
@@ -87,15 +87,17 @@ static const unsigned int crc32tab[256] = {
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
};
-unsigned int crc32_sz(char * buf, int size){
+unsigned int
+crc32_sz(char *buf, int size)
+{
unsigned int crc = ~0;
- char *p ;
- int len, nr;
+ char *p;
+ int len,
+ nr;
- len = 0 ;
- nr=size;
- for (len += nr, p = buf; nr--; ++p) {
- _CRC32_(crc, *p) ;
- }
+ len = 0;
+ nr = size;
+ for (len += nr, p = buf; nr--; ++p)
+ _CRC32_(crc, *p);
return ~crc;
}
diff --git a/contrib/tsearch/crc32.h b/contrib/tsearch/crc32.h
index c4f5ed703c5..b08065d8c87 100644
--- a/contrib/tsearch/crc32.h
+++ b/contrib/tsearch/crc32.h
@@ -2,9 +2,8 @@
#define _CRC32_H
/* Returns crc32 of data block */
-extern unsigned int crc32_sz(char * buf, int size);
+extern unsigned int crc32_sz(char *buf, int size);
/* Returns crc32 of null-terminated string */
#define crc32(buf) crc32_sz((buf),strlen(buf))
-
#endif
diff --git a/contrib/tsearch/deflex.h b/contrib/tsearch/deflex.h
index 8c74595a68a..7fbd84adf11 100644
--- a/contrib/tsearch/deflex.h
+++ b/contrib/tsearch/deflex.h
@@ -12,12 +12,12 @@
#define HOST 6
#define FLOAT 7
#define FINT 8
-#define PARTWORD 9
-#define NONLATINPARTWORD 10
-#define LATPARTWORD 11
-#define SPACE 12
-#define SYMTAG 13
-#define HTTP 14
+#define PARTWORD 9
+#define NONLATINPARTWORD 10
+#define LATPARTWORD 11
+#define SPACE 12
+#define SYMTAG 13
+#define HTTP 14
#define DEFISWORD 15
#define DEFISLATWORD 16
#define DEFISNONLATINWORD 17
@@ -25,6 +25,4 @@
#define FILEPATH 19
extern const char *descr[];
-
#endif
-
diff --git a/contrib/tsearch/gistidx.h b/contrib/tsearch/gistidx.h
index dc991ab0d74..f4576a1d240 100644
--- a/contrib/tsearch/gistidx.h
+++ b/contrib/tsearch/gistidx.h
@@ -9,7 +9,8 @@
* signature defines
*/
#define BITBYTE 8
-#define SIGLENINT 64 /* >121 => key will toast, so it will not work !!! */
+#define SIGLENINT 64 /* >121 => key will toast, so it will not
+ * work !!! */
#define SIGLEN ( sizeof(int4)*SIGLENINT )
#define SIGLENBIT (SIGLEN*BITBYTE)
@@ -21,9 +22,9 @@ typedef char *BITVECP;
a;\
}
#define LOOPBIT(a) \
- for(i=0;i<SIGLENBIT;i++) {\
- a;\
- }
+ for(i=0;i<SIGLENBIT;i++) {\
+ a;\
+ }
#define GETBYTE(x,i) ( *( (BITVECP)(x) + (int)( (i) / BITBYTE ) ) )
#define GETBITBYTE(x,i) ( ((char)(x)) >> i & 0x01 )
@@ -38,27 +39,27 @@ typedef char *BITVECP;
/*
- * type of index key
+ * type of index key
*/
-typedef struct {
- int4 len;
- int4 flag;
- char data[1];
-} GISTTYPE;
+typedef struct
+{
+ int4 len;
+ int4 flag;
+ char data[1];
+} GISTTYPE;
-#define ARRKEY 0x01
-#define SIGNKEY 0x02
-#define ALLISTRUE 0x04
+#define ARRKEY 0x01
+#define SIGNKEY 0x02
+#define ALLISTRUE 0x04
-#define ISARRKEY(x) ( ((GISTTYPE*)x)->flag & ARRKEY )
+#define ISARRKEY(x) ( ((GISTTYPE*)x)->flag & ARRKEY )
#define ISSIGNKEY(x) ( ((GISTTYPE*)x)->flag & SIGNKEY )
#define ISALLTRUE(x) ( ((GISTTYPE*)x)->flag & ALLISTRUE )
-#define GTHDRSIZE ( sizeof(int4)*2 )
+#define GTHDRSIZE ( sizeof(int4)*2 )
#define CALCGTSIZE(flag, len) ( GTHDRSIZE + ( ( (flag) & ARRKEY ) ? ((len)*sizeof(int4)) : (((flag) & ALLISTRUE) ? 0 : SIGLEN) ) )
#define GETSIGN(x) ( (BITVECP)( (char*)x+GTHDRSIZE ) )
#define GETARR(x) ( (int4*)( (char*)x+GTHDRSIZE ) )
-#define ARRNELEM(x) ( ( ((GISTTYPE*)x)->len - GTHDRSIZE )/sizeof(int4) )
+#define ARRNELEM(x) ( ( ((GISTTYPE*)x)->len - GTHDRSIZE )/sizeof(int4) )
#endif
-
diff --git a/contrib/tsearch/morph.c b/contrib/tsearch/morph.c
index a31946ac868..3a66ecbbc68 100644
--- a/contrib/tsearch/morph.c
+++ b/contrib/tsearch/morph.c
@@ -3,7 +3,7 @@
* New dictionary is include in dict.h. For languages which
* use latin charset it may be need to modify mapdict table.
* Teodor Sigaev <teodor@stack.net>
- */
+ */
#include "postgres.h"
#include "utils/elog.h"
@@ -20,157 +20,183 @@
* All of this methods are optional, but
* if all methods are NULL, then dictionary does nothing :)
* Return value of lemmatize must be palloced or the same.
- * Return value of init must be malloced in other case
- * it will be free in end of transaction!
+ * Return value of init must be malloced in other case
+ * it will be free in end of transaction!
*/
-typedef struct {
- char localename[LOCALE_NAME_BUFLEN];
+typedef struct
+{
+ char localename[LOCALE_NAME_BUFLEN];
/* init dictionary */
- void* (*init)(void);
+ void *(*init) (void);
/* close dictionary */
- void (*close)(void*);
+ void (*close) (void *);
/* find in dictionary */
- char* (*lemmatize)(void*,char*,int*);
- int (*is_stoplemm)(void*,char*,int);
- int (*is_stemstoplemm)(void*,char*,int);
-} DICT;
+ char *(*lemmatize) (void *, char *, int *);
+ int (*is_stoplemm) (void *, char *, int);
+ int (*is_stemstoplemm) (void *, char *, int);
+} DICT;
/* insert all dictionaries */
#define DICT_BODY
#include "dict.h"
-#undef DICT_BODY
+#undef DICT_BODY
-/* fill dictionary's structure */
+/* fill dictionary's structure */
#define DICT_TABLE
-DICT dicts[] = {
+DICT dicts[] = {
{
- "C",NULL,NULL,NULL,NULL,NULL /* fake dictionary */
+ "C", NULL, NULL, NULL, NULL, NULL /* fake dictionary */
}
#include "dict.h"
};
+
#undef DICT_TABLE
/* array for storing dictinary's objects (if needed) */
-void* dictobjs[ lengthof(dicts) ];
+void *dictobjs[
+ lengthof(dicts)];
#define STOPLEXEM -2
#define BYLOCALE -1
-#define NODICT 0
-#define DEFAULTDICT 1
-
+#define NODICT 0
+#define DEFAULTDICT 1
+
#define MAXNDICT 2
-typedef int2 MAPDICT[MAXNDICT];
+typedef int2 MAPDICT[MAXNDICT];
+
#define GETDICT(x,i) *( ((int2*)(x)) + (i) )
/* map dictionaries for lexem type */
static MAPDICT mapdict[] = {
- {NODICT, NODICT}, /* not used */
- {DEFAULTDICT, NODICT}, /* LATWORD */
- {BYLOCALE, NODICT}, /* NONLATINWORD */
- {BYLOCALE, DEFAULTDICT}, /* UWORD */
- {NODICT, NODICT}, /* EMAIL */
- {NODICT, NODICT}, /* FURL */
- {NODICT, NODICT}, /* HOST */
- {NODICT, NODICT}, /* FLOAT */
- {NODICT, NODICT}, /* FINT */
- {BYLOCALE, DEFAULTDICT}, /* PARTWORD */
- {BYLOCALE, NODICT}, /* NONLATINPARTWORD */
- {DEFAULTDICT, NODICT}, /* LATPARTWORD */
- {STOPLEXEM, NODICT}, /* SPACE */
- {STOPLEXEM, NODICT}, /* SYMTAG */
- {STOPLEXEM, NODICT}, /* HTTP */
- {BYLOCALE, DEFAULTDICT}, /* DEFISWORD */
- {DEFAULTDICT, NODICT}, /* DEFISLATWORD */
- {BYLOCALE, NODICT}, /* DEFISNONLATINWORD */
- {NODICT, NODICT}, /* URI */
- {NODICT, NODICT} /* FILEPATH */
+ {NODICT, NODICT}, /* not used */
+ {DEFAULTDICT, NODICT}, /* LATWORD */
+ {BYLOCALE, NODICT}, /* NONLATINWORD */
+ {BYLOCALE, DEFAULTDICT}, /* UWORD */
+ {NODICT, NODICT}, /* EMAIL */
+ {NODICT, NODICT}, /* FURL */
+ {NODICT, NODICT}, /* HOST */
+ {NODICT, NODICT}, /* FLOAT */
+ {NODICT, NODICT}, /* FINT */
+ {BYLOCALE, DEFAULTDICT}, /* PARTWORD */
+ {BYLOCALE, NODICT}, /* NONLATINPARTWORD */
+ {DEFAULTDICT, NODICT}, /* LATPARTWORD */
+ {STOPLEXEM, NODICT}, /* SPACE */
+ {STOPLEXEM, NODICT}, /* SYMTAG */
+ {STOPLEXEM, NODICT}, /* HTTP */
+ {BYLOCALE, DEFAULTDICT}, /* DEFISWORD */
+ {DEFAULTDICT, NODICT}, /* DEFISLATWORD */
+ {BYLOCALE, NODICT}, /* DEFISNONLATINWORD */
+ {NODICT, NODICT}, /* URI */
+ {NODICT, NODICT} /* FILEPATH */
};
-static bool inited=false;
+static bool inited = false;
+
+void
+initmorph(void)
+{
+ int i,
+ j,
+ k;
+ MAPDICT *md;
+ bool needinit[lengthof(dicts)];
-void initmorph(void) {
- int i,j,k;
- MAPDICT *md;
- bool needinit[ lengthof(dicts) ];
#ifdef USE_LOCALE
- PG_LocaleCategories lc;
+ PG_LocaleCategories lc;
- int bylocaledict = NODICT;
+ int bylocaledict = NODICT;
#endif
- if ( inited ) return;
- for(i=1; i<lengthof(dicts);i++)
+ if (inited)
+ return;
+ for (i = 1; i < lengthof(dicts); i++)
needinit[i] = false;
-
+
#ifdef USE_LOCALE
PGLC_current(&lc);
- for(i=1;i<lengthof(dicts);i++)
- if (strcmp( dicts[i].localename, lc.lang ) == 0) {
+ for (i = 1; i < lengthof(dicts); i++)
+ if (strcmp(dicts[i].localename, lc.lang) == 0)
+ {
bylocaledict = i;
break;
}
PGLC_free_categories(&lc);
#endif
- for(i=1; i<lengthof(mapdict);i++) {
- k=0;
+ for (i = 1; i < lengthof(mapdict); i++)
+ {
+ k = 0;
md = &mapdict[i];
- for(j=0;j<MAXNDICT;j++) {
- GETDICT(md,k) = GETDICT(md,j);
- if ( GETDICT(md,k) == NODICT ) {
+ for (j = 0; j < MAXNDICT; j++)
+ {
+ GETDICT(md, k) = GETDICT(md, j);
+ if (GETDICT(md, k) == NODICT)
break;
- } else if ( GETDICT(md,k) == BYLOCALE ) {
+ else if (GETDICT(md, k) == BYLOCALE)
+ {
#ifdef USE_LOCALE
- if ( bylocaledict == NODICT )
+ if (bylocaledict == NODICT)
continue;
- GETDICT(md,k) = bylocaledict;
+ GETDICT(md, k) = bylocaledict;
#else
continue;
#endif
}
- if ( GETDICT(md,k) >= (int2)lengthof(dicts) )
+ if (GETDICT(md, k) >= (int2) lengthof(dicts))
continue;
- needinit[ GETDICT(md,k) ] = true;
- k++;
+ needinit[GETDICT(md, k)] = true;
+ k++;
}
- for(;k<MAXNDICT;k++)
- if ( GETDICT(md,k) != STOPLEXEM )
- GETDICT(md,k) = NODICT;
+ for (; k < MAXNDICT; k++)
+ if (GETDICT(md, k) != STOPLEXEM)
+ GETDICT(md, k) = NODICT;
}
- for(i=1; i<lengthof(dicts);i++)
- if ( needinit[i] && dicts[i].init )
- dictobjs[i] = (*(dicts[i].init))();
-
+ for (i = 1; i < lengthof(dicts); i++)
+ if (needinit[i] && dicts[i].init)
+ dictobjs[i] = (*(dicts[i].init)) ();
+
inited = true;
return;
}
-char* lemmatize( char* word, int *len, int type ) {
- int2 nd;
- int i;
- DICT *dict;
+char *
+lemmatize(char *word, int *len, int type)
+{
+ int2 nd;
+ int i;
+ DICT *dict;
- for(i=0;i<MAXNDICT;i++) {
- nd = GETDICT( &mapdict[type], i );
- if ( nd == NODICT ) {
- /* there is no dictionary */
+ for (i = 0; i < MAXNDICT; i++)
+ {
+ nd = GETDICT(&mapdict[type], i);
+ if (nd == NODICT)
+ {
+ /* there is no dictionary */
return word;
- } else if ( nd == STOPLEXEM ) {
+ }
+ else if (nd == STOPLEXEM)
+ {
/* word is stopword */
return NULL;
- } else {
- dict = &dicts[ nd ];
- if ( dict->is_stoplemm && (*(dict->is_stoplemm))(dictobjs[nd], word, *len) )
+ }
+ else
+ {
+ dict = &dicts[nd];
+ if (dict->is_stoplemm && (*(dict->is_stoplemm)) (dictobjs[nd], word, *len))
return NULL;
- if ( dict->lemmatize ) {
- int oldlen = *len;
- char *newword = (*(dict->lemmatize))(dictobjs[nd], word, len);
+ if (dict->lemmatize)
+ {
+ int oldlen = *len;
+ char *newword = (*(dict->lemmatize)) (dictobjs[nd], word, len);
+
/* word is recognized by distionary */
- if ( newword != word || *len != oldlen ) {
- if ( dict->is_stemstoplemm &&
- (*(dict->is_stemstoplemm))(dictobjs[nd], word, *len) ) {
- if ( newword != word && newword)
+ if (newword != word || *len != oldlen)
+ {
+ if (dict->is_stemstoplemm &&
+ (*(dict->is_stemstoplemm)) (dictobjs[nd], word, *len))
+ {
+ if (newword != word && newword)
pfree(newword);
return NULL;
}
@@ -183,6 +209,8 @@ char* lemmatize( char* word, int *len, int type ) {
return word;
}
-bool is_stoptype(int type) {
- return ( GETDICT( &mapdict[type], 0 ) == STOPLEXEM ) ? true : false;
+bool
+is_stoptype(int type)
+{
+ return (GETDICT(&mapdict[type], 0) == STOPLEXEM) ? true : false;
}
diff --git a/contrib/tsearch/morph.h b/contrib/tsearch/morph.h
index 1e8f361ed9f..1c64227fae0 100644
--- a/contrib/tsearch/morph.h
+++ b/contrib/tsearch/morph.h
@@ -1,9 +1,9 @@
#ifndef __MORPH_H__
#define __MORPH_H__
-void initmorph(void);
+void initmorph(void);
-char* lemmatize( char* word, int *len, int type );
+char *lemmatize(char *word, int *len, int type);
-bool is_stoptype(int type);
+bool is_stoptype(int type);
#endif
diff --git a/contrib/tsearch/parser.h b/contrib/tsearch/parser.h
index 780cb587d5b..0e43e675fb2 100644
--- a/contrib/tsearch/parser.h
+++ b/contrib/tsearch/parser.h
@@ -1,11 +1,10 @@
#ifndef __PARSER_H__
#define __PARSER_H__
-char *token;
-int tokenlen;
-int tsearch_yylex(void);
-void start_parse_str(char*, int);
-void start_parse_fh(FILE*, int);
-void end_parse(void);
-
+char *token;
+int tokenlen;
+int tsearch_yylex(void);
+void start_parse_str(char *, int);
+void start_parse_fh(FILE *, int);
+void end_parse(void);
#endif
diff --git a/contrib/tsearch/query.c b/contrib/tsearch/query.c
index 238432ea43b..90687d38cf0 100644
--- a/contrib/tsearch/query.c
+++ b/contrib/tsearch/query.c
@@ -31,112 +31,131 @@
#include "parser.h"
PG_FUNCTION_INFO_V1(mqtxt_in);
-Datum mqtxt_in(PG_FUNCTION_ARGS);
+Datum mqtxt_in(PG_FUNCTION_ARGS);
+
PG_FUNCTION_INFO_V1(qtxt_in);
-Datum qtxt_in(PG_FUNCTION_ARGS);
+Datum qtxt_in(PG_FUNCTION_ARGS);
+
PG_FUNCTION_INFO_V1(qtxt_out);
-Datum qtxt_out(PG_FUNCTION_ARGS);
+Datum qtxt_out(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(execqtxt);
-Datum execqtxt(PG_FUNCTION_ARGS);
+Datum execqtxt(PG_FUNCTION_ARGS);
+
PG_FUNCTION_INFO_V1(rexecqtxt);
-Datum rexecqtxt(PG_FUNCTION_ARGS);
+Datum rexecqtxt(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(querytree);
-Datum querytree(PG_FUNCTION_ARGS);
-
-#define END 0
-#define ERR 1
-#define VAL 2
-#define OPR 3
-#define OPEN 4
-#define CLOSE 5
-#define VALTRUE 6 /* for stop words */
+Datum querytree(PG_FUNCTION_ARGS);
+
+#define END 0
+#define ERR 1
+#define VAL 2
+#define OPR 3
+#define OPEN 4
+#define CLOSE 5
+#define VALTRUE 6 /* for stop words */
#define VALFALSE 7
/* parser's states */
-#define WAITOPERAND 1
+#define WAITOPERAND 1
#define WAITOPERATOR 2
/*
* node of query tree, also used
* for storing polish notation in parser
*/
-typedef struct NODE {
- int4 type;
- int4 val;
- int2 distance;
- int2 length;
- struct NODE *next;
-} NODE;
-
-typedef struct {
- char *buf;
- int4 state;
- int4 count;
- /* reverse polish notation in list (for temprorary usage)*/
- NODE *str;
+typedef struct NODE
+{
+ int4 type;
+ int4 val;
+ int2 distance;
+ int2 length;
+ struct NODE *next;
+} NODE;
+
+typedef struct
+{
+ char *buf;
+ int4 state;
+ int4 count;
+ /* reverse polish notation in list (for temprorary usage) */
+ NODE *str;
/* number in str */
- int4 num;
+ int4 num;
/* user-friendly operand */
- int4 lenop;
- int4 sumlen;
- char *op;
- char *curop;
+ int4 lenop;
+ int4 sumlen;
+ char *op;
+ char *curop;
/* state for value's parser */
- TI_IN_STATE valstate;
-} QPRS_STATE;
+ TI_IN_STATE valstate;
+} QPRS_STATE;
/*
* get token from query string
*/
-static int4
-gettoken_query( QPRS_STATE* state, int4* val, int4* lenval, char** strval ) {
- while(1) {
- switch(state->state) {
- case WAITOPERAND:
- if ( *(state->buf) == '!' ) {
+static int4
+gettoken_query(QPRS_STATE * state, int4 *val, int4 *lenval, char **strval)
+{
+ while (1)
+ {
+ switch (state->state)
+ {
+ case WAITOPERAND:
+ if (*(state->buf) == '!')
+ {
(state->buf)++;
- *val = (int4)'!';
+ *val = (int4) '!';
return OPR;
- } else if ( *(state->buf) == '(' ) {
+ }
+ else if (*(state->buf) == '(')
+ {
state->count++;
(state->buf)++;
return OPEN;
- } else if ( *(state->buf) != ' ' ) {
+ }
+ else if (*(state->buf) != ' ')
+ {
state->valstate.prsbuf = state->buf;
state->state = WAITOPERATOR;
- if ( gettoken_txtidx( &(state->valstate) ) ) {
+ if (gettoken_txtidx(&(state->valstate)))
+ {
*strval = state->valstate.word;
*lenval = state->valstate.curpos - state->valstate.word;
state->buf = state->valstate.prsbuf;
return VAL;
- } else
+ }
+ else
elog(ERROR, "No operand");
}
break;
case WAITOPERATOR:
- if ( *(state->buf) == '&' || *(state->buf) == '|' ) {
+ if (*(state->buf) == '&' || *(state->buf) == '|')
+ {
state->state = WAITOPERAND;
*val = (int4) *(state->buf);
- (state->buf)++;
+ (state->buf)++;
return OPR;
- } else if ( *(state->buf) == ')' ) {
+ }
+ else if (*(state->buf) == ')')
+ {
(state->buf)++;
state->count--;
- return ( state->count <0 ) ? ERR : CLOSE;
- } else if ( *(state->buf) == '\0' ) {
- return ( state->count ) ? ERR : END;
- } else if ( *(state->buf) != ' ' )
+ return (state->count < 0) ? ERR : CLOSE;
+ }
+ else if (*(state->buf) == '\0')
+ return (state->count) ? ERR : END;
+ else if (*(state->buf) != ' ')
return ERR;
break;
- default:
+ default:
return ERR;
break;
- }
- (state->buf)++;
+ }
+ (state->buf)++;
}
return END;
}
@@ -145,16 +164,18 @@ gettoken_query( QPRS_STATE* state, int4* val, int4* lenval, char** strval ) {
* push new one in polish notation reverse view
*/
static void
-pushquery( QPRS_STATE *state, int4 type, int4 val, int4 distance, int4 lenval) {
- NODE *tmp = (NODE*)palloc(sizeof(NODE));
- tmp->type=type;
- tmp->val =val;
- if ( distance>0xffff )
- elog(ERROR,"Value is too big");
- if ( lenval > 0xffff )
- elog(ERROR,"Operand is too long");
- tmp->distance=distance;
- tmp->length=lenval;
+pushquery(QPRS_STATE * state, int4 type, int4 val, int4 distance, int4 lenval)
+{
+ NODE *tmp = (NODE *) palloc(sizeof(NODE));
+
+ tmp->type = type;
+ tmp->val = val;
+ if (distance > 0xffff)
+ elog(ERROR, "Value is too big");
+ if (lenval > 0xffff)
+ elog(ERROR, "Operand is too long");
+ tmp->distance = distance;
+ tmp->length = lenval;
tmp->next = state->str;
state->str = tmp;
state->num++;
@@ -164,20 +185,23 @@ pushquery( QPRS_STATE *state, int4 type, int4 val, int4 distance, int4 lenval) {
* This function is used for query_txt parsing
*/
static void
-pushval_asis(QPRS_STATE *state, int type, char* strval, int lenval) {
- if ( lenval>0xffff )
+pushval_asis(QPRS_STATE * state, int type, char *strval, int lenval)
+{
+ if (lenval > 0xffff)
elog(ERROR, "Word is too long");
- pushquery(state, type, crc32_sz( (uint8*)strval, lenval ),
- state->curop - state->op, lenval);
+ pushquery(state, type, crc32_sz((uint8 *) strval, lenval),
+ state->curop - state->op, lenval);
+
+ while (state->curop - state->op + lenval + 1 >= state->lenop)
+ {
+ int4 tmp = state->curop - state->op;
- while ( state->curop - state->op + lenval + 1 >= state->lenop ) {
- int4 tmp = state->curop - state->op;
state->lenop *= 2;
- state->op = (char*)repalloc( (void*)state->op, state->lenop );
+ state->op = (char *) repalloc((void *) state->op, state->lenop);
state->curop = state->op + tmp;
}
- memcpy( (void*)state->curop, (void*)strval, lenval );
+ memcpy((void *) state->curop, (void *) strval, lenval);
state->curop += lenval;
*(state->curop) = '\0';
state->curop++;
@@ -189,28 +213,34 @@ pushval_asis(QPRS_STATE *state, int type, char* strval, int lenval) {
* This function is used for mquery_txt parsing
*/
static void
-pushval_morph(QPRS_STATE *state, int typeval, char* strval, int lenval) {
- int4 type, lenlemm;
- int4 count = 0;
- char *lemm;
-
- start_parse_str( strval, lenval );
- while( (type=tsearch_yylex()) != 0 ) {
- if ( tokenlen>0xffff ) {
+pushval_morph(QPRS_STATE * state, int typeval, char *strval, int lenval)
+{
+ int4 type,
+ lenlemm;
+ int4 count = 0;
+ char *lemm;
+
+ start_parse_str(strval, lenval);
+ while ((type = tsearch_yylex()) != 0)
+ {
+ if (tokenlen > 0xffff)
+ {
end_parse();
elog(ERROR, "Word is too long");
}
lenlemm = tokenlen;
- lemm = lemmatize( token, &lenlemm, type );
- if ( lemm ) {
- pushval_asis(state,VAL,lemm,lenlemm);
- if ( lemm != token ) pfree(lemm);
- } else {
- pushval_asis(state,VALTRUE,0,0);
+ lemm = lemmatize(token, &lenlemm, type);
+ if (lemm)
+ {
+ pushval_asis(state, VAL, lemm, lenlemm);
+ if (lemm != token)
+ pfree(lemm);
}
- if ( count )
- pushquery(state, OPR, (int4)'&', 0,0);
- count++;
+ else
+ pushval_asis(state, VALTRUE, 0, 0);
+ if (count)
+ pushquery(state, OPR, (int4) '&', 0, 0);
+ count++;
}
end_parse();
}
@@ -219,100 +249,114 @@ pushval_morph(QPRS_STATE *state, int typeval, char* strval, int lenval) {
/*
* make polish notaion of query
*/
-static int4
-makepol(QPRS_STATE *state, void (*pushval)(QPRS_STATE*,int,char*,int)) {
- int4 val,type;
- int4 lenval;
- char *strval;
- int4 stack[STACKDEPTH];
- int4 lenstack=0;
-
- while( (type=gettoken_query(state, &val, &lenval, &strval))!=END ) {
- switch(type) {
+static int4
+makepol(QPRS_STATE * state, void (*pushval) (QPRS_STATE *, int, char *, int))
+{
+ int4 val,
+ type;
+ int4 lenval;
+ char *strval;
+ int4 stack[STACKDEPTH];
+ int4 lenstack = 0;
+
+ while ((type = gettoken_query(state, &val, &lenval, &strval)) != END)
+ {
+ switch (type)
+ {
case VAL:
- (*pushval)(state, VAL, strval, lenval);
- while ( lenstack && (stack[ lenstack-1 ] == (int4)'&' ||
- stack[ lenstack-1 ] == (int4)'!') ) {
+ (*pushval) (state, VAL, strval, lenval);
+ while (lenstack && (stack[lenstack - 1] == (int4) '&' ||
+ stack[lenstack - 1] == (int4) '!'))
+ {
lenstack--;
- pushquery(state, OPR, stack[ lenstack ], 0,0);
+ pushquery(state, OPR, stack[lenstack], 0, 0);
}
break;
case OPR:
- if ( lenstack && val == (int4) '|' ) {
- pushquery(state, OPR, val, 0,0);
- } else {
- if ( lenstack == STACKDEPTH )
- elog(ERROR,"Stack too short");
- stack[ lenstack ] = val;
+ if (lenstack && val == (int4) '|')
+ pushquery(state, OPR, val, 0, 0);
+ else
+ {
+ if (lenstack == STACKDEPTH)
+ elog(ERROR, "Stack too short");
+ stack[lenstack] = val;
lenstack++;
}
break;
case OPEN:
- if ( makepol( state, pushval ) == ERR ) return ERR;
- if ( lenstack && (stack[ lenstack-1 ] == (int4)'&' ||
- stack[ lenstack-1 ] == (int4)'!') ) {
+ if (makepol(state, pushval) == ERR)
+ return ERR;
+ if (lenstack && (stack[lenstack - 1] == (int4) '&' ||
+ stack[lenstack - 1] == (int4) '!'))
+ {
lenstack--;
- pushquery(state, OPR, stack[ lenstack ], 0,0);
+ pushquery(state, OPR, stack[lenstack], 0, 0);
}
break;
case CLOSE:
- while ( lenstack ) {
+ while (lenstack)
+ {
lenstack--;
- pushquery(state, OPR, stack[ lenstack ], 0,0);
+ pushquery(state, OPR, stack[lenstack], 0, 0);
};
return END;
break;
case ERR:
default:
- elog(ERROR,"Syntax error");
+ elog(ERROR, "Syntax error");
return ERR;
-
+
}
}
- while (lenstack) {
+ while (lenstack)
+ {
lenstack--;
- pushquery(state, OPR, stack[ lenstack ],0,0);
+ pushquery(state, OPR, stack[lenstack], 0, 0);
};
return END;
}
-typedef struct {
- WordEntry *arrb;
- WordEntry *arre;
- char *values;
- char *operand;
-} CHKVAL;
+typedef struct
+{
+ WordEntry *arrb;
+ WordEntry *arre;
+ char *values;
+ char *operand;
+} CHKVAL;
/*
* compare 2 string values
*/
static int4
-ValCompare( CHKVAL *chkval, WordEntry *ptr, ITEM *item ) {
- if ( ptr->len == item->length )
+ValCompare(CHKVAL * chkval, WordEntry * ptr, ITEM * item)
+{
+ if (ptr->len == item->length)
return strncmp(
- &(chkval->values[ ptr->pos ]),
- &(chkval->operand[item->distance]),
- item->length );
+ &(chkval->values[ptr->pos]),
+ &(chkval->operand[item->distance]),
+ item->length);
- return ( ptr->len > item->length ) ? 1 : -1;
-}
+ return (ptr->len > item->length) ? 1 : -1;
+}
/*
* is there value 'val' in array or not ?
*/
static bool
-checkcondition_str( void *checkval, ITEM* val ) {
- WordEntry *StopLow = ((CHKVAL*)checkval)->arrb;
- WordEntry *StopHigh = ((CHKVAL*)checkval)->arre;
- WordEntry *StopMiddle;
- int difference;
-
- /* Loop invariant: StopLow <= val < StopHigh */
-
- while (StopLow < StopHigh) {
+checkcondition_str(void *checkval, ITEM * val)
+{
+ WordEntry *StopLow = ((CHKVAL *) checkval)->arrb;
+ WordEntry *StopHigh = ((CHKVAL *) checkval)->arre;
+ WordEntry *StopMiddle;
+ int difference;
+
+ /* Loop invariant: StopLow <= val < StopHigh */
+
+ while (StopLow < StopHigh)
+ {
StopMiddle = StopLow + (StopHigh - StopLow) / 2;
- difference = ValCompare((CHKVAL*)checkval, StopMiddle, val);
- if (difference == 0)
+ difference = ValCompare((CHKVAL *) checkval, StopMiddle, val);
+ if (difference == 0)
return (true);
else if (difference < 0)
StopLow = StopMiddle + 1;
@@ -320,27 +364,33 @@ checkcondition_str( void *checkval, ITEM* val ) {
StopHigh = StopMiddle;
}
- return (false);
+ return (false);
}
/*
* check for boolean condition
*/
bool
-execute( ITEM* curitem, void *checkval, bool calcnot, bool (*chkcond)(void *checkval, ITEM *val )) {
- if ( curitem->type == VAL ) {
- return (*chkcond)( checkval, curitem );
- } else if ( curitem->val == (int4)'!' ) {
- return ( calcnot ) ?
- ( ( execute(curitem + 1, checkval, calcnot, chkcond) ) ? false : true )
- : true;
- } else if ( curitem->val == (int4)'&' ) {
- if ( execute(curitem + curitem->left, checkval, calcnot, chkcond) )
+execute(ITEM * curitem, void *checkval, bool calcnot, bool (*chkcond) (void *checkval, ITEM * val))
+{
+ if (curitem->type == VAL)
+ return (*chkcond) (checkval, curitem);
+ else if (curitem->val == (int4) '!')
+ {
+ return (calcnot) ?
+ ((execute(curitem + 1, checkval, calcnot, chkcond)) ? false : true)
+ : true;
+ }
+ else if (curitem->val == (int4) '&')
+ {
+ if (execute(curitem + curitem->left, checkval, calcnot, chkcond))
return execute(curitem + 1, checkval, calcnot, chkcond);
else
return false;
- } else { /* |-operator */
- if ( execute(curitem + curitem->left, checkval, calcnot, chkcond) )
+ }
+ else
+ { /* |-operator */
+ if (execute(curitem + curitem->left, checkval, calcnot, chkcond))
return true;
else
return execute(curitem + 1, checkval, calcnot, chkcond);
@@ -349,69 +399,79 @@ execute( ITEM* curitem, void *checkval, bool calcnot, bool (*chkcond)(void *chec
}
/*
- * boolean operations
+ * boolean operations
*/
Datum
-rexecqtxt(PG_FUNCTION_ARGS) {
+rexecqtxt(PG_FUNCTION_ARGS)
+{
return DirectFunctionCall2(
- execqtxt,
- PG_GETARG_DATUM(1),
- PG_GETARG_DATUM(0)
+ execqtxt,
+ PG_GETARG_DATUM(1),
+ PG_GETARG_DATUM(0)
);
}
Datum
-execqtxt(PG_FUNCTION_ARGS) {
- txtidx *val = ( txtidx * )DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
- QUERYTYPE *query = ( QUERYTYPE * )DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
- CHKVAL chkval;
- bool result;
-
- if ( ! val->size ) {
- PG_FREE_IF_COPY(val,0);
- PG_FREE_IF_COPY(query,1);
- PG_RETURN_BOOL( false );
+execqtxt(PG_FUNCTION_ARGS)
+{
+ txtidx *val = (txtidx *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+ QUERYTYPE *query = (QUERYTYPE *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(1)));
+ CHKVAL chkval;
+ bool result;
+
+ if (!val->size)
+ {
+ PG_FREE_IF_COPY(val, 0);
+ PG_FREE_IF_COPY(query, 1);
+ PG_RETURN_BOOL(false);
}
chkval.arrb = ARRPTR(val);
chkval.arre = chkval.arrb + val->size;
chkval.values = STRPTR(val);
- chkval.operand = GETOPERAND( query );
- result = execute(
- GETQUERY(query),
- &chkval,
- true,
- checkcondition_str
- );
-
- PG_FREE_IF_COPY(val,0);
- PG_FREE_IF_COPY(query,1);
- PG_RETURN_BOOL( result );
+ chkval.operand = GETOPERAND(query);
+ result = execute(
+ GETQUERY(query),
+ &chkval,
+ true,
+ checkcondition_str
+ );
+
+ PG_FREE_IF_COPY(val, 0);
+ PG_FREE_IF_COPY(query, 1);
+ PG_RETURN_BOOL(result);
}
/*
* find left operand in polish notation view
*/
static void
-findoprnd( ITEM *ptr, int4 *pos ) {
+findoprnd(ITEM * ptr, int4 *pos)
+{
#ifdef BS_DEBUG
- elog(NOTICE, ( ptr[*pos].type == OPR ) ?
- "%d %c" : "%d %d ", *pos, ptr[*pos].val );
+ elog(NOTICE, (ptr[*pos].type == OPR) ?
+ "%d %c" : "%d %d ", *pos, ptr[*pos].val);
#endif
- if ( ptr[*pos].type == VAL || ptr[*pos].type == VALTRUE ) {
+ if (ptr[*pos].type == VAL || ptr[*pos].type == VALTRUE)
+ {
ptr[*pos].left = 0;
(*pos)++;
- } else if ( ptr[*pos].val == (int4)'!' ) {
+ }
+ else if (ptr[*pos].val == (int4) '!')
+ {
ptr[*pos].left = 1;
(*pos)++;
- findoprnd( ptr, pos );
- } else {
- ITEM *curitem = &ptr[*pos];
- int4 tmp = *pos;
+ findoprnd(ptr, pos);
+ }
+ else
+ {
+ ITEM *curitem = &ptr[*pos];
+ int4 tmp = *pos;
+
(*pos)++;
- findoprnd(ptr,pos);
+ findoprnd(ptr, pos);
curitem->left = *pos - tmp;
- findoprnd(ptr,pos);
+ findoprnd(ptr, pos);
}
}
@@ -419,16 +479,20 @@ findoprnd( ITEM *ptr, int4 *pos ) {
/*
* input
*/
-static QUERYTYPE *queryin(char *buf, void (*pushval)(QPRS_STATE*,int,char*,int) ) {
- QPRS_STATE state;
- int4 i;
- QUERYTYPE *query;
- int4 commonlen;
- ITEM *ptr;
- NODE *tmp;
- int4 pos=0;
+static QUERYTYPE *
+queryin(char *buf, void (*pushval) (QPRS_STATE *, int, char *, int))
+{
+ QPRS_STATE state;
+ int4 i;
+ QUERYTYPE *query;
+ int4 commonlen;
+ ITEM *ptr;
+ NODE *tmp;
+ int4 pos = 0;
+
#ifdef BS_DEBUG
- char pbuf[16384],*cur;
+ char pbuf[16384],
+ *cur;
#endif
/* init state */
@@ -436,62 +500,64 @@ static QUERYTYPE *queryin(char *buf, void (*pushval)(QPRS_STATE*,int,char*,int)
state.state = WAITOPERAND;
state.count = 0;
state.num = 0;
- state.str=NULL;
+ state.str = NULL;
/* init value parser's state */
state.valstate.oprisdelim = true;
- state.valstate.len=32;
- state.valstate.word = (char*)palloc( state.valstate.len );
+ state.valstate.len = 32;
+ state.valstate.word = (char *) palloc(state.valstate.len);
/* init list of operand */
- state.sumlen=0;
- state.lenop=64;
- state.curop = state.op = (char*)palloc( state.lenop );
+ state.sumlen = 0;
+ state.lenop = 64;
+ state.curop = state.op = (char *) palloc(state.lenop);
*(state.curop) = '\0';
-
+
/* parse query & make polish notation (postfix, but in reverse order) */
- makepol( &state, pushval );
- pfree( state.valstate.word );
- if (!state.num)
- elog( ERROR,"Empty query");
+ makepol(&state, pushval);
+ pfree(state.valstate.word);
+ if (!state.num)
+ elog(ERROR, "Empty query");
/* make finish struct */
commonlen = COMPUTESIZE(state.num, state.sumlen);
- query = (QUERYTYPE*) palloc( commonlen );
+ query = (QUERYTYPE *) palloc(commonlen);
query->len = commonlen;
query->size = state.num;
ptr = GETQUERY(query);
/* set item in polish notation */
- for(i=0; i<state.num; i++ ) {
- ptr[i].type = state.str->type;
+ for (i = 0; i < state.num; i++)
+ {
+ ptr[i].type = state.str->type;
ptr[i].val = state.str->val;
- ptr[i].distance = state.str->distance;
+ ptr[i].distance = state.str->distance;
ptr[i].length = state.str->length;
tmp = state.str->next;
- pfree( state.str );
+ pfree(state.str);
state.str = tmp;
}
- /* set user friendly-operand view */
- memcpy( (void*)GETOPERAND(query), (void*)state.op, state.sumlen );
- pfree( state.op );
+ /* set user friendly-operand view */
+ memcpy((void *) GETOPERAND(query), (void *) state.op, state.sumlen);
+ pfree(state.op);
- /* set left operand's position for every operator */
+ /* set left operand's position for every operator */
pos = 0;
- findoprnd( ptr, &pos );
+ findoprnd(ptr, &pos);
#ifdef BS_DEBUG
cur = pbuf;
*cur = '\0';
- for( i=0;i<query->size;i++ ) {
- if ( ptr[i].type == OPR )
+ for (i = 0; i < query->size; i++)
+ {
+ if (ptr[i].type == OPR)
sprintf(cur, "%c(%d) ", ptr[i].val, ptr[i].left);
- else
- sprintf(cur, "%d(%s) ", ptr[i].val, GETOPERAND(query) + ptr[i].distance );
- cur = strchr(cur,'\0');
+ else
+ sprintf(cur, "%d(%s) ", ptr[i].val, GETOPERAND(query) + ptr[i].distance);
+ cur = strchr(cur, '\0');
}
- elog(NOTICE,"POR: %s", pbuf);
+ elog(NOTICE, "POR: %s", pbuf);
#endif
return query;
@@ -501,59 +567,66 @@ static QUERYTYPE *queryin(char *buf, void (*pushval)(QPRS_STATE*,int,char*,int)
* in without morphology
*/
Datum
-qtxt_in(PG_FUNCTION_ARGS) {
- PG_RETURN_POINTER( queryin((char*)PG_GETARG_POINTER(0),pushval_asis) );
+qtxt_in(PG_FUNCTION_ARGS)
+{
+ PG_RETURN_POINTER(queryin((char *) PG_GETARG_POINTER(0), pushval_asis));
}
/*
* in with morphology
*/
Datum
-mqtxt_in(PG_FUNCTION_ARGS) {
- QUERYTYPE *query;
- ITEM* res;
- int4 len;
-#ifdef BS_DEBUG
- ITEM *ptr;
- int4 i;
- char pbuf[16384],*cur;
+mqtxt_in(PG_FUNCTION_ARGS)
+{
+ QUERYTYPE *query;
+ ITEM *res;
+ int4 len;
+
+#ifdef BS_DEBUG
+ ITEM *ptr;
+ int4 i;
+ char pbuf[16384],
+ *cur;
#endif
initmorph();
- query = queryin((char*)PG_GETARG_POINTER(0),pushval_morph);
- res = clean_fakeval( GETQUERY(query), &len );
- if ( ! res ) {
+ query = queryin((char *) PG_GETARG_POINTER(0), pushval_morph);
+ res = clean_fakeval(GETQUERY(query), &len);
+ if (!res)
+ {
pfree(query);
PG_RETURN_NULL();
}
- memcpy( (void*)GETQUERY(query), (void*)res, len*sizeof(ITEM) );
+ memcpy((void *) GETQUERY(query), (void *) res, len * sizeof(ITEM));
#ifdef BS_DEBUG
cur = pbuf;
*cur = '\0';
ptr = GETQUERY(query);
- for( i=0;i<len;i++ ) {
- if ( ptr[i].type == OPR )
+ for (i = 0; i < len; i++)
+ {
+ if (ptr[i].type == OPR)
sprintf(cur, "%c(%d) ", ptr[i].val, ptr[i].left);
- else
- sprintf(cur, "%d(%s) ", ptr[i].val, GETOPERAND(query) + ptr[i].distance );
- cur = strchr(cur,'\0');
+ else
+ sprintf(cur, "%d(%s) ", ptr[i].val, GETOPERAND(query) + ptr[i].distance);
+ cur = strchr(cur, '\0');
}
- elog(NOTICE,"POR: %s", pbuf);
+ elog(NOTICE, "POR: %s", pbuf);
#endif
pfree(res);
- PG_RETURN_POINTER( query );
+ PG_RETURN_POINTER(query);
}
/*
* out function
*/
-typedef struct {
- ITEM *curpol;
- char *buf;
- char *cur;
- char *op;
- int4 buflen;
-} INFIX;
+typedef struct
+{
+ ITEM *curpol;
+ char *buf;
+ char *cur;
+ char *op;
+ int4 buflen;
+} INFIX;
#define RESIZEBUF(inf,addsize) \
while( ( inf->cur - inf->buf ) + addsize + 1 >= inf->buflen ) \
@@ -565,98 +638,117 @@ while( ( inf->cur - inf->buf ) + addsize + 1 >= inf->buflen ) \
}
/*
- * recursive walk on tree and print it in
+ * recursive walk on tree and print it in
* infix (human-readable) view
*/
static void
-infix(INFIX *in, bool first) {
- if ( in->curpol->type == VAL ) {
- char *op = in->op + in->curpol->distance;
- RESIZEBUF(in, in->curpol->length*2 + 2);
- *(in->cur) = '\''; in->cur++;
- while( *op ) {
- if ( *op == '\'' ) {
- *(in->cur) = '\\'; in->cur++;
+infix(INFIX * in, bool first)
+{
+ if (in->curpol->type == VAL)
+ {
+ char *op = in->op + in->curpol->distance;
+
+ RESIZEBUF(in, in->curpol->length * 2 + 2);
+ *(in->cur) = '\'';
+ in->cur++;
+ while (*op)
+ {
+ if (*op == '\'')
+ {
+ *(in->cur) = '\\';
+ in->cur++;
}
*(in->cur) = *op;
- op++; in->cur++;
- }
- *(in->cur) = '\''; in->cur++;
+ op++;
+ in->cur++;
+ }
+ *(in->cur) = '\'';
+ in->cur++;
*(in->cur) = '\0';
in->curpol++;
- } else if ( in->curpol->val == (int4)'!' ) {
- bool isopr = false;
+ }
+ else if (in->curpol->val == (int4) '!')
+ {
+ bool isopr = false;
+
RESIZEBUF(in, 1);
*(in->cur) = '!';
in->cur++;
*(in->cur) = '\0';
in->curpol++;
- if ( in->curpol->type == OPR ) {
+ if (in->curpol->type == OPR)
+ {
isopr = true;
RESIZEBUF(in, 2);
sprintf(in->cur, "( ");
- in->cur = strchr( in->cur, '\0' );
- }
- infix( in, isopr );
- if ( isopr ) {
+ in->cur = strchr(in->cur, '\0');
+ }
+ infix(in, isopr);
+ if (isopr)
+ {
RESIZEBUF(in, 2);
sprintf(in->cur, " )");
- in->cur = strchr( in->cur, '\0' );
- }
- } else {
- int4 op = in->curpol->val;
- INFIX nrm;
-
+ in->cur = strchr(in->cur, '\0');
+ }
+ }
+ else
+ {
+ int4 op = in->curpol->val;
+ INFIX nrm;
+
in->curpol++;
- if ( op == (int4)'|' && ! first) {
+ if (op == (int4) '|' && !first)
+ {
RESIZEBUF(in, 2);
sprintf(in->cur, "( ");
- in->cur = strchr( in->cur, '\0' );
+ in->cur = strchr(in->cur, '\0');
}
nrm.curpol = in->curpol;
nrm.op = in->op;
nrm.buflen = 16;
- nrm.cur = nrm.buf = (char*)palloc( sizeof(char) * nrm.buflen );
-
+ nrm.cur = nrm.buf = (char *) palloc(sizeof(char) * nrm.buflen);
+
/* get right operand */
- infix( &nrm, false );
-
+ infix(&nrm, false);
+
/* get & print left operand */
in->curpol = nrm.curpol;
- infix( in, false );
+ infix(in, false);
- /* print operator & right operand*/
- RESIZEBUF(in, 3 + (nrm.cur - nrm.buf) );
+ /* print operator & right operand */
+ RESIZEBUF(in, 3 + (nrm.cur - nrm.buf));
sprintf(in->cur, " %c %s", op, nrm.buf);
- in->cur = strchr( in->cur, '\0' );
- pfree( nrm.buf );
+ in->cur = strchr(in->cur, '\0');
+ pfree(nrm.buf);
- if ( op == (int4)'|' && ! first) {
+ if (op == (int4) '|' && !first)
+ {
RESIZEBUF(in, 2);
sprintf(in->cur, " )");
- in->cur = strchr( in->cur, '\0' );
+ in->cur = strchr(in->cur, '\0');
}
}
}
Datum
-qtxt_out(PG_FUNCTION_ARGS) {
- QUERYTYPE *query = (QUERYTYPE*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
- INFIX nrm;
+qtxt_out(PG_FUNCTION_ARGS)
+{
+ QUERYTYPE *query = (QUERYTYPE *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+ INFIX nrm;
- if ( query->size == 0 )
- elog(ERROR,"Empty");
+ if (query->size == 0)
+ elog(ERROR, "Empty");
nrm.curpol = GETQUERY(query);
nrm.buflen = 32;
- nrm.cur = nrm.buf = (char*)palloc( sizeof(char) * nrm.buflen );
+ nrm.cur = nrm.buf = (char *) palloc(sizeof(char) * nrm.buflen);
*(nrm.cur) = '\0';
nrm.op = GETOPERAND(query);
- infix( &nrm, true );
-
- PG_FREE_IF_COPY(query,0);
- PG_RETURN_POINTER( nrm.buf );
+ infix(&nrm, true);
+
+ PG_FREE_IF_COPY(query, 0);
+ PG_RETURN_POINTER(nrm.buf);
}
/*
@@ -664,38 +756,42 @@ qtxt_out(PG_FUNCTION_ARGS) {
* which will be executed in non-leaf pages in index
*/
Datum
-querytree(PG_FUNCTION_ARGS) {
- QUERYTYPE *query = (QUERYTYPE*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
- INFIX nrm;
- text *res;
- ITEM *q;
- int4 len;
+querytree(PG_FUNCTION_ARGS)
+{
+ QUERYTYPE *query = (QUERYTYPE *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+ INFIX nrm;
+ text *res;
+ ITEM *q;
+ int4 len;
- if ( query->size == 0 )
- elog(ERROR,"Empty");
+ if (query->size == 0)
+ elog(ERROR, "Empty");
q = clean_NOT(GETQUERY(query), &len);
- if ( ! q ) {
- res = (text*) palloc( 1 + VARHDRSZ );
+ if (!q)
+ {
+ res = (text *) palloc(1 + VARHDRSZ);
VARATT_SIZEP(res) = 1 + VARHDRSZ;
- *((char*)VARDATA(res)) = 'T';
- } else {
+ *((char *) VARDATA(res)) = 'T';
+ }
+ else
+ {
nrm.curpol = q;
nrm.buflen = 32;
- nrm.cur = nrm.buf = (char*)palloc( sizeof(char) * nrm.buflen );
+ nrm.cur = nrm.buf = (char *) palloc(sizeof(char) * nrm.buflen);
*(nrm.cur) = '\0';
nrm.op = GETOPERAND(query);
- infix( &nrm, true );
+ infix(&nrm, true);
- res = (text*) palloc( nrm.cur-nrm.buf + VARHDRSZ );
- VARATT_SIZEP(res) = nrm.cur-nrm.buf + VARHDRSZ;
- strncpy( VARDATA(res), nrm.buf, nrm.cur-nrm.buf );
+ res = (text *) palloc(nrm.cur - nrm.buf + VARHDRSZ);
+ VARATT_SIZEP(res) = nrm.cur - nrm.buf + VARHDRSZ;
+ strncpy(VARDATA(res), nrm.buf, nrm.cur - nrm.buf);
pfree(q);
}
- PG_FREE_IF_COPY(query,0);
+ PG_FREE_IF_COPY(query, 0);
- PG_RETURN_POINTER( res );
+ PG_RETURN_POINTER(res);
}
diff --git a/contrib/tsearch/query.h b/contrib/tsearch/query.h
index 96117e78c88..a5f8d7deb8a 100644
--- a/contrib/tsearch/query.h
+++ b/contrib/tsearch/query.h
@@ -9,41 +9,43 @@
* item in polish notation with back link
* to left operand
*/
-typedef struct ITEM {
- int2 type;
- int2 left;
- int4 val;
+typedef struct ITEM
+{
+ int2 type;
+ int2 left;
+ int4 val;
/* user-friendly value */
- uint16 distance;
- uint16 length;
-} ITEM;
+ uint16 distance;
+ uint16 length;
+} ITEM;
/*
*Storage:
* (len)(size)(array of ITEM)(array of operand in user-friendly form)
*/
-typedef struct {
- int4 len;
- int4 size;
- char data[1];
-} QUERYTYPE;
+typedef struct
+{
+ int4 len;
+ int4 size;
+ char data[1];
+} QUERYTYPE;
#define HDRSIZEQT ( 2*sizeof(int4) )
#define COMPUTESIZE(size,lenofoperand) ( HDRSIZEQT + size * sizeof(ITEM) + lenofoperand )
#define GETQUERY(x) (ITEM*)( (char*)(x)+HDRSIZEQT )
-#define GETOPERAND(x) ( (char*)GETQUERY(x) + ((QUERYTYPE*)x)->size * sizeof(ITEM) )
+#define GETOPERAND(x) ( (char*)GETQUERY(x) + ((QUERYTYPE*)x)->size * sizeof(ITEM) )
#define ISOPERATOR(x) ( (x)=='!' || (x)=='&' || (x)=='|' || (x)=='(' || (x)==')' )
-#define END 0
-#define ERR 1
-#define VAL 2
-#define OPR 3
-#define OPEN 4
-#define CLOSE 5
-#define VALTRUE 6 /* for stop words */
-#define VALFALSE 7
+#define END 0
+#define ERR 1
+#define VAL 2
+#define OPR 3
+#define OPEN 4
+#define CLOSE 5
+#define VALTRUE 6 /* for stop words */
+#define VALFALSE 7
-bool execute( ITEM* curitem, void *checkval,
- bool calcnot, bool (*chkcond)(void *checkval, ITEM* val ));
+bool execute(ITEM * curitem, void *checkval,
+ bool calcnot, bool (*chkcond) (void *checkval, ITEM * val));
#endif
diff --git a/contrib/tsearch/rewrite.c b/contrib/tsearch/rewrite.c
index 590b15e7cab..9ad7a0a86af 100644
--- a/contrib/tsearch/rewrite.c
+++ b/contrib/tsearch/rewrite.c
@@ -19,52 +19,63 @@
#include "query.h"
#include "rewrite.h"
-typedef struct NODE {
- struct NODE *left;
+typedef struct NODE
+{
+ struct NODE *left;
struct NODE *right;
- ITEM* valnode;
-} NODE;
+ ITEM *valnode;
+} NODE;
/*
* make query tree from plain view of query
*/
-static NODE*
-maketree(ITEM *in) {
- NODE *node = (NODE*)palloc(sizeof(NODE));
+static NODE *
+maketree(ITEM * in)
+{
+ NODE *node = (NODE *) palloc(sizeof(NODE));
+
node->valnode = in;
node->right = node->left = NULL;
- if ( in->type == OPR ) {
- node->right = maketree( in + 1 );
- if ( in->val != (int4)'!' )
- node->left = maketree( in + in->left );
+ if (in->type == OPR)
+ {
+ node->right = maketree(in + 1);
+ if (in->val != (int4) '!')
+ node->left = maketree(in + in->left);
}
return node;
}
-typedef struct {
- ITEM* ptr;
- int4 len;
- int4 cur;
-} PLAINTREE;
+typedef struct
+{
+ ITEM *ptr;
+ int4 len;
+ int4 cur;
+} PLAINTREE;
static void
-plainnode(PLAINTREE *state, NODE* node) {
- if ( state->cur == state->len ) {
+plainnode(PLAINTREE * state, NODE * node)
+{
+ if (state->cur == state->len)
+ {
state->len *= 2;
- state->ptr=(ITEM*)repalloc( (void*)state->ptr, state->len*sizeof(ITEM) );
+ state->ptr = (ITEM *) repalloc((void *) state->ptr, state->len * sizeof(ITEM));
}
- memcpy( (void*)&(state->ptr[state->cur]), (void*)node->valnode, sizeof(ITEM) );
- if ( node->valnode->type == VAL ) {
+ memcpy((void *) &(state->ptr[state->cur]), (void *) node->valnode, sizeof(ITEM));
+ if (node->valnode->type == VAL)
state->cur++;
- } else if ( node->valnode->val == (int4)'!' ) {
- state->ptr[state->cur].left=1;
+ else if (node->valnode->val == (int4) '!')
+ {
+ state->ptr[state->cur].left = 1;
state->cur++;
plainnode(state, node->right);
- } else {
- int4 cur = state->cur;
+ }
+ else
+ {
+ int4 cur = state->cur;
+
state->cur++;
plainnode(state, node->right);
- state->ptr[cur].left = state->cur - cur;
+ state->ptr[cur].left = state->cur - cur;
plainnode(state, node->left);
}
pfree(node);
@@ -73,75 +84,96 @@ plainnode(PLAINTREE *state, NODE* node) {
/*
* make plain view of tree from 'normal' view of tree
*/
-static ITEM*
-plaintree(NODE *root, int4 *len) {
+static ITEM *
+plaintree(NODE * root, int4 *len)
+{
PLAINTREE pl;
- pl.cur=0;
- pl.len=16;
- if ( root && (root->valnode->type == VAL || root->valnode->type == OPR) ) {
- pl.ptr = (ITEM*)palloc( pl.len*sizeof(ITEM) );
+
+ pl.cur = 0;
+ pl.len = 16;
+ if (root && (root->valnode->type == VAL || root->valnode->type == OPR))
+ {
+ pl.ptr = (ITEM *) palloc(pl.len * sizeof(ITEM));
plainnode(&pl, root);
- } else {
- pl.ptr = NULL;
}
+ else
+ pl.ptr = NULL;
*len = pl.cur;
- return pl.ptr;
+ return pl.ptr;
}
static void
-freetree(NODE *node) {
- if ( !node ) return;
- if ( node->left ) freetree(node->left);
- if ( node->right ) freetree(node->right);
- pfree( node );
+freetree(NODE * node)
+{
+ if (!node)
+ return;
+ if (node->left)
+ freetree(node->left);
+ if (node->right)
+ freetree(node->right);
+ pfree(node);
}
/*
* clean tree for ! operator.
- * It's usefull for debug, but in
+ * It's usefull for debug, but in
* other case, such view is used with search in index.
* Operator ! always return TRUE
*/
-static NODE*
-clean_NOT_intree( NODE* node ) {
- if ( node->valnode->type == VAL )
+static NODE *
+clean_NOT_intree(NODE * node)
+{
+ if (node->valnode->type == VAL)
return node;
- if ( node->valnode->val == (int4)'!' ) {
+ if (node->valnode->val == (int4) '!')
+ {
freetree(node);
return NULL;
}
/* operator & or | */
- if ( node->valnode->val == (int4)'|' ) {
- if ( (node->left=clean_NOT_intree(node->left)) == NULL ||
- (node->right=clean_NOT_intree(node->right)) == NULL ) {
+ if (node->valnode->val == (int4) '|')
+ {
+ if ((node->left = clean_NOT_intree(node->left)) == NULL ||
+ (node->right = clean_NOT_intree(node->right)) == NULL)
+ {
freetree(node);
return NULL;
}
- } else {
- NODE *res = node;
- node->left=clean_NOT_intree(node->left);
- node->right=clean_NOT_intree(node->right);
- if ( node->left == NULL && node->right == NULL ) {
+ }
+ else
+ {
+ NODE *res = node;
+
+ node->left = clean_NOT_intree(node->left);
+ node->right = clean_NOT_intree(node->right);
+ if (node->left == NULL && node->right == NULL)
+ {
pfree(node);
res = NULL;
- } else if ( node->left == NULL ) {
+ }
+ else if (node->left == NULL)
+ {
res = node->right;
pfree(node);
- } else if ( node->right == NULL ) {
+ }
+ else if (node->right == NULL)
+ {
res = node->left;
pfree(node);
- }
+ }
return res;
}
- return node;
+ return node;
}
-ITEM*
-clean_NOT(ITEM* ptr, int4 *len) {
- NODE *root = maketree( ptr );
- return plaintree(clean_NOT_intree(root), len);
+ITEM *
+clean_NOT(ITEM * ptr, int4 *len)
+{
+ NODE *root = maketree(ptr);
+
+ return plaintree(clean_NOT_intree(root), len);
}
#define V_UNKNOWN 0
@@ -149,86 +181,112 @@ clean_NOT(ITEM* ptr, int4 *len) {
#define V_FALSE 2
/*
- * Clean query tree from values which is always in
+ * Clean query tree from values which is always in
* text (stopword)
- */
-static NODE*
-clean_fakeval_intree( NODE* node, char *result ) {
- char lresult = V_UNKNOWN, rresult = V_UNKNOWN;
- if ( node->valnode->type == VAL )
+ */
+static NODE *
+clean_fakeval_intree(NODE * node, char *result)
+{
+ char lresult = V_UNKNOWN,
+ rresult = V_UNKNOWN;
+
+ if (node->valnode->type == VAL)
return node;
- else if ( node->valnode->type == VALTRUE ) {
- pfree( node );
+ else if (node->valnode->type == VALTRUE)
+ {
+ pfree(node);
*result = V_TRUE;
return NULL;
- }
-
+ }
+
- if ( node->valnode->val == (int4)'!' ) {
- node->right = clean_fakeval_intree( node->right, &rresult );
- if ( ! node->right ) {
- *result = ( rresult == V_TRUE ) ? V_FALSE : V_TRUE;
+ if (node->valnode->val == (int4) '!')
+ {
+ node->right = clean_fakeval_intree(node->right, &rresult);
+ if (!node->right)
+ {
+ *result = (rresult == V_TRUE) ? V_FALSE : V_TRUE;
freetree(node);
return NULL;
}
- } else if ( node->valnode->val == (int4)'|' ) {
- NODE *res = node;
- node->left =clean_fakeval_intree(node->left, &lresult);
- node->right=clean_fakeval_intree(node->right,&rresult);
- if ( lresult == V_TRUE || rresult == V_TRUE ) {
+ }
+ else if (node->valnode->val == (int4) '|')
+ {
+ NODE *res = node;
+
+ node->left = clean_fakeval_intree(node->left, &lresult);
+ node->right = clean_fakeval_intree(node->right, &rresult);
+ if (lresult == V_TRUE || rresult == V_TRUE)
+ {
freetree(node);
- *result=V_TRUE;
+ *result = V_TRUE;
return NULL;
- } else if ( lresult == V_FALSE && rresult == V_FALSE ) {
+ }
+ else if (lresult == V_FALSE && rresult == V_FALSE)
+ {
freetree(node);
- *result=V_FALSE;
+ *result = V_FALSE;
return NULL;
- } else if ( lresult == V_FALSE ) {
+ }
+ else if (lresult == V_FALSE)
+ {
res = node->right;
pfree(node);
- } else if ( rresult == V_FALSE ) {
+ }
+ else if (rresult == V_FALSE)
+ {
res = node->left;
pfree(node);
}
- return res;
- } else {
- NODE *res = node;
- node->left =clean_fakeval_intree(node->left, &lresult);
- node->right=clean_fakeval_intree(node->right,&rresult);
- if ( lresult == V_FALSE || rresult == V_FALSE ) {
+ return res;
+ }
+ else
+ {
+ NODE *res = node;
+
+ node->left = clean_fakeval_intree(node->left, &lresult);
+ node->right = clean_fakeval_intree(node->right, &rresult);
+ if (lresult == V_FALSE || rresult == V_FALSE)
+ {
freetree(node);
- *result=V_FALSE;
+ *result = V_FALSE;
return NULL;
- } else if ( lresult == V_TRUE && rresult == V_TRUE ) {
+ }
+ else if (lresult == V_TRUE && rresult == V_TRUE)
+ {
freetree(node);
- *result=V_TRUE;
+ *result = V_TRUE;
return NULL;
- } else if ( lresult == V_TRUE ) {
+ }
+ else if (lresult == V_TRUE)
+ {
res = node->right;
pfree(node);
- } else if ( rresult == V_TRUE ) {
+ }
+ else if (rresult == V_TRUE)
+ {
res = node->left;
pfree(node);
}
- return res;
+ return res;
}
- return node;
+ return node;
}
-ITEM*
-clean_fakeval(ITEM* ptr, int4 *len) {
- NODE *root = maketree( ptr );
- char result = V_UNKNOWN;
- NODE *resroot;
-
+ITEM *
+clean_fakeval(ITEM * ptr, int4 *len)
+{
+ NODE *root = maketree(ptr);
+ char result = V_UNKNOWN;
+ NODE *resroot;
+
resroot = clean_fakeval_intree(root, &result);
- if ( result != V_UNKNOWN ) {
- elog(ERROR,"Your query contained only stopword(s), ignored");
+ if (result != V_UNKNOWN)
+ {
+ elog(ERROR, "Your query contained only stopword(s), ignored");
*len = 0;
return NULL;
}
-
- return plaintree(resroot, len);
-}
-
+ return plaintree(resroot, len);
+}
diff --git a/contrib/tsearch/rewrite.h b/contrib/tsearch/rewrite.h
index 863ff9b672a..c53e1c6daca 100644
--- a/contrib/tsearch/rewrite.h
+++ b/contrib/tsearch/rewrite.h
@@ -1,7 +1,6 @@
#ifndef __REWRITE_H__
#define __REWRITE_H__
-ITEM* clean_NOT(ITEM* ptr, int4 *len);
-ITEM* clean_fakeval(ITEM* ptr, int4 *len);
-
+ITEM *clean_NOT(ITEM * ptr, int4 *len);
+ITEM *clean_fakeval(ITEM * ptr, int4 *len);
#endif
diff --git a/contrib/tsearch/txtidx.c b/contrib/tsearch/txtidx.c
index e1abd54d3bd..6e1fe0edaeb 100644
--- a/contrib/tsearch/txtidx.c
+++ b/contrib/tsearch/txtidx.c
@@ -17,9 +17,9 @@
#include "utils/pg_locale.h"
-#include <ctype.h> /* tolower */
-#include "txtidx.h"
-#include "query.h"
+#include <ctype.h> /* tolower */
+#include "txtidx.h"
+#include "query.h"
#include "deflex.h"
#include "parser.h"
@@ -27,51 +27,58 @@
#include "morph.h"
PG_FUNCTION_INFO_V1(txtidx_in);
-Datum txtidx_in(PG_FUNCTION_ARGS);
+Datum txtidx_in(PG_FUNCTION_ARGS);
+
PG_FUNCTION_INFO_V1(txtidx_out);
-Datum txtidx_out(PG_FUNCTION_ARGS);
+Datum txtidx_out(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(txt2txtidx);
-Datum txt2txtidx(PG_FUNCTION_ARGS);
+Datum txt2txtidx(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(tsearch);
-Datum tsearch(PG_FUNCTION_ARGS);
+Datum tsearch(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(txtidxsize);
-Datum txtidxsize(PG_FUNCTION_ARGS);
+Datum txtidxsize(PG_FUNCTION_ARGS);
/*
* in/out text index type
*/
static char *BufferStr;
static int
-compareentry( const void * a, const void * b ) {
- if ( ((WordEntry*)a)->len == ((WordEntry*)b)->len ) {
- return strncmp(
- &BufferStr[((WordEntry*)a)->pos],
- &BufferStr[((WordEntry*)b)->pos],
- ((WordEntry*)b)->len );
+compareentry(const void *a, const void *b)
+{
+ if (((WordEntry *) a)->len == ((WordEntry *) b)->len)
+ {
+ return strncmp(
+ &BufferStr[((WordEntry *) a)->pos],
+ &BufferStr[((WordEntry *) b)->pos],
+ ((WordEntry *) b)->len);
}
- return ( ((WordEntry*)a)->len > ((WordEntry*)b)->len ) ? 1 : -1;
+ return (((WordEntry *) a)->len > ((WordEntry *) b)->len) ? 1 : -1;
}
static int
-uniqueentry( WordEntry* a, int4 l, char *buf, int4 *outbuflen ) {
- WordEntry *ptr, *res;
+uniqueentry(WordEntry * a, int4 l, char *buf, int4 *outbuflen)
+{
+ WordEntry *ptr,
+ *res;
res = a;
*outbuflen = res->len;
- if ( l == 1 )
+ if (l == 1)
return l;
- ptr = a+1;
+ ptr = a + 1;
BufferStr = buf;
- qsort((void*)a, l, sizeof(int4), compareentry );
+ qsort((void *) a, l, sizeof(int4), compareentry);
*outbuflen = res->len;
- while (ptr - a < l) {
- if ( ! (ptr->len == res->len &&
- strncmp(&buf[ ptr->pos ], &buf[ res->pos ],res->len) == 0 ) ) {
+ while (ptr - a < l)
+ {
+ if (!(ptr->len == res->len &&
+ strncmp(&buf[ptr->pos], &buf[res->pos], res->len) == 0))
+ {
res++;
res->len = ptr->len;
res->pos = ptr->pos;
@@ -81,10 +88,10 @@ uniqueentry( WordEntry* a, int4 l, char *buf, int4 *outbuflen ) {
ptr++;
}
return res + 1 - a;
-}
+}
#define WAITWORD 1
-#define WAITENDWORD 2
+#define WAITENDWORD 2
#define WAITNEXTCHAR 3
#define WAITENDCMPLX 4
@@ -92,81 +99,105 @@ uniqueentry( WordEntry* a, int4 l, char *buf, int4 *outbuflen ) {
do { \
if ( state->curpos - state->word == state->len ) \
{ \
- int4 clen = state->curpos - state->word; \
- state->len *= 2; \
- state->word = (char*)repalloc( (void*)state->word, state->len ); \
- state->curpos = state->word + clen; \
- } \
+ int4 clen = state->curpos - state->word; \
+ state->len *= 2; \
+ state->word = (char*)repalloc( (void*)state->word, state->len ); \
+ state->curpos = state->word + clen; \
+ } \
} while (0)
int4
-gettoken_txtidx( TI_IN_STATE *state ) {
- int4 oldstate = 0;
+gettoken_txtidx(TI_IN_STATE * state)
+{
+ int4 oldstate = 0;
+
state->curpos = state->word;
state->state = WAITWORD;
- while( 1 ) {
- if ( state->state == WAITWORD ) {
- if ( *(state->prsbuf) == '\0' ) {
+ while (1)
+ {
+ if (state->state == WAITWORD)
+ {
+ if (*(state->prsbuf) == '\0')
return 0;
- } else if ( *(state->prsbuf) == '\'' ) {
- state->state = WAITENDCMPLX;
- } else if ( *(state->prsbuf) == '\\' ) {
+ else if (*(state->prsbuf) == '\'')
+ state->state = WAITENDCMPLX;
+ else if (*(state->prsbuf) == '\\')
+ {
state->state = WAITNEXTCHAR;
oldstate = WAITENDWORD;
- } else if ( state->oprisdelim && ISOPERATOR( *(state->prsbuf) ) ) {
+ }
+ else if (state->oprisdelim && ISOPERATOR(*(state->prsbuf)))
elog(ERROR, "Syntax error");
- } else if ( *(state->prsbuf) != ' ' ) {
+ else if (*(state->prsbuf) != ' ')
+ {
*(state->curpos) = *(state->prsbuf);
state->curpos++;
state->state = WAITENDWORD;
}
- } else if ( state->state == WAITNEXTCHAR ) {
- if ( *(state->prsbuf) == '\0' ) {
- elog(ERROR,"There is no escaped character");
- } else {
+ }
+ else if (state->state == WAITNEXTCHAR)
+ {
+ if (*(state->prsbuf) == '\0')
+ elog(ERROR, "There is no escaped character");
+ else
+ {
RESIZEPRSBUF;
*(state->curpos) = *(state->prsbuf);
state->curpos++;
state->state = oldstate;
}
- } else if ( state->state == WAITENDWORD ) {
- if ( *(state->prsbuf) == '\\' ) {
+ }
+ else if (state->state == WAITENDWORD)
+ {
+ if (*(state->prsbuf) == '\\')
+ {
state->state = WAITNEXTCHAR;
oldstate = WAITENDWORD;
- } else if ( *(state->prsbuf) == ' ' || *(state->prsbuf) == '\0' ||
- ( state->oprisdelim && ISOPERATOR( *(state->prsbuf) ) ) ) {
+ }
+ else if (*(state->prsbuf) == ' ' || *(state->prsbuf) == '\0' ||
+ (state->oprisdelim && ISOPERATOR(*(state->prsbuf))))
+ {
RESIZEPRSBUF;
- if ( state->curpos == state->word )
+ if (state->curpos == state->word)
elog(ERROR, "Syntax error");
*(state->curpos) = '\0';
return 1;
- } else {
+ }
+ else
+ {
RESIZEPRSBUF;
*(state->curpos) = *(state->prsbuf);
state->curpos++;
}
- } else if ( state->state == WAITENDCMPLX ) {
- if ( *(state->prsbuf) == '\'' ) {
+ }
+ else if (state->state == WAITENDCMPLX)
+ {
+ if (*(state->prsbuf) == '\'')
+ {
RESIZEPRSBUF;
*(state->curpos) = '\0';
- if ( state->curpos == state->word )
+ if (state->curpos == state->word)
elog(ERROR, "Syntax error");
state->prsbuf++;
return 1;
- } else if ( *(state->prsbuf) == '\\' ) {
+ }
+ else if (*(state->prsbuf) == '\\')
+ {
state->state = WAITNEXTCHAR;
oldstate = WAITENDCMPLX;
- } else if ( *(state->prsbuf) == '\0' ) {
- elog(ERROR,"Syntax error");
- } else {
+ }
+ else if (*(state->prsbuf) == '\0')
+ elog(ERROR, "Syntax error");
+ else
+ {
RESIZEPRSBUF;
*(state->curpos) = *(state->prsbuf);
state->curpos++;
}
- } else {
+ }
+ else
elog(ERROR, "Inner bug :(");
- }
state->prsbuf++;
}
@@ -174,92 +205,111 @@ gettoken_txtidx( TI_IN_STATE *state ) {
}
Datum
-txtidx_in(PG_FUNCTION_ARGS) {
- char *buf = (char*)PG_GETARG_POINTER(0);
+txtidx_in(PG_FUNCTION_ARGS)
+{
+ char *buf = (char *) PG_GETARG_POINTER(0);
TI_IN_STATE state;
- WordEntry *arr;
- int4 len=0, totallen = 64;
- txtidx *in;
- char *tmpbuf, *cur;
- int4 i,buflen = 256;
+ WordEntry *arr;
+ int4 len = 0,
+ totallen = 64;
+ txtidx *in;
+ char *tmpbuf,
+ *cur;
+ int4 i,
+ buflen = 256;
state.prsbuf = buf;
- state.len=32;
- state.word = (char*)palloc( state.len );
+ state.len = 32;
+ state.word = (char *) palloc(state.len);
state.oprisdelim = false;
- arr = (WordEntry*)palloc( sizeof(WordEntry) * totallen );
- cur = tmpbuf = (char*)palloc( buflen );
- while( gettoken_txtidx( &state ) ) {
- if ( len == totallen ) {
+ arr = (WordEntry *) palloc(sizeof(WordEntry) * totallen);
+ cur = tmpbuf = (char *) palloc(buflen);
+ while (gettoken_txtidx(&state))
+ {
+ if (len == totallen)
+ {
totallen *= 2;
- arr = (WordEntry*)repalloc( (void*)arr, sizeof(int4)*totallen );
+ arr = (WordEntry *) repalloc((void *) arr, sizeof(int4) * totallen);
}
- while ( cur-tmpbuf + state.curpos - state.word >= buflen ) {
- int4 dist = cur-tmpbuf;
+ while (cur - tmpbuf + state.curpos - state.word >= buflen)
+ {
+ int4 dist = cur - tmpbuf;
+
buflen *= 2;
- tmpbuf = (char*)repalloc( (void*)tmpbuf, buflen );
- cur = tmpbuf+dist;
+ tmpbuf = (char *) repalloc((void *) tmpbuf, buflen);
+ cur = tmpbuf + dist;
}
- if ( state.curpos - state.word > 0xffff )
- elog(ERROR,"Word is too long");
+ if (state.curpos - state.word > 0xffff)
+ elog(ERROR, "Word is too long");
arr[len].len = state.curpos - state.word;
- if ( cur - tmpbuf > 0xffff )
- elog(ERROR,"Too long value");
+ if (cur - tmpbuf > 0xffff)
+ elog(ERROR, "Too long value");
arr[len].pos = cur - tmpbuf;
- memcpy( (void*)cur, (void*)state.word, arr[len].len );
+ memcpy((void *) cur, (void *) state.word, arr[len].len);
cur += arr[len].len;
len++;
}
pfree(state.word);
- if ( !len )
- elog(ERROR,"Void value");
+ if (!len)
+ elog(ERROR, "Void value");
- len = uniqueentry( arr, len, tmpbuf, &buflen );
- totallen = CALCDATASIZE( len, buflen );
- in = (txtidx*)palloc( totallen );
+ len = uniqueentry(arr, len, tmpbuf, &buflen);
+ totallen = CALCDATASIZE(len, buflen);
+ in = (txtidx *) palloc(totallen);
in->len = totallen;
in->size = len;
cur = STRPTR(in);
- for(i=0;i<len;i++) {
- memcpy( (void*)cur, (void*)&tmpbuf[ arr[i].pos ], arr[i].len );
+ for (i = 0; i < len; i++)
+ {
+ memcpy((void *) cur, (void *) &tmpbuf[arr[i].pos], arr[i].len);
arr[i].pos = cur - STRPTR(in);
cur += arr[i].len;
}
pfree(tmpbuf);
- memcpy( (void*)ARRPTR(in), (void*)arr, sizeof(int4)*len );
- pfree( arr );
- PG_RETURN_POINTER( in );
+ memcpy((void *) ARRPTR(in), (void *) arr, sizeof(int4) * len);
+ pfree(arr);
+ PG_RETURN_POINTER(in);
}
Datum
-txtidxsize(PG_FUNCTION_ARGS) {
- txtidx *in=(txtidx*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
- int4 ret = in->size;
- PG_FREE_IF_COPY(in,0);
- PG_RETURN_INT32( ret );
+txtidxsize(PG_FUNCTION_ARGS)
+{
+ txtidx *in = (txtidx *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+ int4 ret = in->size;
+
+ PG_FREE_IF_COPY(in, 0);
+ PG_RETURN_INT32(ret);
}
Datum
-txtidx_out(PG_FUNCTION_ARGS) {
- txtidx *out=(txtidx*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
- char *outbuf;
- int4 i,j,lenbuf = STRSIZE(out) + 1 /* \0 */ + out->size*2 /* '' */ + out->size - 1 /* space */;
- WordEntry *ptr = ARRPTR(out);
- char *curin, *curout;
-
- curout = outbuf = (char*) palloc( lenbuf );
- for(i=0;i<out->size;i++) {
+txtidx_out(PG_FUNCTION_ARGS)
+{
+ txtidx *out = (txtidx *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+ char *outbuf;
+ int4 i,
+ j,
+ lenbuf = STRSIZE(out) + 1 /* \0 */ + out->size * 2 /* '' */ + out->size - 1 /* space */ ;
+ WordEntry *ptr = ARRPTR(out);
+ char *curin,
+ *curout;
+
+ curout = outbuf = (char *) palloc(lenbuf);
+ for (i = 0; i < out->size; i++)
+ {
curin = STRPTR(out) + ptr->pos;
- if ( i!= 0 )
+ if (i != 0)
*curout++ = ' ';
*curout++ = '\'';
j = ptr->len;
- while( j-- ) {
- if ( *curin == '\'' ) {
- int4 pos = curout - outbuf;
- outbuf = (char*)repalloc((void*)outbuf, ++lenbuf );
+ while (j--)
+ {
+ if (*curin == '\'')
+ {
+ int4 pos = curout - outbuf;
+
+ outbuf = (char *) repalloc((void *) outbuf, ++lenbuf);
curout = outbuf + pos;
*curout++ = '\\';
}
@@ -268,171 +318,198 @@ txtidx_out(PG_FUNCTION_ARGS) {
*curout++ = '\'';
ptr++;
}
- outbuf[ lenbuf-1 ] = '\0';
- PG_FREE_IF_COPY(out,0);
- PG_RETURN_POINTER( outbuf );
+ outbuf[lenbuf - 1] = '\0';
+ PG_FREE_IF_COPY(out, 0);
+ PG_RETURN_POINTER(outbuf);
}
-typedef struct {
- uint16 len;
- char* word;
-} WORD;
+typedef struct
+{
+ uint16 len;
+ char *word;
+} WORD;
-typedef struct {
- WORD *words;
- int4 lenwords;
- int4 curwords;
-} PRSTEXT;
+typedef struct
+{
+ WORD *words;
+ int4 lenwords;
+ int4 curwords;
+} PRSTEXT;
/*
* Parse text to lexems
*/
static void
-parsetext( PRSTEXT *prs, char *buf, int4 buflen ) {
- int type,lenlemm;
- char *ptr,*ptrw;
- char *lemm;
-
- start_parse_str( buf, buflen );
- while( (type=tsearch_yylex()) != 0 ) {
- if ( prs->curwords == prs->lenwords ) {
+parsetext(PRSTEXT * prs, char *buf, int4 buflen)
+{
+ int type,
+ lenlemm;
+ char *ptr,
+ *ptrw;
+ char *lemm;
+
+ start_parse_str(buf, buflen);
+ while ((type = tsearch_yylex()) != 0)
+ {
+ if (prs->curwords == prs->lenwords)
+ {
prs->lenwords *= 2;
- prs->words = (WORD*)repalloc( (void*)prs->words, prs->lenwords * sizeof(WORD) );
+ prs->words = (WORD *) repalloc((void *) prs->words, prs->lenwords * sizeof(WORD));
}
- if ( tokenlen>0xffff ) {
+ if (tokenlen > 0xffff)
+ {
end_parse();
elog(ERROR, "Word is too long");
}
lenlemm = tokenlen;
- lemm = lemmatize( token, &lenlemm, type );
-
- if ( ! lemm )
+ lemm = lemmatize(token, &lenlemm, type);
+
+ if (!lemm)
continue;
- if ( lemm != token ) {
- prs->words[ prs->curwords ].len = lenlemm;
- prs->words[ prs->curwords ].word = lemm;
- } else {
- prs->words[ prs->curwords ].len = lenlemm;
- ptrw = prs->words[ prs->curwords ].word = (char*)palloc( lenlemm );
+ if (lemm != token)
+ {
+ prs->words[prs->curwords].len = lenlemm;
+ prs->words[prs->curwords].word = lemm;
+ }
+ else
+ {
+ prs->words[prs->curwords].len = lenlemm;
+ ptrw = prs->words[prs->curwords].word = (char *) palloc(lenlemm);
ptr = token;
- while( ptr-token < lenlemm ) {
- *ptrw = tolower( (unsigned char) *ptr );
- ptr++; ptrw++;
+ while (ptr - token < lenlemm)
+ {
+ *ptrw = tolower((unsigned char) *ptr);
+ ptr++;
+ ptrw++;
}
}
- prs->curwords++;
+ prs->curwords++;
}
end_parse();
}
static int
-compareWORD( const void * a, const void * b ) {
- if ( ((WORD*)a)->len == ((WORD*)b)->len )
- return strncmp(
- ((WORD*)a)->word,
- ((WORD*)b)->word,
- ((WORD*)b)->len );
- return ( ((WORD*)a)->len > ((WORD*)b)->len ) ? 1 : -1;
+compareWORD(const void *a, const void *b)
+{
+ if (((WORD *) a)->len == ((WORD *) b)->len)
+ return strncmp(
+ ((WORD *) a)->word,
+ ((WORD *) b)->word,
+ ((WORD *) b)->len);
+ return (((WORD *) a)->len > ((WORD *) b)->len) ? 1 : -1;
}
static int
-uniqueWORD( WORD* a, int4 l ) {
- WORD *ptr, *res;
+uniqueWORD(WORD * a, int4 l)
+{
+ WORD *ptr,
+ *res;
- if ( l == 1 )
+ if (l == 1)
return l;
res = a;
ptr = a + 1;
- qsort((void*)a, l, sizeof(WORD), compareWORD );
+ qsort((void *) a, l, sizeof(WORD), compareWORD);
- while (ptr - a < l) {
- if ( ! (ptr->len == res->len &&
- strncmp(ptr->word, res->word ,res->len) == 0 ) ) {
+ while (ptr - a < l)
+ {
+ if (!(ptr->len == res->len &&
+ strncmp(ptr->word, res->word, res->len) == 0))
+ {
res++;
- res->len = ptr->len;
+ res->len = ptr->len;
res->word = ptr->word;
- } else {
- pfree(ptr->word);
}
+ else
+ pfree(ptr->word);
ptr++;
}
return res + 1 - a;
-}
+}
/*
* make value of txtidx
*/
static txtidx *
-makevalue( PRSTEXT *prs ) {
- int4 i, lenstr=0, totallen;
- txtidx *in;
- WordEntry *ptr;
- char *str,*cur;
-
- prs->curwords = uniqueWORD( prs->words, prs->curwords );
- for(i=0;i<prs->curwords;i++)
+makevalue(PRSTEXT * prs)
+{
+ int4 i,
+ lenstr = 0,
+ totallen;
+ txtidx *in;
+ WordEntry *ptr;
+ char *str,
+ *cur;
+
+ prs->curwords = uniqueWORD(prs->words, prs->curwords);
+ for (i = 0; i < prs->curwords; i++)
lenstr += prs->words[i].len;
- totallen = CALCDATASIZE( prs->curwords, lenstr );
- in = (txtidx*)palloc( totallen );
+ totallen = CALCDATASIZE(prs->curwords, lenstr);
+ in = (txtidx *) palloc(totallen);
in->len = totallen;
in->size = prs->curwords;
ptr = ARRPTR(in);
cur = str = STRPTR(in);
- for(i=0;i<prs->curwords;i++) {
+ for (i = 0; i < prs->curwords; i++)
+ {
ptr->len = prs->words[i].len;
- if ( cur-str > 0xffff )
- elog(ERROR,"Value is too big");
- ptr->pos = cur-str;
+ if (cur - str > 0xffff)
+ elog(ERROR, "Value is too big");
+ ptr->pos = cur - str;
ptr++;
- memcpy( (void*)cur, (void*)prs->words[i].word, prs->words[i].len );
+ memcpy((void *) cur, (void *) prs->words[i].word, prs->words[i].len);
pfree(prs->words[i].word);
- cur += prs->words[i].len;
+ cur += prs->words[i].len;
}
pfree(prs->words);
return in;
}
Datum
-txt2txtidx(PG_FUNCTION_ARGS) {
- text *in = (text*)DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
- PRSTEXT prs;
- txtidx *out = NULL;
-
- prs.lenwords = 32;
- prs.curwords = 0;
- prs.words = (WORD*)palloc(sizeof(WORD)*prs.lenwords);
+txt2txtidx(PG_FUNCTION_ARGS)
+{
+ text *in = (text *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
+ PRSTEXT prs;
+ txtidx *out = NULL;
+
+ prs.lenwords = 32;
+ prs.curwords = 0;
+ prs.words = (WORD *) palloc(sizeof(WORD) * prs.lenwords);
initmorph();
- parsetext( &prs, VARDATA(in), VARSIZE(in) - VARHDRSZ );
- PG_FREE_IF_COPY(in,0);
-
- if ( prs.curwords ) {
- out = makevalue( &prs );
- PG_RETURN_POINTER( out );
+ parsetext(&prs, VARDATA(in), VARSIZE(in) - VARHDRSZ);
+ PG_FREE_IF_COPY(in, 0);
+
+ if (prs.curwords)
+ {
+ out = makevalue(&prs);
+ PG_RETURN_POINTER(out);
}
pfree(prs.words);
PG_RETURN_NULL();
-}
+}
/*
* Trigger
*/
Datum
-tsearch(PG_FUNCTION_ARGS) {
+tsearch(PG_FUNCTION_ARGS)
+{
TriggerData *trigdata;
Trigger *trigger;
- Relation rel;
- HeapTuple rettuple = NULL;
- int numidxattr,i;
- PRSTEXT prs;
- Datum datum = (Datum)0;
+ Relation rel;
+ HeapTuple rettuple = NULL;
+ int numidxattr,
+ i;
+ PRSTEXT prs;
+ Datum datum = (Datum) 0;
if (!CALLED_AS_TRIGGER(fcinfo))
@@ -448,63 +525,69 @@ tsearch(PG_FUNCTION_ARGS) {
rettuple = trigdata->tg_trigtuple;
else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
rettuple = trigdata->tg_newtuple;
- else
+ else
elog(ERROR, "TSearch: Unknown event");
trigger = trigdata->tg_trigger;
rel = trigdata->tg_relation;
- if ( trigger->tgnargs < 2 )
- elog(ERROR,"TSearch: format tsearch(txtidx_field, text_field1,...)");
+ if (trigger->tgnargs < 2)
+ elog(ERROR, "TSearch: format tsearch(txtidx_field, text_field1,...)");
numidxattr = SPI_fnumber(rel->rd_att, trigger->tgargs[0]);
- if ( numidxattr < 0 )
- elog(ERROR,"TSearch: Can not find txtidx_field");
+ if (numidxattr < 0)
+ elog(ERROR, "TSearch: Can not find txtidx_field");
- prs.lenwords = 32;
- prs.curwords = 0;
- prs.words = (WORD*)palloc(sizeof(WORD)*prs.lenwords);
+ prs.lenwords = 32;
+ prs.curwords = 0;
+ prs.words = (WORD *) palloc(sizeof(WORD) * prs.lenwords);
initmorph();
- /* find all words in indexable column */
- for(i=1; i<trigger->tgnargs; i++) {
- int4 numattr;
- text *txt_toasted, *txt;
- bool isnull;
- Oid oidtype;
+ /* find all words in indexable column */
+ for (i = 1; i < trigger->tgnargs; i++)
+ {
+ int4 numattr;
+ text *txt_toasted,
+ *txt;
+ bool isnull;
+ Oid oidtype;
numattr = SPI_fnumber(rel->rd_att, trigger->tgargs[i]);
oidtype = SPI_gettypeid(rel->rd_att, numattr);
- if ( numattr<0 || ( ! ( oidtype==TEXTOID || oidtype==VARCHAROID ) ) ) {
+ if (numattr < 0 || (!(oidtype == TEXTOID || oidtype == VARCHAROID)))
+ {
elog(NOTICE, "TSearch: can not find field '%s'", trigger->tgargs[i]);
continue;
}
- txt_toasted = (text*)DatumGetPointer( SPI_getbinval(rettuple, rel->rd_att, numattr, &isnull ) );
- if ( isnull )
+ txt_toasted = (text *) DatumGetPointer(SPI_getbinval(rettuple, rel->rd_att, numattr, &isnull));
+ if (isnull)
continue;
- txt = (text*)DatumGetPointer( PG_DETOAST_DATUM( PointerGetDatum ( txt_toasted ) ) );
+ txt = (text *) DatumGetPointer(PG_DETOAST_DATUM(PointerGetDatum(txt_toasted)));
- parsetext( &prs, VARDATA(txt), VARSIZE(txt) - VARHDRSZ );
- if ( txt != txt_toasted )
+ parsetext(&prs, VARDATA(txt), VARSIZE(txt) - VARHDRSZ);
+ if (txt != txt_toasted)
pfree(txt);
}
/* make txtidx value */
- if (prs.curwords) {
- datum = PointerGetDatum( makevalue( &prs ) );
- rettuple = SPI_modifytuple( rel, rettuple, 1, &numidxattr,
- &datum, NULL );
+ if (prs.curwords)
+ {
+ datum = PointerGetDatum(makevalue(&prs));
+ rettuple = SPI_modifytuple(rel, rettuple, 1, &numidxattr,
+ &datum, NULL);
pfree(DatumGetPointer(datum));
- } else {
- char nulls = 'n';
- pfree( prs.words );
- rettuple = SPI_modifytuple( rel, rettuple, 1, &numidxattr,
- &datum, &nulls );
}
-
+ else
+ {
+ char nulls = 'n';
+
+ pfree(prs.words);
+ rettuple = SPI_modifytuple(rel, rettuple, 1, &numidxattr,
+ &datum, &nulls);
+ }
+
if (rettuple == NULL)
elog(ERROR, "TSearch: %d returned by SPI_modifytuple", SPI_result);
- return PointerGetDatum( rettuple );
+ return PointerGetDatum(rettuple);
}
-
diff --git a/contrib/tsearch/txtidx.h b/contrib/tsearch/txtidx.h
index 9a586ce5185..d33bdf9d6d3 100644
--- a/contrib/tsearch/txtidx.h
+++ b/contrib/tsearch/txtidx.h
@@ -14,33 +14,34 @@
#include "utils/builtins.h"
#include "storage/bufpage.h"
-typedef struct {
- uint16 len;
- uint16 pos;
-} WordEntry;
-
-typedef struct {
- int4 len;
- int4 size;
- char data[1];
-} txtidx;
-
-#define DATAHDRSIZE (sizeof(int4)*2)
-#define CALCDATASIZE(x, lenstr) ( x * sizeof(WordEntry) + DATAHDRSIZE + lenstr )
-#define ARRPTR(x) ( (WordEntry*) ( (char*)x + DATAHDRSIZE ) )
-#define STRPTR(x) ( (char*)x + DATAHDRSIZE + ( sizeof(WordEntry) * ((txtidx*)x)->size ) )
-#define STRSIZE(x) ( ((txtidx*)x)->len - DATAHDRSIZE - ( sizeof(WordEntry) * ((txtidx*)x)->size ) )
-
-typedef struct {
- char *prsbuf;
- char *word;
- char *curpos;
- int4 len;
- int4 state;
- bool oprisdelim;
-} TI_IN_STATE;
-
-int4 gettoken_txtidx( TI_IN_STATE *state );
-
+typedef struct
+{
+ uint16 len;
+ uint16 pos;
+} WordEntry;
+
+typedef struct
+{
+ int4 len;
+ int4 size;
+ char data[1];
+} txtidx;
+
+#define DATAHDRSIZE (sizeof(int4)*2)
+#define CALCDATASIZE(x, lenstr) ( x * sizeof(WordEntry) + DATAHDRSIZE + lenstr )
+#define ARRPTR(x) ( (WordEntry*) ( (char*)x + DATAHDRSIZE ) )
+#define STRPTR(x) ( (char*)x + DATAHDRSIZE + ( sizeof(WordEntry) * ((txtidx*)x)->size ) )
+#define STRSIZE(x) ( ((txtidx*)x)->len - DATAHDRSIZE - ( sizeof(WordEntry) * ((txtidx*)x)->size ) )
+
+typedef struct
+{
+ char *prsbuf;
+ char *word;
+ char *curpos;
+ int4 len;
+ int4 state;
+ bool oprisdelim;
+} TI_IN_STATE;
+
+int4 gettoken_txtidx(TI_IN_STATE * state);
#endif
-
diff --git a/contrib/userlock/user_locks.h b/contrib/userlock/user_locks.h
index 82ecb3b9ea0..526e8646615 100644
--- a/contrib/userlock/user_locks.h
+++ b/contrib/userlock/user_locks.h
@@ -8,7 +8,6 @@ int user_write_unlock(unsigned int id1, unsigned int id2);
int user_write_lock_oid(Oid oid);
int user_write_unlock_oid(Oid oid);
int user_unlock_all(void);
-
#endif
/*
diff --git a/contrib/xml/pgxml.c b/contrib/xml/pgxml.c
index 47289031579..3939250e25e 100644
--- a/contrib/xml/pgxml.c
+++ b/contrib/xml/pgxml.c
@@ -14,32 +14,39 @@ XML_Memory_Handling_Suite mhs;
/* passthrough functions (palloc is a macro) */
-static void *pgxml_palloc(size_t size)
+static void *
+pgxml_palloc(size_t size)
{
- return palloc(size);
+ return palloc(size);
}
-static void *pgxml_repalloc(void *ptr, size_t size)
+static void *
+pgxml_repalloc(void *ptr, size_t size)
{
- return repalloc(ptr,size);
+ return repalloc(ptr, size);
}
-static void pgxml_pfree(void *ptr)
+static void
+pgxml_pfree(void *ptr)
{
- return pfree(ptr);
+ return pfree(ptr);
}
-static void pgxml_mhs_init()
+static void
+pgxml_mhs_init()
{
- mhs.malloc_fcn = pgxml_palloc;
- mhs.realloc_fcn = pgxml_repalloc;
- mhs.free_fcn = pgxml_pfree;
+ mhs.malloc_fcn = pgxml_palloc;
+ mhs.realloc_fcn = pgxml_repalloc;
+ mhs.free_fcn = pgxml_pfree;
}
-static void pgxml_handler_init()
+static void
+pgxml_handler_init()
{
- /* This code should set up the relevant handlers from user-supplied
- settings. Quite how these settings are made is another matter :) */
+ /*
+ * This code should set up the relevant handlers from user-supplied
+ * settings. Quite how these settings are made is another matter :)
+ */
}
/* Returns true if document is well-formed */
@@ -49,31 +56,35 @@ PG_FUNCTION_INFO_V1(pgxml_parse);
Datum
pgxml_parse(PG_FUNCTION_ARGS)
{
- /* called as pgxml_parse(document) */
- XML_Parser p;
- text *t = PG_GETARG_TEXT_P(0); /*document buffer */
- int32 docsize = VARSIZE(t) - VARHDRSZ;
-
- pgxml_mhs_init();
-
- pgxml_handler_init();
-
- p = XML_ParserCreate_MM(NULL,&mhs,NULL);
- if (! p) {
- elog(ERROR, "pgxml: Could not create expat parser");
- PG_RETURN_NULL(); /* seems appropriate if we couldn't parse */
- }
-
- if (! XML_Parse(p, (char *)VARDATA(t) , docsize, 1)) {
- /* elog(NOTICE, "Parse error at line %d:%s",
- XML_GetCurrentLineNumber(p),
- XML_ErrorString(XML_GetErrorCode(p))); */
- XML_ParserFree(p);
- PG_RETURN_BOOL(false);
- }
-
- XML_ParserFree(p);
- PG_RETURN_BOOL(true);
+ /* called as pgxml_parse(document) */
+ XML_Parser p;
+ text *t = PG_GETARG_TEXT_P(0); /* document buffer */
+ int32 docsize = VARSIZE(t) - VARHDRSZ;
+
+ pgxml_mhs_init();
+
+ pgxml_handler_init();
+
+ p = XML_ParserCreate_MM(NULL, &mhs, NULL);
+ if (!p)
+ {
+ elog(ERROR, "pgxml: Could not create expat parser");
+ PG_RETURN_NULL(); /* seems appropriate if we couldn't parse */
+ }
+
+ if (!XML_Parse(p, (char *) VARDATA(t), docsize, 1))
+ {
+ /*
+ * elog(NOTICE, "Parse error at line %d:%s",
+ * XML_GetCurrentLineNumber(p),
+ * XML_ErrorString(XML_GetErrorCode(p)));
+ */
+ XML_ParserFree(p);
+ PG_RETURN_BOOL(false);
+ }
+
+ XML_ParserFree(p);
+ PG_RETURN_BOOL(true);
}
/* XPath handling functions */
@@ -81,83 +92,88 @@ pgxml_parse(PG_FUNCTION_ARGS)
/* XPath support here is for a very skeletal kind of XPath!
It was easy to program though... */
-/* This first is the core function that builds a result set. The
+/* This first is the core function that builds a result set. The
actual functions called by the user manipulate that result set
in various ways.
*/
-static XPath_Results *build_xpath_results(text *doc, text *pathstr)
+static XPath_Results *
+build_xpath_results(text *doc, text *pathstr)
{
- XPath_Results *xpr;
- char *res;
- pgxml_udata *udata;
- XML_Parser p;
- int32 docsize;
+ XPath_Results *xpr;
+ char *res;
+ pgxml_udata *udata;
+ XML_Parser p;
+ int32 docsize;
- xpr = (XPath_Results *) palloc((sizeof(XPath_Results)));
- memset((void *)xpr, 0, sizeof(XPath_Results));
- xpr->rescount=0;
+ xpr = (XPath_Results *) palloc((sizeof(XPath_Results)));
+ memset((void *) xpr, 0, sizeof(XPath_Results));
+ xpr->rescount = 0;
- docsize=VARSIZE(doc)-VARHDRSZ;
+ docsize = VARSIZE(doc) - VARHDRSZ;
- /* res isn't going to be the real return type, it is just a buffer */
+ /* res isn't going to be the real return type, it is just a buffer */
- res = (char *) palloc(docsize);
- memset((void *)res, 0, docsize);
+ res = (char *) palloc(docsize);
+ memset((void *) res, 0, docsize);
- xpr->resbuf = res;
+ xpr->resbuf = res;
- udata = (pgxml_udata *) palloc((sizeof(pgxml_udata)));
- memset((void *)udata,0,sizeof(pgxml_udata));
+ udata = (pgxml_udata *) palloc((sizeof(pgxml_udata)));
+ memset((void *) udata, 0, sizeof(pgxml_udata));
- udata->currentpath[0]='\0';
- udata->textgrab=0;
+ udata->currentpath[0] = '\0';
+ udata->textgrab = 0;
- udata->path= (char *) palloc(VARSIZE(pathstr));
- memcpy(udata->path, VARDATA(pathstr), VARSIZE(pathstr)-VARHDRSZ);
+ udata->path = (char *) palloc(VARSIZE(pathstr));
+ memcpy(udata->path, VARDATA(pathstr), VARSIZE(pathstr) - VARHDRSZ);
- udata->path[VARSIZE(pathstr)-VARHDRSZ]='\0';
+ udata->path[VARSIZE(pathstr) - VARHDRSZ] = '\0';
- udata->resptr = res;
- udata->reslen = 0;
+ udata->resptr = res;
+ udata->reslen = 0;
- udata->xpres = xpr;
+ udata->xpres = xpr;
- /* Now fire up the parser */
- pgxml_mhs_init();
+ /* Now fire up the parser */
+ pgxml_mhs_init();
- p = XML_ParserCreate_MM(NULL,&mhs,NULL);
- if (! p) {
- elog(ERROR, "pgxml: Could not create expat parser");
- pfree(xpr);
- pfree(udata->path);
- pfree(udata);
- pfree(res);
- return NULL;
- }
- XML_SetUserData(p, (void *)udata);
-
- /* Set the handlers */
-
- XML_SetElementHandler(p, pgxml_starthandler, pgxml_endhandler);
- XML_SetCharacterDataHandler(p, pgxml_charhandler);
-
- if (! XML_Parse(p, (char *)VARDATA(doc) , docsize, 1)) {
- /* elog(NOTICE, "Parse error at line %d:%s",
- XML_GetCurrentLineNumber(p),
- XML_ErrorString(XML_GetErrorCode(p))); */
- XML_ParserFree(p);
- pfree(xpr);
- pfree(udata->path);
- pfree(udata);
-
- return NULL;
- }
+ p = XML_ParserCreate_MM(NULL, &mhs, NULL);
+ if (!p)
+ {
+ elog(ERROR, "pgxml: Could not create expat parser");
+ pfree(xpr);
+ pfree(udata->path);
+ pfree(udata);
+ pfree(res);
+ return NULL;
+ }
+ XML_SetUserData(p, (void *) udata);
+
+ /* Set the handlers */
+
+ XML_SetElementHandler(p, pgxml_starthandler, pgxml_endhandler);
+ XML_SetCharacterDataHandler(p, pgxml_charhandler);
+
+ if (!XML_Parse(p, (char *) VARDATA(doc), docsize, 1))
+ {
+ /*
+ * elog(NOTICE, "Parse error at line %d:%s",
+ * XML_GetCurrentLineNumber(p),
+ * XML_ErrorString(XML_GetErrorCode(p)));
+ */
+ XML_ParserFree(p);
+ pfree(xpr);
+ pfree(udata->path);
+ pfree(udata);
+
+ return NULL;
+ }
- pfree(udata->path);
- pfree(udata);
- XML_ParserFree(p);
- return xpr;
+ pfree(udata->path);
+ pfree(udata);
+ XML_ParserFree(p);
+ return xpr;
}
@@ -166,145 +182,166 @@ PG_FUNCTION_INFO_V1(pgxml_xpath);
Datum
pgxml_xpath(PG_FUNCTION_ARGS)
{
- /* called as pgxml_xpath(document,pathstr, index) for the moment*/
+ /* called as pgxml_xpath(document,pathstr, index) for the moment */
+
+ XPath_Results *xpresults;
+ text *restext;
- XPath_Results *xpresults;
- text *restext;
+ text *t = PG_GETARG_TEXT_P(0); /* document buffer */
+ text *t2 = PG_GETARG_TEXT_P(1);
+ int32 ind = PG_GETARG_INT32(2) - 1;
- text *t = PG_GETARG_TEXT_P(0); /*document buffer */
- text *t2= PG_GETARG_TEXT_P(1);
- int32 ind = PG_GETARG_INT32(2) - 1;
+ xpresults = build_xpath_results(t, t2);
- xpresults = build_xpath_results(t,t2);
+ /*
+ * This needs to be changed depending on the mechanism for returning
+ * our set of results.
+ */
- /* This needs to be changed depending on the mechanism for returning
- our set of results. */
+ if (xpresults == NULL) /* parse error (not WF or parser failure) */
+ PG_RETURN_NULL();
- if (xpresults==NULL) /*parse error (not WF or parser failure) */
- {
- PG_RETURN_NULL();
- }
+ if (ind >= (xpresults->rescount))
+ PG_RETURN_NULL();
- if (ind >= (xpresults->rescount))
- {
- PG_RETURN_NULL();
- }
-
- restext = (text *) palloc(xpresults->reslens[ind]+VARHDRSZ);
- memcpy(VARDATA(restext),xpresults->results[ind],xpresults->reslens[ind]);
+ restext = (text *) palloc(xpresults->reslens[ind] + VARHDRSZ);
+ memcpy(VARDATA(restext), xpresults->results[ind], xpresults->reslens[ind]);
- VARATT_SIZEP(restext) = xpresults->reslens[ind]+VARHDRSZ;
+ VARATT_SIZEP(restext) = xpresults->reslens[ind] + VARHDRSZ;
- pfree(xpresults->resbuf);
- pfree(xpresults);
+ pfree(xpresults->resbuf);
+ pfree(xpresults);
- PG_RETURN_TEXT_P(restext);
+ PG_RETURN_TEXT_P(restext);
}
-static void pgxml_pathcompare(void *userData)
+static void
+pgxml_pathcompare(void *userData)
{
- char *matchpos;
-
- matchpos=strstr(UD->currentpath, UD->path);
-
- if (matchpos == NULL) { /* Should we have more logic here ? */
- if (UD->textgrab) {
- UD->textgrab=0;
- pgxml_finalisegrabbedtext(userData);
- }
- return;
- }
- /* OK, we have a match of some sort. Now we need to check that
- our match is anchored to the *end* of the string AND
- that it is immediately preceded by a '/'*/
- /* This test wouldn't work if strlen (UD->path) overran the length
- of the currentpath, but that's not possible because we got a match! */
-
- if ((matchpos + strlen(UD->path))[0]=='\0')
- {
- if ((UD->path)[0]=='/') {
- if (matchpos == UD->currentpath) {
- UD->textgrab=1;
+ char *matchpos;
+
+ matchpos = strstr(UD->currentpath, UD->path);
+
+ if (matchpos == NULL)
+ { /* Should we have more logic here ? */
+ if (UD->textgrab)
+ {
+ UD->textgrab = 0;
+ pgxml_finalisegrabbedtext(userData);
+ }
+ return;
}
- } else {
- if ((matchpos-1)[0]=='/') {
- UD->textgrab=1;
+
+ /*
+ * OK, we have a match of some sort. Now we need to check that our
+ * match is anchored to the *end* of the string AND that it is
+ * immediately preceded by a '/'
+ */
+
+ /*
+ * This test wouldn't work if strlen (UD->path) overran the length of
+ * the currentpath, but that's not possible because we got a match!
+ */
+
+ if ((matchpos + strlen(UD->path))[0] == '\0')
+ {
+ if ((UD->path)[0] == '/')
+ {
+ if (matchpos == UD->currentpath)
+ UD->textgrab = 1;
+ }
+ else
+ {
+ if ((matchpos - 1)[0] == '/')
+ UD->textgrab = 1;
+ }
}
- }
- }
}
-static void pgxml_starthandler(void *userData, const XML_Char *name,
- const XML_Char **atts)
+static void
+pgxml_starthandler(void *userData, const XML_Char * name,
+ const XML_Char ** atts)
{
- char sepstr[]="/";
-
- if ((strlen(name)+strlen(UD->currentpath))>MAXPATHLENGTH-2) {
- elog(NOTICE,"Path too long");
- } else {
- strncat(UD->currentpath,sepstr,1);
- strcat(UD->currentpath, name);
- }
- if (UD->textgrab)
- {
- /* Depending on user preference, should we "reconstitute"
- the element into the result text?
- */
- } else {
- pgxml_pathcompare(userData);
- }
+ char sepstr[] = "/";
+
+ if ((strlen(name) + strlen(UD->currentpath)) > MAXPATHLENGTH - 2)
+ elog(NOTICE, "Path too long");
+ else
+ {
+ strncat(UD->currentpath, sepstr, 1);
+ strcat(UD->currentpath, name);
+ }
+ if (UD->textgrab)
+ {
+ /*
+ * Depending on user preference, should we "reconstitute" the
+ * element into the result text?
+ */
+ }
+ else
+ pgxml_pathcompare(userData);
}
-static void pgxml_endhandler(void *userData, const XML_Char *name)
+static void
+pgxml_endhandler(void *userData, const XML_Char * name)
{
- /* Start by removing the current element off the end of the
- currentpath */
-
- char *sepptr;
-
- sepptr=strrchr(UD->currentpath,'/');
- if (sepptr==NULL) {
- elog(ERROR,"There's a problem...");
- sepptr=UD->currentpath;
- }
- if (strcmp(name, sepptr+1) !=0) {
- elog(NOTICE,"Wanted [%s], got [%s]",sepptr,name);
- /* unmatched entry, so do nothing */
- } else {
- sepptr[0]='\0'; /* Chop that element off the end */
- }
-
- if (UD->textgrab) {
- pgxml_pathcompare(userData);
- }
+ /*
+ * Start by removing the current element off the end of the
+ * currentpath
+ */
+
+ char *sepptr;
+
+ sepptr = strrchr(UD->currentpath, '/');
+ if (sepptr == NULL)
+ {
+ elog(ERROR, "There's a problem...");
+ sepptr = UD->currentpath;
+ }
+ if (strcmp(name, sepptr + 1) != 0)
+ {
+ elog(NOTICE, "Wanted [%s], got [%s]", sepptr, name);
+ /* unmatched entry, so do nothing */
+ }
+ else
+ {
+ sepptr[0] = '\0'; /* Chop that element off the end */
+ }
+
+ if (UD->textgrab)
+ pgxml_pathcompare(userData);
}
-static void pgxml_charhandler(void *userData, const XML_Char *s, int len)
+static void
+pgxml_charhandler(void *userData, const XML_Char * s, int len)
{
- if (UD->textgrab) {
- if (len>0) {
- memcpy(UD->resptr,s,len);
- UD->resptr += len;
- UD->reslen += len;
- }
- }
+ if (UD->textgrab)
+ {
+ if (len > 0)
+ {
+ memcpy(UD->resptr, s, len);
+ UD->resptr += len;
+ UD->reslen += len;
+ }
+ }
}
+
/* Should I be using PG list types here? */
-static void pgxml_finalisegrabbedtext(void *userData)
+static void
+pgxml_finalisegrabbedtext(void *userData)
{
- /* In res/reslen, we have a single result. */
- UD->xpres->results[UD->xpres->rescount]= UD->resptr - UD->reslen;
- UD->xpres->reslens[UD->xpres->rescount]= UD->reslen;
- UD->reslen=0;
- UD->xpres->rescount++;
-
- /* This effectively concatenates all the results together but we
- do know where one ends and the next begins */
+ /* In res/reslen, we have a single result. */
+ UD->xpres->results[UD->xpres->rescount] = UD->resptr - UD->reslen;
+ UD->xpres->reslens[UD->xpres->rescount] = UD->reslen;
+ UD->reslen = 0;
+ UD->xpres->rescount++;
+
+ /*
+ * This effectively concatenates all the results together but we do
+ * know where one ends and the next begins
+ */
}
-
-
-
diff --git a/contrib/xml/pgxml.h b/contrib/xml/pgxml.h
index 848264c23d0..605031861de 100644
--- a/contrib/xml/pgxml.h
+++ b/contrib/xml/pgxml.h
@@ -5,12 +5,12 @@ static void *pgxml_repalloc(void *ptr, size_t size);
static void pgxml_pfree(void *ptr);
static void pgxml_mhs_init();
static void pgxml_handler_init();
-Datum pgxml_parse(PG_FUNCTION_ARGS);
-Datum pgxml_xpath(PG_FUNCTION_ARGS);
-static void pgxml_starthandler(void *userData, const XML_Char *name,
- const XML_Char **atts);
-static void pgxml_endhandler(void *userData, const XML_Char *name);
-static void pgxml_charhandler(void *userData, const XML_Char *s, int len);
+Datum pgxml_parse(PG_FUNCTION_ARGS);
+Datum pgxml_xpath(PG_FUNCTION_ARGS);
+static void pgxml_starthandler(void *userData, const XML_Char * name,
+ const XML_Char ** atts);
+static void pgxml_endhandler(void *userData, const XML_Char * name);
+static void pgxml_charhandler(void *userData, const XML_Char * s, int len);
static void pgxml_pathcompare(void *userData);
static void pgxml_finalisegrabbedtext(void *userData);
@@ -18,43 +18,25 @@ static void pgxml_finalisegrabbedtext(void *userData);
#define MAXRESULTS 100
-typedef struct {
- int rescount;
- char *results[MAXRESULTS];
- int32 reslens[MAXRESULTS];
- char *resbuf; /* pointer to the result buffer for pfree */
-} XPath_Results;
+typedef struct
+{
+ int rescount;
+ char *results[MAXRESULTS];
+ int32 reslens[MAXRESULTS];
+ char *resbuf; /* pointer to the result buffer for pfree */
+} XPath_Results;
-typedef struct {
- char currentpath[MAXPATHLENGTH];
- char *path;
- int textgrab;
- char *resptr;
- int32 reslen;
- XPath_Results *xpres;
-} pgxml_udata;
+typedef struct
+{
+ char currentpath[MAXPATHLENGTH];
+ char *path;
+ int textgrab;
+ char *resptr;
+ int32 reslen;
+ XPath_Results *xpres;
+} pgxml_udata;
#define UD ((pgxml_udata *) userData)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/contrib/xml/pgxml_dom.c b/contrib/xml/pgxml_dom.c
index b01368a52ce..f2f9973b899 100644
--- a/contrib/xml/pgxml_dom.c
+++ b/contrib/xml/pgxml_dom.c
@@ -15,50 +15,57 @@
static void *pgxml_palloc(size_t size);
static void *pgxml_repalloc(void *ptr, size_t size);
static void pgxml_pfree(void *ptr);
-static char *pgxml_pstrdup(const char* string);
+static char *pgxml_pstrdup(const char *string);
static void pgxml_parser_init();
-static xmlChar *pgxmlNodeSetToText(xmlNodeSetPtr nodeset, xmlDocPtr doc,
- xmlChar *toptagname, xmlChar *septagname,
+static xmlChar *pgxmlNodeSetToText(xmlNodeSetPtr nodeset, xmlDocPtr doc,
+ xmlChar * toptagname, xmlChar * septagname,
int format);
static xmlChar *pgxml_texttoxmlchar(text *textstring);
-Datum pgxml_parse(PG_FUNCTION_ARGS);
-Datum pgxml_xpath(PG_FUNCTION_ARGS);
+Datum pgxml_parse(PG_FUNCTION_ARGS);
+Datum pgxml_xpath(PG_FUNCTION_ARGS);
/* memory handling passthrough functions (e.g. palloc, pstrdup are
currently macros, and the others might become so...) */
-static void *pgxml_palloc(size_t size)
+static void *
+pgxml_palloc(size_t size)
{
- return palloc(size);
+ return palloc(size);
}
-static void *pgxml_repalloc(void *ptr, size_t size)
+static void *
+pgxml_repalloc(void *ptr, size_t size)
{
- return repalloc(ptr,size);
+ return repalloc(ptr, size);
}
-static void pgxml_pfree(void *ptr)
+static void
+pgxml_pfree(void *ptr)
{
- return pfree(ptr);
+ return pfree(ptr);
}
-static char *pgxml_pstrdup(const char *string)
+static char *
+pgxml_pstrdup(const char *string)
{
- return pstrdup(string);
+ return pstrdup(string);
}
-static void pgxml_parser_init()
+static void
+pgxml_parser_init()
{
- /* This code should also set parser settings from user-supplied
- info. Quite how these settings are made is another matter :) */
+ /*
+ * This code should also set parser settings from user-supplied info.
+ * Quite how these settings are made is another matter :)
+ */
- xmlMemSetup(pgxml_pfree, pgxml_palloc, pgxml_repalloc, pgxml_pstrdup);
- xmlInitParser();
+ xmlMemSetup(pgxml_pfree, pgxml_palloc, pgxml_repalloc, pgxml_pstrdup);
+ xmlInitParser();
}
@@ -70,86 +77,98 @@ PG_FUNCTION_INFO_V1(pgxml_parse);
Datum
pgxml_parse(PG_FUNCTION_ARGS)
{
- /* called as pgxml_parse(document) */
- xmlDocPtr doctree;
- text *t = PG_GETARG_TEXT_P(0); /*document buffer */
- int32 docsize = VARSIZE(t) - VARHDRSZ;
-
- pgxml_parser_init();
-
- doctree = xmlParseMemory((char *) VARDATA(t), docsize);
- if (doctree == NULL) {
- /* xmlCleanupParser(); */
- PG_RETURN_BOOL(false); /* i.e. not well-formed */
- }
- /* xmlCleanupParser(); */
- xmlFreeDoc(doctree);
- PG_RETURN_BOOL(true);
+ /* called as pgxml_parse(document) */
+ xmlDocPtr doctree;
+ text *t = PG_GETARG_TEXT_P(0); /* document buffer */
+ int32 docsize = VARSIZE(t) - VARHDRSZ;
+
+ pgxml_parser_init();
+
+ doctree = xmlParseMemory((char *) VARDATA(t), docsize);
+ if (doctree == NULL)
+ {
+ /* xmlCleanupParser(); */
+ PG_RETURN_BOOL(false); /* i.e. not well-formed */
+ }
+ /* xmlCleanupParser(); */
+ xmlFreeDoc(doctree);
+ PG_RETURN_BOOL(true);
}
-static xmlChar
-*pgxmlNodeSetToText(xmlNodeSetPtr nodeset,
- xmlDocPtr doc,
- xmlChar *toptagname,
- xmlChar *septagname,
- int format)
+static xmlChar
+*
+pgxmlNodeSetToText(xmlNodeSetPtr nodeset,
+ xmlDocPtr doc,
+ xmlChar * toptagname,
+ xmlChar * septagname,
+ int format)
{
- /* Function translates a nodeset into a text representation */
- /* iterates over each node in the set and calls xmlNodeDump to write
- it to an xmlBuffer -from which an xmlChar * string is returned. */
- /* each representation is surrounded by <tagname> ... </tagname> */
- /* if format==0, add a newline between nodes?? */
-
- xmlBufferPtr buf;
- xmlChar *result;
- int i;
-
- buf =xmlBufferCreate();
-
- if ((toptagname != NULL) && (xmlStrlen(toptagname)>0)) {
- xmlBufferWriteChar(buf,"<");
- xmlBufferWriteCHAR(buf,toptagname);
- xmlBufferWriteChar(buf,">");
- }
- if (nodeset != NULL) {
- for (i=0; i < nodeset->nodeNr; i++) {
- if ((septagname != NULL) && (xmlStrlen(septagname)>0)) {
- xmlBufferWriteChar(buf,"<");
- xmlBufferWriteCHAR(buf,septagname);
- xmlBufferWriteChar(buf,">");
- }
- xmlNodeDump(buf, doc, nodeset->nodeTab[i],1,(format==2));
-
- if ((septagname != NULL) && (xmlStrlen(septagname)>0)) {
- xmlBufferWriteChar(buf,"</");
- xmlBufferWriteCHAR(buf,septagname);
- xmlBufferWriteChar(buf,">");
- }
- if (format) {
- xmlBufferWriteChar(buf,"\n");
- }
- }
- }
-
- if ((toptagname != NULL) && (xmlStrlen(toptagname)>0)) {
- xmlBufferWriteChar(buf,"</");
- xmlBufferWriteCHAR(buf,toptagname);
- xmlBufferWriteChar(buf,">");
- }
- result = xmlStrdup(buf->content);
- xmlBufferFree(buf);
- return result;
+ /* Function translates a nodeset into a text representation */
+
+ /*
+ * iterates over each node in the set and calls xmlNodeDump to write
+ * it to an xmlBuffer -from which an xmlChar * string is returned.
+ */
+ /* each representation is surrounded by <tagname> ... </tagname> */
+ /* if format==0, add a newline between nodes?? */
+
+ xmlBufferPtr buf;
+ xmlChar *result;
+ int i;
+
+ buf = xmlBufferCreate();
+
+ if ((toptagname != NULL) && (xmlStrlen(toptagname) > 0))
+ {
+ xmlBufferWriteChar(buf, "<");
+ xmlBufferWriteCHAR(buf, toptagname);
+ xmlBufferWriteChar(buf, ">");
+ }
+ if (nodeset != NULL)
+ {
+ for (i = 0; i < nodeset->nodeNr; i++)
+ {
+ if ((septagname != NULL) && (xmlStrlen(septagname) > 0))
+ {
+ xmlBufferWriteChar(buf, "<");
+ xmlBufferWriteCHAR(buf, septagname);
+ xmlBufferWriteChar(buf, ">");
+ }
+ xmlNodeDump(buf, doc, nodeset->nodeTab[i], 1, (format == 2));
+
+ if ((septagname != NULL) && (xmlStrlen(septagname) > 0))
+ {
+ xmlBufferWriteChar(buf, "</");
+ xmlBufferWriteCHAR(buf, septagname);
+ xmlBufferWriteChar(buf, ">");
+ }
+ if (format)
+ xmlBufferWriteChar(buf, "\n");
+ }
+ }
+
+ if ((toptagname != NULL) && (xmlStrlen(toptagname) > 0))
+ {
+ xmlBufferWriteChar(buf, "</");
+ xmlBufferWriteCHAR(buf, toptagname);
+ xmlBufferWriteChar(buf, ">");
+ }
+ result = xmlStrdup(buf->content);
+ xmlBufferFree(buf);
+ return result;
}
-static xmlChar *pgxml_texttoxmlchar(text *textstring) {
- xmlChar *res;
- int32 txsize;
-
- txsize=VARSIZE(textstring)-VARHDRSZ;
- res = (xmlChar *) palloc(txsize+1);
- memcpy((char *)res, VARDATA(textstring), txsize);
- res[txsize]='\0';
- return res;
+static xmlChar *
+pgxml_texttoxmlchar(text *textstring)
+{
+ xmlChar *res;
+ int32 txsize;
+
+ txsize = VARSIZE(textstring) - VARHDRSZ;
+ res = (xmlChar *) palloc(txsize + 1);
+ memcpy((char *) res, VARDATA(textstring), txsize);
+ res[txsize] = '\0';
+ return res;
}
@@ -158,81 +177,86 @@ PG_FUNCTION_INFO_V1(pgxml_xpath);
Datum
pgxml_xpath(PG_FUNCTION_ARGS)
{
- xmlDocPtr doctree;
- xmlXPathContextPtr ctxt;
- xmlXPathObjectPtr res;
- xmlChar *xpath, *xpresstr, *toptag, *septag;
- xmlXPathCompExprPtr comppath;
-
- int32 docsize,ressize;
- text *t, *xpres;
-
- t = PG_GETARG_TEXT_P(0); /*document buffer */
- xpath = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(1)); /* XPath expression */
- toptag = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(2));
- septag = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(3));
-
- docsize = VARSIZE(t) - VARHDRSZ;
-
- pgxml_parser_init();
-
- doctree = xmlParseMemory((char *) VARDATA(t), docsize);
- if (doctree == NULL) { /* not well-formed */
- PG_RETURN_NULL();
- }
-
- ctxt = xmlXPathNewContext(doctree);
- ctxt->node = xmlDocGetRootElement(doctree);
-
- /* compile the path */
- comppath = xmlXPathCompile(xpath);
- if (comppath == NULL) {
- elog(NOTICE, "XPath syntax error");
- xmlFreeDoc(doctree);
- pfree((void *) xpath);
- PG_RETURN_NULL();
- }
-
- /* Now evaluate the path expression. */
- res = xmlXPathCompiledEval(comppath,ctxt);
- xmlXPathFreeCompExpr(comppath);
-
- if (res==NULL) {
- xmlFreeDoc(doctree);
- pfree((void *)xpath);
- PG_RETURN_NULL(); /* seems appropriate */
- }
- /* now we dump this node, ?surrounding by tags? */
- /* To do this, we look first at the type */
- switch(res->type) {
- case XPATH_NODESET:
- xpresstr = pgxmlNodeSetToText(res->nodesetval,
- doctree,
- toptag, septag, 0);
- break;
- case XPATH_STRING:
- xpresstr = xmlStrdup(res->stringval);
- break;
- default:
- elog(NOTICE,"Unsupported XQuery result: %d",res->type);
- xpresstr = xmlStrdup("<unsupported/>");
- }
-
-
- /* Now convert this result back to text */
- ressize = strlen(xpresstr);
- xpres = (text *) palloc(ressize+VARHDRSZ);
- memcpy(VARDATA(xpres),xpresstr,ressize);
- VARATT_SIZEP(xpres)=ressize + VARHDRSZ;
-
- /* Free various storage */
- xmlFreeDoc(doctree);
- pfree((void *) xpath);
- xmlFree(xpresstr);
-
- PG_RETURN_TEXT_P(xpres);
+ xmlDocPtr doctree;
+ xmlXPathContextPtr ctxt;
+ xmlXPathObjectPtr res;
+ xmlChar *xpath,
+ *xpresstr,
+ *toptag,
+ *septag;
+ xmlXPathCompExprPtr comppath;
+
+ int32 docsize,
+ ressize;
+ text *t,
+ *xpres;
+
+ t = PG_GETARG_TEXT_P(0); /* document buffer */
+ xpath = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(1)); /* XPath expression */
+ toptag = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(2));
+ septag = pgxml_texttoxmlchar(PG_GETARG_TEXT_P(3));
+
+ docsize = VARSIZE(t) - VARHDRSZ;
+
+ pgxml_parser_init();
+
+ doctree = xmlParseMemory((char *) VARDATA(t), docsize);
+ if (doctree == NULL)
+ { /* not well-formed */
+ PG_RETURN_NULL();
+ }
+
+ ctxt = xmlXPathNewContext(doctree);
+ ctxt->node = xmlDocGetRootElement(doctree);
+
+ /* compile the path */
+ comppath = xmlXPathCompile(xpath);
+ if (comppath == NULL)
+ {
+ elog(NOTICE, "XPath syntax error");
+ xmlFreeDoc(doctree);
+ pfree((void *) xpath);
+ PG_RETURN_NULL();
+ }
+
+ /* Now evaluate the path expression. */
+ res = xmlXPathCompiledEval(comppath, ctxt);
+ xmlXPathFreeCompExpr(comppath);
+
+ if (res == NULL)
+ {
+ xmlFreeDoc(doctree);
+ pfree((void *) xpath);
+ PG_RETURN_NULL(); /* seems appropriate */
+ }
+ /* now we dump this node, ?surrounding by tags? */
+ /* To do this, we look first at the type */
+ switch (res->type)
+ {
+ case XPATH_NODESET:
+ xpresstr = pgxmlNodeSetToText(res->nodesetval,
+ doctree,
+ toptag, septag, 0);
+ break;
+ case XPATH_STRING:
+ xpresstr = xmlStrdup(res->stringval);
+ break;
+ default:
+ elog(NOTICE, "Unsupported XQuery result: %d", res->type);
+ xpresstr = xmlStrdup("<unsupported/>");
+ }
+
+
+ /* Now convert this result back to text */
+ ressize = strlen(xpresstr);
+ xpres = (text *) palloc(ressize + VARHDRSZ);
+ memcpy(VARDATA(xpres), xpresstr, ressize);
+ VARATT_SIZEP(xpres) = ressize + VARHDRSZ;
+
+ /* Free various storage */
+ xmlFreeDoc(doctree);
+ pfree((void *) xpath);
+ xmlFree(xpresstr);
+
+ PG_RETURN_TEXT_P(xpres);
}
-
-
-
-
diff --git a/src/backend/access/common/heaptuple.c b/src/backend/access/common/heaptuple.c
index ef6cedd92d2..5b005b3163c 100644
--- a/src/backend/access/common/heaptuple.c
+++ b/src/backend/access/common/heaptuple.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.73 2001/08/23 23:06:37 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/heaptuple.c,v 1.74 2001/10/25 05:49:20 momjian Exp $
*
* NOTES
* The old interface functions have been converted to macros
@@ -241,7 +241,6 @@ nocachegetattr(HeapTuple tuple,
}
else
{
-
/*
* there's a null somewhere in the tuple
*/
@@ -347,7 +346,6 @@ nocachegetattr(HeapTuple tuple,
(HeapTupleNoNulls(tuple) || !att_isnull(j, bp)) &&
(HeapTupleAllFixed(tuple) || att[j]->attlen > 0)); j++)
{
-
/*
* Fix me when going to a machine with more than a four-byte
* word!
@@ -546,7 +544,6 @@ heap_deformtuple(HeapTuple tuple,
nulls[i] = ' ';
}
}
-
#endif
/* ----------------
@@ -739,7 +736,7 @@ heap_freetuple(HeapTuple htup)
*
* This routine forms a HeapTuple by copying the given structure (tuple
* data) and adding a generic header. Note that the tuple data is
- * presumed to contain no null fields. It is typically only useful
+ * presumed to contain no null fields. It is typically only useful
* for null-free system tables.
* ----------------
*/
@@ -771,7 +768,7 @@ heap_addheader(int natts, /* max domain index */
td->t_hoff = hoff;
td->t_natts = natts;
- td->t_infomask = HEAP_XMAX_INVALID; /* XXX sufficient? */
+ td->t_infomask = HEAP_XMAX_INVALID; /* XXX sufficient? */
memcpy((char *) td + hoff, structure, structlen);
diff --git a/src/backend/access/common/indextuple.c b/src/backend/access/common/indextuple.c
index 5c165e2c779..ad6e7cc4e5b 100644
--- a/src/backend/access/common/indextuple.c
+++ b/src/backend/access/common/indextuple.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.54 2001/03/22 06:16:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/indextuple.c,v 1.55 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -49,7 +49,6 @@ index_formtuple(TupleDesc tupleDescriptor,
#ifdef TOAST_INDEX_HACK
Datum untoasted_value[INDEX_MAX_KEYS];
bool untoasted_free[INDEX_MAX_KEYS];
-
#endif
if (numberOfAttributes > INDEX_MAX_KEYS)
@@ -338,7 +337,6 @@ nocache_index_getattr(IndexTuple tup,
for (; j <= attnum; j++)
{
-
/*
* Fix me when going to a machine with more than a four-byte
* word!
diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c
index da95edfc1fe..ea10330bf87 100644
--- a/src/backend/access/common/printtup.c
+++ b/src/backend/access/common/printtup.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.59 2001/03/22 06:16:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.60 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -197,7 +197,6 @@ printtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
continue;
if (OidIsValid(thisState->typoutput))
{
-
/*
* If we have a toasted datum, forcibly detoast it here to
* avoid memory leakage inside the type's output routine.
@@ -306,7 +305,6 @@ debugtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
if (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.
@@ -401,7 +399,6 @@ printtup_internal(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
/* send # of bytes, and opaque data */
if (thisState->typisvarlena)
{
-
/*
* If we have a toasted datum, must detoast before sending.
*/
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 37e895479e2..4b9d53df347 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.75 2001/06/25 21:11:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.76 2001/10/25 05:49:20 momjian Exp $
*
* NOTES
* some of the executor utility code such as "ExecTypeFromTL" should be
@@ -238,9 +238,9 @@ equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2)
Form_pg_attribute attr2 = tupdesc2->attrs[i];
/*
- * We do not need to check every single field here: we can disregard
- * attrelid, attnum (it was used to place the row in the attrs array)
- * and everything derived from the column datatype.
+ * We do not need to check every single field here: we can
+ * disregard attrelid, attnum (it was used to place the row in the
+ * attrs array) and everything derived from the column datatype.
*/
if (strcmp(NameStr(attr1->attname), NameStr(attr2->attname)) != 0)
return false;
@@ -399,7 +399,6 @@ TupleDescInitEntry(TupleDesc desc,
0, 0, 0);
if (!HeapTupleIsValid(tuple))
{
-
/*
* here type info does not exist yet so we just fill the attribute
* with dummy information and return false.
@@ -585,7 +584,6 @@ BuildDescForRelation(List *schema, char *relname)
typenameTypeId(typename),
atttypmod, attdim, attisset))
{
-
/*
* if TupleDescInitEntry() fails, it means there is no type in
* the system catalogs. So now we check if the type name
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 4a702fe3174..0c4e698f016 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.84 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.85 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -36,26 +36,26 @@
/* group flags ( in gistSplit ) */
#define LEFT_ADDED 0x01
-#define RIGHT_ADDED 0x02
+#define RIGHT_ADDED 0x02
#define BOTH_ADDED ( LEFT_ADDED | RIGHT_ADDED )
/*
* This defines only for shorter code, used in gistgetadjusted
* and gistadjsubkey only
*/
-#define FILLITEM(evp, isnullkey, okey, okeyb, rkey, rkeyb) do { \
- if ( isnullkey ) { \
- gistentryinit((evp), rkey, r, (Page) NULL , \
- (OffsetNumber) 0, rkeyb, FALSE); \
- } else { \
- gistentryinit((evp), okey, r, (Page) NULL, \
- (OffsetNumber) 0, okeyb, FALSE); \
- } \
+#define FILLITEM(evp, isnullkey, okey, okeyb, rkey, rkeyb) do { \
+ if ( isnullkey ) { \
+ gistentryinit((evp), rkey, r, (Page) NULL , \
+ (OffsetNumber) 0, rkeyb, FALSE); \
+ } else { \
+ gistentryinit((evp), okey, r, (Page) NULL, \
+ (OffsetNumber) 0, okeyb, FALSE); \
+ } \
} while(0)
#define FILLEV(isnull1, key1, key1b, isnull2, key2, key2b) do { \
- FILLITEM(*ev0p, isnull1, key1, key1b, key2, key2b); \
- FILLITEM(*ev1p, isnull2, key2, key2b, key1, key1b); \
+ FILLITEM(*ev0p, isnull1, key1, key1b, key2, key2b); \
+ FILLITEM(*ev1p, isnull2, key2, key2b, key1, key1b); \
} while(0);
/* Working state for gistbuild and its callback */
@@ -69,11 +69,11 @@ typedef struct
/* non-export function prototypes */
static void gistbuildCallback(Relation index,
- HeapTuple htup,
- Datum *attdata,
- char *nulls,
- bool tupleIsAlive,
- void *state);
+ HeapTuple htup,
+ Datum *attdata,
+ char *nulls,
+ bool tupleIsAlive,
+ void *state);
static void gistdoinsert(Relation r,
IndexTuple itup,
InsertIndexResult *res,
@@ -103,14 +103,14 @@ static IndexTuple gistgetadjusted(Relation r,
IndexTuple oldtup,
IndexTuple addtup,
GISTSTATE *giststate);
-static int gistfindgroup( GISTSTATE *giststate,
- GISTENTRY *valvec, GIST_SPLITVEC * spl );
+static int gistfindgroup(GISTSTATE *giststate,
+ GISTENTRY *valvec, GIST_SPLITVEC *spl);
static void gistadjsubkey(Relation r,
- IndexTuple *itup, int *len,
- GIST_SPLITVEC *v,
- GISTSTATE *giststate);
-static IndexTuple gistFormTuple( GISTSTATE *giststate,
- Relation r, Datum attdata[], int datumsize[], bool isnull[] );
+ IndexTuple *itup, int *len,
+ GIST_SPLITVEC *v,
+ GISTSTATE *giststate);
+static IndexTuple gistFormTuple(GISTSTATE *giststate,
+ Relation r, Datum attdata[], int datumsize[], bool isnull[]);
static IndexTuple *gistSplit(Relation r,
Buffer buffer,
IndexTuple *itup,
@@ -124,6 +124,7 @@ static OffsetNumber gistchoose(Relation r, Page p,
IndexTuple it,
GISTSTATE *giststate);
static void gistdelete(Relation r, ItemPointer tid);
+
#ifdef GIST_PAGEADDITEM
static IndexTuple gist_tuple_replacekey(Relation r,
GISTENTRY entry, IndexTuple t);
@@ -132,14 +133,15 @@ static void gistcentryinit(GISTSTATE *giststate, int nkey,
GISTENTRY *e, Datum k,
Relation r, Page pg,
OffsetNumber o, int b, bool l, bool isNull);
-static void gistDeCompressAtt( GISTSTATE *giststate, Relation r,
- IndexTuple tuple, Page p, OffsetNumber o,
- GISTENTRY attdata[], bool decompvec[], bool isnull[] );
-static void gistFreeAtt( Relation r, GISTENTRY attdata[], bool decompvec[] );
-static void gistpenalty( GISTSTATE *giststate, int attno,
+static void gistDeCompressAtt(GISTSTATE *giststate, Relation r,
+ IndexTuple tuple, Page p, OffsetNumber o,
+ GISTENTRY attdata[], bool decompvec[], bool isnull[]);
+static void gistFreeAtt(Relation r, GISTENTRY attdata[], bool decompvec[]);
+static void gistpenalty(GISTSTATE *giststate, int attno,
GISTENTRY *key1, bool isNull1,
- GISTENTRY *key2, bool isNull2,
- float *penalty );
+ GISTENTRY *key2, bool isNull2,
+ float *penalty);
+
#undef GISTDEBUG
#ifdef GISTDEBUG
@@ -182,7 +184,7 @@ gistbuild(PG_FUNCTION_ARGS)
/* do the heap scan */
reltuples = IndexBuildHeapScan(heap, index, indexInfo,
- gistbuildCallback, (void *) &buildstate);
+ gistbuildCallback, (void *) &buildstate);
/* okay, all heap tuples are indexed */
@@ -208,7 +210,7 @@ gistbuild(PG_FUNCTION_ARGS)
UpdateStats(irelid, buildstate.indtuples);
}
- freeGISTstate( &buildstate.giststate );
+ freeGISTstate(&buildstate.giststate);
#ifdef GISTDEBUG
gist_dumptree(index, 0, GISTP_ROOT, 0);
#endif
@@ -227,28 +229,31 @@ gistbuildCallback(Relation index,
bool tupleIsAlive,
void *state)
{
- GISTBuildState *buildstate = (GISTBuildState *) state;
+ GISTBuildState *buildstate = (GISTBuildState *) state;
IndexTuple itup;
bool compvec[INDEX_MAX_KEYS];
GISTENTRY tmpcentry;
int i;
- /* GiST cannot index tuples with leading NULLs */
- if ( nulls[0] == 'n' )
- return;
+ /* GiST cannot index tuples with leading NULLs */
+ if (nulls[0] == 'n')
+ return;
/* immediately compress keys to normalize */
for (i = 0; i < buildstate->numindexattrs; i++)
{
- if ( nulls[i]=='n' ) {
+ if (nulls[i] == 'n')
+ {
attdata[i] = (Datum) 0;
compvec[i] = FALSE;
- } else {
+ }
+ else
+ {
gistcentryinit(&buildstate->giststate, i, &tmpcentry, attdata[i],
- (Relation) NULL, (Page) NULL, (OffsetNumber) 0,
- -1 /* size is currently bogus */ , TRUE, FALSE);
+ (Relation) NULL, (Page) NULL, (OffsetNumber) 0,
+ -1 /* size is currently bogus */ , TRUE, FALSE);
if (attdata[i] != tmpcentry.key &&
- !( isAttByVal(&buildstate->giststate, i)))
+ !(isAttByVal(&buildstate->giststate, i)))
compvec[i] = TRUE;
else
compvec[i] = FALSE;
@@ -262,10 +267,10 @@ gistbuildCallback(Relation index,
/*
* Since we already have the index relation locked, we call
- * gistdoinsert directly. Normal access method calls dispatch
- * through gistinsert, which locks the relation for write. This
- * is the right thing to do if you're inserting single tups, but
- * not when you're initializing the whole index at once.
+ * gistdoinsert directly. Normal access method calls dispatch through
+ * gistinsert, which locks the relation for write. This is the right
+ * thing to do if you're inserting single tups, but not when you're
+ * initializing the whole index at once.
*/
gistdoinsert(index, itup, NULL, &buildstate->giststate);
@@ -291,6 +296,7 @@ gistinsert(PG_FUNCTION_ARGS)
Datum *datum = (Datum *) PG_GETARG_POINTER(1);
char *nulls = (char *) PG_GETARG_POINTER(2);
ItemPointer ht_ctid = (ItemPointer) PG_GETARG_POINTER(3);
+
#ifdef NOT_USED
Relation heapRel = (Relation) PG_GETARG_POINTER(4);
#endif
@@ -303,29 +309,33 @@ gistinsert(PG_FUNCTION_ARGS)
/*
* Since GIST is not marked "amconcurrent" in pg_am, caller should
- * have acquired exclusive lock on index relation. We need no locking
+ * have acquired exclusive lock on index relation. We need no locking
* here.
*/
- /* GiST cannot index tuples with leading NULLs */
- if ( nulls[0] == 'n' ) {
+ /* GiST cannot index tuples with leading NULLs */
+ if (nulls[0] == 'n')
+ {
res = NULL;
PG_RETURN_POINTER(res);
- }
+ }
initGISTstate(&giststate, r);
/* immediately compress keys to normalize */
for (i = 0; i < r->rd_att->natts; i++)
{
- if ( nulls[i]=='n' ) {
+ if (nulls[i] == 'n')
+ {
datum[i] = (Datum) 0;
compvec[i] = FALSE;
- } else {
+ }
+ else
+ {
gistcentryinit(&giststate, i, &tmpentry, datum[i],
- (Relation) NULL, (Page) NULL, (OffsetNumber) 0,
- -1 /* size is currently bogus */ , TRUE, FALSE );
- if (datum[i] != tmpentry.key && !( isAttByVal( &giststate, i)))
+ (Relation) NULL, (Page) NULL, (OffsetNumber) 0,
+ -1 /* size is currently bogus */ , TRUE, FALSE);
+ if (datum[i] != tmpentry.key && !(isAttByVal(&giststate, i)))
compvec[i] = TRUE;
else
compvec[i] = FALSE;
@@ -342,7 +352,7 @@ gistinsert(PG_FUNCTION_ARGS)
if (compvec[i] == TRUE)
pfree(DatumGetPointer(datum[i]));
pfree(itup);
- freeGISTstate( &giststate );
+ freeGISTstate(&giststate);
PG_RETURN_POINTER(res);
}
@@ -376,12 +386,12 @@ gistPageAddItem(GISTSTATE *giststate,
* offset for insertion
*/
datum = index_getattr(itup, 1, r->rd_att, &IsNull);
- gistdentryinit(giststate, 0,dentry, datum,
+ gistdentryinit(giststate, 0, dentry, datum,
(Relation) 0, (Page) 0,
(OffsetNumber) InvalidOffsetNumber,
- ATTSIZE( datum, r, 1, IsNull ),
+ ATTSIZE(datum, r, 1, IsNull),
FALSE, IsNull);
- gistcentryinit(giststate, 0,&tmpcentry, dentry->key, r, page,
+ gistcentryinit(giststate, 0, &tmpcentry, dentry->key, r, page,
offsetNumber, dentry->bytes, FALSE);
*newtup = gist_tuple_replacekey(r, tmpcentry, itup);
retval = PageAddItem(page, (Item) *newtup, IndexTupleSize(*newtup),
@@ -392,7 +402,7 @@ gistPageAddItem(GISTSTATE *giststate,
/* be tidy */
if (DatumGetPointer(tmpcentry.key) != NULL &&
tmpcentry.key != dentry->key &&
- tmpcentry.key != datum )
+ tmpcentry.key != datum)
pfree(DatumGetPointer(tmpcentry.key));
return (retval);
}
@@ -471,6 +481,7 @@ gistlayerinsert(Relation r, BlockNumber blkno,
if (!(ret & SPLITED))
{
IndexTuple newtup = gistgetadjusted(r, oldtup, (*itup)[0], giststate);
+
if (!newtup)
{
/* not need to update key */
@@ -492,8 +503,10 @@ gistlayerinsert(Relation r, BlockNumber blkno,
if (gistnospace(page, (*itup), *len))
{
/* no space for insertion */
- IndexTuple *itvec, *newitup;
- int tlen,oldlen;
+ IndexTuple *itvec,
+ *newitup;
+ int tlen,
+ oldlen;
ret |= SPLITED;
itvec = gistreadbuffer(r, buffer, &tlen);
@@ -503,9 +516,9 @@ gistlayerinsert(Relation r, BlockNumber blkno,
(opaque->flags & F_LEAF) ? res : NULL); /* res only for
* inserting in leaf */
ReleaseBuffer(buffer);
- do
- pfree( (*itup)[ oldlen-1 ] );
- while ( (--oldlen) > 0 );
+ do
+ pfree((*itup)[oldlen - 1]);
+ while ((--oldlen) > 0);
pfree((*itup));
pfree(itvec);
*itup = newitup;
@@ -539,7 +552,8 @@ gistlayerinsert(Relation r, BlockNumber blkno,
* parent
*/
IndexTuple newtup = gistunion(r, (*itup), *len, giststate);
- ItemPointerSet(&(newtup->t_tid), blkno, 1);
+
+ ItemPointerSet(&(newtup->t_tid), blkno, 1);
for (i = 0; i < *len; i++)
pfree((*itup)[i]);
@@ -560,10 +574,11 @@ gistwritebuffer(Relation r, Page page, IndexTuple *itup,
{
OffsetNumber l = InvalidOffsetNumber;
int i;
+
#ifdef GIST_PAGEADDITEM
GISTENTRY tmpdentry;
IndexTuple newtup;
- bool IsNull;
+ bool IsNull;
#endif
for (i = 0; i < len; i++)
{
@@ -573,13 +588,13 @@ gistwritebuffer(Relation r, Page page, IndexTuple *itup,
off, LP_USED, &tmpdentry, &newtup);
off = OffsetNumberNext(off);
if (DatumGetPointer(tmpdentry.key) != NULL &&
- tmpdentry.key != index_getattr(itup[i], 1, r->rd_att, &IsNull))
+ tmpdentry.key != index_getattr(itup[i], 1, r->rd_att, &IsNull))
pfree(DatumGetPointer(tmpdentry.key));
if (itup[i] != newtup)
pfree(newtup);
#else
l = PageAddItem(page, (Item) itup[i], IndexTupleSize(itup[i]),
- off, LP_USED);
+ off, LP_USED);
if (l == InvalidOffsetNumber)
elog(ERROR, "gist: failed to add index item to %s",
RelationGetRelationName(r));
@@ -618,7 +633,7 @@ gistreadbuffer(Relation r, Buffer buffer, int *len /* out */ )
*len = maxoff;
itvec = palloc(sizeof(IndexTuple) * maxoff);
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
- itvec[i-1] = (IndexTuple) PageGetItem(p, PageGetItemId(p, i));
+ itvec[i - 1] = (IndexTuple) PageGetItem(p, PageGetItemId(p, i));
return itvec;
}
@@ -639,74 +654,85 @@ gistjoinvector(IndexTuple *itvec, int *len, IndexTuple *additvec, int addlen)
* return union of itup vector
*/
static IndexTuple
-gistunion(Relation r, IndexTuple *itvec, int len, GISTSTATE *giststate) {
+gistunion(Relation r, IndexTuple *itvec, int len, GISTSTATE *giststate)
+{
Datum attr[INDEX_MAX_KEYS];
- bool whatfree[INDEX_MAX_KEYS];
+ bool whatfree[INDEX_MAX_KEYS];
char isnull[INDEX_MAX_KEYS];
bytea *evec;
Datum datum;
int datumsize,
- i,j;
+ i,
+ j;
GISTENTRY centry[INDEX_MAX_KEYS];
- bool *needfree;
- IndexTuple newtup;
- bool IsNull;
- int reallen;
+ bool *needfree;
+ IndexTuple newtup;
+ bool IsNull;
+ int reallen;
- needfree = (bool *) palloc((( len==1 ) ? 2 : len ) * sizeof(bool));
- evec = (bytea *) palloc((( len==1 ) ? 2 : len ) * sizeof(GISTENTRY) + VARHDRSZ);
+ needfree = (bool *) palloc(((len == 1) ? 2 : len) * sizeof(bool));
+ evec = (bytea *) palloc(((len == 1) ? 2 : len) * sizeof(GISTENTRY) + VARHDRSZ);
- for (j = 0; j < r->rd_att->natts; j++) {
- reallen=0;
- for (i = 0; i < len; i++) {
- datum = index_getattr(itvec[i], j+1, giststate->tupdesc, &IsNull);
- if ( IsNull ) continue;
+ for (j = 0; j < r->rd_att->natts; j++)
+ {
+ reallen = 0;
+ for (i = 0; i < len; i++)
+ {
+ datum = index_getattr(itvec[i], j + 1, giststate->tupdesc, &IsNull);
+ if (IsNull)
+ continue;
gistdentryinit(giststate, j,
&((GISTENTRY *) VARDATA(evec))[reallen],
datum,
- (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
- ATTSIZE( datum, giststate->tupdesc, j+1, IsNull ), FALSE, IsNull);
- if ( (!isAttByVal(giststate,j)) &&
- ((GISTENTRY *) VARDATA(evec))[reallen].key != datum )
+ (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
+ ATTSIZE(datum, giststate->tupdesc, j + 1, IsNull), FALSE, IsNull);
+ if ((!isAttByVal(giststate, j)) &&
+ ((GISTENTRY *) VARDATA(evec))[reallen].key != datum)
needfree[reallen] = TRUE;
else
needfree[reallen] = FALSE;
reallen++;
}
- if ( reallen == 0 ) {
+ if (reallen == 0)
+ {
attr[j] = (Datum) 0;
isnull[j] = 'n';
whatfree[j] = FALSE;
- } else {
- if ( reallen == 1 ) {
+ }
+ else
+ {
+ if (reallen == 1)
+ {
VARATT_SIZEP(evec) = 2 * sizeof(GISTENTRY) + VARHDRSZ;
- gistentryinit(((GISTENTRY *) VARDATA(evec))[1],
- ((GISTENTRY *) VARDATA(evec))[0].key, r, (Page) NULL,
- (OffsetNumber) 0, ((GISTENTRY *) VARDATA(evec))[0].bytes, FALSE);
+ gistentryinit(((GISTENTRY *) VARDATA(evec))[1],
+ ((GISTENTRY *) VARDATA(evec))[0].key, r, (Page) NULL,
+ (OffsetNumber) 0, ((GISTENTRY *) VARDATA(evec))[0].bytes, FALSE);
- } else {
- VARATT_SIZEP(evec) = reallen * sizeof(GISTENTRY) + VARHDRSZ;
}
+ else
+ VARATT_SIZEP(evec) = reallen * sizeof(GISTENTRY) + VARHDRSZ;
datum = FunctionCall2(&giststate->unionFn[j],
- PointerGetDatum(evec),
- PointerGetDatum(&datumsize));
-
+ PointerGetDatum(evec),
+ PointerGetDatum(&datumsize));
+
for (i = 0; i < reallen; i++)
- if ( needfree[i] )
+ if (needfree[i])
pfree(DatumGetPointer(((GISTENTRY *) VARDATA(evec))[i].key));
gistcentryinit(giststate, j, &centry[j], datum,
- (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
- datumsize, FALSE, FALSE);
+ (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
+ datumsize, FALSE, FALSE);
isnull[j] = ' ';
- attr[j] = centry[j].key;
- if ( !isAttByVal( giststate, j ) ) {
+ attr[j] = centry[j].key;
+ if (!isAttByVal(giststate, j))
+ {
whatfree[j] = TRUE;
- if ( centry[j].key != datum )
+ if (centry[j].key != datum)
pfree(DatumGetPointer(datum));
- } else
+ }
+ else
whatfree[j] = FALSE;
}
}
@@ -716,7 +742,7 @@ gistunion(Relation r, IndexTuple *itvec, int len, GISTSTATE *giststate) {
newtup = (IndexTuple) index_formtuple(giststate->tupdesc, attr, isnull);
for (j = 0; j < r->rd_att->natts; j++)
- if ( whatfree[j] )
+ if (whatfree[j])
pfree(DatumGetPointer(attr[j]));
return newtup;
@@ -732,7 +758,8 @@ gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple addtup, GISTSTATE *gis
bytea *evec;
Datum datum;
int datumsize;
- bool result, neednew = false;
+ bool result,
+ neednew = false;
char isnull[INDEX_MAX_KEYS],
whatfree[INDEX_MAX_KEYS];
Datum attr[INDEX_MAX_KEYS];
@@ -744,104 +771,125 @@ gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple addtup, GISTSTATE *gis
bool olddec[INDEX_MAX_KEYS],
adddec[INDEX_MAX_KEYS];
bool oldisnull[INDEX_MAX_KEYS],
- addisnull[INDEX_MAX_KEYS];
+ addisnull[INDEX_MAX_KEYS];
IndexTuple newtup = NULL;
- int j;
+ int j;
evec = (bytea *) palloc(2 * sizeof(GISTENTRY) + VARHDRSZ);
VARATT_SIZEP(evec) = 2 * sizeof(GISTENTRY) + VARHDRSZ;
ev0p = &((GISTENTRY *) VARDATA(evec))[0];
ev1p = &((GISTENTRY *) VARDATA(evec))[1];
-
- gistDeCompressAtt( giststate, r, oldtup, (Page) NULL,
- (OffsetNumber) 0, oldatt, olddec, oldisnull);
- gistDeCompressAtt( giststate, r, addtup, (Page) NULL,
- (OffsetNumber) 0, addatt, adddec, addisnull);
+ gistDeCompressAtt(giststate, r, oldtup, (Page) NULL,
+ (OffsetNumber) 0, oldatt, olddec, oldisnull);
+
+ gistDeCompressAtt(giststate, r, addtup, (Page) NULL,
+ (OffsetNumber) 0, addatt, adddec, addisnull);
+
-
- for( j=0; j<r->rd_att->natts; j++ ) {
- if ( oldisnull[j] && addisnull[j] ) {
+ for (j = 0; j < r->rd_att->natts; j++)
+ {
+ if (oldisnull[j] && addisnull[j])
+ {
isnull[j] = 'n';
attr[j] = (Datum) 0;
whatfree[j] = FALSE;
- } else {
+ }
+ else
+ {
FILLEV(
- oldisnull[j], oldatt[j].key, oldatt[j].bytes,
- addisnull[j], addatt[j].key, addatt[j].bytes
- );
-
+ oldisnull[j], oldatt[j].key, oldatt[j].bytes,
+ addisnull[j], addatt[j].key, addatt[j].bytes
+ );
+
datum = FunctionCall2(&giststate->unionFn[j],
- PointerGetDatum(evec),
- PointerGetDatum(&datumsize));
+ PointerGetDatum(evec),
+ PointerGetDatum(&datumsize));
- if ( oldisnull[j] || addisnull[j] ) {
- if ( oldisnull[j] )
+ if (oldisnull[j] || addisnull[j])
+ {
+ if (oldisnull[j])
neednew = true;
- } else {
+ }
+ else
+ {
FunctionCall3(&giststate->equalFn[j],
- ev0p->key,
- datum,
- PointerGetDatum(&result));
-
- if ( !result )
+ ev0p->key,
+ datum,
+ PointerGetDatum(&result));
+
+ if (!result)
neednew = true;
}
- if ( olddec[j] ) pfree( DatumGetPointer(oldatt[j].key) );
- if ( adddec[j] ) pfree( DatumGetPointer(addatt[j].key) );
+ if (olddec[j])
+ pfree(DatumGetPointer(oldatt[j].key));
+ if (adddec[j])
+ pfree(DatumGetPointer(addatt[j].key));
gistcentryinit(giststate, j, &centry[j], datum,
- (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
- datumsize, FALSE, FALSE);
-
+ (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
+ datumsize, FALSE, FALSE);
+
isnull[j] = ' ';
- attr[j] = centry[j].key;
- if ( (!isAttByVal( giststate, j ) ) ) {
+ attr[j] = centry[j].key;
+ if ((!isAttByVal(giststate, j)))
+ {
whatfree[j] = TRUE;
- if ( centry[j].key != datum )
+ if (centry[j].key != datum)
pfree(DatumGetPointer(datum));
- } else
+ }
+ else
whatfree[j] = FALSE;
}
- }
+ }
pfree(evec);
- if (neednew) {
+ if (neednew)
+ {
/* need to update key */
newtup = (IndexTuple) index_formtuple(giststate->tupdesc, attr, isnull);
newtup->t_tid = oldtup->t_tid;
}
-
+
for (j = 0; j < r->rd_att->natts; j++)
- if ( whatfree[j] )
+ if (whatfree[j])
pfree(DatumGetPointer(attr[j]));
return newtup;
}
static void
-gistunionsubkey( Relation r, GISTSTATE *giststate, IndexTuple *itvec, GIST_SPLITVEC * spl ) {
- int i,j,lr;
+gistunionsubkey(Relation r, GISTSTATE *giststate, IndexTuple *itvec, GIST_SPLITVEC *spl)
+{
+ int i,
+ j,
+ lr;
Datum *attr;
- bool *needfree, IsNull;
- int len, *attrsize;
- OffsetNumber *entries;
- bytea *evec;
+ bool *needfree,
+ IsNull;
+ int len,
+ *attrsize;
+ OffsetNumber *entries;
+ bytea *evec;
Datum datum;
- int datumsize;
- int reallen;
- bool *isnull;
+ int datumsize;
+ int reallen;
+ bool *isnull;
- for(lr=0;lr<=1;lr++) {
- if ( lr ) {
+ for (lr = 0; lr <= 1; lr++)
+ {
+ if (lr)
+ {
attrsize = spl->spl_lattrsize;
attr = spl->spl_lattr;
len = spl->spl_nleft;
entries = spl->spl_left;
isnull = spl->spl_lisnull;
- } else {
+ }
+ else
+ {
attrsize = spl->spl_rattrsize;
attr = spl->spl_rattr;
len = spl->spl_nright;
@@ -849,58 +897,64 @@ gistunionsubkey( Relation r, GISTSTATE *giststate, IndexTuple *itvec, GIST_SPLIT
isnull = spl->spl_risnull;
}
- needfree = (bool *) palloc( (( len==1 ) ? 2 : len ) * sizeof(bool));
- evec = (bytea *) palloc( (( len==1 ) ? 2 : len ) * sizeof(GISTENTRY) + VARHDRSZ);
- for (j = 1; j < r->rd_att->natts; j++) {
+ needfree = (bool *) palloc(((len == 1) ? 2 : len) * sizeof(bool));
+ evec = (bytea *) palloc(((len == 1) ? 2 : len) * sizeof(GISTENTRY) + VARHDRSZ);
+ for (j = 1; j < r->rd_att->natts; j++)
+ {
reallen = 0;
- for (i = 0; i < len; i++) {
- if ( spl->spl_idgrp[ entries[i] ] )
+ for (i = 0; i < len; i++)
+ {
+ if (spl->spl_idgrp[entries[i]])
continue;
- datum = index_getattr(itvec[ entries[i]-1 ], j+1,
+ datum = index_getattr(itvec[entries[i] - 1], j + 1,
giststate->tupdesc, &IsNull);
- if ( IsNull )
+ if (IsNull)
continue;
gistdentryinit(giststate, j,
&((GISTENTRY *) VARDATA(evec))[reallen],
datum,
(Relation) NULL, (Page) NULL,
(OffsetNumber) NULL,
- ATTSIZE( datum, giststate->tupdesc, j+1, IsNull ), FALSE, IsNull);
- if ( (!isAttByVal( giststate, j )) &&
- ((GISTENTRY *) VARDATA(evec))[reallen].key != datum )
+ ATTSIZE(datum, giststate->tupdesc, j + 1, IsNull), FALSE, IsNull);
+ if ((!isAttByVal(giststate, j)) &&
+ ((GISTENTRY *) VARDATA(evec))[reallen].key != datum)
needfree[reallen] = TRUE;
else
needfree[reallen] = FALSE;
reallen++;
-
- }
- if ( reallen == 0 )
+
+ }
+ if (reallen == 0)
{
datum = (Datum) 0;
datumsize = 0;
isnull[j] = true;
- } else {
+ }
+ else
+ {
/*
- * ((GISTENTRY *) VARDATA(evec))[0].bytes may be not defined,
- * so form union with itself
+ * ((GISTENTRY *) VARDATA(evec))[0].bytes may be not
+ * defined, so form union with itself
*/
- if ( reallen == 1 ) {
+ if (reallen == 1)
+ {
VARATT_SIZEP(evec) = 2 * sizeof(GISTENTRY) + VARHDRSZ;
- memcpy( (void*) &((GISTENTRY *) VARDATA(evec))[1],
- (void*) &((GISTENTRY *) VARDATA(evec))[0],
- sizeof( GISTENTRY ) );
- } else
+ memcpy((void *) &((GISTENTRY *) VARDATA(evec))[1],
+ (void *) &((GISTENTRY *) VARDATA(evec))[0],
+ sizeof(GISTENTRY));
+ }
+ else
VARATT_SIZEP(evec) = reallen * sizeof(GISTENTRY) + VARHDRSZ;
datum = FunctionCall2(&giststate->unionFn[j],
- PointerGetDatum(evec),
- PointerGetDatum(&datumsize));
+ PointerGetDatum(evec),
+ PointerGetDatum(&datumsize));
isnull[j] = false;
- }
+ }
for (i = 0; i < reallen; i++)
- if ( needfree[i] )
+ if (needfree[i])
pfree(DatumGetPointer(((GISTENTRY *) VARDATA(evec))[i].key));
-
+
attr[j] = datum;
attrsize[j] = datumsize;
}
@@ -910,51 +964,63 @@ gistunionsubkey( Relation r, GISTSTATE *giststate, IndexTuple *itvec, GIST_SPLIT
}
/*
- * find group in vector with equial value
+ * find group in vector with equial value
*/
static int
-gistfindgroup( GISTSTATE *giststate, GISTENTRY *valvec, GIST_SPLITVEC * spl ) {
- int i,j,len;
- int curid = 1;
- bool result;
-
- /*
- * first key is always not null (see gistinsert),
- * so we may not check for nulls
- */
-
- for(i=0; i<spl->spl_nleft; i++) {
- if ( spl->spl_idgrp[ spl->spl_left[i] ]) continue;
+gistfindgroup(GISTSTATE *giststate, GISTENTRY *valvec, GIST_SPLITVEC *spl)
+{
+ int i,
+ j,
+ len;
+ int curid = 1;
+ bool result;
+
+ /*
+ * first key is always not null (see gistinsert), so we may not check
+ * for nulls
+ */
+
+ for (i = 0; i < spl->spl_nleft; i++)
+ {
+ if (spl->spl_idgrp[spl->spl_left[i]])
+ continue;
len = 0;
/* find all equal value in right part */
- for(j=0; j < spl->spl_nright; j++) {
- if ( spl->spl_idgrp[ spl->spl_right[j] ]) continue;
+ for (j = 0; j < spl->spl_nright; j++)
+ {
+ if (spl->spl_idgrp[spl->spl_right[j]])
+ continue;
FunctionCall3(&giststate->equalFn[0],
- valvec[ spl->spl_left[i] ].key,
- valvec[ spl->spl_right[j] ].key,
+ valvec[spl->spl_left[i]].key,
+ valvec[spl->spl_right[j]].key,
PointerGetDatum(&result));
- if ( result ) {
- spl->spl_idgrp[ spl->spl_right[j] ] = curid;
+ if (result)
+ {
+ spl->spl_idgrp[spl->spl_right[j]] = curid;
len++;
}
}
/* find all other equal value in left part */
- if ( len ) {
- /* add current val to list of equial values*/
- spl->spl_idgrp[ spl->spl_left[i] ]=curid;
+ if (len)
+ {
+ /* add current val to list of equial values */
+ spl->spl_idgrp[spl->spl_left[i]] = curid;
/* searching .. */
- for(j=i+1; j < spl->spl_nleft; j++) {
- if ( spl->spl_idgrp[ spl->spl_left[j] ]) continue;
+ for (j = i + 1; j < spl->spl_nleft; j++)
+ {
+ if (spl->spl_idgrp[spl->spl_left[j]])
+ continue;
FunctionCall3(&giststate->equalFn[0],
- valvec[ spl->spl_left[i] ].key,
- valvec[ spl->spl_left[j] ].key,
+ valvec[spl->spl_left[i]].key,
+ valvec[spl->spl_left[j]].key,
PointerGetDatum(&result));
- if ( result ) {
- spl->spl_idgrp[ spl->spl_left[j] ] = curid;
+ if (result)
+ {
+ spl->spl_idgrp[spl->spl_left[j]] = curid;
len++;
}
}
- spl->spl_ngrp[curid] = len+1;
+ spl->spl_ngrp[curid] = len + 1;
curid++;
}
}
@@ -968,40 +1034,50 @@ gistfindgroup( GISTSTATE *giststate, GISTENTRY *valvec, GIST_SPLITVEC * spl ) {
*/
static void
gistadjsubkey(Relation r,
- IndexTuple *itup, /* contains compressed entry */
- int *len,
- GIST_SPLITVEC *v,
- GISTSTATE *giststate
- ) {
- int curlen;
- OffsetNumber *curwpos;
- bool decfree[INDEX_MAX_KEYS];
- GISTENTRY entry,identry[INDEX_MAX_KEYS], *ev0p, *ev1p;
- float lpenalty, rpenalty;
- bytea *evec;
- int datumsize;
- bool isnull[INDEX_MAX_KEYS];
- int i,j;
+ IndexTuple *itup, /* contains compressed entry */
+ int *len,
+ GIST_SPLITVEC *v,
+ GISTSTATE *giststate
+)
+{
+ int curlen;
+ OffsetNumber *curwpos;
+ bool decfree[INDEX_MAX_KEYS];
+ GISTENTRY entry,
+ identry[INDEX_MAX_KEYS],
+ *ev0p,
+ *ev1p;
+ float lpenalty,
+ rpenalty;
+ bytea *evec;
+ int datumsize;
+ bool isnull[INDEX_MAX_KEYS];
+ int i,
+ j;
Datum datum;
/* clear vectors */
curlen = v->spl_nleft;
curwpos = v->spl_left;
- for( i=0; i<v->spl_nleft;i++ )
- if ( v->spl_idgrp[ v->spl_left[i] ] == 0 ) {
+ for (i = 0; i < v->spl_nleft; i++)
+ if (v->spl_idgrp[v->spl_left[i]] == 0)
+ {
*curwpos = v->spl_left[i];
curwpos++;
- } else
+ }
+ else
curlen--;
v->spl_nleft = curlen;
curlen = v->spl_nright;
curwpos = v->spl_right;
- for( i=0; i<v->spl_nright;i++ )
- if ( v->spl_idgrp[ v->spl_right[i] ] == 0 ) {
+ for (i = 0; i < v->spl_nright; i++)
+ if (v->spl_idgrp[v->spl_right[i]] == 0)
+ {
*curwpos = v->spl_right[i];
curwpos++;
- } else
+ }
+ else
curlen--;
v->spl_nright = curlen;
@@ -1011,82 +1087,98 @@ gistadjsubkey(Relation r,
ev1p = &((GISTENTRY *) VARDATA(evec))[1];
/* add equivalent tuple */
- for(i = 0; i< *len; i++) {
- if ( v->spl_idgrp[ i+1 ]==0 ) /* already inserted */
+ for (i = 0; i < *len; i++)
+ {
+ if (v->spl_idgrp[i + 1] == 0) /* already inserted */
continue;
- gistDeCompressAtt( giststate, r, itup[i], (Page) NULL, (OffsetNumber) 0,
- identry, decfree, isnull);
+ gistDeCompressAtt(giststate, r, itup[i], (Page) NULL, (OffsetNumber) 0,
+ identry, decfree, isnull);
- v->spl_ngrp[ v->spl_idgrp[ i+1 ] ]--;
- if ( v->spl_ngrp[ v->spl_idgrp[ i+1 ] ] == 0 &&
- (v->spl_grpflag[ v->spl_idgrp[ i+1 ] ] & BOTH_ADDED) != BOTH_ADDED ) {
+ v->spl_ngrp[v->spl_idgrp[i + 1]]--;
+ if (v->spl_ngrp[v->spl_idgrp[i + 1]] == 0 &&
+ (v->spl_grpflag[v->spl_idgrp[i + 1]] & BOTH_ADDED) != BOTH_ADDED)
+ {
/* force last in group */
rpenalty = 1.0;
- lpenalty = ( v->spl_grpflag[ v->spl_idgrp[ i+1 ] ] & LEFT_ADDED ) ? 2.0 : 0.0;
- } else {
- /*where?*/
- for( j=1; j<r->rd_att->natts; j++ ) {
- gistentryinit(entry,v->spl_lattr[j], r, (Page) NULL,
- (OffsetNumber) 0, v->spl_lattrsize[j], FALSE);
- gistpenalty( giststate, j, &entry, v->spl_lisnull[j],
- &identry[j], isnull[j], &lpenalty);
-
- gistentryinit(entry,v->spl_rattr[j], r, (Page) NULL,
- (OffsetNumber) 0, v->spl_rattrsize[j], FALSE);
- gistpenalty( giststate, j, &entry, v->spl_risnull[j],
- &identry[j], isnull[j], &rpenalty);
-
- if ( lpenalty != rpenalty )
+ lpenalty = (v->spl_grpflag[v->spl_idgrp[i + 1]] & LEFT_ADDED) ? 2.0 : 0.0;
+ }
+ else
+ {
+ /* where? */
+ for (j = 1; j < r->rd_att->natts; j++)
+ {
+ gistentryinit(entry, v->spl_lattr[j], r, (Page) NULL,
+ (OffsetNumber) 0, v->spl_lattrsize[j], FALSE);
+ gistpenalty(giststate, j, &entry, v->spl_lisnull[j],
+ &identry[j], isnull[j], &lpenalty);
+
+ gistentryinit(entry, v->spl_rattr[j], r, (Page) NULL,
+ (OffsetNumber) 0, v->spl_rattrsize[j], FALSE);
+ gistpenalty(giststate, j, &entry, v->spl_risnull[j],
+ &identry[j], isnull[j], &rpenalty);
+
+ if (lpenalty != rpenalty)
break;
}
}
/* add */
- if ( lpenalty < rpenalty ) {
- v->spl_grpflag[ v->spl_idgrp[ i+1 ] ] |= LEFT_ADDED;
- v->spl_left[ v->spl_nleft ] = i+1;
+ if (lpenalty < rpenalty)
+ {
+ v->spl_grpflag[v->spl_idgrp[i + 1]] |= LEFT_ADDED;
+ v->spl_left[v->spl_nleft] = i + 1;
v->spl_nleft++;
- for( j=1; j<r->rd_att->natts; j++ ) {
- if ( isnull[j] && v->spl_lisnull[j] ) {
+ for (j = 1; j < r->rd_att->natts; j++)
+ {
+ if (isnull[j] && v->spl_lisnull[j])
+ {
v->spl_lattr[j] = (Datum) 0;
v->spl_lattrsize[j] = 0;
- } else {
+ }
+ else
+ {
FILLEV(
- v->spl_lisnull[j], v->spl_lattr[j], v->spl_lattrsize[j],
- isnull[j], identry[j].key, identry[j].bytes
- );
+ v->spl_lisnull[j], v->spl_lattr[j], v->spl_lattrsize[j],
+ isnull[j], identry[j].key, identry[j].bytes
+ );
datum = FunctionCall2(&giststate->unionFn[j],
- PointerGetDatum(evec),
- PointerGetDatum(&datumsize));
+ PointerGetDatum(evec),
+ PointerGetDatum(&datumsize));
- if ( (!isAttByVal( giststate, j )) && !v->spl_lisnull[j] )
- pfree( DatumGetPointer(v->spl_lattr[j]) );
+ if ((!isAttByVal(giststate, j)) && !v->spl_lisnull[j])
+ pfree(DatumGetPointer(v->spl_lattr[j]));
v->spl_lattr[j] = datum;
v->spl_lattrsize[j] = datumsize;
v->spl_lisnull[j] = false;
}
}
- } else {
- v->spl_grpflag[ v->spl_idgrp[ i+1 ] ] |= RIGHT_ADDED;
- v->spl_right[ v->spl_nright ] = i+1;
+ }
+ else
+ {
+ v->spl_grpflag[v->spl_idgrp[i + 1]] |= RIGHT_ADDED;
+ v->spl_right[v->spl_nright] = i + 1;
v->spl_nright++;
- for( j=1; j<r->rd_att->natts; j++ ) {
- if ( isnull[j] && v->spl_risnull[j] ) {
+ for (j = 1; j < r->rd_att->natts; j++)
+ {
+ if (isnull[j] && v->spl_risnull[j])
+ {
v->spl_rattr[j] = (Datum) 0;
v->spl_rattrsize[j] = 0;
- } else {
+ }
+ else
+ {
FILLEV(
- v->spl_risnull[j], v->spl_rattr[j], v->spl_rattrsize[j],
- isnull[j], identry[j].key, identry[j].bytes
- );
+ v->spl_risnull[j], v->spl_rattr[j], v->spl_rattrsize[j],
+ isnull[j], identry[j].key, identry[j].bytes
+ );
datum = FunctionCall2(&giststate->unionFn[j],
- PointerGetDatum(evec),
- PointerGetDatum(&datumsize));
+ PointerGetDatum(evec),
+ PointerGetDatum(&datumsize));
- if ( (!isAttByVal( giststate, j)) && !v->spl_risnull[j] )
- pfree( DatumGetPointer(v->spl_rattr[j]) );
+ if ((!isAttByVal(giststate, j)) && !v->spl_risnull[j])
+ pfree(DatumGetPointer(v->spl_rattr[j]));
v->spl_rattr[j] = datum;
v->spl_rattrsize[j] = datumsize;
@@ -1094,8 +1186,8 @@ gistadjsubkey(Relation r,
}
}
- }
- gistFreeAtt( r, identry, decfree );
+ }
+ gistFreeAtt(r, identry, decfree);
}
pfree(evec);
}
@@ -1125,11 +1217,12 @@ gistSplit(Relation r,
GIST_SPLITVEC v;
bytea *entryvec;
bool *decompvec;
- int i,j,
+ int i,
+ j,
nlen;
- int MaxGrpId = 1;
+ int MaxGrpId = 1;
Datum datum;
- bool IsNull;
+ bool IsNull;
p = (Page) BufferGetPage(buffer);
opaque = (GISTPageOpaque) PageGetSpecialPointer(p);
@@ -1168,57 +1261,62 @@ gistSplit(Relation r,
for (i = 1; i <= *len; i++)
{
datum = index_getattr(itup[i - 1], 1, giststate->tupdesc, &IsNull);
- gistdentryinit(giststate, 0,&((GISTENTRY *) VARDATA(entryvec))[i],
- datum, r, p, i,
- ATTSIZE( datum, giststate->tupdesc, 1, IsNull ), FALSE, IsNull);
- if ( (!isAttByVal(giststate,0)) && ((GISTENTRY *) VARDATA(entryvec))[i].key != datum )
+ gistdentryinit(giststate, 0, &((GISTENTRY *) VARDATA(entryvec))[i],
+ datum, r, p, i,
+ ATTSIZE(datum, giststate->tupdesc, 1, IsNull), FALSE, IsNull);
+ if ((!isAttByVal(giststate, 0)) && ((GISTENTRY *) VARDATA(entryvec))[i].key != datum)
decompvec[i] = TRUE;
else
decompvec[i] = FALSE;
}
- /* now let the user-defined picksplit function set up the split vector;
- in entryvec have no null value!! */
+ /*
+ * now let the user-defined picksplit function set up the split
+ * vector; in entryvec have no null value!!
+ */
FunctionCall2(&giststate->picksplitFn[0],
PointerGetDatum(entryvec),
PointerGetDatum(&v));
- /* compatibility with old code */
- if ( v.spl_left[ v.spl_nleft-1 ] == InvalidOffsetNumber )
- v.spl_left[ v.spl_nleft-1 ] = (OffsetNumber)*len;
- if ( v.spl_right[ v.spl_nright-1 ] == InvalidOffsetNumber )
- v.spl_right[ v.spl_nright-1 ] = (OffsetNumber)*len;
-
- v.spl_lattr[0] = v.spl_ldatum;
+ /* compatibility with old code */
+ if (v.spl_left[v.spl_nleft - 1] == InvalidOffsetNumber)
+ v.spl_left[v.spl_nleft - 1] = (OffsetNumber) *len;
+ if (v.spl_right[v.spl_nright - 1] == InvalidOffsetNumber)
+ v.spl_right[v.spl_nright - 1] = (OffsetNumber) *len;
+
+ v.spl_lattr[0] = v.spl_ldatum;
v.spl_rattr[0] = v.spl_rdatum;
v.spl_lisnull[0] = false;
v.spl_risnull[0] = false;
- /* if index is multikey, then we must to try get smaller
- * bounding box for subkey(s)
- */
- if ( r->rd_att->natts > 1 ) {
- v.spl_idgrp = (int*) palloc( sizeof(int) * (*len + 1) );
- MemSet((void*)v.spl_idgrp, 0, sizeof(int) * (*len + 1) );
- v.spl_grpflag = (char*) palloc( sizeof(char) * (*len + 1) );
- MemSet((void*)v.spl_grpflag, 0, sizeof(char) * (*len + 1) );
- v.spl_ngrp = (int*) palloc( sizeof(int) * (*len + 1) );
+ /*
+ * if index is multikey, then we must to try get smaller bounding box
+ * for subkey(s)
+ */
+ if (r->rd_att->natts > 1)
+ {
+ v.spl_idgrp = (int *) palloc(sizeof(int) * (*len + 1));
+ MemSet((void *) v.spl_idgrp, 0, sizeof(int) * (*len + 1));
+ v.spl_grpflag = (char *) palloc(sizeof(char) * (*len + 1));
+ MemSet((void *) v.spl_grpflag, 0, sizeof(char) * (*len + 1));
+ v.spl_ngrp = (int *) palloc(sizeof(int) * (*len + 1));
- MaxGrpId = gistfindgroup( giststate, (GISTENTRY *) VARDATA(entryvec), &v );
+ MaxGrpId = gistfindgroup(giststate, (GISTENTRY *) VARDATA(entryvec), &v);
/* form union of sub keys for each page (l,p) */
- gistunionsubkey( r, giststate, itup, &v );
+ gistunionsubkey(r, giststate, itup, &v);
- /* if possible, we insert equivalent tuples
- * with control by penalty for a subkey(s)
- */
- if ( MaxGrpId > 1 )
- gistadjsubkey( r,itup,len, &v, giststate );
+ /*
+ * if possible, we insert equivalent tuples with control by
+ * penalty for a subkey(s)
+ */
+ if (MaxGrpId > 1)
+ gistadjsubkey(r, itup, len, &v, giststate);
- pfree( v.spl_idgrp );
- pfree( v.spl_grpflag );
- pfree( v.spl_ngrp );
- }
+ pfree(v.spl_idgrp);
+ pfree(v.spl_grpflag);
+ pfree(v.spl_ngrp);
+ }
/* clean up the entry vector: its keys need to be deleted, too */
for (i = 1; i <= *len; i++)
@@ -1231,11 +1329,11 @@ gistSplit(Relation r,
lvectup = (IndexTuple *) palloc(sizeof(IndexTuple) * v.spl_nleft);
rvectup = (IndexTuple *) palloc(sizeof(IndexTuple) * v.spl_nright);
- for(i=0; i<v.spl_nleft;i++)
- lvectup[i] = itup[ v.spl_left[i] - 1 ];
+ for (i = 0; i < v.spl_nleft; i++)
+ lvectup[i] = itup[v.spl_left[i] - 1];
- for(i=0; i<v.spl_nright;i++)
- rvectup[i] = itup[ v.spl_right[i] - 1 ];
+ for (i = 0; i < v.spl_nright; i++)
+ rvectup[i] = itup[v.spl_right[i] - 1];
/* write on disk (may be need another split) */
@@ -1245,9 +1343,9 @@ gistSplit(Relation r,
newtup = gistSplit(r, rightbuf, rvectup, &nlen, giststate,
(res && rvectup[nlen - 1] == itup[*len - 1]) ? res : NULL);
ReleaseBuffer(rightbuf);
- for( j=1; j<r->rd_att->natts; j++ )
- if ( (!isAttByVal(giststate,j)) && !v.spl_risnull[j] )
- pfree( DatumGetPointer(v.spl_rattr[j]) );
+ for (j = 1; j < r->rd_att->natts; j++)
+ if ((!isAttByVal(giststate, j)) && !v.spl_risnull[j])
+ pfree(DatumGetPointer(v.spl_rattr[j]));
}
else
{
@@ -1261,7 +1359,7 @@ gistSplit(Relation r,
nlen = 1;
newtup = (IndexTuple *) palloc(sizeof(IndexTuple) * 1);
- newtup[0] = gistFormTuple( giststate, r, v.spl_rattr, v.spl_rattrsize, v.spl_risnull );
+ newtup[0] = gistFormTuple(giststate, r, v.spl_rattr, v.spl_rattrsize, v.spl_risnull);
ItemPointerSet(&(newtup[0]->t_tid), rbknum, 1);
}
@@ -1275,9 +1373,9 @@ gistSplit(Relation r,
(res && lvectup[llen - 1] == itup[*len - 1]) ? res : NULL);
ReleaseBuffer(leftbuf);
- for( j=1; j<r->rd_att->natts; j++ )
- if ( (!isAttByVal(giststate,j)) && !v.spl_lisnull[j] )
- pfree( DatumGetPointer(v.spl_lattr[j]) );
+ for (j = 1; j < r->rd_att->natts; j++)
+ if ((!isAttByVal(giststate, j)) && !v.spl_lisnull[j])
+ pfree(DatumGetPointer(v.spl_lattr[j]));
newtup = gistjoinvector(newtup, &nlen, lntup, llen);
pfree(lntup);
@@ -1297,7 +1395,7 @@ gistSplit(Relation r,
nlen += 1;
newtup = (IndexTuple *) repalloc((void *) newtup, sizeof(IndexTuple) * nlen);
- newtup[nlen - 1] = gistFormTuple( giststate, r, v.spl_lattr, v.spl_lattrsize, v.spl_lisnull );
+ newtup[nlen - 1] = gistFormTuple(giststate, r, v.spl_lattr, v.spl_lattrsize, v.spl_lisnull);
ItemPointerSet(&(newtup[nlen - 1]->t_tid), lbknum, 1);
}
@@ -1359,47 +1457,56 @@ gistchoose(Relation r, Page p, IndexTuple it, /* it has compressed entry */
Datum datum;
float usize;
OffsetNumber which;
- float sum_grow, which_grow[INDEX_MAX_KEYS];
+ float sum_grow,
+ which_grow[INDEX_MAX_KEYS];
GISTENTRY entry,
identry[INDEX_MAX_KEYS];
- bool IsNull, decompvec[INDEX_MAX_KEYS], isnull[INDEX_MAX_KEYS];
- int j;
+ bool IsNull,
+ decompvec[INDEX_MAX_KEYS],
+ isnull[INDEX_MAX_KEYS];
+ int j;
maxoff = PageGetMaxOffsetNumber(p);
*which_grow = -1.0;
which = -1;
- sum_grow=1;
- gistDeCompressAtt( giststate, r,
- it, (Page) NULL, (OffsetNumber) 0,
- identry, decompvec, isnull );
+ sum_grow = 1;
+ gistDeCompressAtt(giststate, r,
+ it, (Page) NULL, (OffsetNumber) 0,
+ identry, decompvec, isnull);
for (i = FirstOffsetNumber; i <= maxoff && sum_grow; i = OffsetNumberNext(i))
{
- IndexTuple itup = (IndexTuple) PageGetItem(p, PageGetItemId(p, i));
- sum_grow=0;
- for (j=0; j<r->rd_att->natts; j++) {
- datum = index_getattr(itup, j+1, giststate->tupdesc, &IsNull);
- gistdentryinit(giststate, j, &entry, datum, r, p, i, ATTSIZE( datum, giststate->tupdesc, j+1, IsNull ), FALSE, IsNull);
- gistpenalty( giststate, j, &entry, IsNull, &identry[j], isnull[j], &usize);
-
- if ( (!isAttByVal(giststate,j)) && entry.key != datum)
+ IndexTuple itup = (IndexTuple) PageGetItem(p, PageGetItemId(p, i));
+
+ sum_grow = 0;
+ for (j = 0; j < r->rd_att->natts; j++)
+ {
+ datum = index_getattr(itup, j + 1, giststate->tupdesc, &IsNull);
+ gistdentryinit(giststate, j, &entry, datum, r, p, i, ATTSIZE(datum, giststate->tupdesc, j + 1, IsNull), FALSE, IsNull);
+ gistpenalty(giststate, j, &entry, IsNull, &identry[j], isnull[j], &usize);
+
+ if ((!isAttByVal(giststate, j)) && entry.key != datum)
pfree(DatumGetPointer(entry.key));
- if ( which_grow[j]<0 || usize < which_grow[j] ) {
+ if (which_grow[j] < 0 || usize < which_grow[j])
+ {
which = i;
which_grow[j] = usize;
- if ( j<r->rd_att->natts-1 && i==FirstOffsetNumber ) which_grow[j+1]=-1;
- sum_grow += which_grow[j];
- } else if ( which_grow[j] == usize ) {
+ if (j < r->rd_att->natts - 1 && i == FirstOffsetNumber)
+ which_grow[j + 1] = -1;
+ sum_grow += which_grow[j];
+ }
+ else if (which_grow[j] == usize)
sum_grow += usize;
- } else {
- sum_grow=1;
+ else
+ {
+ sum_grow = 1;
break;
}
}
}
- gistFreeAtt( r, identry, decompvec );
+ gistFreeAtt(r, identry, decompvec);
return which;
}
@@ -1434,7 +1541,7 @@ gistdelete(Relation r, ItemPointer tid)
/*
* Since GIST is not marked "amconcurrent" in pg_am, caller should
- * have acquired exclusive lock on index relation. We need no locking
+ * have acquired exclusive lock on index relation. We need no locking
* here.
*/
@@ -1468,7 +1575,7 @@ gistbulkdelete(PG_FUNCTION_ARGS)
IndexBulkDeleteCallback callback = (IndexBulkDeleteCallback) PG_GETARG_POINTER(1);
void *callback_state = (void *) PG_GETARG_POINTER(2);
IndexBulkDeleteResult *result;
- BlockNumber num_pages;
+ BlockNumber num_pages;
double tuples_removed;
double num_index_tuples;
RetrieveIndexResult res;
@@ -1479,7 +1586,7 @@ gistbulkdelete(PG_FUNCTION_ARGS)
/*
* Since GIST is not marked "amconcurrent" in pg_am, caller should
- * have acquired exclusive lock on index relation. We need no locking
+ * have acquired exclusive lock on index relation. We need no locking
* here.
*/
@@ -1542,7 +1649,7 @@ gistbulkdelete(PG_FUNCTION_ARGS)
void
initGISTstate(GISTSTATE *giststate, Relation index)
{
- int i;
+ int i;
if (index->rd_att->natts > INDEX_MAX_KEYS)
elog(ERROR, "initGISTstate: numberOfAttributes %d > %d",
@@ -1553,31 +1660,32 @@ initGISTstate(GISTSTATE *giststate, Relation index)
for (i = 0; i < index->rd_att->natts; i++)
{
fmgr_info_copy(&(giststate->consistentFn[i]),
- index_getprocinfo(index, i+1, GIST_CONSISTENT_PROC),
+ index_getprocinfo(index, i + 1, GIST_CONSISTENT_PROC),
CurrentMemoryContext);
fmgr_info_copy(&(giststate->unionFn[i]),
- index_getprocinfo(index, i+1, GIST_UNION_PROC),
+ index_getprocinfo(index, i + 1, GIST_UNION_PROC),
CurrentMemoryContext);
fmgr_info_copy(&(giststate->compressFn[i]),
- index_getprocinfo(index, i+1, GIST_COMPRESS_PROC),
+ index_getprocinfo(index, i + 1, GIST_COMPRESS_PROC),
CurrentMemoryContext);
fmgr_info_copy(&(giststate->decompressFn[i]),
- index_getprocinfo(index, i+1, GIST_DECOMPRESS_PROC),
+ index_getprocinfo(index, i + 1, GIST_DECOMPRESS_PROC),
CurrentMemoryContext);
fmgr_info_copy(&(giststate->penaltyFn[i]),
- index_getprocinfo(index, i+1, GIST_PENALTY_PROC),
+ index_getprocinfo(index, i + 1, GIST_PENALTY_PROC),
CurrentMemoryContext);
fmgr_info_copy(&(giststate->picksplitFn[i]),
- index_getprocinfo(index, i+1, GIST_PICKSPLIT_PROC),
+ index_getprocinfo(index, i + 1, GIST_PICKSPLIT_PROC),
CurrentMemoryContext);
fmgr_info_copy(&(giststate->equalFn[i]),
- index_getprocinfo(index, i+1, GIST_EQUAL_PROC),
+ index_getprocinfo(index, i + 1, GIST_EQUAL_PROC),
CurrentMemoryContext);
}
}
void
-freeGISTstate(GISTSTATE *giststate) {
+freeGISTstate(GISTSTATE *giststate)
+{
/* no work */
}
@@ -1592,13 +1700,14 @@ freeGISTstate(GISTSTATE *giststate) {
static IndexTuple
gist_tuple_replacekey(Relation r, GISTENTRY entry, IndexTuple t)
{
- bool IsNull;
- Datum datum = index_getattr(t, 1, r->rd_att, &IsNull);
+ bool IsNull;
+ Datum datum = index_getattr(t, 1, r->rd_att, &IsNull);
/*
* If new entry fits in index tuple, copy it in. To avoid worrying
- * about null-value bitmask, pass it off to the general index_formtuple
- * routine if either the previous or new value is NULL.
+ * about null-value bitmask, pass it off to the general
+ * index_formtuple routine if either the previous or new value is
+ * NULL.
*/
if (!IsNull && DatumGetPointer(entry.key) != NULL &&
(Size) entry.bytes <= ATTSIZE(datum, r, 1, IsNull))
@@ -1638,7 +1747,7 @@ gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e,
Datum k, Relation r, Page pg, OffsetNumber o,
int b, bool l, bool isNull)
{
- if ( b && ! isNull )
+ if (b && !isNull)
{
GISTENTRY *dep;
@@ -1655,9 +1764,7 @@ gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e,
}
}
else
- {
gistentryinit(*e, (Datum) 0, r, pg, o, 0, l);
- }
}
@@ -1686,92 +1793,103 @@ gistcentryinit(GISTSTATE *giststate, int nkey,
}
}
else
- {
gistentryinit(*e, (Datum) 0, r, pg, o, 0, l);
- }
}
static IndexTuple
-gistFormTuple( GISTSTATE *giststate, Relation r,
- Datum attdata[], int datumsize[], bool isnull[] )
+gistFormTuple(GISTSTATE *giststate, Relation r,
+ Datum attdata[], int datumsize[], bool isnull[])
{
IndexTuple tup;
- char isnullchar[INDEX_MAX_KEYS];
- bool whatfree[INDEX_MAX_KEYS];
- GISTENTRY centry[INDEX_MAX_KEYS];
- Datum compatt[INDEX_MAX_KEYS];
- int j;
-
- for (j = 0; j < r->rd_att->natts; j++) {
- if ( isnull[j] ) {
+ char isnullchar[INDEX_MAX_KEYS];
+ bool whatfree[INDEX_MAX_KEYS];
+ GISTENTRY centry[INDEX_MAX_KEYS];
+ Datum compatt[INDEX_MAX_KEYS];
+ int j;
+
+ for (j = 0; j < r->rd_att->natts; j++)
+ {
+ if (isnull[j])
+ {
isnullchar[j] = 'n';
compatt[j] = (Datum) 0;
whatfree[j] = FALSE;
- } else {
+ }
+ else
+ {
gistcentryinit(giststate, j, &centry[j], attdata[j],
- (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
- datumsize[j], FALSE, FALSE);
+ (Relation) NULL, (Page) NULL, (OffsetNumber) NULL,
+ datumsize[j], FALSE, FALSE);
isnullchar[j] = ' ';
compatt[j] = centry[j].key;
- if ( !isAttByVal(giststate,j) ) {
+ if (!isAttByVal(giststate, j))
+ {
whatfree[j] = TRUE;
- if ( centry[j].key != attdata[j] )
+ if (centry[j].key != attdata[j])
pfree(DatumGetPointer(attdata[j]));
- } else
+ }
+ else
whatfree[j] = FALSE;
}
}
tup = (IndexTuple) index_formtuple(giststate->tupdesc, compatt, isnullchar);
for (j = 0; j < r->rd_att->natts; j++)
- if ( whatfree[j] ) pfree(DatumGetPointer(compatt[j]));
+ if (whatfree[j])
+ pfree(DatumGetPointer(compatt[j]));
- return tup;
-}
+ return tup;
+}
static void
-gistDeCompressAtt( GISTSTATE *giststate, Relation r, IndexTuple tuple, Page p,
- OffsetNumber o, GISTENTRY attdata[], bool decompvec[], bool isnull[] ) {
- int i;
- Datum datum;
+gistDeCompressAtt(GISTSTATE *giststate, Relation r, IndexTuple tuple, Page p,
+ OffsetNumber o, GISTENTRY attdata[], bool decompvec[], bool isnull[])
+{
+ int i;
+ Datum datum;
- for(i=0; i < r->rd_att->natts; i++ ) {
- datum = index_getattr(tuple, i+1, giststate->tupdesc, &isnull[i]);
+ for (i = 0; i < r->rd_att->natts; i++)
+ {
+ datum = index_getattr(tuple, i + 1, giststate->tupdesc, &isnull[i]);
gistdentryinit(giststate, i, &attdata[i],
- datum, r, p, o,
- ATTSIZE( datum, giststate->tupdesc, i+1, isnull[i] ), FALSE, isnull[i]);
- if ( isAttByVal(giststate,i) )
+ datum, r, p, o,
+ ATTSIZE(datum, giststate->tupdesc, i + 1, isnull[i]), FALSE, isnull[i]);
+ if (isAttByVal(giststate, i))
decompvec[i] = FALSE;
- else {
- if (attdata[i].key == datum || isnull[i] )
+ else
+ {
+ if (attdata[i].key == datum || isnull[i])
decompvec[i] = FALSE;
else
decompvec[i] = TRUE;
}
}
-}
+}
static void
-gistFreeAtt( Relation r, GISTENTRY attdata[], bool decompvec[] ) {
- int i;
- for(i=0; i < r->rd_att->natts; i++ )
- if ( decompvec[i] )
- pfree( DatumGetPointer(attdata[i].key) );
+gistFreeAtt(Relation r, GISTENTRY attdata[], bool decompvec[])
+{
+ int i;
+
+ for (i = 0; i < r->rd_att->natts; i++)
+ if (decompvec[i])
+ pfree(DatumGetPointer(attdata[i].key));
}
static void
-gistpenalty( GISTSTATE *giststate, int attno,
- GISTENTRY *key1, bool isNull1,
- GISTENTRY *key2, bool isNull2, float *penalty ){
- if ( giststate->penaltyFn[attno].fn_strict && ( isNull1 || isNull2 ) )
- *penalty=0.0;
- else
+gistpenalty(GISTSTATE *giststate, int attno,
+ GISTENTRY *key1, bool isNull1,
+ GISTENTRY *key2, bool isNull2, float *penalty)
+{
+ if (giststate->penaltyFn[attno].fn_strict && (isNull1 || isNull2))
+ *penalty = 0.0;
+ else
FunctionCall3(&giststate->penaltyFn[attno],
- PointerGetDatum(key1),
- PointerGetDatum(key2),
- PointerGetDatum(penalty));
+ PointerGetDatum(key1),
+ PointerGetDatum(key2),
+ PointerGetDatum(penalty));
}
-
+
#ifdef GISTDEBUG
static void
gist_dumptree(Relation r, int level, BlockNumber blk, OffsetNumber coff)
@@ -1816,7 +1934,6 @@ gist_dumptree(Relation r, int level, BlockNumber blk, OffsetNumber coff)
ReleaseBuffer(buffer);
pfree(pred);
}
-
#endif /* defined GISTDEBUG */
void
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index be2d7498453..ed92258e624 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/gist/gistget.c,v 1.30 2001/08/22 18:24:26 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/gist/gistget.c,v 1.31 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -251,7 +251,7 @@ gistindex_keytest(IndexTuple tuple,
if (key[0].sk_flags & SK_ISNULL)
return false;
*/
- gistdentryinit(giststate, key[0].sk_attno-1, &de,
+ gistdentryinit(giststate, key[0].sk_attno - 1, &de,
datum, r, p, offset,
IndexTupleSize(tuple) - sizeof(IndexTupleData),
FALSE, isNull);
@@ -271,9 +271,9 @@ gistindex_keytest(IndexTuple tuple,
ObjectIdGetDatum(key[0].sk_procedure));
}
- if ( de.key != datum && ! isAttByVal( giststate, key[0].sk_attno-1 ) )
- if ( DatumGetPointer(de.key) != NULL )
- pfree( DatumGetPointer(de.key) );
+ if (de.key != datum && !isAttByVal(giststate, key[0].sk_attno - 1))
+ if (DatumGetPointer(de.key) != NULL)
+ pfree(DatumGetPointer(de.key));
if (DatumGetBool(test) == !!(key[0].sk_flags & SK_NEGATE))
return false;
diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c
index 2b65321b038..8623b8f643e 100644
--- a/src/backend/access/gist/gistscan.c
+++ b/src/backend/access/gist/gistscan.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/gist/gistscan.c,v 1.39 2001/08/22 18:24:26 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/gist/gistscan.c,v 1.40 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -112,7 +112,7 @@ gistrescan(PG_FUNCTION_ARGS)
s->keyData[i].sk_procedure
= RelationGetGISTStrategy(s->relation, s->keyData[i].sk_attno,
s->keyData[i].sk_procedure);
- s->keyData[i].sk_func = p->giststate->consistentFn[s->keyData[i].sk_attno-1];
+ s->keyData[i].sk_func = p->giststate->consistentFn[s->keyData[i].sk_attno - 1];
}
}
else
@@ -137,13 +137,13 @@ gistrescan(PG_FUNCTION_ARGS)
/*----------
* s->keyData[i].sk_procedure =
- * index_getprocid(s->relation, 1, GIST_CONSISTENT_PROC);
+ * index_getprocid(s->relation, 1, GIST_CONSISTENT_PROC);
*----------
*/
s->keyData[i].sk_procedure
= RelationGetGISTStrategy(s->relation, s->keyData[i].sk_attno,
s->keyData[i].sk_procedure);
- s->keyData[i].sk_func = p->giststate->consistentFn[s->keyData[i].sk_attno-1];
+ s->keyData[i].sk_func = p->giststate->consistentFn[s->keyData[i].sk_attno - 1];
}
}
@@ -234,8 +234,8 @@ gistendscan(PG_FUNCTION_ARGS)
{
gistfreestack(p->s_stack);
gistfreestack(p->s_markstk);
- if ( p->giststate != NULL )
- freeGISTstate( p->giststate );
+ if (p->giststate != NULL)
+ freeGISTstate(p->giststate);
pfree(s->opaque);
}
@@ -383,7 +383,6 @@ adjustiptr(IndexScanDesc s,
}
else
{
-
/*
* remember that we're before the current
* tuple
diff --git a/src/backend/access/gist/giststrat.c b/src/backend/access/gist/giststrat.c
index e0bae48a3c4..db38191d6a0 100644
--- a/src/backend/access/gist/giststrat.c
+++ b/src/backend/access/gist/giststrat.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/gist/Attic/giststrat.c,v 1.17 2001/05/30 19:53:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/gist/Attic/giststrat.c,v 1.18 2001/10/25 05:49:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -121,5 +121,4 @@ RelationInvokeGISTStrategy(Relation r,
return (RelationInvokeStrategy(r, &GISTEvaluationData, attnum, s,
left, right));
}
-
#endif
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index 9b0e6cf28ee..177f3648f40 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/hash/hash.c,v 1.52 2001/07/15 22:48:15 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/hash/hash.c,v 1.53 2001/10/25 05:49:20 momjian Exp $
*
* NOTES
* This file contains only the public interface routines.
@@ -37,11 +37,11 @@ typedef struct
} HashBuildState;
static void hashbuildCallback(Relation index,
- HeapTuple htup,
- Datum *attdata,
- char *nulls,
- bool tupleIsAlive,
- void *state);
+ HeapTuple htup,
+ Datum *attdata,
+ char *nulls,
+ bool tupleIsAlive,
+ void *state);
/*
@@ -80,7 +80,7 @@ hashbuild(PG_FUNCTION_ARGS)
/* do the heap scan */
reltuples = IndexBuildHeapScan(heap, index, indexInfo,
- hashbuildCallback, (void *) &buildstate);
+ hashbuildCallback, (void *) &buildstate);
/* all done */
BuildingHash = false;
@@ -121,7 +121,7 @@ hashbuildCallback(Relation index,
bool tupleIsAlive,
void *state)
{
- HashBuildState *buildstate = (HashBuildState *) state;
+ HashBuildState *buildstate = (HashBuildState *) state;
IndexTuple itup;
HashItem hitem;
InsertIndexResult res;
@@ -164,6 +164,7 @@ hashinsert(PG_FUNCTION_ARGS)
Datum *datum = (Datum *) PG_GETARG_POINTER(1);
char *nulls = (char *) PG_GETARG_POINTER(2);
ItemPointer ht_ctid = (ItemPointer) PG_GETARG_POINTER(3);
+
#ifdef NOT_USED
Relation heapRel = (Relation) PG_GETARG_POINTER(4);
#endif
@@ -176,14 +177,13 @@ hashinsert(PG_FUNCTION_ARGS)
itup->t_tid = *ht_ctid;
/*
- * If the single index key is null, we don't insert it into the
- * index. Hash tables support scans on '='. Relational algebra
- * says that A = B returns null if either A or B is null. This
- * means that no qualification used in an index scan could ever
- * return true on a null attribute. It also means that indices
- * can't be used by ISNULL or NOTNULL scans, but that's an
- * artifact of the strategy map architecture chosen in 1986, not
- * of the way nulls are handled here.
+ * If the single index key is null, we don't insert it into the index.
+ * Hash tables support scans on '='. Relational algebra says that A =
+ * B returns null if either A or B is null. This means that no
+ * qualification used in an index scan could ever return true on a
+ * null attribute. It also means that indices can't be used by ISNULL
+ * or NOTNULL scans, but that's an artifact of the strategy map
+ * architecture chosen in 1986, not of the way nulls are handled here.
*/
if (IndexTupleHasNulls(itup))
{
@@ -262,7 +262,6 @@ hashrescan(PG_FUNCTION_ARGS)
#ifdef NOT_USED /* XXX surely it's wrong to ignore this? */
bool fromEnd = PG_GETARG_BOOL(1);
-
#endif
ScanKey scankey = (ScanKey) PG_GETARG_POINTER(2);
ItemPointer iptr;
@@ -412,7 +411,7 @@ hashbulkdelete(PG_FUNCTION_ARGS)
IndexBulkDeleteCallback callback = (IndexBulkDeleteCallback) PG_GETARG_POINTER(1);
void *callback_state = (void *) PG_GETARG_POINTER(2);
IndexBulkDeleteResult *result;
- BlockNumber num_pages;
+ BlockNumber num_pages;
double tuples_removed;
double num_index_tuples;
RetrieveIndexResult res;
diff --git a/src/backend/access/hash/hashinsert.c b/src/backend/access/hash/hashinsert.c
index 5439dce2148..2f99e7426dc 100644
--- a/src/backend/access/hash/hashinsert.c
+++ b/src/backend/access/hash/hashinsert.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/hash/hashinsert.c,v 1.22 2001/03/07 21:20:26 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/hash/hashinsert.c,v 1.23 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -133,13 +133,11 @@ _hash_insertonpg(Relation rel,
while (PageGetFreeSpace(page) < itemsz)
{
-
/*
* no space on this page; check for an overflow page
*/
if (BlockNumberIsValid(pageopaque->hasho_nextblkno))
{
-
/*
* ovfl page exists; go get it. if it doesn't have room,
* we'll find out next pass through the loop test above.
@@ -152,7 +150,6 @@ _hash_insertonpg(Relation rel,
}
else
{
-
/*
* we're at the end of the bucket chain and we haven't found a
* page with enough room. allocate a new overflow page.
@@ -184,7 +181,6 @@ _hash_insertonpg(Relation rel,
if (res != NULL)
{
-
/*
* Increment the number of keys in the table. We switch lock
* access type just for a moment to allow greater accessibility to
diff --git a/src/backend/access/hash/hashovfl.c b/src/backend/access/hash/hashovfl.c
index c9fb065dbd2..e41c1bd0a3e 100644
--- a/src/backend/access/hash/hashovfl.c
+++ b/src/backend/access/hash/hashovfl.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/hash/hashovfl.c,v 1.30 2001/07/15 22:48:15 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/hash/hashovfl.c,v 1.31 2001/10/25 05:49:21 momjian Exp $
*
* NOTES
* Overflow pages look like ordinary relation pages.
@@ -208,7 +208,6 @@ _hash_getovfladdr(Relation rel, Buffer *metabufp)
}
else
{
-
/*
* Free_bit addresses the last used bit. Bump it to address the
* first available bit.
diff --git a/src/backend/access/hash/hashpage.c b/src/backend/access/hash/hashpage.c
index b8c520e3c0d..0fff5a11e6f 100644
--- a/src/backend/access/hash/hashpage.c
+++ b/src/backend/access/hash/hashpage.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/hash/hashpage.c,v 1.32 2001/07/15 22:48:15 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/hash/hashpage.c,v 1.33 2001/10/25 05:49:21 momjian Exp $
*
* NOTES
* Postgres hash pages look like ordinary relation pages. The opaque
@@ -50,7 +50,7 @@ static void _hash_splitpage(Relation rel, Buffer metabuf, Bucket obucket, Bucket
* system catalogs anyway.
*
* Note that our page locks are actual lockmanager locks, not buffer
- * locks (as are used by btree, for example). This is a good idea because
+ * locks (as are used by btree, for example). This is a good idea because
* the algorithms are not deadlock-free, and we'd better be able to detect
* and recover from deadlocks.
*
@@ -325,7 +325,7 @@ _hash_setpagelock(Relation rel,
{
switch (access)
{
- case HASH_WRITE:
+ case HASH_WRITE:
LockPage(rel, blkno, ExclusiveLock);
break;
case HASH_READ:
@@ -349,7 +349,7 @@ _hash_unsetpagelock(Relation rel,
{
switch (access)
{
- case HASH_WRITE:
+ case HASH_WRITE:
UnlockPage(rel, blkno, ExclusiveLock);
break;
case HASH_READ:
@@ -369,7 +369,7 @@ _hash_unsetpagelock(Relation rel,
* It is safe to delete an item after acquiring a regular WRITE lock on
* the page, because no other backend can hold a READ lock on the page,
* and that means no other backend currently has an indexscan stopped on
- * any item of the item being deleted. Our own backend might have such
+ * any item of the item being deleted. Our own backend might have such
* an indexscan (in fact *will*, since that's how VACUUM found the item
* in the first place), but _hash_adjscans will fix the scan position.
*/
@@ -532,7 +532,6 @@ _hash_splitpage(Relation rel,
_hash_relbuf(rel, obuf, HASH_WRITE);
if (!BlockNumberIsValid(oblkno))
{
-
/*
* the old bucket is completely empty; of course, the new
* bucket will be as well, but since it's a base bucket page
@@ -559,7 +558,6 @@ _hash_splitpage(Relation rel,
omaxoffnum = PageGetMaxOffsetNumber(opage);
for (;;)
{
-
/*
* at each iteration through this loop, each of these variables
* should be up-to-date: obuf opage oopaque ooffnum omaxoffnum
@@ -572,7 +570,6 @@ _hash_splitpage(Relation rel,
oblkno = oopaque->hasho_nextblkno;
if (BlockNumberIsValid(oblkno))
{
-
/*
* we ran out of tuples on this particular page, but we
* have more overflow pages; re-init values.
@@ -594,7 +591,6 @@ _hash_splitpage(Relation rel,
}
else
{
-
/*
* we're at the end of the bucket chain, so now we're
* really done with everything. before quitting, call
@@ -618,7 +614,6 @@ _hash_splitpage(Relation rel,
if (bucket == nbucket)
{
-
/*
* insert the tuple into the new bucket. if it doesn't fit on
* the current page in the new bucket, we must allocate a new
@@ -695,7 +690,6 @@ _hash_splitpage(Relation rel,
}
else
{
-
/*
* the tuple stays on this page. we didn't move anything, so
* we didn't delete anything and therefore we don't have to
diff --git a/src/backend/access/hash/hashsearch.c b/src/backend/access/hash/hashsearch.c
index 27ca0301181..6ea643dcaf5 100644
--- a/src/backend/access/hash/hashsearch.c
+++ b/src/backend/access/hash/hashsearch.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/hash/hashsearch.c,v 1.26 2001/03/23 04:49:51 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/hash/hashsearch.c,v 1.27 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -36,7 +36,6 @@ _hash_search(Relation rel,
if (scankey == (ScanKey) NULL ||
(keyDatum = scankey[0].sk_argument) == (Datum) NULL)
{
-
/*
* If the scankey argument is NULL, all tuples will satisfy the
* scan so we start the scan at the first bucket (bucket 0).
diff --git a/src/backend/access/hash/hashstrat.c b/src/backend/access/hash/hashstrat.c
index fc5df2372d8..a765c2e2b19 100644
--- a/src/backend/access/hash/hashstrat.c
+++ b/src/backend/access/hash/hashstrat.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/hash/Attic/hashstrat.c,v 1.18 2001/05/30 19:53:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/hash/Attic/hashstrat.c,v 1.19 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -46,7 +46,6 @@ static StrategyEvaluationData HTEvaluationData = {
(StrategyTransformMap) HTNegateCommute,
HTEvaluationExpressions
};
-
#endif
/* ----------------------------------------------------------------
@@ -68,7 +67,6 @@ _hash_getstrat(Relation rel,
return strat;
}
-
#endif
#ifdef NOT_USED
@@ -82,5 +80,4 @@ _hash_invokestrat(Relation rel,
return (RelationInvokeStrategy(rel, &HTEvaluationData, attno, strat,
left, right));
}
-
#endif
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index c64a19faa61..f73ca50285b 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.125 2001/08/23 23:06:37 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.126 2001/10/25 05:49:21 momjian Exp $
*
*
* INTERFACE ROUTINES
@@ -116,8 +116,8 @@ heapgettup(Relation relation,
{
ItemId lpp;
Page dp;
- BlockNumber page;
- BlockNumber pages;
+ BlockNumber page;
+ BlockNumber pages;
int lines;
OffsetNumber lineoff;
int linesleft;
@@ -350,7 +350,7 @@ heapgettup(Relation relation,
/*
* return NULL if we've exhausted all the pages
*/
- if ((dir < 0) ? (page == 0) : (page+1 >= pages))
+ if ((dir < 0) ? (page == 0) : (page + 1 >= pages))
{
if (BufferIsValid(*buffer))
ReleaseBuffer(*buffer);
@@ -429,9 +429,8 @@ fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
(
(Datum) NULL
)
- );
+ );
}
-
#endif /* defined(DISABLE_COMPLEX_MACRO) */
@@ -1045,12 +1044,13 @@ heap_insert(Relation relation, HeapTuple tup)
if (relation->rd_rel->relhasoids)
{
/*
- * If the object id of this tuple has already been assigned, trust the
- * caller. There are a couple of ways this can happen. At initial db
- * creation, the backend program sets oids for tuples. When we define
- * an index, we set the oid. Finally, in the future, we may allow
- * users to set their own object ids in order to support a persistent
- * object store (objects need to contain pointers to one another).
+ * If the object id of this tuple has already been assigned, trust
+ * the caller. There are a couple of ways this can happen. At
+ * initial db creation, the backend program sets oids for tuples.
+ * When we define an index, we set the oid. Finally, in the
+ * future, we may allow users to set their own object ids in order
+ * to support a persistent object store (objects need to contain
+ * pointers to one another).
*/
if (!OidIsValid(tup->t_data->t_oid))
tup->t_data->t_oid = newoid();
@@ -1478,21 +1478,22 @@ l2:
}
/*
- * Now, do we need a new page for the tuple, or not? This is a bit
- * tricky since someone else could have added tuples to the page
- * while we weren't looking. We have to recheck the available space
- * after reacquiring the buffer lock. But don't bother to do that
- * if the former amount of free space is still not enough; it's
- * unlikely there's more free now than before.
+ * Now, do we need a new page for the tuple, or not? This is a
+ * bit tricky since someone else could have added tuples to the
+ * page while we weren't looking. We have to recheck the
+ * available space after reacquiring the buffer lock. But don't
+ * bother to do that if the former amount of free space is still
+ * not enough; it's unlikely there's more free now than before.
*
* What's more, if we need to get a new page, we will need to acquire
- * buffer locks on both old and new pages. To avoid deadlock against
- * some other backend trying to get the same two locks in the other
- * order, we must be consistent about the order we get the locks in.
- * We use the rule "lock the lower-numbered page of the relation
- * first". To implement this, we must do RelationGetBufferForTuple
- * while not holding the lock on the old page, and we must rely on it
- * to get the locks on both pages in the correct order.
+ * buffer locks on both old and new pages. To avoid deadlock
+ * against some other backend trying to get the same two locks in
+ * the other order, we must be consistent about the order we get
+ * the locks in. We use the rule "lock the lower-numbered page of
+ * the relation first". To implement this, we must do
+ * RelationGetBufferForTuple while not holding the lock on the old
+ * page, and we must rely on it to get the locks on both pages in
+ * the correct order.
*/
if (newtupsize > pagefree)
{
@@ -1510,8 +1511,8 @@ l2:
{
/*
* Rats, it doesn't fit anymore. We must now unlock and
- * relock to avoid deadlock. Fortunately, this path should
- * seldom be taken.
+ * relock to avoid deadlock. Fortunately, this path
+ * should seldom be taken.
*/
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
newbuf = RelationGetBufferForTuple(relation, newtup->t_len,
@@ -1534,9 +1535,9 @@ l2:
pgstat_count_heap_update(&relation->pgstat_info);
/*
- * At this point newbuf and buffer are both pinned and locked,
- * and newbuf has enough space for the new tuple. If they are
- * the same buffer, only one pin is held.
+ * At this point newbuf and buffer are both pinned and locked, and
+ * newbuf has enough space for the new tuple. If they are the same
+ * buffer, only one pin is held.
*/
/* NO ELOG(ERROR) from here till changes are logged */
@@ -1865,12 +1866,14 @@ log_heap_update(Relation reln, Buffer oldbuf, ItemPointerData from,
* Note: xlhdr is declared to have adequate size and correct alignment
* for an xl_heap_header. However the two tids, if present at all,
* will be packed in with no wasted space after the xl_heap_header;
- * they aren't necessarily aligned as implied by this struct declaration.
+ * they aren't necessarily aligned as implied by this struct
+ * declaration.
*/
- struct {
- xl_heap_header hdr;
- TransactionId tid1;
- TransactionId tid2;
+ struct
+ {
+ xl_heap_header hdr;
+ TransactionId tid1;
+ TransactionId tid2;
} xlhdr;
int hsize = SizeOfHeapHeader;
xl_heap_update xlrec;
@@ -1972,7 +1975,7 @@ heap_xlog_clean(bool redo, XLogRecPtr lsn, XLogRecord *record)
if (record->xl_len > SizeOfHeapClean)
{
- OffsetNumber unbuf[BLCKSZ/sizeof(OffsetNumber)];
+ OffsetNumber unbuf[BLCKSZ / sizeof(OffsetNumber)];
OffsetNumber *unused = unbuf;
char *unend;
ItemId lp;
@@ -2084,9 +2087,10 @@ heap_xlog_insert(bool redo, XLogRecPtr lsn, XLogRecord *record)
if (redo)
{
- struct {
+ struct
+ {
HeapTupleHeaderData hdr;
- char data[MaxTupleSize];
+ char data[MaxTupleSize];
} tbuf;
HeapTupleHeader htup;
xl_heap_header xlhdr;
@@ -2251,9 +2255,10 @@ newsame:;
if (redo)
{
- struct {
+ struct
+ {
HeapTupleHeaderData hdr;
- char data[MaxTupleSize];
+ char data[MaxTupleSize];
} tbuf;
xl_heap_header xlhdr;
int hsize;
diff --git a/src/backend/access/heap/hio.c b/src/backend/access/heap/hio.c
index 81a559b37e4..44ecb3c8c71 100644
--- a/src/backend/access/heap/hio.c
+++ b/src/backend/access/heap/hio.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Id: hio.c,v 1.42 2001/07/13 22:52:58 tgl Exp $
+ * $Id: hio.c,v 1.43 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -83,7 +83,7 @@ RelationPutHeapTuple(Relation relation,
* NOTE: it is unlikely, but not quite impossible, for otherBuffer to be the
* same buffer we select for insertion of the new tuple (this could only
* happen if space is freed in that page after heap_update finds there's not
- * enough there). In that case, the page will be pinned and locked only once.
+ * enough there). In that case, the page will be pinned and locked only once.
*
* Note that we use LockPage(rel, 0) to lock relation for extension.
* We can do this as long as in all other places we use page-level locking
@@ -115,17 +115,19 @@ RelationGetBufferForTuple(Relation relation, Size len,
if (otherBuffer != InvalidBuffer)
otherBlock = BufferGetBlockNumber(otherBuffer);
else
- otherBlock = InvalidBlockNumber; /* just to keep compiler quiet */
+ otherBlock = InvalidBlockNumber; /* just to keep compiler
+ * quiet */
/*
* We first try to put the tuple on the same page we last inserted a
* tuple on, as cached in the relcache entry. If that doesn't work,
- * we ask the shared Free Space Map to locate a suitable page. Since
+ * we ask the shared Free Space Map to locate a suitable page. Since
* the FSM's info might be out of date, we have to be prepared to loop
* around and retry multiple times. (To insure this isn't an infinite
- * loop, we must update the FSM with the correct amount of free space on
- * each page that proves not to be suitable.) If the FSM has no record of
- * a page with enough free space, we give up and extend the relation.
+ * loop, we must update the FSM with the correct amount of free space
+ * on each page that proves not to be suitable.) If the FSM has no
+ * record of a page with enough free space, we give up and extend the
+ * relation.
*/
targetBlock = relation->rd_targblock;
@@ -137,6 +139,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
* target.
*/
targetBlock = GetPageWithFreeSpace(&relation->rd_node, len);
+
/*
* If the FSM knows nothing of the rel, try the last page before
* we give up and extend. This avoids one-tuple-per-page syndrome
@@ -144,7 +147,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
*/
if (targetBlock == InvalidBlockNumber)
{
- BlockNumber nblocks = RelationGetNumberOfBlocks(relation);
+ BlockNumber nblocks = RelationGetNumberOfBlocks(relation);
if (nblocks > 0)
targetBlock = nblocks - 1;
@@ -154,9 +157,9 @@ RelationGetBufferForTuple(Relation relation, Size len,
while (targetBlock != InvalidBlockNumber)
{
/*
- * Read and exclusive-lock the target block, as well as the
- * other block if one was given, taking suitable care with
- * lock ordering and the possibility they are the same block.
+ * Read and exclusive-lock the target block, as well as the other
+ * block if one was given, taking suitable care with lock ordering
+ * and the possibility they are the same block.
*/
if (otherBuffer == InvalidBuffer)
{
@@ -184,9 +187,10 @@ RelationGetBufferForTuple(Relation relation, Size len,
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE);
}
+
/*
- * Now we can check to see if there's enough free space here.
- * If so, we're done.
+ * Now we can check to see if there's enough free space here. If
+ * so, we're done.
*/
pageHeader = (Page) BufferGetPage(buffer);
pageFreeSpace = PageGetFreeSpace(pageHeader);
@@ -196,22 +200,22 @@ RelationGetBufferForTuple(Relation relation, Size len,
relation->rd_targblock = targetBlock;
return buffer;
}
+
/*
- * Not enough space, so we must give up our page locks and
- * pin (if any) and prepare to look elsewhere. We don't care
- * which order we unlock the two buffers in, so this can be
- * slightly simpler than the code above.
+ * Not enough space, so we must give up our page locks and pin (if
+ * any) and prepare to look elsewhere. We don't care which order
+ * we unlock the two buffers in, so this can be slightly simpler
+ * than the code above.
*/
LockBuffer(buffer, BUFFER_LOCK_UNLOCK);
if (otherBuffer == InvalidBuffer)
- {
ReleaseBuffer(buffer);
- }
else if (otherBlock != targetBlock)
{
LockBuffer(otherBuffer, BUFFER_LOCK_UNLOCK);
ReleaseBuffer(buffer);
}
+
/*
* Update FSM as to condition of this page, and ask for another
* page to try.
@@ -225,9 +229,9 @@ RelationGetBufferForTuple(Relation relation, Size len,
/*
* Have to extend the relation.
*
- * 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 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.
*/
if (!relation->rd_myxactonly)
LockPage(relation, 0, ExclusiveLock);
@@ -236,20 +240,21 @@ RelationGetBufferForTuple(Relation relation, Size len,
* XXX This does an lseek - rather expensive - but at the moment it is
* the only way to accurately determine how many blocks are in a
* relation. Is it worth keeping an accurate file length in shared
- * memory someplace, rather than relying on the kernel to do it for us?
+ * memory someplace, rather than relying on the kernel to do it for
+ * us?
*/
buffer = ReadBuffer(relation, 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 (!relation->rd_myxactonly)
UnlockPage(relation, 0, ExclusiveLock);
/*
- * We can be certain that locking the otherBuffer first is OK,
- * since it must have a lower page number.
+ * We can be certain that locking the otherBuffer first is OK, since
+ * it must have a lower page number.
*/
if (otherBuffer != InvalidBuffer)
LockBuffer(otherBuffer, BUFFER_LOCK_EXCLUSIVE);
@@ -273,7 +278,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
*
* XXX should we enter the new page into the free space map immediately,
* or just keep it for this backend's exclusive use in the short run
- * (until VACUUM sees it)? Seems to depend on whether you expect the
+ * (until VACUUM sees it)? Seems to depend on whether you expect the
* current backend to make more insertions or not, which is probably a
* good bet most of the time. So for now, don't add it to FSM yet.
*/
diff --git a/src/backend/access/heap/stats.c b/src/backend/access/heap/stats.c
index 6dabf49e341..6f5dfbea141 100644
--- a/src/backend/access/heap/stats.c
+++ b/src/backend/access/heap/stats.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/heap/Attic/stats.c,v 1.24 2001/03/22 06:16:07 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/heap/Attic/stats.c,v 1.25 2001/10/25 05:49:21 momjian Exp $
*
* NOTES
* initam should be moved someplace else.
@@ -164,7 +164,6 @@ ResetHeapAccessStatistics()
time(&stats->local_reset_timestamp);
time(&stats->last_request_timestamp);
}
-
#endif
#ifdef NOT_USED
@@ -200,7 +199,6 @@ GetHeapAccessStatistics()
return stats;
}
-
#endif
#ifdef NOT_USED
@@ -211,7 +209,6 @@ GetHeapAccessStatistics()
void
PrintHeapAccessStatistics(HeapAccessStatistics stats)
{
-
/*
* return nothing if stats aren't valid
*/
@@ -302,7 +299,6 @@ PrintHeapAccessStatistics(HeapAccessStatistics stats)
printf("\n");
}
-
#endif
#ifdef NOT_USED
@@ -317,7 +313,6 @@ PrintAndFreeHeapAccessStatistics(HeapAccessStatistics stats)
if (stats != NULL)
pfree(stats);
}
-
#endif
/* ----------------------------------------------------------------
@@ -331,7 +326,6 @@ PrintAndFreeHeapAccessStatistics(HeapAccessStatistics stats)
void
initam(void)
{
-
/*
* initialize heap statistics.
*/
diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
index dd881ca5f01..5ddefde8c71 100644
--- a/src/backend/access/heap/tuptoaster.c
+++ b/src/backend/access/heap/tuptoaster.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.24 2001/08/10 18:57:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/heap/tuptoaster.c,v 1.25 2001/10/25 05:49:21 momjian Exp $
*
*
* INTERFACE ROUTINES
@@ -74,14 +74,13 @@ heap_tuple_toast_attrs(Relation rel, HeapTuple newtup, HeapTuple oldtup)
* external storage (possibly still in compressed format).
* ----------
*/
-varattrib *
+varattrib *
heap_tuple_fetch_attr(varattrib *attr)
{
varattrib *result;
if (VARATT_IS_EXTERNAL(attr))
{
-
/*
* This is an external stored plain value
*/
@@ -89,7 +88,6 @@ heap_tuple_fetch_attr(varattrib *attr)
}
else
{
-
/*
* This is a plain value inside of the main tuple - why am I
* called?
@@ -108,7 +106,7 @@ heap_tuple_fetch_attr(varattrib *attr)
* or external storage.
* ----------
*/
-varattrib *
+varattrib *
heap_tuple_untoast_attr(varattrib *attr)
{
varattrib *result;
@@ -135,7 +133,6 @@ heap_tuple_untoast_attr(varattrib *attr)
}
else
{
-
/*
* This is an external stored plain value
*/
@@ -144,7 +141,6 @@ heap_tuple_untoast_attr(varattrib *attr)
}
else if (VARATT_IS_COMPRESSED(attr))
{
-
/*
* This is a compressed value inside of the main tuple
*/
@@ -181,8 +177,8 @@ toast_raw_datum_size(Datum value)
if (VARATT_IS_COMPRESSED(attr))
{
/*
- * va_rawsize shows the original data size, whether the datum
- * is external or not.
+ * va_rawsize shows the original data size, whether the datum is
+ * external or not.
*/
result = attr->va_content.va_compressed.va_rawsize + VARHDRSZ;
}
@@ -301,7 +297,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
if (oldtup != NULL)
{
-
/*
* For UPDATE get the old and new values of this attribute
*/
@@ -324,7 +319,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
old_value->va_content.va_external.va_toastrelid !=
new_value->va_content.va_external.va_toastrelid)
{
-
/*
* The old external store value isn't needed any more
* after the update
@@ -334,7 +328,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
}
else
{
-
/*
* This attribute isn't changed by this update so we
* reuse the original reference to the old value in
@@ -348,7 +341,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
}
else
{
-
/*
* For INSERT simply get the new value
*/
@@ -372,7 +364,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
*/
if (att[i]->attlen == -1)
{
-
/*
* If the table's attribute says PLAIN always, force it so.
*/
@@ -400,7 +391,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
}
else
{
-
/*
* Not a variable size attribute, plain storage always
*/
@@ -475,7 +465,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
}
else
{
-
/*
* incompressible data, ignore on subsequent compression
* passes
@@ -588,7 +577,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup)
}
else
{
-
/*
* incompressible data, ignore on subsequent compression
* passes
@@ -776,9 +764,10 @@ toast_save_datum(Relation rel, Datum value)
Datum t_values[3];
char t_nulls[3];
varattrib *result;
- struct {
- struct varlena hdr;
- char data[TOAST_MAX_CHUNK_SIZE];
+ struct
+ {
+ struct varlena hdr;
+ char data[TOAST_MAX_CHUNK_SIZE];
} chunk_data;
int32 chunk_size;
int32 chunk_seq = 0;
@@ -851,12 +840,12 @@ toast_save_datum(Relation rel, Datum value)
heap_insert(toastrel, toasttup);
/*
- * Create the index entry. We cheat a little here by not using
+ * Create the index entry. We cheat a little here by not using
* FormIndexDatum: this relies on the knowledge that the index
* columns are the same as the initial columns of the table.
*
- * Note also that there had better not be any user-created index
- * on the TOAST table, since we don't bother to update anything else.
+ * Note also that there had better not be any user-created index on
+ * the TOAST table, since we don't bother to update anything else.
*/
idxres = index_insert(toastidx, t_values, t_nulls,
&(toasttup->t_self),
@@ -916,8 +905,8 @@ toast_delete_datum(Relation rel, Datum value)
toastidx = index_open(toastrel->rd_rel->reltoastidxid);
/*
- * Setup a scan key to fetch from the index by va_valueid
- * (we don't particularly care whether we see them in sequence or not)
+ * Setup a scan key to fetch from the index by va_valueid (we don't
+ * particularly care whether we see them in sequence or not)
*/
ScanKeyEntryInitialize(&toastkey,
(bits16) 0,
@@ -1096,5 +1085,4 @@ toast_fetch_datum(varattrib *attr)
return result;
}
-
#endif /* TUPLE_TOASTER_ACTIVE */
diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c
index 1115fb828b2..b03690257c8 100644
--- a/src/backend/access/index/genam.c
+++ b/src/backend/access/index/genam.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/index/genam.c,v 1.28 2001/06/22 19:16:21 wieck Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/index/genam.c,v 1.29 2001/10/25 05:49:21 momjian Exp $
*
* NOTES
* many of the old access method routines have been turned into
@@ -240,5 +240,4 @@ IndexScanRestorePosition(IndexScanDesc scan)
scan->flags = 0x0; /* XXX should have a symbolic name */
}
-
#endif
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 2a1d3294dd0..8e1d5b87332 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.53 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.54 2001/10/25 05:49:21 momjian Exp $
*
* INTERFACE ROUTINES
* index_open - open an index relation by relationId
@@ -241,9 +241,9 @@ index_beginscan(Relation relation,
pgstat_initstats(&scan->xs_pgstat_info, relation);
/*
- * We want to look up the amgettuple procedure just once per scan,
- * not once per index_getnext call. So do it here and save
- * the fmgr info result in the scan descriptor.
+ * We want to look up the amgettuple procedure just once per scan, not
+ * once per index_getnext call. So do it here and save the fmgr info
+ * result in the scan descriptor.
*/
GET_SCAN_PROCEDURE(beginscan, amgettuple);
fmgr_info(procedure, &scan->fn_getnext);
@@ -342,8 +342,8 @@ index_getnext(IndexScanDesc scan,
pgstat_count_index_scan(&scan->xs_pgstat_info);
/*
- * have the am's gettuple proc do all the work.
- * index_beginscan already set up fn_getnext.
+ * have the am's gettuple proc do all the work. index_beginscan
+ * already set up fn_getnext.
*/
result = (RetrieveIndexResult)
DatumGetPointer(FunctionCall2(&scan->fn_getnext,
@@ -378,8 +378,8 @@ index_bulk_delete(Relation relation,
result = (IndexBulkDeleteResult *)
DatumGetPointer(OidFunctionCall3(procedure,
PointerGetDatum(relation),
- PointerGetDatum((Pointer) callback),
- PointerGetDatum(callback_state)));
+ PointerGetDatum((Pointer) callback),
+ PointerGetDatum(callback_state)));
return result;
}
diff --git a/src/backend/access/index/istrat.c b/src/backend/access/index/istrat.c
index 568581fc18a..88d1757e4cd 100644
--- a/src/backend/access/index/istrat.c
+++ b/src/backend/access/index/istrat.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.53 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.54 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -120,9 +120,9 @@ StrategyOperatorIsValid(StrategyOperator operator,
StrategyNumber maxStrategy)
{
return (bool)
- (PointerIsValid(operator) &&
- StrategyNumberIsInBounds(operator->strategy, maxStrategy) &&
- !(operator->flags & ~(SK_NEGATE | SK_COMMUTE)));
+ (PointerIsValid(operator) &&
+ StrategyNumberIsInBounds(operator->strategy, maxStrategy) &&
+ !(operator->flags & ~(SK_NEGATE | SK_COMMUTE)));
}
/* ----------------
@@ -196,7 +196,6 @@ StrategyEvaluationIsValid(StrategyEvaluation evaluation)
}
return true;
}
-
#endif
#ifdef NOT_USED
@@ -255,7 +254,6 @@ StrategyTermEvaluate(StrategyTerm term,
return result;
}
-
#endif
/* ----------------
@@ -453,7 +451,6 @@ RelationInvokeStrategy(Relation relation,
/* not reached, just to make compiler happy */
return FALSE;
}
-
#endif
/* ----------------
@@ -552,7 +549,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
{
for (attIndex = 0; attIndex < maxAttributeNumber; attIndex++)
{
- Oid opclass = operatorClassObjectId[attIndex];
+ Oid opclass = operatorClassObjectId[attIndex];
RegProcedure *loc;
StrategyNumber support;
@@ -562,7 +559,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
{
tuple = SearchSysCache(AMPROCNUM,
ObjectIdGetDatum(opclass),
- Int16GetDatum(support+1),
+ Int16GetDatum(support + 1),
0, 0);
if (HeapTupleIsValid(tuple))
{
@@ -581,7 +578,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
/* Now load the strategy information for the index operators */
for (attIndex = 0; attIndex < maxAttributeNumber; attIndex++)
{
- Oid opclass = operatorClassObjectId[attIndex];
+ Oid opclass = operatorClassObjectId[attIndex];
StrategyMap map;
StrategyNumber strategy;
@@ -591,7 +588,7 @@ IndexSupportInitialize(IndexStrategy indexStrategy,
for (strategy = 1; strategy <= maxStrategyNumber; strategy++)
{
- ScanKey mapentry = StrategyMapGetScanKeyEntry(map, strategy);
+ ScanKey mapentry = StrategyMapGetScanKeyEntry(map, strategy);
tuple = SearchSysCache(AMOPSTRATEGY,
ObjectIdGetDatum(opclass),
@@ -643,5 +640,4 @@ IndexStrategyDisplay(IndexStrategy indexStrategy,
}
}
}
-
#endif /* defined(ISTRATDEBUG) */
diff --git a/src/backend/access/nbtree/nbtcompare.c b/src/backend/access/nbtree/nbtcompare.c
index b1affe20188..a4ba5870534 100644
--- a/src/backend/access/nbtree/nbtcompare.c
+++ b/src/backend/access/nbtree/nbtcompare.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v 1.42 2001/05/03 19:00:36 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v 1.43 2001/10/25 05:49:21 momjian Exp $
*
* NOTES
*
@@ -25,7 +25,7 @@
* NOTE: although any negative int32 is acceptable for reporting "<",
* and any positive int32 is acceptable for reporting ">", routines
* that work on 32-bit or wider datatypes can't just return "a - b".
- * That could overflow and give the wrong answer. Also, one should not
+ * That could overflow and give the wrong answer. Also, one should not
* return INT_MIN to report "<", since some callers will negate the result.
*
* NOTE: it is critical that the comparison function impose a total order
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index bc250cd48e8..1d3a7e82ab0 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.86 2001/09/29 23:49:51 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.87 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1100,7 +1100,7 @@ _bt_checksplitloc(FindSplitData *state, OffsetNumber firstright,
* If we are not on the leaf level, we will be able to discard the key
* data from the first item that winds up on the right page.
*/
- if (! state->is_leaf)
+ if (!state->is_leaf)
rightfree += (int) firstrightitemsz -
(int) (MAXALIGN(sizeof(BTItemData)) + sizeof(ItemIdData));
@@ -1115,7 +1115,8 @@ _bt_checksplitloc(FindSplitData *state, OffsetNumber firstright,
{
/*
* On a rightmost page, try to equalize right free space with
- * twice the left free space. See comments for _bt_findsplitloc.
+ * twice the left free space. See comments for
+ * _bt_findsplitloc.
*/
delta = (2 * leftfree) - rightfree;
}
@@ -1618,7 +1619,6 @@ _bt_fixlevel(Relation rel, Buffer buf, BlockNumber limit)
for (;;)
{
-
/*
* Read up to 2 more child pages and look for pointers to them in
* *saved* parent page
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c
index 376274c5621..2e6eb20cd4c 100644
--- a/src/backend/access/nbtree/nbtpage.c
+++ b/src/backend/access/nbtree/nbtpage.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.53 2001/07/15 22:48:16 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtpage.c,v 1.54 2001/10/25 05:49:21 momjian Exp $
*
* NOTES
* Postgres btree pages look like ordinary relation pages. The opaque
@@ -153,7 +153,6 @@ _bt_getroot(Relation rel, int access)
*/
if (metad->btm_root == P_NONE)
{
-
/*
* Get, initialize, write, and leave a lock of the appropriate
* type on the new root page. Since this is the first page in
@@ -209,7 +208,6 @@ _bt_getroot(Relation rel, int access)
}
else
{
-
/*
* Metadata initialized by someone else. In order to
* guarantee no deadlocks, we have to release the metadata
@@ -237,7 +235,6 @@ _bt_getroot(Relation rel, int access)
if (!P_ISROOT(rootopaque))
{
-
/*
* It happened, but if root page splitter failed to create new
* root page then we'll go in loop trying to call _bt_getroot
@@ -402,7 +399,6 @@ _bt_wrtnorelbuf(Relation rel, Buffer buf)
void
_bt_pageinit(Page page, Size size)
{
-
/*
* Cargo_cult programming -- don't really need this to be zero, but
* creating new pages is an infrequent occurrence and it makes me feel
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index b1426456241..e49f06b1c38 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -12,7 +12,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.82 2001/07/15 22:48:16 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.83 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,6 +37,7 @@ typedef struct
bool haveDead;
Relation heapRel;
BTSpool *spool;
+
/*
* spool2 is needed only when the index is an unique index. Dead
* tuples are put into spool2 instead of spool in order to avoid
@@ -58,11 +59,11 @@ bool FixBTree = true;
static void _bt_restscan(IndexScanDesc scan);
static void btbuildCallback(Relation index,
- HeapTuple htup,
- Datum *attdata,
- char *nulls,
- bool tupleIsAlive,
- void *state);
+ HeapTuple htup,
+ Datum *attdata,
+ char *nulls,
+ bool tupleIsAlive,
+ void *state);
/*
@@ -134,6 +135,7 @@ btbuild(PG_FUNCTION_ARGS)
if (buildstate.usefast)
{
buildstate.spool = _bt_spoolinit(index, indexInfo->ii_Unique);
+
/*
* Different from spool, the uniqueness isn't checked for spool2.
*/
@@ -214,7 +216,7 @@ btbuildCallback(Relation index,
bool tupleIsAlive,
void *state)
{
- BTBuildState *buildstate = (BTBuildState *) state;
+ BTBuildState *buildstate = (BTBuildState *) state;
IndexTuple itup;
BTItem btitem;
InsertIndexResult res;
@@ -226,9 +228,9 @@ btbuildCallback(Relation index,
btitem = _bt_formitem(itup);
/*
- * if we are doing bottom-up btree build, we insert the index into
- * a spool file for subsequent processing. otherwise, we insert
- * into the btree.
+ * if we are doing bottom-up btree build, we insert the index into a
+ * spool file for subsequent processing. otherwise, we insert into
+ * the btree.
*/
if (buildstate->usefast)
{
@@ -305,7 +307,6 @@ btgettuple(PG_FUNCTION_ARGS)
if (ItemPointerIsValid(&(scan->currentItemData)))
{
-
/*
* Restore scan position using heap TID returned by previous call
* to btgettuple(). _bt_restscan() re-grabs the read lock on the
@@ -321,7 +322,7 @@ btgettuple(PG_FUNCTION_ARGS)
* Save heap TID to use it in _bt_restscan. Then release the read
* lock on the buffer so that we aren't blocking other backends.
*
- * NOTE: we do keep the pin on the buffer! This is essential to ensure
+ * NOTE: we do keep the pin on the buffer! This is essential to ensure
* that someone else doesn't delete the index entry we are stopped on.
*/
if (res)
@@ -362,7 +363,6 @@ btrescan(PG_FUNCTION_ARGS)
#ifdef NOT_USED /* XXX surely it's wrong to ignore this? */
bool fromEnd = PG_GETARG_BOOL(1);
-
#endif
ScanKey scankey = (ScanKey) PG_GETARG_POINTER(2);
ItemPointer iptr;
@@ -547,7 +547,7 @@ btbulkdelete(PG_FUNCTION_ARGS)
IndexBulkDeleteCallback callback = (IndexBulkDeleteCallback) PG_GETARG_POINTER(1);
void *callback_state = (void *) PG_GETARG_POINTER(2);
IndexBulkDeleteResult *result;
- BlockNumber num_pages;
+ BlockNumber num_pages;
double tuples_removed;
double num_index_tuples;
RetrieveIndexResult res;
@@ -559,15 +559,16 @@ btbulkdelete(PG_FUNCTION_ARGS)
num_index_tuples = 0;
/*
- * We use a standard IndexScanDesc scan object, but to speed up the loop,
- * we skip most of the wrapper layers of index_getnext and instead call
- * _bt_step directly. This implies holding buffer lock on a target page
- * throughout the loop over the page's tuples. Initially, we have a read
- * lock acquired by _bt_step when we stepped onto the page. If we find
- * a tuple we need to delete, we trade in the read lock for an exclusive
- * write lock; after that, we hold the write lock until we step off the
- * page (fortunately, _bt_relbuf doesn't care which kind of lock it's
- * releasing). This should minimize the amount of work needed per page.
+ * We use a standard IndexScanDesc scan object, but to speed up the
+ * loop, we skip most of the wrapper layers of index_getnext and
+ * instead call _bt_step directly. This implies holding buffer lock
+ * on a target page throughout the loop over the page's tuples.
+ * Initially, we have a read lock acquired by _bt_step when we stepped
+ * onto the page. If we find a tuple we need to delete, we trade in
+ * the read lock for an exclusive write lock; after that, we hold the
+ * write lock until we step off the page (fortunately, _bt_relbuf
+ * doesn't care which kind of lock it's releasing). This should
+ * minimize the amount of work needed per page.
*/
scan = index_beginscan(rel, false, 0, (ScanKey) NULL);
so = (BTScanOpaque) scan->opaque;
@@ -579,7 +580,7 @@ btbulkdelete(PG_FUNCTION_ARGS)
if (res != NULL)
{
Buffer buf;
- BlockNumber lockedBlock = InvalidBlockNumber;
+ BlockNumber lockedBlock = InvalidBlockNumber;
pfree(res);
/* we have the buffer pinned and locked */
@@ -589,11 +590,11 @@ btbulkdelete(PG_FUNCTION_ARGS)
do
{
Page page;
- BlockNumber blkno;
+ BlockNumber blkno;
OffsetNumber offnum;
BTItem btitem;
IndexTuple itup;
- ItemPointer htup;
+ ItemPointer htup;
/* current is the next index tuple */
blkno = ItemPointerGetBlockNumber(current);
@@ -607,9 +608,10 @@ btbulkdelete(PG_FUNCTION_ARGS)
{
/*
* If this is first deletion on this page, trade in read
- * lock for a really-exclusive write lock. Then, step back
- * one and re-examine the item, because someone else might
- * have inserted an item while we weren't holding the lock!
+ * lock for a really-exclusive write lock. Then, step
+ * back one and re-examine the item, because someone else
+ * might have inserted an item while we weren't holding
+ * the lock!
*/
if (blkno != lockedBlock)
{
@@ -632,8 +634,8 @@ btbulkdelete(PG_FUNCTION_ARGS)
* We need to back up the scan one item so that the next
* cycle will re-examine the same offnum on this page.
*
- * For now, just hack the current-item index. Will need
- * to be smarter when deletion includes removal of empty
+ * For now, just hack the current-item index. Will need to
+ * be smarter when deletion includes removal of empty
* index pages.
*/
current->ip_posid--;
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c
index 86ff810845c..c1a82f2b856 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -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.68 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.69 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -589,10 +589,10 @@ _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
- * greater than the scan key and we know that everything on later pages
- * is less than or equal to scan key.
- *
+ * possibly at the end of a page on which all the existing items are
+ * greater than the scan key and we know that everything on later
+ * pages is less 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
* the scan strategy to find the exact place to start the scan.
diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c
index 2aca6bf7cfc..4b327bff45f 100644
--- a/src/backend/access/nbtree/nbtsort.c
+++ b/src/backend/access/nbtree/nbtsort.c
@@ -35,7 +35,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.60 2001/03/22 03:59:15 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v 1.61 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -108,7 +108,7 @@ static void _bt_load(Relation index, BTSpool *btspool, BTSpool *btspool2);
/*
* create and initialize a spool structure
*/
-BTSpool *
+BTSpool *
_bt_spoolinit(Relation index, bool isunique)
{
BTSpool *btspool = (BTSpool *) palloc(sizeof(BTSpool));
@@ -354,7 +354,6 @@ _bt_buildadd(Relation index, BTPageState *state, BTItem bti)
if (pgspc < btisz || pgspc < state->btps_full)
{
-
/*
* Item won't fit on this page, or we feel the page is full enough
* already. Finish off the page and write it out.
@@ -544,7 +543,6 @@ _bt_load(Relation index, BTSpool *btspool, BTSpool *btspool2)
if (merge)
{
-
/*
* Another BTSpool for dead tuples exists. Now we have to merge
* btspool and btspool2.
diff --git a/src/backend/access/nbtree/nbtstrat.c b/src/backend/access/nbtree/nbtstrat.c
index 4045496979c..533af33681a 100644
--- a/src/backend/access/nbtree/nbtstrat.c
+++ b/src/backend/access/nbtree/nbtstrat.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/Attic/nbtstrat.c,v 1.14 2001/05/30 19:53:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/Attic/nbtstrat.c,v 1.15 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -134,5 +134,4 @@ _bt_invokestrat(Relation rel,
return (RelationInvokeStrategy(rel, &BTEvaluationData, attno, strat,
left, right));
}
-
#endif
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index 86d2e3cf8fa..55c4c323001 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtutils.c,v 1.46 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtutils.c,v 1.47 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -221,7 +221,6 @@ _bt_orderkeys(Relation relation, BTScanOpaque so)
/* We can short-circuit most of the work if there's just one key */
if (numberOfKeys == 1)
{
-
/*
* We don't use indices for 'A is null' and 'A is not null'
* currently and 'A < = > <> NULL' will always fail - so qual is
@@ -317,7 +316,6 @@ _bt_orderkeys(Relation relation, BTScanOpaque so)
}
else
{
-
/*
* No "=" for this key, so we're done with required keys
*/
diff --git a/src/backend/access/rtree/rtree.c b/src/backend/access/rtree/rtree.c
index 42878248b00..0e8305bdfba 100644
--- a/src/backend/access/rtree/rtree.c
+++ b/src/backend/access/rtree/rtree.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.65 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.66 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -58,9 +58,9 @@ typedef struct SPLITVEC
/* for sorting tuples by cost, for picking split */
typedef struct SPLITCOST
{
- OffsetNumber offset_number;
- float cost_differential;
- bool choose_left;
+ OffsetNumber offset_number;
+ float cost_differential;
+ bool choose_left;
} SPLITCOST;
typedef struct RTSTATE
@@ -79,11 +79,11 @@ typedef struct
/* non-export function prototypes */
static void rtbuildCallback(Relation index,
- HeapTuple htup,
- Datum *attdata,
- char *nulls,
- bool tupleIsAlive,
- void *state);
+ HeapTuple htup,
+ Datum *attdata,
+ char *nulls,
+ bool tupleIsAlive,
+ void *state);
static InsertIndexResult rtdoinsert(Relation r, IndexTuple itup,
RTSTATE *rtstate);
static void rttighten(Relation r, RTSTACK *stk, Datum datum, int att_size,
@@ -100,7 +100,7 @@ static OffsetNumber choose(Relation r, Page p, IndexTuple it,
RTSTATE *rtstate);
static int nospace(Page p, IndexTuple it);
static void initRtstate(RTSTATE *rtstate, Relation index);
-static int qsort_comp_splitcost(const void *a, const void *b);
+static int qsort_comp_splitcost(const void *a, const void *b);
/*
@@ -178,7 +178,7 @@ rtbuildCallback(Relation index,
bool tupleIsAlive,
void *state)
{
- RTBuildState *buildstate = (RTBuildState *) state;
+ RTBuildState *buildstate = (RTBuildState *) state;
IndexTuple itup;
InsertIndexResult res;
@@ -194,11 +194,11 @@ rtbuildCallback(Relation index,
}
/*
- * Since we already have the index relation locked, we call
- * rtdoinsert directly. Normal access method calls dispatch
- * through rtinsert, which locks the relation for write. This is
- * the right thing to do if you're inserting single tups, but not
- * when you're initializing the whole index at once.
+ * Since we already have the index relation locked, we call rtdoinsert
+ * directly. Normal access method calls dispatch through rtinsert,
+ * which locks the relation for write. This is the right thing to do
+ * if you're inserting single tups, but not when you're initializing
+ * the whole index at once.
*/
res = rtdoinsert(index, itup, &buildstate->rtState);
@@ -223,6 +223,7 @@ rtinsert(PG_FUNCTION_ARGS)
Datum *datum = (Datum *) PG_GETARG_POINTER(1);
char *nulls = (char *) PG_GETARG_POINTER(2);
ItemPointer ht_ctid = (ItemPointer) PG_GETARG_POINTER(3);
+
#ifdef NOT_USED
Relation heapRel = (Relation) PG_GETARG_POINTER(4);
#endif
@@ -249,7 +250,7 @@ rtinsert(PG_FUNCTION_ARGS)
/*
* Since rtree is not marked "amconcurrent" in pg_am, caller should
- * have acquired exclusive lock on index relation. We need no locking
+ * have acquired exclusive lock on index relation. We need no locking
* here.
*/
@@ -376,9 +377,8 @@ rttighten(Relation r,
PointerGetDatum(&newd_size));
/*
- * If newd_size == 0 we have degenerate rectangles, so we
- * don't know if there was any change, so we have to
- * assume there was.
+ * If newd_size == 0 we have degenerate rectangles, so we don't know
+ * if there was any change, so we have to assume there was.
*/
if ((newd_size == 0) || (newd_size != old_size))
{
@@ -386,7 +386,6 @@ rttighten(Relation r,
if (td->attrs[0]->attlen < 0)
{
-
/*
* This is an internal page, so 'oldud' had better be a union
* (constant-length) key, too. (See comment below.)
@@ -500,10 +499,10 @@ rtdosplit(Relation r,
res = (InsertIndexResult) palloc(sizeof(InsertIndexResultData));
/*
- * spl_left contains a list of the offset numbers of the
- * tuples that will go to the left page. For each offset
- * number, get the tuple item, then add the item to the
- * left page. Similarly for the right side.
+ * spl_left contains a list of the offset numbers of the tuples that
+ * will go to the left page. For each offset number, get the tuple
+ * item, then add the item to the left page. Similarly for the right
+ * side.
*/
/* fill left node */
@@ -527,7 +526,7 @@ rtdosplit(Relation r,
if (i == newitemoff)
ItemPointerSet(&(res->pointerData), lbknum, leftoff);
- spl_left++; /* advance in left split vector */
+ spl_left++; /* advance in left split vector */
}
/* fill right node */
@@ -551,7 +550,7 @@ rtdosplit(Relation r,
if (i == newitemoff)
ItemPointerSet(&(res->pointerData), rbknum, rightoff);
- spl_right++; /* advance in right split vector */
+ spl_right++; /* advance in right split vector */
}
/* Make sure we consumed all of the split vectors, and release 'em */
@@ -764,9 +763,10 @@ rtpicksplit(Relation r,
right_avail_space;
int total_num_tuples,
num_tuples_without_seeds,
- max_after_split; /* in Guttman's lingo, (M - m) */
- float diff; /* diff between cost of putting tuple left or right */
- SPLITCOST *cost_vector;
+ max_after_split; /* in Guttman's lingo, (M - m) */
+ float diff; /* diff between cost of putting tuple left
+ * or right */
+ SPLITCOST *cost_vector;
int n;
/*
@@ -852,7 +852,6 @@ rtpicksplit(Relation r,
if (firsttime)
{
-
/*
* There is no possible split except to put the new item on its
* own page. Since we still have to compute the union rectangles,
@@ -885,25 +884,25 @@ rtpicksplit(Relation r,
/*
* Now split up the regions between the two seeds.
*
- * The cost_vector array will contain hints for determining where
- * each tuple should go. Each record in the array will contain
- * a boolean, choose_left, that indicates which node the tuple
- * prefers to be on, and the absolute difference in cost between
- * putting the tuple in its favored node and in the other node.
+ * The cost_vector array will contain hints for determining where each
+ * tuple should go. Each record in the array will contain a boolean,
+ * choose_left, that indicates which node the tuple prefers to be on,
+ * and the absolute difference in cost between putting the tuple in
+ * its favored node and in the other node.
*
* Later, we will sort the cost_vector in descending order by cost
- * difference, and consider the tuples in that order for
- * placement. That way, the tuples that *really* want to be in
- * one node or the other get to choose first, and the tuples that
- * don't really care choose last.
+ * difference, and consider the tuples in that order for placement.
+ * That way, the tuples that *really* want to be in one node or the
+ * other get to choose first, and the tuples that don't really care
+ * choose last.
*
- * First, build the cost_vector array. The new index tuple will
- * also be handled in this loop, and represented in the array,
- * with i==newitemoff.
+ * First, build the cost_vector array. The new index tuple will also be
+ * handled in this loop, and represented in the array, with
+ * i==newitemoff.
*
- * In the case of variable size tuples it is possible that we only
- * have the two seeds and no other tuples, in which case we don't
- * do any of this cost_vector stuff.
+ * In the case of variable size tuples it is possible that we only have
+ * the two seeds and no other tuples, in which case we don't do any of
+ * this cost_vector stuff.
*/
/* to keep compiler quiet */
@@ -943,21 +942,21 @@ rtpicksplit(Relation r,
}
/*
- * Sort the array. The function qsort_comp_splitcost is
- * set up "backwards", to provided descending order.
+ * Sort the array. The function qsort_comp_splitcost is set up
+ * "backwards", to provided descending order.
*/
qsort(cost_vector, num_tuples_without_seeds, sizeof(SPLITCOST),
&qsort_comp_splitcost);
}
/*
- * Now make the final decisions about where each tuple will go,
- * and build the vectors to return in the SPLITVEC record.
+ * Now make the final decisions about where each tuple will go, and
+ * build the vectors to return in the SPLITVEC record.
*
- * The cost_vector array contains (descriptions of) all the
- * tuples, in the order that we want to consider them, so we
- * we just iterate through it and place each tuple in left
- * or right nodes, according to the criteria described below.
+ * The cost_vector array contains (descriptions of) all the tuples, in
+ * the order that we want to consider them, so we we just iterate
+ * through it and place each tuple in left or right nodes, according
+ * to the criteria described below.
*/
left = v->spl_left;
@@ -965,9 +964,9 @@ rtpicksplit(Relation r,
right = v->spl_right;
v->spl_nright = 0;
- /* Place the seeds first.
- * left avail space, left union, right avail space, and right
- * union have already been adjusted for the seeds.
+ /*
+ * Place the seeds first. left avail space, left union, right avail
+ * space, and right union have already been adjusted for the seeds.
*/
*left++ = seed_1;
@@ -983,8 +982,8 @@ rtpicksplit(Relation r,
choose_left;
/*
- * We need to figure out which page needs the least
- * enlargement in order to store the item.
+ * We need to figure out which page needs the least enlargement in
+ * order to store the item.
*/
i = cost_vector[n].offset_number;
@@ -1019,22 +1018,22 @@ rtpicksplit(Relation r,
* the new item.)
*
* Guttman's algorithm actually has two factors to consider (in
- * order): 1. if one node has so many tuples already assigned to
+ * order): 1. if one node has so many tuples already assigned to
* it that the other needs all the rest in order to satisfy the
- * condition that neither node has fewer than m tuples, then
- * that is decisive; 2. otherwise, choose the page that shows
- * the smaller enlargement of its union area.
+ * condition that neither node has fewer than m tuples, then that
+ * is decisive; 2. otherwise, choose the page that shows the
+ * smaller enlargement of its union area.
*
- * I have chosen m = M/2, where M is the maximum number of
- * tuples on a page. (Actually, this is only strictly
- * true for fixed size tuples. For variable size tuples,
- * there still might have to be only one tuple on a page,
- * if it is really big. But even with variable size
- * tuples we still try to get m as close as possible to M/2.)
+ * I have chosen m = M/2, where M is the maximum number of tuples on
+ * a page. (Actually, this is only strictly true for fixed size
+ * tuples. For variable size tuples, there still might have to be
+ * only one tuple on a page, if it is really big. But even with
+ * variable size tuples we still try to get m as close as possible
+ * to M/2.)
*
- * The question of which page shows the smaller enlargement of
- * its union area has already been answered, and the answer
- * stored in the choose_left field of the SPLITCOST record.
+ * The question of which page shows the smaller enlargement of its
+ * union area has already been answered, and the answer stored in
+ * the choose_left field of the SPLITCOST record.
*/
left_feasible = (left_avail_space >= item_1_sz &&
((left_avail_space - item_1_sz) >= newitemsz ||
@@ -1045,10 +1044,10 @@ rtpicksplit(Relation r,
if (left_feasible && right_feasible)
{
/*
- * Both feasible, use Guttman's algorithm.
- * First check the m condition described above, and if
- * that doesn't apply, choose the page with the smaller
- * enlargement of its union area.
+ * Both feasible, use Guttman's algorithm. First check the m
+ * condition described above, and if that doesn't apply,
+ * choose the page with the smaller enlargement of its union
+ * area.
*/
if (v->spl_nleft > max_after_split)
choose_left = false;
@@ -1064,7 +1063,7 @@ rtpicksplit(Relation r,
else
{
elog(ERROR, "rtpicksplit: failed to find a workable page split");
- choose_left = false;/* keep compiler quiet */
+ choose_left = false; /* keep compiler quiet */
}
if (choose_left)
@@ -1090,9 +1089,7 @@ rtpicksplit(Relation r,
}
if (num_tuples_without_seeds > 0)
- {
pfree(cost_vector);
- }
*left = *right = InvalidOffsetNumber; /* add ending sentinels */
@@ -1189,7 +1186,7 @@ rtbulkdelete(PG_FUNCTION_ARGS)
IndexBulkDeleteCallback callback = (IndexBulkDeleteCallback) PG_GETARG_POINTER(1);
void *callback_state = (void *) PG_GETARG_POINTER(2);
IndexBulkDeleteResult *result;
- BlockNumber num_pages;
+ BlockNumber num_pages;
double tuples_removed;
double num_index_tuples;
RetrieveIndexResult res;
@@ -1200,7 +1197,7 @@ rtbulkdelete(PG_FUNCTION_ARGS)
/*
* Since rtree is not marked "amconcurrent" in pg_am, caller should
- * have acquired exclusive lock on index relation. We need no locking
+ * have acquired exclusive lock on index relation. We need no locking
* here.
*/
@@ -1279,9 +1276,10 @@ initRtstate(RTSTATE *rtstate, Relation index)
static int
qsort_comp_splitcost(const void *a, const void *b)
{
- float diff =
- ((SPLITCOST *)a)->cost_differential -
- ((SPLITCOST *)b)->cost_differential;
+ float diff =
+ ((SPLITCOST *) a)->cost_differential -
+ ((SPLITCOST *) b)->cost_differential;
+
if (diff < 0)
return 1;
else if (diff > 0)
@@ -1342,7 +1340,6 @@ _rtdump(Relation r)
ReleaseBuffer(buf);
}
}
-
#endif /* defined RTDEBUG */
void
diff --git a/src/backend/access/rtree/rtscan.c b/src/backend/access/rtree/rtscan.c
index 1311cfdc29a..c6883fd041b 100644
--- a/src/backend/access/rtree/rtscan.c
+++ b/src/backend/access/rtree/rtscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtscan.c,v 1.38 2001/07/15 22:48:16 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtscan.c,v 1.39 2001/10/25 05:49:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -380,7 +380,6 @@ adjustiptr(IndexScanDesc s,
}
else
{
-
/*
* remember that we're before the current
* tuple
diff --git a/src/backend/access/rtree/rtstrat.c b/src/backend/access/rtree/rtstrat.c
index 74ee6a39a46..41de4a4e3e6 100644
--- a/src/backend/access/rtree/rtstrat.c
+++ b/src/backend/access/rtree/rtstrat.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtstrat.c,v 1.17 2001/05/30 19:53:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtstrat.c,v 1.18 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -163,7 +163,7 @@ static StrategyExpression RTEvaluationExpressions[RTNStrategies] = {
NULL, /* express overlap */
NULL, /* express overright */
NULL, /* express right */
- (StrategyExpression) RTEqualExpressionData, /* express same */
+ (StrategyExpression) RTEqualExpressionData, /* express same */
NULL, /* express contains */
NULL /* express contained-by */
};
@@ -221,7 +221,6 @@ RelationInvokeRTStrategy(Relation r,
return (RelationInvokeStrategy(r, &RTEvaluationData, attnum, s,
left, right));
}
-
#endif
RegProcedure
diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c
index cd83da93ea6..1436b32aa16 100644
--- a/src/backend/access/transam/clog.c
+++ b/src/backend/access/transam/clog.c
@@ -13,7 +13,7 @@
* Portions Copyright (c) 1996-2001, 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.4 2001/09/29 04:02:21 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/clog.c,v 1.5 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -33,7 +33,7 @@
/*
* Defines for CLOG page and segment sizes. A page is the same BLCKSZ
- * as is used everywhere else in Postgres. The CLOG segment size can be
+ * as is used everywhere else in Postgres. The CLOG segment size can be
* chosen somewhat arbitrarily; we make it 1 million transactions by default,
* or 256Kb.
*
@@ -48,15 +48,15 @@
/* We need two bits per xact, so four xacts fit in a byte */
#define CLOG_BITS_PER_XACT 2
-#define CLOG_XACTS_PER_BYTE 4
-#define CLOG_XACTS_PER_PAGE (CLOG_BLCKSZ * CLOG_XACTS_PER_BYTE)
+#define CLOG_XACTS_PER_BYTE 4
+#define CLOG_XACTS_PER_PAGE (CLOG_BLCKSZ * CLOG_XACTS_PER_BYTE)
#define CLOG_XACT_BITMASK ((1 << CLOG_BITS_PER_XACT) - 1)
#define CLOG_XACTS_PER_SEGMENT 0x100000
#define CLOG_PAGES_PER_SEGMENT (CLOG_XACTS_PER_SEGMENT / CLOG_XACTS_PER_PAGE)
#define TransactionIdToPage(xid) ((xid) / (TransactionId) CLOG_XACTS_PER_PAGE)
-#define TransactionIdToPgIndex(xid) ((xid) % (TransactionId) CLOG_XACTS_PER_PAGE)
+#define TransactionIdToPgIndex(xid) ((xid) % (TransactionId) CLOG_XACTS_PER_PAGE)
#define TransactionIdToByte(xid) (TransactionIdToPgIndex(xid) / CLOG_XACTS_PER_BYTE)
#define TransactionIdToBIndex(xid) ((xid) % (TransactionId) CLOG_XACTS_PER_BYTE)
@@ -101,15 +101,15 @@
* the control lock.
*
* As with the regular buffer manager, it is possible for another process
- * to re-dirty a page that is currently being written out. This is handled
+ * to re-dirty a page that is currently being written out. This is handled
* by setting the page's state from WRITE_IN_PROGRESS to DIRTY. The writing
* process must notice this and not mark the page CLEAN when it's done.
*
* XLOG interactions: this module generates an XLOG record whenever a new
- * CLOG page is initialized to zeroes. Other writes of CLOG come from
+ * CLOG page is initialized to zeroes. Other writes of CLOG come from
* recording of transaction commit or abort in xact.c, which generates its
* own XLOG records for these events and will re-perform the status update
- * on redo; so we need make no additional XLOG entry here. Also, the XLOG
+ * on redo; so we need make no additional XLOG entry here. Also, the XLOG
* is guaranteed flushed through the XLOG commit record before we are called
* to log a commit, so the WAL rule "write xlog before data" is satisfied
* automatically for commits, and we don't really care for aborts. Therefore,
@@ -120,11 +120,13 @@
typedef enum
{
- CLOG_PAGE_EMPTY, /* CLOG buffer is not in use */
- CLOG_PAGE_READ_IN_PROGRESS, /* CLOG page is being read in */
- CLOG_PAGE_CLEAN, /* CLOG page is valid and not dirty */
- CLOG_PAGE_DIRTY, /* CLOG page is valid but needs write */
- CLOG_PAGE_WRITE_IN_PROGRESS /* CLOG page is being written out in */
+ CLOG_PAGE_EMPTY,/* CLOG buffer is not in use */
+ CLOG_PAGE_READ_IN_PROGRESS, /* CLOG page is being read
+ * in */
+ CLOG_PAGE_CLEAN,/* CLOG page is valid and not dirty */
+ CLOG_PAGE_DIRTY,/* CLOG page is valid but needs write */
+ CLOG_PAGE_WRITE_IN_PROGRESS /* CLOG page is being
+ * written out in */
} ClogPageStatus;
/*
@@ -134,14 +136,15 @@ typedef struct ClogCtlData
{
/*
* Info for each buffer slot. Page number is undefined when status is
- * EMPTY. lru_count is essentially the number of operations since last
- * use of this page; the page with highest lru_count is the best candidate
- * to replace.
+ * EMPTY. lru_count is essentially the number of operations since
+ * last use of this page; the page with highest lru_count is the best
+ * candidate to replace.
*/
char *page_buffer[NUM_CLOG_BUFFERS];
- ClogPageStatus page_status[NUM_CLOG_BUFFERS];
+ ClogPageStatus page_status[NUM_CLOG_BUFFERS];
int page_number[NUM_CLOG_BUFFERS];
- unsigned int page_lru_count[NUM_CLOG_BUFFERS];
+ unsigned int page_lru_count[NUM_CLOG_BUFFERS];
+
/*
* latest_page_number is the page number of the current end of the
* CLOG; this is not critical data, since we use it only to avoid
@@ -157,7 +160,7 @@ static ClogCtlData *ClogCtl = NULL;
* The value is automatically inherited by backends via fork, and
* doesn't need to be in shared memory.
*/
-static LWLockId ClogBufferLocks[NUM_CLOG_BUFFERS]; /* Per-buffer I/O locks */
+static LWLockId ClogBufferLocks[NUM_CLOG_BUFFERS]; /* Per-buffer I/O locks */
/*
* ClogDir is set during CLOGShmemInit and does not change thereafter.
@@ -166,7 +169,7 @@ static LWLockId ClogBufferLocks[NUM_CLOG_BUFFERS]; /* Per-buffer I/O locks */
*/
static char ClogDir[MAXPGPATH];
-#define ClogFileName(path, seg) \
+#define ClogFileName(path, seg) \
snprintf(path, MAXPGPATH, "%s/%04X", ClogDir, seg)
/*
@@ -430,7 +433,7 @@ ReadCLOGPage(int pageno)
LWLockAcquire(CLogControlLock, LW_EXCLUSIVE);
Assert(ClogCtl->page_number[slotno] == pageno &&
- ClogCtl->page_status[slotno] == CLOG_PAGE_READ_IN_PROGRESS);
+ ClogCtl->page_status[slotno] == CLOG_PAGE_READ_IN_PROGRESS);
ClogCtl->page_status[slotno] = CLOG_PAGE_CLEAN;
@@ -447,7 +450,7 @@ ReadCLOGPage(int pageno)
*
* NOTE: only one write attempt is made here. Hence, it is possible that
* the page is still dirty at exit (if someone else re-dirtied it during
- * the write). However, we *do* attempt a fresh write even if the page
+ * the write). However, we *do* attempt a fresh write even if the page
* is already being written; this is for checkpoints.
*
* Control lock must be held at entry, and will be held at exit.
@@ -455,7 +458,7 @@ ReadCLOGPage(int pageno)
static void
WriteCLOGPage(int slotno)
{
- int pageno;
+ int pageno;
/* Do nothing if page does not need writing */
if (ClogCtl->page_status[slotno] != CLOG_PAGE_DIRTY &&
@@ -489,11 +492,12 @@ WriteCLOGPage(int slotno)
* update on this page will mark it dirty again. NB: we are assuming
* that read/write of the page status field is atomic, since we change
* the state while not holding control lock. However, we cannot set
- * this state any sooner, or we'd possibly fool a previous writer
- * into thinking he's successfully dumped the page when he hasn't.
- * (Scenario: other writer starts, page is redirtied, we come along and
- * set WRITE_IN_PROGRESS again, other writer completes and sets CLEAN
- * because redirty info has been lost, then we think it's clean too.)
+ * this state any sooner, or we'd possibly fool a previous writer into
+ * thinking he's successfully dumped the page when he hasn't.
+ * (Scenario: other writer starts, page is redirtied, we come along
+ * and set WRITE_IN_PROGRESS again, other writer completes and sets
+ * CLEAN because redirty info has been lost, then we think it's clean
+ * too.)
*/
ClogCtl->page_status[slotno] = CLOG_PAGE_WRITE_IN_PROGRESS;
@@ -523,7 +527,7 @@ WriteCLOGPage(int slotno)
static void
CLOGPhysicalReadPage(int pageno, int slotno)
{
- int segno = pageno / CLOG_PAGES_PER_SEGMENT;
+ int segno = pageno / CLOG_PAGES_PER_SEGMENT;
int rpageno = pageno % CLOG_PAGES_PER_SEGMENT;
int offset = rpageno * CLOG_BLCKSZ;
char path[MAXPGPATH];
@@ -533,9 +537,9 @@ CLOGPhysicalReadPage(int pageno, int slotno)
/*
* In a crash-and-restart situation, it's possible for us to receive
- * commands to set the commit status of transactions whose bits are
- * in already-truncated segments of the commit log (see notes in
- * CLOGPhysicalWritePage). Hence, if we are InRecovery, allow the
+ * commands to set the commit status of transactions whose bits are in
+ * already-truncated segments of the commit log (see notes in
+ * CLOGPhysicalWritePage). Hence, if we are InRecovery, allow the
* case where the file doesn't exist, and return zeroes instead.
*/
fd = BasicOpenFile(path, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
@@ -569,7 +573,7 @@ CLOGPhysicalReadPage(int pageno, int slotno)
static void
CLOGPhysicalWritePage(int pageno, int slotno)
{
- int segno = pageno / CLOG_PAGES_PER_SEGMENT;
+ int segno = pageno / CLOG_PAGES_PER_SEGMENT;
int rpageno = pageno % CLOG_PAGES_PER_SEGMENT;
int offset = rpageno * CLOG_BLCKSZ;
char path[MAXPGPATH];
@@ -578,16 +582,17 @@ CLOGPhysicalWritePage(int pageno, int slotno)
ClogFileName(path, segno);
/*
- * If the file doesn't already exist, we should create it. It is 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 ZeroCLOGPage 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 CLOGPhysicalReadPage.)
+ * If the file doesn't already exist, we should create it. It is
+ * 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
+ * ZeroCLOGPage 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 CLOGPhysicalReadPage.)
*/
fd = BasicOpenFile(path, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0)
@@ -649,16 +654,15 @@ SelectLRUCLOGPage(int pageno)
}
/*
- * If we find any EMPTY slot, just select that one.
- * Else locate the least-recently-used slot that isn't the
- * latest CLOG page.
+ * If we find any EMPTY slot, just select that one. Else locate
+ * the least-recently-used slot that isn't the latest CLOG page.
*/
for (slotno = 0; slotno < NUM_CLOG_BUFFERS; slotno++)
{
if (ClogCtl->page_status[slotno] == CLOG_PAGE_EMPTY)
return slotno;
if (ClogCtl->page_lru_count[slotno] > bestcount &&
- ClogCtl->page_number[slotno] != ClogCtl->latest_page_number)
+ ClogCtl->page_number[slotno] != ClogCtl->latest_page_number)
{
bestslot = slotno;
bestcount = ClogCtl->page_lru_count[slotno];
@@ -672,10 +676,10 @@ SelectLRUCLOGPage(int pageno)
return bestslot;
/*
- * 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 ReadCLOGPage to wait for the read to
- * complete.
+ * 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 ReadCLOGPage to wait for
+ * the read to complete.
*/
if (ClogCtl->page_status[bestslot] == CLOG_PAGE_READ_IN_PROGRESS)
(void) ReadCLOGPage(ClogCtl->page_number[bestslot]);
@@ -683,9 +687,9 @@ SelectLRUCLOGPage(int pageno)
WriteCLOGPage(bestslot);
/*
- * Now loop back and try again. This is the easiest way of dealing
- * with corner cases such as the victim page being re-dirtied while
- * we wrote it.
+ * Now loop back and try again. This is the easiest way of
+ * dealing with corner cases such as the victim page being
+ * re-dirtied while we wrote it.
*/
}
}
@@ -736,6 +740,7 @@ CheckPointCLOG(void)
for (slotno = 0; slotno < NUM_CLOG_BUFFERS; slotno++)
{
WriteCLOGPage(slotno);
+
/*
* We cannot assert that the slot is clean now, since another
* process might have re-dirtied it already. That's okay.
@@ -782,13 +787,13 @@ ExtendCLOG(TransactionId newestXact)
* Remove all CLOG segments before the one holding the passed transaction ID
*
* When this is called, we know that the database logically contains no
- * reference to transaction IDs older than oldestXact. However, we must
+ * reference to transaction IDs older than oldestXact. However, we must
* not truncate the CLOG until we have performed a checkpoint, to ensure
* that no such references remain on disk either; else a crash just after
* the truncation might leave us with a problem. Since CLOG segments hold
* a large number of transactions, the opportunity to actually remove a
* segment is fairly rare, and so it seems best not to do the checkpoint
- * unless we have confirmed that there is a removable segment. Therefore
+ * unless we have confirmed that there is a removable segment. Therefore
* we issue the checkpoint command here, not in higher-level code as might
* seem cleaner.
*/
@@ -813,15 +818,16 @@ TruncateCLOG(TransactionId oldestXact)
/*
* Scan CLOG 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.)
+ * should have been flushed already during the checkpoint, we're just
+ * being extra careful here.)
*/
LWLockAcquire(CLogControlLock, LW_EXCLUSIVE);
restart:;
+
/*
- * While we are holding the lock, make an important safety check:
- * the planned cutoff point must be <= the current CLOG endpoint page.
+ * While we are holding the lock, make an important safety check: the
+ * planned cutoff point must be <= the current CLOG endpoint page.
* Otherwise we have already wrapped around, and proceeding with the
* truncation would risk removing the current CLOG segment.
*/
@@ -838,6 +844,7 @@ restart:;
continue;
if (!CLOGPagePrecedes(ClogCtl->page_number[slotno], cutoffPage))
continue;
+
/*
* If page is CLEAN, just change state to EMPTY (expected case).
*/
@@ -846,6 +853,7 @@ restart:;
ClogCtl->page_status[slotno] = CLOG_PAGE_EMPTY;
continue;
}
+
/*
* Hmm, we have (or may have) I/O operations acting on the page,
* so we've got to wait for them to finish and then start again.
@@ -928,9 +936,11 @@ CLOGPagePrecedes(int page1, int page2)
TransactionId xid1;
TransactionId xid2;
- xid1 = (TransactionId) page1 * CLOG_XACTS_PER_PAGE;
+ xid1 = (TransactionId) page1 *CLOG_XACTS_PER_PAGE;
+
xid1 += FirstNormalTransactionId;
- xid2 = (TransactionId) page2 * CLOG_XACTS_PER_PAGE;
+ xid2 = (TransactionId) page2 *CLOG_XACTS_PER_PAGE;
+
xid2 += FirstNormalTransactionId;
return TransactionIdPrecedes(xid1, xid2);
@@ -966,8 +976,8 @@ clog_redo(XLogRecPtr lsn, XLogRecord *record)
if (info == CLOG_ZEROPAGE)
{
- int pageno;
- int slotno;
+ int pageno;
+ int slotno;
memcpy(&pageno, XLogRecGetData(record), sizeof(int));
@@ -993,7 +1003,7 @@ clog_desc(char *buf, uint8 xl_info, char *rec)
if (info == CLOG_ZEROPAGE)
{
- int pageno;
+ int pageno;
memcpy(&pageno, rec, sizeof(int));
sprintf(buf + strlen(buf), "zeropage: %d", pageno);
diff --git a/src/backend/access/transam/transam.c b/src/backend/access/transam/transam.c
index 2a73c045b76..bb94fc27a13 100644
--- a/src/backend/access/transam/transam.c
+++ b/src/backend/access/transam/transam.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.48 2001/08/26 16:55:59 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/transam.c,v 1.49 2001/10/25 05:49:22 momjian Exp $
*
* NOTES
* This file contains the high level access-method interface to the
@@ -32,7 +32,7 @@ static void TransactionLogUpdate(TransactionId transactionId,
* ----------------
*/
static TransactionId cachedTestXid = InvalidTransactionId;
-static XidStatus cachedTestXidStatus;
+static XidStatus cachedTestXidStatus;
/* ----------------------------------------------------------------
@@ -56,8 +56,8 @@ TransactionLogTest(TransactionId transactionId, /* transaction id to test */
XidStatus xidstatus; /* recorded status of xid */
/*
- * Before going to the commit log manager, check our single item cache to
- * see if we didn't just check the transaction status a moment ago.
+ * Before going to the commit log manager, check our single item cache
+ * to see if we didn't just check the transaction status a moment ago.
*/
if (TransactionIdEquals(transactionId, cachedTestXid))
return (status == cachedTestXidStatus);
@@ -65,7 +65,7 @@ TransactionLogTest(TransactionId transactionId, /* transaction id to test */
/*
* Also, check to see if the transaction ID is a permanent one.
*/
- if (! TransactionIdIsNormal(transactionId))
+ if (!TransactionIdIsNormal(transactionId))
{
if (TransactionIdEquals(transactionId, BootstrapTransactionId))
return (status == TRANSACTION_STATUS_COMMITTED);
@@ -77,18 +77,18 @@ TransactionLogTest(TransactionId transactionId, /* transaction id to test */
/*
* Get the status.
*/
- xidstatus = TransactionIdGetStatus(transactionId);
-
- /*
- * DO NOT cache status for unfinished transactions!
- */
- if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS)
- {
- TransactionIdStore(transactionId, &cachedTestXid);
- cachedTestXidStatus = xidstatus;
- }
-
- return (status == xidstatus);
+ xidstatus = TransactionIdGetStatus(transactionId);
+
+ /*
+ * DO NOT cache status for unfinished transactions!
+ */
+ if (xidstatus != TRANSACTION_STATUS_IN_PROGRESS)
+ {
+ TransactionIdStore(transactionId, &cachedTestXid);
+ cachedTestXidStatus = xidstatus;
+ }
+
+ return (status == xidstatus);
}
/* --------------------------------
@@ -197,7 +197,7 @@ TransactionIdIsInProgress(TransactionId transactionId)
return TransactionLogTest(transactionId, TRANSACTION_STATUS_IN_PROGRESS);
}
-#endif /* NOT_USED */
+#endif /* NOT_USED */
/* --------------------------------
* TransactionId Commit
@@ -246,7 +246,7 @@ TransactionIdPrecedes(TransactionId id1, TransactionId id2)
{
/*
* If either ID is a permanent XID then we can just do unsigned
- * comparison. If both are normal, do a modulo-2^31 comparison.
+ * comparison. If both are normal, do a modulo-2^31 comparison.
*/
int32 diff;
diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c
index 048080a180f..5a56f47e064 100644
--- a/src/backend/access/transam/varsup.c
+++ b/src/backend/access/transam/varsup.c
@@ -6,7 +6,7 @@
* Copyright (c) 2000, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.46 2001/09/29 04:02:21 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/varsup.c,v 1.47 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -32,7 +32,7 @@ VariableCache ShmemVariableCache = NULL;
TransactionId
GetNewTransactionId(void)
{
- TransactionId xid;
+ TransactionId xid;
/*
* During bootstrap initialization, we return the special bootstrap
@@ -48,32 +48,32 @@ GetNewTransactionId(void)
TransactionIdAdvance(ShmemVariableCache->nextXid);
/*
- * If we have just allocated the first XID of a new page of the
- * commit log, zero out that commit-log page before returning.
- * We must do this while holding XidGenLock, else another xact could
- * acquire and commit a later XID before we zero the page. Fortunately,
- * a page of the commit log holds 32K or more transactions, so we don't
- * have to do this very often.
+ * If we have just allocated the first XID of a new page of the commit
+ * log, zero out that commit-log page before returning. We must do
+ * this while holding XidGenLock, else another xact could acquire and
+ * commit a later XID before we zero the page. Fortunately, a page of
+ * the commit log holds 32K or more transactions, so we don't have to
+ * do this very often.
*/
ExtendCLOG(xid);
/*
- * Must set MyProc->xid before releasing XidGenLock. This ensures that
- * when GetSnapshotData calls ReadNewTransactionId, all active XIDs
- * before the returned value of nextXid are already present in the shared
- * PROC array. Else we have a race condition.
+ * Must set MyProc->xid before releasing XidGenLock. This ensures
+ * that when GetSnapshotData calls ReadNewTransactionId, all active
+ * XIDs before the returned value of nextXid are already present in
+ * the shared PROC array. Else we have a race condition.
*
* XXX by storing xid into MyProc without acquiring SInvalLock, we are
* relying on fetch/store of an xid to be atomic, else other backends
- * might see a partially-set xid here. But holding both locks at once
- * would be a nasty concurrency hit (and in fact could cause a deadlock
- * against GetSnapshotData). So for now, assume atomicity. Note that
- * readers of PROC xid field should be careful to fetch the value only
- * once, rather than assume they can read it multiple times and get the
- * same answer each time.
+ * might see a partially-set xid here. But holding both locks at once
+ * would be a nasty concurrency hit (and in fact could cause a
+ * deadlock against GetSnapshotData). So for now, assume atomicity.
+ * Note that readers of PROC xid field should be careful to fetch the
+ * value only once, rather than assume they can read it multiple times
+ * and get the same answer each time.
*
- * A solution to the atomic-store problem would be to give each PROC
- * its own spinlock used only for fetching/storing that PROC's xid.
+ * A solution to the atomic-store problem would be to give each PROC its
+ * own spinlock used only for fetching/storing that PROC's xid.
* (SInvalLock would then mean primarily that PROCs couldn't be added/
* removed while holding the lock.)
*/
@@ -91,7 +91,7 @@ GetNewTransactionId(void)
TransactionId
ReadNewTransactionId(void)
{
- TransactionId xid;
+ TransactionId xid;
/*
* During bootstrap initialization, we return the special bootstrap
@@ -117,16 +117,16 @@ static Oid lastSeenOid = InvalidOid;
Oid
GetNewObjectId(void)
{
- Oid result;
+ Oid result;
LWLockAcquire(OidGenLock, LW_EXCLUSIVE);
/*
* Check for wraparound of the OID counter. We *must* not return 0
* (InvalidOid); and as long as we have to check that, it seems a good
- * idea to skip over everything below BootstrapObjectIdData too. (This
- * basically just reduces the odds of OID collision right after a wrap
- * occurs.) Note we are relying on unsigned comparison here.
+ * idea to skip over everything below BootstrapObjectIdData too.
+ * (This basically just reduces the odds of OID collision right after
+ * a wrap occurs.) Note we are relying on unsigned comparison here.
*/
if (ShmemVariableCache->nextOid < ((Oid) BootstrapObjectIdData))
{
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c
index cf9791a8e84..f4dc01adfdb 100644
--- a/src/backend/access/transam/xact.c
+++ b/src/backend/access/transam/xact.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.112 2001/10/18 17:30:03 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xact.c,v 1.113 2001/10/25 05:49:22 momjian Exp $
*
* NOTES
* Transaction aborts can now occur two ways:
@@ -300,7 +300,6 @@ IsTransactionState(void)
*/
return false;
}
-
#endif
/* --------------------------------
@@ -476,7 +475,6 @@ AtStart_Cache(void)
static void
AtStart_Locks(void)
{
-
/*
* at present, it is unknown to me what belongs here -cim 3/18/90
*
@@ -492,7 +490,6 @@ AtStart_Locks(void)
static void
AtStart_Memory(void)
{
-
/*
* We shouldn't have any transaction contexts already.
*/
@@ -717,8 +714,8 @@ RecordTransactionAbort(void)
recptr = XLogInsert(RM_XACT_ID, XLOG_XACT_ABORT, &rdata);
/*
- * There's no need for XLogFlush here, since the default assumption
- * would be that we aborted, anyway.
+ * There's no need for XLogFlush here, since the default
+ * assumption would be that we aborted, anyway.
*/
/* Mark the transaction aborted in clog */
@@ -756,7 +753,6 @@ AtAbort_Cache(void)
static void
AtAbort_Locks(void)
{
-
/*
* XXX What if ProcReleaseLocks() fails? (race condition?)
*
@@ -773,7 +769,6 @@ AtAbort_Locks(void)
static void
AtAbort_Memory(void)
{
-
/*
* Make sure we are in a valid context (not a child of
* TransactionCommandContext...). Note that it is possible for this
@@ -807,7 +802,6 @@ AtAbort_Memory(void)
static void
AtCleanup_Memory(void)
{
-
/*
* Now that we're "out" of a transaction, have the system allocate
* things in the top memory context instead of per-transaction
@@ -909,7 +903,6 @@ CurrentXactInProgress(void)
{
return CurrentTransactionState->state == TRANS_INPROGRESS;
}
-
#endif
/* --------------------------------
@@ -965,12 +958,11 @@ CommitTransaction(void)
* this must be done _before_ releasing locks we hold and _after_
* RecordTransactionCommit.
*
- * LWLockAcquire(SInvalLock) is required: UPDATE with xid 0 is blocked
- * by xid 1' UPDATE, xid 1 is doing commit while xid 2 gets snapshot -
- * if xid 2' GetSnapshotData sees xid 1 as running then it must see
- * xid 0 as running as well or it will see two tuple versions - one
- * deleted by xid 1 and one inserted by xid 0. See notes in
- * GetSnapshotData.
+ * LWLockAcquire(SInvalLock) is required: UPDATE with xid 0 is blocked by
+ * xid 1' UPDATE, xid 1 is doing commit while xid 2 gets snapshot - if
+ * xid 2' GetSnapshotData sees xid 1 as running then it must see xid 0
+ * as running as well or it will see two tuple versions - one deleted
+ * by xid 1 and one inserted by xid 0. See notes in GetSnapshotData.
*/
if (MyProc != (PROC *) NULL)
{
@@ -1002,7 +994,7 @@ CommitTransaction(void)
AtCommit_Memory();
AtEOXact_Files();
- SharedBufferChanged = false;/* safest place to do it */
+ SharedBufferChanged = false; /* safest place to do it */
/* Count transaction commit in statistics collector */
pgstat_count_xact_commit();
@@ -1032,8 +1024,8 @@ AbortTransaction(void)
/*
* Release any LW locks we might be holding as quickly as possible.
* (Regular locks, however, must be held till we finish aborting.)
- * Releasing LW locks is critical since we might try to grab them again
- * while cleaning up!
+ * Releasing LW locks is critical since we might try to grab them
+ * again while cleaning up!
*/
LWLockReleaseAll();
@@ -1105,7 +1097,7 @@ AbortTransaction(void)
AtEOXact_Files();
AtAbort_Locks();
- SharedBufferChanged = false;/* safest place to do it */
+ SharedBufferChanged = false; /* safest place to do it */
/* Count transaction abort in statistics collector */
pgstat_count_xact_rollback();
@@ -1155,7 +1147,6 @@ StartTransactionCommand(void)
switch (s->blockState)
{
-
/*
* if we aren't in a transaction block, we just do our usual
* start transaction.
@@ -1238,7 +1229,6 @@ CommitTransactionCommand(void)
switch (s->blockState)
{
-
/*
* if we aren't in a transaction block, we just do our usual
* transaction commit
@@ -1313,7 +1303,6 @@ AbortCurrentTransaction(void)
switch (s->blockState)
{
-
/*
* if we aren't in a transaction block, we just do the basic
* abort & cleanup transaction.
@@ -1429,7 +1418,6 @@ EndTransactionBlock(void)
*/
if (s->blockState == TBLOCK_INPROGRESS)
{
-
/*
* here we are in a transaction block which should commit when we
* get to the upcoming CommitTransactionCommand() so we set the
@@ -1442,7 +1430,6 @@ EndTransactionBlock(void)
if (s->blockState == TBLOCK_ABORT)
{
-
/*
* here, we are in a transaction block which aborted and since the
* AbortTransaction() was already done, we do whatever is needed
@@ -1480,7 +1467,6 @@ AbortTransactionBlock(void)
*/
if (s->blockState == TBLOCK_INPROGRESS)
{
-
/*
* here we were inside a transaction block something screwed up
* inside the system so we enter the abort state, do the abort
@@ -1502,7 +1488,6 @@ AbortTransactionBlock(void)
AbortTransaction();
s->blockState = TBLOCK_ENDABORT;
}
-
#endif
/* --------------------------------
@@ -1527,7 +1512,6 @@ UserAbortTransactionBlock(void)
if (s->blockState == TBLOCK_INPROGRESS)
{
-
/*
* here we were inside a transaction block and we got an abort
* command from the user, so we move to the abort state, do the
diff --git a/src/backend/access/transam/xid.c b/src/backend/access/transam/xid.c
index babe7c9a48b..cde2713b0f0 100644
--- a/src/backend/access/transam/xid.c
+++ b/src/backend/access/transam/xid.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: xid.c,v 1.33 2001/08/26 16:55:59 tgl Exp $
+ * $Id: xid.c,v 1.34 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,6 +34,7 @@ Datum
xidout(PG_FUNCTION_ARGS)
{
TransactionId transactionId = PG_GETARG_TRANSACTIONID(0);
+
/* maximum 32 bit unsigned integer representation takes 10 chars */
char *str = palloc(11);
@@ -64,7 +65,7 @@ xid_age(PG_FUNCTION_ARGS)
TransactionId now = GetCurrentTransactionId();
/* Permanent XIDs are always infinitely old */
- if (! TransactionIdIsNormal(xid))
+ if (!TransactionIdIsNormal(xid))
PG_RETURN_INT32(INT_MAX);
PG_RETURN_INT32((int32) (now - xid));
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 057ee72d55a..8c162ab3f65 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, 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.78 2001/09/29 04:02:21 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.79 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -97,7 +97,7 @@ char XLOG_archive_dir[MAXPGPATH]; /* null string means
* delete 'em */
/*
- * XLOGfileslop is used in the code as the allowed "fuzz" in the number of
+ * XLOGfileslop is used in the code as the allowed "fuzz" in the number of
* preallocated XLOG segments --- we try to have at least XLOGfiles advance
* segments but no more than XLOGfiles+XLOGfileslop segments. This could
* be made a separate GUC variable, but at present I think it's sufficient
@@ -215,13 +215,13 @@ typedef struct XLogwrtRqst
{
XLogRecPtr Write; /* last byte + 1 to write out */
XLogRecPtr Flush; /* last byte + 1 to flush */
-} XLogwrtRqst;
+} XLogwrtRqst;
typedef struct XLogwrtResult
{
XLogRecPtr Write; /* last byte + 1 written out */
XLogRecPtr Flush; /* last byte + 1 flushed */
-} XLogwrtResult;
+} XLogwrtResult;
/*
* Shared state data for XLogInsert.
@@ -260,8 +260,9 @@ typedef struct XLogCtlData
/*
* These values do not change after startup, although the pointed-to
- * pages and xlblocks values certainly do. Permission to read/write the
- * pages and xlblocks values depends on WALInsertLock and WALWriteLock.
+ * pages and xlblocks values certainly do. Permission to read/write
+ * the pages and xlblocks values depends on WALInsertLock and
+ * WALWriteLock.
*/
char *pages; /* buffers for unwritten XLOG pages */
XLogRecPtr *xlblocks; /* 1st byte ptr-s + BLCKSZ */
@@ -428,8 +429,8 @@ static void XLogWrite(XLogwrtRqst WriteRqst);
static int XLogFileInit(uint32 log, uint32 seg,
bool *use_existent, bool use_lock);
static bool InstallXLogFileSegment(uint32 log, uint32 seg, char *tmppath,
- bool find_free, int max_advance,
- bool use_lock);
+ bool find_free, int max_advance,
+ bool use_lock);
static int XLogFileOpen(uint32 log, uint32 seg, bool econt);
static void PreallocXlogFiles(XLogRecPtr endptr);
static void MoveOfflineLogs(uint32 log, uint32 seg, XLogRecPtr endptr);
@@ -621,8 +622,8 @@ begin:;
SpinLockRelease_NoHoldoff(&XLogCtl->info_lck);
/*
- * If cache is half filled then try to acquire write lock and
- * do XLogWrite. Ignore any fractional blocks in performing this check.
+ * If cache is half filled then try to acquire write lock and do
+ * XLogWrite. Ignore any fractional blocks in performing this check.
*/
LogwrtRqst.Write.xrecoff -= LogwrtRqst.Write.xrecoff % BLCKSZ;
if (LogwrtRqst.Write.xlogid != LogwrtResult.Write.xlogid ||
@@ -939,9 +940,7 @@ AdvanceXLInsertBuffer(void)
NewPageEndPtr.xrecoff = BLCKSZ;
}
else
- {
NewPageEndPtr.xrecoff += BLCKSZ;
- }
XLogCtl->xlblocks[nextidx] = NewPageEndPtr;
NewPage = (XLogPageHeader) (XLogCtl->pages + nextidx * BLCKSZ);
Insert->curridx = nextidx;
@@ -956,7 +955,7 @@ AdvanceXLInsertBuffer(void)
/* And fill the new page's header */
NewPage->xlp_magic = XLOG_PAGE_MAGIC;
- /* NewPage->xlp_info = 0; */ /* done by memset */
+ /* NewPage->xlp_info = 0; *//* done by memset */
NewPage->xlp_sui = ThisStartUpID;
NewPage->xlp_pageaddr.xlogid = NewPageEndPtr.xlogid;
NewPage->xlp_pageaddr.xrecoff = NewPageEndPtr.xrecoff - BLCKSZ;
@@ -985,7 +984,6 @@ XLogWrite(XLogwrtRqst WriteRqst)
while (XLByteLT(LogwrtResult.Write, WriteRqst.Write))
{
-
/*
* Make sure we're not ahead of the insert process. This could
* happen if we're passed a bogus WriteRqst.Write that is past the
@@ -1004,7 +1002,6 @@ XLogWrite(XLogwrtRqst WriteRqst)
if (!XLByteInPrevSeg(LogwrtResult.Write, openLogId, openLogSeg))
{
-
/*
* Switch to new logfile segment.
*/
@@ -1114,7 +1111,6 @@ XLogWrite(XLogwrtRqst WriteRqst)
if (XLByteLT(LogwrtResult.Flush, WriteRqst.Flush) &&
XLByteLT(LogwrtResult.Flush, LogwrtResult.Write))
{
-
/*
* Could get here without iterating above loop, in which case we
* might have no open file or the wrong one. However, we do not
@@ -1174,11 +1170,11 @@ XLogFlush(XLogRecPtr record)
if (XLOG_DEBUG)
{
elog(DEBUG, "XLogFlush%s%s: request %X/%X; write %X/%X; flush %X/%X\n",
- (IsBootstrapProcessingMode()) ? "(bootstrap)" : "",
- (InRedo) ? "(redo)" : "",
- record.xlogid, record.xrecoff,
- LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
- LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
+ (IsBootstrapProcessingMode()) ? "(bootstrap)" : "",
+ (InRedo) ? "(redo)" : "",
+ record.xlogid, record.xrecoff,
+ LogwrtResult.Write.xlogid, LogwrtResult.Write.xrecoff,
+ LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
fflush(stderr);
}
@@ -1240,7 +1236,7 @@ XLogFlush(XLogRecPtr record)
if (XLByteLT(LogwrtResult.Flush, record))
elog(STOP, "XLogFlush: request %X/%X is not satisfied --- flushed only to %X/%X",
record.xlogid, record.xrecoff,
- LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
+ LogwrtResult.Flush.xlogid, LogwrtResult.Flush.xrecoff);
}
LWLockRelease(WALWriteLock);
}
@@ -1565,8 +1561,8 @@ MoveOfflineLogs(uint32 log, uint32 seg, XLogRecPtr endptr)
{
/*
* Before deleting the file, see if it can be recycled as
- * a future log segment. We allow recycling segments up to
- * XLOGfiles + XLOGfileslop segments beyond the current
+ * a future log segment. We allow recycling segments up
+ * to XLOGfiles + XLOGfileslop segments beyond the current
* XLOG location.
*/
if (InstallXLogFileSegment(endlogId, endlogSeg, path,
@@ -1719,7 +1715,6 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, char *buffer)
if (readBuf == NULL)
{
-
/*
* First time through, permanently allocate readBuf. We do it
* this way, rather than just making a static array, for two
@@ -1767,7 +1762,7 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, char *buffer)
readFile = XLogFileOpen(readId, readSeg, (emode == LOG));
if (readFile < 0)
goto next_record_is_invalid;
- readOff = (uint32) (-1);/* force read to occur below */
+ readOff = (uint32) (-1); /* force read to occur below */
}
targetPageOff = ((RecPtr->xrecoff % XLogSegSize) / BLCKSZ) * BLCKSZ;
@@ -2022,7 +2017,6 @@ WriteControlFile(void)
#ifdef USE_LOCALE
char *localeptr;
-
#endif
/*
@@ -2054,10 +2048,10 @@ WriteControlFile(void)
"\n\tsuch queries, you may wish to set LC_COLLATE to \"C\" and"
"\n\tre-initdb. For more information see the Administrator's Guide.",
ControlFile->lc_collate);
-#else /* not USE_LOCALE */
+#else /* not USE_LOCALE */
strcpy(ControlFile->lc_collate, "C");
strcpy(ControlFile->lc_ctype, "C");
-#endif /* not USE_LOCALE */
+#endif /* not USE_LOCALE */
/* Contents are protected with a CRC */
INIT_CRC64(ControlFile->crc);
@@ -2156,7 +2150,7 @@ ReadControlFile(void)
if (ControlFile->catalog_version_no != CATALOG_VERSION_NO)
elog(STOP,
"The database cluster was initialized with CATALOG_VERSION_NO %d,\n"
- "\tbut the backend was compiled with CATALOG_VERSION_NO %d.\n"
+ "\tbut the backend was compiled with CATALOG_VERSION_NO %d.\n"
"\tIt looks like you need to initdb.",
ControlFile->catalog_version_no, CATALOG_VERSION_NO);
if (ControlFile->blcksz != BLCKSZ)
@@ -2174,7 +2168,7 @@ ReadControlFile(void)
#ifdef USE_LOCALE
if (setlocale(LC_COLLATE, ControlFile->lc_collate) == NULL)
elog(STOP,
- "The database cluster was initialized with LC_COLLATE '%s',\n"
+ "The database cluster was initialized with LC_COLLATE '%s',\n"
"\twhich is not recognized by setlocale().\n"
"\tIt looks like you need to initdb.",
ControlFile->lc_collate);
@@ -2184,15 +2178,15 @@ ReadControlFile(void)
"\twhich is not recognized by setlocale().\n"
"\tIt looks like you need to initdb.",
ControlFile->lc_ctype);
-#else /* not USE_LOCALE */
+#else /* not USE_LOCALE */
if (strcmp(ControlFile->lc_collate, "C") != 0 ||
strcmp(ControlFile->lc_ctype, "C") != 0)
elog(STOP,
- "The database cluster was initialized with LC_COLLATE '%s' and\n"
+ "The database cluster was initialized with LC_COLLATE '%s' and\n"
"\tLC_CTYPE '%s', but the server was compiled without locale support.\n"
"\tIt looks like you need to initdb or recompile.",
ControlFile->lc_collate, ControlFile->lc_ctype);
-#endif /* not USE_LOCALE */
+#endif /* not USE_LOCALE */
}
void
@@ -2536,7 +2530,7 @@ StartupXLOG(void)
{
/* nextXid must be beyond record's xid */
if (TransactionIdFollowsOrEquals(record->xl_xid,
- ShmemVariableCache->nextXid))
+ ShmemVariableCache->nextXid))
{
ShmemVariableCache->nextXid = record->xl_xid;
TransactionIdAdvance(ShmemVariableCache->nextXid);
@@ -2585,8 +2579,8 @@ StartupXLOG(void)
Insert->PrevRecord = LastRec;
/*
- * If the next record will go to the new page
- * then initialize for that one.
+ * If the next record will go to the new page then initialize for that
+ * one.
*/
if ((BLCKSZ - EndOfLog.xrecoff % BLCKSZ) < SizeOfXLogRecord)
EndOfLog.xrecoff += (BLCKSZ - EndOfLog.xrecoff % BLCKSZ);
@@ -2602,9 +2596,7 @@ StartupXLOG(void)
NewPageEndPtr.xrecoff = BLCKSZ;
}
else
- {
NewPageEndPtr.xrecoff += BLCKSZ;
- }
XLogCtl->xlblocks[0] = NewPageEndPtr;
Insert->currpage->xlp_magic = XLOG_PAGE_MAGIC;
if (InRecovery)
@@ -2621,9 +2613,10 @@ StartupXLOG(void)
XLogCtl->xlblocks[0].xlogid = openLogId;
XLogCtl->xlblocks[0].xrecoff =
((EndOfLog.xrecoff - 1) / BLCKSZ + 1) * BLCKSZ;
+
/*
* Tricky point here: readBuf contains the *last* block that the
- * LastRec record spans, not the one it starts in. The last block
+ * 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);
@@ -2670,7 +2663,6 @@ StartupXLOG(void)
if (InRecovery)
{
-
/*
* In case we had to use the secondary checkpoint, make sure that
* it will still be shown as the secondary checkpoint after this
@@ -2748,8 +2740,8 @@ ReadCheckpointRecord(XLogRecPtr RecPtr,
if (record->xl_rmid != RM_XLOG_ID)
{
elog(LOG, (whichChkpt == 1 ?
- "invalid resource manager id in primary checkpoint record" :
- "invalid resource manager id in secondary checkpoint record"));
+ "invalid resource manager id in primary checkpoint record" :
+ "invalid resource manager id in secondary checkpoint record"));
return NULL;
}
if (record->xl_info != XLOG_CHECKPOINT_SHUTDOWN &&
@@ -2845,11 +2837,11 @@ CreateCheckPoint(bool shutdown)
/*
* 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 an
- * LWLock. (But the alternative of using a regular lock won't work for
- * background checkpoint processes, which are not regular backends.)
- * So, rather than use a plain LWLockAcquire, use this kluge to allow
- * an interrupt to be accepted while we are waiting:
+ * because we won't respond to a cancel/die request while waiting for
+ * an LWLock. (But the alternative of using a regular lock won't work
+ * for background checkpoint processes, which are not regular
+ * backends.) So, rather than use a plain LWLockAcquire, use this
+ * kluge to allow an interrupt to be accepted while we are waiting:
*/
while (!LWLockConditionalAcquire(CheckpointLock, LW_EXCLUSIVE))
{
@@ -2996,7 +2988,8 @@ CreateCheckPoint(bool shutdown)
* but watch out for case that undo = 0.
*
* Without UNDO support: just use the redo pointer. This allows xlog
- * space to be freed much faster when there are long-running transactions.
+ * space to be freed much faster when there are long-running
+ * transactions.
*/
#ifdef NOT_USED
if (ControlFile->checkPointCopy.undo.xrecoff != 0 &&
@@ -3230,7 +3223,6 @@ assign_xlog_sync_method(const char *method)
if (sync_method != new_sync_method || open_sync_bit != new_sync_bit)
{
-
/*
* To ensure that no blocks escape unsynced, force an fsync on the
* currently open log segment (if any). Also, if the open flag is
@@ -3264,7 +3256,7 @@ issue_xlog_fsync(void)
{
switch (sync_method)
{
- case SYNC_METHOD_FSYNC:
+ case SYNC_METHOD_FSYNC:
if (pg_fsync(openLogFile) != 0)
elog(STOP, "fsync of log file %u, segment %u failed: %m",
openLogId, openLogSeg);
diff --git a/src/backend/access/transam/xlogutils.c b/src/backend/access/transam/xlogutils.c
index 2394060a67f..e49d543ac8b 100644
--- a/src/backend/access/transam/xlogutils.c
+++ b/src/backend/access/transam/xlogutils.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlogutils.c,v 1.20 2001/10/05 17:28:11 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlogutils.c,v 1.21 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -247,7 +247,7 @@ _xl_remove_hash_entry(XLogRelDesc *rdesc)
rdesc->moreRecently->lessRecently = rdesc->lessRecently;
hentry = (XLogRelCacheEntry *) hash_search(_xlrelcache,
- (void *) &(rdesc->reldata.rd_node), HASH_REMOVE, NULL);
+ (void *) &(rdesc->reldata.rd_node), HASH_REMOVE, NULL);
if (hentry == NULL)
elog(STOP, "_xl_remove_hash_entry: file was not found in cache");
@@ -304,9 +304,7 @@ XLogCloseRelationCache(void)
hash_seq_init(&status, _xlrelcache);
while ((hentry = (XLogRelCacheEntry *) hash_seq_search(&status)) != NULL)
- {
_xl_remove_hash_entry(hentry->rdesc);
- }
hash_destroy(_xlrelcache);
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 817ed4c8c80..076b31fb17e 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -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.118 2001/10/19 17:03:08 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.119 2001/10/25 05:49:22 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -188,7 +188,7 @@ usage(void)
{
fprintf(stderr,
gettext("Usage:\n"
- " postgres -boot [-d] [-D datadir] [-F] [-o file] [-x num] dbname\n"
+ " postgres -boot [-d] [-D datadir] [-F] [-o file] [-x num] dbname\n"
" -d debug mode\n"
" -D datadir data directory\n"
" -F turn off fsync\n"
@@ -293,7 +293,7 @@ BootstrapMain(int argc, char *argv[])
{
if (!potential_DataDir)
{
- fprintf(stderr,
+ fprintf(stderr,
gettext("%s does not know where to find the database system data.\n"
"You must specify the directory that contains the database system\n"
"either by specifying the -D invocation option or by setting the\n"
@@ -377,7 +377,7 @@ BootstrapMain(int argc, char *argv[])
case BS_XLOG_CHECKPOINT:
if (IsUnderPostmaster)
- InitDummyProcess(); /* needed to get LWLocks */
+ InitDummyProcess(); /* needed to get LWLocks */
CreateDummyCaches();
CreateCheckPoint(false);
SetRedoRecPtr();
@@ -996,7 +996,6 @@ FindStr(char *str, int length, hashnode *mderef)
node = hashtable[CompHash(str, length)];
while (node != NULL)
{
-
/*
* We must differentiate between string constants that might have
* the same value as a identifier and the identifier itself.
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index 35352be16b2..123dbdd2473 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.51 2001/06/18 16:13:21 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.52 2001/10/25 05:49:22 momjian Exp $
*
* NOTES
* See acl.h.
@@ -61,8 +61,7 @@ dumpacl(Acl *acl)
DatumGetCString(DirectFunctionCall1(aclitemout,
PointerGetDatum(aip + i))));
}
-
-#endif /* ACLDEBUG */
+#endif /* ACLDEBUG */
/*
@@ -115,8 +114,8 @@ ExecuteGrantStmt(GrantStmt *stmt)
relname);
/*
- * If there's no ACL, create a default using the
- * pg_class.relowner field.
+ * If there's no ACL, create a default using the pg_class.relowner
+ * field.
*/
aclDatum = SysCacheGetAttr(RELNAME, tuple, Anum_pg_class_relacl,
&isNull);
@@ -133,10 +132,10 @@ ExecuteGrantStmt(GrantStmt *stmt)
foreach(j, stmt->grantees)
{
- PrivGrantee *grantee = (PrivGrantee *)lfirst(j);
+ PrivGrantee *grantee = (PrivGrantee *) lfirst(j);
char *granteeString;
char *aclString;
- AclItem aclitem;
+ AclItem aclitem;
unsigned modechg;
if (grantee->username)
@@ -162,7 +161,8 @@ ExecuteGrantStmt(GrantStmt *stmt)
{
replaces[i] = ' ';
nulls[i] = ' '; /* ignored if replaces[i]==' ' anyway */
- values[i] = (Datum) NULL; /* ignored if replaces[i]==' ' anyway */
+ values[i] = (Datum) NULL; /* ignored if replaces[i]==' '
+ * anyway */
}
replaces[Anum_pg_class_relacl - 1] = 'r';
values[Anum_pg_class_relacl - 1] = PointerGetDatum(new_acl);
@@ -175,6 +175,7 @@ ExecuteGrantStmt(GrantStmt *stmt)
{
/* keep the catalog indexes up to date */
Relation idescs[Num_pg_class_indices];
+
CatalogOpenIndices(Num_pg_class_indices, Name_pg_class_indices,
idescs);
CatalogIndexInsert(idescs, Num_pg_class_indices, relation, newtuple);
@@ -322,8 +323,8 @@ aclcheck(Acl *acl, AclId id, AclIdType idtype, AclMode mode)
}
/*
- * "World" rights are applicable regardless of the passed-in ID,
- * and since they're much the cheapest to check, check 'em first.
+ * "World" rights are applicable regardless of the passed-in ID, and
+ * since they're much the cheapest to check, check 'em first.
*/
if (aidat->ai_idtype != ACL_IDTYPE_WORLD)
elog(ERROR, "aclcheck: first entry in ACL is not 'world' entry");
@@ -376,7 +377,7 @@ aclcheck(Acl *acl, AclId id, AclIdType idtype, AclMode mode)
for (i = 1, aip = aidat + 1; /* skip world entry */
i < num && aip->ai_idtype == ACL_IDTYPE_UID;
++i, ++aip)
- /* skip UID entry */;
+ /* skip UID entry */ ;
for (;
i < num && aip->ai_idtype == ACL_IDTYPE_GID;
++i, ++aip)
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 89d3072f7bf..f78ac286931 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.178 2001/10/22 22:47:57 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.179 2001/10/25 05:49:22 momjian Exp $
*
*
* INTERFACE ROUTINES
@@ -64,10 +64,10 @@
static void AddNewRelationTuple(Relation pg_class_desc,
- Relation new_rel_desc,
- Oid new_rel_oid, Oid new_type_oid,
- char relkind, bool relhasoids,
- char *temp_relname);
+ Relation new_rel_desc,
+ Oid new_rel_oid, Oid new_type_oid,
+ char relkind, bool relhasoids,
+ char *temp_relname);
static void DeleteAttributeTuples(Relation rel);
static void DeleteRelationTuple(Relation rel);
static void DeleteTypeTuple(Relation rel);
@@ -156,7 +156,7 @@ static Form_pg_attribute SysAtt[] = {&a1, &a2, &a3, &a4, &a5, &a6, &a7};
Form_pg_attribute
SystemAttributeDefinition(AttrNumber attno, bool relhasoids)
{
- if (attno >= 0 || attno < - (int) lengthof(SysAtt))
+ if (attno >= 0 || attno < -(int) lengthof(SysAtt))
elog(ERROR, "SystemAttributeDefinition: invalid attribute number %d",
attno);
if (attno == ObjectIdAttributeNumber && !relhasoids)
@@ -167,12 +167,12 @@ SystemAttributeDefinition(AttrNumber attno, bool relhasoids)
/*
* If the given name is a system attribute name, return a Form_pg_attribute
- * pointer for a prototype definition. If not, return NULL.
+ * pointer for a prototype definition. If not, return NULL.
*/
Form_pg_attribute
SystemAttributeByName(const char *attname, bool relhasoids)
{
- int j;
+ int j;
for (j = 0; j < (int) lengthof(SysAtt); j++)
{
@@ -237,8 +237,8 @@ heap_create(char *relname,
/*
* Real ugly stuff to assign the proper relid in the relation
- * descriptor follows. Note that only "bootstrapped" relations
- * whose OIDs are hard-coded in pg_class.h need be listed here.
+ * descriptor follows. Note that only "bootstrapped" relations whose
+ * OIDs are hard-coded in pg_class.h need be listed here.
*/
if (relname && IsSystemRelationName(relname))
{
@@ -541,7 +541,11 @@ AddNewAttributeTuples(Oid new_rel_oid,
/* Fill in the correct relation OID in the copied tuple */
attStruct = (Form_pg_attribute) GETSTRUCT(tup);
attStruct->attrelid = new_rel_oid;
- /* Unneeded since they should be OK in the constant data anyway */
+
+ /*
+ * Unneeded since they should be OK in the constant data
+ * anyway
+ */
/* attStruct->attstattarget = 0; */
/* attStruct->attcacheoff = -1; */
@@ -613,7 +617,7 @@ AddNewRelationTuple(Relation pg_class_desc,
case RELKIND_RELATION:
case RELKIND_INDEX:
case RELKIND_TOASTVALUE:
- new_rel_reltup->relpages = 10; /* bogus estimates */
+ new_rel_reltup->relpages = 10; /* bogus estimates */
new_rel_reltup->reltuples = 1000;
break;
case RELKIND_SEQUENCE:
@@ -653,7 +657,6 @@ AddNewRelationTuple(Relation pg_class_desc,
if (!IsIgnoringSystemIndexes())
{
-
/*
* First, open the catalog indices and insert index tuples for the
* new relation.
@@ -1735,27 +1738,35 @@ AddRelationRawConstraints(Relation rel,
{
int i;
int j;
- bool success;
+ bool success;
List *listptr2;
+
ccname = (char *) palloc(NAMEDATALEN);
/* Loop until we find a non-conflicting constraint name */
/* What happens if this loops forever? */
j = numchecks + 1;
- do {
+ do
+ {
success = true;
snprintf(ccname, NAMEDATALEN, "$%d", j);
/* Check against old constraints */
for (i = 0; i < numoldchecks; i++)
{
- if (strcmp(oldchecks[i].ccname, ccname) == 0) {
+ if (strcmp(oldchecks[i].ccname, ccname) == 0)
+ {
success = false;
break;
}
}
- /* Check against other new constraints, if the check hasn't already failed */
- if (success) {
+
+ /*
+ * Check against other new constraints, if the check
+ * hasn't already failed
+ */
+ if (success)
+ {
foreach(listptr2, rawConstraints)
{
Constraint *cdef2 = (Constraint *) lfirst(listptr2);
@@ -1765,7 +1776,8 @@ AddRelationRawConstraints(Relation rel,
cdef2->raw_expr == NULL ||
cdef2->name == NULL)
continue;
- if (strcmp(cdef2->name, ccname) == 0) {
+ if (strcmp(cdef2->name, ccname) == 0)
+ {
success = false;
break;
}
@@ -1914,59 +1926,60 @@ RemoveRelCheck(Relation rel)
int
RemoveCheckConstraint(Relation rel, const char *constrName, bool inh)
{
- Oid relid;
- Relation rcrel;
- Relation relrel;
- Relation inhrel;
- Relation relidescs[Num_pg_class_indices];
- TupleDesc tupleDesc;
- TupleConstr *oldconstr;
- int numoldchecks;
- int numchecks;
- HeapScanDesc rcscan;
- ScanKeyData key[2];
- HeapTuple rctup;
- HeapTuple reltup;
- Form_pg_class relStruct;
- int rel_deleted = 0;
- int all_deleted = 0;
-
- /* Find id of the relation */
- relid = RelationGetRelid(rel);
-
- /* Process child tables and remove constraints of the
- same name. */
- if (inh)
- {
- List *child,
- *children;
-
- /* This routine is actually in the planner */
- children = find_all_inheritors(relid);
-
- /*
- * find_all_inheritors does the recursive search of the
- * inheritance hierarchy, so all we have to do is process all
- * of the relids in the list that it returns.
- */
- foreach(child, children)
- {
- Oid childrelid = lfirsti(child);
-
- if (childrelid == relid)
- continue;
- inhrel = heap_open(childrelid, AccessExclusiveLock);
- all_deleted += RemoveCheckConstraint(inhrel, constrName, false);
- heap_close(inhrel, NoLock);
- }
- }
+ Oid relid;
+ Relation rcrel;
+ Relation relrel;
+ Relation inhrel;
+ Relation relidescs[Num_pg_class_indices];
+ TupleDesc tupleDesc;
+ TupleConstr *oldconstr;
+ int numoldchecks;
+ int numchecks;
+ HeapScanDesc rcscan;
+ ScanKeyData key[2];
+ HeapTuple rctup;
+ HeapTuple reltup;
+ Form_pg_class relStruct;
+ int rel_deleted = 0;
+ int all_deleted = 0;
+
+ /* Find id of the relation */
+ relid = RelationGetRelid(rel);
+
+ /*
+ * Process child tables and remove constraints of the same name.
+ */
+ if (inh)
+ {
+ List *child,
+ *children;
+
+ /* This routine is actually in the planner */
+ children = find_all_inheritors(relid);
+
+ /*
+ * find_all_inheritors does the recursive search of the
+ * inheritance hierarchy, so all we have to do is process all of
+ * the relids in the list that it returns.
+ */
+ foreach(child, children)
+ {
+ Oid childrelid = lfirsti(child);
+
+ if (childrelid == relid)
+ continue;
+ inhrel = heap_open(childrelid, AccessExclusiveLock);
+ all_deleted += RemoveCheckConstraint(inhrel, constrName, false);
+ heap_close(inhrel, NoLock);
+ }
+ }
/* Grab an exclusive lock on the pg_relcheck relation */
rcrel = heap_openr(RelCheckRelationName, RowExclusiveLock);
/*
- * Create two scan keys. We need to match on the oid of the table
- * the CHECK is in and also we need to match the name of the CHECK
+ * Create two scan keys. We need to match on the oid of the table the
+ * CHECK is in and also we need to match the name of the CHECK
* constraint.
*/
ScanKeyEntryInitialize(&key[0], 0, Anum_pg_relcheck_rcrelid,
@@ -1979,14 +1992,15 @@ RemoveCheckConstraint(Relation rel, const char *constrName, bool inh)
rcscan = heap_beginscan(rcrel, 0, SnapshotNow, 2, key);
/*
- * Scan over the result set, removing any matching entries. Note
- * that this has the side-effect of removing ALL CHECK constraints
- * that share the specified constraint name.
+ * Scan over the result set, removing any matching entries. Note that
+ * this has the side-effect of removing ALL CHECK constraints that
+ * share the specified constraint name.
*/
- while (HeapTupleIsValid(rctup = heap_getnext(rcscan, 0))) {
+ while (HeapTupleIsValid(rctup = heap_getnext(rcscan, 0)))
+ {
simple_heap_delete(rcrel, &rctup->t_self);
++rel_deleted;
- ++all_deleted;
+ ++all_deleted;
}
/* Clean up after the scan */
@@ -2001,7 +2015,7 @@ RemoveCheckConstraint(Relation rel, const char *constrName, bool inh)
* message, but for ALTER TABLE ADD ATTRIBUTE this'd be important.)
*/
- /*
+ /*
* Get number of existing constraints.
*/
@@ -2020,7 +2034,7 @@ RemoveCheckConstraint(Relation rel, const char *constrName, bool inh)
relrel = heap_openr(RelationRelationName, RowExclusiveLock);
reltup = SearchSysCacheCopy(RELOID,
- ObjectIdGetDatum(RelationGetRelid(rel)), 0, 0, 0);
+ ObjectIdGetDatum(RelationGetRelid(rel)), 0, 0, 0);
if (!HeapTupleIsValid(reltup))
elog(ERROR, "cache lookup of relation %u failed",
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index b53eab86524..0afb9cf7e43 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.165 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.166 2001/10/25 05:49:22 momjian Exp $
*
*
* INTERFACE ROUTINES
@@ -64,19 +64,19 @@
static Oid GetHeapRelationOid(char *heapRelationName, char *indexRelationName,
bool istemp);
static TupleDesc BuildFuncTupleDesc(Oid funcOid,
- Oid *classObjectId);
+ Oid *classObjectId);
static TupleDesc ConstructTupleDescriptor(Relation heapRelation,
- int numatts, AttrNumber *attNums,
- Oid *classObjectId);
+ int numatts, AttrNumber *attNums,
+ Oid *classObjectId);
static void ConstructIndexReldesc(Relation indexRelation, Oid amoid);
static Oid UpdateRelationRelation(Relation indexRelation, char *temp_relname);
static void InitializeAttributeOids(Relation indexRelation,
int numatts, Oid indexoid);
static void AppendAttributeTuples(Relation indexRelation, int numatts);
static void UpdateIndexRelation(Oid indexoid, Oid heapoid,
- IndexInfo *indexInfo,
- Oid *classOids,
- bool primary);
+ IndexInfo *indexInfo,
+ Oid *classOids,
+ bool primary);
static Oid IndexGetRelation(Oid indexId);
static bool activate_index(Oid indexId, bool activate, bool inplace);
@@ -255,7 +255,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
{
@@ -319,11 +319,11 @@ ConstructTupleDescriptor(Relation heapRelation,
elog(ERROR, "Type %u does not exist", keyType);
typeTup = (Form_pg_type) GETSTRUCT(tuple);
- to->atttypid = keyType;
- to->atttypmod = -1;
- to->attlen = typeTup->typlen;
- to->attbyval = typeTup->typbyval;
- to->attalign = typeTup->typalign;
+ to->atttypid = keyType;
+ to->atttypmod = -1;
+ to->attlen = typeTup->typlen;
+ to->attbyval = typeTup->typbyval;
+ to->attalign = typeTup->typalign;
to->attstorage = typeTup->typstorage;
ReleaseSysCache(tuple);
@@ -405,14 +405,15 @@ ConstructIndexReldesc(Relation indexRelation, Oid amoid)
* Fill in a copy of relevant pg_am entry
*/
indexRelation->rd_am = AccessMethodObjectIdGetForm(amoid,
- CacheMemoryContext);
+ CacheMemoryContext);
+
/*
- * Set up some additional fields of the index' pg_class entry.
- * In particular, initialize knowledge of whether the index is shared.
+ * Set up some additional fields of the index' pg_class entry. In
+ * particular, initialize knowledge of whether the index is shared.
*/
indexRelation->rd_rel->relowner = GetUserId();
indexRelation->rd_rel->relam = amoid;
- indexRelation->rd_rel->relisshared =
+ indexRelation->rd_rel->relisshared =
IsSharedSystemRelationName(RelationGetPhysicalRelationName(indexRelation));
indexRelation->rd_rel->relkind = RELKIND_INDEX;
indexRelation->rd_rel->relhasoids = false;
@@ -521,10 +522,10 @@ AppendAttributeTuples(Relation indexRelation, int numatts)
for (i = 0; i < numatts; i++)
{
/*
- * There used to be very grotty code here to set these fields,
- * but I think it's unnecessary. They should be set already.
+ * There used to be very grotty code here to set these fields, but
+ * I think it's unnecessary. They should be set already.
*/
- Assert(indexTupDesc->attrs[i]->attnum == i+1);
+ Assert(indexTupDesc->attrs[i]->attnum == i + 1);
Assert(indexTupDesc->attrs[i]->attcacheoff == -1);
new_tuple = heap_addheader(Natts_pg_attribute,
@@ -592,7 +593,7 @@ UpdateIndexRelation(Oid indexoid,
indexForm->indexrelid = indexoid;
indexForm->indrelid = heapoid;
indexForm->indproc = indexInfo->ii_FuncOid;
- indexForm->indisclustered = false; /* not used */
+ indexForm->indisclustered = false; /* not used */
indexForm->indisunique = indexInfo->ii_Unique;
indexForm->indisprimary = primary;
memcpy((char *) &indexForm->indpred, (char *) predText, predLen);
@@ -678,7 +679,7 @@ index_create(char *heapRelationName,
elog(ERROR, "must index at least one column");
if (heapRelationName && !allow_system_table_mods &&
- IsSystemRelationName(heapRelationName) && IsNormalProcessingMode())
+ IsSystemRelationName(heapRelationName) && IsNormalProcessingMode())
elog(ERROR, "User-defined indexes on system catalogs are not supported");
/*
@@ -700,7 +701,7 @@ index_create(char *heapRelationName,
else
indexTupDesc = ConstructTupleDescriptor(heapRelation,
indexInfo->ii_NumKeyAttrs,
- indexInfo->ii_KeyAttrNumbers,
+ indexInfo->ii_KeyAttrNumbers,
classObjectId);
if (istemp)
@@ -825,12 +826,13 @@ index_drop(Oid indexId)
* To drop an index safely, we must grab exclusive lock on its parent
* table; otherwise there could be other backends using the index!
* Exclusive lock on the index alone is insufficient because another
- * backend might be in the midst of devising a query plan that will use
- * the index. The parser and planner take care to hold an appropriate
- * lock on the parent table while working, but having them hold locks on
- * all the indexes too seems overly complex. We do grab exclusive lock
- * on the index too, just to be safe. Both locks must be held till end of
- * transaction, else other backends will still see this index in pg_index.
+ * backend might be in the midst of devising a query plan that will
+ * use the index. The parser and planner take care to hold an
+ * appropriate lock on the parent table while working, but having them
+ * hold locks on all the indexes too seems overly complex. We do grab
+ * exclusive lock on the index too, just to be safe. Both locks must
+ * be held till end of transaction, else other backends will still see
+ * this index in pg_index.
*/
heapId = IndexGetRelation(indexId);
userHeapRelation = heap_open(heapId, AccessExclusiveLock);
@@ -873,8 +875,8 @@ index_drop(Oid indexId)
* ensure other backends update their relcache lists of indexes. So,
* unconditionally do setRelhasindex(true).
*
- * Possible future improvement: skip the physical tuple update and
- * just send out an invalidation message.
+ * Possible future improvement: skip the physical tuple update and just
+ * send out an invalidation message.
*/
setRelhasindex(heapId, true, false, InvalidOid);
@@ -950,7 +952,7 @@ index_drop(Oid indexId)
* just once per command, and then use it for (potentially) many tuples.
* ----------------
*/
-IndexInfo *
+IndexInfo *
BuildIndexInfo(HeapTuple indexTuple)
{
Form_pg_index indexStruct = (Form_pg_index) GETSTRUCT(indexTuple);
@@ -974,8 +976,8 @@ BuildIndexInfo(HeapTuple indexTuple)
* Handle functional index.
*
* If we have a functional index then the number of attributes defined in
- * the index must be 1 (the function's single return value).
- * Otherwise it's same as number of keys.
+ * the index must be 1 (the function's single return value). Otherwise
+ * it's same as number of keys.
*/
ii->ii_FuncOid = indexStruct->indproc;
@@ -1041,7 +1043,6 @@ FormIndexDatum(IndexInfo *indexInfo,
if (OidIsValid(indexInfo->ii_FuncOid))
{
-
/*
* Functional index --- compute the single index attribute
*/
@@ -1076,7 +1077,6 @@ FormIndexDatum(IndexInfo *indexInfo,
}
else
{
-
/*
* Plain index --- for each attribute we need from the heap tuple,
* get the attribute and stick it into the datum and nullv arrays.
@@ -1198,7 +1198,7 @@ IndexesAreActive(Oid relid, bool confirmCommitted)
* set relhasindex of relation's pg_class entry
*
* If isprimary is TRUE, we are defining a primary index, so also set
- * relhaspkey to TRUE. Otherwise, leave relhaspkey alone.
+ * relhaspkey to TRUE. Otherwise, leave relhaspkey alone.
*
* If reltoastidxid is not InvalidOid, also set reltoastidxid to that value.
* This is only used for TOAST relations.
@@ -1390,7 +1390,7 @@ UpdateStats(Oid relid, double reltuples)
Relation pg_class;
HeapTuple tuple;
HeapTuple newtup;
- BlockNumber relpages;
+ BlockNumber relpages;
int i;
Form_pg_class rd_rel;
Relation idescs[Num_pg_class_indices];
@@ -1473,8 +1473,8 @@ UpdateStats(Oid relid, double reltuples)
* when it is actually sizable. See also CREATE TABLE in heap.c.
*
* Note: this path is also taken during bootstrap, because bootstrap.c
- * passes reltuples = 0 after loading a table. We have to estimate some
- * number for reltuples based on the actual number of pages.
+ * passes reltuples = 0 after loading a table. We have to estimate
+ * some number for reltuples based on the actual number of pages.
*/
relpages = RelationGetNumberOfBlocks(whichRel);
@@ -1492,7 +1492,7 @@ UpdateStats(Oid relid, double reltuples)
reltuples = 1000;
}
else
- reltuples = (double) relpages * NTUPLES_PER_PAGE(whichRel->rd_rel->relnatts);
+ reltuples = (double) relpages *NTUPLES_PER_PAGE(whichRel->rd_rel->relnatts);
}
/*
@@ -1508,7 +1508,6 @@ 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.
@@ -1599,8 +1598,8 @@ index_build(Relation heapRelation,
* build procedure does whatever cleanup is needed; in particular, it should
* close the heap and index relations.
*
- * The total count of heap tuples is returned. This is for updating pg_class
- * statistics. (It's annoying not to be able to do that here, but we can't
+ * The total count of heap tuples is returned. This is for updating pg_class
+ * statistics. (It's annoying not to be able to do that here, but we can't
* do it until after the relation is closed.) Note that the index AM itself
* must keep track of the number of index tuples; we don't do so here because
* the AM might reject some of the tuples for its own reasons, such as being
@@ -1658,7 +1657,8 @@ IndexBuildHeapScan(Relation heapRelation,
/*
* Ok, begin our scan of the base relation. We use SnapshotAny
- * because we must retrieve all tuples and do our own time qual checks.
+ * because we must retrieve all tuples and do our own time qual
+ * checks.
*/
if (IsBootstrapProcessingMode())
{
@@ -1673,7 +1673,7 @@ IndexBuildHeapScan(Relation heapRelation,
scan = heap_beginscan(heapRelation, /* relation */
0, /* start at end */
- snapshot, /* seeself */
+ snapshot, /* seeself */
0, /* number of keys */
(ScanKey) NULL); /* scan key */
@@ -1689,14 +1689,14 @@ IndexBuildHeapScan(Relation heapRelation,
if (snapshot == SnapshotAny)
{
/* do our own time qual check */
- bool indexIt;
- uint16 sv_infomask;
+ bool indexIt;
+ uint16 sv_infomask;
/*
- * HeapTupleSatisfiesVacuum may update tuple's hint status bits.
- * We could possibly get away with not locking the buffer here,
- * since caller should hold ShareLock on the relation, but let's
- * be conservative about it.
+ * HeapTupleSatisfiesVacuum may update tuple's hint status
+ * bits. We could possibly get away with not locking the
+ * buffer here, since caller should hold ShareLock on the
+ * relation, but let's be conservative about it.
*/
LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE);
sv_infomask = heapTuple->t_data->t_infomask;
@@ -1712,6 +1712,7 @@ IndexBuildHeapScan(Relation heapRelation,
tupleIsAlive = true;
break;
case HEAPTUPLE_RECENTLY_DEAD:
+
/*
* If tuple is recently deleted then we must index it
* anyway to keep VACUUM from complaining.
@@ -1720,32 +1721,36 @@ IndexBuildHeapScan(Relation heapRelation,
tupleIsAlive = false;
break;
case HEAPTUPLE_INSERT_IN_PROGRESS:
+
/*
- * Since caller should hold ShareLock or better, we should
- * not see any tuples inserted by open transactions ---
- * unless it's our own transaction. (Consider INSERT
- * followed by CREATE INDEX within a transaction.)
+ * Since caller should hold ShareLock or better, we
+ * should not see any tuples inserted by open
+ * transactions --- unless it's our own transaction.
+ * (Consider INSERT followed by CREATE INDEX within a
+ * transaction.)
*/
- if (! TransactionIdIsCurrentTransactionId(heapTuple->t_data->t_xmin))
+ if (!TransactionIdIsCurrentTransactionId(heapTuple->t_data->t_xmin))
elog(ERROR, "IndexBuildHeapScan: concurrent insert in progress");
indexIt = true;
tupleIsAlive = true;
break;
case HEAPTUPLE_DELETE_IN_PROGRESS:
+
/*
- * Since caller should hold ShareLock or better, we should
- * not see any tuples deleted by open transactions ---
- * unless it's our own transaction. (Consider DELETE
- * followed by CREATE INDEX within a transaction.)
+ * Since caller should hold ShareLock or better, we
+ * should not see any tuples deleted by open
+ * transactions --- unless it's our own transaction.
+ * (Consider DELETE followed by CREATE INDEX within a
+ * transaction.)
*/
- if (! TransactionIdIsCurrentTransactionId(heapTuple->t_data->t_xmax))
+ if (!TransactionIdIsCurrentTransactionId(heapTuple->t_data->t_xmax))
elog(ERROR, "IndexBuildHeapScan: concurrent delete in progress");
indexIt = true;
tupleIsAlive = false;
break;
default:
elog(ERROR, "Unexpected HeapTupleSatisfiesVacuum result");
- indexIt = tupleIsAlive = false; /* keep compiler quiet */
+ indexIt = tupleIsAlive = false; /* keep compiler quiet */
break;
}
@@ -1755,7 +1760,7 @@ IndexBuildHeapScan(Relation heapRelation,
LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK);
- if (! indexIt)
+ if (!indexIt)
continue;
}
else
@@ -1776,7 +1781,7 @@ IndexBuildHeapScan(Relation heapRelation,
*/
if (predicate != NIL)
{
- if (! tupleIsAlive)
+ if (!tupleIsAlive)
continue;
ExecStoreTuple(heapTuple, slot, InvalidBuffer, false);
if (!ExecQual(predicate, econtext, false))
@@ -1785,7 +1790,7 @@ IndexBuildHeapScan(Relation heapRelation,
/*
* For the current heap tuple, extract all the attributes we use
- * in this index, and note which are null. This also performs
+ * in this index, and note which are null. This also performs
* evaluation of the function, if this is a functional index.
*/
FormIndexDatum(indexInfo,
@@ -1797,8 +1802,8 @@ IndexBuildHeapScan(Relation heapRelation,
/*
* You'd think we should go ahead and build the index tuple here,
- * but some index AMs want to do further processing on the
- * data first. So pass the attdata and nulls arrays, instead.
+ * but some index AMs want to do further processing on the data
+ * first. So pass the attdata and nulls arrays, instead.
*/
/* Call the AM's callback routine to process the tuple */
@@ -1919,7 +1924,6 @@ reindex_index(Oid indexId, bool force, bool inplace)
if (inplace)
{
-
/*
* Release any buffers associated with this index. If they're
* dirty, they're just dropped without bothering to flush to disk.
@@ -2002,11 +2006,12 @@ reindex_relation(Oid relid, bool force)
upd_pg_class_inplace = true;
/*
- * Ensure to hold an exclusive lock throughout the
- * transaction. The lock could be less intensive
- * but now it's AccessExclusiveLock for simplicity.
+ * Ensure to hold an exclusive lock throughout the transaction. The
+ * lock could be less intensive but now it's AccessExclusiveLock for
+ * simplicity.
*/
rel = heap_open(relid, AccessExclusiveLock);
+
/*
* ignore the indexes of the target system relation while processing
* reindex.
@@ -2045,8 +2050,9 @@ reindex_relation(Oid relid, bool force)
else
elog(ERROR, "the target relation %u is shared", relid);
}
+
/*
- * Continue to hold the lock.
+ * Continue to hold the lock.
*/
heap_close(rel, NoLock);
@@ -2087,7 +2093,6 @@ reindex_relation(Oid relid, bool force)
heap_close(indexRelation, AccessShareLock);
if (reindexed)
{
-
/*
* Ok,we could use the reindexed indexes of the target system
* relation now.
@@ -2096,7 +2101,6 @@ reindex_relation(Oid relid, bool force)
{
if (!overwrite && relid == RelOid_pg_class)
{
-
/*
* For pg_class, relhasindex should be set to true here in
* place.
diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c
index 119e125402c..f037852bb57 100644
--- a/src/backend/catalog/pg_aggregate.c
+++ b/src/backend/catalog/pg_aggregate.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.39 2001/08/10 15:49:39 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.40 2001/10/25 05:49:23 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -167,7 +167,6 @@ AggregateCreate(char *aggName,
}
else
{
-
/*
* If no finalfn, aggregate result type is type of the state value
*/
diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c
index 97e0b87b9c9..efd98b546f1 100644
--- a/src/backend/catalog/pg_operator.c
+++ b/src/backend/catalog/pg_operator.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.62 2001/10/22 19:34:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.63 2001/10/25 05:49:23 momjian Exp $
*
* NOTES
* these routines moved here from commands/define.c and somewhat cleaned up.
@@ -74,7 +74,7 @@ static void OperatorUpd(Oid baseId, Oid commId, Oid negId);
static bool
validOperatorName(const char *name)
{
- size_t len = strlen(name);
+ size_t len = strlen(name);
/* Can't be empty or too long */
if (len == 0 || len >= NAMEDATALEN)
@@ -90,20 +90,19 @@ validOperatorName(const char *name)
return false;
/*
- * For SQL92 compatibility, '+' and '-' cannot be the
- * last char of a multi-char operator unless the operator
- * contains chars that are not in SQL92 operators.
- * The idea is to lex '=-' as two operators, but not
- * to forbid operator names like '?-' that could not be
- * sequences of SQL92 operators.
+ * For SQL92 compatibility, '+' and '-' cannot be the last char of a
+ * multi-char operator unless the operator contains chars that are not
+ * in SQL92 operators. The idea is to lex '=-' as two operators, but
+ * not to forbid operator names like '?-' that could not be sequences
+ * of SQL92 operators.
*/
if (len > 1 &&
- (name[len-1] == '+' ||
- name[len-1] == '-'))
+ (name[len - 1] == '+' ||
+ name[len - 1] == '-'))
{
- int ic;
+ int ic;
- for (ic = len-2; ic >= 0; ic--)
+ for (ic = len - 2; ic >= 0; ic--)
{
if (strchr("~!@#^&|`?$%", name[ic]))
break;
@@ -143,7 +142,7 @@ OperatorGetWithOpenRelation(Relation pg_operator_desc,
HeapScanDesc pg_operator_scan;
Oid operatorObjectId;
HeapTuple tup;
- ScanKeyData opKey[3];
+ ScanKeyData opKey[3];
/*
* form scan key
@@ -495,7 +494,7 @@ OperatorDef(char *operatorName,
int nargs;
NameData oname;
TupleDesc tupDesc;
- ScanKeyData opKey[3];
+ ScanKeyData opKey[3];
operatorObjectId = OperatorGet(operatorName,
leftTypeName,
@@ -743,7 +742,6 @@ OperatorDef(char *operatorName,
}
else
{
-
/*
* self-linkage to this operator; will fix below. Note
* that only self-linkage for commutation makes sense.
@@ -867,7 +865,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
char nulls[Natts_pg_operator];
char replaces[Natts_pg_operator];
Datum values[Natts_pg_operator];
- ScanKeyData opKey[1];
+ ScanKeyData opKey[1];
for (i = 0; i < Natts_pg_operator; ++i)
{
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index e83d35edbf6..016b9c1d983 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.61 2001/10/06 23:21:43 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.62 2001/10/25 05:49:23 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -125,7 +125,6 @@ ProcedureCreate(char *procedureName,
if (languageObjectId == SQLlanguageId)
{
-
/*
* If this call is defining a set, check if the set is already
* defined by looking to see whether this call's function text
@@ -230,7 +229,7 @@ ProcedureCreate(char *procedureName,
prosrc = procedureName;
if (fmgr_internal_function(prosrc) == InvalidOid)
elog(ERROR,
- "there is no built-in function named \"%s\"",
+ "there is no built-in function named \"%s\"",
prosrc);
}
@@ -246,7 +245,7 @@ ProcedureCreate(char *procedureName,
if (languageObjectId == ClanguageId)
{
- void *libraryhandle;
+ void *libraryhandle;
/* If link symbol is specified as "-", substitute procedure name */
if (strcmp(prosrc, "-") == 0)
@@ -303,7 +302,7 @@ ProcedureCreate(char *procedureName,
if (HeapTupleIsValid(oldtup))
{
/* There is one; okay to replace it? */
- Form_pg_proc oldproc = (Form_pg_proc) GETSTRUCT(oldtup);
+ Form_pg_proc oldproc = (Form_pg_proc) GETSTRUCT(oldtup);
if (!replace)
elog(ERROR, "function %s already exists with same argument types",
@@ -311,6 +310,7 @@ ProcedureCreate(char *procedureName,
if (GetUserId() != oldproc->proowner && !superuser())
elog(ERROR, "ProcedureCreate: you do not have permission to replace function %s",
procedureName);
+
/*
* Not okay to change the return type of the existing proc, since
* existing rules, views, etc may depend on the return type.
@@ -321,8 +321,8 @@ ProcedureCreate(char *procedureName,
"\n\tUse DROP FUNCTION first.");
/* Okay, do it... */
- tup = heap_modifytuple(oldtup, rel, values, nulls, replaces);
- simple_heap_update(rel, &tup->t_self, tup);
+ tup = heap_modifytuple(oldtup, rel, values, nulls, replaces);
+ simple_heap_update(rel, &tup->t_self, tup);
ReleaseSysCache(oldtup);
}
@@ -412,8 +412,8 @@ checkretval(Oid rettype, List *queryTreeList)
/*
* For base-type returns, the target list should have exactly one
- * entry, and its type should agree with what the user declared.
- * (As of Postgres 7.2, we accept binary-compatible types too.)
+ * entry, and its type should agree with what the user declared. (As
+ * of Postgres 7.2, we accept binary-compatible types too.)
*/
typerelid = typeidTypeRelid(rettype);
if (typerelid == InvalidOid)
@@ -433,9 +433,9 @@ checkretval(Oid rettype, List *queryTreeList)
/*
* If the target list is of length 1, and the type of the varnode in
* the target list matches the declared return type, this is okay.
- * This can happen, for example, where the body of the function
- * is 'SELECT func2()', where func2 has the same return type as
- * the function that's calling it.
+ * This can happen, for example, where the body of the function is
+ * 'SELECT func2()', where func2 has the same return type as the
+ * function that's calling it.
*/
if (tlistlen == 1)
{
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
index b79bd7068fc..f14d06e0e27 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.64 2001/10/12 00:07:14 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.65 2001/10/25 05:49:23 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -318,13 +318,13 @@ TypeCreate(char *typeName,
}
/*
- * validate size specifications: either positive (fixed-length) or
- * -1 (variable-length).
+ * validate size specifications: either positive (fixed-length) or -1
+ * (variable-length).
*/
- if (! (internalSize > 0 || internalSize == -1))
+ if (!(internalSize > 0 || internalSize == -1))
elog(ERROR, "TypeCreate: invalid type internal size %d",
internalSize);
- if (! (externalSize > 0 || externalSize == -1))
+ if (!(externalSize > 0 || externalSize == -1))
elog(ERROR, "TypeCreate: invalid type external size %d",
externalSize);
@@ -382,7 +382,6 @@ TypeCreate(char *typeName,
if (!OidIsValid(procOid))
{
-
/*
* For array types, the input procedures may take 3 args (data
* value, element OID, atttypmod); the pg_proc argtype
@@ -434,7 +433,7 @@ TypeCreate(char *typeName,
*/
if (defaultTypeValue)
values[i] = DirectFunctionCall1(textin,
- CStringGetDatum(defaultTypeValue));
+ CStringGetDatum(defaultTypeValue));
else
nulls[i] = 'n';
i++; /* 17 */
diff --git a/src/backend/commands/_deadcode/recipe.c b/src/backend/commands/_deadcode/recipe.c
index 15a1d0a5647..3cc26fa51c6 100644
--- a/src/backend/commands/_deadcode/recipe.c
+++ b/src/backend/commands/_deadcode/recipe.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/_deadcode/Attic/recipe.c,v 1.13 2001/03/22 06:16:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/_deadcode/Attic/recipe.c,v 1.14 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -431,7 +431,6 @@ tg_replaceNumberedParam(Node *expression,
{
case T_Param:
{
-
/*
* the node is a parameter, substitute the entry from the
* target list of the child that corresponds to the
@@ -445,7 +444,6 @@ tg_replaceNumberedParam(Node *expression,
if (p->param_tlist)
{
-
/*
* we have a parameter with an attribute like
* $N.foo so replace it with a new var node
@@ -506,7 +504,6 @@ tg_replaceNumberedParam(Node *expression,
break;
case T_Expr:
{
-
/*
* the node is an expression, we need to recursively call
* ourselves until we find parameter nodes
@@ -578,7 +575,6 @@ tg_rewriteParamsInExpr(Node *expression, QueryTreeList * inputQlist)
{
case T_Param:
{
-
/*
* the node is a parameter, substitute the entry from the
* target list of the child that corresponds to the
@@ -594,7 +590,6 @@ tg_rewriteParamsInExpr(Node *expression, QueryTreeList * inputQlist)
if (p->param_tlist)
{
-
/*
* we have a parameter with an attribute like
* $N.foo so match the resname "foo" against the
@@ -634,7 +629,6 @@ tg_rewriteParamsInExpr(Node *expression, QueryTreeList * inputQlist)
break;
case T_Expr:
{
-
/*
* the node is an expression, we need to recursively call
* ourselves until we find parameter nodes
@@ -834,7 +828,6 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
{
case TG_SQL:
{
-
/*
* for SQL ingredients, the SQL query is contained in
* the 'src' field
@@ -940,7 +933,6 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
}
else if (n->nodeType == TG_EYE_NODE)
{
-
/*
* if we hit an eye, we need to stop and make what we have into a
* subrecipe query block
@@ -949,7 +941,6 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
}
else if (n->nodeType == TG_TEE_NODE)
{
-
/*
* if we hit a tee, check to see if the parsing has been done for
* this tee already by the other parent
@@ -958,7 +949,6 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
rel = RelationNameGetRelation(n->nodeName);
if (RelationIsValid(rel))
{
-
/*
* this tee has already been visited, no need to do any
* further processing
@@ -1014,7 +1004,6 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
if (RelationIsValid(rel))
{
-
/*
* for complex types, create new relation with the same
* tuple descriptor as the output table type
@@ -1028,7 +1017,6 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
}
else
{
-
/*
* we have to create a relation with one attribute of the
* simple base type. That attribute will have an attr
@@ -1197,7 +1185,6 @@ replaceSeqScan(Plan *plan, Plan *parent,
snode = (Scan *) plan;
if (snode->scanrelid == rt_ind)
{
-
/*
* found the sequential scan that should be replaced with the
* tplan.
@@ -1328,5 +1315,4 @@ replaceTeeScans(Plan *plan, Query *parsetree, TeeInfo * teeInfo)
}
-
#endif /* TIOGA */
diff --git a/src/backend/commands/_deadcode/recipe.h b/src/backend/commands/_deadcode/recipe.h
index 7ac908fa7cb..11dafaefa7e 100644
--- a/src/backend/commands/_deadcode/recipe.h
+++ b/src/backend/commands/_deadcode/recipe.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: recipe.h,v 1.3 2001/01/24 19:42:53 momjian Exp $
+ * $Id: recipe.h,v 1.4 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -16,5 +16,4 @@
#include "nodes/parsenodes.h"
extern void beginRecipe(RecipeStmt *stmt);
-
#endif /* RECIPE_H */
diff --git a/src/backend/commands/_deadcode/version.c b/src/backend/commands/_deadcode/version.c
index 2b8b3b6345c..3a5170e86ae 100644
--- a/src/backend/commands/_deadcode/version.c
+++ b/src/backend/commands/_deadcode/version.c
@@ -10,7 +10,7 @@
* doesn't work! - jolly 8/19/95
*
*
- * $Id: version.c,v 1.26 2001/03/23 04:49:52 momjian Exp $
+ * $Id: version.c,v 1.27 2001/10/25 05:49:27 momjian Exp $
*
* NOTES
* At the point the version is defined, 2 physical relations are created
@@ -87,7 +87,6 @@ eval_as_new_xact(char *query)
CommandCounterIncrement();
pg_exec_query(query);
}
-
#endif
/*
* Define a version.
@@ -129,7 +128,6 @@ DefineVersion(char *name, char *fromRelname, char *date)
VersionReplace(name, saved_basename, saved_snapshot);
VersionRetrieve(name, saved_basename, saved_snapshot);
}
-
#endif
/*
@@ -162,7 +160,6 @@ VersionCreate(char *vname, char *bname)
sprintf(query_buf, "CREATE TABLE %s_del (DOID oid)", vname);
eval_as_new_xact(query_buf);
}
-
#endif
@@ -210,7 +207,6 @@ setAttrList(char *bname)
return;
}
-
#endif
/*
@@ -228,7 +224,6 @@ VersionAppend(char *vname, char *bname)
eval_as_new_xact(rule_buf);
}
-
#endif
/*
@@ -257,7 +252,6 @@ where _%s.oid !!= '%s_del.DOID'",
/* printf("%s\n",rule_buf); */
}
-
#endif
/*
@@ -295,7 +289,6 @@ VersionDelete(char *vname, char *bname, char *snapshot)
eval_as_new_xact(rule_buf);
#endif /* OLD_REWRITE */
}
-
#endif
/*
@@ -349,5 +342,4 @@ VersionReplace(char *vname, char *bname, char *snapshot)
/* printf("%s\n",rule_buf); */
}
-
#endif
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index e7a7d5c0666..41c863a5ba6 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.22 2001/07/05 19:33:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.23 2001/10/25 05:49:23 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,9 +37,11 @@
/*
* Analysis algorithms supported
*/
-typedef enum {
+typedef enum
+{
ALG_MINIMAL = 1, /* Compute only most-common-values */
- ALG_SCALAR /* Compute MCV, histogram, sort correlation */
+ ALG_SCALAR /* Compute MCV, histogram, sort
+ * correlation */
} AlgCode;
/*
@@ -70,7 +72,10 @@ typedef struct
Oid eqfunc; /* and associated function */
Oid ltopr; /* '<' operator for datatype, if any */
- /* These fields are filled in by the actual statistics-gathering routine */
+ /*
+ * These fields are filled in by the actual statistics-gathering
+ * routine
+ */
bool stats_valid;
float4 stanullfrac; /* fraction of entries that are NULL */
int4 stawidth; /* average width */
@@ -101,7 +106,7 @@ typedef struct
#define swapDatum(a,b) do {Datum _tmp; _tmp=a; a=b; b=_tmp;} while(0)
-static int MESSAGE_LEVEL;
+static int MESSAGE_LEVEL;
/* context information for compare_scalars() */
static FmgrInfo *datumCmpFn;
@@ -111,19 +116,19 @@ static int *datumCmpTupnoLink;
static VacAttrStats *examine_attribute(Relation onerel, int attnum);
static int acquire_sample_rows(Relation onerel, HeapTuple *rows,
- int targrows, double *totalrows);
+ int targrows, double *totalrows);
static double random_fract(void);
static double init_selection_state(int n);
static double select_next_random_record(double t, int n, double *stateptr);
-static int compare_rows(const void *a, const void *b);
-static int compare_scalars(const void *a, const void *b);
-static int compare_mcvs(const void *a, const void *b);
+static int compare_rows(const void *a, const void *b);
+static int compare_scalars(const void *a, const void *b);
+static int compare_mcvs(const void *a, const void *b);
static void compute_minimal_stats(VacAttrStats *stats,
- TupleDesc tupDesc, double totalrows,
- HeapTuple *rows, int numrows);
+ TupleDesc tupDesc, double totalrows,
+ HeapTuple *rows, int numrows);
static void compute_scalar_stats(VacAttrStats *stats,
- TupleDesc tupDesc, double totalrows,
- HeapTuple *rows, int numrows);
+ TupleDesc tupDesc, double totalrows,
+ HeapTuple *rows, int numrows);
static void update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats);
@@ -154,8 +159,8 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
* Begin a transaction for analyzing this relation.
*
* Note: All memory allocated during ANALYZE will live in
- * TransactionCommandContext or a subcontext thereof, so it will
- * all be released by transaction commit at the end of this routine.
+ * TransactionCommandContext or a subcontext thereof, so it will all
+ * be released by transaction commit at the end of this routine.
*/
StartTransactionCommand();
@@ -191,14 +196,14 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
ReleaseSysCache(tuple);
/*
- * Open the class, getting only a read lock on it, and check permissions.
- * Permissions check should match vacuum's check!
+ * Open the class, getting only a read lock on it, and check
+ * permissions. Permissions check should match vacuum's check!
*/
onerel = heap_open(relid, AccessShareLock);
- if (! (pg_ownercheck(GetUserId(), RelationGetRelationName(onerel),
- RELNAME) ||
- (is_dbadmin(MyDatabaseId) && !onerel->rd_rel->relisshared)))
+ if (!(pg_ownercheck(GetUserId(), RelationGetRelationName(onerel),
+ RELNAME) ||
+ (is_dbadmin(MyDatabaseId) && !onerel->rd_rel->relisshared)))
{
/* No need for a notice if we already complained during VACUUM */
if (!vacstmt->vacuum)
@@ -238,7 +243,7 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
if (i >= attr_cnt)
elog(ERROR, "ANALYZE: there is no attribute %s in %s",
col, RelationGetRelationName(onerel));
- vacattrstats[tcnt] = examine_attribute(onerel, i+1);
+ vacattrstats[tcnt] = examine_attribute(onerel, i + 1);
if (vacattrstats[tcnt] != NULL)
tcnt++;
}
@@ -251,7 +256,7 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
tcnt = 0;
for (i = 0; i < attr_cnt; i++)
{
- vacattrstats[tcnt] = examine_attribute(onerel, i+1);
+ vacattrstats[tcnt] = examine_attribute(onerel, i + 1);
if (vacattrstats[tcnt] != NULL)
tcnt++;
}
@@ -270,8 +275,8 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
/*
* Determine how many rows we need to sample, using the worst case
- * from all analyzable columns. We use a lower bound of 100 rows
- * to avoid possible overflow in Vitter's algorithm.
+ * from all analyzable columns. We use a lower bound of 100 rows to
+ * avoid possible overflow in Vitter's algorithm.
*/
targrows = 100;
for (i = 0; i < attr_cnt; i++)
@@ -289,8 +294,8 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
/*
* If we are running a standalone ANALYZE, update pages/tuples stats
* in pg_class. We have the accurate page count from heap_beginscan,
- * but only an approximate number of tuples; therefore, if we are
- * part of VACUUM ANALYZE do *not* overwrite the accurate count already
+ * but only an approximate number of tuples; therefore, if we are part
+ * of VACUUM ANALYZE do *not* overwrite the accurate count already
* inserted by VACUUM.
*/
if (!vacstmt->vacuum)
@@ -300,7 +305,7 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
RelationGetForm(onerel)->relhasindex);
/*
- * Compute the statistics. Temporary results during the calculations
+ * Compute the statistics. Temporary results during the calculations
* for each column are stored in a child context. The calc routines
* are responsible to make sure that whatever they store into the
* VacAttrStats structure is allocated in TransactionCommandContext.
@@ -338,8 +343,9 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
/*
* Emit the completed stats rows into pg_statistic, replacing any
- * previous statistics for the target columns. (If there are stats
- * in pg_statistic for columns we didn't process, we leave them alone.)
+ * previous statistics for the target columns. (If there are
+ * stats in pg_statistic for columns we didn't process, we leave
+ * them alone.)
*/
update_attstats(relid, attr_cnt, vacattrstats);
}
@@ -364,7 +370,7 @@ analyze_rel(Oid relid, VacuumStmt *vacstmt)
static VacAttrStats *
examine_attribute(Relation onerel, int attnum)
{
- Form_pg_attribute attr = onerel->rd_att->attrs[attnum-1];
+ Form_pg_attribute attr = onerel->rd_att->attrs[attnum - 1];
Operator func_operator;
Oid oprrest;
HeapTuple typtuple;
@@ -396,8 +402,8 @@ examine_attribute(Relation onerel, int attnum)
return NULL;
/*
- * If we have "=" then we're at least able to do the minimal algorithm,
- * so start filling in a VacAttrStats struct.
+ * If we have "=" then we're at least able to do the minimal
+ * algorithm, so start filling in a VacAttrStats struct.
*/
stats = (VacAttrStats *) palloc(sizeof(VacAttrStats));
MemSet(stats, 0, sizeof(VacAttrStats));
@@ -424,15 +430,14 @@ examine_attribute(Relation onerel, int attnum)
{
oprrest = ((Form_pg_operator) GETSTRUCT(func_operator))->oprrest;
if (oprrest == F_SCALARLTSEL)
- {
ltopr = oprid(func_operator);
- }
ReleaseSysCache(func_operator);
}
stats->ltopr = ltopr;
/*
- * Determine the algorithm to use (this will get more complicated later)
+ * Determine the algorithm to use (this will get more complicated
+ * later)
*/
if (OidIsValid(ltopr))
{
@@ -474,7 +479,7 @@ examine_attribute(Relation onerel, int attnum)
* acquire_sample_rows -- acquire a random sample of rows from the table
*
* Up to targrows rows are collected (if there are fewer than that many
- * rows in the table, all rows are collected). When the table is larger
+ * rows in the table, all rows are collected). When the table is larger
* than targrows, a truly random sample is collected: every row has an
* equal chance of ending up in the final sample.
*
@@ -491,8 +496,8 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
int numrows = 0;
HeapScanDesc scan;
HeapTuple tuple;
- ItemPointer lasttuple;
- BlockNumber lastblock,
+ ItemPointer lasttuple;
+ BlockNumber lastblock,
estblock;
OffsetNumber lastoffset;
int numest;
@@ -501,6 +506,7 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
double rstate;
Assert(targrows > 1);
+
/*
* Do a simple linear scan until we reach the target number of rows.
*/
@@ -512,8 +518,9 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
break;
}
heap_endscan(scan);
+
/*
- * If we ran out of tuples then we're done, no matter how few we
+ * If we ran out of tuples then we're done, no matter how few we
* collected. No sort is needed, since they're already in order.
*/
if (!HeapTupleIsValid(tuple))
@@ -521,35 +528,40 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
*totalrows = (double) numrows;
return numrows;
}
+
/*
* Otherwise, start replacing tuples in the sample until we reach the
* end of the relation. This algorithm is from Jeff Vitter's paper
- * (see full citation below). It works by repeatedly computing the number
- * of the next tuple we want to fetch, which will replace a randomly
- * chosen element of the reservoir (current set of tuples). At all times
- * the reservoir is a true random sample of the tuples we've passed over
- * so far, so when we fall off the end of the relation we're done.
+ * (see full citation below). It works by repeatedly computing the
+ * number of the next tuple we want to fetch, which will replace a
+ * randomly chosen element of the reservoir (current set of tuples).
+ * At all times the reservoir is a true random sample of the tuples
+ * we've passed over so far, so when we fall off the end of the
+ * relation we're done.
*
- * A slight difficulty is that since we don't want to fetch tuples or even
- * pages that we skip over, it's not possible to fetch *exactly* the N'th
- * tuple at each step --- we don't know how many valid tuples are on
- * the skipped pages. We handle this by assuming that the average number
- * of valid tuples/page on the pages already scanned over holds good for
- * the rest of the relation as well; this lets us estimate which page
- * the next tuple should be on and its position in the page. Then we
- * fetch the first valid tuple at or after that position, being careful
- * not to use the same tuple twice. This approach should still give a
- * good random sample, although it's not perfect.
+ * A slight difficulty is that since we don't want to fetch tuples or
+ * even pages that we skip over, it's not possible to fetch *exactly*
+ * the N'th tuple at each step --- we don't know how many valid tuples
+ * are on the skipped pages. We handle this by assuming that the
+ * average number of valid tuples/page on the pages already scanned
+ * over holds good for the rest of the relation as well; this lets us
+ * estimate which page the next tuple should be on and its position in
+ * the page. Then we fetch the first valid tuple at or after that
+ * position, being careful not to use the same tuple twice. This
+ * approach should still give a good random sample, although it's not
+ * perfect.
*/
- lasttuple = &(rows[numrows-1]->t_self);
+ lasttuple = &(rows[numrows - 1]->t_self);
lastblock = ItemPointerGetBlockNumber(lasttuple);
lastoffset = ItemPointerGetOffsetNumber(lasttuple);
+
/*
- * If possible, estimate tuples/page using only completely-scanned pages.
+ * If possible, estimate tuples/page using only completely-scanned
+ * pages.
*/
for (numest = numrows; numest > 0; numest--)
{
- if (ItemPointerGetBlockNumber(&(rows[numest-1]->t_self)) != lastblock)
+ if (ItemPointerGetBlockNumber(&(rows[numest - 1]->t_self)) != lastblock)
break;
}
if (numest == 0)
@@ -558,27 +570,25 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
estblock = lastblock + 1;
}
else
- {
estblock = lastblock;
- }
tuplesperpage = (double) numest / (double) estblock;
t = (double) numrows; /* t is the # of records processed so far */
rstate = init_selection_state(targrows);
for (;;)
{
- double targpos;
- BlockNumber targblock;
- Buffer targbuffer;
- Page targpage;
- OffsetNumber targoffset,
- maxoffset;
+ double targpos;
+ BlockNumber targblock;
+ Buffer targbuffer;
+ Page targpage;
+ OffsetNumber targoffset,
+ maxoffset;
t = select_next_random_record(t, targrows, &rstate);
/* Try to read the t'th record in the table */
targpos = t / tuplesperpage;
targblock = (BlockNumber) targpos;
- targoffset = ((int) ((targpos - targblock) * tuplesperpage)) +
+ targoffset = ((int) ((targpos - targblock) * tuplesperpage)) +
FirstOffsetNumber;
/* Make sure we are past the last selected record */
if (targblock <= lastblock)
@@ -588,19 +598,22 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
targoffset = lastoffset + 1;
}
/* Loop to find first valid record at or after given position */
- pageloop:;
+pageloop:;
+
/*
- * Have we fallen off the end of the relation? (We rely on
+ * Have we fallen off the end of the relation? (We rely on
* heap_beginscan to have updated rd_nblocks.)
*/
if (targblock >= onerel->rd_nblocks)
break;
+
/*
- * We must maintain a pin on the target page's buffer to ensure that
- * the maxoffset value stays good (else concurrent VACUUM might
- * delete tuples out from under us). Hence, pin the page until we
- * are done looking at it. We don't maintain a lock on the page,
- * so tuples could get added to it, but we ignore such tuples.
+ * We must maintain a pin on the target page's buffer to ensure
+ * that the maxoffset value stays good (else concurrent VACUUM
+ * might delete tuples out from under us). Hence, pin the page
+ * until we are done looking at it. We don't maintain a lock on
+ * the page, so tuples could get added to it, but we ignore such
+ * tuples.
*/
targbuffer = ReadBuffer(onerel, targblock);
if (!BufferIsValid(targbuffer))
@@ -632,7 +645,7 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
* Found a suitable tuple, so save it, replacing one old
* tuple at random
*/
- int k = (int) (targrows * random_fract());
+ int k = (int) (targrows * random_fract());
Assert(k >= 0 && k < targrows);
heap_freetuple(rows[k]);
@@ -667,13 +680,13 @@ acquire_sample_rows(Relation onerel, HeapTuple *rows, int targrows,
static double
random_fract(void)
{
- long z;
+ long z;
/* random() can produce endpoint values, try again if so */
do
{
z = random();
- } while (! (z > 0 && z < MAX_RANDOM_VALUE));
+ } while (!(z > 0 && z < MAX_RANDOM_VALUE));
return (double) z / (double) MAX_RANDOM_VALUE;
}
@@ -702,7 +715,7 @@ static double
init_selection_state(int n)
{
/* Initial value of W (for use when Algorithm Z is first applied) */
- return exp(- log(random_fract())/n);
+ return exp(-log(random_fract()) / n);
}
static double
@@ -712,8 +725,8 @@ select_next_random_record(double t, int n, double *stateptr)
if (t <= (22.0 * n))
{
/* Process records using Algorithm X until t is large enough */
- double V,
- quot;
+ double V,
+ quot;
V = random_fract(); /* Generate V */
t += 1;
@@ -728,21 +741,21 @@ select_next_random_record(double t, int n, double *stateptr)
else
{
/* Now apply Algorithm Z */
- double W = *stateptr;
- double term = t - (double) n + 1;
- double S;
+ double W = *stateptr;
+ double term = t - (double) n + 1;
+ double S;
for (;;)
{
- double numer,
- numer_lim,
- denom;
- double U,
- X,
- lhs,
- rhs,
- y,
- tmp;
+ double numer,
+ numer_lim,
+ denom;
+ double U,
+ X,
+ lhs,
+ rhs,
+ y,
+ tmp;
/* Generate U and X */
U = random_fract();
@@ -750,15 +763,15 @@ select_next_random_record(double t, int n, double *stateptr)
S = floor(X); /* S is tentatively set to floor(X) */
/* Test if U <= h(S)/cg(X) in the manner of (6.3) */
tmp = (t + 1) / term;
- lhs = exp(log(((U * tmp * tmp) * (term + S))/(t + X))/n);
- rhs = (((t + X)/(term + S)) * term)/t;
+ lhs = exp(log(((U * tmp * tmp) * (term + S)) / (t + X)) / n);
+ rhs = (((t + X) / (term + S)) * term) / t;
if (lhs <= rhs)
{
- W = rhs/lhs;
+ W = rhs / lhs;
break;
}
/* Test if U <= f(S)/cg(X) */
- y = (((U * (t + 1))/term) * (t + S + 1))/(t + X);
+ y = (((U * (t + 1)) / term) * (t + S + 1)) / (t + X);
if ((double) n < S)
{
denom = t;
@@ -774,8 +787,8 @@ select_next_random_record(double t, int n, double *stateptr)
y *= numer / denom;
denom -= 1;
}
- W = exp(- log(random_fract())/n); /* Generate W in advance */
- if (exp(log(y)/n) <= (t + X)/t)
+ W = exp(-log(random_fract()) / n); /* Generate W in advance */
+ if (exp(log(y) / n) <= (t + X) / t)
break;
}
t += S + 1;
@@ -790,11 +803,11 @@ select_next_random_record(double t, int n, double *stateptr)
static int
compare_rows(const void *a, const void *b)
{
- HeapTuple ha = * (HeapTuple *) a;
- HeapTuple hb = * (HeapTuple *) b;
- BlockNumber ba = ItemPointerGetBlockNumber(&ha->t_self);
+ HeapTuple ha = *(HeapTuple *) a;
+ HeapTuple hb = *(HeapTuple *) b;
+ BlockNumber ba = ItemPointerGetBlockNumber(&ha->t_self);
OffsetNumber oa = ItemPointerGetOffsetNumber(&ha->t_self);
- BlockNumber bb = ItemPointerGetBlockNumber(&hb->t_self);
+ BlockNumber bb = ItemPointerGetBlockNumber(&hb->t_self);
OffsetNumber ob = ItemPointerGetOffsetNumber(&hb->t_self);
if (ba < bb)
@@ -839,15 +852,18 @@ compute_minimal_stats(VacAttrStats *stats,
FmgrInfo f_cmpeq;
typedef struct
{
- Datum value;
- int count;
+ Datum value;
+ int count;
} TrackItem;
TrackItem *track;
int track_cnt,
track_max;
int num_mcv = stats->attr->attstattarget;
- /* We track up to 2*n values for an n-element MCV list; but at least 10 */
+ /*
+ * We track up to 2*n values for an n-element MCV list; but at least
+ * 10
+ */
track_max = 2 * num_mcv;
if (track_max < 10)
track_max = 10;
@@ -877,19 +893,20 @@ compute_minimal_stats(VacAttrStats *stats,
/*
* If it's a varlena field, add up widths for average width
- * calculation. Note that if the value is toasted, we
- * use the toasted width. We don't bother with this calculation
- * if it's a fixed-width type.
+ * calculation. Note that if the value is toasted, we use the
+ * toasted width. We don't bother with this calculation if it's a
+ * fixed-width type.
*/
if (is_varlena)
{
total_width += VARSIZE(DatumGetPointer(value));
+
/*
* If the value is toasted, we want to detoast it just once to
- * avoid repeated detoastings and resultant excess memory usage
- * during the comparisons. Also, check to see if the value is
- * excessively wide, and if so don't detoast at all --- just
- * ignore the value.
+ * avoid repeated detoastings and resultant excess memory
+ * usage during the comparisons. Also, check to see if the
+ * value is excessively wide, and if so don't detoast at all
+ * --- just ignore the value.
*/
if (toast_raw_datum_size(value) > WIDTH_THRESHOLD)
{
@@ -920,10 +937,10 @@ compute_minimal_stats(VacAttrStats *stats,
/* Found a match */
track[j].count++;
/* This value may now need to "bubble up" in the track list */
- while (j > 0 && track[j].count > track[j-1].count)
+ while (j > 0 && track[j].count > track[j - 1].count)
{
- swapDatum(track[j].value, track[j-1].value);
- swapInt(track[j].count, track[j-1].count);
+ swapDatum(track[j].value, track[j - 1].value);
+ swapInt(track[j].count, track[j - 1].count);
j--;
}
}
@@ -932,10 +949,10 @@ compute_minimal_stats(VacAttrStats *stats,
/* No match. Insert at head of count-1 list */
if (track_cnt < track_max)
track_cnt++;
- for (j = track_cnt-1; j > firstcount1; j--)
+ for (j = track_cnt - 1; j > firstcount1; j--)
{
- track[j].value = track[j-1].value;
- track[j].count = track[j-1].count;
+ track[j].value = track[j - 1].value;
+ track[j].count = track[j - 1].count;
}
if (firstcount1 < track_cnt)
{
@@ -948,8 +965,8 @@ compute_minimal_stats(VacAttrStats *stats,
/* We can only compute valid stats if we found some non-null values. */
if (nonnull_cnt > 0)
{
- int nmultiple,
- summultiple;
+ int nmultiple,
+ summultiple;
stats->stats_valid = true;
/* Do the simple null-frac and width stats */
@@ -977,9 +994,9 @@ compute_minimal_stats(VacAttrStats *stats,
nmultiple == track_cnt)
{
/*
- * Our track list includes every value in the sample, and every
- * value appeared more than once. Assume the column has just
- * these values.
+ * Our track list includes every value in the sample, and
+ * every value appeared more than once. Assume the column has
+ * just these values.
*/
stats->stadistinct = track_cnt;
}
@@ -994,12 +1011,12 @@ compute_minimal_stats(VacAttrStats *stats,
* We assume (not very reliably!) that all the multiply-occurring
* values are reflected in the final track[] list, and the other
* nonnull values all appeared but once. (XXX this usually
- * results in a drastic overestimate of ndistinct. Can we do
+ * results in a drastic overestimate of ndistinct. Can we do
* any better?)
*----------
*/
- int f1 = nonnull_cnt - summultiple;
- double term1;
+ int f1 = nonnull_cnt - summultiple;
+ double term1;
if (f1 < 1)
f1 = 1;
@@ -1014,16 +1031,16 @@ compute_minimal_stats(VacAttrStats *stats,
* a fixed value.
*/
if (stats->stadistinct > 0.1 * totalrows)
- stats->stadistinct = - (stats->stadistinct / totalrows);
+ stats->stadistinct = -(stats->stadistinct / totalrows);
/*
* Decide how many values are worth storing as most-common values.
* If we are able to generate a complete MCV list (all the values
* in the sample will fit, and we think these are all the ones in
- * the table), then do so. Otherwise, store only those values
- * that are significantly more common than the (estimated) average.
- * We set the threshold rather arbitrarily at 25% more than average,
- * with at least 2 instances in the sample.
+ * the table), then do so. Otherwise, store only those values
+ * that are significantly more common than the (estimated)
+ * average. We set the threshold rather arbitrarily at 25% more
+ * than average, with at least 2 instances in the sample.
*/
if (track_cnt < track_max && toowide_cnt == 0 &&
stats->stadistinct > 0 &&
@@ -1034,12 +1051,12 @@ compute_minimal_stats(VacAttrStats *stats,
}
else
{
- double ndistinct = stats->stadistinct;
- double avgcount,
- mincount;
+ double ndistinct = stats->stadistinct;
+ double avgcount,
+ mincount;
if (ndistinct < 0)
- ndistinct = - ndistinct * totalrows;
+ ndistinct = -ndistinct * totalrows;
/* estimate # of occurrences in sample of a typical value */
avgcount = (double) numrows / ndistinct;
/* set minimum threshold count to store a value */
@@ -1062,8 +1079,8 @@ compute_minimal_stats(VacAttrStats *stats,
if (num_mcv > 0)
{
MemoryContext old_context;
- Datum *mcv_values;
- float4 *mcv_freqs;
+ Datum *mcv_values;
+ float4 *mcv_freqs;
/* Must copy the target values into TransactionCommandContext */
old_context = MemoryContextSwitchTo(TransactionCommandContext);
@@ -1153,19 +1170,20 @@ compute_scalar_stats(VacAttrStats *stats,
/*
* If it's a varlena field, add up widths for average width
- * calculation. Note that if the value is toasted, we
- * use the toasted width. We don't bother with this calculation
- * if it's a fixed-width type.
+ * calculation. Note that if the value is toasted, we use the
+ * toasted width. We don't bother with this calculation if it's a
+ * fixed-width type.
*/
if (is_varlena)
{
total_width += VARSIZE(DatumGetPointer(value));
+
/*
* If the value is toasted, we want to detoast it just once to
- * avoid repeated detoastings and resultant excess memory usage
- * during the comparisons. Also, check to see if the value is
- * excessively wide, and if so don't detoast at all --- just
- * ignore the value.
+ * avoid repeated detoastings and resultant excess memory
+ * usage during the comparisons. Also, check to see if the
+ * value is excessively wide, and if so don't detoast at all
+ * --- just ignore the value.
*/
if (toast_raw_datum_size(value) > WIDTH_THRESHOLD)
{
@@ -1185,11 +1203,11 @@ compute_scalar_stats(VacAttrStats *stats,
/* We can only compute valid stats if we found some sortable values. */
if (values_cnt > 0)
{
- int ndistinct, /* # distinct values in sample */
- nmultiple, /* # that appear multiple times */
- num_hist,
- dups_cnt;
- int slot_idx = 0;
+ int ndistinct, /* # distinct values in sample */
+ nmultiple, /* # that appear multiple times */
+ num_hist,
+ dups_cnt;
+ int slot_idx = 0;
/* Sort the collected values */
datumCmpFn = &f_cmpfn;
@@ -1199,23 +1217,24 @@ compute_scalar_stats(VacAttrStats *stats,
sizeof(ScalarItem), compare_scalars);
/*
- * Now scan the values in order, find the most common ones,
- * and also accumulate ordering-correlation statistics.
+ * Now scan the values in order, find the most common ones, and
+ * also accumulate ordering-correlation statistics.
*
* To determine which are most common, we first have to count the
- * number of duplicates of each value. The duplicates are adjacent
- * in the sorted list, so a brute-force approach is to compare
- * successive datum values until we find two that are not equal.
- * However, that requires N-1 invocations of the datum comparison
- * routine, which are completely redundant with work that was done
- * during the sort. (The sort algorithm must at some point have
- * compared each pair of items that are adjacent in the sorted order;
- * otherwise it could not know that it's ordered the pair correctly.)
- * We exploit this by having compare_scalars remember the highest
- * tupno index that each ScalarItem has been found equal to. At the
- * end of the sort, a ScalarItem's tupnoLink will still point to
- * itself if and only if it is the last item of its group of
- * duplicates (since the group will be ordered by tupno).
+ * number of duplicates of each value. The duplicates are
+ * adjacent in the sorted list, so a brute-force approach is to
+ * compare successive datum values until we find two that are not
+ * equal. However, that requires N-1 invocations of the datum
+ * comparison routine, which are completely redundant with work
+ * that was done during the sort. (The sort algorithm must at
+ * some point have compared each pair of items that are adjacent
+ * in the sorted order; otherwise it could not know that it's
+ * ordered the pair correctly.) We exploit this by having
+ * compare_scalars remember the highest tupno index that each
+ * ScalarItem has been found equal to. At the end of the sort, a
+ * ScalarItem's tupnoLink will still point to itself if and only
+ * if it is the last item of its group of duplicates (since the
+ * group will be ordered by tupno).
*/
corr_xysum = 0;
ndistinct = 0;
@@ -1225,7 +1244,8 @@ compute_scalar_stats(VacAttrStats *stats,
{
int tupno = values[i].tupno;
- corr_xysum += (double) i * (double) tupno;
+ corr_xysum += (double) i *(double) tupno;
+
dups_cnt++;
if (tupnoLink[tupno] == tupno)
{
@@ -1235,7 +1255,7 @@ compute_scalar_stats(VacAttrStats *stats,
{
nmultiple++;
if (track_cnt < num_mcv ||
- dups_cnt > track[track_cnt-1].count)
+ dups_cnt > track[track_cnt - 1].count)
{
/*
* Found a new item for the mcv list; find its
@@ -1243,16 +1263,16 @@ compute_scalar_stats(VacAttrStats *stats,
* Loop invariant is that j points at an empty/
* replaceable slot.
*/
- int j;
+ int j;
if (track_cnt < num_mcv)
track_cnt++;
- for (j = track_cnt-1; j > 0; j--)
+ for (j = track_cnt - 1; j > 0; j--)
{
- if (dups_cnt <= track[j-1].count)
+ if (dups_cnt <= track[j - 1].count)
break;
- track[j].count = track[j-1].count;
- track[j].first = track[j-1].first;
+ track[j].count = track[j - 1].count;
+ track[j].first = track[j - 1].first;
}
track[j].count = dups_cnt;
track[j].first = i + 1 - dups_cnt;
@@ -1278,8 +1298,8 @@ compute_scalar_stats(VacAttrStats *stats,
else if (toowide_cnt == 0 && nmultiple == ndistinct)
{
/*
- * Every value in the sample appeared more than once. Assume the
- * column has just these values.
+ * Every value in the sample appeared more than once. Assume
+ * the column has just these values.
*/
stats->stadistinct = ndistinct;
}
@@ -1294,8 +1314,8 @@ compute_scalar_stats(VacAttrStats *stats,
* Overwidth values are assumed to have been distinct.
*----------
*/
- int f1 = ndistinct - nmultiple + toowide_cnt;
- double term1;
+ int f1 = ndistinct - nmultiple + toowide_cnt;
+ double term1;
if (f1 < 1)
f1 = 1;
@@ -1310,19 +1330,20 @@ compute_scalar_stats(VacAttrStats *stats,
* a fixed value.
*/
if (stats->stadistinct > 0.1 * totalrows)
- stats->stadistinct = - (stats->stadistinct / totalrows);
+ stats->stadistinct = -(stats->stadistinct / totalrows);
/*
* Decide how many values are worth storing as most-common values.
* If we are able to generate a complete MCV list (all the values
* in the sample will fit, and we think these are all the ones in
- * the table), then do so. Otherwise, store only those values
- * that are significantly more common than the (estimated) average.
- * We set the threshold rather arbitrarily at 25% more than average,
- * with at least 2 instances in the sample. Also, we won't suppress
- * values that have a frequency of at least 1/K where K is the
- * intended number of histogram bins; such values might otherwise
- * cause us to emit duplicate histogram bin boundaries.
+ * the table), then do so. Otherwise, store only those values
+ * that are significantly more common than the (estimated)
+ * average. We set the threshold rather arbitrarily at 25% more
+ * than average, with at least 2 instances in the sample. Also,
+ * we won't suppress values that have a frequency of at least 1/K
+ * where K is the intended number of histogram bins; such values
+ * might otherwise cause us to emit duplicate histogram bin
+ * boundaries.
*/
if (track_cnt == ndistinct && toowide_cnt == 0 &&
stats->stadistinct > 0 &&
@@ -1333,13 +1354,13 @@ compute_scalar_stats(VacAttrStats *stats,
}
else
{
- double ndistinct = stats->stadistinct;
- double avgcount,
- mincount,
- maxmincount;
+ double ndistinct = stats->stadistinct;
+ double avgcount,
+ mincount,
+ maxmincount;
if (ndistinct < 0)
- ndistinct = - ndistinct * totalrows;
+ ndistinct = -ndistinct * totalrows;
/* estimate # of occurrences in sample of a typical value */
avgcount = (double) numrows / ndistinct;
/* set minimum threshold count to store a value */
@@ -1366,8 +1387,8 @@ compute_scalar_stats(VacAttrStats *stats,
if (num_mcv > 0)
{
MemoryContext old_context;
- Datum *mcv_values;
- float4 *mcv_freqs;
+ Datum *mcv_values;
+ float4 *mcv_freqs;
/* Must copy the target values into TransactionCommandContext */
old_context = MemoryContextSwitchTo(TransactionCommandContext);
@@ -1402,8 +1423,8 @@ compute_scalar_stats(VacAttrStats *stats,
if (num_hist >= 2)
{
MemoryContext old_context;
- Datum *hist_values;
- int nvals;
+ Datum *hist_values;
+ int nvals;
/* Sort the MCV items into position order to speed next loop */
qsort((void *) track, num_mcv,
@@ -1413,24 +1434,25 @@ compute_scalar_stats(VacAttrStats *stats,
* Collapse out the MCV items from the values[] array.
*
* Note we destroy the values[] array here... but we don't need
- * it for anything more. We do, however, still need values_cnt.
- * nvals will be the number of remaining entries in values[].
+ * it for anything more. We do, however, still need
+ * values_cnt. nvals will be the number of remaining entries
+ * in values[].
*/
if (num_mcv > 0)
{
- int src,
- dest;
- int j;
+ int src,
+ dest;
+ int j;
src = dest = 0;
j = 0; /* index of next interesting MCV item */
while (src < values_cnt)
{
- int ncopy;
+ int ncopy;
if (j < num_mcv)
{
- int first = track[j].first;
+ int first = track[j].first;
if (src >= first)
{
@@ -1442,9 +1464,7 @@ compute_scalar_stats(VacAttrStats *stats,
ncopy = first - src;
}
else
- {
ncopy = values_cnt - src;
- }
memmove(&values[dest], &values[src],
ncopy * sizeof(ScalarItem));
src += ncopy;
@@ -1461,7 +1481,7 @@ compute_scalar_stats(VacAttrStats *stats,
hist_values = (Datum *) palloc(num_hist * sizeof(Datum));
for (i = 0; i < num_hist; i++)
{
- int pos;
+ int pos;
pos = (i * (nvals - 1)) / (num_hist - 1);
hist_values[i] = datumCopy(values[pos].value,
@@ -1481,9 +1501,9 @@ compute_scalar_stats(VacAttrStats *stats,
if (values_cnt > 1)
{
MemoryContext old_context;
- float4 *corrs;
- double corr_xsum,
- corr_x2sum;
+ float4 *corrs;
+ double corr_xsum,
+ corr_x2sum;
/* Must copy the target values into TransactionCommandContext */
old_context = MemoryContextSwitchTo(TransactionCommandContext);
@@ -1499,9 +1519,10 @@ compute_scalar_stats(VacAttrStats *stats,
* (values_cnt-1)*values_cnt*(2*values_cnt-1) / 6.
*----------
*/
- corr_xsum = (double) (values_cnt-1) * (double) values_cnt / 2.0;
- corr_x2sum = (double) (values_cnt-1) * (double) values_cnt *
- (double) (2*values_cnt-1) / 6.0;
+ corr_xsum = (double) (values_cnt - 1) * (double) values_cnt / 2.0;
+ corr_x2sum = (double) (values_cnt - 1) * (double) values_cnt *
+ (double) (2 * values_cnt - 1) / 6.0;
+
/* And the correlation coefficient reduces to */
corrs[0] = (values_cnt * corr_xysum - corr_xsum * corr_xsum) /
(values_cnt * corr_x2sum - corr_xsum * corr_xsum);
@@ -1521,7 +1542,7 @@ compute_scalar_stats(VacAttrStats *stats,
* qsort comparator for sorting ScalarItems
*
* Aside from sorting the items, we update the datumCmpTupnoLink[] array
- * whenever two ScalarItems are found to contain equal datums. The array
+ * whenever two ScalarItems are found to contain equal datums. The array
* is indexed by tupno; for each ScalarItem, it contains the highest
* tupno that that item's datum has been found to be equal to. This allows
* us to avoid additional comparisons in compute_scalar_stats().
@@ -1573,7 +1594,7 @@ compare_mcvs(const void *a, const void *b)
* Statistics are stored in several places: the pg_class row for the
* relation has stats about the whole relation, and there is a
* pg_statistic row for each (non-system) attribute that has ever
- * been analyzed. The pg_class values are updated by VACUUM, not here.
+ * been analyzed. The pg_class values are updated by VACUUM, not here.
*
* pg_statistic rows are just added or updated normally. This means
* that pg_statistic will probably contain some deleted rows at the
@@ -1604,7 +1625,9 @@ update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats)
FmgrInfo out_function;
HeapTuple stup,
oldtup;
- int i, k, n;
+ int i,
+ k,
+ n;
Datum values[Natts_pg_statistic];
char nulls[Natts_pg_statistic];
char replaces[Natts_pg_statistic];
@@ -1626,22 +1649,22 @@ update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats)
}
i = 0;
- values[i++] = ObjectIdGetDatum(relid); /* starelid */
- values[i++] = Int16GetDatum(stats->attnum); /* staattnum */
- values[i++] = Float4GetDatum(stats->stanullfrac); /* stanullfrac */
- values[i++] = Int32GetDatum(stats->stawidth); /* stawidth */
- values[i++] = Float4GetDatum(stats->stadistinct); /* stadistinct */
+ values[i++] = ObjectIdGetDatum(relid); /* starelid */
+ values[i++] = Int16GetDatum(stats->attnum); /* staattnum */
+ values[i++] = Float4GetDatum(stats->stanullfrac); /* stanullfrac */
+ values[i++] = Int32GetDatum(stats->stawidth); /* stawidth */
+ values[i++] = Float4GetDatum(stats->stadistinct); /* stadistinct */
for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{
- values[i++] = Int16GetDatum(stats->stakind[k]); /* stakindN */
+ values[i++] = Int16GetDatum(stats->stakind[k]); /* stakindN */
}
for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{
- values[i++] = ObjectIdGetDatum(stats->staop[k]); /* staopN */
+ values[i++] = ObjectIdGetDatum(stats->staop[k]); /* staopN */
}
for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{
- int nnum = stats->numnumbers[k];
+ int nnum = stats->numnumbers[k];
if (nnum > 0)
{
@@ -1653,7 +1676,7 @@ update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats)
/* XXX knows more than it should about type float4: */
arry = construct_array(numdatums, nnum,
false, sizeof(float4), 'i');
- values[i++] = PointerGetDatum(arry); /* stanumbersN */
+ values[i++] = PointerGetDatum(arry); /* stanumbersN */
}
else
{
@@ -1663,7 +1686,7 @@ update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats)
}
for (k = 0; k < STATISTIC_NUM_SLOTS; k++)
{
- int ntxt = stats->numvalues[k];
+ int ntxt = stats->numvalues[k];
if (ntxt > 0)
{
@@ -1676,20 +1699,20 @@ update_attstats(Oid relid, int natts, VacAttrStats **vacattrstats)
* Convert data values to a text string to be inserted
* into the text array.
*/
- Datum stringdatum;
+ Datum stringdatum;
stringdatum =
FunctionCall3(&out_function,
stats->stavalues[k][n],
- ObjectIdGetDatum(stats->attrtype->typelem),
- Int32GetDatum(stats->attr->atttypmod));
+ ObjectIdGetDatum(stats->attrtype->typelem),
+ Int32GetDatum(stats->attr->atttypmod));
txtdatums[n] = DirectFunctionCall1(textin, stringdatum);
pfree(DatumGetPointer(stringdatum));
}
/* XXX knows more than it should about type text: */
arry = construct_array(txtdatums, ntxt,
false, -1, 'i');
- values[i++] = PointerGetDatum(arry); /* stavaluesN */
+ values[i++] = PointerGetDatum(arry); /* stavaluesN */
}
else
{
diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c
index 6333efafc64..3195f5fc0b8 100644
--- a/src/backend/commands/async.c
+++ b/src/backend/commands/async.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.80 2001/09/08 01:10:20 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/async.c,v 1.81 2001/10/25 05:49:23 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -120,7 +120,7 @@ static volatile int notifyInterruptOccurred = 0;
/* True if we've registered an on_shmem_exit cleanup */
static bool unlistenExitRegistered = false;
-bool Trace_notify = false;
+bool Trace_notify = false;
static void Async_UnlistenAll(void);
@@ -153,13 +153,13 @@ Async_Notify(char *relname)
elog(DEBUG, "Async_Notify: %s", relname);
/* no point in making duplicate entries in the list ... */
- if (! AsyncExistsPendingNotify(relname))
+ if (!AsyncExistsPendingNotify(relname))
{
/*
- * The name list needs to live until end of transaction, so
- * store it in the top transaction context.
+ * The name list needs to live until end of transaction, so store
+ * it in the top transaction context.
*/
- MemoryContext oldcontext;
+ MemoryContext oldcontext;
oldcontext = MemoryContextSwitchTo(TopTransactionContext);
@@ -209,7 +209,7 @@ Async_Listen(char *relname, int pid)
Form_pg_listener listener = (Form_pg_listener) GETSTRUCT(tuple);
if (listener->listenerpid == pid &&
- strncmp(NameStr(listener->relname), relname, NAMEDATALEN) == 0)
+ strncmp(NameStr(listener->relname), relname, NAMEDATALEN) == 0)
{
alreadyListener = true;
/* No need to scan the rest of the table */
@@ -310,13 +310,14 @@ Async_Unlisten(char *relname, int pid)
Form_pg_listener listener = (Form_pg_listener) GETSTRUCT(tuple);
if (listener->listenerpid == pid &&
- strncmp(NameStr(listener->relname), relname, NAMEDATALEN) == 0)
+ strncmp(NameStr(listener->relname), relname, NAMEDATALEN) == 0)
{
/* Found the matching tuple, delete it */
simple_heap_delete(lRel, &tuple->t_self);
+
/*
- * We assume there can be only one match, so no need
- * to scan the rest of the table
+ * We assume there can be only one match, so no need to scan
+ * the rest of the table
*/
break;
}
@@ -478,16 +479,16 @@ AtCommit_Notify(void)
char *relname = NameStr(listener->relname);
int32 listenerPID = listener->listenerpid;
- if (! AsyncExistsPendingNotify(relname))
+ if (!AsyncExistsPendingNotify(relname))
continue;
if (listenerPID == MyProcPid)
{
/*
- * Self-notify: no need to bother with table update.
- * Indeed, we *must not* clear the notification field in
- * this path, or we could lose an outside notify, which'd
- * be bad for applications that ignore self-notify messages.
+ * Self-notify: no need to bother with table update. Indeed,
+ * we *must not* clear the notification field in this path, or
+ * we could lose an outside notify, which'd be bad for
+ * applications that ignore self-notify messages.
*/
if (Trace_notify)
@@ -503,22 +504,20 @@ AtCommit_Notify(void)
/*
* If someone has already notified this listener, we don't
- * bother modifying the table, but we do still send a
- * SIGUSR2 signal, just in case that backend missed the
- * earlier signal for some reason. It's OK to send the
- * signal first, because the other guy can't read
- * pg_listener until we unlock it.
+ * bother modifying the table, but we do still send a SIGUSR2
+ * signal, just in case that backend missed the earlier signal
+ * for some reason. It's OK to send the signal first, because
+ * the other guy can't read pg_listener until we unlock it.
*/
if (kill(listenerPID, SIGUSR2) < 0)
{
/*
- * Get rid of pg_listener entry if it refers to a PID
- * that no longer exists. Presumably, that backend
- * crashed without deleting its pg_listener entries.
- * This code used to only delete the entry if
- * errno==ESRCH, but as far as I can see we should
- * just do it for any failure (certainly at least for
- * EPERM too...)
+ * Get rid of pg_listener entry if it refers to a PID that
+ * no longer exists. Presumably, that backend crashed
+ * without deleting its pg_listener entries. This code
+ * used to only delete the entry if errno==ESRCH, but as
+ * far as I can see we should just do it for any failure
+ * (certainly at least for EPERM too...)
*/
simple_heap_delete(lRel, &lTuple->t_self);
}
@@ -610,7 +609,6 @@ Async_NotifyHandler(SIGNAL_ARGS)
if (notifyInterruptEnabled)
{
-
/*
* I'm not sure whether some flavors of Unix might allow another
* SIGUSR2 occurrence to recursively interrupt this routine. To
@@ -641,7 +639,6 @@ Async_NotifyHandler(SIGNAL_ARGS)
}
else
{
-
/*
* In this path it is NOT SAFE to do much of anything, except
* this:
@@ -888,11 +885,11 @@ static void
ClearPendingNotifies(void)
{
/*
- * We used to have to explicitly deallocate the list members and nodes,
- * because they were malloc'd. Now, since we know they are palloc'd
- * in TopTransactionContext, we need not do that --- they'll go away
- * automatically at transaction exit. We need only reset the list head
- * pointer.
+ * We used to have to explicitly deallocate the list members and
+ * nodes, because they were malloc'd. Now, since we know they are
+ * palloc'd in TopTransactionContext, we need not do that --- they'll
+ * go away automatically at transaction exit. We need only reset the
+ * list head pointer.
*/
pendingNotifies = NIL;
}
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c
index 7d5d3e6cbdb..469b4cd1ce4 100644
--- a/src/backend/commands/cluster.c
+++ b/src/backend/commands/cluster.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.69 2001/08/21 16:36:01 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.70 2001/10/25 05:49:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -267,10 +267,9 @@ rebuildheap(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex)
LocalHeapTuple.t_datamcxt = NULL;
LocalHeapTuple.t_data = NULL;
heap_fetch(LocalOldHeap, SnapshotNow, &LocalHeapTuple, &LocalBuffer,
- ScanDesc);
+ ScanDesc);
if (LocalHeapTuple.t_data != NULL)
{
-
/*
* We must copy the tuple because heap_insert() will overwrite
* the commit-status fields of the tuple it's handed, and the
diff --git a/src/backend/commands/command.c b/src/backend/commands/command.c
index 5297f7481d6..4d1792a1d36 100644
--- a/src/backend/commands/command.c
+++ b/src/backend/commands/command.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.145 2001/10/23 17:39:02 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.146 2001/10/25 05:49:24 momjian Exp $
*
* NOTES
* The PerformAddAttribute() code, like most of the relation
@@ -32,7 +32,7 @@
#include "catalog/pg_type.h"
#include "commands/command.h"
#include "commands/trigger.h"
-#include "commands/defrem.h" /* For add constraint unique, primary */
+#include "commands/defrem.h" /* For add constraint unique, primary */
#include "executor/execdefs.h"
#include "executor/executor.h"
#include "miscadmin.h"
@@ -43,7 +43,7 @@
#include "parser/parse_expr.h"
#include "parser/parse_oper.h"
#include "parser/parse_relation.h"
-#include "parser/analyze.h" /* For add constraint unique, primary */
+#include "parser/analyze.h" /* For add constraint unique, primary */
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
@@ -137,8 +137,8 @@ PerformPortalFetch(char *name,
* destination. This supports MOVE, for example, which will pass in
* dest = None.
*
- * EXCEPTION: if the query's original dest is RemoteInternal (ie, it's
- * a binary cursor) and the request is Remote, we do NOT override the
+ * EXCEPTION: if the query's original dest is RemoteInternal (ie, it's a
+ * binary cursor) and the request is Remote, we do NOT override the
* original dest. This is necessary since a FETCH command will pass
* dest = Remote, not knowing whether the cursor is binary or not.
*/
@@ -183,10 +183,11 @@ PerformPortalFetch(char *name,
if (!portal->atEnd)
{
ExecutorRun(queryDesc, estate, EXEC_FOR, (long) count);
+
/*
- * I use CMD_UPDATE, because no CMD_MOVE or the like
- * exists, and I would like to provide the same
- * kind of info as CMD_UPDATE
+ * I use CMD_UPDATE, because no CMD_MOVE or the like exists,
+ * and I would like to provide the same kind of info as
+ * CMD_UPDATE
*/
UpdateCommandInfo(CMD_UPDATE, 0, estate->es_processed);
if (estate->es_processed > 0)
@@ -200,10 +201,11 @@ PerformPortalFetch(char *name,
if (!portal->atStart)
{
ExecutorRun(queryDesc, estate, EXEC_BACK, (long) count);
+
/*
- * I use CMD_UPDATE, because no CMD_MOVE or the like
- * exists, and I would like to provide the same
- * kind of info as CMD_UPDATE
+ * I use CMD_UPDATE, because no CMD_MOVE or the like exists,
+ * and I would like to provide the same kind of info as
+ * CMD_UPDATE
*/
UpdateCommandInfo(CMD_UPDATE, 0, estate->es_processed);
if (estate->es_processed > 0)
@@ -356,8 +358,8 @@ AlterTableAddColumn(const char *relationName,
/*
* find_all_inheritors does the recursive search of the
- * inheritance hierarchy, so all we have to do is process all
- * of the relids in the list that it returns.
+ * inheritance hierarchy, so all we have to do is process all of
+ * the relids in the list that it returns.
*/
foreach(child, children)
{
@@ -382,12 +384,12 @@ AlterTableAddColumn(const char *relationName,
* Implementation restrictions: because we don't touch the table rows,
* the new column values will initially appear to be NULLs. (This
* happens because the heap tuple access routines always check for
- * attnum > # of attributes in tuple, and return NULL if so.) Therefore
- * we can't support a DEFAULT value in SQL92-compliant fashion, and
- * we also can't allow a NOT NULL constraint.
+ * attnum > # of attributes in tuple, and return NULL if so.)
+ * Therefore we can't support a DEFAULT value in SQL92-compliant
+ * fashion, and we also can't allow a NOT NULL constraint.
*
- * We do allow CHECK constraints, even though these theoretically
- * could fail for NULL rows (eg, CHECK (newcol IS NOT NULL)).
+ * We do allow CHECK constraints, even though these theoretically could
+ * fail for NULL rows (eg, CHECK (newcol IS NOT NULL)).
*/
if (colDef->raw_default || colDef->cooked_default)
elog(ERROR, "Adding columns with defaults is not implemented."
@@ -512,8 +514,8 @@ AlterTableAddColumn(const char *relationName,
/*
* Add any CHECK constraints attached to the new column.
*
- * To do this we must re-open the rel so that its new attr list
- * gets loaded into the relcache.
+ * To do this we must re-open the rel so that its new attr list gets
+ * loaded into the relcache.
*/
if (colDef->constraints != NIL)
{
@@ -1012,7 +1014,6 @@ RemoveColumnReferences(Oid reloid, int attnum, bool checkonly, HeapTuple reltup)
return checkok;
}
-
#endif /* _DROP_COLUMN_HACK__ */
/*
@@ -1169,7 +1170,7 @@ AlterTableDropColumn(const char *relationName,
heap_freetuple(reltup);
heap_close(rel, NoLock);
#else
- elog(ERROR, "ALTER TABLE / DROP COLUMN is not implemented");
+ elog(ERROR, "ALTER TABLE / DROP COLUMN is not implemented");
#endif /* _DROP_COLUMN_HACK__ */
}
@@ -1183,8 +1184,8 @@ AlterTableAddConstraint(char *relationName,
bool inh, List *newConstraints)
{
Relation rel;
- Oid myrelid;
- List *listptr;
+ Oid myrelid;
+ List *listptr;
#ifndef NO_SECURITY
if (!pg_ownercheck(GetUserId(), relationName, RELNAME))
@@ -1199,7 +1200,8 @@ AlterTableAddConstraint(char *relationName,
rel = heap_openr(relationName, AccessExclusiveLock);
myrelid = RelationGetRelid(rel);
- if (inh) {
+ if (inh)
+ {
List *child,
*children;
@@ -1208,8 +1210,8 @@ AlterTableAddConstraint(char *relationName,
/*
* find_all_inheritors does the recursive search of the
- * inheritance hierarchy, so all we have to do is process all
- * of the relids in the list that it returns.
+ * inheritance hierarchy, so all we have to do is process all of
+ * the relids in the list that it returns.
*/
foreach(child, children)
{
@@ -1229,372 +1231,418 @@ AlterTableAddConstraint(char *relationName,
foreach(listptr, newConstraints)
{
- Node *newConstraint = lfirst(listptr);
-
- switch (nodeTag(newConstraint))
- {
- case T_Constraint:
- {
- Constraint *constr = (Constraint *) newConstraint;
+ Node *newConstraint = lfirst(listptr);
- switch (constr->contype)
+ switch (nodeTag(newConstraint))
+ {
+ case T_Constraint:
{
- case CONSTR_CHECK:
- {
- ParseState *pstate;
- bool successful = true;
- HeapScanDesc scan;
- ExprContext *econtext;
- TupleTableSlot *slot;
- HeapTuple tuple;
- RangeTblEntry *rte;
- List *qual;
- Node *expr;
- char *name;
-
- if (constr->name)
- name = constr->name;
- else
- name = "<unnamed>";
-
- /*
- * We need to make a parse state and range
- * table to allow us to transformExpr and
- * fix_opids to get a version of the
- * expression we can pass to ExecQual
- */
- pstate = make_parsestate(NULL);
- rte = addRangeTableEntry(pstate, relationName, NULL,
- false, true);
- addRTEtoQuery(pstate, rte, true, true);
-
- /* Convert the A_EXPR in raw_expr into an EXPR */
- expr = transformExpr(pstate, constr->raw_expr,
- EXPR_COLUMN_FIRST);
-
- /*
- * Make sure it yields a boolean result.
- */
- if (exprType(expr) != BOOLOID)
- elog(ERROR, "CHECK '%s' does not yield boolean result",
- name);
-
- /*
- * Make sure no outside relations are referred
- * to.
- */
- if (length(pstate->p_rtable) != 1)
- elog(ERROR, "Only relation '%s' can be referenced in CHECK",
- relationName);
-
- /*
- * Might as well try to reduce any constant
- * expressions.
- */
- expr = eval_const_expressions(expr);
-
- /* And fix the opids */
- fix_opids(expr);
-
- qual = makeList1(expr);
-
- /* Make tuple slot to hold tuples */
- slot = MakeTupleTableSlot();
- ExecSetSlotDescriptor(slot, RelationGetDescr(rel), false);
- /* Make an expression context for ExecQual */
- econtext = MakeExprContext(slot, CurrentMemoryContext);
-
- /*
- * Scan through the rows now, checking the
- * expression at each row.
- */
- scan = heap_beginscan(rel, false, SnapshotNow, 0, NULL);
-
- while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
+ Constraint *constr = (Constraint *) newConstraint;
+
+ switch (constr->contype)
+ {
+ case CONSTR_CHECK:
{
- ExecStoreTuple(tuple, slot, InvalidBuffer, false);
- if (!ExecQual(qual, econtext, true))
+ ParseState *pstate;
+ bool successful = true;
+ HeapScanDesc scan;
+ ExprContext *econtext;
+ TupleTableSlot *slot;
+ HeapTuple tuple;
+ RangeTblEntry *rte;
+ List *qual;
+ Node *expr;
+ char *name;
+
+ if (constr->name)
+ name = constr->name;
+ else
+ name = "<unnamed>";
+
+ /*
+ * We need to make a parse state and range
+ * table to allow us to transformExpr and
+ * fix_opids to get a version of the
+ * expression we can pass to ExecQual
+ */
+ pstate = make_parsestate(NULL);
+ rte = addRangeTableEntry(pstate, relationName, NULL,
+ false, true);
+ addRTEtoQuery(pstate, rte, true, true);
+
+ /*
+ * Convert the A_EXPR in raw_expr into an
+ * EXPR
+ */
+ expr = transformExpr(pstate, constr->raw_expr,
+ EXPR_COLUMN_FIRST);
+
+ /*
+ * Make sure it yields a boolean result.
+ */
+ if (exprType(expr) != BOOLOID)
+ elog(ERROR, "CHECK '%s' does not yield boolean result",
+ name);
+
+ /*
+ * Make sure no outside relations are
+ * referred to.
+ */
+ if (length(pstate->p_rtable) != 1)
+ elog(ERROR, "Only relation '%s' can be referenced in CHECK",
+ relationName);
+
+ /*
+ * Might as well try to reduce any
+ * constant expressions.
+ */
+ expr = eval_const_expressions(expr);
+
+ /* And fix the opids */
+ fix_opids(expr);
+
+ qual = makeList1(expr);
+
+ /* Make tuple slot to hold tuples */
+ slot = MakeTupleTableSlot();
+ ExecSetSlotDescriptor(slot, RelationGetDescr(rel), false);
+ /* Make an expression context for ExecQual */
+ econtext = MakeExprContext(slot, CurrentMemoryContext);
+
+ /*
+ * Scan through the rows now, checking the
+ * expression at each row.
+ */
+ scan = heap_beginscan(rel, false, SnapshotNow, 0, NULL);
+
+ while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
{
- successful = false;
- break;
+ ExecStoreTuple(tuple, slot, InvalidBuffer, false);
+ if (!ExecQual(qual, econtext, true))
+ {
+ successful = false;
+ break;
+ }
+ ResetExprContext(econtext);
}
- ResetExprContext(econtext);
- }
- heap_endscan(scan);
+ heap_endscan(scan);
- FreeExprContext(econtext);
- pfree(slot);
+ FreeExprContext(econtext);
+ pfree(slot);
- if (!successful)
- elog(ERROR, "AlterTableAddConstraint: rejected due to CHECK constraint %s", name);
+ if (!successful)
+ elog(ERROR, "AlterTableAddConstraint: rejected due to CHECK constraint %s", 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.
- */
- AddRelationRawConstraints(rel, NIL,
+ /*
+ * 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));
- break;
- }
- case CONSTR_UNIQUE:
- {
- char *iname = constr->name;
- bool istemp = is_temp_rel_name(relationName);
- List *indexoidlist;
- List *indexoidscan;
- int num_keys;
- bool index_found = false;
- bool index_found_unique = false;
- bool index_found_primary = false;
-
- /* If the constraint name is not specified, generate a name */
- if (iname == NULL) {
- Oid indoid;
- int pass = 0;
- char *typename = palloc(NAMEDATALEN);
- Ident *key;
-
- /* Assume that the length of the attr list is already > 0 */
-
- /* Get the first attribute so we can use its name */
- key = (Ident *)lfirst(constr->keys);
-
- /* Initialise typename to 'key' */
- snprintf(typename, NAMEDATALEN, "key");
-
- for (;;)
- {
- iname = makeObjectName(relationName, key->name, typename);
-
- /* Check for a conflict */
- indoid = RelnameFindRelid(iname);
-
- /* If the oid was not found, then we have a safe name */
- if ((!istemp && !OidIsValid(indoid)) ||
- (istemp && !is_temp_rel_name(iname)))
- break;
-
- /* Found a conflict, so try a new name component */
- pfree(iname);
- snprintf(typename, NAMEDATALEN, "key%d", ++pass);
- }
- }
-
- /* Need to check for unique key already on field(s) */
-
- /*
- * First we check for limited correctness of the
- * constraint
- */
-
- /* Loop over all indices on the relation */
- indexoidlist = RelationGetIndexList(rel);
-
- foreach(indexoidscan, indexoidlist)
- {
- Oid indexoid = lfirsti(indexoidscan);
- HeapTuple indexTuple;
- Form_pg_index indexStruct;
- List *keyl;
- int i;
-
- indexTuple = SearchSysCache(INDEXRELID,
- ObjectIdGetDatum(indexoid),
- 0, 0, 0);
-
- if (!HeapTupleIsValid(indexTuple))
- elog(ERROR, "ALTER TABLE/ADD CONSTRAINT: Index \"%u\" not found",
- indexoid);
- indexStruct = (Form_pg_index) GETSTRUCT(indexTuple);
-
- /*
- * Make sure this index has the same number of
- * keys as the constraint -- It obviously won't match otherwise.
- */
- for (i = 0; i < INDEX_MAX_KEYS && indexStruct->indkey[i] != 0; i++)
- ;
- num_keys = length(constr->keys);
-
- if (i == num_keys)
- {
- /* Loop over each key in the constraint and check that there is a
- corresponding key in the index. */
- int keys_matched = 0;
-
- i = 0;
- foreach(keyl, constr->keys)
- {
- Ident *key = lfirst(keyl);
- int keyno = indexStruct->indkey[i];
-
- /* Look at key[i] in the index and check that it is over the same column
- as key[i] in the constraint. This is to differentiate between (a,b)
- and (b,a) */
- if (namestrcmp(attnumAttName(rel, keyno),
- key->name) == 0)
- keys_matched++;
- else
- break;
- i++;
- }
- if (keys_matched == num_keys) {
- index_found = true;
- index_found_unique = indexStruct->indisunique;
- index_found_primary = indexStruct->indisprimary;
- }
- }
- ReleaseSysCache(indexTuple);
- if (index_found_unique || index_found_primary)
- break;
- }
-
- freeList(indexoidlist);
-
- if (index_found_primary)
- elog(ERROR, "Unique primary key already defined on relation \"%s\"", relationName);
- else if (index_found_unique)
- elog(ERROR, "Unique constraint already defined on the specified attributes in relation \"%s\"", relationName);
-
- /* If everything is ok, create the new index (constraint) */
- DefineIndex(
- relationName,
- iname,
- "btree",
- constr->keys,
- true,
- false,
- NULL,
- NIL);
-
- /* Issue notice */
- elog(NOTICE, "ALTER TABLE/ADD UNIQUE will create implicit index '%s' for table '%s'",
- iname, relationName);
- if (index_found)
- elog(NOTICE, "Unique constraint supercedes existing index on relation \"%s\". Drop the existing index to remove redundancy.", relationName);
- pfree(iname);
-
- break;
- }
- default:
- elog(ERROR, "ALTER TABLE / ADD CONSTRAINT is not implemented for that constraint type.");
- }
- break;
- }
- case T_FkConstraint:
- {
- FkConstraint *fkconstraint = (FkConstraint *) newConstraint;
- Relation pkrel;
- HeapScanDesc scan;
- HeapTuple tuple;
- Trigger trig;
- List *list;
- int count;
-
- if (is_temp_rel_name(fkconstraint->pktable_name) &&
- !is_temp_rel_name(relationName))
- elog(ERROR, "ALTER TABLE / ADD CONSTRAINT: Unable to reference temporary table from permanent table constraint.");
-
- /*
- * Grab an exclusive lock on the pk table, so that someone
- * doesn't delete rows out from under us.
- */
-
- pkrel = heap_openr(fkconstraint->pktable_name, AccessExclusiveLock);
- if (pkrel->rd_rel->relkind != RELKIND_RELATION)
- elog(ERROR, "referenced table \"%s\" not a relation",
- fkconstraint->pktable_name);
- heap_close(pkrel, NoLock);
-
- /*
- * First we check for limited correctness of the constraint.
- *
- * NOTE: we assume parser has already checked for existence
- * of an appropriate unique index on the referenced relation,
- * and that the column datatypes are comparable.
- *
- * Scan through each tuple, calling the RI_FKey_Match_Ins
- * (insert trigger) as if that tuple had just been
- * inserted. If any of those fail, it should elog(ERROR)
- * and that's that.
- */
-
- trig.tgoid = 0;
- if (fkconstraint->constr_name)
- trig.tgname = fkconstraint->constr_name;
- else
- trig.tgname = "<unknown>";
- trig.tgfoid = 0;
- trig.tgtype = 0;
- trig.tgenabled = TRUE;
- trig.tgisconstraint = TRUE;
- trig.tginitdeferred = FALSE;
- trig.tgdeferrable = FALSE;
-
- trig.tgargs = (char **) palloc(
- sizeof(char *) * (4 + length(fkconstraint->fk_attrs)
- + length(fkconstraint->pk_attrs)));
+ break;
+ }
+ case CONSTR_UNIQUE:
+ {
+ char *iname = constr->name;
+ bool istemp = is_temp_rel_name(relationName);
+ List *indexoidlist;
+ List *indexoidscan;
+ int num_keys;
+ bool index_found = false;
+ bool index_found_unique = false;
+ bool index_found_primary = false;
+
+ /*
+ * If the constraint name is not
+ * specified, generate a name
+ */
+ if (iname == NULL)
+ {
+ Oid indoid;
+ int pass = 0;
+ char *typename = palloc(NAMEDATALEN);
+ Ident *key;
+
+ /*
+ * Assume that the length of the attr
+ * list is already > 0
+ */
+
+ /*
+ * Get the first attribute so we can
+ * use its name
+ */
+ key = (Ident *) lfirst(constr->keys);
+
+ /* Initialise typename to 'key' */
+ snprintf(typename, NAMEDATALEN, "key");
+
+ for (;;)
+ {
+ iname = makeObjectName(relationName, key->name, typename);
+
+ /* Check for a conflict */
+ indoid = RelnameFindRelid(iname);
+
+ /*
+ * If the oid was not found, then
+ * we have a safe name
+ */
+ if ((!istemp && !OidIsValid(indoid)) ||
+ (istemp && !is_temp_rel_name(iname)))
+ break;
+
+ /*
+ * Found a conflict, so try a new
+ * name component
+ */
+ pfree(iname);
+ snprintf(typename, NAMEDATALEN, "key%d", ++pass);
+ }
+ }
- if (fkconstraint->constr_name)
- trig.tgargs[0] = fkconstraint->constr_name;
- else
- trig.tgargs[0] = "<unknown>";
- trig.tgargs[1] = (char *) relationName;
- trig.tgargs[2] = fkconstraint->pktable_name;
- trig.tgargs[3] = fkconstraint->match_type;
- count = 4;
- foreach(list, fkconstraint->fk_attrs)
- {
- Ident *fk_at = lfirst(list);
+ /*
+ * Need to check for unique key already on
+ * field(s)
+ */
- trig.tgargs[count] = fk_at->name;
- count += 2;
- }
- count = 5;
- foreach(list, fkconstraint->pk_attrs)
- {
- Ident *pk_at = lfirst(list);
+ /*
+ * First we check for limited correctness
+ * of the constraint
+ */
- trig.tgargs[count] = pk_at->name;
- count += 2;
- }
- trig.tgnargs = count - 1;
+ /* Loop over all indices on the relation */
+ indexoidlist = RelationGetIndexList(rel);
- scan = heap_beginscan(rel, false, SnapshotNow, 0, NULL);
+ foreach(indexoidscan, indexoidlist)
+ {
+ Oid indexoid = lfirsti(indexoidscan);
+ HeapTuple indexTuple;
+ Form_pg_index indexStruct;
+ List *keyl;
+ int i;
+
+ indexTuple = SearchSysCache(INDEXRELID,
+ ObjectIdGetDatum(indexoid),
+ 0, 0, 0);
+
+ if (!HeapTupleIsValid(indexTuple))
+ elog(ERROR, "ALTER TABLE/ADD CONSTRAINT: Index \"%u\" not found",
+ indexoid);
+ indexStruct = (Form_pg_index) GETSTRUCT(indexTuple);
+
+ /*
+ * Make sure this index has the same
+ * number of keys as the constraint --
+ * It obviously won't match otherwise.
+ */
+ for (i = 0; i < INDEX_MAX_KEYS && indexStruct->indkey[i] != 0; i++)
+ ;
+ num_keys = length(constr->keys);
+
+ if (i == num_keys)
+ {
+ /*
+ * Loop over each key in the
+ * constraint and check that there
+ * is a corresponding key in the
+ * index.
+ */
+ int keys_matched = 0;
+
+ i = 0;
+ foreach(keyl, constr->keys)
+ {
+ Ident *key = lfirst(keyl);
+ int keyno = indexStruct->indkey[i];
+
+ /*
+ * Look at key[i] in the index
+ * and check that it is over
+ * the same column as key[i]
+ * in the constraint. This is
+ * to differentiate between
+ * (a,b) and (b,a)
+ */
+ if (namestrcmp(attnumAttName(rel, keyno),
+ key->name) == 0)
+ keys_matched++;
+ else
+ break;
+ i++;
+ }
+ if (keys_matched == num_keys)
+ {
+ index_found = true;
+ index_found_unique = indexStruct->indisunique;
+ index_found_primary = indexStruct->indisprimary;
+ }
+ }
+ ReleaseSysCache(indexTuple);
+ if (index_found_unique || index_found_primary)
+ break;
+ }
- while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
+ freeList(indexoidlist);
+
+ if (index_found_primary)
+ elog(ERROR, "Unique primary key already defined on relation \"%s\"", relationName);
+ else if (index_found_unique)
+ elog(ERROR, "Unique constraint already defined on the specified attributes in relation \"%s\"", relationName);
+
+ /*
+ * If everything is ok, create the new
+ * index (constraint)
+ */
+ DefineIndex(
+ relationName,
+ iname,
+ "btree",
+ constr->keys,
+ true,
+ false,
+ NULL,
+ NIL);
+
+ /* Issue notice */
+ elog(NOTICE, "ALTER TABLE/ADD UNIQUE will create implicit index '%s' for table '%s'",
+ iname, relationName);
+ if (index_found)
+ elog(NOTICE, "Unique constraint supercedes existing index on relation \"%s\". Drop the existing index to remove redundancy.", relationName);
+ pfree(iname);
+
+ break;
+ }
+ default:
+ elog(ERROR, "ALTER TABLE / ADD CONSTRAINT is not implemented for that constraint type.");
+ }
+ break;
+ }
+ case T_FkConstraint:
{
- /* Make a call to the check function */
- /* No parameters are passed, but we do set a context */
- FunctionCallInfoData fcinfo;
- TriggerData trigdata;
-
- MemSet(&fcinfo, 0, sizeof(fcinfo));
- /* We assume RI_FKey_check_ins won't look at flinfo... */
-
- trigdata.type = T_TriggerData;
- trigdata.tg_event = TRIGGER_EVENT_INSERT | TRIGGER_EVENT_ROW;
- trigdata.tg_relation = rel;
- trigdata.tg_trigtuple = tuple;
- trigdata.tg_newtuple = NULL;
- trigdata.tg_trigger = &trig;
-
- fcinfo.context = (Node *) &trigdata;
+ FkConstraint *fkconstraint = (FkConstraint *) newConstraint;
+ Relation pkrel;
+ HeapScanDesc scan;
+ HeapTuple tuple;
+ Trigger trig;
+ List *list;
+ int count;
+
+ if (is_temp_rel_name(fkconstraint->pktable_name) &&
+ !is_temp_rel_name(relationName))
+ elog(ERROR, "ALTER TABLE / ADD CONSTRAINT: Unable to reference temporary table from permanent table constraint.");
+
+ /*
+ * Grab an exclusive lock on the pk table, so that
+ * someone doesn't delete rows out from under us.
+ */
+
+ pkrel = heap_openr(fkconstraint->pktable_name, AccessExclusiveLock);
+ if (pkrel->rd_rel->relkind != RELKIND_RELATION)
+ elog(ERROR, "referenced table \"%s\" not a relation",
+ fkconstraint->pktable_name);
+ heap_close(pkrel, NoLock);
+
+ /*
+ * First we check for limited correctness of the
+ * constraint.
+ *
+ * NOTE: we assume parser has already checked for
+ * existence of an appropriate unique index on the
+ * referenced relation, and that the column datatypes
+ * are comparable.
+ *
+ * Scan through each tuple, calling the RI_FKey_Match_Ins
+ * (insert trigger) as if that tuple had just been
+ * inserted. If any of those fail, it should
+ * elog(ERROR) and that's that.
+ */
+
+ trig.tgoid = 0;
+ if (fkconstraint->constr_name)
+ trig.tgname = fkconstraint->constr_name;
+ else
+ trig.tgname = "<unknown>";
+ trig.tgfoid = 0;
+ trig.tgtype = 0;
+ trig.tgenabled = TRUE;
+ trig.tgisconstraint = TRUE;
+ trig.tginitdeferred = FALSE;
+ trig.tgdeferrable = FALSE;
+
+ trig.tgargs = (char **) palloc(
+ sizeof(char *) * (4 + length(fkconstraint->fk_attrs)
+ + length(fkconstraint->pk_attrs)));
- RI_FKey_check_ins(&fcinfo);
+ if (fkconstraint->constr_name)
+ trig.tgargs[0] = fkconstraint->constr_name;
+ else
+ trig.tgargs[0] = "<unknown>";
+ trig.tgargs[1] = (char *) relationName;
+ trig.tgargs[2] = fkconstraint->pktable_name;
+ trig.tgargs[3] = fkconstraint->match_type;
+ count = 4;
+ foreach(list, fkconstraint->fk_attrs)
+ {
+ Ident *fk_at = lfirst(list);
+
+ trig.tgargs[count] = fk_at->name;
+ count += 2;
+ }
+ count = 5;
+ foreach(list, fkconstraint->pk_attrs)
+ {
+ Ident *pk_at = lfirst(list);
+
+ trig.tgargs[count] = pk_at->name;
+ count += 2;
+ }
+ trig.tgnargs = count - 1;
+
+ scan = heap_beginscan(rel, false, SnapshotNow, 0, NULL);
+
+ while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
+ {
+ /* Make a call to the check function */
+
+ /*
+ * No parameters are passed, but we do set a
+ * context
+ */
+ FunctionCallInfoData fcinfo;
+ TriggerData trigdata;
+
+ MemSet(&fcinfo, 0, sizeof(fcinfo));
+
+ /*
+ * We assume RI_FKey_check_ins won't look at
+ * flinfo...
+ */
+
+ trigdata.type = T_TriggerData;
+ trigdata.tg_event = TRIGGER_EVENT_INSERT | TRIGGER_EVENT_ROW;
+ trigdata.tg_relation = rel;
+ trigdata.tg_trigtuple = tuple;
+ trigdata.tg_newtuple = NULL;
+ trigdata.tg_trigger = &trig;
+
+ fcinfo.context = (Node *) &trigdata;
+
+ RI_FKey_check_ins(&fcinfo);
+ }
+ heap_endscan(scan);
+
+ pfree(trig.tgargs);
+ break;
}
- heap_endscan(scan);
-
- pfree(trig.tgargs);
- break;
- }
- default:
- elog(ERROR, "ALTER TABLE / ADD CONSTRAINT unable to determine type of constraint passed");
- }
+ default:
+ elog(ERROR, "ALTER TABLE / ADD CONSTRAINT unable to determine type of constraint passed");
+ }
}
/* Close rel, but keep lock till commit */
@@ -1614,7 +1662,7 @@ AlterTableDropConstraint(const char *relationName,
bool inh, const char *constrName,
int behavior)
{
- Relation rel;
+ Relation rel;
int deleted;
#ifndef NO_SECURITY
@@ -1622,14 +1670,16 @@ AlterTableDropConstraint(const char *relationName,
elog(ERROR, "ALTER TABLE: permission denied");
#endif
- /* We don't support CASCADE yet - in fact, RESTRICT
- * doesn't work to the spec either! */
+ /*
+ * We don't support CASCADE yet - in fact, RESTRICT doesn't work to
+ * the spec either!
+ */
if (behavior == CASCADE)
elog(ERROR, "ALTER TABLE / DROP CONSTRAINT does not support the CASCADE keyword");
/*
- * Acquire an exclusive lock on the target relation for
- * the duration of the operation.
+ * Acquire an exclusive lock on the target relation for the duration
+ * of the operation.
*/
rel = heap_openr(relationName, AccessExclusiveLock);
@@ -1640,9 +1690,10 @@ AlterTableDropConstraint(const char *relationName,
relationName);
/*
- * Since all we have is the name of the constraint, we have to look through
- * all catalogs that could possibly contain a constraint for this relation.
- * We also keep a count of the number of constraints removed.
+ * Since all we have is the name of the constraint, we have to look
+ * through all catalogs that could possibly contain a constraint for
+ * this relation. We also keep a count of the number of constraints
+ * removed.
*/
deleted = 0;
@@ -1654,7 +1705,8 @@ AlterTableDropConstraint(const char *relationName,
deleted += RemoveCheckConstraint(rel, constrName, inh);
/*
- * Now we remove NULL, UNIQUE, PRIMARY KEY and FOREIGN KEY constraints.
+ * Now we remove NULL, UNIQUE, PRIMARY KEY and FOREIGN KEY
+ * constraints.
*
* Unimplemented.
*/
@@ -1887,10 +1939,11 @@ AlterTableCreateToastTable(const char *relationName, bool silent)
* Create unique index on chunk_id, chunk_seq.
*
* NOTE: the tuple toaster could actually function with a single-column
- * index on chunk_id only. However, it couldn't be unique then. We
- * want it to be unique as a check against the possibility of duplicate
- * TOAST chunk OIDs. Too, the index might be a little more efficient this
- * way, since btree isn't all that happy with large numbers of equal keys.
+ * index on chunk_id only. However, it couldn't be unique then. We
+ * want it to be unique as a check against the possibility of
+ * duplicate TOAST chunk OIDs. Too, the index might be a little more
+ * efficient this way, since btree isn't all that happy with large
+ * numbers of equal keys.
*/
indexInfo = makeNode(IndexInfo);
@@ -1910,9 +1963,9 @@ AlterTableCreateToastTable(const char *relationName, bool silent)
true, true);
/*
- * Update toast rel's pg_class entry to show that it has an index.
- * The index OID is stored into the reltoastidxid field for
- * easy access by the tuple toaster.
+ * Update toast rel's pg_class entry to show that it has an index. The
+ * index OID is stored into the reltoastidxid field for easy access by
+ * the tuple toaster.
*/
setRelhasindex(toast_relid, true, true, toast_idxid);
@@ -1990,7 +2043,7 @@ needs_toast_table(Relation rel)
MAXALIGN(data_length);
return (tuple_length > TOAST_TUPLE_THRESHOLD);
}
-
+
/*
*
* LOCK TABLE
@@ -1999,38 +2052,39 @@ needs_toast_table(Relation rel)
void
LockTableCommand(LockStmt *lockstmt)
{
- List *p;
- Relation rel;
-
- /* Iterate over the list and open, lock, and close the relations
- one at a time
+ List *p;
+ Relation rel;
+
+ /*
+ * Iterate over the list and open, lock, and close the relations one
+ * at a time
*/
- foreach(p, lockstmt->rellist)
- {
- char* relname = strVal(lfirst(p));
- int aclresult;
-
- rel = heap_openr(relname, NoLock);
-
- if (rel->rd_rel->relkind != RELKIND_RELATION)
- elog(ERROR, "LOCK TABLE: %s is not a table",
- relname);
-
- if (lockstmt->mode == AccessShareLock)
- aclresult = pg_aclcheck(relname, GetUserId(),
- ACL_SELECT);
- else
- aclresult = pg_aclcheck(relname, GetUserId(),
- ACL_UPDATE | ACL_DELETE);
+ foreach(p, lockstmt->rellist)
+ {
+ char *relname = strVal(lfirst(p));
+ int aclresult;
- if (aclresult != ACLCHECK_OK)
- elog(ERROR, "LOCK TABLE: permission denied");
+ rel = heap_openr(relname, NoLock);
- LockRelation(rel, lockstmt->mode);
-
- heap_close(rel, NoLock); /* close rel, keep lock */
- }
+ if (rel->rd_rel->relkind != RELKIND_RELATION)
+ elog(ERROR, "LOCK TABLE: %s is not a table",
+ relname);
+
+ if (lockstmt->mode == AccessShareLock)
+ aclresult = pg_aclcheck(relname, GetUserId(),
+ ACL_SELECT);
+ else
+ aclresult = pg_aclcheck(relname, GetUserId(),
+ ACL_UPDATE | ACL_DELETE);
+
+ if (aclresult != ACLCHECK_OK)
+ elog(ERROR, "LOCK TABLE: permission denied");
+
+ LockRelation(rel, lockstmt->mode);
+
+ heap_close(rel, NoLock); /* close rel, keep lock */
+ }
}
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 14e591288a2..647cb55b7e7 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -7,7 +7,7 @@
* Copyright (c) 1999-2001, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.33 2001/10/03 20:54:20 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.34 2001/10/25 05:49:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -332,9 +332,10 @@ CommentRelation(int reltype, char *relname, char *comment)
elog(ERROR, "you are not permitted to comment on class '%s'", relname);
/*
- * Open the relation. We do this mainly to acquire a lock that ensures
- * no one else drops the relation before we commit. (If they did, they'd
- * fail to remove the entry we are about to make in pg_description.)
+ * Open the relation. We do this mainly to acquire a lock that
+ * ensures no one else drops the relation before we commit. (If they
+ * did, they'd fail to remove the entry we are about to make in
+ * pg_description.)
*
* heap_openr will complain if it's an index, so we must do this:
*/
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index ce7ea9fd6d3..7f1e288fab9 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.141 2001/08/10 18:57:34 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.142 2001/10/25 05:49:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -76,7 +76,6 @@ static StringInfoData attribute_buf;
#ifdef MULTIBYTE
static int client_encoding;
static int server_encoding;
-
#endif
@@ -209,7 +208,6 @@ CopyDonePeek(FILE *fp, int c, int pickup)
{
if (pickup)
{
-
/*
* We want to pick it up - just receive again into dummy
* buffer
@@ -240,8 +238,8 @@ CopyDonePeek(FILE *fp, int c, int pickup)
* (<from> = TRUE means we are inserting into the table.)
*
* If <pipe> is false, transfer is between the table and the file named
- * <filename>. Otherwise, transfer is between the table and our regular
- * input/output stream. The latter could be either stdin/stdout or a
+ * <filename>. Otherwise, transfer is between the table and our regular
+ * input/output stream. The latter could be either stdin/stdout or a
* socket, depending on whether we're running under Postmaster control.
*
* Iff <binary>, unload or reload in the binary format, as opposed to the
@@ -257,7 +255,7 @@ CopyDonePeek(FILE *fp, int c, int pickup)
* NULL values as <null_print>.
*
* When loading in the text format from an input stream (as opposed to
- * a file), recognize a "." on a line by itself as EOF. Also recognize
+ * a file), recognize a "." on a line by itself as EOF. Also recognize
* a stream EOF. When unloading in the text format to an output stream,
* write a "." on a line by itself at the end of the data.
*
@@ -534,7 +532,6 @@ CopyTo(Relation rel, bool binary, bool oids, FILE *fp,
}
else
{
-
/*
* If we have a toasted datum, forcibly detoast it to
* avoid memory leakage inside the type's output routine
@@ -1197,7 +1194,6 @@ CopyAttributeOut(FILE *fp, char *server_string, char *delim)
char *string_start;
int mblen;
int i;
-
#endif
#ifdef MULTIBYTE
diff --git a/src/backend/commands/creatinh.c b/src/backend/commands/creatinh.c
index 1c17714eb45..0c1e7268d7f 100644
--- a/src/backend/commands/creatinh.c
+++ b/src/backend/commands/creatinh.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.80 2001/08/16 20:38:53 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/creatinh.c,v 1.81 2001/10/25 05:49:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,7 +37,7 @@ static List *MergeAttributes(List *schema, List *supers, bool istemp,
List **supOids, List **supconstr, bool *supHasOids);
static bool change_varattnos_of_a_node(Node *node, const AttrNumber *newattno);
static void StoreCatalogInheritance(Oid relationId, List *supers);
-static int findAttrByName(const char *attributeName, List *schema);
+static int findAttrByName(const char *attributeName, List *schema);
static void setRelhassubclassInRelation(Oid relationId, bool relhassubclass);
@@ -74,7 +74,7 @@ DefineRelation(CreateStmt *stmt, char relkind)
* including inherited attributes.
*/
schema = MergeAttributes(schema, stmt->inhRelnames, stmt->istemp,
- &inheritOids, &old_constraints, &parentHasOids);
+ &inheritOids, &old_constraints, &parentHasOids);
numberOfAttributes = length(schema);
if (numberOfAttributes <= 0)
@@ -305,7 +305,8 @@ MergeAttributes(List *schema, List *supers, bool istemp,
List *constraints = NIL;
bool parentHasOids = false;
bool have_bogus_defaults = false;
- char *bogus_marker = "Bogus!"; /* marks conflicting defaults */
+ char *bogus_marker = "Bogus!"; /* marks conflicting
+ * defaults */
int child_attno;
/*
@@ -329,6 +330,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
coldef->colname);
}
}
+
/*
* Reject duplicate names in the list of parents, too.
*/
@@ -346,7 +348,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
/*
* Scan the parents left-to-right, and merge their attributes to form
- * a list of inherited attributes (inhSchema). Also check to see if
+ * a list of inherited attributes (inhSchema). Also check to see if
* we need to inherit an OID column.
*/
child_attno = 0;
@@ -387,7 +389,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
* the attributes of this parent table. (They are not the same
* for parents after the first one.)
*/
- newattno = (AttrNumber *) palloc(tupleDesc->natts*sizeof(AttrNumber));
+ newattno = (AttrNumber *) palloc(tupleDesc->natts * sizeof(AttrNumber));
for (parent_attno = 1; parent_attno <= tupleDesc->natts;
parent_attno++)
@@ -420,8 +422,8 @@ MergeAttributes(List *schema, List *supers, bool istemp,
if (exist_attno > 0)
{
/*
- * Yes, try to merge the two column definitions.
- * They must have the same type and typmod.
+ * Yes, try to merge the two column definitions. They must
+ * have the same type and typmod.
*/
elog(NOTICE, "CREATE TABLE: merging multiple inherited definitions of attribute \"%s\"",
attributeName);
@@ -429,7 +431,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
if (strcmp(def->typename->name, attributeType) != 0 ||
def->typename->typmod != attribute->atttypmod)
elog(ERROR, "CREATE TABLE: inherited attribute \"%s\" type conflict (%s and %s)",
- attributeName, def->typename->name, attributeType);
+ attributeName, def->typename->name, attributeType);
/* Merge of NOT NULL constraints = OR 'em together */
def->is_not_null |= attribute->attnotnull;
/* Default and other constraints are handled below */
@@ -453,6 +455,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
inhSchema = lappend(inhSchema, def);
newattno[parent_attno - 1] = ++child_attno;
}
+
/*
* Copy default if any
*/
@@ -474,15 +477,17 @@ MergeAttributes(List *schema, List *supers, bool istemp,
}
}
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.
*
- * If we already had a default from some prior parent,
- * check to see if they are the same. If so, no problem;
- * if not, mark the column as having a bogus default.
- * Below, we will complain if the bogus default isn't
- * overridden by the child schema.
+ * If we already had a default from some prior parent, check
+ * to see if they are the same. If so, no problem; if
+ * not, mark the column as having a bogus default. Below,
+ * we will complain if the bogus default isn't overridden
+ * by the child schema.
*/
Assert(def->raw_default == NULL);
if (def->cooked_default == NULL)
@@ -494,6 +499,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
}
}
}
+
/*
* Now copy the constraints of this parent, adjusting attnos using
* the completed newattno[] map
@@ -555,8 +561,8 @@ MergeAttributes(List *schema, List *supers, bool istemp,
ColumnDef *def;
/*
- * Yes, try to merge the two column definitions.
- * They must have the same type and typmod.
+ * Yes, try to merge the two column definitions. They must
+ * have the same type and typmod.
*/
elog(NOTICE, "CREATE TABLE: merging attribute \"%s\" with inherited definition",
attributeName);
@@ -564,7 +570,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
if (strcmp(def->typename->name, attributeType) != 0 ||
def->typename->typmod != newdef->typename->typmod)
elog(ERROR, "CREATE TABLE: attribute \"%s\" type conflict (%s and %s)",
- attributeName, def->typename->name, attributeType);
+ attributeName, def->typename->name, attributeType);
/* Merge of NOT NULL constraints = OR 'em together */
def->is_not_null |= newdef->is_not_null;
/* If new def has a default, override previous default */
@@ -630,7 +636,6 @@ change_varattnos_walker(Node *node, const AttrNumber *newattno)
if (var->varlevelsup == 0 && var->varno == 1 &&
var->varattno > 0)
{
-
/*
* ??? the following may be a problem when the node is
* multiply referenced though stringToNode() doesn't create
@@ -783,7 +788,6 @@ again:
}
if (found)
{
-
/*
* found a later duplicate, so remove this entry.
*/
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index 88b01fd91e9..92baacb72d5 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.80 2001/09/06 04:57:28 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.81 2001/10/25 05:49:24 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,7 +37,7 @@
#include "utils/syscache.h"
#ifdef MULTIBYTE
-#include "mb/pg_wchar.h" /* encoding check */
+#include "mb/pg_wchar.h" /* encoding check */
#endif
@@ -148,11 +148,12 @@ createdb(const char *dbname, const char *dbpath,
#ifdef MULTIBYTE
/* Some encodings are client only */
- if (!PG_VALID_BE_ENCODING( encoding ))
+ if (!PG_VALID_BE_ENCODING(encoding))
elog(ERROR, "CREATE DATABASE: invalid backend encoding");
#else
Assert(encoding == 0); /* zero is PG_SQL_ASCII */
#endif
+
/*
* Preassign OID for pg_database tuple, so that we can compute db
* path.
diff --git a/src/backend/commands/define.c b/src/backend/commands/define.c
index 02b7b0c04b3..334094fd471 100644
--- a/src/backend/commands/define.c
+++ b/src/backend/commands/define.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/define.c,v 1.62 2001/10/13 01:35:25 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/define.c,v 1.63 2001/10/25 05:49:25 momjian Exp $
*
* DESCRIPTION
* The "DefineFoo" routines take the parse tree and pick out the
@@ -64,7 +64,7 @@ static void
case_translate_language_name(const char *input, char *output)
{
/*
- * Translate the input language name to lower case, except if it's "C",
+ * Translate the input language name to lower case, except if it's "C",
* translate to upper case.
*/
int i;
@@ -85,8 +85,8 @@ compute_return_type(TypeName *returnType,
char **prorettype_p, bool *returnsSet_p)
{
/*
- * Examine the "returns" clause returnType of the CREATE FUNCTION statement
- * and return information about it as *prorettype_p and *returnsSet.
+ * Examine the "returns" clause returnType of the CREATE FUNCTION statement
+ * and return information about it as *prorettype_p and *returnsSet.
*/
*prorettype_p = TypeNameToInternalName(returnType);
*returnsSet_p = returnType->setof;
@@ -100,26 +100,26 @@ compute_full_attributes(List *parameters,
bool *canCache_p, bool *isStrict_p)
{
/*-------------
- * Interpret the parameters *parameters and return their contents as
- * *byte_pct_p, etc.
+ * Interpret the parameters *parameters and return their contents as
+ * *byte_pct_p, etc.
*
- * These parameters supply optional information about a function.
- * All have defaults if not specified.
+ * These parameters supply optional information about a function.
+ * All have defaults if not specified.
*
- * Note: currently, only two of these parameters actually do anything:
+ * Note: currently, only two of these parameters actually do anything:
*
- * * canCache means the optimizer's constant-folder is allowed to
- * pre-evaluate the function when all its inputs are constants.
+ * * canCache means the optimizer's constant-folder is allowed to
+ * pre-evaluate the function when all its inputs are constants.
*
- * * isStrict means the function should not be called when any NULL
- * inputs are present; instead a NULL result value should be assumed.
+ * * isStrict means the function should not be called when any NULL
+ * inputs are present; instead a NULL result value should be assumed.
*
- * The other four parameters are not used anywhere. They used to be
- * used in the "expensive functions" optimizer, but that's been dead code
- * for a long time.
+ * The other four parameters are not used anywhere. They used to be
+ * used in the "expensive functions" optimizer, but that's been dead code
+ * for a long time.
*
- * Since canCache and isStrict are useful for any function, we now allow
- * attributes to be supplied for all functions regardless of language.
+ * Since canCache and isStrict are useful for any function, we now allow
+ * attributes to be supplied for all functions regardless of language.
*------------
*/
List *pl;
@@ -142,7 +142,6 @@ compute_full_attributes(List *parameters,
*isStrict_p = true;
else if (strcasecmp(param->defname, "trusted") == 0)
{
-
/*
* we don't have untrusted functions any more. The 4.2
* implementation is lousy anyway so I took it out. -ay 10/94
@@ -183,7 +182,6 @@ interpret_AS_clause(const char *languageName, const List *as,
if (strcmp(languageName, "C") == 0)
{
-
/*
* For "C" language, store the file name in probin and, when
* given, the link symbol name in prosrc.
@@ -358,7 +356,7 @@ DefineOperator(char *oprName,
List *parameters)
{
uint16 precedence = 0; /* operator precedence */
- bool canHash = false;/* operator hashes */
+ bool canHash = false; /* operator hashes */
bool isLeftAssociative = true; /* operator is left
* associative */
char *functionName = NULL; /* function for operator */
@@ -369,7 +367,7 @@ DefineOperator(char *oprName,
char *negatorName = NULL; /* optional negator operator name */
char *restrictionName = NULL; /* optional restrict. sel.
* procedure */
- char *joinName = NULL;/* optional join sel. procedure name */
+ char *joinName = NULL; /* optional join sel. procedure name */
char *sortName1 = NULL; /* optional first sort operator */
char *sortName2 = NULL; /* optional second sort operator */
List *pl;
@@ -534,8 +532,8 @@ DefineAggregate(char *aggName, List *parameters)
void
DefineType(char *typeName, List *parameters)
{
- int16 internalLength = -1; /* int2 */
- int16 externalLength = -1; /* int2 */
+ int16 internalLength = -1; /* int2 */
+ int16 externalLength = -1; /* int2 */
char *elemName = NULL;
char *inputName = NULL;
char *outputName = NULL;
@@ -546,7 +544,7 @@ DefineType(char *typeName, List *parameters)
char delimiter = DEFAULT_TYPDELIM;
char *shadow_type;
List *pl;
- char alignment = 'i'; /* default alignment */
+ char alignment = 'i'; /* default alignment */
char storage = 'p'; /* default TOAST storage method */
/*
@@ -591,9 +589,10 @@ DefineType(char *typeName, List *parameters)
char *a = defGetString(defel);
/*
- * Note: if argument was an unquoted identifier, parser will have
- * applied xlateSqlType() to it, so be prepared to recognize
- * translated type names as well as the nominal form.
+ * Note: if argument was an unquoted identifier, parser will
+ * have applied xlateSqlType() to it, so be prepared to
+ * recognize translated type names as well as the nominal
+ * form.
*/
if (strcasecmp(a, "double") == 0)
alignment = 'd';
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 91282ffc3f6..c14d4ce3e5a 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994-5, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.66 2001/09/18 01:59:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.67 2001/10/25 05:49:25 momjian Exp $
*
*/
@@ -114,8 +114,8 @@ ExplainOneQuery(Query *query, bool verbose, bool analyze, CommandDest dest)
struct timeval endtime;
/*
- * Set up the instrumentation for the top node.
- * This will cascade during plan initialisation
+ * Set up the instrumentation for the top node. This will cascade
+ * during plan initialisation
*/
plan->instrument = InstrAlloc();
@@ -124,7 +124,7 @@ ExplainOneQuery(Query *query, bool verbose, bool analyze, CommandDest dest)
CommandCounterIncrement();
gettimeofday(&endtime, NULL);
- endtime.tv_sec -= starttime.tv_sec;
+ endtime.tv_sec -= starttime.tv_sec;
endtime.tv_usec -= starttime.tv_usec;
while (endtime.tv_usec < 0)
{
@@ -328,9 +328,9 @@ explain_outNode(StringInfo str, Plan *plan, int indent, ExplainState *es)
plan->startup_cost, plan->total_cost,
plan->plan_rows, plan->plan_width);
- if ( plan->instrument && plan->instrument->nloops > 0 )
+ if (plan->instrument && plan->instrument->nloops > 0)
{
- double nloops = plan->instrument->nloops;
+ double nloops = plan->instrument->nloops;
appendStringInfo(str, " (actual time=%.2f..%.2f rows=%.0f loops=%.0f)",
1000.0 * plan->instrument->startup / nloops,
@@ -442,7 +442,7 @@ explain_outNode(StringInfo str, Plan *plan, int indent, ExplainState *es)
static StringInfo
Explain_PlanToString(Plan *plan, ExplainState *es)
{
- StringInfo str = makeStringInfo();
+ StringInfo str = makeStringInfo();
if (plan != NULL)
explain_outNode(str, plan, 0, es);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index a02f399f12e..f6eb6471c0a 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.59 2001/10/24 09:28:31 inoue Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.60 2001/10/25 05:49:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -49,7 +49,7 @@ static void NormIndexAttrs(IndexInfo *indexInfo, Oid *classOidP,
char *accessMethodName, Oid accessMethodId);
static Oid GetAttrOpClass(IndexElem *attribute, Oid attrType,
char *accessMethodName, Oid accessMethodId);
-static Oid GetDefaultOpClass(Oid attrType, Oid accessMethodId);
+static Oid GetDefaultOpClass(Oid attrType, Oid accessMethodId);
/*
* DefineIndex
@@ -97,7 +97,8 @@ DefineIndex(char *heapRelationName,
heapRelationName);
/*
- * look up the access method, verify it can handle the requested features
+ * look up the access method, verify it can handle the requested
+ * features
*/
tuple = SearchSysCache(AMNAME,
PointerGetDatum(accessMethodName),
@@ -108,18 +109,18 @@ DefineIndex(char *heapRelationName,
accessMethodId = tuple->t_data->t_oid;
accessMethodForm = (Form_pg_am) GETSTRUCT(tuple);
- if (unique && ! accessMethodForm->amcanunique)
+ if (unique && !accessMethodForm->amcanunique)
elog(ERROR, "DefineIndex: access method \"%s\" does not support UNIQUE indexes",
accessMethodName);
- if (numberOfAttributes > 1 && ! accessMethodForm->amcanmulticol)
+ if (numberOfAttributes > 1 && !accessMethodForm->amcanmulticol)
elog(ERROR, "DefineIndex: access method \"%s\" does not support multi-column indexes",
accessMethodName);
ReleaseSysCache(tuple);
/*
- * Convert the partial-index predicate from parsetree form to
- * an implicit-AND qual expression, for easier evaluation at runtime.
+ * Convert the partial-index predicate from parsetree form to an
+ * implicit-AND qual expression, for easier evaluation at runtime.
* While we are at it, we reduce it to a canonical (CNF or DNF) form
* to simplify the task of proving implications.
*/
@@ -196,7 +197,7 @@ DefineIndex(char *heapRelationName,
* (via the given range table) only to the given base relation oid.
*
* This used to also constrain the form of the predicate to forms that
- * indxpath.c could do something with. However, that seems overly
+ * indxpath.c could do something with. However, that seems overly
* restrictive. One useful application of partial indexes is to apply
* a UNIQUE constraint across a subset of a table, and in that scenario
* any evaluatable predicate will work. So accept any predicate here
@@ -208,11 +209,12 @@ CheckPredicate(List *predList, List *rangeTable, Oid baseRelOid)
{
if (length(rangeTable) != 1 || getrelid(1, rangeTable) != baseRelOid)
elog(ERROR,
- "Partial-index predicates may refer only to the base relation");
+ "Partial-index predicates may refer only to the base relation");
/*
* We don't currently support generation of an actual query plan for a
- * predicate, only simple scalar expressions; hence these restrictions.
+ * predicate, only simple scalar expressions; hence these
+ * restrictions.
*/
if (contain_subplans((Node *) predList))
elog(ERROR, "Cannot use subselect in index predicate");
@@ -240,7 +242,7 @@ FuncIndexArgs(IndexInfo *indexInfo,
List *arglist;
int nargs = 0;
int i;
- FuncDetailCode fdresult;
+ FuncDetailCode fdresult;
Oid funcid;
Oid rettype;
bool retset;
@@ -309,9 +311,9 @@ FuncIndexArgs(IndexInfo *indexInfo,
/*
* Require that the function be marked cachable. Using a noncachable
- * function for a functional index is highly questionable, 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.
+ * function for a functional index is highly questionable, 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 (!func_iscachable(funcid))
elog(ERROR, "DefineIndex: index function must be marked iscachable");
@@ -431,11 +433,11 @@ GetDefaultOpClass(Oid attrType, Oid accessMethodId)
* (either exactly or binary-compatibly, but prefer an exact match).
*
* We could find more than one binary-compatible match, in which case we
- * require the user to specify which one he wants. If we find more than
- * one exact match, then someone put bogus entries in pg_opclass.
+ * require the user to specify which one he wants. If we find more
+ * than one exact match, then someone put bogus entries in pg_opclass.
*
- * We could use an indexscan here, but since pg_opclass is small
- * and a scan on opcamid won't be very selective, the indexscan would
+ * We could use an indexscan here, but since pg_opclass is small and a
+ * scan on opcamid won't be very selective, the indexscan would
* probably actually be slower than heapscan.
*/
ScanKeyEntryInitialize(&entry[0], 0x0,
@@ -612,7 +614,7 @@ ReindexDatabase(const char *dbname, bool force, bool all)
if (strcmp(dbname, DatabaseName) != 0)
elog(ERROR, "REINDEX DATABASE: Can be executed only on the currently open database.");
- if (! (superuser() || is_dbadmin(MyDatabaseId)))
+ if (!(superuser() || is_dbadmin(MyDatabaseId)))
elog(ERROR, "REINDEX DATABASE: Permission denied.");
/*
diff --git a/src/backend/commands/remove.c b/src/backend/commands/remove.c
index 4e46f7f9d20..37a338ff961 100644
--- a/src/backend/commands/remove.c
+++ b/src/backend/commands/remove.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.63 2001/10/03 20:54:20 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.64 2001/10/25 05:49:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -227,7 +227,6 @@ AttributeAndRelationRemove(Oid typeOid)
}
heap_close(rel, RowExclusiveLock);
}
-
#endif /* NOTYET */
/*
diff --git a/src/backend/commands/rename.c b/src/backend/commands/rename.c
index 8d4b05567f3..c65cfcc5519 100644
--- a/src/backend/commands/rename.c
+++ b/src/backend/commands/rename.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.58 2001/10/08 18:40:04 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.59 2001/10/25 05:49:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -167,7 +167,8 @@ renameatt(char *relname,
heap_freetuple(atttup);
/*
- * Update column names of indexes that refer to the column being renamed.
+ * Update column names of indexes that refer to the column being
+ * renamed.
*/
indexoidlist = RelationGetIndexList(targetrelation);
@@ -177,9 +178,8 @@ renameatt(char *relname,
HeapTuple indextup;
/*
- * First check to see if index is a functional index.
- * If so, its column name is a function name and shouldn't
- * be renamed here.
+ * First check to see if index is a functional index. If so, its
+ * column name is a function name and shouldn't be renamed here.
*/
indextup = SearchSysCache(INDEXRELID,
ObjectIdGetDatum(indexoid),
@@ -192,9 +192,10 @@ renameatt(char *relname,
continue;
}
ReleaseSysCache(indextup);
+
/*
- * Okay, look to see if any column name of the index matches
- * the old attribute name.
+ * Okay, look to see if any column name of the index matches the
+ * old attribute name.
*/
atttup = SearchSysCacheCopy(ATTNAME,
ObjectIdGetDatum(indexoid),
@@ -206,20 +207,20 @@ renameatt(char *relname,
/*
* Update the (copied) attribute tuple.
*/
- StrNCpy(NameStr(((Form_pg_attribute) GETSTRUCT(atttup))->attname),
- newattname, NAMEDATALEN);
+ StrNCpy(NameStr(((Form_pg_attribute) GETSTRUCT(atttup))->attname),
+ newattname, NAMEDATALEN);
- simple_heap_update(attrelation, &atttup->t_self, atttup);
+ simple_heap_update(attrelation, &atttup->t_self, atttup);
/* keep system catalog indices current */
- {
- Relation irelations[Num_pg_attr_indices];
-
- CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations);
- CatalogIndexInsert(irelations, Num_pg_attr_indices, attrelation, atttup);
- CatalogCloseIndices(Num_pg_attr_indices, irelations);
- }
- heap_freetuple(atttup);
+ {
+ Relation irelations[Num_pg_attr_indices];
+
+ CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations);
+ CatalogIndexInsert(irelations, Num_pg_attr_indices, attrelation, atttup);
+ CatalogCloseIndices(Num_pg_attr_indices, irelations);
+ }
+ heap_freetuple(atttup);
}
freeList(indexoidlist);
@@ -332,8 +333,8 @@ renamerel(const char *oldrelname, const char *newrelname)
*/
if (relkind == RELKIND_VIEW)
{
- char *oldrulename,
- *newrulename;
+ char *oldrulename,
+ *newrulename;
oldrulename = MakeRetrieveViewRuleName(oldrelname);
newrulename = MakeRetrieveViewRuleName(newrelname);
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index 80e17caaa80..10954912e7b 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.64 2001/09/19 09:48:42 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/sequence.c,v 1.65 2001/10/25 05:49:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -36,9 +36,9 @@
#else
#define SEQ_MAXVALUE ((int64) 0x7FFFFFFFFFFFFFFF)
#endif
-#else /* INT64_IS_BUSTED */
+#else /* INT64_IS_BUSTED */
#define SEQ_MAXVALUE ((int64) 0x7FFFFFFF)
-#endif /* INT64_IS_BUSTED */
+#endif /* INT64_IS_BUSTED */
#define SEQ_MINVALUE (-SEQ_MAXVALUE)
@@ -204,17 +204,17 @@ DefineSequence(CreateSeqStmt *seq)
heap_insert(rel, tuple);
/*
- * After crash REDO of heap_insert above would re-init page and
- * our magic number would be lost. We have to log sequence creation.
- * This means two log records instead of one -:(
+ * After crash REDO of heap_insert above would re-init page and our
+ * magic number would be lost. We have to log sequence creation. This
+ * means two log records instead of one -:(
*/
LockBuffer(buf, BUFFER_LOCK_EXCLUSIVE);
START_CRIT_SECTION();
{
- xl_seq_rec xlrec;
- XLogRecPtr recptr;
- XLogRecData rdata[2];
- Form_pg_sequence newseq = (Form_pg_sequence) GETSTRUCT(tuple);
+ xl_seq_rec xlrec;
+ XLogRecPtr recptr;
+ XLogRecData rdata[2];
+ Form_pg_sequence newseq = (Form_pg_sequence) GETSTRUCT(tuple);
/* We do not log first nextval call, so "advance" sequence here */
newseq->is_called = true;
@@ -582,12 +582,12 @@ get_seq_name(text *seqin)
if (strlen(seqname) >= NAMEDATALEN)
{
#ifdef MULTIBYTE
- int len;
+ int len;
- len = pg_mbcliplen(seqname, rawlen, NAMEDATALEN-1);
+ len = pg_mbcliplen(seqname, rawlen, NAMEDATALEN - 1);
seqname[len] = '\0';
#else
- seqname[NAMEDATALEN-1] = '\0';
+ seqname[NAMEDATALEN - 1] = '\0';
#endif
}
@@ -658,7 +658,6 @@ init_sequence(char *caller, char *name)
if (elm != (SeqTable) NULL)
{
-
/*
* We are using a seqtable entry left over from a previous xact;
* must check for relid change.
@@ -674,7 +673,6 @@ init_sequence(char *caller, char *name)
}
else
{
-
/*
* Time to make a new seqtable entry. These entries live as long
* as the backend does, so we use plain malloc for them.
@@ -713,7 +711,7 @@ CloseSequences(void)
for (elm = seqtab; elm != (SeqTable) NULL; elm = elm->next)
{
rel = elm->rel;
- if (rel != (Relation) NULL) /* opened in current xact */
+ if (rel != (Relation) NULL) /* opened in current xact */
{
elm->rel = (Relation) NULL;
heap_close(rel, AccessShareLock);
@@ -737,17 +735,17 @@ init_params(CreateSeqStmt *seq, Form_pg_sequence new)
{
DefElem *defel = (DefElem *) lfirst(option);
- if (strcmp(defel->defname, "increment")==0)
+ if (strcmp(defel->defname, "increment") == 0)
increment_by = defel;
- else if (strcmp(defel->defname, "start")==0)
+ else if (strcmp(defel->defname, "start") == 0)
last_value = defel;
- else if (strcmp(defel->defname, "maxvalue")==0)
+ else if (strcmp(defel->defname, "maxvalue") == 0)
max_value = defel;
- else if (strcmp(defel->defname, "minvalue")==0)
+ else if (strcmp(defel->defname, "minvalue") == 0)
min_value = defel;
- else if (strcmp(defel->defname, "cache")==0)
+ else if (strcmp(defel->defname, "cache") == 0)
cache_value = defel;
- else if (strcmp(defel->defname, "cycle")==0)
+ else if (strcmp(defel->defname, "cycle") == 0)
{
if (defel->arg != (Node *) NULL)
elog(ERROR, "DefineSequence: CYCLE ??");
@@ -768,7 +766,7 @@ init_params(CreateSeqStmt *seq, Form_pg_sequence new)
if (new->increment_by > 0)
new->max_value = SEQ_MAXVALUE; /* ascending seq */
else
- new->max_value = -1; /* descending seq */
+ new->max_value = -1; /* descending seq */
}
else
new->max_value = get_param(max_value);
@@ -822,12 +820,12 @@ get_param(DefElem *def)
return (int64) intVal(def->arg);
/*
- * Values too large for int4 will be represented as Float constants
- * by the lexer. Accept these if they are valid int8 strings.
+ * Values too large for int4 will be represented as Float constants by
+ * the lexer. Accept these if they are valid int8 strings.
*/
if (IsA(def->arg, Float))
return DatumGetInt64(DirectFunctionCall1(int8in,
- CStringGetDatum(strVal(def->arg))));
+ CStringGetDatum(strVal(def->arg))));
/* Shouldn't get here unless parser messed up */
elog(ERROR, "DefineSequence: \"%s\" value must be integer", def->defname);
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index de98b333469..e108840d780 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.96 2001/08/23 23:06:37 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.97 2001/10/25 05:49:25 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,17 +34,17 @@
static void InsertTrigger(TriggerDesc *trigdesc, Trigger *trigger, int indx);
static HeapTuple GetTupleForTrigger(EState *estate,
- ResultRelInfo *relinfo,
- ItemPointer tid,
- TupleTableSlot **newSlot);
+ ResultRelInfo *relinfo,
+ ItemPointer tid,
+ TupleTableSlot **newSlot);
static HeapTuple ExecCallTriggerFunc(TriggerData *trigdata,
- FmgrInfo *finfo,
- MemoryContext per_tuple_context);
+ FmgrInfo *finfo,
+ MemoryContext per_tuple_context);
static void DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
- HeapTuple oldtup, HeapTuple newtup);
+ HeapTuple oldtup, HeapTuple newtup);
static void DeferredTriggerExecute(DeferredTriggerEvent event, int itemno,
- Relation rel, FmgrInfo *finfo,
- MemoryContext per_tuple_context);
+ Relation rel, FmgrInfo *finfo,
+ MemoryContext per_tuple_context);
void
@@ -93,7 +93,6 @@ CreateTrigger(CreateTrigStmt *stmt)
constrrelid = InvalidOid;
else
{
-
/*
* NoLock is probably sufficient here, since we're only
* interested in getting the relation's OID...
@@ -849,8 +848,8 @@ ExecCallTriggerFunc(TriggerData *trigdata,
MemoryContext oldContext;
/*
- * We cache fmgr lookup info, to avoid making the lookup
- * again on each call.
+ * We cache fmgr lookup info, to avoid making the lookup again on each
+ * call.
*/
if (finfo->fn_oid == InvalidOid)
fmgr_info(trigdata->tg_trigger->tgfoid, finfo);
@@ -915,14 +914,14 @@ ExecBRInsertTriggers(EState *estate, ResultRelInfo *relinfo,
LocTriggerData.tg_newtuple = NULL;
for (i = 0; i < ntrigs; i++)
{
- Trigger *trigger = &trigdesc->triggers[tgindx[i]];
+ Trigger *trigger = &trigdesc->triggers[tgindx[i]];
if (!trigger->tgenabled)
continue;
LocTriggerData.tg_trigtuple = oldtuple = newtuple;
LocTriggerData.tg_trigger = trigger;
newtuple = ExecCallTriggerFunc(&LocTriggerData,
- relinfo->ri_TrigFunctions + tgindx[i],
+ relinfo->ri_TrigFunctions + tgindx[i],
GetPerTupleMemoryContext(estate));
if (oldtuple != newtuple && oldtuple != trigtuple)
heap_freetuple(oldtuple);
@@ -978,14 +977,14 @@ ExecBRDeleteTriggers(EState *estate, ResultRelInfo *relinfo,
LocTriggerData.tg_newtuple = NULL;
for (i = 0; i < ntrigs; i++)
{
- Trigger *trigger = &trigdesc->triggers[tgindx[i]];
+ Trigger *trigger = &trigdesc->triggers[tgindx[i]];
if (!trigger->tgenabled)
continue;
LocTriggerData.tg_trigtuple = trigtuple;
LocTriggerData.tg_trigger = trigger;
newtuple = ExecCallTriggerFunc(&LocTriggerData,
- relinfo->ri_TrigFunctions + tgindx[i],
+ relinfo->ri_TrigFunctions + tgindx[i],
GetPerTupleMemoryContext(estate));
if (newtuple == NULL)
break;
@@ -1055,7 +1054,7 @@ ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo,
LocTriggerData.tg_relation = relinfo->ri_RelationDesc;
for (i = 0; i < ntrigs; i++)
{
- Trigger *trigger = &trigdesc->triggers[tgindx[i]];
+ Trigger *trigger = &trigdesc->triggers[tgindx[i]];
if (!trigger->tgenabled)
continue;
@@ -1063,7 +1062,7 @@ ExecBRUpdateTriggers(EState *estate, ResultRelInfo *relinfo,
LocTriggerData.tg_newtuple = oldtuple = newtuple;
LocTriggerData.tg_trigger = trigger;
newtuple = ExecCallTriggerFunc(&LocTriggerData,
- relinfo->ri_TrigFunctions + tgindx[i],
+ relinfo->ri_TrigFunctions + tgindx[i],
GetPerTupleMemoryContext(estate));
if (oldtuple != newtuple && oldtuple != intuple)
heap_freetuple(oldtuple);
@@ -1130,8 +1129,8 @@ ltrmark:;
else if (!(ItemPointerEquals(&(tuple.t_self), tid)))
{
TupleTableSlot *epqslot = EvalPlanQual(estate,
- relinfo->ri_RangeTableIndex,
- &(tuple.t_self));
+ relinfo->ri_RangeTableIndex,
+ &(tuple.t_self));
if (!(TupIsNull(epqslot)))
{
@@ -1293,7 +1292,6 @@ deferredTriggerCheckState(Oid tgoid, int32 itemstate)
static void
deferredTriggerAddEvent(DeferredTriggerEvent event)
{
-
/*
* Since the event list could grow quite long, we keep track of the
* list tail and append there, rather than just doing a stupid
@@ -1359,7 +1357,7 @@ deferredTriggerGetPreviousEvent(Oid relid, ItemPointer ctid)
* single trigger function.
*
* Frequently, this will be fired many times in a row for triggers of
- * a single relation. Therefore, we cache the open relation and provide
+ * a single relation. Therefore, we cache the open relation and provide
* fmgr lookup cache space at the caller level.
*
* event: event currently being fired.
@@ -1535,8 +1533,8 @@ deferredTriggerInvokeEvents(bool immediate_only)
}
/*
- * So let's fire it... but first, open the correct relation
- * if this is not the same relation as before.
+ * So let's fire it... but first, open the correct relation if
+ * this is not the same relation as before.
*/
if (rel == NULL || rel->rd_id != event->dte_relid)
{
@@ -1544,11 +1542,13 @@ deferredTriggerInvokeEvents(bool immediate_only)
heap_close(rel, NoLock);
if (finfo)
pfree(finfo);
+
/*
* We assume that an appropriate lock is still held by the
* executor, so grab no new lock here.
*/
rel = heap_open(event->dte_relid, NoLock);
+
/*
* Allocate space to cache fmgr lookup info for triggers
* of this relation.
@@ -1667,7 +1667,6 @@ DeferredTriggerBeginXact(void)
void
DeferredTriggerEndQuery(void)
{
-
/*
* Ignore call if we aren't in a transaction.
*/
@@ -1688,7 +1687,6 @@ DeferredTriggerEndQuery(void)
void
DeferredTriggerEndXact(void)
{
-
/*
* Ignore call if we aren't in a transaction.
*/
@@ -1713,7 +1711,6 @@ DeferredTriggerEndXact(void)
void
DeferredTriggerAbortXact(void)
{
-
/*
* Ignore call if we aren't in a transaction.
*/
@@ -1751,7 +1748,6 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
{
if (!IsTransactionBlock())
{
-
/*
* ... outside of a transaction block
*
@@ -1779,7 +1775,6 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
}
else
{
-
/*
* ... inside of a transaction block
*
@@ -2050,7 +2045,7 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
new_event->dte_n_items = ntriggers;
for (i = 0; i < ntriggers; i++)
{
- Trigger *trigger = &trigdesc->triggers[tgindx[i]];
+ Trigger *trigger = &trigdesc->triggers[tgindx[i]];
new_event->dte_item[i].dti_tgoid = trigger->tgoid;
new_event->dte_item[i].dti_state =
@@ -2090,7 +2085,7 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
*/
for (i = 0; i < ntriggers; i++)
{
- Trigger *trigger = &trigdesc->triggers[tgindx[i]];
+ Trigger *trigger = &trigdesc->triggers[tgindx[i]];
bool is_ri_trigger;
bool key_unchanged;
@@ -2125,7 +2120,6 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
if (key_unchanged)
{
-
/*
* The key hasn't changed, so no need later to invoke
* the trigger at all. But remember other states from
@@ -2138,7 +2132,6 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
if (prev_event->dte_event &
TRIGGER_DEFERRED_ROW_INSERTED)
{
-
/*
* This is a row inserted during our
* transaction. So any key value is considered
@@ -2153,7 +2146,6 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
}
else
{
-
/*
* This is a row, previously updated. So if
* this key has been changed before, we still
@@ -2172,7 +2164,6 @@ DeferredTriggerSaveEvent(ResultRelInfo *relinfo, int event,
}
else
{
-
/*
* Bomb out if this key has been changed before.
* Otherwise remember that we do so.
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index 518b9942d17..a3103e7209c 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.84 2001/09/19 09:48:42 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.85 2001/10/25 05:49:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -170,7 +170,7 @@ update_pg_pwd(PG_FUNCTION_ARGS)
{
/*
* ExclusiveLock ensures no one modifies pg_shadow while we read it,
- * and that only one backend rewrites the flat file at a time. It's
+ * and that only one backend rewrites the flat file at a time. It's
* OK to allow normal reads of pg_shadow in parallel, however.
*/
Relation rel = heap_openr(ShadowRelationName, ExclusiveLock);
@@ -199,15 +199,17 @@ CreateUser(CreateUserStmt *stmt)
sysid_exists = false,
havesysid = false;
int max_id;
- List *item, *option;
- char *password = NULL; /* PostgreSQL user password */
- bool encrypt_password = Password_encryption; /* encrypt password? */
- char encrypted_password[MD5_PASSWD_LEN+1];
- int sysid = 0; /* PgSQL system id (valid if havesysid) */
- bool createdb = false; /* Can the user create databases? */
- bool createuser = false; /* Can this user create users? */
- List *groupElts = NIL; /* The groups the user is a member of */
- char *validUntil = NULL; /* The time the login is valid until */
+ List *item,
+ *option;
+ char *password = NULL; /* PostgreSQL user password */
+ bool encrypt_password = Password_encryption; /* encrypt password? */
+ char encrypted_password[MD5_PASSWD_LEN + 1];
+ int sysid = 0; /* PgSQL system id (valid if havesysid) */
+ bool createdb = false; /* Can the user create databases? */
+ bool createuser = false; /* Can this user create users? */
+ List *groupElts = NIL; /* The groups the user is a member of */
+ char *validUntil = NULL; /* The time the login is valid
+ * until */
DefElem *dpassword = NULL;
DefElem *dsysid = NULL;
DefElem *dcreatedb = NULL;
@@ -218,11 +220,12 @@ CreateUser(CreateUserStmt *stmt)
/* Extract options from the statement node tree */
foreach(option, stmt->options)
{
- DefElem *defel = (DefElem *) lfirst(option);
+ DefElem *defel = (DefElem *) lfirst(option);
if (strcmp(defel->defname, "password") == 0 ||
strcmp(defel->defname, "encryptedPassword") == 0 ||
- strcmp(defel->defname, "unencryptedPassword") == 0) {
+ strcmp(defel->defname, "unencryptedPassword") == 0)
+ {
if (dpassword)
elog(ERROR, "CREATE USER: conflicting options");
dpassword = defel;
@@ -231,33 +234,38 @@ CreateUser(CreateUserStmt *stmt)
else if (strcmp(defel->defname, "unencryptedPassword") == 0)
encrypt_password = false;
}
- else if (strcmp(defel->defname, "sysid") == 0) {
+ else if (strcmp(defel->defname, "sysid") == 0)
+ {
if (dsysid)
elog(ERROR, "CREATE USER: conflicting options");
dsysid = defel;
}
- else if (strcmp(defel->defname, "createdb") == 0) {
+ else if (strcmp(defel->defname, "createdb") == 0)
+ {
if (dcreatedb)
elog(ERROR, "CREATE USER: conflicting options");
dcreatedb = defel;
}
- else if (strcmp(defel->defname, "createuser") == 0) {
+ else if (strcmp(defel->defname, "createuser") == 0)
+ {
if (dcreateuser)
elog(ERROR, "CREATE USER: conflicting options");
dcreateuser = defel;
}
- else if (strcmp(defel->defname, "groupElts") == 0) {
+ else if (strcmp(defel->defname, "groupElts") == 0)
+ {
if (dgroupElts)
elog(ERROR, "CREATE USER: conflicting options");
dgroupElts = defel;
}
- else if (strcmp(defel->defname, "validUntil") == 0) {
+ else if (strcmp(defel->defname, "validUntil") == 0)
+ {
if (dvalidUntil)
elog(ERROR, "CREATE USER: conflicting options");
dvalidUntil = defel;
}
else
- elog(ERROR,"CREATE USER: option \"%s\" not recognized",
+ elog(ERROR, "CREATE USER: option \"%s\" not recognized",
defel->defname);
}
@@ -329,7 +337,7 @@ CreateUser(CreateUserStmt *stmt)
elog(ERROR, "CREATE USER: sysid %d is already assigned", sysid);
/* If no sysid given, use max existing id + 1 */
- if (! havesysid)
+ if (!havesysid)
sysid = max_id + 1;
/*
@@ -355,7 +363,7 @@ CreateUser(CreateUserStmt *stmt)
else
{
if (!EncryptMD5(password, stmt->user, strlen(stmt->user),
- encrypted_password))
+ encrypted_password))
elog(ERROR, "CREATE USER: password encryption failed");
new_record[Anum_pg_shadow_passwd - 1] =
DirectFunctionCall1(textin, CStringGetDatum(encrypted_password));
@@ -438,26 +446,28 @@ AlterUser(AlterUserStmt *stmt)
HeapTuple tuple,
new_tuple;
bool null;
- List *option;
- char *password = NULL; /* PostgreSQL user password */
- bool encrypt_password = Password_encryption; /* encrypt password? */
- char encrypted_password[MD5_PASSWD_LEN+1];
- int createdb = -1; /* Can the user create databases? */
- int createuser = -1; /* Can this user create users? */
- char *validUntil = NULL; /* The time the login is valid until */
+ List *option;
+ char *password = NULL; /* PostgreSQL user password */
+ bool encrypt_password = Password_encryption; /* encrypt password? */
+ char encrypted_password[MD5_PASSWD_LEN + 1];
+ int createdb = -1; /* Can the user create databases? */
+ int createuser = -1; /* Can this user create users? */
+ char *validUntil = NULL; /* The time the login is valid
+ * until */
DefElem *dpassword = NULL;
DefElem *dcreatedb = NULL;
DefElem *dcreateuser = NULL;
DefElem *dvalidUntil = NULL;
/* Extract options from the statement node tree */
- foreach(option,stmt->options)
+ foreach(option, stmt->options)
{
- DefElem *defel = (DefElem *) lfirst(option);
+ DefElem *defel = (DefElem *) lfirst(option);
if (strcmp(defel->defname, "password") == 0 ||
strcmp(defel->defname, "encryptedPassword") == 0 ||
- strcmp(defel->defname, "unencryptedPassword") == 0) {
+ strcmp(defel->defname, "unencryptedPassword") == 0)
+ {
if (dpassword)
elog(ERROR, "ALTER USER: conflicting options");
dpassword = defel;
@@ -466,23 +476,26 @@ AlterUser(AlterUserStmt *stmt)
else if (strcmp(defel->defname, "unencryptedPassword") == 0)
encrypt_password = false;
}
- else if (strcmp(defel->defname, "createdb") == 0) {
+ else if (strcmp(defel->defname, "createdb") == 0)
+ {
if (dcreatedb)
elog(ERROR, "ALTER USER: conflicting options");
dcreatedb = defel;
}
- else if (strcmp(defel->defname, "createuser") == 0) {
+ else if (strcmp(defel->defname, "createuser") == 0)
+ {
if (dcreateuser)
elog(ERROR, "ALTER USER: conflicting options");
dcreateuser = defel;
}
- else if (strcmp(defel->defname, "validUntil") == 0) {
+ else if (strcmp(defel->defname, "validUntil") == 0)
+ {
if (dvalidUntil)
elog(ERROR, "ALTER USER: conflicting options");
dvalidUntil = defel;
}
else
- elog(ERROR,"ALTER USER: option \"%s\" not recognized",
+ elog(ERROR, "ALTER USER: option \"%s\" not recognized",
defel->defname);
}
@@ -556,10 +569,10 @@ AlterUser(AlterUserStmt *stmt)
/*
* createuser (superuser) and catupd
*
- * XXX It's rather unclear how to handle catupd. It's probably
- * best to keep it equal to the superuser status, otherwise you
- * could end up with a situation where no existing superuser can
- * alter the catalogs, including pg_shadow!
+ * XXX It's rather unclear how to handle catupd. It's probably best to
+ * keep it equal to the superuser status, otherwise you could end up
+ * with a situation where no existing superuser can alter the
+ * catalogs, including pg_shadow!
*/
if (createuser < 0)
{
@@ -588,7 +601,7 @@ AlterUser(AlterUserStmt *stmt)
else
{
if (!EncryptMD5(password, stmt->user, strlen(stmt->user),
- encrypted_password))
+ encrypted_password))
elog(ERROR, "CREATE USER: password encryption failed");
new_record[Anum_pg_shadow_passwd - 1] =
DirectFunctionCall1(textin, CStringGetDatum(encrypted_password));
@@ -719,7 +732,7 @@ DropUser(DropUserStmt *stmt)
if (HeapTupleIsValid(tmp_tuple = heap_getnext(scan, 0)))
{
- char *dbname;
+ char *dbname;
datum = heap_getattr(tmp_tuple, Anum_pg_database_datname,
pg_dsc, &null);
@@ -847,20 +860,22 @@ CreateGroup(CreateGroupStmt *stmt)
foreach(option, stmt->options)
{
- DefElem *defel = (DefElem *) lfirst(option);
+ DefElem *defel = (DefElem *) lfirst(option);
- if (strcmp(defel->defname, "sysid") == 0) {
+ if (strcmp(defel->defname, "sysid") == 0)
+ {
if (dsysid)
elog(ERROR, "CREATE GROUP: conflicting options");
dsysid = defel;
}
- else if (strcmp(defel->defname, "userElts") == 0) {
+ else if (strcmp(defel->defname, "userElts") == 0)
+ {
if (duserElts)
elog(ERROR, "CREATE GROUP: conflicting options");
duserElts = defel;
}
else
- elog(ERROR,"CREATE GROUP: option \"%s\" not recognized",
+ elog(ERROR, "CREATE GROUP: option \"%s\" not recognized",
defel->defname);
}
@@ -900,7 +915,7 @@ CreateGroup(CreateGroupStmt *stmt)
datum = heap_getattr(tuple, Anum_pg_group_grosysid,
pg_group_dsc, &null);
Assert(!null);
- if (havesysid) /* customized id wanted */
+ if (havesysid) /* customized id wanted */
sysid_exists = (DatumGetInt32(datum) == sysid);
else
{
@@ -939,7 +954,7 @@ CreateGroup(CreateGroupStmt *stmt)
userarray = palloc(ARR_OVERHEAD(1) + length(newlist) * sizeof(int32));
userarray->size = ARR_OVERHEAD(1) + length(newlist) * sizeof(int32);
userarray->flags = 0;
- ARR_NDIM(userarray) = 1;/* one dimensional array */
+ ARR_NDIM(userarray) = 1; /* one dimensional array */
ARR_LBOUND(userarray)[0] = 1; /* axis starts at one */
ARR_DIMS(userarray)[0] = length(newlist); /* axis is this long */
/* fill the array */
@@ -1088,6 +1103,7 @@ AlterGroup(AlterGroupStmt *stmt, const char *tag)
if (!member(v, newlist))
newlist = lappend(newlist, v);
else
+
/*
* we silently assume here that this error will only come
* up in a ALTER GROUP statement
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 991af5d5f35..fa5770b0e8d 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -4,7 +4,7 @@
* The postgres vacuum cleaner.
*
* This file includes the "full" version of VACUUM, as well as control code
- * used by all three of full VACUUM, lazy VACUUM, and ANALYZE. See
+ * used by all three of full VACUUM, lazy VACUUM, and ANALYZE. See
* vacuumlazy.c and analyze.c for the rest of the code for the latter two.
*
*
@@ -13,7 +13,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.209 2001/09/04 19:12:05 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.210 2001/10/25 05:49:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -68,11 +68,11 @@ typedef VacPageData *VacPage;
typedef struct VacPageListData
{
- BlockNumber empty_end_pages; /* Number of "empty" end-pages */
- int num_pages; /* Number of pages in pagedesc */
+ BlockNumber empty_end_pages; /* Number of "empty" end-pages */
+ int num_pages; /* Number of pages in pagedesc */
int num_allocated_pages; /* Number of allocated pages in
* pagedesc */
- VacPage *pagedesc; /* Descriptions of pages */
+ VacPage *pagedesc; /* Descriptions of pages */
} VacPageListData;
typedef VacPageListData *VacPageList;
@@ -96,7 +96,7 @@ typedef VTupleMoveData *VTupleMove;
typedef struct VRelStats
{
- BlockNumber rel_pages;
+ BlockNumber rel_pages;
double rel_tuples;
Size min_tlen;
Size max_tlen;
@@ -122,32 +122,32 @@ static void vacuum_init(VacuumStmt *vacstmt);
static void vacuum_shutdown(VacuumStmt *vacstmt);
static VRelList getrels(Name VacRelP, const char *stmttype);
static void vac_update_dbstats(Oid dbid,
- TransactionId vacuumXID,
- TransactionId frozenXID);
+ TransactionId vacuumXID,
+ TransactionId frozenXID);
static void vac_truncate_clog(TransactionId vacuumXID,
- TransactionId frozenXID);
+ TransactionId frozenXID);
static void vacuum_rel(Oid relid, VacuumStmt *vacstmt);
static void full_vacuum_rel(Relation onerel, VacuumStmt *vacstmt);
static void scan_heap(VRelStats *vacrelstats, Relation onerel,
- VacPageList vacuum_pages, VacPageList fraged_pages);
+ VacPageList vacuum_pages, VacPageList fraged_pages);
static void repair_frag(VRelStats *vacrelstats, Relation onerel,
- VacPageList vacuum_pages, VacPageList fraged_pages,
- int nindexes, Relation *Irel);
+ VacPageList vacuum_pages, VacPageList fraged_pages,
+ int nindexes, Relation *Irel);
static void vacuum_heap(VRelStats *vacrelstats, Relation onerel,
- VacPageList vacpagelist);
+ VacPageList vacpagelist);
static void vacuum_page(Relation onerel, Buffer buffer, VacPage vacpage);
static void vacuum_index(VacPageList vacpagelist, Relation indrel,
- double num_tuples, int keep_tuples);
+ double num_tuples, int keep_tuples);
static void scan_index(Relation indrel, double num_tuples);
static bool tid_reaped(ItemPointer itemptr, void *state);
static bool dummy_tid_reaped(ItemPointer itemptr, void *state);
static void vac_update_fsm(Relation onerel, VacPageList fraged_pages,
- BlockNumber rel_pages);
+ BlockNumber rel_pages);
static VacPage copy_vac_page(VacPage vacpage);
static void vpage_insert(VacPageList vacpagelist, VacPage vpnew);
static void *vac_bsearch(const void *key, const void *base,
- size_t nelem, size_t size,
- int (*compar) (const void *, const void *));
+ size_t nelem, size_t size,
+ int (*compar) (const void *, const void *));
static int vac_cmp_blk(const void *left, const void *right);
static int vac_cmp_offno(const void *left, const void *right);
static int vac_cmp_vtlinks(const void *left, const void *right);
@@ -227,11 +227,11 @@ vacuum(VacuumStmt *vacstmt)
vacuum_init(vacstmt);
/*
- * Process each selected relation. We are careful to process
- * each relation in a separate transaction in order to avoid holding
- * too many locks at one time. Also, if we are doing VACUUM ANALYZE,
- * the ANALYZE part runs as a separate transaction from the VACUUM
- * to further reduce locking.
+ * Process each selected relation. We are careful to process each
+ * relation in a separate transaction in order to avoid holding too
+ * many locks at one time. Also, if we are doing VACUUM ANALYZE, the
+ * ANALYZE part runs as a separate transaction from the VACUUM to
+ * further reduce locking.
*/
for (cur = vrl; cur != (VRelList) NULL; cur = cur->vrl_next)
{
@@ -271,21 +271,21 @@ vacuum_init(VacuumStmt *vacstmt)
if (vacstmt->vacuum && vacstmt->vacrel == NULL)
{
/*
- * Compute the initially applicable OldestXmin and FreezeLimit XIDs,
- * so that we can record these values at the end of the VACUUM.
- * Note that individual tables may well be processed with newer values,
- * but we can guarantee that no (non-shared) relations are processed
- * with older ones.
+ * Compute the initially applicable OldestXmin and FreezeLimit
+ * XIDs, so that we can record these values at the end of the
+ * VACUUM. Note that individual tables may well be processed with
+ * newer values, but we can guarantee that no (non-shared)
+ * relations are processed with older ones.
*
* It is okay to record non-shared values in pg_database, even though
* we may vacuum shared relations with older cutoffs, because only
* the minimum of the values present in pg_database matters. We
- * can be sure that shared relations have at some time been vacuumed
- * with cutoffs no worse than the global minimum; for, if there is
- * a backend in some other DB with xmin = OLDXMIN that's determining
- * the cutoff with which we vacuum shared relations, it is not possible
- * for that database to have a cutoff newer than OLDXMIN recorded in
- * pg_database.
+ * can be sure that shared relations have at some time been
+ * vacuumed with cutoffs no worse than the global minimum; for, if
+ * there is a backend in some other DB with xmin = OLDXMIN that's
+ * determining the cutoff with which we vacuum shared relations,
+ * it is not possible for that database to have a cutoff newer
+ * than OLDXMIN recorded in pg_database.
*/
vacuum_set_xid_limits(vacstmt, false,
&initialOldestXmin, &initialFreezeLimit);
@@ -316,11 +316,12 @@ vacuum_shutdown(VacuumStmt *vacstmt)
}
/*
- * If we did a complete vacuum or analyze, then flush the init file that
- * relcache.c uses to save startup time. The next backend startup will
- * rebuild the init file with up-to-date information from pg_class.
- * This lets the optimizer see the stats that we've collected for certain
- * critical system indexes. See relcache.c for more details.
+ * If we did a complete vacuum or analyze, then flush the init file
+ * that relcache.c uses to save startup time. The next backend startup
+ * will rebuild the init file with up-to-date information from
+ * pg_class. This lets the optimizer see the stats that we've
+ * collected for certain critical system indexes. See relcache.c for
+ * more details.
*
* Ignore any failure to unlink the file, since it might not be there if
* no backend has been started since the last vacuum.
@@ -526,9 +527,10 @@ vac_update_relstats(Oid relid, BlockNumber num_pages, double num_tuples,
pgcform->relpages = (int32) num_pages;
pgcform->reltuples = num_tuples;
pgcform->relhasindex = hasindex;
+
/*
- * If we have discovered that there are no indexes, then there's
- * no primary key either. This could be done more thoroughly...
+ * If we have discovered that there are no indexes, then there's no
+ * primary key either. This could be done more thoroughly...
*/
if (!hasindex)
pgcform->relhaspkey = false;
@@ -606,7 +608,7 @@ vac_update_dbstats(Oid dbid,
* seems to be in danger of wrapping around.
*
* The passed XIDs are simply the ones I just wrote into my pg_database
- * entry. They're used to initialize the "min" calculations.
+ * entry. They're used to initialize the "min" calculations.
*
* This routine is shared by full and lazy VACUUM. Note that it is only
* applied after a database-wide VACUUM operation.
@@ -708,26 +710,27 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt)
/*
* Determine the type of lock we want --- hard exclusive lock for a
* FULL vacuum, but just ShareUpdateExclusiveLock for concurrent
- * vacuum. Either way, we can be sure that no other backend is vacuuming
- * the same table.
+ * vacuum. Either way, we can be sure that no other backend is
+ * vacuuming the same table.
*/
lmode = vacstmt->full ? AccessExclusiveLock : ShareUpdateExclusiveLock;
/*
- * Open the class, get an appropriate lock on it, and check permissions.
+ * Open the class, get an appropriate lock on it, and check
+ * permissions.
*
* We allow the user to vacuum a table if he is superuser, the table
* owner, or the database owner (but in the latter case, only if it's
- * not a shared relation). pg_ownercheck includes the superuser case.
+ * not a shared relation). pg_ownercheck includes the superuser case.
*
* Note we choose to treat permissions failure as a NOTICE and keep
* trying to vacuum the rest of the DB --- is this appropriate?
*/
onerel = heap_open(relid, lmode);
- if (! (pg_ownercheck(GetUserId(), RelationGetRelationName(onerel),
- RELNAME) ||
- (is_dbadmin(MyDatabaseId) && !onerel->rd_rel->relisshared)))
+ if (!(pg_ownercheck(GetUserId(), RelationGetRelationName(onerel),
+ RELNAME) ||
+ (is_dbadmin(MyDatabaseId) && !onerel->rd_rel->relisshared)))
{
elog(NOTICE, "Skipping \"%s\" --- only table or database owner can VACUUM it",
RelationGetRelationName(onerel));
@@ -773,9 +776,9 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt)
/*
* If the relation has a secondary toast rel, vacuum that too while we
* still hold the session lock on the master table. Note however that
- * "analyze" will not get done on the toast table. This is good,
- * because the toaster always uses hardcoded index access and statistics
- * are totally unimportant for toast relations.
+ * "analyze" will not get done on the toast table. This is good,
+ * because the toaster always uses hardcoded index access and
+ * statistics are totally unimportant for toast relations.
*/
if (toast_relid != InvalidOid)
vacuum_rel(toast_relid, vacstmt);
@@ -846,6 +849,7 @@ full_vacuum_rel(Relation onerel, VacuumStmt *vacstmt)
vacrelstats->hasindex = true;
#ifdef NOT_USED
+
/*
* reindex in VACUUM is dangerous under WAL. ifdef out until it
* becomes safe.
@@ -945,7 +949,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
char *relname;
VacPage vacpage,
vacpagecopy;
- BlockNumber empty_pages,
+ BlockNumber empty_pages,
new_pages,
changed_pages,
empty_end_pages;
@@ -1057,12 +1061,13 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
switch (HeapTupleSatisfiesVacuum(tuple.t_data, OldestXmin))
{
case HEAPTUPLE_DEAD:
- tupgone = true; /* we can delete the tuple */
+ tupgone = true; /* we can delete the tuple */
break;
case HEAPTUPLE_LIVE:
+
/*
- * Tuple is good. Consider whether to replace its xmin
- * value with FrozenTransactionId.
+ * Tuple is good. Consider whether to replace its
+ * xmin value with FrozenTransactionId.
*/
if (TransactionIdIsNormal(tuple.t_data->t_xmin) &&
TransactionIdPrecedes(tuple.t_data->t_xmin,
@@ -1075,11 +1080,13 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
}
break;
case HEAPTUPLE_RECENTLY_DEAD:
+
/*
- * If tuple is recently deleted then we must not remove
- * it from relation.
+ * If tuple is recently deleted then we must not
+ * remove it from relation.
*/
nkeep += 1;
+
/*
* If we do shrinking and this tuple is updated one
* then remember it to construct updated tuple
@@ -1103,18 +1110,20 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
}
break;
case HEAPTUPLE_INSERT_IN_PROGRESS:
+
/*
- * This should not happen, since we hold exclusive lock
- * on the relation; shouldn't we raise an error?
+ * This should not happen, since we hold exclusive
+ * lock on the relation; shouldn't we raise an error?
*/
elog(NOTICE, "Rel %s: TID %u/%u: InsertTransactionInProgress %u - can't shrink relation",
relname, blkno, offnum, tuple.t_data->t_xmin);
do_shrinking = false;
break;
case HEAPTUPLE_DELETE_IN_PROGRESS:
+
/*
- * This should not happen, since we hold exclusive lock
- * on the relation; shouldn't we raise an error?
+ * This should not happen, since we hold exclusive
+ * lock on the relation; shouldn't we raise an error?
*/
elog(NOTICE, "Rel %s: TID %u/%u: DeleteTransactionInProgress %u - can't shrink relation",
relname, blkno, offnum, tuple.t_data->t_xmax);
@@ -1174,7 +1183,7 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
if (tuple.t_len > max_tlen)
max_tlen = tuple.t_len;
}
- } /* scan along page */
+ } /* scan along page */
if (tempPage != (Page) NULL)
{
@@ -1193,13 +1202,14 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
}
free_size += vacpage->free;
+
/*
* Add the page to fraged_pages if it has a useful amount of free
- * space. "Useful" means enough for a minimal-sized tuple.
- * But we don't know that accurately near the start of the relation,
- * so add pages unconditionally if they have >= BLCKSZ/10 free space.
+ * space. "Useful" means enough for a minimal-sized tuple. But we
+ * don't know that accurately near the start of the relation, so
+ * add pages unconditionally if they have >= BLCKSZ/10 free space.
*/
- do_frag = (vacpage->free >= min_tlen || vacpage->free >= BLCKSZ/10);
+ do_frag = (vacpage->free >= min_tlen || vacpage->free >= BLCKSZ / 10);
if (do_reap || do_frag)
{
@@ -1238,9 +1248,9 @@ scan_heap(VRelStats *vacrelstats, Relation onerel,
fraged_pages->empty_end_pages = empty_end_pages;
/*
- * Clear the fraged_pages list if we found we couldn't shrink.
- * Else, remove any "empty" end-pages from the list, and compute
- * usable free space = free space in remaining pages.
+ * Clear the fraged_pages list if we found we couldn't shrink. Else,
+ * remove any "empty" end-pages from the list, and compute usable free
+ * space = free space in remaining pages.
*/
if (do_shrinking)
{
@@ -1303,9 +1313,9 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
CommandId myCID;
Buffer buf,
cur_buffer;
- BlockNumber nblocks,
+ BlockNumber nblocks,
blkno;
- BlockNumber last_move_dest_block = 0,
+ BlockNumber last_move_dest_block = 0,
last_vacuum_block;
Page page,
ToPage = NULL;
@@ -1355,7 +1365,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
resultRelInfo = makeNode(ResultRelInfo);
resultRelInfo->ri_RangeTableIndex = 1; /* dummy */
resultRelInfo->ri_RelationDesc = onerel;
- resultRelInfo->ri_TrigDesc = NULL; /* we don't fire triggers */
+ resultRelInfo->ri_TrigDesc = NULL; /* we don't fire triggers */
ExecOpenIndices(resultRelInfo);
@@ -1393,9 +1403,9 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
/*
* Scan pages backwards from the last nonempty page, trying to move
* tuples down to lower pages. Quit when we reach a page that we have
- * moved any tuples onto, or the first page if we haven't moved anything,
- * or when we find a page we cannot completely empty (this last condition
- * is handled by "break" statements within the loop).
+ * moved any tuples onto, or the first page if we haven't moved
+ * anything, or when we find a page we cannot completely empty (this
+ * last condition is handled by "break" statements within the loop).
*
* NB: this code depends on the vacuum_pages and fraged_pages lists being
* in order by blkno.
@@ -1406,19 +1416,20 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
blkno--)
{
/*
- * Forget fraged_pages pages at or after this one; they're no longer
- * useful as move targets, since we only want to move down. Note
- * that since we stop the outer loop at last_move_dest_block, pages
- * removed here cannot have had anything moved onto them already.
+ * Forget fraged_pages pages at or after this one; they're no
+ * longer useful as move targets, since we only want to move down.
+ * Note that since we stop the outer loop at last_move_dest_block,
+ * pages removed here cannot have had anything moved onto them
+ * already.
*
- * Also note that we don't change the stored fraged_pages list,
- * only our local variable num_fraged_pages; so the forgotten pages
- * are still available to be loaded into the free space map later.
+ * Also note that we don't change the stored fraged_pages list, only
+ * our local variable num_fraged_pages; so the forgotten pages are
+ * still available to be loaded into the free space map later.
*/
while (num_fraged_pages > 0 &&
- fraged_pages->pagedesc[num_fraged_pages-1]->blkno >= blkno)
+ fraged_pages->pagedesc[num_fraged_pages - 1]->blkno >= blkno)
{
- Assert(fraged_pages->pagedesc[num_fraged_pages-1]->offsets_used == 0);
+ Assert(fraged_pages->pagedesc[num_fraged_pages - 1]->offsets_used == 0);
--num_fraged_pages;
}
@@ -1534,7 +1545,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
* tuples to another places.
*/
if ((tuple.t_data->t_infomask & HEAP_UPDATED &&
- !TransactionIdPrecedes(tuple.t_data->t_xmin, OldestXmin)) ||
+ !TransactionIdPrecedes(tuple.t_data->t_xmin, OldestXmin)) ||
(!(tuple.t_data->t_infomask & HEAP_XMAX_INVALID) &&
!(ItemPointerEquals(&(tuple.t_self),
&(tuple.t_data->t_ctid)))))
@@ -1581,7 +1592,6 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
ItemPointerGetOffsetNumber(&Ctid));
if (!ItemIdIsUsed(Citemid))
{
-
/*
* This means that in the middle of chain there
* was tuple updated by older (than OldestXmin)
@@ -1652,7 +1662,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
/* All done ? */
if (!(tp.t_data->t_infomask & HEAP_UPDATED) ||
- TransactionIdPrecedes(tp.t_data->t_xmin, OldestXmin))
+ TransactionIdPrecedes(tp.t_data->t_xmin, OldestXmin))
break;
/* Well, try to find tuple with old row version */
@@ -2109,9 +2119,9 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
/*
* We are not going to move any more tuples across pages, but we still
* need to apply vacuum_page to compact free space in the remaining
- * pages in vacuum_pages list. Note that some of these pages may also
- * be in the fraged_pages list, and may have had tuples moved onto them;
- * if so, we already did vacuum_page and needn't do it again.
+ * pages in vacuum_pages list. Note that some of these pages may also
+ * be in the fraged_pages list, and may have had tuples moved onto
+ * them; if so, we already did vacuum_page and needn't do it again.
*/
for (i = 0, curpage = vacuum_pages->pagedesc;
i < vacuumed_pages;
@@ -2132,15 +2142,15 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
}
/*
- * Now scan all the pages that we moved tuples onto and update
- * tuple status bits. This is not really necessary, but will save time
- * for future transactions examining these tuples.
+ * Now scan all the pages that we moved tuples onto and update tuple
+ * status bits. This is not really necessary, but will save time for
+ * future transactions examining these tuples.
*
* XXX Notice that this code fails to clear HEAP_MOVED_OFF tuples from
- * pages that were move source pages but not move dest pages. One also
- * wonders whether it wouldn't be better to skip this step and let the
- * tuple status updates happen someplace that's not holding an exclusive
- * lock on the relation.
+ * pages that were move source pages but not move dest pages. One
+ * also wonders whether it wouldn't be better to skip this step and
+ * let the tuple status updates happen someplace that's not holding an
+ * exclusive lock on the relation.
*/
checked_moved = 0;
for (i = 0, curpage = fraged_pages->pagedesc;
@@ -2226,7 +2236,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
if (vacpage->blkno == (blkno - 1) &&
vacpage->offsets_free > 0)
{
- OffsetNumber unbuf[BLCKSZ/sizeof(OffsetNumber)];
+ OffsetNumber unbuf[BLCKSZ / sizeof(OffsetNumber)];
OffsetNumber *unused = unbuf;
int uncnt;
@@ -2297,7 +2307,7 @@ repair_frag(VRelStats *vacrelstats, Relation onerel,
if (blkno < nblocks)
{
blkno = smgrtruncate(DEFAULT_SMGR, onerel, blkno);
- onerel->rd_nblocks = blkno; /* update relcache immediately */
+ onerel->rd_nblocks = blkno; /* update relcache immediately */
onerel->rd_targblock = InvalidBlockNumber;
vacrelstats->rel_pages = blkno; /* set new number of blocks */
}
@@ -2323,7 +2333,7 @@ vacuum_heap(VRelStats *vacrelstats, Relation onerel, VacPageList vacuum_pages)
{
Buffer buf;
VacPage *vacpage;
- BlockNumber relblocks;
+ BlockNumber relblocks;
int nblocks;
int i;
@@ -2363,7 +2373,7 @@ vacuum_heap(VRelStats *vacrelstats, Relation onerel, VacPageList vacuum_pages)
RelationGetRelationName(onerel),
vacrelstats->rel_pages, relblocks);
relblocks = smgrtruncate(DEFAULT_SMGR, onerel, relblocks);
- onerel->rd_nblocks = relblocks; /* update relcache immediately */
+ onerel->rd_nblocks = relblocks; /* update relcache immediately */
onerel->rd_targblock = InvalidBlockNumber;
vacrelstats->rel_pages = relblocks; /* set new number of
* blocks */
@@ -2377,7 +2387,7 @@ vacuum_heap(VRelStats *vacrelstats, Relation onerel, VacPageList vacuum_pages)
static void
vacuum_page(Relation onerel, Buffer buffer, VacPage vacpage)
{
- OffsetNumber unbuf[BLCKSZ/sizeof(OffsetNumber)];
+ OffsetNumber unbuf[BLCKSZ / sizeof(OffsetNumber)];
OffsetNumber *unused = unbuf;
int uncnt;
Page page = BufferGetPage(buffer);
@@ -2420,8 +2430,8 @@ scan_index(Relation indrel, double num_tuples)
/*
* Even though we're not planning to delete anything, use the
- * ambulkdelete call, so that the scan happens within the index AM
- * for more speed.
+ * ambulkdelete call, so that the scan happens within the index AM for
+ * more speed.
*/
stats = index_bulk_delete(indrel, dummy_tid_reaped, NULL);
@@ -2439,13 +2449,13 @@ scan_index(Relation indrel, double num_tuples)
vac_show_rusage(&ru0));
/*
- * Check for tuple count mismatch. If the index is partial, then
- * it's OK for it to have fewer tuples than the heap; else we got trouble.
+ * Check for tuple count mismatch. If the index is partial, then it's
+ * OK for it to have fewer tuples than the heap; else we got trouble.
*/
if (stats->num_index_tuples != num_tuples)
{
if (stats->num_index_tuples > num_tuples ||
- ! vac_is_partial_index(indrel))
+ !vac_is_partial_index(indrel))
elog(NOTICE, "Index %s: NUMBER OF INDEX' TUPLES (%.0f) IS NOT THE SAME AS HEAP' (%.0f).\
\n\tRecreate the index.",
RelationGetRelationName(indrel),
@@ -2493,13 +2503,13 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
vac_show_rusage(&ru0));
/*
- * Check for tuple count mismatch. If the index is partial, then
- * it's OK for it to have fewer tuples than the heap; else we got trouble.
+ * Check for tuple count mismatch. If the index is partial, then it's
+ * OK for it to have fewer tuples than the heap; else we got trouble.
*/
if (stats->num_index_tuples != num_tuples + keep_tuples)
{
if (stats->num_index_tuples > num_tuples + keep_tuples ||
- ! vac_is_partial_index(indrel))
+ !vac_is_partial_index(indrel))
elog(NOTICE, "Index %s: NUMBER OF INDEX' TUPLES (%.0f) IS NOT THE SAME AS HEAP' (%.0f).\
\n\tRecreate the index.",
RelationGetRelationName(indrel),
@@ -2519,7 +2529,7 @@ vacuum_index(VacPageList vacpagelist, Relation indrel,
static bool
tid_reaped(ItemPointer itemptr, void *state)
{
- VacPageList vacpagelist = (VacPageList) state;
+ VacPageList vacpagelist = (VacPageList) state;
OffsetNumber ioffno;
OffsetNumber *voff;
VacPage vp,
@@ -2591,9 +2601,11 @@ vac_update_fsm(Relation onerel, VacPageList fraged_pages,
{
pages[i] = fraged_pages->pagedesc[i]->blkno;
spaceAvail[i] = fraged_pages->pagedesc[i]->free;
+
/*
- * fraged_pages may contain entries for pages that we later decided
- * to truncate from the relation; don't enter them into the map!
+ * fraged_pages may contain entries for pages that we later
+ * decided to truncate from the relation; don't enter them into
+ * the map!
*/
if (pages[i] >= rel_pages)
{
@@ -2617,7 +2629,7 @@ copy_vac_page(VacPage vacpage)
/* allocate a VacPageData entry */
newvacpage = (VacPage) palloc(sizeof(VacPageData) +
- vacpage->offsets_free * sizeof(OffsetNumber));
+ vacpage->offsets_free * sizeof(OffsetNumber));
/* fill it in */
if (vacpage->offsets_free > 0)
@@ -2661,7 +2673,7 @@ vpage_insert(VacPageList vacpagelist, VacPage vpnew)
/*
* vac_bsearch: just like standard C library routine bsearch(),
* except that we first test to see whether the target key is outside
- * the range of the table entries. This case is handled relatively slowly
+ * the range of the table entries. This case is handled relatively slowly
* by the normal binary search algorithm (ie, no faster than any other key)
* but it occurs often enough in VACUUM to be worth optimizing.
*/
@@ -2802,14 +2814,15 @@ vac_is_partial_index(Relation indrel)
Form_pg_index indexStruct;
/*
- * If the index's AM doesn't support nulls, it's partial for our purposes
+ * If the index's AM doesn't support nulls, it's partial for our
+ * purposes
*/
- if (! indrel->rd_am->amindexnulls)
+ if (!indrel->rd_am->amindexnulls)
return true;
/* Otherwise, look to see if there's a partial-index predicate */
cachetuple = SearchSysCache(INDEXRELID,
- ObjectIdGetDatum(RelationGetRelid(indrel)),
+ ObjectIdGetDatum(RelationGetRelid(indrel)),
0, 0, 0);
if (!HeapTupleIsValid(cachetuple))
elog(ERROR, "vac_is_partial_index: index %u not found",
@@ -2888,9 +2901,9 @@ vac_show_rusage(VacRUsage *ru0)
snprintf(result, sizeof(result),
"CPU %d.%02ds/%d.%02du sec elapsed %d.%02d sec.",
(int) (ru1.ru.ru_stime.tv_sec - ru0->ru.ru_stime.tv_sec),
- (int) (ru1.ru.ru_stime.tv_usec - ru0->ru.ru_stime.tv_usec) / 10000,
+ (int) (ru1.ru.ru_stime.tv_usec - ru0->ru.ru_stime.tv_usec) / 10000,
(int) (ru1.ru.ru_utime.tv_sec - ru0->ru.ru_utime.tv_sec),
- (int) (ru1.ru.ru_utime.tv_usec - ru0->ru.ru_utime.tv_usec) / 10000,
+ (int) (ru1.ru.ru_utime.tv_usec - ru0->ru.ru_utime.tv_usec) / 10000,
(int) (ru1.tv.tv_sec - ru0->tv.tv_sec),
(int) (ru1.tv.tv_usec - ru0->tv.tv_usec) / 10000);
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index 38405f6c6cb..8431dcdb0f4 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -18,8 +18,8 @@
*
* We can limit the storage for page free space to MaxFSMPages entries,
* since that's the most the free space map will be willing to remember
- * anyway. If the relation has fewer than that many pages with free space,
- * life is easy: just build an array of per-page info. If it has more,
+ * anyway. If the relation has fewer than that many pages with free space,
+ * life is easy: just build an array of per-page info. If it has more,
* we store the free space info as a heap ordered by amount of free space,
* so that we can discard the pages with least free space to ensure we never
* have more than MaxFSMPages entries in all. The surviving page entries
@@ -31,7 +31,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.8 2001/09/29 04:02:22 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v 1.9 2001/10/25 05:49:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -51,7 +51,7 @@
* Space/time tradeoff parameters: do these need to be user-tunable?
*
* A page with less than PAGE_SPACE_THRESHOLD free space will be forgotten
- * immediately, and not even passed to the free space map. Removing the
+ * immediately, and not even 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
* MultiRecordFreeSpace. Since the FSM will ignore pages below its own
@@ -74,21 +74,21 @@
typedef struct LVRelStats
{
/* Overall statistics about rel */
- BlockNumber rel_pages;
+ BlockNumber rel_pages;
double rel_tuples;
- BlockNumber nonempty_pages; /* actually, last nonempty page + 1 */
+ BlockNumber nonempty_pages; /* actually, last nonempty page + 1 */
/* List of TIDs of tuples we intend to delete */
/* NB: this list is ordered by TID address */
- int num_dead_tuples; /* current # of entries */
- int max_dead_tuples; /* # slots allocated in array */
- ItemPointer dead_tuples; /* array of ItemPointerData */
+ int num_dead_tuples; /* current # of entries */
+ int max_dead_tuples; /* # slots allocated in array */
+ ItemPointer dead_tuples; /* array of ItemPointerData */
/* Array or heap of per-page info about free space */
/* We use a simple array until it fills up, then convert to heap */
- bool fs_is_heap; /* are we using heap organization? */
- int num_free_pages; /* current # of entries */
- int max_free_pages; /* # slots allocated in arrays */
- BlockNumber *free_pages; /* array or heap of block numbers */
- Size *free_spaceavail; /* array or heap of available space */
+ bool fs_is_heap; /* are we using heap organization? */
+ int num_free_pages; /* current # of entries */
+ int max_free_pages; /* # slots allocated in arrays */
+ BlockNumber *free_pages; /* array or heap of block numbers */
+ Size *free_spaceavail; /* array or heap of available space */
} LVRelStats;
@@ -100,20 +100,20 @@ static TransactionId FreezeLimit;
/* non-export function prototypes */
static void lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
- Relation *Irel, int nindexes);
+ Relation *Irel, int nindexes);
static void lazy_vacuum_heap(Relation onerel, LVRelStats *vacrelstats);
static void lazy_scan_index(Relation indrel, LVRelStats *vacrelstats);
static void lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats);
-static int lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
- int tupindex, LVRelStats *vacrelstats);
+static int lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
+ int tupindex, LVRelStats *vacrelstats);
static void lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats);
static BlockNumber count_nondeletable_pages(Relation onerel,
- LVRelStats *vacrelstats);
+ LVRelStats *vacrelstats);
static void lazy_space_alloc(LVRelStats *vacrelstats, BlockNumber relblocks);
static void lazy_record_dead_tuple(LVRelStats *vacrelstats,
- ItemPointer itemptr);
+ ItemPointer itemptr);
static void lazy_record_free_space(LVRelStats *vacrelstats,
- BlockNumber page, Size avail);
+ BlockNumber page, Size avail);
static bool lazy_tid_reaped(ItemPointer itemptr, void *state);
static bool dummy_tid_reaped(ItemPointer itemptr, void *state);
static void lazy_update_fsm(Relation onerel, LVRelStats *vacrelstats);
@@ -136,7 +136,7 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt)
Relation *Irel;
int nindexes;
bool hasindex;
- BlockNumber possibly_freeable;
+ BlockNumber possibly_freeable;
/* initialize */
if (vacstmt->verbose)
@@ -163,8 +163,8 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt)
/*
* Optionally truncate the relation.
*
- * Don't even think about it unless we have a shot at releasing a
- * goodly number of pages. Otherwise, the time taken isn't worth it.
+ * Don't even think about it unless we have a shot at releasing a goodly
+ * number of pages. Otherwise, the time taken isn't worth it.
*/
possibly_freeable = vacrelstats->rel_pages - vacrelstats->nonempty_pages;
if (possibly_freeable > vacrelstats->rel_pages / REL_TRUNCATE_FRACTION)
@@ -195,7 +195,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
blkno;
HeapTupleData tuple;
char *relname;
- BlockNumber empty_pages,
+ BlockNumber empty_pages,
changed_pages;
double num_tuples,
tups_vacuumed,
@@ -231,8 +231,9 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
int prev_dead_count;
/*
- * If we are close to overrunning the available space for dead-tuple
- * TIDs, pause and do a cycle of vacuuming before we tackle this page.
+ * If we are close to overrunning the available space for
+ * dead-tuple TIDs, pause and do a cycle of vacuuming before we
+ * tackle this page.
*/
if ((vacrelstats->max_dead_tuples - vacrelstats->num_dead_tuples) < MAX_TUPLES_PER_PAGE &&
vacrelstats->num_dead_tuples > 0)
@@ -312,17 +313,18 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
switch (HeapTupleSatisfiesVacuum(tuple.t_data, OldestXmin))
{
case HEAPTUPLE_DEAD:
- tupgone = true; /* we can delete the tuple */
+ tupgone = true; /* we can delete the tuple */
break;
case HEAPTUPLE_LIVE:
+
/*
- * Tuple is good. Consider whether to replace its xmin
- * value with FrozenTransactionId.
+ * Tuple is good. Consider whether to replace its
+ * xmin value with FrozenTransactionId.
*
- * NB: Since we hold only a shared buffer lock here,
- * we are assuming that TransactionId read/write
- * is atomic. This is not the only place that makes
- * such an assumption. It'd be possible to avoid the
+ * NB: Since we hold only a shared buffer lock here, we
+ * are assuming that TransactionId read/write is
+ * atomic. This is not the only place that makes such
+ * an assumption. It'd be possible to avoid the
* assumption by momentarily acquiring exclusive lock,
* but for the moment I see no need to.
*/
@@ -337,9 +339,10 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
}
break;
case HEAPTUPLE_RECENTLY_DEAD:
+
/*
- * If tuple is recently deleted then we must not remove
- * it from relation.
+ * If tuple is recently deleted then we must not
+ * remove it from relation.
*/
nkeep += 1;
break;
@@ -376,11 +379,11 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
num_tuples += 1;
hastup = true;
}
- } /* scan along page */
+ } /* scan along page */
/*
- * If we remembered any tuples for deletion, then the page will
- * be visited again by lazy_vacuum_heap, which will compute and
+ * If we remembered any tuples for deletion, then the page will be
+ * visited again by lazy_vacuum_heap, which will compute and
* record its post-compaction free space. If not, then we're done
* with this page, so remember its free space as-is.
*/
@@ -418,7 +421,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
/* Remove tuples from heap */
lazy_vacuum_heap(onerel, vacrelstats);
}
- else if (! did_vacuum_index)
+ else if (!did_vacuum_index)
{
/* Scan indexes just to update pg_class statistics about them */
for (i = 0; i < nindexes; i++)
@@ -457,7 +460,7 @@ lazy_vacuum_heap(Relation onerel, LVRelStats *vacrelstats)
tupindex = 0;
while (tupindex < vacrelstats->num_dead_tuples)
{
- BlockNumber tblk;
+ BlockNumber tblk;
Buffer buf;
Page page;
@@ -493,7 +496,7 @@ static int
lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
int tupindex, LVRelStats *vacrelstats)
{
- OffsetNumber unbuf[BLCKSZ/sizeof(OffsetNumber)];
+ OffsetNumber unbuf[BLCKSZ / sizeof(OffsetNumber)];
OffsetNumber *unused = unbuf;
int uncnt;
Page page = BufferGetPage(buffer);
@@ -502,8 +505,8 @@ lazy_vacuum_page(Relation onerel, BlockNumber blkno, Buffer buffer,
START_CRIT_SECTION();
for (; tupindex < vacrelstats->num_dead_tuples; tupindex++)
{
- BlockNumber tblk;
- OffsetNumber toff;
+ BlockNumber tblk;
+ OffsetNumber toff;
tblk = ItemPointerGetBlockNumber(&vacrelstats->dead_tuples[tupindex]);
if (tblk != blkno)
@@ -542,10 +545,10 @@ lazy_scan_index(Relation indrel, LVRelStats *vacrelstats)
vac_init_rusage(&ru0);
/*
- * If the index is not partial, skip the scan, and just assume it
- * has the same number of tuples as the heap.
+ * If the index is not partial, skip the scan, and just assume it has
+ * the same number of tuples as the heap.
*/
- if (! vac_is_partial_index(indrel))
+ if (!vac_is_partial_index(indrel))
{
vac_update_relstats(RelationGetRelid(indrel),
RelationGetNumberOfBlocks(indrel),
@@ -555,23 +558,23 @@ lazy_scan_index(Relation indrel, LVRelStats *vacrelstats)
}
/*
- * If index is unsafe for concurrent access, must lock it;
- * but a shared lock should be sufficient.
+ * If index is unsafe for concurrent access, must lock it; but a
+ * shared lock should be sufficient.
*/
- if (! indrel->rd_am->amconcurrent)
+ if (!indrel->rd_am->amconcurrent)
LockRelation(indrel, AccessShareLock);
/*
* Even though we're not planning to delete anything, use the
- * ambulkdelete call, so that the scan happens within the index AM
- * for more speed.
+ * ambulkdelete call, so that the scan happens within the index AM for
+ * more speed.
*/
stats = index_bulk_delete(indrel, dummy_tid_reaped, NULL);
/*
* Release lock acquired above.
*/
- if (! indrel->rd_am->amconcurrent)
+ if (!indrel->rd_am->amconcurrent)
UnlockRelation(indrel, AccessShareLock);
if (!stats)
@@ -610,7 +613,7 @@ lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats)
/*
* If index is unsafe for concurrent access, must lock it.
*/
- if (! indrel->rd_am->amconcurrent)
+ if (!indrel->rd_am->amconcurrent)
LockRelation(indrel, AccessExclusiveLock);
/* Do bulk deletion */
@@ -619,7 +622,7 @@ lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats)
/*
* Release lock acquired above.
*/
- if (! indrel->rd_am->amconcurrent)
+ if (!indrel->rd_am->amconcurrent)
UnlockRelation(indrel, AccessExclusiveLock);
/* now update statistics in pg_class */
@@ -644,8 +647,8 @@ lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats)
static void
lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats)
{
- BlockNumber old_rel_pages = vacrelstats->rel_pages;
- BlockNumber new_rel_pages;
+ BlockNumber old_rel_pages = vacrelstats->rel_pages;
+ BlockNumber new_rel_pages;
BlockNumber *pages;
Size *spaceavail;
int n;
@@ -656,12 +659,13 @@ lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats)
vac_init_rusage(&ru0);
/*
- * We need full exclusive lock on the relation in order to do truncation.
- * If we can't get it, give up rather than waiting --- we don't want
- * to block other backends, and we don't want to deadlock (which is
- * quite possible considering we already hold a lower-grade lock).
+ * We need full exclusive lock on the relation in order to do
+ * truncation. If we can't get it, give up rather than waiting --- we
+ * don't want to block other backends, and we don't want to deadlock
+ * (which is quite possible considering we already hold a lower-grade
+ * lock).
*/
- if (! ConditionalLockRelation(onerel, AccessExclusiveLock))
+ if (!ConditionalLockRelation(onerel, AccessExclusiveLock))
return;
/*
@@ -680,9 +684,9 @@ lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats)
/*
* Scan backwards from the end to verify that the end pages actually
- * contain nothing we need to keep. This is *necessary*, not optional,
- * because other backends could have added tuples to these pages whilst
- * we were vacuuming.
+ * contain nothing we need to keep. This is *necessary*, not
+ * optional, because other backends could have added tuples to these
+ * pages whilst we were vacuuming.
*/
new_rel_pages = count_nondeletable_pages(onerel, vacrelstats);
@@ -710,9 +714,10 @@ lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats)
* Do the physical truncation.
*/
new_rel_pages = smgrtruncate(DEFAULT_SMGR, onerel, new_rel_pages);
- onerel->rd_nblocks = new_rel_pages; /* update relcache immediately */
+ onerel->rd_nblocks = new_rel_pages; /* update relcache immediately */
onerel->rd_targblock = InvalidBlockNumber;
- vacrelstats->rel_pages = new_rel_pages; /* save new number of blocks */
+ vacrelstats->rel_pages = new_rel_pages; /* save new number of
+ * blocks */
/*
* Drop free-space info for removed blocks; these must not get entered
@@ -808,15 +813,16 @@ count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats)
switch (HeapTupleSatisfiesVacuum(tuple.t_data, OldestXmin))
{
case HEAPTUPLE_DEAD:
- tupgone = true; /* we can delete the tuple */
+ tupgone = true; /* we can delete the tuple */
break;
case HEAPTUPLE_LIVE:
/* Shouldn't be necessary to re-freeze anything */
break;
case HEAPTUPLE_RECENTLY_DEAD:
+
/*
- * If tuple is recently deleted then we must not remove
- * it from relation.
+ * If tuple is recently deleted then we must not
+ * remove it from relation.
*/
break;
case HEAPTUPLE_INSERT_IN_PROGRESS:
@@ -839,7 +845,7 @@ count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats)
hastup = true;
break; /* can stop scanning */
}
- } /* scan along page */
+ } /* scan along page */
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
@@ -855,8 +861,8 @@ count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats)
/*
* If we fall out of the loop, all the previously-thought-to-be-empty
- * pages really are; we need not bother to look at the last known-nonempty
- * page.
+ * pages really are; we need not bother to look at the last
+ * known-nonempty page.
*/
return vacrelstats->nonempty_pages;
}
@@ -907,9 +913,9 @@ lazy_record_dead_tuple(LVRelStats *vacrelstats,
ItemPointer itemptr)
{
/*
- * The array shouldn't overflow under normal behavior,
- * but perhaps it could if we are given a really small VacuumMem.
- * In that case, just forget the last few tuples.
+ * The array shouldn't overflow under normal behavior, but perhaps it
+ * could if we are given a really small VacuumMem. In that case, just
+ * forget the last few tuples.
*/
if (vacrelstats->num_dead_tuples < vacrelstats->max_dead_tuples)
{
@@ -960,29 +966,29 @@ lazy_record_free_space(LVRelStats *vacrelstats,
*/
/* If we haven't yet converted the array to heap organization, do it */
- if (! vacrelstats->fs_is_heap)
+ if (!vacrelstats->fs_is_heap)
{
/*
* Scan backwards through the array, "sift-up" each value into its
- * correct position. We can start the scan at n/2-1 since each entry
- * above that position has no children to worry about.
+ * correct position. We can start the scan at n/2-1 since each
+ * entry above that position has no children to worry about.
*/
- int l = n / 2;
+ int l = n / 2;
while (--l >= 0)
{
- BlockNumber R = pages[l];
+ BlockNumber R = pages[l];
Size K = spaceavail[l];
int i; /* i is where the "hole" is */
i = l;
for (;;)
{
- int j = 2*i + 1;
+ int j = 2 * i + 1;
if (j >= n)
break;
- if (j+1 < n && spaceavail[j] > spaceavail[j+1])
+ if (j + 1 < n && spaceavail[j] > spaceavail[j + 1])
j++;
if (K <= spaceavail[j])
break;
@@ -1001,20 +1007,20 @@ lazy_record_free_space(LVRelStats *vacrelstats,
if (avail > spaceavail[0])
{
/*
- * Notionally, we replace the zero'th entry with the new data,
- * and then sift-up to maintain the heap property. Physically,
- * the new data doesn't get stored into the arrays until we find
- * the right location for it.
+ * Notionally, we replace the zero'th entry with the new data, and
+ * then sift-up to maintain the heap property. Physically, the
+ * new data doesn't get stored into the arrays until we find the
+ * right location for it.
*/
- int i = 0; /* i is where the "hole" is */
+ int i = 0; /* i is where the "hole" is */
for (;;)
{
- int j = 2*i + 1;
+ int j = 2 * i + 1;
if (j >= n)
break;
- if (j+1 < n && spaceavail[j] > spaceavail[j+1])
+ if (j + 1 < n && spaceavail[j] > spaceavail[j + 1])
j++;
if (avail <= spaceavail[j])
break;
@@ -1038,7 +1044,7 @@ static bool
lazy_tid_reaped(ItemPointer itemptr, void *state)
{
LVRelStats *vacrelstats = (LVRelStats *) state;
- ItemPointer res;
+ ItemPointer res;
res = (ItemPointer) bsearch((void *) itemptr,
(void *) vacrelstats->dead_tuples,
@@ -1066,9 +1072,9 @@ static void
lazy_update_fsm(Relation onerel, LVRelStats *vacrelstats)
{
/*
- * Since MultiRecordFreeSpace doesn't currently impose any restrictions
- * on the ordering of the input, we can just pass it the arrays as-is,
- * whether they are in heap or linear order.
+ * Since MultiRecordFreeSpace doesn't currently impose any
+ * restrictions on the ordering of the input, we can just pass it the
+ * arrays as-is, whether they are in heap or linear order.
*/
MultiRecordFreeSpace(&onerel->rd_node,
0, MaxBlockNumber,
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 9da67760745..4ed17e8fbe6 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.54 2001/10/18 17:30:14 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.55 2001/10/25 05:49:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -334,9 +334,10 @@ set_default_datestyle(void)
*/
DBDate = strdup(DBDate);
- /* Parse desired setting into DateStyle/EuroDates
- * Use parse_datestyle_internal() to avoid any palloc() issues per above
- * - thomas 2001-10-15
+ /*
+ * Parse desired setting into DateStyle/EuroDates Use
+ * parse_datestyle_internal() to avoid any palloc() issues per above -
+ * thomas 2001-10-15
*/
parse_datestyle_internal(DBDate);
@@ -380,7 +381,7 @@ parse_timezone(List *args)
foreach(arg, args)
{
- A_Const *p;
+ A_Const *p;
Assert(IsA(arg, List));
p = lfirst(arg);
@@ -394,24 +395,28 @@ parse_timezone(List *args)
Interval *interval;
interval = DatumGetIntervalP(DirectFunctionCall3(interval_in,
- CStringGetDatum(p->val.val.str),
- ObjectIdGetDatum(InvalidOid),
- Int32GetDatum(-1)));
+ CStringGetDatum(p->val.val.str),
+ ObjectIdGetDatum(InvalidOid),
+ Int32GetDatum(-1)));
if (interval->month != 0)
elog(ERROR, "SET TIME ZONE illegal INTERVAL; month not allowed");
CTimeZone = interval->time;
}
else if (strcmp(type->name, "float8") == 0)
{
- float8 time;
+ float8 time;
time = DatumGetFloat8(DirectFunctionCall1(float8in, CStringGetDatum(p->val.val.str)));
CTimeZone = time * 3600;
}
- /* We do not actually generate an integer constant in gram.y so this is not used... */
+
+ /*
+ * We do not actually generate an integer constant in gram.y
+ * so this is not used...
+ */
else if (strcmp(type->name, "int4") == 0)
{
- int32 time;
+ int32 time;
time = p->val.val.ival;
CTimeZone = time * 3600;
@@ -462,11 +467,11 @@ parse_timezone(List *args)
static bool
show_timezone(void)
{
- char *tzn;
+ char *tzn;
if (HasCTZSet)
{
- Interval interval;
+ Interval interval;
interval.month = 0;
interval.time = CTimeZone;
@@ -474,9 +479,7 @@ show_timezone(void)
tzn = DatumGetCString(DirectFunctionCall1(interval_out, IntervalPGetDatum(&interval)));
}
else
- {
tzn = getenv("TZ");
- }
if (tzn != NULL)
elog(NOTICE, "Time zone is '%s'", tzn);
@@ -500,9 +503,7 @@ static bool
reset_timezone(void)
{
if (HasCTZSet)
- {
HasCTZSet = false;
- }
/* no time zone has been set in this session? */
else if (defaultTZ == NULL)
@@ -545,7 +546,7 @@ reset_timezone(void)
static bool
parse_XactIsoLevel(List *args)
{
- char *value;
+ char *value;
if (args == NULL)
return reset_XactIsoLevel();
@@ -603,8 +604,8 @@ reset_XactIsoLevel(void)
static bool
parse_random_seed(List *args)
{
- char *value;
- double seed = 0;
+ char *value;
+ double seed = 0;
if (args == NULL)
return reset_random_seed();
@@ -648,9 +649,10 @@ reset_random_seed(void)
static bool
parse_client_encoding(List *args)
{
- char *value;
+ char *value;
+
#ifdef MULTIBYTE
- int encoding;
+ int encoding;
#endif
if (args == NULL)
@@ -679,7 +681,7 @@ parse_client_encoding(List *args)
}
#else
if (value &&
- strcasecmp(value, pg_get_client_encoding_name()) != 0)
+ strcasecmp(value, pg_get_client_encoding_name()) != 0)
elog(ERROR, "Client encoding %s is not supported", value);
#endif
return TRUE;
@@ -766,14 +768,14 @@ SetPGVariable(const char *name, List *args)
parse_random_seed(args);
else
{
- /* For routines defined somewhere else,
- * go ahead and extract the string argument
- * to match the original interface definition.
+ /*
+ * For routines defined somewhere else, go ahead and extract the
+ * string argument to match the original interface definition.
* Later, we can change this code too...
*/
- char *value;
+ char *value;
- value = ((args != NULL)? ((A_Const *) lfirst(args))->val.val.str: NULL);
+ value = ((args != NULL) ? ((A_Const *) lfirst(args))->val.val.str : NULL);
if (strcasecmp(name, "session_authorization") == 0)
SetSessionAuthorization(value);
diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c
index 2bb9fd75a73..9d1254a4cb0 100644
--- a/src/backend/commands/view.c
+++ b/src/backend/commands/view.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: view.c,v 1.57 2001/08/16 20:38:53 tgl Exp $
+ * $Id: view.c,v 1.58 2001/10/25 05:49:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -131,7 +131,6 @@ DefineViewRules(char *viewName, Query *viewParse)
RuleStmt *replace_rule;
RuleStmt *append_rule;
RuleStmt *delete_rule;
-
#endif
retrieve_rule = FormViewRetrieveRule(viewName, viewParse);
@@ -141,7 +140,6 @@ DefineViewRules(char *viewName, Query *viewParse)
replace_rule = FormViewReplaceRule(viewName, viewParse);
append_rule = FormViewAppendRule(viewName, viewParse);
delete_rule = FormViewDeleteRule(viewName, viewParse);
-
#endif
DefineQueryRewrite(retrieve_rule);
@@ -229,7 +227,6 @@ UpdateRangeTableOfViewParse(char *viewName, Query *viewParse)
void
DefineView(char *viewName, Query *viewParse)
{
-
/*
* Create the "view" relation NOTE: if it already exists, the xact
* will be aborted.
@@ -264,7 +261,6 @@ DefineView(char *viewName, Query *viewParse)
void
RemoveView(char *viewName)
{
-
/*
* We just have to drop the relation; the associated rules will be
* cleaned up automatically.
diff --git a/src/backend/executor/_deadcode/nodeTee.c b/src/backend/executor/_deadcode/nodeTee.c
index 5ec43e377e4..dd7460634e3 100644
--- a/src/backend/executor/_deadcode/nodeTee.c
+++ b/src/backend/executor/_deadcode/nodeTee.c
@@ -15,7 +15,7 @@
* ExecInitTee
* ExecEndTee
*
- * $Id: nodeTee.c,v 1.10 2001/03/22 06:16:13 momjian Exp $
+ * $Id: nodeTee.c,v 1.11 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -336,7 +336,6 @@ ExecTee(Tee * node, Plan *parent)
slot = ExecProcNode(childNode, (Plan *) node);
if (!TupIsNull(slot))
{
-
/*
* heap_insert changes something...
*/
@@ -361,7 +360,6 @@ ExecTee(Tee * node, Plan *parent)
teeState->tee_leftScanDesc : teeState->tee_rightScanDesc;
{
-
/*
* move the scandesc forward so we don't re-read this
* tuple later
diff --git a/src/backend/executor/execAmi.c b/src/backend/executor/execAmi.c
index 6303613faa9..af0e190d396 100644
--- a/src/backend/executor/execAmi.c
+++ b/src/backend/executor/execAmi.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: execAmi.c,v 1.59 2001/09/18 01:59:06 tgl Exp $
+ * $Id: execAmi.c,v 1.60 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -224,7 +224,6 @@ ExecCloseR(Plan *node)
for (i = 0; i < numIndices; i++)
{
-
/*
* shut down each of the index scans and close each of the
* index relations
@@ -410,7 +409,7 @@ ExecMarkPos(Plan *node)
{
switch (nodeTag(node))
{
- case T_SeqScan:
+ case T_SeqScan:
ExecSeqMarkPos((SeqScan *) node);
break;
@@ -452,7 +451,7 @@ ExecRestrPos(Plan *node)
{
switch (nodeTag(node))
{
- case T_SeqScan:
+ case T_SeqScan:
ExecSeqRestrPos((SeqScan *) node);
break;
diff --git a/src/backend/executor/execFlatten.c b/src/backend/executor/execFlatten.c
index 3be50c09bb1..8d1eaea4023 100644
--- a/src/backend/executor/execFlatten.c
+++ b/src/backend/executor/execFlatten.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/Attic/execFlatten.c,v 1.14 2001/01/24 19:42:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/Attic/execFlatten.c,v 1.15 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -33,7 +33,6 @@
#ifdef SETS_FIXED
static bool FjoinBumpOuterNodes(TargetEntry *tlist, ExprContext *econtext,
DatumPtr results, char *nulls);
-
#endif
@@ -81,7 +80,6 @@ ExecEvalFjoin(TargetEntry *tlist,
*/
if (!fjNode->fj_initialized)
{
-
/*
* Initialize all of the Outer nodes
*/
@@ -127,7 +125,6 @@ ExecEvalFjoin(TargetEntry *tlist,
}
else
{
-
/*
* If we're already initialized, all we need to do is get the next
* inner result and pair it up with the existing outer node result
@@ -242,5 +239,4 @@ FjoinBumpOuterNodes(TargetEntry *tlist,
}
return false;
}
-
#endif
diff --git a/src/backend/executor/execJunk.c b/src/backend/executor/execJunk.c
index 68dc74a3a86..1a110154986 100644
--- a/src/backend/executor/execJunk.c
+++ b/src/backend/executor/execJunk.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execJunk.c,v 1.28 2001/05/27 20:48:51 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execJunk.c,v 1.29 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -111,7 +111,6 @@ ExecInitJunkFilter(List *targetList, TupleDesc tupType,
resjunk = resdom->resjunk;
if (!resjunk)
{
-
/*
* make a copy of the resdom node, changing its resno.
*/
diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c
index 6b1db391eeb..6e1145ac779 100644
--- a/src/backend/executor/execMain.c
+++ b/src/backend/executor/execMain.c
@@ -27,7 +27,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.148 2001/09/18 01:59:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.149 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -287,7 +287,6 @@ ExecutorEnd(QueryDesc *queryDesc, EState *estate)
static void
ExecCheckQueryPerms(CmdType operation, Query *parseTree, Plan *plan)
{
-
/*
* Check RTEs in the query's primary rangetable.
*/
@@ -428,7 +427,6 @@ ExecCheckRTEPerms(RangeTblEntry *rte, CmdType operation)
if (rte->checkForWrite)
{
-
/*
* Note: write access in a SELECT context means SELECT FOR UPDATE.
* Right now we don't distinguish that from true update as far as
@@ -521,7 +519,6 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
if (resultRelations != NIL)
{
-
/*
* Multiple result relations (due to inheritance)
* parseTree->resultRelations identifies them all
@@ -544,7 +541,6 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
}
else
{
-
/*
* Single result relation identified by
* parseTree->resultRelation
@@ -564,7 +560,6 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
}
else
{
-
/*
* if no result relation, then set state appropriately
*/
@@ -599,9 +594,9 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
/*
* initialize the executor "tuple" table. We need slots for all the
- * plan nodes, plus possibly output slots for the junkfilter(s).
- * At this point we aren't sure if we need junkfilters, so just add
- * slots for them unconditionally.
+ * plan nodes, plus possibly output slots for the junkfilter(s). At
+ * this point we aren't sure if we need junkfilters, so just add slots
+ * for them unconditionally.
*/
{
int nSlots = ExecCountSlotsNode(plan);
@@ -669,7 +664,6 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
if (junk_filter_needed)
{
-
/*
* If there are multiple result relations, each one needs its
* own junk filter. Note this is only possible for
@@ -694,7 +688,7 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
j = ExecInitJunkFilter(subplan->targetlist,
ExecGetTupType(subplan),
- ExecAllocTableSlot(estate->es_tupleTable));
+ ExecAllocTableSlot(estate->es_tupleTable));
resultRelInfo->ri_junkFilter = j;
resultRelInfo++;
subplans = lnext(subplans);
@@ -714,7 +708,7 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
j = ExecInitJunkFilter(plan->targetlist,
tupType,
- ExecAllocTableSlot(estate->es_tupleTable));
+ ExecAllocTableSlot(estate->es_tupleTable));
estate->es_junkFilter = j;
if (estate->es_result_relation_info)
estate->es_result_relation_info->ri_junkFilter = j;
@@ -741,13 +735,11 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
if (!parseTree->isPortal)
{
-
/*
* a select into table
*/
if (parseTree->into != NULL)
{
-
/*
* create the "into" relation
*/
@@ -1101,7 +1093,7 @@ lnext: ;
newTuple = ExecRemoveJunk(junkfilter, slot);
slot = ExecStoreTuple(newTuple, /* tuple to store */
- junkfilter->jf_resultSlot, /* dest slot */
+ junkfilter->jf_resultSlot, /* dest slot */
InvalidBuffer, /* this tuple has no
* buffer */
true); /* tuple should be pfreed */
@@ -1234,7 +1226,7 @@ ExecAppend(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;
@@ -1245,7 +1237,6 @@ ExecAppend(TupleTableSlot *slot,
if (newtuple != tuple) /* modified by Trigger(s) */
{
-
/*
* Insert modified tuple into tuple table slot, replacing the
* original. We assume that it was allocated in per-tuple
@@ -1314,7 +1305,7 @@ ExecDelete(TupleTableSlot *slot,
/* BEFORE ROW DELETE Triggers */
if (resultRelInfo->ri_TrigDesc &&
- resultRelInfo->ri_TrigDesc->n_before_row[TRIGGER_EVENT_DELETE] > 0)
+ resultRelInfo->ri_TrigDesc->n_before_row[TRIGGER_EVENT_DELETE] > 0)
{
bool dodelete;
@@ -1421,7 +1412,7 @@ ExecReplace(TupleTableSlot *slot,
/* BEFORE ROW UPDATE Triggers */
if (resultRelInfo->ri_TrigDesc &&
- resultRelInfo->ri_TrigDesc->n_before_row[TRIGGER_EVENT_UPDATE] > 0)
+ resultRelInfo->ri_TrigDesc->n_before_row[TRIGGER_EVENT_UPDATE] > 0)
{
HeapTuple newtuple;
@@ -1433,7 +1424,6 @@ ExecReplace(TupleTableSlot *slot,
if (newtuple != tuple) /* modified by Trigger(s) */
{
-
/*
* Insert modified tuple into tuple table slot, replacing the
* original. We assume that it was allocated in per-tuple
@@ -1448,11 +1438,11 @@ ExecReplace(TupleTableSlot *slot,
/*
* Check the constraints of the tuple
*
- * If we generate a new candidate tuple after EvalPlanQual testing,
- * we must loop back here and recheck constraints. (We don't need to
- * redo triggers, however. If there are any BEFORE triggers then
- * trigger.c will have done mark4update to lock the correct tuple,
- * so there's no need to do them again.)
+ * If we generate a new candidate tuple after EvalPlanQual testing, we
+ * must loop back here and recheck constraints. (We don't need to
+ * redo triggers, however. If there are any BEFORE triggers then
+ * trigger.c will have done mark4update to lock the correct tuple, so
+ * there's no need to do them again.)
*/
lreplace:;
if (resultRelationDesc->rd_att->constr)
@@ -1483,7 +1473,7 @@ lreplace:;
*tupleid = ctid;
tuple = ExecRemoveJunk(estate->es_junkFilter, epqslot);
slot = ExecStoreTuple(tuple,
- estate->es_junkFilter->jf_resultSlot,
+ estate->es_junkFilter->jf_resultSlot,
InvalidBuffer, true);
goto lreplace;
}
@@ -1641,9 +1631,7 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
*/
if (estate->es_result_relation_info != NULL &&
estate->es_result_relation_info->ri_RangeTableIndex == rti)
- {
relation = estate->es_result_relation_info->ri_RelationDesc;
- }
else
{
List *l;
@@ -1724,7 +1712,7 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
*tid = tuple.t_self;
/*
- * Need to run a recheck subquery. Find or create a PQ stack entry.
+ * Need to run a recheck subquery. Find or create a PQ stack entry.
*/
epq = (evalPlanQual *) estate->es_evalPlanQual;
rtsize = length(estate->es_range_table);
@@ -1782,18 +1770,20 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
{
newepq = (evalPlanQual *) palloc(sizeof(evalPlanQual));
newepq->free = NULL;
+
/*
- * Each stack level has its own copy of the plan tree. This
+ * Each stack level has its own copy of the plan tree. This
* is wasteful, but necessary as long as plan nodes point to
- * exec state nodes rather than vice versa. Note that copyfuncs.c
- * doesn't attempt to copy the exec state nodes, which is a good
- * thing in this situation.
+ * exec state nodes rather than vice versa. Note that
+ * copyfuncs.c doesn't attempt to copy the exec state nodes,
+ * which is a good thing in this situation.
*/
newepq->plan = copyObject(estate->es_origPlan);
+
/*
* Init stack level's EState. We share top level's copy of
- * es_result_relations array and other non-changing status.
- * We need our own tupletable, es_param_exec_vals, and other
+ * es_result_relations array and other non-changing status. We
+ * need our own tupletable, es_param_exec_vals, and other
* changeable state.
*/
epqstate = &(newepq->estate);
@@ -1805,11 +1795,12 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
sizeof(ParamExecData));
epqstate->es_tupleTable = NULL;
epqstate->es_per_tuple_exprcontext = NULL;
+
/*
- * 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 *) palloc(rtsize * sizeof(bool));
if (epq == NULL)
@@ -1842,12 +1833,12 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
epqstate = &(epq->estate);
/*
- * Ok - we're requested for the same RTE. Unfortunately we still
- * have to end and restart execution of the plan, because ExecReScan
+ * Ok - we're requested for the same RTE. Unfortunately we still have
+ * to end and restart execution of the plan, because ExecReScan
* wouldn't ensure that upper plan nodes would reset themselves. We
- * could make that work if insertion of the target tuple were integrated
- * with the Param mechanism somehow, so that the upper plan nodes know
- * that their children's outputs have changed.
+ * could make that work if insertion of the target tuple were
+ * integrated with the Param mechanism somehow, so that the upper plan
+ * nodes know that their children's outputs have changed.
*/
if (endNode)
{
@@ -1858,8 +1849,8 @@ EvalPlanQual(EState *estate, Index rti, ItemPointer tid)
}
/*
- * free old RTE' tuple, if any, and store target tuple where relation's
- * scan node will see it
+ * free old RTE' tuple, if any, and store target tuple where
+ * relation's scan node will see it
*/
if (epqstate->es_evTuple[rti - 1] != NULL)
heap_freetuple(epqstate->es_evTuple[rti - 1]);
diff --git a/src/backend/executor/execProcnode.c b/src/backend/executor/execProcnode.c
index 0d66cd76c19..5cbd2ea5622 100644
--- a/src/backend/executor/execProcnode.c
+++ b/src/backend/executor/execProcnode.c
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execProcnode.c,v 1.27 2001/09/18 01:59:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execProcnode.c,v 1.28 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -267,9 +267,9 @@ ExecProcNode(Plan *node, Plan *parent)
switch (nodeTag(node))
{
- /*
- * control nodes
- */
+ /*
+ * control nodes
+ */
case T_Result:
result = ExecResult((Result *) node);
break;
@@ -473,9 +473,9 @@ ExecEndNode(Plan *node, Plan *parent)
switch (nodeTag(node))
{
- /*
- * control nodes
- */
+ /*
+ * control nodes
+ */
case T_Result:
ExecEndResult((Result *) node);
break;
diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c
index ea32b5ab1d2..f78517b1848 100644
--- a/src/backend/executor/execQual.c
+++ b/src/backend/executor/execQual.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.88 2001/09/21 00:11:30 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.89 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -62,9 +62,9 @@ static Datum ExecEvalOr(Expr *orExpr, ExprContext *econtext, bool *isNull);
static Datum ExecEvalCase(CaseExpr *caseExpr, ExprContext *econtext,
bool *isNull, ExprDoneCond *isDone);
static Datum ExecEvalNullTest(NullTest *ntest, ExprContext *econtext,
- bool *isNull, ExprDoneCond *isDone);
+ bool *isNull, ExprDoneCond *isDone);
static Datum ExecEvalBooleanTest(BooleanTest *btest, ExprContext *econtext,
- bool *isNull, ExprDoneCond *isDone);
+ bool *isNull, ExprDoneCond *isDone);
/*----------
@@ -126,7 +126,6 @@ ExecEvalArrayRef(ArrayRef *arrayRef,
}
else
{
-
/*
* Empty refexpr indicates we are doing an INSERT into an array
* column. For now, we just take the refassgnexpr (which the
@@ -339,9 +338,9 @@ ExecEvalVar(Var *variable, ExprContext *econtext, bool *isNull)
* the entire tuple; we give back a whole slot so that callers know
* what the tuple looks like.
*
- * 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
+ * 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
* TransactionCommandContext 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
@@ -434,7 +433,6 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
matchFound = 0;
if (paramList != NULL)
{
-
/*
* search for an entry in 'paramList' that matches the
* `expression'.
@@ -485,7 +483,6 @@ ExecEvalParam(Param *expression, ExprContext *econtext, bool *isNull)
if (!matchFound)
{
-
/*
* ooops! we couldn't find this parameter in the parameter list.
* Signal an error
@@ -1128,28 +1125,28 @@ ExecEvalNullTest(NullTest *ntest,
result = ExecEvalExpr(ntest->arg, econtext, isNull, isDone);
switch (ntest->nulltesttype)
- {
- case IS_NULL:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(true);
- }
- else
- return BoolGetDatum(false);
- case IS_NOT_NULL:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(false);
- }
- else
- return BoolGetDatum(true);
- default:
- elog(ERROR, "ExecEvalNullTest: unexpected nulltesttype %d",
- (int) ntest->nulltesttype);
- return (Datum) 0; /* keep compiler quiet */
- }
+ {
+ case IS_NULL:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(true);
+ }
+ else
+ return BoolGetDatum(false);
+ case IS_NOT_NULL:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(false);
+ }
+ else
+ return BoolGetDatum(true);
+ default:
+ elog(ERROR, "ExecEvalNullTest: unexpected nulltesttype %d",
+ (int) ntest->nulltesttype);
+ return (Datum) 0; /* keep compiler quiet */
+ }
}
/* ----------------------------------------------------------------
@@ -1168,68 +1165,68 @@ ExecEvalBooleanTest(BooleanTest *btest,
result = ExecEvalExpr(btest->arg, econtext, isNull, isDone);
switch (btest->booltesttype)
- {
- case IS_TRUE:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(false);
- }
- else if (DatumGetBool(result))
- return BoolGetDatum(true);
+ {
+ case IS_TRUE:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(false);
+ }
+ else if (DatumGetBool(result))
+ return BoolGetDatum(true);
else
- return BoolGetDatum(false);
- case IS_NOT_TRUE:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(true);
- }
- else if (DatumGetBool(result))
- return BoolGetDatum(false);
+ return BoolGetDatum(false);
+ case IS_NOT_TRUE:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(true);
+ }
+ else if (DatumGetBool(result))
+ return BoolGetDatum(false);
else
- return BoolGetDatum(true);
- case IS_FALSE:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(false);
- }
- else if (DatumGetBool(result))
- return BoolGetDatum(false);
+ return BoolGetDatum(true);
+ case IS_FALSE:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(false);
+ }
+ else if (DatumGetBool(result))
+ return BoolGetDatum(false);
else
- return BoolGetDatum(true);
- case IS_NOT_FALSE:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(true);
- }
- else if (DatumGetBool(result))
- return BoolGetDatum(true);
+ return BoolGetDatum(true);
+ case IS_NOT_FALSE:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(true);
+ }
+ else if (DatumGetBool(result))
+ return BoolGetDatum(true);
else
- return BoolGetDatum(false);
- case IS_UNKNOWN:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(true);
- }
+ return BoolGetDatum(false);
+ case IS_UNKNOWN:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(true);
+ }
else
- return BoolGetDatum(false);
- case IS_NOT_UNKNOWN:
- if (*isNull)
- {
- *isNull = false;
- return BoolGetDatum(false);
- }
+ return BoolGetDatum(false);
+ case IS_NOT_UNKNOWN:
+ if (*isNull)
+ {
+ *isNull = false;
+ return BoolGetDatum(false);
+ }
else
- return BoolGetDatum(true);
- default:
- elog(ERROR, "ExecEvalBooleanTest: unexpected booltesttype %d",
- (int) btest->booltesttype);
- return (Datum) 0; /* keep compiler quiet */
- }
+ return BoolGetDatum(true);
+ default:
+ elog(ERROR, "ExecEvalBooleanTest: unexpected booltesttype %d",
+ (int) btest->booltesttype);
+ return (Datum) 0; /* keep compiler quiet */
+ }
}
/* ----------------------------------------------------------------
@@ -1409,15 +1406,15 @@ ExecEvalExpr(Node *expression,
break;
case T_NullTest:
retDatum = ExecEvalNullTest((NullTest *) expression,
- econtext,
- isNull,
- isDone);
+ econtext,
+ isNull,
+ isDone);
break;
case T_BooleanTest:
retDatum = ExecEvalBooleanTest((BooleanTest *) expression,
- econtext,
- isNull,
- isDone);
+ econtext,
+ isNull,
+ isDone);
break;
default:
@@ -1665,7 +1662,7 @@ ExecTargetList(List *targetlist,
* generating multiple tuples, when one or more tlist items return
* sets. (We expect the caller to call us again if we return:
*
- * isDone = ExprMultipleResult.)
+ * isDone = ExprMultipleResult.)
*/
if (nodomains > NPREALLOCDOMAINS)
{
@@ -1774,13 +1771,11 @@ ExecTargetList(List *targetlist,
if (haveDoneSets)
{
-
/*
* note: can't get here unless we verified isDone != NULL
*/
if (*isDone == ExprSingleResult)
{
-
/*
* all sets are done, so report that tlist expansion is
* complete.
@@ -1792,7 +1787,6 @@ ExecTargetList(List *targetlist,
}
else
{
-
/*
* We have some done and some undone sets. Restart the done
* ones so that we can deliver a tuple (if possible).
@@ -1815,7 +1809,6 @@ 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.
diff --git a/src/backend/executor/execScan.c b/src/backend/executor/execScan.c
index 51a05a6457e..63aaa63858a 100644
--- a/src/backend/executor/execScan.c
+++ b/src/backend/executor/execScan.c
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execScan.c,v 1.17 2001/03/22 06:16:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execScan.c,v 1.18 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -122,7 +122,6 @@ ExecScan(Scan *node,
*/
if (!qual || ExecQual(qual, econtext, false))
{
-
/*
* Found a satisfactory scan tuple.
*
diff --git a/src/backend/executor/execTuples.c b/src/backend/executor/execTuples.c
index b6f7b1ee6ff..2c63acb8b62 100644
--- a/src/backend/executor/execTuples.c
+++ b/src/backend/executor/execTuples.c
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.48 2001/03/22 06:16:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execTuples.c,v 1.49 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -241,10 +241,10 @@ ExecAllocTableSlot(TupleTable table)
Assert(table != NULL);
/*
- * if our table is full we have to allocate a larger size table.
- * Since ExecAllocTableSlot() is only called before the table is ever
- * used to store tuples, we don't have to worry about the contents of
- * the old table. If this changes, then we will have to preserve the
+ * if our table is full we have to allocate a larger size table. Since
+ * ExecAllocTableSlot() is only called before the table is ever used
+ * to store tuples, we don't have to worry about the contents of the
+ * old table. If this changes, then we will have to preserve the
* contents. -cim 6/23/90
*
* Unfortunately, we *cannot* do this. All of the nodes in the plan that
@@ -347,7 +347,6 @@ ExecStoreTuple(HeapTuple tuple,
Buffer buffer,
bool shouldFree)
{
-
/*
* sanity checks
*/
@@ -407,7 +406,7 @@ ExecClearTuple(TupleTableSlot *slot) /* slot in which to store tuple */
slot->val = (HeapTuple) NULL;
- slot->ttc_shouldFree = true;/* probably useless code... */
+ slot->ttc_shouldFree = true; /* probably useless code... */
/*
* Drop the pin on the referenced buffer, if there is one.
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 2c76c9b7d98..d710c827033 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.77 2001/07/16 05:06:58 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.78 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -78,7 +78,6 @@ ResetTupleCount(void)
NTupleReplaced = 0;
NIndexTupleProcessed = 0;
}
-
#endif
/* ----------------------------------------------------------------
@@ -117,7 +116,6 @@ DisplayTupleCount(FILE *statfp)
(NTupleReplaced == 1) ? "" : "s");
fprintf(statfp, "\n");
}
-
#endif
/* ----------------------------------------------------------------
@@ -504,26 +502,26 @@ ExecOpenIndices(ResultRelInfo *resultRelInfo)
/*
* Open (and lock, if necessary) the index relation
*
- * If the index AM is not safe for concurrent updates, obtain
- * an exclusive lock on the index to lock out other updaters as
- * well as readers (index_beginscan places AccessShareLock).
- * We will release this lock in ExecCloseIndices.
+ * If the index AM is not safe for concurrent updates, obtain an
+ * exclusive lock on the index to lock out other updaters as well
+ * as readers (index_beginscan places AccessShareLock). We will
+ * release this lock in ExecCloseIndices.
*
* If the index AM supports concurrent updates, we obtain no lock
* here at all, which is a tad weird, but safe since any critical
- * operation on the index (like deleting it) will acquire exclusive
- * lock on the parent table. Perhaps someday we should acquire
- * RowExclusiveLock on the index here?
+ * operation on the index (like deleting it) will acquire
+ * exclusive lock on the parent table. Perhaps someday we should
+ * acquire RowExclusiveLock on the index here?
*
* If there are multiple not-concurrent-safe indexes, all backends
- * must lock the indexes in the same order or we will get deadlocks
- * here during concurrent updates. This is guaranteed by
- * RelationGetIndexList(), which promises to return the index list
- * in OID order.
+ * must lock the indexes in the same order or we will get
+ * deadlocks here during concurrent updates. This is guaranteed
+ * by RelationGetIndexList(), which promises to return the index
+ * list in OID order.
*/
indexDesc = index_open(indexOid);
- if (! indexDesc->rd_am->amconcurrent)
+ if (!indexDesc->rd_am->amconcurrent)
LockRelation(indexDesc, AccessExclusiveLock);
/*
@@ -572,7 +570,7 @@ ExecCloseIndices(ResultRelInfo *resultRelInfo)
continue;
/* Drop lock, if one was acquired by ExecOpenIndices */
- if (! indexDescs[i]->rd_am->amconcurrent)
+ if (!indexDescs[i]->rd_am->amconcurrent)
UnlockRelation(indexDescs[i], AccessExclusiveLock);
index_close(indexDescs[i]);
diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c
index 73dd6937d7d..fbe8e7f5bf1 100644
--- a/src/backend/executor/functions.c
+++ b/src/backend/executor/functions.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/functions.c,v 1.45 2001/03/22 06:16:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/functions.c,v 1.46 2001/10/25 05:49:27 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -32,7 +32,7 @@
*/
typedef enum
{
- F_EXEC_START, F_EXEC_RUN, F_EXEC_DONE
+ F_EXEC_START, F_EXEC_RUN, F_EXEC_DONE
} ExecStatus;
typedef struct local_es
@@ -201,7 +201,6 @@ init_sql_fcache(FmgrInfo *finfo)
}
else
{
-
/*
* This is a hack. We assume here that any function returning a
* tuple returns it by reference. This needs to be fixed, since
@@ -257,7 +256,6 @@ init_sql_fcache(FmgrInfo *finfo)
static void
postquel_start(execution_state *es)
{
-
/*
* Do nothing for utility commands. (create, destroy...) DZ -
* 30-8-1996
@@ -274,7 +272,6 @@ postquel_getnext(execution_state *es)
if (es->qd->operation == CMD_UTILITY)
{
-
/*
* Process a utility command. (create, destroy...) DZ - 30-8-1996
*/
@@ -292,7 +289,6 @@ postquel_getnext(execution_state *es)
static void
postquel_end(execution_state *es)
{
-
/*
* Do nothing for utility commands. (create, destroy...) DZ -
* 30-8-1996
@@ -417,7 +413,6 @@ postquel_execute(execution_state *es,
*/
if (fcache->returnsTuple)
{
-
/*
* XXX do we need to remove junk attrs from the result tuple?
* Probably OK to leave them, as long as they are at the end.
@@ -528,7 +523,6 @@ fmgr_sql(PG_FUNCTION_ARGS)
*/
if (es == (execution_state *) NULL)
{
-
/*
* Reset the execution states to start over again
*/
diff --git a/src/backend/executor/instrument.c b/src/backend/executor/instrument.c
index 753efbcee9a..e270f7c7717 100644
--- a/src/backend/executor/instrument.c
+++ b/src/backend/executor/instrument.c
@@ -1,13 +1,13 @@
/*-------------------------------------------------------------------------
*
* instrument.c
- * functions for instrumentation of plan execution
+ * functions for instrumentation of plan execution
*
*
* Copyright (c) 2001, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/instrument.c,v 1.1 2001/09/18 01:59:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/instrument.c,v 1.2 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -22,9 +22,9 @@
Instrumentation *
InstrAlloc(void)
{
- Instrumentation *instr = palloc( sizeof(Instrumentation) );
+ Instrumentation *instr = palloc(sizeof(Instrumentation));
- memset( instr, 0, sizeof(Instrumentation) );
+ memset(instr, 0, sizeof(Instrumentation));
return instr;
}
@@ -47,7 +47,7 @@ void
InstrStopNode(Instrumentation *instr, bool returnedTuple)
{
struct timeval endtime;
-
+
if (!instr)
return;
@@ -56,10 +56,10 @@ InstrStopNode(Instrumentation *instr, bool returnedTuple)
elog(DEBUG, "InstrStopNode without start");
return;
}
-
+
gettimeofday(&endtime, NULL);
-
- instr->counter.tv_sec += endtime.tv_sec - instr->starttime.tv_sec;
+
+ instr->counter.tv_sec += endtime.tv_sec - instr->starttime.tv_sec;
instr->counter.tv_usec += endtime.tv_usec - instr->starttime.tv_usec;
/* Normalize after each add to avoid overflow/underflow of tv_usec */
@@ -90,10 +90,10 @@ InstrStopNode(Instrumentation *instr, bool returnedTuple)
}
/* Finish a run cycle for a plan node */
-void
+void
InstrEndLoop(Instrumentation *instr)
{
- double totaltime;
+ double totaltime;
if (!instr)
return;
@@ -104,10 +104,10 @@ InstrEndLoop(Instrumentation *instr)
/* Accumulate statistics */
totaltime = (double) instr->counter.tv_sec +
- (double) instr->counter.tv_usec / 1000000.0;
+ (double) instr->counter.tv_usec / 1000000.0;
instr->startup += instr->firsttuple;
- instr->total += totaltime;
+ instr->total += totaltime;
instr->ntuples += instr->tuplecount;
instr->nloops += 1;
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index 73f2b56cf3d..90369c5a7a1 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -46,7 +46,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.77 2001/03/22 06:16:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.78 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -73,7 +73,6 @@
*/
typedef struct AggStatePerAggData
{
-
/*
* These values are set up during ExecInitAgg() and do not change
* thereafter:
@@ -178,7 +177,6 @@ initialize_aggregate(AggStatePerAgg peraggstate)
*/
if (aggref->aggdistinct)
{
-
/*
* In case of rescan, maybe there could be an uncompleted sort
* operation? Clean it up if so.
@@ -228,7 +226,6 @@ advance_transition_function(AggStatePerAgg peraggstate,
{
if (isNull)
{
-
/*
* For a strict transfn, nothing happens at a NULL input
* tuple; we just keep the prior transValue. However, if the
@@ -243,7 +240,6 @@ advance_transition_function(AggStatePerAgg peraggstate,
}
if (peraggstate->noTransValue)
{
-
/*
* transValue has not been initialized. This is the first
* non-NULL input value. We use it as the initial value for
@@ -264,7 +260,6 @@ advance_transition_function(AggStatePerAgg peraggstate,
}
if (peraggstate->transValueIsNull)
{
-
/*
* Don't call a strict function with NULL inputs. Note it is
* possible to get here despite the above tests, if the
@@ -333,7 +328,6 @@ process_sorted_aggregate(AggState *aggstate,
while (tuplesort_getdatum(peraggstate->sortstate, true,
&newVal, &isNull))
{
-
/*
* DISTINCT always suppresses nulls, per SQL spec, regardless of
* the transition function's strictness.
@@ -398,7 +392,6 @@ static void
finalize_aggregate(AggStatePerAgg peraggstate,
Datum *resultVal, bool *resultIsNull)
{
-
/*
* Apply the agg's finalfn if one is provided, else return transValue.
*/
@@ -757,7 +750,6 @@ ExecInitAgg(Agg *node, EState *estate, Plan *parent)
aggstate->numaggs = numaggs = length(aggstate->aggs);
if (numaggs <= 0)
{
-
/*
* This used to be treated as an error, but we can't do that
* anymore because constant-expression simplification could
@@ -897,7 +889,6 @@ ExecInitAgg(Agg *node, EState *estate, Plan *parent)
*/
if (peraggstate->transfn.fn_strict && peraggstate->initValueIsNull)
{
-
/*
* Note: use the type from the input expression here, not
* aggform->aggbasetype, because the latter might be 0.
@@ -913,7 +904,6 @@ ExecInitAgg(Agg *node, EState *estate, Plan *parent)
if (aggref->aggdistinct)
{
-
/*
* Note: use the type from the input expression here, not
* aggform->aggbasetype, because the latter might be 0.
@@ -947,8 +937,8 @@ int
ExecCountSlotsAgg(Agg *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- AGG_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ AGG_NSLOTS;
}
void
diff --git a/src/backend/executor/nodeAppend.c b/src/backend/executor/nodeAppend.c
index f8bdbed6cc3..41b05118e0e 100644
--- a/src/backend/executor/nodeAppend.c
+++ b/src/backend/executor/nodeAppend.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeAppend.c,v 1.42 2001/05/15 00:33:36 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeAppend.c,v 1.43 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -90,7 +90,6 @@ exec_append_initialize_next(Append *node)
if (whichplan < appendstate->as_firstplan)
{
-
/*
* if scanning in reverse, we start at the last scan in the list
* and then proceed back to the first.. in any case we inform
@@ -102,7 +101,6 @@ exec_append_initialize_next(Append *node)
}
else if (whichplan > appendstate->as_lastplan)
{
-
/*
* as above, end the scan if we go beyond the last scan in our
* list..
@@ -112,7 +110,6 @@ exec_append_initialize_next(Append *node)
}
else
{
-
/*
* initialize the scan
*
@@ -182,12 +179,13 @@ ExecInitAppend(Append *node, EState *estate, Plan *parent)
node->appendstate = appendstate;
/*
- * Do we want to scan just one subplan? (Special case for EvalPlanQual)
- * XXX pretty dirty way of determining that this case applies ...
+ * Do we want to scan just one subplan? (Special case for
+ * EvalPlanQual) XXX pretty dirty way of determining that this case
+ * applies ...
*/
if (node->isTarget && estate->es_evTuple != NULL)
{
- int tplan;
+ int tplan;
tplan = estate->es_result_relation_info - estate->es_result_relations;
Assert(tplan >= 0 && tplan < nplans);
@@ -301,7 +299,6 @@ ExecProcAppend(Append *node)
if (!TupIsNull(result))
{
-
/*
* if the subplan gave us something then place a copy of whatever
* we get into our result slot and return it.
@@ -313,7 +310,6 @@ ExecProcAppend(Append *node)
}
else
{
-
/*
* .. go on to the "next" subplan in the appropriate direction and
* try processing again (recursively)
@@ -385,15 +381,17 @@ ExecReScanAppend(Append *node, ExprContext *exprCtxt, Plan *parent)
Plan *subnode;
subnode = (Plan *) nth(i, node->appendplans);
+
/*
* ExecReScan doesn't know about my subplans, so I have to do
* changed-parameter signaling myself.
*/
if (node->plan.chgParam != NULL)
SetChangedParamList(subnode, node->plan.chgParam);
+
/*
- * 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 (subnode->chgParam == NULL)
{
diff --git a/src/backend/executor/nodeGroup.c b/src/backend/executor/nodeGroup.c
index 6dda57f6e96..e3aea3b789b 100644
--- a/src/backend/executor/nodeGroup.c
+++ b/src/backend/executor/nodeGroup.c
@@ -15,7 +15,7 @@
* locate group boundaries.
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.43 2001/03/22 06:16:12 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.44 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -122,7 +122,6 @@ ExecGroupEveryTuple(Group *node)
}
else
{
-
/*
* Compare with first tuple and see if this tuple is of the
* same group.
@@ -133,7 +132,6 @@ ExecGroupEveryTuple(Group *node)
grpstate->eqfunctions,
econtext->ecxt_per_tuple_memory))
{
-
/*
* No; save the tuple to return it next time, and return
* NULL
@@ -478,7 +476,7 @@ execTuplesMatch(HeapTuple tuple1,
* Look up the equality functions needed for execTuplesMatch.
* The result is a palloc'd array.
*/
-FmgrInfo *
+FmgrInfo *
execTuplesMatchPrepare(TupleDesc tupdesc,
int numCols,
AttrNumber *matchColIdx)
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index f387e5a759f..bf9bf6eeb0f 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
*
- * $Id: nodeHash.c,v 1.59 2001/08/13 19:50:11 tgl Exp $
+ * $Id: nodeHash.c,v 1.60 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -69,7 +69,6 @@ ExecHash(Hash *node)
if (nbatch > 0)
{
-
/*
* Open temp files for inner batches, if needed. Note that file
* buffers are palloc'd in regular executor context.
@@ -165,8 +164,8 @@ int
ExecCountSlotsHash(Hash *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- HASH_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ HASH_NSLOTS;
}
/* ---------------------------------------------------------------
@@ -279,7 +278,6 @@ ExecHashTableCreate(Hash *node)
if (nbatch > 0)
{
-
/*
* allocate and initialize the file arrays in hashCxt
*/
@@ -480,7 +478,6 @@ ExecHashTableInsert(HashJoinTable hashtable,
*/
if (bucketno < hashtable->nbuckets)
{
-
/*
* put the tuple in hash table
*/
@@ -506,7 +503,6 @@ ExecHashTableInsert(HashJoinTable hashtable,
}
else
{
-
/*
* put the tuple into a tmp file for other batches
*/
@@ -536,8 +532,8 @@ ExecHashGetBucket(HashJoinTable hashtable,
MemoryContext oldContext;
/*
- * We reset the eval context each time to reclaim any memory leaked
- * in the hashkey expression or hashFunc itself.
+ * We reset the eval context each time to reclaim any memory leaked in
+ * the hashkey expression or hashFunc itself.
*/
ResetExprContext(econtext);
@@ -657,15 +653,15 @@ hashFunc(Datum key, int len, bool byVal)
else
{
/*
- * If this is a variable length type, then 'key' points to a "struct
- * varlena" and len == -1. NOTE: VARSIZE returns the "real" data
- * length plus the sizeof the "vl_len" attribute of varlena (the
- * length information). 'key' points to the beginning of the varlena
- * struct, so we have to use "VARDATA" to find the beginning of
- * the "real" data. Also, we have to be careful to detoast the
- * datum if it's toasted. (We don't worry about freeing the detoasted
- * copy; that happens for free when the per-tuple memory context
- * is reset in ExecHashGetBucket.)
+ * If this is a variable length type, then 'key' points to a
+ * "struct varlena" and len == -1. NOTE: VARSIZE returns the
+ * "real" data length plus the sizeof the "vl_len" attribute of
+ * varlena (the length information). 'key' points to the beginning
+ * of the varlena struct, so we have to use "VARDATA" to find the
+ * beginning of the "real" data. Also, we have to be careful to
+ * detoast the datum if it's toasted. (We don't worry about
+ * freeing the detoasted copy; that happens for free when the
+ * per-tuple memory context is reset in ExecHashGetBucket.)
*/
unsigned char *k;
@@ -737,7 +733,6 @@ ExecHashTableReset(HashJoinTable hashtable, long ntuples)
void
ExecReScanHash(Hash *node, ExprContext *exprCtxt, Plan *parent)
{
-
/*
* if chgParam of subnode is not null then plan will be re-scanned by
* first ExecProcNode.
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 12f6d58443e..58e97b8adb1 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.38 2001/03/22 06:16:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.39 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -148,7 +148,6 @@ ExecHashJoin(HashJoin *node)
for (;;)
{
-
/*
* If we don't have an outer tuple, get the next one
*/
@@ -159,7 +158,6 @@ ExecHashJoin(HashJoin *node)
hjstate);
if (TupIsNull(outerTupleSlot))
{
-
/*
* when the last batch runs out, clean up and exit
*/
@@ -193,7 +191,6 @@ ExecHashJoin(HashJoin *node)
if (batch > 0)
{
-
/*
* Need to postpone this outer tuple to a later batch.
* Save it in the corresponding outer-batch file.
@@ -270,7 +267,6 @@ ExecHashJoin(HashJoin *node)
if (!hjstate->hj_MatchedOuter &&
node->join.jointype == JOIN_LEFT)
{
-
/*
* We are doing an outer join and there were no join matches
* for this outer tuple. Generate a fake join tuple with
@@ -281,7 +277,6 @@ ExecHashJoin(HashJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification was satisfied so we project and return
* the slot containing the result tuple using
@@ -411,8 +406,8 @@ int
ExecCountSlotsHashJoin(HashJoin *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- HASHJOIN_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ HASHJOIN_NSLOTS;
}
/* ----------------------------------------------------------------
@@ -565,7 +560,6 @@ ExecHashJoinNewBatch(HashJoinState *hjstate)
if (newbatch > 1)
{
-
/*
* We no longer need the previous outer batch file; close it right
* away to free disk space.
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index ec26ed05cc0..3c5ebc4c8bc 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.62 2001/07/15 22:48:17 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.63 2001/10/25 05:49:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -222,7 +222,7 @@ IndexNext(IndexScan *node)
qual = lnext(qual);
}
if (!prev_matches)
- return slot;/* OK to return tuple */
+ return slot; /* OK to return tuple */
/* Duplicate tuple, so drop it and loop back for another */
ExecClearTuple(slot);
}
@@ -337,7 +337,6 @@ ExecIndexReScan(IndexScan *node, ExprContext *exprCtxt, Plan *parent)
if (econtext)
{
-
/*
* If we are being passed an outer tuple, save it for runtime key
* calc
@@ -377,7 +376,6 @@ ExecIndexReScan(IndexScan *node, ExprContext *exprCtxt, Plan *parent)
run_keys = runtimeKeyInfo[i];
for (j = 0; j < n_keys; j++)
{
-
/*
* If we have a run-time key, then extract the run-time
* expression and evaluate it with respect to the current
@@ -703,10 +701,10 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
Expr *clause; /* one clause of index qual */
Oper *op; /* operator used in clause */
Node *leftop; /* expr on lhs of operator */
- Node *rightop;/* expr on rhs ... */
+ Node *rightop; /* expr on rhs ... */
bits16 flags = 0;
- int scanvar;/* which var identifies varattno */
+ int scanvar; /* which var identifies varattno */
AttrNumber varattno = 0; /* att number used in scan */
Oid opid; /* operator id used in scan */
Datum scanvalue = 0; /* value used in scan (if const) */
@@ -772,7 +770,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
if (IsA(leftop, Var) &&var_is_rel((Var *) leftop))
{
-
/*
* if the leftop is a "rel-var", then it means that it is
* a var node which tells us which attribute to use for
@@ -783,7 +780,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
}
else if (IsA(leftop, Const))
{
-
/*
* if the leftop is a const node then it means it
* identifies the value to place in our scan key.
@@ -820,7 +816,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
}
else
{
-
/*
* otherwise, the leftop contains an expression evaluable
* at runtime to figure out the value to place in our scan
@@ -842,7 +837,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
if (IsA(rightop, Var) &&var_is_rel((Var *) rightop))
{
-
/*
* here we make sure only one op identifies the
* scan-attribute...
@@ -861,7 +855,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
}
else if (IsA(rightop, Const))
{
-
/*
* if the rightop is a const node then it means it
* identifies the value to place in our scan key.
@@ -898,7 +891,6 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
}
else
{
-
/*
* otherwise, the rightop contains an expression evaluable
* at runtime to figure out the value to place in our scan
@@ -1023,7 +1015,7 @@ ExecInitIndexScan(IndexScan *node, EState *estate, Plan *parent)
ExecOpenScanR(indexOid, /* relation */
numScanKeys[i], /* nkeys */
scanKeys[i], /* scan key */
- true, /* is index */
+ true, /* is index */
direction, /* scan direction */
estate->es_snapshot,
&(relationDescs[i]), /* return: rel desc */
@@ -1045,5 +1037,5 @@ int
ExecCountSlotsIndexScan(IndexScan *node)
{
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
- ExecCountSlotsNode(innerPlan((Plan *) node)) + INDEXSCAN_NSLOTS;
+ ExecCountSlotsNode(innerPlan((Plan *) node)) + INDEXSCAN_NSLOTS;
}
diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c
index da0e6697763..1ce376418d5 100644
--- a/src/backend/executor/nodeLimit.c
+++ b/src/backend/executor/nodeLimit.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeLimit.c,v 1.7 2001/08/06 18:05:07 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeLimit.c,v 1.8 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -66,7 +66,6 @@ ExecLimit(Limit *node)
*/
for (;;)
{
-
/*
* If we have reached the subplan EOF or the limit, just quit.
*
@@ -76,11 +75,11 @@ ExecLimit(Limit *node)
* here is for position > netlimit not position >= netlimit.
*
* Similarly, when scanning backwards, we must re-fetch the last
- * tuple in the offset region before we can return NULL.
- * Otherwise we won't be correctly aligned to start going forward
- * again. So, although you might think we can quit when position
- * equals offset + 1, we have to fetch a subplan tuple first, and
- * then exit when position = offset.
+ * tuple in the offset region before we can return NULL. Otherwise
+ * we won't be correctly aligned to start going forward again.
+ * So, although you might think we can quit when position equals
+ * offset + 1, we have to fetch a subplan tuple first, and then
+ * exit when position = offset.
*/
if (ScanDirectionIsForward(direction))
{
@@ -101,7 +100,6 @@ ExecLimit(Limit *node)
slot = ExecProcNode(outerPlan, (Plan *) node);
if (TupIsNull(slot))
{
-
/*
* We are at start or end of the subplan. Update local state
* appropriately, but always return NULL.
@@ -269,8 +267,8 @@ int
ExecCountSlotsLimit(Limit *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- LIMIT_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ LIMIT_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeMaterial.c b/src/backend/executor/nodeMaterial.c
index c4ec5c9a38c..8578f020743 100644
--- a/src/backend/executor/nodeMaterial.c
+++ b/src/backend/executor/nodeMaterial.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.36 2001/05/27 20:42:19 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeMaterial.c,v 1.37 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -185,8 +185,8 @@ int
ExecCountSlotsMaterial(Material *node)
{
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
- ExecCountSlotsNode(innerPlan((Plan *) node)) +
- MATERIAL_NSLOTS;
+ ExecCountSlotsNode(innerPlan((Plan *) node)) +
+ MATERIAL_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeMergejoin.c b/src/backend/executor/nodeMergejoin.c
index 9733bc47d5c..8ac71b0cc96 100644
--- a/src/backend/executor/nodeMergejoin.c
+++ b/src/backend/executor/nodeMergejoin.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.45 2001/03/23 04:49:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.46 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -124,7 +124,6 @@ MJFormSkipQual(List *qualList, char *replaceopname)
foreach(qualcdr, qualCopy)
{
-
/*
* first get the current (op .. ..) list
*/
@@ -321,7 +320,6 @@ ExecMergeTupleDump(MergeJoinState *mergestate)
printf("******** \n");
}
-
#endif
/* ----------------------------------------------------------------
@@ -431,7 +429,7 @@ ExecMergeJoin(MergeJoin *node)
default:
elog(ERROR, "ExecMergeJoin: unsupported join type %d",
(int) node->join.jointype);
- doFillOuter = false;/* keep compiler quiet */
+ doFillOuter = false; /* keep compiler quiet */
doFillInner = false;
break;
}
@@ -476,7 +474,6 @@ ExecMergeJoin(MergeJoin *node)
*/
for (;;)
{
-
/*
* get the current state of the join and do things accordingly.
* Note: The join states are highlighted with 32-* comments for
@@ -486,7 +483,6 @@ ExecMergeJoin(MergeJoin *node)
switch (mergestate->mj_JoinState)
{
-
/*
* EXEC_MJ_INITIALIZE means that this is the first time
* ExecMergeJoin() has been called and so we have to fetch
@@ -505,7 +501,6 @@ ExecMergeJoin(MergeJoin *node)
MJ_printf("ExecMergeJoin: outer subplan is empty\n");
if (doFillInner)
{
-
/*
* Need to emit right-join tuples for remaining
* inner tuples. We set MatchedInner = true to
@@ -526,7 +521,6 @@ ExecMergeJoin(MergeJoin *node)
MJ_printf("ExecMergeJoin: inner subplan is empty\n");
if (doFillOuter)
{
-
/*
* Need to emit left-join tuples for all outer
* tuples, including the one we just fetched. We
@@ -632,7 +626,6 @@ ExecMergeJoin(MergeJoin *node)
if (qualResult)
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -669,7 +662,6 @@ ExecMergeJoin(MergeJoin *node)
if (doFillInner && !mergestate->mj_MatchedInner)
{
-
/*
* Generate a fake join tuple with nulls for the outer
* tuple, and return it if it passes the non-join
@@ -686,7 +678,6 @@ ExecMergeJoin(MergeJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -747,7 +738,6 @@ ExecMergeJoin(MergeJoin *node)
if (doFillOuter && !mergestate->mj_MatchedOuter)
{
-
/*
* Generate a fake join tuple with nulls for the inner
* tuple, and return it if it passes the non-join
@@ -764,7 +754,6 @@ ExecMergeJoin(MergeJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -805,7 +794,6 @@ ExecMergeJoin(MergeJoin *node)
innerTupleSlot = mergestate->mj_InnerTupleSlot;
if (doFillInner && !TupIsNull(innerTupleSlot))
{
-
/*
* Need to emit right-join tuples for remaining
* inner tuples.
@@ -873,7 +861,6 @@ ExecMergeJoin(MergeJoin *node)
if (qualResult)
{
-
/*
* the merge clause matched so now we restore the
* inner scan position to the first mark, and loop
@@ -915,7 +902,6 @@ ExecMergeJoin(MergeJoin *node)
{
if (doFillOuter)
{
-
/*
* Need to emit left-join tuples for remaining
* outer tuples.
@@ -1036,7 +1022,6 @@ ExecMergeJoin(MergeJoin *node)
if (doFillOuter && !mergestate->mj_MatchedOuter)
{
-
/*
* Generate a fake join tuple with nulls for the inner
* tuple, and return it if it passes the non-join
@@ -1053,7 +1038,6 @@ ExecMergeJoin(MergeJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -1094,7 +1078,6 @@ ExecMergeJoin(MergeJoin *node)
innerTupleSlot = mergestate->mj_InnerTupleSlot;
if (doFillInner && !TupIsNull(innerTupleSlot))
{
-
/*
* Need to emit right-join tuples for remaining
* inner tuples.
@@ -1216,7 +1199,6 @@ ExecMergeJoin(MergeJoin *node)
if (doFillInner && !mergestate->mj_MatchedInner)
{
-
/*
* Generate a fake join tuple with nulls for the outer
* tuple, and return it if it passes the non-join
@@ -1233,7 +1215,6 @@ ExecMergeJoin(MergeJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -1274,7 +1255,6 @@ ExecMergeJoin(MergeJoin *node)
outerTupleSlot = mergestate->mj_OuterTupleSlot;
if (doFillOuter && !TupIsNull(outerTupleSlot))
{
-
/*
* Need to emit left-join tuples for remaining
* outer tuples.
@@ -1304,7 +1284,6 @@ ExecMergeJoin(MergeJoin *node)
if (!mergestate->mj_MatchedInner)
{
-
/*
* Generate a fake join tuple with nulls for the outer
* tuple, and return it if it passes the non-join
@@ -1321,7 +1300,6 @@ ExecMergeJoin(MergeJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -1373,7 +1351,6 @@ ExecMergeJoin(MergeJoin *node)
if (!mergestate->mj_MatchedOuter)
{
-
/*
* Generate a fake join tuple with nulls for the inner
* tuple, and return it if it passes the non-join
@@ -1390,7 +1367,6 @@ ExecMergeJoin(MergeJoin *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification succeeded. now form the desired
* projection tuple and return the slot containing
@@ -1579,8 +1555,8 @@ int
ExecCountSlotsMergeJoin(MergeJoin *node)
{
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
- ExecCountSlotsNode(innerPlan((Plan *) node)) +
- MERGEJOIN_NSLOTS;
+ ExecCountSlotsNode(innerPlan((Plan *) node)) +
+ MERGEJOIN_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeNestloop.c b/src/backend/executor/nodeNestloop.c
index b6959038870..e99b02fce41 100644
--- a/src/backend/executor/nodeNestloop.c
+++ b/src/backend/executor/nodeNestloop.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeNestloop.c,v 1.24 2001/03/22 06:16:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeNestloop.c,v 1.25 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -118,7 +118,6 @@ ExecNestLoop(NestLoop *node)
for (;;)
{
-
/*
* If we don't have an outer tuple, get the next one and reset the
* inner scan.
@@ -174,7 +173,6 @@ ExecNestLoop(NestLoop *node)
if (!nlstate->nl_MatchedOuter &&
node->join.jointype == JOIN_LEFT)
{
-
/*
* We are doing an outer join and there were no join
* matches for this outer tuple. Generate a fake join
@@ -187,7 +185,6 @@ ExecNestLoop(NestLoop *node)
if (ExecQual(otherqual, econtext, false))
{
-
/*
* qualification was satisfied so we project and
* return the slot containing the result tuple using
@@ -231,7 +228,6 @@ ExecNestLoop(NestLoop *node)
if (otherqual == NIL || ExecQual(otherqual, econtext, false))
{
-
/*
* qualification was satisfied so we project and return
* the slot containing the result tuple using
@@ -346,8 +342,8 @@ int
ExecCountSlotsNestLoop(NestLoop *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- NESTLOOP_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ NESTLOOP_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeResult.c b/src/backend/executor/nodeResult.c
index f9f325f637b..5e59cb0c120 100644
--- a/src/backend/executor/nodeResult.c
+++ b/src/backend/executor/nodeResult.c
@@ -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.19 2001/03/22 06:16:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeResult.c,v 1.20 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -125,7 +125,6 @@ ExecResult(Result *node)
if (outerPlan != NULL)
{
-
/*
* retrieve tuples from the outer plan until there are no
* more.
@@ -146,7 +145,6 @@ ExecResult(Result *node)
}
else
{
-
/*
* if we don't have an outer plan, then we are just generating
* the results from a constant target list. Do it only once.
diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c
index 48beffd7920..1767379d675 100644
--- a/src/backend/executor/nodeSeqscan.c
+++ b/src/backend/executor/nodeSeqscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.31 2001/07/15 22:48:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeSeqscan.c,v 1.32 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -127,7 +127,6 @@ SeqNext(SeqScan *node)
TupleTableSlot *
ExecSeqScan(SeqScan *node)
{
-
/*
* use SeqNext as access method
*/
@@ -246,8 +245,8 @@ int
ExecCountSlotsSeqScan(SeqScan *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- SEQSCAN_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ SEQSCAN_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeSetOp.c b/src/backend/executor/nodeSetOp.c
index 3072fe5f962..cd5d5b9122f 100644
--- a/src/backend/executor/nodeSetOp.c
+++ b/src/backend/executor/nodeSetOp.c
@@ -21,7 +21,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeSetOp.c,v 1.4 2001/03/22 06:16:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeSetOp.c,v 1.5 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -100,7 +100,6 @@ ExecSetOp(SetOp *node)
if (TupIsNull(resultTupleSlot))
{
-
/*
* First of group: save a copy in result slot, and reset
* duplicate-counters for new group.
@@ -118,7 +117,6 @@ ExecSetOp(SetOp *node)
}
else if (setopstate->subplan_done)
{
-
/*
* Reached end of input, so finish processing final group
*/
@@ -126,7 +124,6 @@ ExecSetOp(SetOp *node)
}
else
{
-
/*
* Else test if the new tuple and the previously saved tuple
* match.
@@ -144,7 +141,6 @@ ExecSetOp(SetOp *node)
if (endOfGroup)
{
-
/*
* We've reached the end of the group containing resultTuple.
* Decide how many copies (if any) to emit. This logic is
@@ -187,7 +183,6 @@ ExecSetOp(SetOp *node)
}
else
{
-
/*
* Current tuple is member of same group as resultTuple. Count
* it in the appropriate counter.
@@ -294,8 +289,8 @@ int
ExecCountSlotsSetOp(SetOp *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- SETOP_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ SETOP_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeSort.c b/src/backend/executor/nodeSort.c
index a83a8411425..82bb4cc3c92 100644
--- a/src/backend/executor/nodeSort.c
+++ b/src/backend/executor/nodeSort.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeSort.c,v 1.34 2001/05/27 20:42:19 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeSort.c,v 1.35 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -275,8 +275,8 @@ int
ExecCountSlotsSort(Sort *node)
{
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
- ExecCountSlotsNode(innerPlan((Plan *) node)) +
- SORT_NSLOTS;
+ ExecCountSlotsNode(innerPlan((Plan *) node)) +
+ SORT_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c
index 6719df94e7a..3aa30d25a32 100644
--- a/src/backend/executor/nodeSubplan.c
+++ b/src/backend/executor/nodeSubplan.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeSubplan.c,v 1.31 2001/09/18 01:59:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeSubplan.c,v 1.32 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -257,7 +257,6 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext, bool *isNull)
if (!found)
{
-
/*
* deal with empty subplan result. result/isNull were previously
* initialized correctly for all sublink types except EXPR and
diff --git a/src/backend/executor/nodeSubqueryscan.c b/src/backend/executor/nodeSubqueryscan.c
index 8c178ad0aa4..edd4640ba41 100644
--- a/src/backend/executor/nodeSubqueryscan.c
+++ b/src/backend/executor/nodeSubqueryscan.c
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeSubqueryscan.c,v 1.10 2001/09/18 01:59:06 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeSubqueryscan.c,v 1.11 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -63,8 +63,8 @@ SubqueryNext(SubqueryScan *node)
direction = estate->es_direction;
/*
- * We need not support EvalPlanQual here, since we are not scanning
- * a real relation.
+ * We need not support EvalPlanQual here, since we are not scanning a
+ * real relation.
*/
/*
@@ -92,7 +92,6 @@ SubqueryNext(SubqueryScan *node)
TupleTableSlot *
ExecSubqueryScan(SubqueryScan *node)
{
-
/*
* use SubqueryNext as access method
*/
@@ -181,8 +180,8 @@ ExecCountSlotsSubqueryScan(SubqueryScan *node)
* The subplan has its own tuple table and must not be counted here!
*/
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- SUBQUERYSCAN_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ SUBQUERYSCAN_NSLOTS;
}
/* ----------------------------------------------------------------
@@ -251,6 +250,7 @@ ExecSubqueryReScan(SubqueryScan *node, ExprContext *exprCtxt, Plan *parent)
*/
if (node->scan.plan.chgParam != NULL)
SetChangedParamList(node->subplan, node->scan.plan.chgParam);
+
/*
* if chgParam of subnode is not null then plan will be re-scanned by
* first ExecProcNode.
diff --git a/src/backend/executor/nodeTidscan.c b/src/backend/executor/nodeTidscan.c
index 404ed6a2153..380632a78b2 100644
--- a/src/backend/executor/nodeTidscan.c
+++ b/src/backend/executor/nodeTidscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.19 2001/09/29 07:57:06 inoue Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeTidscan.c,v 1.20 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -29,7 +29,7 @@
#include "access/heapam.h"
#include "parser/parsetree.h"
-static int TidListCreate(List *, ExprContext *, ItemPointerData []);
+static int TidListCreate(List *, ExprContext *, ItemPointerData[]);
static TupleTableSlot *TidNext(TidScan *node);
static int
@@ -80,7 +80,7 @@ TidNext(TidScan *node)
bool bBackward;
int tidNumber;
- ItemPointerData* tidList;
+ ItemPointerData *tidList;
/*
* extract necessary information from tid scan node
@@ -233,7 +233,6 @@ TidNext(TidScan *node)
TupleTableSlot *
ExecTidScan(TidScan *node)
{
-
/*
* use TidNext as access method
*/
@@ -249,7 +248,7 @@ ExecTidReScan(TidScan *node, ExprContext *exprCtxt, Plan *parent)
{
EState *estate;
TidScanState *tidstate;
- ItemPointerData* tidList;
+ ItemPointerData *tidList;
tidstate = node->tidstate;
estate = node->scan.plan.state;
@@ -357,7 +356,6 @@ ExecTidRestrPos(TidScan *node)
tidstate = node->tidstate;
tidstate->tss_TidPtr = tidstate->tss_MarkTidPtr;
}
-
#endif
/* ----------------------------------------------------------------
@@ -376,7 +374,7 @@ ExecInitTidScan(TidScan *node, EState *estate, Plan *parent)
{
TidScanState *tidstate;
CommonScanState *scanstate;
- ItemPointerData* tidList;
+ ItemPointerData *tidList;
int numTids;
int tidPtr;
List *rangeTable;
@@ -482,5 +480,5 @@ int
ExecCountSlotsTidScan(TidScan *node)
{
return ExecCountSlotsNode(outerPlan((Plan *) node)) +
- ExecCountSlotsNode(innerPlan((Plan *) node)) + TIDSCAN_NSLOTS;
+ ExecCountSlotsNode(innerPlan((Plan *) node)) + TIDSCAN_NSLOTS;
}
diff --git a/src/backend/executor/nodeUnique.c b/src/backend/executor/nodeUnique.c
index 2a139d8e1cf..975dd84fe8f 100644
--- a/src/backend/executor/nodeUnique.c
+++ b/src/backend/executor/nodeUnique.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.32 2001/03/22 06:16:13 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeUnique.c,v 1.33 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -61,7 +61,6 @@ ExecUnique(Unique *node)
*/
for (;;)
{
-
/*
* fetch a tuple from the outer subplan
*/
@@ -186,8 +185,8 @@ int
ExecCountSlotsUnique(Unique *node)
{
return ExecCountSlotsNode(outerPlan(node)) +
- ExecCountSlotsNode(innerPlan(node)) +
- UNIQUE_NSLOTS;
+ ExecCountSlotsNode(innerPlan(node)) +
+ UNIQUE_NSLOTS;
}
/* ----------------------------------------------------------------
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 73457491d6b..e4c2dac40db 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.59 2001/10/23 17:38:25 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/spi.c,v 1.60 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -37,7 +37,7 @@ static int _SPI_execute_plan(_SPI_plan *plan,
Datum *Values, char *Nulls, int tcount);
static void _SPI_cursor_operation(Portal portal, bool forward, int count,
- CommandDest dest);
+ CommandDest dest);
static _SPI_plan *_SPI_copy_plan(_SPI_plan *plan, int location);
@@ -51,7 +51,6 @@ static bool _SPI_checktuples(void);
extern int ShowExecutorStats;
extern void ResetUsage(void);
extern void ShowUsage(void);
-
#endif
/* =================== interface functions =================== */
@@ -298,7 +297,7 @@ SPI_saveplan(void *plan)
int
SPI_freeplan(void *plan)
{
- _SPI_plan *spiplan = (_SPI_plan *)plan;
+ _SPI_plan *spiplan = (_SPI_plan *) plan;
if (plan == NULL)
return SPI_ERROR_ARGUMENT;
@@ -444,7 +443,7 @@ SPI_fnumber(TupleDesc tupdesc, char *fname)
return res + 1;
}
- sysatt = SystemAttributeByName(fname, true /* "oid" will be accepted */);
+ sysatt = SystemAttributeByName(fname, true /* "oid" will be accepted */ );
if (sysatt != NULL)
return sysatt->attnum;
@@ -673,26 +672,26 @@ SPI_freetuptable(SPITupleTable *tuptable)
Portal
SPI_cursor_open(char *name, void *plan, Datum *Values, char *Nulls)
{
- static int unnamed_portal_count = 0;
-
- _SPI_plan *spiplan = (_SPI_plan *)plan;
- List *qtlist = spiplan->qtlist;
- List *ptlist = spiplan->ptlist;
- Query *queryTree;
- Plan *planTree;
- QueryDesc *queryDesc;
- EState *eState;
- TupleDesc attinfo;
- MemoryContext oldcontext;
- Portal portal;
- char portalname[64];
- int k;
+ static int unnamed_portal_count = 0;
+
+ _SPI_plan *spiplan = (_SPI_plan *) plan;
+ List *qtlist = spiplan->qtlist;
+ List *ptlist = spiplan->ptlist;
+ Query *queryTree;
+ Plan *planTree;
+ QueryDesc *queryDesc;
+ EState *eState;
+ TupleDesc attinfo;
+ MemoryContext oldcontext;
+ Portal portal;
+ char portalname[64];
+ int k;
/* Ensure that the plan contains only one regular SELECT query */
if (length(ptlist) != 1)
elog(ERROR, "cannot open multi-query plan as cursor");
- queryTree = (Query *)lfirst(qtlist);
- planTree = (Plan *)lfirst(ptlist);
+ queryTree = (Query *) lfirst(qtlist);
+ planTree = (Plan *) lfirst(ptlist);
if (queryTree->commandType != CMD_SELECT)
elog(ERROR, "plan in SPI_cursor_open() is not a SELECT");
@@ -712,7 +711,7 @@ SPI_cursor_open(char *name, void *plan, Datum *Values, char *Nulls)
{
for (;;)
{
- unnamed_portal_count++;
+ unnamed_portal_count++;
if (unnamed_portal_count < 0)
unnamed_portal_count = 0;
sprintf(portalname, "<unnamed cursor %d>", unnamed_portal_count);
@@ -735,30 +734,31 @@ SPI_cursor_open(char *name, void *plan, Datum *Values, char *Nulls)
/* Switch to portals memory and copy the parsetree and plan to there */
oldcontext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
- queryTree = copyObject(queryTree);
- planTree = copyObject(planTree);
+ queryTree = copyObject(queryTree);
+ planTree = copyObject(planTree);
/* Modify the parsetree to be a cursor */
queryTree->isPortal = true;
- queryTree->into = pstrdup(name);
+ queryTree->into = pstrdup(name);
queryTree->isBinary = false;
-
+
/* Create the QueryDesc object and the executor state */
queryDesc = CreateQueryDesc(queryTree, planTree, SPI);
- eState = CreateExecutorState();
+ eState = CreateExecutorState();
/* If the plan has parameters, put them into the executor state */
if (spiplan->nargs > 0)
{
- ParamListInfo paramLI = (ParamListInfo) palloc((spiplan->nargs + 1) *
- sizeof(ParamListInfoData));
+ ParamListInfo paramLI = (ParamListInfo) palloc((spiplan->nargs + 1) *
+ sizeof(ParamListInfoData));
+
eState->es_param_list_info = paramLI;
for (k = 0; k < spiplan->nargs; paramLI++, k++)
{
- paramLI->kind = PARAM_NUM;
- paramLI->id = k + 1;
- paramLI->isnull = (Nulls && Nulls[k] == 'n');
- paramLI->value = Values[k];
+ paramLI->kind = PARAM_NUM;
+ paramLI->id = k + 1;
+ paramLI->isnull = (Nulls && Nulls[k] == 'n');
+ paramLI->value = Values[k];
}
paramLI->kind = PARAM_INVALID;
}
@@ -872,7 +872,7 @@ spi_printtup(HeapTuple tuple, TupleDesc tupdesc, DestReceiver *self)
tuptable->vals = (HeapTuple *) palloc(tuptable->alloced * sizeof(HeapTuple));
tuptable->tupdesc = CreateTupleDescCopy(tupdesc);
}
- else
+ else
{
MemoryContextSwitchTo(tuptable->tuptabcxt);
@@ -881,7 +881,7 @@ spi_printtup(HeapTuple tuple, TupleDesc tupdesc, DestReceiver *self)
tuptable->free = 256;
tuptable->alloced += tuptable->free;
tuptable->vals = (HeapTuple *) repalloc(tuptable->vals,
- tuptable->alloced * sizeof(HeapTuple));
+ tuptable->alloced * sizeof(HeapTuple));
}
}
@@ -1171,12 +1171,12 @@ _SPI_pquery(QueryDesc *queryDesc, EState *state, int tcount)
*/
static void
_SPI_cursor_operation(Portal portal, bool forward, int count,
- CommandDest dest)
+ CommandDest dest)
{
- QueryDesc *querydesc;
- EState *estate;
- MemoryContext oldcontext;
- CommandDest olddest;
+ QueryDesc *querydesc;
+ EState *estate;
+ MemoryContext oldcontext;
+ CommandDest olddest;
/* Check that the portal is valid */
if (!PortalIsValid(portal))
@@ -1193,8 +1193,8 @@ _SPI_cursor_operation(Portal portal, bool forward, int count,
/* Switch to the portals memory context */
oldcontext = MemoryContextSwitchTo(PortalGetHeapMemory(portal));
- querydesc = PortalGetQueryDesc(portal);
- estate = PortalGetState(portal);
+ querydesc = PortalGetQueryDesc(portal);
+ estate = PortalGetState(portal);
/* Save the queries command destination and set it to SPI (for fetch) */
/* or None (for move) */
@@ -1206,7 +1206,7 @@ _SPI_cursor_operation(Portal portal, bool forward, int count,
{
if (!portal->atEnd)
{
- ExecutorRun(querydesc, estate, EXEC_FOR, (long)count);
+ ExecutorRun(querydesc, estate, EXEC_FOR, (long) count);
_SPI_current->processed = estate->es_processed;
if (estate->es_processed > 0)
portal->atStart = false;
@@ -1237,7 +1237,7 @@ _SPI_cursor_operation(Portal portal, bool forward, int count,
/* Put the result into place for access by caller */
SPI_processed = _SPI_current->processed;
- SPI_tuptable = _SPI_current->tuptable;
+ SPI_tuptable = _SPI_current->tuptable;
/* Pop the SPI stack */
_SPI_end_call(true);
@@ -1278,7 +1278,6 @@ _SPI_begin_call(bool execmem)
static int
_SPI_end_call(bool procmem)
{
-
/*
* We' returning to procedure where _SPI_curid == _SPI_connected - 1
*/
diff --git a/src/backend/lib/bit.c b/src/backend/lib/bit.c
index 57da3522c46..41c799fb5a4 100644
--- a/src/backend/lib/bit.c
+++ b/src/backend/lib/bit.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/lib/Attic/bit.c,v 1.13 2001/03/22 03:59:29 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/lib/Attic/bit.c,v 1.14 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -22,14 +22,14 @@ void
BitArraySetBit(BitArray bitArray, BitIndex bitIndex)
{
bitArray[bitIndex / BITS_PER_BYTE] |=
- (1 << (BITS_PER_BYTE - 1 - (bitIndex % BITS_PER_BYTE)));
+ (1 << (BITS_PER_BYTE - 1 - (bitIndex % BITS_PER_BYTE)));
}
void
BitArrayClearBit(BitArray bitArray, BitIndex bitIndex)
{
bitArray[bitIndex / BITS_PER_BYTE] &=
- ~(1 << (BITS_PER_BYTE - 1 - (bitIndex % BITS_PER_BYTE)));
+ ~(1 << (BITS_PER_BYTE - 1 - (bitIndex % BITS_PER_BYTE)));
}
bool
diff --git a/src/backend/lib/lispsort.c b/src/backend/lib/lispsort.c
index a3c89b201e2..f06448b5785 100644
--- a/src/backend/lib/lispsort.c
+++ b/src/backend/lib/lispsort.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/lib/Attic/lispsort.c,v 1.14 2001/01/24 19:42:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/lib/Attic/lispsort.c,v 1.15 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -55,5 +55,4 @@ lisp_qsort(List *the_list, /* the list to be sorted */
return output;
}
-
#endif
diff --git a/src/backend/lib/stringinfo.c b/src/backend/lib/stringinfo.c
index f4b4294eaac..1745f0f9ca1 100644
--- a/src/backend/lib/stringinfo.c
+++ b/src/backend/lib/stringinfo.c
@@ -9,7 +9,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: stringinfo.c,v 1.28 2001/03/22 06:16:13 momjian Exp $
+ * $Id: stringinfo.c,v 1.29 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -106,7 +106,6 @@ appendStringInfo(StringInfo str, const char *fmt,...)
for (;;)
{
-
/*
* Try to format the given string into the available space; but if
* there's hardly any space, don't bother trying, just fall
diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c
index b6d1e6166f5..44fb1f390cf 100644
--- a/src/backend/libpq/auth.c
+++ b/src/backend/libpq/auth.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.69 2001/10/18 22:44:37 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/auth.c,v 1.70 2001/10/25 05:49:29 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -45,22 +45,22 @@ char *pg_krb_server_keyfile;
#ifdef USE_PAM
#include <security/pam_appl.h>
-
-#define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */
-static int CheckPAMAuth(Port *port, char *user, char *password);
-static int pam_passwd_conv_proc(int num_msg, const struct pam_message **msg,
- struct pam_response **resp, void *appdata_ptr);
+#define PGSQL_PAM_SERVICE "postgresql" /* Service name passed to PAM */
+
+static int CheckPAMAuth(Port *port, char *user, char *password);
+static int pam_passwd_conv_proc(int num_msg, const struct pam_message ** msg,
+ struct pam_response ** resp, void *appdata_ptr);
static struct pam_conv pam_passw_conv = {
- &pam_passwd_conv_proc,
- NULL
+ &pam_passwd_conv_proc,
+ NULL
};
-static char * pam_passwd = NULL; /* Workaround for Solaris 2.6 brokenness */
-static Port * pam_port_cludge; /* Workaround for passing "Port
- * *port" into pam_passwd_conv_proc */
-#endif /* USE_PAM */
+static char *pam_passwd = NULL; /* Workaround for Solaris 2.6 brokenness */
+static Port *pam_port_cludge; /* Workaround for passing "Port *port"
+ * into pam_passwd_conv_proc */
+#endif /* USE_PAM */
#ifdef KRB4
/*----------------------------------------------------------------
@@ -429,13 +429,13 @@ auth_failed(Port *port, int status)
const char *authmethod = "Unknown auth method:";
/*
- * If we failed due to EOF from client, just quit; there's no point
- * in trying to send a message to the client, and not much point in
+ * If we failed due to EOF from client, just quit; there's no point in
+ * trying to send a message to the client, and not much point in
* logging the failure in the postmaster log. (Logging the failure
* might be desirable, were it not for the fact that libpq closes the
* connection unceremoniously if challenged for a password when it
- * hasn't got one to send. We'll get a useless log entry for
- * every psql connection under password auth, even if it's perfectly
+ * hasn't got one to send. We'll get a useless log entry for every
+ * psql connection under password auth, even if it's perfectly
* successful, if we log STATUS_EOF events.)
*/
if (status == STATUS_EOF)
@@ -467,7 +467,7 @@ auth_failed(Port *port, int status)
case uaPAM:
authmethod = "PAM";
break;
-#endif /* USE_PAM */
+#endif /* USE_PAM */
}
elog(FATAL, "%s authentication failed for user \"%s\"",
@@ -483,7 +483,7 @@ auth_failed(Port *port, int status)
void
ClientAuthentication(Port *port)
{
- int status = STATUS_ERROR;
+ int status = STATUS_ERROR;
/*
* Get the authentication method to use for this frontend/database
@@ -507,25 +507,26 @@ ClientAuthentication(Port *port)
switch (port->auth_method)
{
case uaReject:
- /*
- * This could have come from an explicit "reject" entry in
- * pg_hba.conf, but more likely it means there was no
- * matching entry. Take pity on the poor user and issue a
- * helpful error message. NOTE: this is not a security
- * breach, because all the info reported here is known at
- * the frontend and must be assumed known to bad guys.
- * We're merely helping out the less clueful good guys.
- */
- {
- const char *hostinfo = "localhost";
- if (port->raddr.sa.sa_family == AF_INET)
- hostinfo = inet_ntoa(port->raddr.in.sin_addr);
- elog(FATAL,
- "No pg_hba.conf entry for host %s, user %s, database %s",
- hostinfo, port->user, port->database);
- break;
- }
+ /*
+ * This could have come from an explicit "reject" entry in
+ * pg_hba.conf, but more likely it means there was no matching
+ * entry. Take pity on the poor user and issue a helpful
+ * error message. NOTE: this is not a security breach,
+ * because all the info reported here is known at the frontend
+ * and must be assumed known to bad guys. We're merely helping
+ * out the less clueful good guys.
+ */
+ {
+ const char *hostinfo = "localhost";
+
+ if (port->raddr.sa.sa_family == AF_INET)
+ hostinfo = inet_ntoa(port->raddr.in.sin_addr);
+ elog(FATAL,
+ "No pg_hba.conf entry for host %s, user %s, database %s",
+ hostinfo, port->user, port->database);
+ break;
+ }
case uaKrb4:
sendAuthRequest(port, AUTH_REQ_KRB4);
@@ -539,23 +540,27 @@ ClientAuthentication(Port *port)
case uaIdent:
#if !defined(SO_PEERCRED) && (defined(HAVE_STRUCT_CMSGCRED) || defined(HAVE_STRUCT_FCRED) || (defined(HAVE_STRUCT_SOCKCRED) && defined(LOCAL_CREDS)))
+
/*
- * If we are doing ident on unix-domain sockets,
- * use SCM_CREDS only if it is defined and SO_PEERCRED isn't.
+ * If we are doing ident on unix-domain sockets, use SCM_CREDS
+ * only if it is defined and SO_PEERCRED isn't.
*/
#if defined(HAVE_STRUCT_FCRED) || defined(HAVE_STRUCT_SOCKCRED)
+
/*
- * Receive credentials on next message receipt, BSD/OS, NetBSD.
- * We need to set this before the client sends the next packet.
+ * Receive credentials on next message receipt, BSD/OS,
+ * NetBSD. We need to set this before the client sends the
+ * next packet.
*/
{
- int on = 1;
+ int on = 1;
+
if (setsockopt(port->sock, 0, LOCAL_CREDS, &on, sizeof(on)) < 0)
elog(FATAL,
"pg_local_sendauth: can't do setsockopt: %s\n", strerror(errno));
}
#endif
- if (port->raddr.sa.sa_family == AF_UNIX)
+ if (port->raddr.sa.sa_family == AF_UNIX)
sendAuthRequest(port, AUTH_REQ_SCM_CREDS);
#endif
status = authident(port);
@@ -569,8 +574,8 @@ ClientAuthentication(Port *port)
case uaCrypt:
sendAuthRequest(port, AUTH_REQ_CRYPT);
status = recv_and_check_password_packet(port);
- break;
-
+ break;
+
case uaPassword:
sendAuthRequest(port, AUTH_REQ_PASSWORD);
status = recv_and_check_password_packet(port);
@@ -581,7 +586,7 @@ ClientAuthentication(Port *port)
pam_port_cludge = port;
status = CheckPAMAuth(port, port->user, "");
break;
-#endif /* USE_PAM */
+#endif /* USE_PAM */
case uaTrust:
status = STATUS_OK;
@@ -609,13 +614,9 @@ sendAuthRequest(Port *port, AuthRequest areq)
/* Add the salt for encrypted passwords. */
if (areq == AUTH_REQ_MD5)
- {
pq_sendbytes(&buf, port->md5Salt, 4);
- }
else if (areq == AUTH_REQ_CRYPT)
- {
pq_sendbytes(&buf, port->cryptSalt, 2);
- }
pq_endmessage(&buf);
pq_flush();
@@ -628,53 +629,60 @@ sendAuthRequest(Port *port, AuthRequest areq)
*/
static int
-pam_passwd_conv_proc (int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr)
+pam_passwd_conv_proc(int num_msg, const struct pam_message ** msg, struct pam_response ** resp, void *appdata_ptr)
{
StringInfoData buf;
- int32 len;
+ int32 len;
- if (num_msg != 1 || msg[0]->msg_style != PAM_PROMPT_ECHO_OFF) {
- switch(msg[0]->msg_style) {
+ if (num_msg != 1 || msg[0]->msg_style != PAM_PROMPT_ECHO_OFF)
+ {
+ switch (msg[0]->msg_style)
+ {
case PAM_ERROR_MSG:
- snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "pam_passwd_conv_proc: Error from underlying PAM layer: '%s'\n", msg[0]->msg);
+ snprintf(PQerrormsg, PQERRORMSG_LENGTH,
+ "pam_passwd_conv_proc: Error from underlying PAM layer: '%s'\n", msg[0]->msg);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
return PAM_CONV_ERR;
default:
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "pam_passwd_conv_proc: Unexpected PAM conversation %d/'%s'\n",
- msg[0]->msg_style, msg[0]->msg);
+ "pam_passwd_conv_proc: Unexpected PAM conversation %d/'%s'\n",
+ msg[0]->msg_style, msg[0]->msg);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
return PAM_CONV_ERR;
}
}
- if (!appdata_ptr) {
- /* Workaround for Solaris 2.6 where the PAM library is broken
- * and does not pass appdata_ptr to the conversation routine
+ if (!appdata_ptr)
+ {
+ /*
+ * Workaround for Solaris 2.6 where the PAM library is broken and
+ * does not pass appdata_ptr to the conversation routine
*/
appdata_ptr = pam_passwd;
}
- /* Password wasn't passed to PAM the first time around - let's go
- * ask the client to send a password, which we then stuff into
- * PAM.
+ /*
+ * Password wasn't passed to PAM the first time around - let's go ask
+ * the client to send a password, which we then stuff into PAM.
*/
- if(strlen(appdata_ptr) == 0) {
+ if (strlen(appdata_ptr) == 0)
+ {
sendAuthRequest(pam_port_cludge, AUTH_REQ_PASSWORD);
- if (pq_eof() == EOF || pq_getint(&len, 4) == EOF) {
- return PAM_CONV_ERR; /* client didn't want to send password */
+ if (pq_eof() == EOF || pq_getint(&len, 4) == EOF)
+ {
+ return PAM_CONV_ERR; /* client didn't want to send password */
}
- initStringInfo(&buf);
- pq_getstr(&buf);
- if (DebugLvl > 5)
+ initStringInfo(&buf);
+ pq_getstr(&buf);
+ if (DebugLvl > 5)
fprintf(stderr, "received PAM packet with len=%d, pw=%s\n",
- len, buf.data);
+ len, buf.data);
- if(strlen(buf.data) == 0) {
+ if (strlen(buf.data) == 0)
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH, "pam_passwd_conv_proc: no password\n");
fputs(PQerrormsg, stderr);
return PAM_CONV_ERR;
@@ -682,17 +690,19 @@ pam_passwd_conv_proc (int num_msg, const struct pam_message **msg, struct pam_re
appdata_ptr = buf.data;
}
- /* Explicitly not using palloc here - PAM will free this memory in
+ /*
+ * Explicitly not using palloc here - PAM will free this memory in
* pam_end()
*/
*resp = calloc(num_msg, sizeof(struct pam_response));
- if (!*resp) {
+ if (!*resp)
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH, "pam_passwd_conv_proc: Out of memory!\n");
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
- if(buf.data)
+ if (buf.data)
pfree(buf.data);
- return PAM_CONV_ERR;
+ return PAM_CONV_ERR;
}
(*resp)[0].resp = strdup((char *) appdata_ptr);
@@ -708,101 +718,108 @@ pam_passwd_conv_proc (int num_msg, const struct pam_message **msg, struct pam_re
static int
CheckPAMAuth(Port *port, char *user, char *password)
{
- int retval;
+ int retval;
pam_handle_t *pamh = NULL;
/*
- * Apparently, Solaris 2.6 is broken, and needs ugly static
- * variable workaround
+ * Apparently, Solaris 2.6 is broken, and needs ugly static variable
+ * workaround
*/
pam_passwd = password;
- /* Set the application data portion of the conversation struct
- * This is later used inside the PAM conversation to pass the
- * password to the authentication module.
+ /*
+ * Set the application data portion of the conversation struct This is
+ * later used inside the PAM conversation to pass the password to the
+ * authentication module.
*/
- pam_passw_conv.appdata_ptr = (char*) password; /* from password above, not allocated */
+ pam_passw_conv.appdata_ptr = (char *) password; /* from password above,
+ * not allocated */
/* Optionally, one can set the service name in pg_hba.conf */
- if(port->auth_arg[0] == '\0') {
+ if (port->auth_arg[0] == '\0')
retval = pam_start(PGSQL_PAM_SERVICE, "pgsql@", &pam_passw_conv, &pamh);
- } else {
+ else
retval = pam_start(port->auth_arg, "pgsql@", &pam_passw_conv, &pamh);
- }
- if (retval != PAM_SUCCESS) {
+ if (retval != PAM_SUCCESS)
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "CheckPAMAuth: Failed to create PAM authenticator: '%s'\n",
- pam_strerror(pamh, retval));
+ "CheckPAMAuth: Failed to create PAM authenticator: '%s'\n",
+ pam_strerror(pamh, retval));
fputs(PQerrormsg, stderr);
- pqdebug("%s", PQerrormsg);
- pam_passwd = NULL; /* Unset pam_passwd */
+ pqdebug("%s", PQerrormsg);
+ pam_passwd = NULL; /* Unset pam_passwd */
return STATUS_ERROR;
}
- if (retval == PAM_SUCCESS) {
+ if (retval == PAM_SUCCESS)
retval = pam_set_item(pamh, PAM_USER, user);
- } else {
+ else
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "CheckPAMAuth: pam_set_item(PAM_USER) failed: '%s'\n",
- pam_strerror(pamh, retval));
+ "CheckPAMAuth: pam_set_item(PAM_USER) failed: '%s'\n",
+ pam_strerror(pamh, retval));
fputs(PQerrormsg, stderr);
- pqdebug("%s", PQerrormsg);
- pam_passwd = NULL; /* Unset pam_passwd */
+ pqdebug("%s", PQerrormsg);
+ pam_passwd = NULL; /* Unset pam_passwd */
return STATUS_ERROR;
}
- if (retval == PAM_SUCCESS) {
+ if (retval == PAM_SUCCESS)
retval = pam_set_item(pamh, PAM_CONV, &pam_passw_conv);
- } else {
+ else
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "CheckPAMAuth: pam_set_item(PAM_CONV) failed: '%s'\n",
- pam_strerror(pamh, retval));
+ "CheckPAMAuth: pam_set_item(PAM_CONV) failed: '%s'\n",
+ pam_strerror(pamh, retval));
fputs(PQerrormsg, stderr);
- pqdebug("%s", PQerrormsg);
- pam_passwd = NULL; /* Unset pam_passwd */
+ pqdebug("%s", PQerrormsg);
+ pam_passwd = NULL; /* Unset pam_passwd */
return STATUS_ERROR;
}
- if (retval == PAM_SUCCESS) {
+ if (retval == PAM_SUCCESS)
retval = pam_authenticate(pamh, 0);
- } else {
+ else
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "CheckPAMAuth: pam_authenticate failed: '%s'\n",
- pam_strerror(pamh, retval));
+ "CheckPAMAuth: pam_authenticate failed: '%s'\n",
+ pam_strerror(pamh, retval));
fputs(PQerrormsg, stderr);
- pqdebug("%s", PQerrormsg);
- pam_passwd = NULL; /* Unset pam_passwd */
+ pqdebug("%s", PQerrormsg);
+ pam_passwd = NULL; /* Unset pam_passwd */
return STATUS_ERROR;
}
- if (retval == PAM_SUCCESS) {
+ if (retval == PAM_SUCCESS)
retval = pam_acct_mgmt(pamh, 0);
- } else {
+ else
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "CheckPAMAuth: pam_acct_mgmt failed: '%s'\n",
- pam_strerror(pamh, retval));
+ "CheckPAMAuth: pam_acct_mgmt failed: '%s'\n",
+ pam_strerror(pamh, retval));
fputs(PQerrormsg, stderr);
- pqdebug("%s", PQerrormsg);
- pam_passwd = NULL; /* Unset pam_passwd */
+ pqdebug("%s", PQerrormsg);
+ pam_passwd = NULL; /* Unset pam_passwd */
return STATUS_ERROR;
}
- if (retval == PAM_SUCCESS) {
+ if (retval == PAM_SUCCESS)
+ {
retval = pam_end(pamh, retval);
- if(retval != PAM_SUCCESS) {
+ if (retval != PAM_SUCCESS)
+ {
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "CheckPAMAuth: Failed to release PAM authenticator: '%s'\n",
- pam_strerror(pamh, retval));
+ "CheckPAMAuth: Failed to release PAM authenticator: '%s'\n",
+ pam_strerror(pamh, retval));
fputs(PQerrormsg, stderr);
- pqdebug("%s", PQerrormsg);
+ pqdebug("%s", PQerrormsg);
}
- pam_passwd = NULL; /* Unset pam_passwd */
+ pam_passwd = NULL; /* Unset pam_passwd */
return (retval == PAM_SUCCESS ? STATUS_OK : STATUS_ERROR);
- } else {
- return STATUS_ERROR;
}
+ else
+ return STATUS_ERROR;
}
-
-#endif /* USE_PAM */
+#endif /* USE_PAM */
/*
@@ -819,7 +836,7 @@ recv_and_check_password_packet(Port *port)
return STATUS_EOF; /* client didn't want to send password */
initStringInfo(&buf);
- if (pq_getstr(&buf) == EOF) /* receive password */
+ if (pq_getstr(&buf) == EOF) /* receive password */
{
pfree(buf.data);
return STATUS_EOF;
@@ -903,7 +920,7 @@ map_old_to_new(Port *port, UserAuth old, int status)
case uaReject:
#ifdef USE_PAM
case uaPAM:
-#endif /* USE_PAM */
+#endif /* USE_PAM */
status = STATUS_ERROR;
break;
diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c
index 1d6b80a2642..e2aaba32322 100644
--- a/src/backend/libpq/crypt.c
+++ b/src/backend/libpq/crypt.c
@@ -9,7 +9,7 @@
* Dec 17, 1997 - Todd A. Brandys
* Orignal Version Completed.
*
- * $Id: crypt.c,v 1.38 2001/09/21 20:31:45 tgl Exp $
+ * $Id: crypt.c,v 1.39 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -163,7 +163,6 @@ crypt_loadpwdfile(void)
*/
while (fgets(buffer, 256, pwd_file) != NULL)
{
-
/*
* We must remove the return char at the end of the string, as
* this will affect the correct parsing of the password entry.
@@ -281,8 +280,8 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
if (isMD5(passwd) && port->auth_method != uaMD5)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "Password is stored MD5 encrypted. "
- "'password' and 'crypt' auth methods cannot be used.\n");
+ "Password is stored MD5 encrypted. "
+ "'password' and 'crypt' auth methods cannot be used.\n");
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
return STATUS_ERROR;
@@ -295,11 +294,11 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
switch (port->auth_method)
{
case uaMD5:
- crypt_pwd = palloc(MD5_PASSWD_LEN+1);
+ crypt_pwd = palloc(MD5_PASSWD_LEN + 1);
if (isMD5(passwd))
{
if (!EncryptMD5(passwd + strlen("md5"),
- (char *)port->md5Salt,
+ (char *) port->md5Salt,
sizeof(port->md5Salt), crypt_pwd))
{
pfree(crypt_pwd);
@@ -308,7 +307,7 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
}
else
{
- char *crypt_pwd2 = palloc(MD5_PASSWD_LEN+1);
+ char *crypt_pwd2 = palloc(MD5_PASSWD_LEN + 1);
if (!EncryptMD5(passwd, port->user, strlen(port->user),
crypt_pwd2))
@@ -328,12 +327,13 @@ md5_crypt_verify(const Port *port, const char *user, const char *pgpass)
}
break;
case uaCrypt:
- {
- char salt[3];
- StrNCpy(salt, port->cryptSalt,3);
- crypt_pwd = crypt(passwd, salt);
- break;
- }
+ {
+ char salt[3];
+
+ StrNCpy(salt, port->cryptSalt, 3);
+ crypt_pwd = crypt(passwd, salt);
+ break;
+ }
default:
crypt_pwd = passwd;
break;
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index b23710a8f68..6aafdc09139 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.74 2001/09/26 19:57:01 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.75 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -45,14 +45,14 @@
/*
* These variables hold the pre-parsed contents of the hba and ident
* configuration files. Each is a list of sublists, one sublist for
- * each (non-empty, non-comment) line of the file. Each sublist's
+ * each (non-empty, non-comment) line of the file. Each sublist's
* first item is an integer line number (so we can give somewhat-useful
* location info in error messages). Remaining items are palloc'd strings,
* one string per token on the line. Note there will always be at least
* one token, since blank lines are not entered in the data structure.
*/
static List *hba_lines = NIL; /* pre-parsed contents of hba file */
-static List *ident_lines = NIL; /* pre-parsed contents of ident file */
+static List *ident_lines = NIL; /* pre-parsed contents of ident file */
/*
@@ -67,13 +67,13 @@ isblank(const char c)
/*
- * Grab one token out of fp. Tokens are strings of non-blank
- * characters bounded by blank characters, beginning of line, and end
- * of line. Blank means space or tab. Return the token as *buf.
- * Leave file positioned to character immediately after the token or
- * EOF, whichever comes first. If no more tokens on line, return null
- * string as *buf and position file to beginning of next line or EOF,
- * whichever comes first.
+ * Grab one token out of fp. Tokens are strings of non-blank
+ * characters bounded by blank characters, beginning of line, and end
+ * of line. Blank means space or tab. Return the token as *buf.
+ * Leave file positioned to character immediately after the token or
+ * EOF, whichever comes first. If no more tokens on line, return null
+ * string as *buf and position file to beginning of next line or EOF,
+ * whichever comes first.
*/
static void
next_token(FILE *fp, char *buf, const int bufsz)
@@ -89,8 +89,8 @@ next_token(FILE *fp, char *buf, const int bufsz)
{
/*
* build a token in buf of next characters up to EOF, eol, or
- * blank. If the token gets too long, we still parse it correctly,
- * but the excess characters are not stored into *buf.
+ * blank. If the token gets too long, we still parse it
+ * correctly, but the excess characters are not stored into *buf.
*/
while (c != EOF && c != '\n' && !isblank(c))
{
@@ -98,9 +98,10 @@ next_token(FILE *fp, char *buf, const int bufsz)
*buf++ = c;
c = getc(fp);
}
+
/*
- * Put back the char right after the token (critical in case it
- * is eol, since we need to detect end-of-line at next call).
+ * Put back the char right after the token (critical in case it is
+ * eol, since we need to detect end-of-line at next call).
*/
if (c != EOF)
ungetc(c, fp);
@@ -120,7 +121,7 @@ read_to_eol(FILE *file)
/*
- * Read the given file and create a list of line sublists.
+ * Read the given file and create a list of line sublists.
*/
static List *
tokenize_file(FILE *file)
@@ -182,11 +183,12 @@ free_lines(List **lines)
{
if (*lines)
{
- List *line, *token;
+ List *line,
+ *token;
foreach(line, *lines)
{
- List *ln = lfirst(line);
+ List *ln = lfirst(line);
/* free the pstrdup'd tokens (don't try it on the line number) */
foreach(token, lnext(ln))
@@ -203,15 +205,15 @@ free_lines(List **lines)
/*
- * Scan the rest of a host record (after the mask field)
- * and return the interpretation of it as *userauth_p, auth_arg, and
- * *error_p. line points to the next token of the line.
+ * Scan the rest of a host record (after the mask field)
+ * and return the interpretation of it as *userauth_p, auth_arg, and
+ * *error_p. line points to the next token of the line.
*/
static void
parse_hba_auth(List *line, UserAuth *userauth_p, char *auth_arg,
bool *error_p)
{
- char *token;
+ char *token;
if (!line)
*error_p = true;
@@ -261,21 +263,21 @@ parse_hba_auth(List *line, UserAuth *userauth_p, char *auth_arg,
/*
- * Process one line from the hba config file.
+ * Process one line from the hba config file.
*
- * See if it applies to a connection from a host with IP address port->raddr
- * to a database named port->database. If so, return *found_p true
- * and fill in the auth arguments into the appropriate port fields.
- * If not, leave *found_p as it was. If the record has a syntax error,
- * return *error_p true, after issuing a message to stderr. If no error,
- * leave *error_p as it was.
+ * See if it applies to a connection from a host with IP address port->raddr
+ * to a database named port->database. If so, return *found_p true
+ * and fill in the auth arguments into the appropriate port fields.
+ * If not, leave *found_p as it was. If the record has a syntax error,
+ * return *error_p true, after issuing a message to stderr. If no error,
+ * leave *error_p as it was.
*/
static void
parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
{
int line_number;
- char *token;
- char *db;
+ char *token;
+ char *db;
Assert(line != NIL);
line_number = lfirsti(line);
@@ -319,7 +321,8 @@ parse_hba(List *line, hbaPort *port, bool *found_p, bool *error_p)
}
else if (strcmp(token, "host") == 0 || strcmp(token, "hostssl") == 0)
{
- struct in_addr file_ip_addr, mask;
+ struct in_addr file_ip_addr,
+ mask;
if (strcmp(token, "hostssl") == 0)
{
@@ -401,17 +404,17 @@ hba_syntax:
/*
- * Scan the (pre-parsed) hba file line by line, looking for a match
+ * Scan the (pre-parsed) hba file line by line, looking for a match
* to the port's connection request.
*/
static bool
check_hba(hbaPort *port)
{
- bool found_entry = false;
- bool error = false;
- List *line;
+ bool found_entry = false;
+ bool error = false;
+ List *line;
- foreach (line, hba_lines)
+ foreach(line, hba_lines)
{
parse_hba(lfirst(line), port, &found_entry, &error);
if (found_entry || error)
@@ -447,10 +450,11 @@ load_hba(void)
if (hba_lines)
free_lines(&hba_lines);
+
/*
- * The name of old config file that better not exist.
- * Fail if config file by old name exists.
- * Put together the full pathname to the old config file.
+ * The name of old config file that better not exist. Fail if config
+ * file by old name exists. Put together the full pathname to the old
+ * config file.
*/
bufsize = (strlen(DataDir) + strlen(OLD_CONF_FILE) + 2) * sizeof(char);
old_conf_file = (char *) palloc(bufsize);
@@ -461,10 +465,10 @@ load_hba(void)
/* Old config file exists. Tell this guy he needs to upgrade. */
close(fd);
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "A file exists by the name used for host-based authentication "
- "in prior releases of Postgres (%s). The name and format of "
- "the configuration file have changed, so this file should be "
- "converted.\n", old_conf_file);
+ "A file exists by the name used for host-based authentication "
+ "in prior releases of Postgres (%s). The name and format of "
+ "the configuration file have changed, so this file should be "
+ "converted.\n", old_conf_file);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
}
@@ -502,7 +506,7 @@ load_hba(void)
/*
* Process one line from the ident config file.
*
- * Take the line and compare it to the needed map, pg_user and ident_user.
+ * Take the line and compare it to the needed map, pg_user and ident_user.
* *found_p and *error_p are set according to our results.
*/
static void
@@ -510,10 +514,10 @@ parse_ident_usermap(List *line, const char *usermap_name, const char *pg_user,
const char *ident_user, bool *found_p, bool *error_p)
{
int line_number;
- char *token;
- char *file_map;
- char *file_pguser;
- char *file_ident_user;
+ char *token;
+ char *file_map;
+ char *file_pguser;
+ char *file_ident_user;
*found_p = false;
*error_p = false;
@@ -562,32 +566,33 @@ ident_syntax:
/*
- * Scan the (pre-parsed) ident usermap file line by line, looking for a match
+ * Scan the (pre-parsed) ident usermap file line by line, looking for a match
*
- * See if the user with ident username "ident_user" is allowed to act
- * as Postgres user "pguser" according to usermap "usermap_name".
+ * See if the user with ident username "ident_user" is allowed to act
+ * as Postgres user "pguser" according to usermap "usermap_name".
*
- * Special case: For usermap "sameuser", don't look in the usermap
- * file. That's an implied map where "pguser" must be identical to
- * "ident_user" in order to be authorized.
+ * Special case: For usermap "sameuser", don't look in the usermap
+ * file. That's an implied map where "pguser" must be identical to
+ * "ident_user" in order to be authorized.
*
- * Iff authorized, return true.
+ * Iff authorized, return true.
*/
static bool
check_ident_usermap(const char *usermap_name,
const char *pg_user,
const char *ident_user)
{
- List *line;
- bool found_entry = false, error = false;
+ List *line;
+ bool found_entry = false,
+ error = false;
if (usermap_name[0] == '\0')
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "check_ident_usermap: hba configuration file does not "
- "have the usermap field filled in in the entry that pertains "
- "to this connection. That field is essential for Ident-based "
- "authentication.\n");
+ "check_ident_usermap: hba configuration file does not "
+ "have the usermap field filled in in the entry that pertains "
+ "to this connection. That field is essential for Ident-based "
+ "authentication.\n");
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
found_entry = false;
@@ -619,9 +624,9 @@ check_ident_usermap(const char *usermap_name,
static void
load_ident(void)
{
- FILE *file; /* The map file we have to read */
- char *map_file; /* The name of the map file we have to
- * read */
+ FILE *file; /* The map file we have to read */
+ char *map_file; /* The name of the map file we have to
+ * read */
int bufsize;
if (ident_lines)
@@ -652,16 +657,17 @@ load_ident(void)
/*
- * Parse the string "*ident_response" as a response from a query to an Ident
- * server. If it's a normal response indicating a username, return true
- * and store the username at *ident_user. If it's anything else,
+ * Parse the string "*ident_response" as a response from a query to an Ident
+ * server. If it's a normal response indicating a username, return true
+ * and store the username at *ident_user. If it's anything else,
* return false.
*/
static bool
interpret_ident_response(char *ident_response,
char *ident_user)
{
- char *cursor = ident_response; /* Cursor into *ident_response */
+ char *cursor = ident_response; /* Cursor into
+ * *ident_response */
/*
* Ident's response, in the telnet tradition, should end in crlf
@@ -735,14 +741,14 @@ interpret_ident_response(char *ident_response,
/*
- * Talk to the ident server on host "remote_ip_addr" and find out who
- * owns the tcp connection from his port "remote_port" to port
- * "local_port_addr" on host "local_ip_addr". Return the username the
- * ident server gives as "*ident_user".
+ * Talk to the ident server on host "remote_ip_addr" and find out who
+ * owns the tcp connection from his port "remote_port" to port
+ * "local_port_addr" on host "local_ip_addr". Return the username the
+ * ident server gives as "*ident_user".
*
- * IP addresses and port numbers are in network byte order.
+ * IP addresses and port numbers are in network byte order.
*
- * But iff we're unable to get the information from ident, return false.
+ * But iff we're unable to get the information from ident, return false.
*/
static bool
ident_inet(const struct in_addr remote_ip_addr,
@@ -755,14 +761,14 @@ ident_inet(const struct in_addr remote_ip_addr,
* talk to Ident */
rc; /* Return code from a locally called
* function */
- bool ident_return;
+ bool ident_return;
sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if (sock_fd == -1)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "Failed to create socket on which to talk to Ident server. "
- "socket() returned errno = %s (%d)\n", strerror(errno), errno);
+ "Failed to create socket on which to talk to Ident server. "
+ "socket() returned errno = %s (%d)\n", strerror(errno), errno);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
ident_return = false;
@@ -799,10 +805,10 @@ ident_inet(const struct in_addr remote_ip_addr,
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
"Unable to connect to Ident server on the host which is "
- "trying to connect to Postgres "
- "(IP address %s, Port %d). "
- "errno = %s (%d)\n",
- inet_ntoa(remote_ip_addr), IDENT_PORT, strerror(errno), errno);
+ "trying to connect to Postgres "
+ "(IP address %s, Port %d). "
+ "errno = %s (%d)\n",
+ inet_ntoa(remote_ip_addr), IDENT_PORT, strerror(errno), errno);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
ident_return = false;
@@ -818,11 +824,11 @@ ident_inet(const struct in_addr remote_ip_addr,
if (rc < 0)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "Unable to send query to Ident server on the host which is "
- "trying to connect to Postgres (Host %s, Port %d),"
- "even though we successfully connected to it. "
- "errno = %s (%d)\n",
- inet_ntoa(remote_ip_addr), IDENT_PORT, strerror(errno), errno);
+ "Unable to send query to Ident server on the host which is "
+ "trying to connect to Postgres (Host %s, Port %d),"
+ "even though we successfully connected to it. "
+ "errno = %s (%d)\n",
+ inet_ntoa(remote_ip_addr), IDENT_PORT, strerror(errno), errno);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
ident_return = false;
@@ -836,13 +842,13 @@ ident_inet(const struct in_addr remote_ip_addr,
if (rc < 0)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "Unable to receive response from Ident server "
- "on the host which is "
- "trying to connect to Postgres (Host %s, Port %d),"
- "even though we successfully sent our query to it. "
- "errno = %s (%d)\n",
- inet_ntoa(remote_ip_addr), IDENT_PORT,
- strerror(errno), errno);
+ "Unable to receive response from Ident server "
+ "on the host which is "
+ "trying to connect to Postgres (Host %s, Port %d),"
+ "even though we successfully sent our query to it. "
+ "errno = %s (%d)\n",
+ inet_ntoa(remote_ip_addr), IDENT_PORT,
+ strerror(errno), errno);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
ident_return = false;
@@ -861,18 +867,18 @@ ident_inet(const struct in_addr remote_ip_addr,
}
/*
- * Ask kernel about the credentials of the connecting process and
- * determine the symbolic name of the corresponding user.
+ * Ask kernel about the credentials of the connecting process and
+ * determine the symbolic name of the corresponding user.
*
- * Returns either true and the username put into "ident_user",
- * or false if we were unable to determine the username.
+ * Returns either true and the username put into "ident_user",
+ * or false if we were unable to determine the username.
*/
static bool
ident_unix(int sock, char *ident_user)
{
#if defined(SO_PEERCRED)
/* Linux style: use getsockopt(SO_PEERCRED) */
- struct ucred peercred;
+ struct ucred peercred;
ACCEPT_TYPE_ARG3 so_len = sizeof(peercred);
struct passwd *pass;
@@ -894,13 +900,13 @@ ident_unix(int sock, char *ident_user)
if (pass == NULL)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "ident_unix: unknown local user with uid %d\n", peercred.uid);
+ "ident_unix: unknown local user with uid %d\n", peercred.uid);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
return false;
}
- StrNCpy(ident_user, pass->pw_name, IDENT_USERNAME_MAX+1);
+ StrNCpy(ident_user, pass->pw_name, IDENT_USERNAME_MAX + 1);
return true;
@@ -910,36 +916,40 @@ ident_unix(int sock, char *ident_user)
/* Credentials structure */
#ifdef HAVE_STRUCT_CMSGCRED
typedef struct cmsgcred Cred;
+
#define cruid cmcred_uid
#elif HAVE_STRUCT_FCRED
typedef struct fcred Cred;
+
#define cruid fc_uid
#elif HAVE_STRUCT_SOCKCRED
typedef struct sockcred Cred;
+
#define cruid sc_uid
#endif
- Cred *cred;
+ Cred *cred;
/* Compute size without padding */
- char cmsgmem[ALIGN(sizeof(struct cmsghdr)) + ALIGN(sizeof(Cred))]; /*for NetBSD*/
+ char cmsgmem[ALIGN(sizeof(struct cmsghdr)) + ALIGN(sizeof(Cred))]; /* for NetBSD */
+
/* Point to start of first structure */
- struct cmsghdr *cmsg = (struct cmsghdr *)cmsgmem;
+ struct cmsghdr *cmsg = (struct cmsghdr *) cmsgmem;
struct iovec iov;
- char buf;
+ char buf;
struct passwd *pw;
memset(&msg, 0, sizeof(msg));
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
- msg.msg_control = (char *)cmsg;
+ msg.msg_control = (char *) cmsg;
msg.msg_controllen = sizeof(cmsgmem);
memset(cmsg, 0, sizeof(cmsgmem));
/*
- * The one character which is received here is not meaningful;
- * its purposes is only to make sure that recvmsg() blocks
- * long enough for the other side to send its credentials.
+ * The one character which is received here is not meaningful; its
+ * purposes is only to make sure that recvmsg() blocks long enough for
+ * the other side to send its credentials.
*/
iov.iov_base = &buf;
iov.iov_len = 1;
@@ -956,20 +966,20 @@ ident_unix(int sock, char *ident_user)
return false;
}
- cred = (Cred *)CMSG_DATA(cmsg);
+ cred = (Cred *) CMSG_DATA(cmsg);
pw = getpwuid(cred->cruid);
if (pw == NULL)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
- "ident_unix: unknown local user with uid %d\n",
- cred->cruid);
+ "ident_unix: unknown local user with uid %d\n",
+ cred->cruid);
fputs(PQerrormsg, stderr);
pqdebug("%s", PQerrormsg);
return false;
}
- StrNCpy(ident_user, pw->pw_name, IDENT_USERNAME_MAX+1);
+ StrNCpy(ident_user, pw->pw_name, IDENT_USERNAME_MAX + 1);
return true;
@@ -980,17 +990,16 @@ ident_unix(int sock, char *ident_user)
pqdebug("%s", PQerrormsg);
return false;
-
#endif
}
/*
- * Determine the username of the initiator of the connection described
- * by "port". Then look in the usermap file under the usermap
- * port->auth_arg and see if that user is equivalent to Postgres user
- * port->user.
+ * Determine the username of the initiator of the connection described
+ * by "port". Then look in the usermap file under the usermap
+ * port->auth_arg and see if that user is equivalent to Postgres user
+ * port->user.
*
- * Return STATUS_OK if yes, STATUS_ERROR if no match (or couldn't get info).
+ * Return STATUS_OK if yes, STATUS_ERROR if no match (or couldn't get info).
*/
int
authident(hbaPort *port)
@@ -1022,13 +1031,13 @@ authident(hbaPort *port)
/*
- * Determine what authentication method should be used when accessing database
- * "database" from frontend "raddr", user "user". Return the method and
- * an optional argument (stored in fields of *port), and STATUS_OK.
+ * Determine what authentication method should be used when accessing database
+ * "database" from frontend "raddr", user "user". Return the method and
+ * an optional argument (stored in fields of *port), and STATUS_OK.
*
- * Note that STATUS_ERROR indicates a problem with the hba config file.
- * If the file is OK but does not contain any entry matching the request,
- * we return STATUS_OK and method = uaReject.
+ * Note that STATUS_ERROR indicates a problem with the hba config file.
+ * If the file is OK but does not contain any entry matching the request,
+ * we return STATUS_OK and method = uaReject.
*/
int
hba_getauthmethod(hbaPort *port)
@@ -1252,5 +1261,4 @@ GetCharSetByHost(char *TableName, int host, const char *DataDir)
pfree((struct CharsetItem *) ChArray[i]);
}
}
-
-#endif /* CYR_RECODE */
+#endif /* CYR_RECODE */
diff --git a/src/backend/libpq/md5.c b/src/backend/libpq/md5.c
index c47abc71ce1..b0fc834eb01 100644
--- a/src/backend/libpq/md5.c
+++ b/src/backend/libpq/md5.c
@@ -1,16 +1,16 @@
/*
- * md5.c
+ * md5.c
*
- * Implements the MD5 Message-Digest Algorithm as specified in
- * RFC 1321. This implementation is a simple one, in that it
- * needs every input byte to be buffered before doing any
- * calculations. I do not expect this file to be used for
- * general purpose MD5'ing of large amounts of data, only for
- * generating hashed passwords from limited input.
+ * Implements the MD5 Message-Digest Algorithm as specified in
+ * RFC 1321. This implementation is a simple one, in that it
+ * needs every input byte to be buffered before doing any
+ * calculations. I do not expect this file to be used for
+ * general purpose MD5'ing of large amounts of data, only for
+ * generating hashed passwords from limited input.
*
- * Sverre H. Huseby <sverrehu@online.no>
+ * Sverre H. Huseby <sverrehu@online.no>
*
- * $Header: /cvsroot/pgsql/src/backend/libpq/md5.c,v 1.8 2001/09/29 19:49:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/md5.c,v 1.9 2001/10/25 05:49:30 momjian Exp $
*/
#include "postgres.h"
@@ -32,15 +32,17 @@
/*
* The returned array is allocated using malloc. the caller should free it
- * when it is no longer needed.
+ * when it is no longer needed.
*/
static uint8 *
createPaddedCopyWithLength(uint8 *b, uint32 *l)
{
- uint8 *ret;
- uint32 q;
- uint32 len, newLen448;
- uint32 len_high, len_low; /* 64-bit value split into 32-bit sections */
+ uint8 *ret;
+ uint32 q;
+ uint32 len,
+ newLen448;
+ uint32 len_high,
+ len_low; /* 64-bit value split into 32-bit sections */
len = ((b == NULL) ? 0 : *l);
newLen448 = len + 64 - (len % 64) - 8;
@@ -93,7 +95,10 @@ createPaddedCopyWithLength(uint8 *b, uint32 *l)
static void
doTheRounds(uint32 X[16], uint32 state[4])
{
- uint32 a, b, c, d;
+ uint32 a,
+ b,
+ c,
+ d;
a = state[0];
b = state[1];
@@ -101,76 +106,76 @@ doTheRounds(uint32 X[16], uint32 state[4])
d = state[3];
/* round 1 */
- a = b + ROT_LEFT((a + F(b, c, d) + X[ 0] + 0xd76aa478), 7); /* 1 */
- d = a + ROT_LEFT((d + F(a, b, c) + X[ 1] + 0xe8c7b756), 12); /* 2 */
- c = d + ROT_LEFT((c + F(d, a, b) + X[ 2] + 0x242070db), 17); /* 3 */
- b = c + ROT_LEFT((b + F(c, d, a) + X[ 3] + 0xc1bdceee), 22); /* 4 */
- a = b + ROT_LEFT((a + F(b, c, d) + X[ 4] + 0xf57c0faf), 7); /* 5 */
- d = a + ROT_LEFT((d + F(a, b, c) + X[ 5] + 0x4787c62a), 12); /* 6 */
- c = d + ROT_LEFT((c + F(d, a, b) + X[ 6] + 0xa8304613), 17); /* 7 */
- b = c + ROT_LEFT((b + F(c, d, a) + X[ 7] + 0xfd469501), 22); /* 8 */
- a = b + ROT_LEFT((a + F(b, c, d) + X[ 8] + 0x698098d8), 7); /* 9 */
- d = a + ROT_LEFT((d + F(a, b, c) + X[ 9] + 0x8b44f7af), 12); /* 10 */
- c = d + ROT_LEFT((c + F(d, a, b) + X[10] + 0xffff5bb1), 17); /* 11 */
- b = c + ROT_LEFT((b + F(c, d, a) + X[11] + 0x895cd7be), 22); /* 12 */
- a = b + ROT_LEFT((a + F(b, c, d) + X[12] + 0x6b901122), 7); /* 13 */
- d = a + ROT_LEFT((d + F(a, b, c) + X[13] + 0xfd987193), 12); /* 14 */
- c = d + ROT_LEFT((c + F(d, a, b) + X[14] + 0xa679438e), 17); /* 15 */
- b = c + ROT_LEFT((b + F(c, d, a) + X[15] + 0x49b40821), 22); /* 16 */
+ a = b + ROT_LEFT((a + F(b, c, d) + X[0] + 0xd76aa478), 7); /* 1 */
+ d = a + ROT_LEFT((d + F(a, b, c) + X[1] + 0xe8c7b756), 12); /* 2 */
+ c = d + ROT_LEFT((c + F(d, a, b) + X[2] + 0x242070db), 17); /* 3 */
+ b = c + ROT_LEFT((b + F(c, d, a) + X[3] + 0xc1bdceee), 22); /* 4 */
+ a = b + ROT_LEFT((a + F(b, c, d) + X[4] + 0xf57c0faf), 7); /* 5 */
+ d = a + ROT_LEFT((d + F(a, b, c) + X[5] + 0x4787c62a), 12); /* 6 */
+ c = d + ROT_LEFT((c + F(d, a, b) + X[6] + 0xa8304613), 17); /* 7 */
+ b = c + ROT_LEFT((b + F(c, d, a) + X[7] + 0xfd469501), 22); /* 8 */
+ a = b + ROT_LEFT((a + F(b, c, d) + X[8] + 0x698098d8), 7); /* 9 */
+ d = a + ROT_LEFT((d + F(a, b, c) + X[9] + 0x8b44f7af), 12); /* 10 */
+ c = d + ROT_LEFT((c + F(d, a, b) + X[10] + 0xffff5bb1), 17); /* 11 */
+ b = c + ROT_LEFT((b + F(c, d, a) + X[11] + 0x895cd7be), 22); /* 12 */
+ a = b + ROT_LEFT((a + F(b, c, d) + X[12] + 0x6b901122), 7); /* 13 */
+ d = a + ROT_LEFT((d + F(a, b, c) + X[13] + 0xfd987193), 12); /* 14 */
+ c = d + ROT_LEFT((c + F(d, a, b) + X[14] + 0xa679438e), 17); /* 15 */
+ b = c + ROT_LEFT((b + F(c, d, a) + X[15] + 0x49b40821), 22); /* 16 */
/* round 2 */
- a = b + ROT_LEFT((a + G(b, c, d) + X[ 1] + 0xf61e2562), 5); /* 17 */
- d = a + ROT_LEFT((d + G(a, b, c) + X[ 6] + 0xc040b340), 9); /* 18 */
- c = d + ROT_LEFT((c + G(d, a, b) + X[11] + 0x265e5a51), 14); /* 19 */
- b = c + ROT_LEFT((b + G(c, d, a) + X[ 0] + 0xe9b6c7aa), 20); /* 20 */
- a = b + ROT_LEFT((a + G(b, c, d) + X[ 5] + 0xd62f105d), 5); /* 21 */
- d = a + ROT_LEFT((d + G(a, b, c) + X[10] + 0x02441453), 9); /* 22 */
- c = d + ROT_LEFT((c + G(d, a, b) + X[15] + 0xd8a1e681), 14); /* 23 */
- b = c + ROT_LEFT((b + G(c, d, a) + X[ 4] + 0xe7d3fbc8), 20); /* 24 */
- a = b + ROT_LEFT((a + G(b, c, d) + X[ 9] + 0x21e1cde6), 5); /* 25 */
- d = a + ROT_LEFT((d + G(a, b, c) + X[14] + 0xc33707d6), 9); /* 26 */
- c = d + ROT_LEFT((c + G(d, a, b) + X[ 3] + 0xf4d50d87), 14); /* 27 */
- b = c + ROT_LEFT((b + G(c, d, a) + X[ 8] + 0x455a14ed), 20); /* 28 */
- a = b + ROT_LEFT((a + G(b, c, d) + X[13] + 0xa9e3e905), 5); /* 29 */
- d = a + ROT_LEFT((d + G(a, b, c) + X[ 2] + 0xfcefa3f8), 9); /* 30 */
- c = d + ROT_LEFT((c + G(d, a, b) + X[ 7] + 0x676f02d9), 14); /* 31 */
- b = c + ROT_LEFT((b + G(c, d, a) + X[12] + 0x8d2a4c8a), 20); /* 32 */
+ a = b + ROT_LEFT((a + G(b, c, d) + X[1] + 0xf61e2562), 5); /* 17 */
+ d = a + ROT_LEFT((d + G(a, b, c) + X[6] + 0xc040b340), 9); /* 18 */
+ c = d + ROT_LEFT((c + G(d, a, b) + X[11] + 0x265e5a51), 14); /* 19 */
+ b = c + ROT_LEFT((b + G(c, d, a) + X[0] + 0xe9b6c7aa), 20); /* 20 */
+ a = b + ROT_LEFT((a + G(b, c, d) + X[5] + 0xd62f105d), 5); /* 21 */
+ d = a + ROT_LEFT((d + G(a, b, c) + X[10] + 0x02441453), 9); /* 22 */
+ c = d + ROT_LEFT((c + G(d, a, b) + X[15] + 0xd8a1e681), 14); /* 23 */
+ b = c + ROT_LEFT((b + G(c, d, a) + X[4] + 0xe7d3fbc8), 20); /* 24 */
+ a = b + ROT_LEFT((a + G(b, c, d) + X[9] + 0x21e1cde6), 5); /* 25 */
+ d = a + ROT_LEFT((d + G(a, b, c) + X[14] + 0xc33707d6), 9); /* 26 */
+ c = d + ROT_LEFT((c + G(d, a, b) + X[3] + 0xf4d50d87), 14); /* 27 */
+ b = c + ROT_LEFT((b + G(c, d, a) + X[8] + 0x455a14ed), 20); /* 28 */
+ a = b + ROT_LEFT((a + G(b, c, d) + X[13] + 0xa9e3e905), 5); /* 29 */
+ d = a + ROT_LEFT((d + G(a, b, c) + X[2] + 0xfcefa3f8), 9); /* 30 */
+ c = d + ROT_LEFT((c + G(d, a, b) + X[7] + 0x676f02d9), 14); /* 31 */
+ b = c + ROT_LEFT((b + G(c, d, a) + X[12] + 0x8d2a4c8a), 20); /* 32 */
/* round 3 */
- a = b + ROT_LEFT((a + H(b, c, d) + X[ 5] + 0xfffa3942), 4); /* 33 */
- d = a + ROT_LEFT((d + H(a, b, c) + X[ 8] + 0x8771f681), 11); /* 34 */
- c = d + ROT_LEFT((c + H(d, a, b) + X[11] + 0x6d9d6122), 16); /* 35 */
- b = c + ROT_LEFT((b + H(c, d, a) + X[14] + 0xfde5380c), 23); /* 36 */
- a = b + ROT_LEFT((a + H(b, c, d) + X[ 1] + 0xa4beea44), 4); /* 37 */
- d = a + ROT_LEFT((d + H(a, b, c) + X[ 4] + 0x4bdecfa9), 11); /* 38 */
- c = d + ROT_LEFT((c + H(d, a, b) + X[ 7] + 0xf6bb4b60), 16); /* 39 */
- b = c + ROT_LEFT((b + H(c, d, a) + X[10] + 0xbebfbc70), 23); /* 40 */
- a = b + ROT_LEFT((a + H(b, c, d) + X[13] + 0x289b7ec6), 4); /* 41 */
- d = a + ROT_LEFT((d + H(a, b, c) + X[ 0] + 0xeaa127fa), 11); /* 42 */
- c = d + ROT_LEFT((c + H(d, a, b) + X[ 3] + 0xd4ef3085), 16); /* 43 */
- b = c + ROT_LEFT((b + H(c, d, a) + X[ 6] + 0x04881d05), 23); /* 44 */
- a = b + ROT_LEFT((a + H(b, c, d) + X[ 9] + 0xd9d4d039), 4); /* 45 */
- d = a + ROT_LEFT((d + H(a, b, c) + X[12] + 0xe6db99e5), 11); /* 46 */
- c = d + ROT_LEFT((c + H(d, a, b) + X[15] + 0x1fa27cf8), 16); /* 47 */
- b = c + ROT_LEFT((b + H(c, d, a) + X[ 2] + 0xc4ac5665), 23); /* 48 */
+ a = b + ROT_LEFT((a + H(b, c, d) + X[5] + 0xfffa3942), 4); /* 33 */
+ d = a + ROT_LEFT((d + H(a, b, c) + X[8] + 0x8771f681), 11); /* 34 */
+ c = d + ROT_LEFT((c + H(d, a, b) + X[11] + 0x6d9d6122), 16); /* 35 */
+ b = c + ROT_LEFT((b + H(c, d, a) + X[14] + 0xfde5380c), 23); /* 36 */
+ a = b + ROT_LEFT((a + H(b, c, d) + X[1] + 0xa4beea44), 4); /* 37 */
+ d = a + ROT_LEFT((d + H(a, b, c) + X[4] + 0x4bdecfa9), 11); /* 38 */
+ c = d + ROT_LEFT((c + H(d, a, b) + X[7] + 0xf6bb4b60), 16); /* 39 */
+ b = c + ROT_LEFT((b + H(c, d, a) + X[10] + 0xbebfbc70), 23); /* 40 */
+ a = b + ROT_LEFT((a + H(b, c, d) + X[13] + 0x289b7ec6), 4); /* 41 */
+ d = a + ROT_LEFT((d + H(a, b, c) + X[0] + 0xeaa127fa), 11); /* 42 */
+ c = d + ROT_LEFT((c + H(d, a, b) + X[3] + 0xd4ef3085), 16); /* 43 */
+ b = c + ROT_LEFT((b + H(c, d, a) + X[6] + 0x04881d05), 23); /* 44 */
+ a = b + ROT_LEFT((a + H(b, c, d) + X[9] + 0xd9d4d039), 4); /* 45 */
+ d = a + ROT_LEFT((d + H(a, b, c) + X[12] + 0xe6db99e5), 11); /* 46 */
+ c = d + ROT_LEFT((c + H(d, a, b) + X[15] + 0x1fa27cf8), 16); /* 47 */
+ b = c + ROT_LEFT((b + H(c, d, a) + X[2] + 0xc4ac5665), 23); /* 48 */
/* round 4 */
- a = b + ROT_LEFT((a + I(b, c, d) + X[ 0] + 0xf4292244), 6); /* 49 */
- d = a + ROT_LEFT((d + I(a, b, c) + X[ 7] + 0x432aff97), 10); /* 50 */
- c = d + ROT_LEFT((c + I(d, a, b) + X[14] + 0xab9423a7), 15); /* 51 */
- b = c + ROT_LEFT((b + I(c, d, a) + X[ 5] + 0xfc93a039), 21); /* 52 */
- a = b + ROT_LEFT((a + I(b, c, d) + X[12] + 0x655b59c3), 6); /* 53 */
- d = a + ROT_LEFT((d + I(a, b, c) + X[ 3] + 0x8f0ccc92), 10); /* 54 */
- c = d + ROT_LEFT((c + I(d, a, b) + X[10] + 0xffeff47d), 15); /* 55 */
- b = c + ROT_LEFT((b + I(c, d, a) + X[ 1] + 0x85845dd1), 21); /* 56 */
- a = b + ROT_LEFT((a + I(b, c, d) + X[ 8] + 0x6fa87e4f), 6); /* 57 */
- d = a + ROT_LEFT((d + I(a, b, c) + X[15] + 0xfe2ce6e0), 10); /* 58 */
- c = d + ROT_LEFT((c + I(d, a, b) + X[ 6] + 0xa3014314), 15); /* 59 */
- b = c + ROT_LEFT((b + I(c, d, a) + X[13] + 0x4e0811a1), 21); /* 60 */
- a = b + ROT_LEFT((a + I(b, c, d) + X[ 4] + 0xf7537e82), 6); /* 61 */
- d = a + ROT_LEFT((d + I(a, b, c) + X[11] + 0xbd3af235), 10); /* 62 */
- c = d + ROT_LEFT((c + I(d, a, b) + X[ 2] + 0x2ad7d2bb), 15); /* 63 */
- b = c + ROT_LEFT((b + I(c, d, a) + X[ 9] + 0xeb86d391), 21); /* 64 */
+ a = b + ROT_LEFT((a + I(b, c, d) + X[0] + 0xf4292244), 6); /* 49 */
+ d = a + ROT_LEFT((d + I(a, b, c) + X[7] + 0x432aff97), 10); /* 50 */
+ c = d + ROT_LEFT((c + I(d, a, b) + X[14] + 0xab9423a7), 15); /* 51 */
+ b = c + ROT_LEFT((b + I(c, d, a) + X[5] + 0xfc93a039), 21); /* 52 */
+ a = b + ROT_LEFT((a + I(b, c, d) + X[12] + 0x655b59c3), 6); /* 53 */
+ d = a + ROT_LEFT((d + I(a, b, c) + X[3] + 0x8f0ccc92), 10); /* 54 */
+ c = d + ROT_LEFT((c + I(d, a, b) + X[10] + 0xffeff47d), 15); /* 55 */
+ b = c + ROT_LEFT((b + I(c, d, a) + X[1] + 0x85845dd1), 21); /* 56 */
+ a = b + ROT_LEFT((a + I(b, c, d) + X[8] + 0x6fa87e4f), 6); /* 57 */
+ d = a + ROT_LEFT((d + I(a, b, c) + X[15] + 0xfe2ce6e0), 10); /* 58 */
+ c = d + ROT_LEFT((c + I(d, a, b) + X[6] + 0xa3014314), 15); /* 59 */
+ b = c + ROT_LEFT((b + I(c, d, a) + X[13] + 0x4e0811a1), 21); /* 60 */
+ a = b + ROT_LEFT((a + I(b, c, d) + X[4] + 0xf7537e82), 6); /* 61 */
+ d = a + ROT_LEFT((d + I(a, b, c) + X[11] + 0xbd3af235), 10); /* 62 */
+ c = d + ROT_LEFT((c + I(d, a, b) + X[2] + 0x2ad7d2bb), 15); /* 63 */
+ b = c + ROT_LEFT((b + I(c, d, a) + X[9] + 0xeb86d391), 21); /* 64 */
state[0] += a;
state[1] += b;
@@ -181,11 +186,15 @@ doTheRounds(uint32 X[16], uint32 state[4])
static int
calculateDigestFromBuffer(uint8 *b, uint32 len, uint8 sum[16])
{
- register uint32 i, j, k, newI;
- uint32 l;
- uint8 *input;
+ register uint32 i,
+ j,
+ k,
+ newI;
+ uint32 l;
+ uint8 *input;
register uint32 *wbp;
- uint32 workBuff[16], state[4];
+ uint32 workBuff[16],
+ state[4];
l = len;
@@ -197,11 +206,13 @@ calculateDigestFromBuffer(uint8 *b, uint32 len, uint8 sum[16])
if ((input = createPaddedCopyWithLength(b, &l)) == NULL)
return 0;
- for (i = 0;;) {
+ for (i = 0;;)
+ {
if ((newI = i + 16 * 4) > l)
break;
k = i + 3;
- for (j = 0; j < 16; j++) {
+ for (j = 0; j < 16; j++)
+ {
wbp = (workBuff + j);
*wbp = input[k--];
*wbp <<= 8;
@@ -218,7 +229,8 @@ calculateDigestFromBuffer(uint8 *b, uint32 len, uint8 sum[16])
free(input);
j = 0;
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < 4; i++)
+ {
k = state[i];
sum[j++] = (k & 0xff);
k >>= 8;
@@ -235,9 +247,11 @@ static void
bytesToHex(uint8 b[16], char *s)
{
static char *hex = "0123456789abcdef";
- int q, w;
+ int q,
+ w;
- for (q = 0, w = 0; q < 16; q++) {
+ for (q = 0, w = 0; q < 16; q++)
+ {
s[w++] = hex[(b[q] >> 4) & 0x0F];
s[w++] = hex[b[q] & 0x0F];
}
@@ -245,39 +259,39 @@ bytesToHex(uint8 b[16], char *s)
}
/*
- * PUBLIC FUNCTIONS
+ * PUBLIC FUNCTIONS
*/
/*
- * md5_hash
+ * md5_hash
*
- * Calculates the MD5 sum of the bytes in a buffer.
+ * Calculates the MD5 sum of the bytes in a buffer.
*
- * SYNOPSIS #include "crypt.h"
- * int md5_hash(const void *buff, size_t len, char *hexsum)
+ * SYNOPSIS #include "crypt.h"
+ * int md5_hash(const void *buff, size_t len, char *hexsum)
*
- * INPUT buff the buffer containing the bytes that you want
- * the MD5 sum of.
- * len number of bytes in the buffer.
+ * INPUT buff the buffer containing the bytes that you want
+ * the MD5 sum of.
+ * len number of bytes in the buffer.
*
- * OUTPUT hexsum the MD5 sum as a '\0'-terminated string of
- * hexadecimal digits. an MD5 sum is 16 bytes long.
- * each byte is represented by two heaxadecimal
- * characters. you thus need to provide an array
- * of 33 characters, including the trailing '\0'.
+ * OUTPUT hexsum the MD5 sum as a '\0'-terminated string of
+ * hexadecimal digits. an MD5 sum is 16 bytes long.
+ * each byte is represented by two heaxadecimal
+ * characters. you thus need to provide an array
+ * of 33 characters, including the trailing '\0'.
*
- * RETURNS 0 on failure (out of memory for internal buffers) or
- * non-zero on success.
+ * RETURNS 0 on failure (out of memory for internal buffers) or
+ * non-zero on success.
*
- * STANDARDS MD5 is described in RFC 1321.
+ * STANDARDS MD5 is described in RFC 1321.
*
- * AUTHOR Sverre H. Huseby <sverrehu@online.no>
+ * AUTHOR Sverre H. Huseby <sverrehu@online.no>
*
*/
bool
md5_hash(const void *buff, size_t len, char *hexsum)
{
- uint8 sum[16];
+ uint8 sum[16];
if (!calculateDigestFromBuffer((uint8 *) buff, len, sum))
return false;
@@ -297,19 +311,20 @@ md5_hash(const void *buff, size_t len, char *hexsum)
*
* Returns TRUE if okay, FALSE on error (out of memory).
*/
-bool EncryptMD5(const char *passwd, const char *salt, size_t salt_len,
- char *buf)
+bool
+EncryptMD5(const char *passwd, const char *salt, size_t salt_len,
+ char *buf)
{
- size_t passwd_len = strlen(passwd);
- char *crypt_buf = palloc(passwd_len + salt_len);
- bool ret;
-
+ size_t passwd_len = strlen(passwd);
+ char *crypt_buf = palloc(passwd_len + salt_len);
+ bool ret;
+
/*
- * Place salt at the end because it may be known by users
- * trying to crack the MD5 output.
- */
+ * Place salt at the end because it may be known by users trying to
+ * crack the MD5 output.
+ */
strcpy(crypt_buf, passwd);
- memcpy(crypt_buf+passwd_len, salt, salt_len);
+ memcpy(crypt_buf + passwd_len, salt, salt_len);
strcpy(buf, "md5");
ret = md5_hash(crypt_buf, passwd_len + salt_len, buf + 3);
diff --git a/src/backend/libpq/password.c b/src/backend/libpq/password.c
index 4dde3afe99c..96415ae4e7b 100644
--- a/src/backend/libpq/password.c
+++ b/src/backend/libpq/password.c
@@ -2,7 +2,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: password.c,v 1.39 2001/08/17 15:44:17 momjian Exp $
+ * $Id: password.c,v 1.40 2001/10/25 05:49:30 momjian Exp $
*
*/
@@ -78,9 +78,9 @@ verify_password(const Port *port, const char *user, const char *password)
/*
* If the password is empty or "+" then we use the regular
* pg_shadow passwords. If we use crypt then we have to use
- * pg_shadow passwords no matter what. This is because
- * the current code needs non-encrypted passwords to
- * encrypt with a random salt.
+ * pg_shadow passwords no matter what. This is because the
+ * current code needs non-encrypted passwords to encrypt with
+ * a random salt.
*/
if (port->auth_method == uaMD5 ||
port->auth_method == uaCrypt ||
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index b588f09a07e..8ea425a7018 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -29,7 +29,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pqcomm.c,v 1.121 2001/08/07 15:55:16 tgl Exp $
+ * $Id: pqcomm.c,v 1.122 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -347,9 +347,9 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
#endif /* HAVE_UNIX_SOCKETS */
/*
- * 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)
@@ -401,6 +401,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.
@@ -701,8 +702,8 @@ pq_flush(void)
int
pq_eof(void)
{
- char x;
- int res;
+ char x;
+ int res;
res = recv(MyProcPort->sock, &x, 1, MSG_PEEK);
diff --git a/src/backend/libpq/pqformat.c b/src/backend/libpq/pqformat.c
index 6719017c6d1..a0ea85f41fc 100644
--- a/src/backend/libpq/pqformat.c
+++ b/src/backend/libpq/pqformat.c
@@ -16,7 +16,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pqformat.c,v 1.17 2001/04/16 01:46:57 tgl Exp $
+ * $Id: pqformat.c,v 1.18 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -90,7 +90,6 @@
#else
#error BYTE_ORDER not defined as anything understood
-
#endif
#endif
#endif
@@ -309,7 +308,6 @@ pq_getstr(StringInfo s)
#ifdef MULTIBYTE
char *p;
-
#endif
result = pq_getstring(s);
diff --git a/src/backend/libpq/util.c b/src/backend/libpq/util.c
index a80dc8781fa..4ddf17d59bb 100644
--- a/src/backend/libpq/util.c
+++ b/src/backend/libpq/util.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/util.c,v 1.17 2001/01/24 19:42:56 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/util.c,v 1.18 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -50,7 +50,6 @@ pqdebug(char *fmt, char *msg)
if (PQtracep)
{
-
/*
* if nothing else was suggested default to stderr
*/
diff --git a/src/backend/main/main.c b/src/backend/main/main.c
index 43d9b6433d8..be5896e375f 100644
--- a/src/backend/main/main.c
+++ b/src/backend/main/main.c
@@ -13,7 +13,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.47 2001/10/22 19:41:38 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/main/main.c,v 1.48 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -67,11 +67,9 @@ main(int argc, char *argv[])
#if defined(__alpha)
#ifdef NOFIXADE
int buffer[] = {SSIN_UACPROC, UAC_SIGBUS};
-
#endif /* NOFIXADE */
#ifdef NOPRINTADE
int buffer[] = {SSIN_UACPROC, UAC_NOPRINT};
-
#endif /* NOPRINTADE */
#endif /* __alpha */
@@ -86,7 +84,6 @@ main(int argc, char *argv[])
(unsigned long) NULL) < 0)
fprintf(stderr, gettext("%s: setsysinfo failed: %s\n"), argv[0], strerror(errno));
#endif
-
#endif /* NOFIXADE || NOPRINTADE */
#ifdef __BEOS__
@@ -107,16 +104,16 @@ main(int argc, char *argv[])
* affected if init_ps_display overwrites the original argv[].
*
* (NB: do NOT think to remove the copying of argv[], even though
- * postmaster.c finishes looking at argv[] long before we ever consider
- * changing the ps display. On some platforms, getopt() keeps pointers
- * into the argv array, and will get horribly confused when it is
- * re-called to analyze a subprocess' argument string if the argv storage
- * has been clobbered meanwhile.)
+ * postmaster.c finishes looking at argv[] long before we ever
+ * consider changing the ps display. On some platforms, getopt()
+ * keeps pointers into the argv array, and will get horribly confused
+ * when it is re-called to analyze a subprocess' argument string if
+ * the argv storage has been clobbered meanwhile.)
*
* On some platforms, save_ps_display_args moves the environment strings
- * to make extra room. Therefore this should be done as early as
- * possible during startup, to avoid entanglements with code that might
- * save a getenv() result pointer.
+ * to make extra room. Therefore this should be done as early as
+ * possible during startup, to avoid entanglements with code that
+ * might save a getenv() result pointer.
*/
save_ps_display_args(argc, argv);
@@ -135,8 +132,9 @@ main(int argc, char *argv[])
#endif
/*
- * Skip permission checks if we're just trying to do --help or --version;
- * otherwise root will get unhelpful failure messages from initdb.
+ * Skip permission checks if we're just trying to do --help or
+ * --version; otherwise root will get unhelpful failure messages from
+ * initdb.
*/
if (!(argc > 1
&& (strcmp(argv[1], "--help") == 0 ||
@@ -154,11 +152,11 @@ main(int argc, char *argv[])
if (geteuid() == 0)
{
fprintf(stderr, gettext(
- "\"root\" execution of the PostgreSQL server is not permitted.\n\n"
- "The server must be started under an unprivileged user id to prevent\n"
- "a possible system security compromise. See the documentation for\n"
- "more information on how to properly start the server.\n\n"
- ));
+ "\"root\" execution of the PostgreSQL server is not permitted.\n\n"
+ "The server must be started under an unprivileged user id to prevent\n"
+ "a possible system security compromise. See the documentation for\n"
+ "more information on how to properly start the server.\n\n"
+ ));
exit(1);
}
#endif /* __BEOS__ */
@@ -166,11 +164,11 @@ main(int argc, char *argv[])
/*
* Also make sure that real and effective uids are the same.
* Executing Postgres as a setuid program from a root shell is a
- * security hole, since on many platforms a nefarious subroutine could
- * setuid back to root if real uid is root. (Since nobody actually
- * uses Postgres as a setuid program, trying to actively fix this
- * situation seems more trouble than it's worth; we'll just expend the
- * effort to check for it.)
+ * security hole, since on many platforms a nefarious subroutine
+ * could setuid back to root if real uid is root. (Since nobody
+ * actually uses Postgres as a setuid program, trying to actively
+ * fix this situation seems more trouble than it's worth; we'll
+ * just expend the effort to check for it.)
*/
if (getuid() != geteuid())
{
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index abf5c08d277..620054380a4 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -15,7 +15,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.158 2001/10/18 17:30:14 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.159 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -782,7 +782,6 @@ _copyConst(Const *from)
if (from->constbyval || from->constisnull)
{
-
/*
* passed by value so just copy the datum. Also, don't try to copy
* struct when value is null!
@@ -792,7 +791,6 @@ _copyConst(Const *from)
}
else
{
-
/*
* not passed by value. datum contains a pointer.
*/
@@ -1024,7 +1022,7 @@ _copyCaseWhen(CaseWhen *from)
static NullTest *
_copyNullTest(NullTest *from)
{
- NullTest *newnode = makeNode(NullTest);
+ NullTest *newnode = makeNode(NullTest);
/*
* copy remainder of node
@@ -1180,7 +1178,6 @@ _copyIndexOptInfo(IndexOptInfo *from)
static void
CopyPathFields(Path *from, Path *newnode)
{
-
/*
* Modify the next line, since it causes the copying to cycle (i.e.
* the parent points right back here! -- JMH, 7/7/92. Old version:
@@ -1780,8 +1777,8 @@ _copyQuery(Query *from)
/*
* We do not copy the planner internal fields: base_rel_list,
- * other_rel_list, join_rel_list, equi_key_list, query_pathkeys.
- * Not entirely clear if this is right?
+ * other_rel_list, join_rel_list, equi_key_list, query_pathkeys. Not
+ * entirely clear if this is right?
*/
return newnode;
@@ -1892,7 +1889,7 @@ _copyAlterTableStmt(AlterTableStmt *from)
static GrantStmt *
_copyGrantStmt(GrantStmt *from)
{
- GrantStmt *newnode = makeNode(GrantStmt);
+ GrantStmt *newnode = makeNode(GrantStmt);
newnode->is_grant = from->is_grant;
Node_Copy(from, newnode, relnames);
@@ -2426,7 +2423,7 @@ _copyLockStmt(LockStmt *from)
LockStmt *newnode = makeNode(LockStmt);
Node_Copy(from, newnode, rellist);
-
+
newnode->mode = from->mode;
return newnode;
@@ -2536,7 +2533,6 @@ copyObject(void *from)
switch (nodeTag(from))
{
-
/*
* PLAN NODES
*/
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c
index 64e27f17801..0a48a194df3 100644
--- a/src/backend/nodes/equalfuncs.c
+++ b/src/backend/nodes/equalfuncs.c
@@ -20,7 +20,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.106 2001/10/18 17:30:14 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.107 2001/10/25 05:49:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -87,7 +87,6 @@ _equalFjoin(Fjoin *a, Fjoin *b)
static bool
_equalExpr(Expr *a, Expr *b)
{
-
/*
* We do not examine typeOid, since the optimizer often doesn't bother
* to set it in created nodes, and it is logically a derivative of the
@@ -351,7 +350,6 @@ _equalJoinExpr(JoinExpr *a, JoinExpr *b)
static bool
_equalRelOptInfo(RelOptInfo *a, RelOptInfo *b)
{
-
/*
* We treat RelOptInfos as equal if they refer to the same base rels
* joined in the same order. Is this appropriate/sufficient?
@@ -362,7 +360,6 @@ _equalRelOptInfo(RelOptInfo *a, RelOptInfo *b)
static bool
_equalIndexOptInfo(IndexOptInfo *a, IndexOptInfo *b)
{
-
/*
* We treat IndexOptInfos as equal if they refer to the same index. Is
* this sufficient?
@@ -515,11 +512,12 @@ _equalRestrictInfo(RestrictInfo *a, RestrictInfo *b)
return false;
if (a->ispusheddown != b->ispusheddown)
return false;
+
/*
* We ignore eval_cost, this_selec, 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 ...
+ * derivable from the clause anyway. Probably it's not really
+ * necessary to compare any of these remaining fields ...
*/
if (!equal(a->subclauseindices, b->subclauseindices))
return false;
@@ -622,9 +620,9 @@ _equalQuery(Query *a, Query *b)
/*
* We do not check the internal-to-the-planner 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;
}
@@ -773,7 +771,7 @@ _equalPrivGrantee(PrivGrantee *a, PrivGrantee *b)
{
return equalstr(a->username, b->username)
&& equalstr(a->groupname, b->groupname);
-}
+}
static bool
_equalClosePortalStmt(ClosePortalStmt *a, ClosePortalStmt *b)
diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c
index 42dd9a2dab8..94b18d3752f 100644
--- a/src/backend/nodes/nodeFuncs.c
+++ b/src/backend/nodes/nodeFuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/nodeFuncs.c,v 1.14 2001/03/22 03:59:32 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/nodeFuncs.c,v 1.15 2001/10/25 05:49:31 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -70,7 +70,7 @@ bool
var_is_rel(Var *var)
{
return (bool)
- !(var_is_inner(var) || var_is_outer(var));
+ !(var_is_inner(var) || var_is_outer(var));
}
/*****************************************************************************
@@ -114,5 +114,4 @@ non_null(Expr *c)
else
return false;
}
-
#endif
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 5b30fd2a21d..417082b39b1 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.145 2001/08/21 16:36:02 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.146 2001/10/25 05:49:31 momjian Exp $
*
* NOTES
* Every (plan) node in POSTGRES has an associated "out" routine which
@@ -218,7 +218,6 @@ _outQuery(StringInfo str, Query *node)
if (node->utilityStmt)
{
-
/*
* Hack to make up for lack of outfuncs for utility-stmt nodes
*/
@@ -1271,7 +1270,7 @@ _outValue(StringInfo str, Value *value)
{
switch (value->type)
{
- case T_Integer:
+ case T_Integer:
appendStringInfo(str, " %ld ", value->val.ival);
break;
case T_Float:
diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c
index 98347695622..0e33a99d53d 100644
--- a/src/backend/nodes/print.c
+++ b/src/backend/nodes/print.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.48 2001/10/18 16:11:41 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.49 2001/10/25 05:49:31 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -215,7 +215,7 @@ print_expr(Node *expr, List *rtable)
outputstr = DatumGetCString(OidFunctionCall3(typoutput,
c->constvalue,
- ObjectIdGetDatum(typelem),
+ ObjectIdGetDatum(typelem),
Int32GetDatum(-1)));
printf("%s", outputstr);
pfree(outputstr);
@@ -322,7 +322,7 @@ plannode_type(Plan *p)
{
switch (nodeTag(p))
{
- case T_Plan:
+ case T_Plan:
return "PLAN";
case T_Result:
return "RESULT";
diff --git a/src/backend/nodes/read.c b/src/backend/nodes/read.c
index 14a492b4768..3a097322558 100644
--- a/src/backend/nodes/read.c
+++ b/src/backend/nodes/read.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/read.c,v 1.30 2001/03/22 17:41:47 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/read.c,v 1.31 2001/10/25 05:49:31 momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -220,17 +220,17 @@ nodeTokenType(char *token, int length)
* us. We know the token will end at a character that strtol will
* stop at, so we do not need to modify the string.
*/
- long val;
- char *endptr;
+ long val;
+ char *endptr;
errno = 0;
val = strtol(token, &endptr, 10);
if (endptr != token + length || errno == ERANGE
#ifdef HAVE_LONG_INT_64
- /* if long > 32 bits, check for overflow of int4 */
+ /* if long > 32 bits, check for overflow of int4 */
|| val != (long) ((int32) val)
#endif
- )
+ )
return T_Float;
return T_Integer;
}
diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c
index b3e3105da6c..26fbebea77a 100644
--- a/src/backend/nodes/readfuncs.c
+++ b/src/backend/nodes/readfuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.112 2001/07/03 16:52:48 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/readfuncs.c,v 1.113 2001/10/25 05:49:31 momjian Exp $
*
* NOTES
* Most of the read functions for plan nodes are tested. (In fact, they
@@ -129,7 +129,6 @@ _readQuery(void)
local_node->utilityStmt = NULL;
else
{
-
/*
* Hack to make up for lack of readfuncs for utility-stmt nodes
*
@@ -868,8 +867,8 @@ _readCaseWhen(void)
static NullTest *
_readNullTest(void)
{
- NullTest *local_node;
- char *token;
+ NullTest *local_node;
+ char *token;
int length;
local_node = makeNode(NullTest);
@@ -893,8 +892,8 @@ _readNullTest(void)
static BooleanTest *
_readBooleanTest(void)
{
- BooleanTest *local_node;
- char *token;
+ BooleanTest *local_node;
+ char *token;
int length;
local_node = makeNode(BooleanTest);
diff --git a/src/backend/optimizer/geqo/geqo_erx.c b/src/backend/optimizer/geqo/geqo_erx.c
index 576ff5daa0c..748f3f31dfd 100644
--- a/src/backend/optimizer/geqo/geqo_erx.c
+++ b/src/backend/optimizer/geqo/geqo_erx.c
@@ -3,7 +3,7 @@
* geqo_erx.c
* edge recombination crossover [ER]
*
-* $Id: geqo_erx.c,v 1.15 1999/07/16 04:59:08 momjian Exp $
+* $Id: geqo_erx.c,v 1.16 2001/10/25 05:49:31 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -110,7 +110,6 @@ gimme_edge_table(Gene *tour1, Gene *tour2, int num_gene, Edge *edge_table)
for (index1 = 0; index1 < num_gene; index1++)
{
-
/*
* presume the tour is circular, i.e. 1->2, 2->3, 3->1 this
* operaton maps n back to 1
@@ -201,7 +200,6 @@ gimme_tour(Edge *edge_table, Gene *new_gene, int num_gene)
for (i = 1; i < num_gene; i++)
{
-
/*
* as each point is entered into the tour, remove it from the edge
* table
diff --git a/src/backend/optimizer/geqo/geqo_main.c b/src/backend/optimizer/geqo/geqo_main.c
index 61543985c58..496207d2a83 100644
--- a/src/backend/optimizer/geqo/geqo_main.c
+++ b/src/backend/optimizer/geqo/geqo_main.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California