diff options
author | CVS to git conversion script <webmaster@postgresql.org> | 2002-06-20 20:29:55 +0000 |
---|---|---|
committer | CVS to git conversion script <webmaster@postgresql.org> | 2002-06-20 20:29:55 +0000 |
commit | 05dedace84ef8c93fea5309c3ac55f889011429b (patch) | |
tree | 4c7f513afbbc03060039a165d1770e11be711773 /contrib/oracle/Ora2Pg.pm | |
parent | d84fe82230c593f3dc5d7f427849b99d1efa8a0a (diff) |
This commit was manufactured by cvs2git to create branch 'ecpg_big_bison'.
Sprout from master 2002-06-20 20:29:54 UTC Bruce Momjian <bruce@momjian.us> 'Update copyright to 2002.'
Delete:
COPYRIGHT
GNUmakefile.in
HISTORY
INSTALL
Makefile
README
aclocal.m4
config/ac_func_accept_argtypes.m4
config/c-compiler.m4
config/c-library.m4
config/config.guess
config/config.sub
config/cxx.m4
config/docbook.m4
config/general.m4
config/install-sh
config/java.m4
config/libtool.m4
config/missing
config/mkinstalldirs
config/perl.m4
config/prep_buildtree
config/programs.m4
config/python.m4
config/tcl.m4
configure
configure.in
contrib/Makefile
contrib/README
contrib/array/Makefile
contrib/array/README.array_iterator
contrib/array/array_iterator.c
contrib/array/array_iterator.h
contrib/array/array_iterator.sql.in
contrib/btree_gist/Makefile
contrib/btree_gist/README.btree_gist
contrib/btree_gist/btree_gist.c
contrib/btree_gist/btree_gist.sql.in
contrib/btree_gist/data/test_btree.data
contrib/btree_gist/data/test_btree_ts.data
contrib/btree_gist/expected/btree_gist.out
contrib/btree_gist/sql/btree_gist.sql
contrib/chkpass/Makefile
contrib/chkpass/README.chkpass
contrib/chkpass/chkpass.c
contrib/chkpass/chkpass.sql.in
contrib/contrib-global.mk
contrib/cube/Makefile
contrib/cube/README.cube
contrib/cube/buffer.c
contrib/cube/buffer.h
contrib/cube/cube.c
contrib/cube/cube.sql.in
contrib/cube/cubedata.h
contrib/cube/cubeparse.y
contrib/cube/cubescan.l
contrib/cube/data/test_cube.data
contrib/cube/expected/cube.out
contrib/cube/sql/cube.sql
contrib/dbase/Makefile
contrib/dbase/README.dbf2pg
contrib/dbase/dbf.c
contrib/dbase/dbf.h
contrib/dbase/dbf2pg.1
contrib/dbase/dbf2pg.c
contrib/dbase/endian.c
contrib/dblink/Makefile
contrib/dblink/README.dblink
contrib/dblink/dblink.c
contrib/dblink/dblink.h
contrib/dblink/dblink.sql.in
contrib/dbsize/Makefile
contrib/dbsize/README.dbsize
contrib/dbsize/dbsize.c
contrib/dbsize/dbsize.sql.in
contrib/earthdistance/Makefile
contrib/earthdistance/README.earthdistance
contrib/earthdistance/earthdistance.c
contrib/earthdistance/earthdistance.sql.in
contrib/findoidjoins/Makefile
contrib/findoidjoins/README.findoidjoins
contrib/findoidjoins/findoidjoins.c
contrib/findoidjoins/make_oidjoins_check
contrib/fulltextindex/Makefile
contrib/fulltextindex/README.fti
contrib/fulltextindex/TODO
contrib/fulltextindex/fti.c
contrib/fulltextindex/fti.pl
contrib/fulltextindex/fti.sql.in
contrib/fulltextindex/timings.sh
contrib/fuzzystrmatch/Makefile
contrib/fuzzystrmatch/README.fuzzystrmatch
contrib/fuzzystrmatch/README.soundex
contrib/fuzzystrmatch/fuzzystrmatch.c
contrib/fuzzystrmatch/fuzzystrmatch.h
contrib/fuzzystrmatch/fuzzystrmatch.sql.in
contrib/intagg/Makefile
contrib/intagg/README.int_aggregate
contrib/intagg/int_aggregate.c
contrib/intagg/int_aggregate.sql.in
contrib/intarray/Makefile
contrib/intarray/README.intarray
contrib/intarray/_int.c
contrib/intarray/_int.sql.in
contrib/intarray/bench/bench.pl
contrib/intarray/bench/create_test.pl
contrib/intarray/data/test__int.data
contrib/intarray/expected/_int.out
contrib/intarray/sql/_int.sql
contrib/ipc_check/README
contrib/ipc_check/ipc_check.pl
contrib/isbn_issn/Makefile
contrib/isbn_issn/README.isbn_issn
contrib/isbn_issn/isbn_issn.c
contrib/isbn_issn/isbn_issn.sql.in
contrib/lo/Makefile
contrib/lo/README.lo
contrib/lo/lo.c
contrib/lo/lo.sql.in
contrib/lo/lo_drop.sql
contrib/lo/lo_test.sql
contrib/mSQL-interface/Makefile
contrib/mSQL-interface/README.mpgsql
contrib/mSQL-interface/mpgsql.c
contrib/mac/README.mac
contrib/mac/createoui
contrib/mac/dropoui
contrib/mac/ouiparse.awk
contrib/mac/updateoui
contrib/miscutil/Makefile
contrib/miscutil/README.misc_utils
contrib/miscutil/misc_utils.c
contrib/miscutil/misc_utils.h
contrib/miscutil/misc_utils.sql.in
contrib/mysql/README
contrib/mysql/my2pg.pl
contrib/mysql/mysql2pgsql
contrib/noupdate/Makefile
contrib/noupdate/README.noup
contrib/noupdate/noup.c
contrib/noupdate/noup.sql.in
contrib/oid2name/Makefile
contrib/oid2name/README.oid2name
contrib/oid2name/oid2name.c
contrib/oracle/CHANGES
contrib/oracle/Ora2Pg.pm
contrib/oracle/README.ora2pg
contrib/oracle/TODO
contrib/oracle/ora2pg.html
contrib/oracle/ora2pg.pl
contrib/pg_controldata/Makefile
contrib/pg_controldata/README.pg_controldata
contrib/pg_controldata/pg_controldata.c
contrib/pg_dumplo/Makefile
contrib/pg_dumplo/README.pg_dumplo
contrib/pg_dumplo/lo_export.c
contrib/pg_dumplo/lo_import.c
contrib/pg_dumplo/main.c
contrib/pg_dumplo/pg_dumplo.h
contrib/pg_dumplo/utils.c
contrib/pg_logger/Makefile
contrib/pg_logger/README.pg_logger
contrib/pg_logger/pg_logger.c
contrib/pg_resetxlog/Makefile
contrib/pg_resetxlog/README.pg_resetxlog
contrib/pg_resetxlog/pg_resetxlog.c
contrib/pg_upgrade/README
contrib/pg_upgrade/pg_upgrade
contrib/pg_upgrade/pg_upgrade.1
contrib/pgbench/Makefile
contrib/pgbench/README.pgbench
contrib/pgbench/README.pgbench_jis
contrib/pgbench/pgbench.c
contrib/pgcrypto/API
contrib/pgcrypto/Makefile
contrib/pgcrypto/README.pgcrypto
contrib/pgcrypto/blf.c
contrib/pgcrypto/blf.h
contrib/pgcrypto/crypt-blowfish.c
contrib/pgcrypto/crypt-des.c
contrib/pgcrypto/crypt-gensalt.c
contrib/pgcrypto/crypt-md5.c
contrib/pgcrypto/expected/blowfish.out
contrib/pgcrypto/expected/crypt-blowfish.out
contrib/pgcrypto/expected/crypt-des.out
contrib/pgcrypto/expected/crypt-md5.out
contrib/pgcrypto/expected/crypt-xdes.out
contrib/pgcrypto/expected/hmac-md5.out
contrib/pgcrypto/expected/hmac-sha1.out
contrib/pgcrypto/expected/init.out
contrib/pgcrypto/expected/md5.out
contrib/pgcrypto/expected/rijndael.out
contrib/pgcrypto/expected/sha1.out
contrib/pgcrypto/internal.c
contrib/pgcrypto/md5.c
contrib/pgcrypto/md5.h
contrib/pgcrypto/mhash.c
contrib/pgcrypto/misc.c
contrib/pgcrypto/openssl.c
contrib/pgcrypto/pgcrypto.c
contrib/pgcrypto/pgcrypto.h
contrib/pgcrypto/pgcrypto.sql.in
contrib/pgcrypto/px-crypt.c
contrib/pgcrypto/px-crypt.h
contrib/pgcrypto/px-hmac.c
contrib/pgcrypto/px.c
contrib/pgcrypto/px.h
contrib/pgcrypto/random.c
contrib/pgcrypto/rijndael.c
contrib/pgcrypto/rijndael.h
contrib/pgcrypto/rijndael.tbl
contrib/pgcrypto/sha1.c
contrib/pgcrypto/sha1.h
contrib/pgcrypto/sql/blowfish.sql
contrib/pgcrypto/sql/crypt-blowfish.sql
contrib/pgcrypto/sql/crypt-des.sql
contrib/pgcrypto/sql/crypt-md5.sql
contrib/pgcrypto/sql/crypt-xdes.sql
contrib/pgcrypto/sql/hmac-md5.sql
contrib/pgcrypto/sql/hmac-sha1.sql
contrib/pgcrypto/sql/init.sql
contrib/pgcrypto/sql/md5.sql
contrib/pgcrypto/sql/rijndael.sql
contrib/pgcrypto/sql/sha1.sql
contrib/pgstattuple/Makefile
contrib/pgstattuple/README.pgstattuple
contrib/pgstattuple/README.pgstattuple.euc_jp
contrib/pgstattuple/pgstattuple.c
contrib/pgstattuple/pgstattuple.sql.in
contrib/retep/CHANGELOG
contrib/retep/Implementation
contrib/retep/Makefile
contrib/retep/README
contrib/retep/build.xml
contrib/retep/data/cds.dtd
contrib/retep/data/cds.xml
contrib/retep/retep.jpx
contrib/retep/uk/org/retep/dtu/DCollection.java
contrib/retep/uk/org/retep/dtu/DConstants.java
contrib/retep/uk/org/retep/dtu/DElement.java
contrib/retep/uk/org/retep/dtu/DEnvironment.java
contrib/retep/uk/org/retep/dtu/DModule.java
contrib/retep/uk/org/retep/dtu/DModuleXML.java
contrib/retep/uk/org/retep/dtu/DNode.java
contrib/retep/uk/org/retep/dtu/DProcessor.java
contrib/retep/uk/org/retep/dtu/DTransform.java
contrib/retep/uk/org/retep/tools/Tool.java
contrib/retep/uk/org/retep/tools.properties
contrib/retep/uk/org/retep/util/ExceptionDialog.java
contrib/retep/uk/org/retep/util/Globals.java
contrib/retep/uk/org/retep/util/Logger.java
contrib/retep/uk/org/retep/util/Main.java
contrib/retep/uk/org/retep/util/StandaloneApp.java
contrib/retep/uk/org/retep/util/hba/Editor.java
contrib/retep/uk/org/retep/util/hba/Main.java
contrib/retep/uk/org/retep/util/hba/Record.java
contrib/retep/uk/org/retep/util/misc/IPAddress.java
contrib/retep/uk/org/retep/util/misc/PropertiesIO.java
contrib/retep/uk/org/retep/util/misc/WStringTokenizer.java
contrib/retep/uk/org/retep/util/models/HBATableModel.java
contrib/retep/uk/org/retep/util/models/PropertiesTableModel.java
contrib/retep/uk/org/retep/util/proped/Main.java
contrib/retep/uk/org/retep/util/proped/PropertyEditor.java
contrib/retep/uk/org/retep/xml/core/XMLFactory.java
contrib/retep/uk/org/retep/xml/core/XMLFactoryException.java
contrib/retep/uk/org/retep/xml/jdbc/XMLDatabase.java
contrib/retep/uk/org/retep/xml/jdbc/XMLResultSet.java
contrib/retep/uk/org/retep/xml/parser/TagHandler.java
contrib/retep/uk/org/retep/xml/parser/TagListener.java
contrib/retep/uk/org/retep/xml/test/XMLExport.java
contrib/rserv/ApplySnapshot.in
contrib/rserv/CleanLog.in
contrib/rserv/GetSyncID.in
contrib/rserv/InitRservTest.in
contrib/rserv/Makefile
contrib/rserv/MasterAddTable.in
contrib/rserv/MasterInit.in
contrib/rserv/MasterSync.in
contrib/rserv/PrepareSnapshot.in
contrib/rserv/README.rserv
contrib/rserv/RServ.pm
contrib/rserv/Replicate.in
contrib/rserv/RservTest.in
contrib/rserv/SlaveAddTable.in
contrib/rserv/SlaveInit.in
contrib/rserv/master.sql.in
contrib/rserv/regress.sh
contrib/rserv/rserv.c
contrib/rserv/slave.sql.in
contrib/rtree_gist/Makefile
contrib/rtree_gist/README.rtree_gist
contrib/rtree_gist/bench/bench.pl
contrib/rtree_gist/bench/create_test.pl
contrib/rtree_gist/data/test_box.data
contrib/rtree_gist/expected/rtree_gist.out
contrib/rtree_gist/rtree_gist.c
contrib/rtree_gist/rtree_gist.sql.in
contrib/rtree_gist/sql/rtree_gist.sql
contrib/seg/Makefile
contrib/seg/README.seg
contrib/seg/buffer.c
contrib/seg/buffer.h
contrib/seg/data/test_seg.data
contrib/seg/expected/seg.out
contrib/seg/seg-validate.pl
contrib/seg/seg.c
contrib/seg/seg.sql.in
contrib/seg/segdata.h
contrib/seg/segparse.y
contrib/seg/segscan.l
contrib/seg/sort-segments.pl
contrib/seg/sql/seg.sql
contrib/spi/Makefile
contrib/spi/README.spi
contrib/spi/autoinc.c
contrib/spi/autoinc.example
contrib/spi/autoinc.sql.in
contrib/spi/insert_username.c
contrib/spi/insert_username.example
contrib/spi/insert_username.sql.in
contrib/spi/moddatetime.c
contrib/spi/moddatetime.example
contrib/spi/moddatetime.sql.in
contrib/spi/preprocessor/README.MAX
contrib/spi/preprocessor/example.sql
contrib/spi/preprocessor/step1.c
contrib/spi/preprocessor/step1.e
contrib/spi/preprocessor/step2.pl
contrib/spi/refint.c
contrib/spi/refint.example
contrib/spi/refint.sql.in
contrib/spi/timetravel.c
contrib/spi/timetravel.example
contrib/spi/timetravel.sql.in
contrib/start-scripts/freebsd
contrib/start-scripts/linux
contrib/string/Makefile
contrib/string/README.string_io
contrib/string/string_io.c
contrib/string/string_io.h
contrib/string/string_io.sql.in
contrib/tips/Makefile
contrib/tips/README.apachelog
contrib/tools/add-emacs-variables
contrib/tools/find-sources
contrib/tools/make-tags
contrib/tsearch/Makefile
contrib/tsearch/README.tsearch
contrib/tsearch/crc32.c
contrib/tsearch/crc32.h
contrib/tsearch/data/test_tsearch.data
contrib/tsearch/deflex.h
contrib/tsearch/dict/porter_english.dct
contrib/tsearch/dict/russian_stemming.dct
contrib/tsearch/dict.h
contrib/tsearch/expected/tsearch.out
contrib/tsearch/gistidx.c
contrib/tsearch/gistidx.h
contrib/tsearch/makedict/makedict.pl
contrib/tsearch/morph.c
contrib/tsearch/morph.h
contrib/tsearch/parser.h
contrib/tsearch/parser.l
contrib/tsearch/query.c
contrib/tsearch/query.h
contrib/tsearch/rewrite.c
contrib/tsearch/rewrite.h
contrib/tsearch/sql/tsearch.sql
contrib/tsearch/tsearch.sql.in
contrib/tsearch/txtidx.c
contrib/tsearch/txtidx.h
contrib/userlock/Makefile
contrib/userlock/README.user_locks
contrib/userlock/user_locks.c
contrib/userlock/user_locks.h
contrib/userlock/user_locks.sql.in
contrib/vacuumlo/Makefile
contrib/vacuumlo/README.vacuumlo
contrib/vacuumlo/vacuumlo.c
contrib/xml/Makefile
contrib/xml/README
contrib/xml/TODO
contrib/xml/pgxml.c
contrib/xml/pgxml.h
contrib/xml/pgxml.source
contrib/xml/pgxml_dom.c
contrib/xml/pgxml_dom.source
doc/FAQ
doc/FAQ_AIX
doc/FAQ_DEV
doc/FAQ_HPUX
doc/FAQ_IRIX
doc/FAQ_MSWIN
doc/FAQ_QNX4
doc/FAQ_SCO
doc/FAQ_Solaris
doc/FAQ_german
doc/FAQ_japanese
doc/FAQ_polish
doc/FAQ_russian
doc/KNOWN_BUGS
doc/MISSING_FEATURES
doc/Makefile
doc/README.mb.big5
doc/README.mb.jp
doc/TODO
doc/TODO.detail/README
doc/TODO.detail/atttypmod
doc/TODO.detail/crossdb
doc/TODO.detail/cursor
doc/TODO.detail/drop
doc/TODO.detail/exists
doc/TODO.detail/foreign
doc/TODO.detail/fsync
doc/TODO.detail/inheritance
doc/TODO.detail/java
doc/TODO.detail/mmap
doc/TODO.detail/namedatalen
doc/TODO.detail/optimizer
doc/TODO.detail/performance
doc/TODO.detail/persistent
doc/TODO.detail/pool
doc/TODO.detail/prepare
doc/TODO.detail/privileges
doc/TODO.detail/replication
doc/TODO.detail/schema
doc/TODO.detail/tablespaces
doc/TODO.detail/thread
doc/TODO.detail/transactions
doc/TODO.detail/typeconv
doc/TODO.detail/update
doc/TODO.detail/vacuum
doc/TODO.detail/view
doc/TODO.detail/win32
doc/TODO.detail/yacc
doc/bug.template
doc/src/FAQ/FAQ.html
doc/src/FAQ/FAQ_DEV.html
doc/src/FAQ/FAQ_german.html
doc/src/FAQ/FAQ_japanese.html
doc/src/FAQ/FAQ_polish.html
doc/src/FAQ/FAQ_russian.html
doc/src/Makefile
doc/src/graphics/catalogs.ag
doc/src/graphics/catalogs.cgm
doc/src/graphics/catalogs.gif
doc/src/graphics/catalogs.ps
doc/src/graphics/clientserver.ag
doc/src/graphics/clientserver.gif
doc/src/graphics/connections.ag
doc/src/graphics/connections.gif
doc/src/sgml/Makefile
doc/src/sgml/admin.sgml
doc/src/sgml/advanced.sgml
doc/src/sgml/arch-dev.sgml
doc/src/sgml/arch-pg.sgml
doc/src/sgml/array.sgml
doc/src/sgml/backup.sgml
doc/src/sgml/biblio.sgml
doc/src/sgml/bki.sgml
doc/src/sgml/book-decl.sgml
doc/src/sgml/catalogs.sgml
doc/src/sgml/charset.sgml
doc/src/sgml/client-auth.sgml
doc/src/sgml/compiler.sgml
doc/src/sgml/contacts.sgml
doc/src/sgml/cvs.sgml
doc/src/sgml/datatype.sgml
doc/src/sgml/datetime.sgml
doc/src/sgml/developer.sgml
doc/src/sgml/dfunc.sgml
doc/src/sgml/diskusage.sgml
doc/src/sgml/docguide.sgml
doc/src/sgml/ecpg.sgml
doc/src/sgml/extend.sgml
doc/src/sgml/features.sgml
doc/src/sgml/filelist.sgml
doc/src/sgml/fixrtf
doc/src/sgml/func-ref.sgml
doc/src/sgml/func.sgml
doc/src/sgml/geqo.sgml
doc/src/sgml/gist.sgml
doc/src/sgml/history.sgml
doc/src/sgml/indexcost.sgml
doc/src/sgml/indices.sgml
doc/src/sgml/info.sgml
doc/src/sgml/inherit.sgml
doc/src/sgml/install-win32.sgml
doc/src/sgml/installation.sgml
doc/src/sgml/intro.sgml
doc/src/sgml/jdbc.sgml
doc/src/sgml/keywords.sgml
doc/src/sgml/legal.sgml
doc/src/sgml/libpgeasy.sgml
doc/src/sgml/libpgtcl.sgml
doc/src/sgml/libpq++.sgml
doc/src/sgml/libpq.sgml
doc/src/sgml/lobj.sgml
doc/src/sgml/maintenance.sgml
doc/src/sgml/manage-ag.sgml
doc/src/sgml/manage.sgml
doc/src/sgml/monitoring.sgml
doc/src/sgml/mvcc.sgml
doc/src/sgml/nls.sgml
doc/src/sgml/notation.sgml
doc/src/sgml/odbc.sgml
doc/src/sgml/page.sgml
doc/src/sgml/perform.sgml
doc/src/sgml/plperl.sgml
doc/src/sgml/plpython.sgml
doc/src/sgml/plsql.sgml
doc/src/sgml/pltcl.sgml
doc/src/sgml/postgres.sgml
doc/src/sgml/problems.sgml
doc/src/sgml/programmer.sgml
doc/src/sgml/protocol.sgml
doc/src/sgml/pygresql.sgml
doc/src/sgml/queries.sgml
doc/src/sgml/query.sgml
doc/src/sgml/recovery.sgml
doc/src/sgml/ref/abort.sgml
doc/src/sgml/ref/allfiles.sgml
doc/src/sgml/ref/alter_database.sgml
doc/src/sgml/ref/alter_group.sgml
doc/src/sgml/ref/alter_table.sgml
doc/src/sgml/ref/alter_trigger.sgml
doc/src/sgml/ref/alter_user.sgml
doc/src/sgml/ref/analyze.sgml
doc/src/sgml/ref/begin.sgml
doc/src/sgml/ref/checkpoint.sgml
doc/src/sgml/ref/close.sgml
doc/src/sgml/ref/cluster.sgml
doc/src/sgml/ref/comment.sgml
doc/src/sgml/ref/commit.sgml
doc/src/sgml/ref/copy.sgml
doc/src/sgml/ref/create_aggregate.sgml
doc/src/sgml/ref/create_constraint.sgml
doc/src/sgml/ref/create_database.sgml
doc/src/sgml/ref/create_domain.sgml
doc/src/sgml/ref/create_function.sgml
doc/src/sgml/ref/create_group.sgml
doc/src/sgml/ref/create_index.sgml
doc/src/sgml/ref/create_language.sgml
doc/src/sgml/ref/create_operator.sgml
doc/src/sgml/ref/create_rule.sgml
doc/src/sgml/ref/create_schema.sgml
doc/src/sgml/ref/create_sequence.sgml
doc/src/sgml/ref/create_table.sgml
doc/src/sgml/ref/create_table_as.sgml
doc/src/sgml/ref/create_trigger.sgml
doc/src/sgml/ref/create_type.sgml
doc/src/sgml/ref/create_user.sgml
doc/src/sgml/ref/create_view.sgml
doc/src/sgml/ref/createdb.sgml
doc/src/sgml/ref/createlang.sgml
doc/src/sgml/ref/createuser.sgml
doc/src/sgml/ref/current_date.sgml
doc/src/sgml/ref/current_time.sgml
doc/src/sgml/ref/current_timestamp.sgml
doc/src/sgml/ref/current_user.sgml
doc/src/sgml/ref/declare.sgml
doc/src/sgml/ref/delete.sgml
doc/src/sgml/ref/drop_aggregate.sgml
doc/src/sgml/ref/drop_database.sgml
doc/src/sgml/ref/drop_domain.sgml
doc/src/sgml/ref/drop_function.sgml
doc/src/sgml/ref/drop_group.sgml
doc/src/sgml/ref/drop_index.sgml
doc/src/sgml/ref/drop_language.sgml
doc/src/sgml/ref/drop_operator.sgml
doc/src/sgml/ref/drop_rule.sgml
doc/src/sgml/ref/drop_sequence.sgml
doc/src/sgml/ref/drop_table.sgml
doc/src/sgml/ref/drop_trigger.sgml
doc/src/sgml/ref/drop_type.sgml
doc/src/sgml/ref/drop_user.sgml
doc/src/sgml/ref/drop_view.sgml
doc/src/sgml/ref/dropdb.sgml
doc/src/sgml/ref/droplang.sgml
doc/src/sgml/ref/dropuser.sgml
doc/src/sgml/ref/ecpg-ref.sgml
doc/src/sgml/ref/end.sgml
doc/src/sgml/ref/explain.sgml
doc/src/sgml/ref/fetch.sgml
doc/src/sgml/ref/grant.sgml
doc/src/sgml/ref/initdb.sgml
doc/src/sgml/ref/initlocation.sgml
doc/src/sgml/ref/insert.sgml
doc/src/sgml/ref/ipcclean.sgml
doc/src/sgml/ref/listen.sgml
doc/src/sgml/ref/load.sgml
doc/src/sgml/ref/lock.sgml
doc/src/sgml/ref/move.sgml
doc/src/sgml/ref/notify.sgml
doc/src/sgml/ref/pg_config-ref.sgml
doc/src/sgml/ref/pg_ctl-ref.sgml
doc/src/sgml/ref/pg_dump.sgml
doc/src/sgml/ref/pg_dumpall.sgml
doc/src/sgml/ref/pg_restore.sgml
doc/src/sgml/ref/pgaccess-ref.sgml
doc/src/sgml/ref/pgtclsh.sgml
doc/src/sgml/ref/pgtksh.sgml
doc/src/sgml/ref/postgres-ref.sgml
doc/src/sgml/ref/postmaster.sgml
doc/src/sgml/ref/psql-ref.sgml
doc/src/sgml/ref/reindex.sgml
doc/src/sgml/ref/reset.sgml
doc/src/sgml/ref/revoke.sgml
doc/src/sgml/ref/rollback.sgml
doc/src/sgml/ref/select.sgml
doc/src/sgml/ref/select_into.sgml
doc/src/sgml/ref/set.sgml
doc/src/sgml/ref/set_constraints.sgml
doc/src/sgml/ref/set_session_auth.sgml
doc/src/sgml/ref/set_transaction.sgml
doc/src/sgml/ref/show.sgml
doc/src/sgml/ref/truncate.sgml
doc/src/sgml/ref/unlisten.sgml
doc/src/sgml/ref/update.sgml
doc/src/sgml/ref/vacuum.sgml
doc/src/sgml/ref/vacuumdb.sgml
doc/src/sgml/refentry.sgml
doc/src/sgml/reference.ced
doc/src/sgml/reference.sgml
doc/src/sgml/regress.sgml
doc/src/sgml/release.sgml
doc/src/sgml/rules.sgml
doc/src/sgml/runtime.sgml
doc/src/sgml/sources.sgml
doc/src/sgml/spi.sgml
doc/src/sgml/sql.sgml
doc/src/sgml/standalone-install.sgml
doc/src/sgml/start.sgml
doc/src/sgml/stylesheet.css
doc/src/sgml/stylesheet.dsl
doc/src/sgml/syntax.sgml
doc/src/sgml/trigger.sgml
doc/src/sgml/tutorial.sgml
doc/src/sgml/typeconv.sgml
doc/src/sgml/user-manag.sgml
doc/src/sgml/user.sgml
doc/src/sgml/version.sgml
doc/src/sgml/wal.sgml
doc/src/sgml/xaggr.sgml
doc/src/sgml/xfunc.sgml
doc/src/sgml/xindex.sgml
doc/src/sgml/xoper.sgml
doc/src/sgml/xplang.sgml
doc/src/sgml/xtypes.sgml
doc/src/sgml/y2k.sgml
register.txt
src/DEVELOPERS
src/Makefile
src/Makefile.global.in
src/Makefile.shlib
src/backend/Makefile
src/backend/access/Makefile
src/backend/access/common/Makefile
src/backend/access/common/heaptuple.c
src/backend/access/common/indextuple.c
src/backend/access/common/indexvalid.c
src/backend/access/common/printtup.c
src/backend/access/common/scankey.c
src/backend/access/common/tupdesc.c
src/backend/access/gist/Makefile
src/backend/access/gist/gist.c
src/backend/access/gist/gistget.c
src/backend/access/gist/gistscan.c
src/backend/access/gist/giststrat.c
src/backend/access/hash/Makefile
src/backend/access/hash/hash.c
src/backend/access/hash/hashfunc.c
src/backend/access/hash/hashinsert.c
src/backend/access/hash/hashovfl.c
src/backend/access/hash/hashpage.c
src/backend/access/hash/hashscan.c
src/backend/access/hash/hashsearch.c
src/backend/access/hash/hashstrat.c
src/backend/access/hash/hashutil.c
src/backend/access/heap/Makefile
src/backend/access/heap/heapam.c
src/backend/access/heap/hio.c
src/backend/access/heap/tuptoaster.c
src/backend/access/index/Makefile
src/backend/access/index/genam.c
src/backend/access/index/indexam.c
src/backend/access/index/istrat.c
src/backend/access/nbtree/Makefile
src/backend/access/nbtree/README
src/backend/access/nbtree/nbtcompare.c
src/backend/access/nbtree/nbtinsert.c
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtree.c
src/backend/access/nbtree/nbtsearch.c
src/backend/access/nbtree/nbtsort.c
src/backend/access/nbtree/nbtstrat.c
src/backend/access/nbtree/nbtutils.c
src/backend/access/rtree/Makefile
src/backend/access/rtree/rtget.c
src/backend/access/rtree/rtproc.c
src/backend/access/rtree/rtree.c
src/backend/access/rtree/rtscan.c
src/backend/access/rtree/rtstrat.c
src/backend/access/transam/Makefile
src/backend/access/transam/clog.c
src/backend/access/transam/rmgr.c
src/backend/access/transam/transam.c
src/backend/access/transam/varsup.c
src/backend/access/transam/xact.c
src/backend/access/transam/xid.c
src/backend/access/transam/xlog.c
src/backend/access/transam/xlogutils.c
src/backend/bootstrap/.cvsignore
src/backend/bootstrap/Makefile
src/backend/bootstrap/bootparse.y
src/backend/bootstrap/bootscanner.l
src/backend/bootstrap/bootstrap.c
src/backend/catalog/Makefile
src/backend/catalog/README
src/backend/catalog/aclchk.c
src/backend/catalog/catalog.c
src/backend/catalog/genbki.sh
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/indexing.c
src/backend/catalog/namespace.c
src/backend/catalog/pg_aggregate.c
src/backend/catalog/pg_largeobject.c
src/backend/catalog/pg_namespace.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_proc.c
src/backend/catalog/pg_type.c
src/backend/commands/Makefile
src/backend/commands/_deadcode/recipe.c
src/backend/commands/_deadcode/recipe.h
src/backend/commands/_deadcode/version.c
src/backend/commands/aggregatecmds.c
src/backend/commands/analyze.c
src/backend/commands/async.c
src/backend/commands/cluster.c
src/backend/commands/comment.c
src/backend/commands/copy.c
src/backend/commands/dbcommands.c
src/backend/commands/define.c
src/backend/commands/explain.c
src/backend/commands/functioncmds.c
src/backend/commands/indexcmds.c
src/backend/commands/lockcmds.c
src/backend/commands/operatorcmds.c
src/backend/commands/portalcmds.c
src/backend/commands/proclang.c
src/backend/commands/schemacmds.c
src/backend/commands/sequence.c
src/backend/commands/tablecmds.c
src/backend/commands/trigger.c
src/backend/commands/typecmds.c
src/backend/commands/user.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/backend/commands/variable.c
src/backend/commands/view.c
src/backend/executor/Makefile
src/backend/executor/README
src/backend/executor/_deadcode/nodeTee.c
src/backend/executor/execAmi.c
src/backend/executor/execJunk.c
src/backend/executor/execMain.c
src/backend/executor/execProcnode.c
src/backend/executor/execQual.c
src/backend/executor/execScan.c
src/backend/executor/execTuples.c
src/backend/executor/execUtils.c
src/backend/executor/functions.c
src/backend/executor/instrument.c
src/backend/executor/nodeAgg.c
src/backend/executor/nodeAppend.c
src/backend/executor/nodeFunctionscan.c
src/backend/executor/nodeGroup.c
src/backend/executor/nodeHash.c
src/backend/executor/nodeHashjoin.c
src/backend/executor/nodeIndexscan.c
src/backend/executor/nodeLimit.c
src/backend/executor/nodeMaterial.c
src/backend/executor/nodeMergejoin.c
src/backend/executor/nodeNestloop.c
src/backend/executor/nodeResult.c
src/backend/executor/nodeSeqscan.c
src/backend/executor/nodeSetOp.c
src/backend/executor/nodeSort.c
src/backend/executor/nodeSubplan.c
src/backend/executor/nodeSubqueryscan.c
src/backend/executor/nodeTidscan.c
src/backend/executor/nodeUnique.c
src/backend/executor/spi.c
src/backend/lib/Makefile
src/backend/lib/bit.c
src/backend/lib/dllist.c
src/backend/lib/lispsort.c
src/backend/lib/stringinfo.c
src/backend/libpq/Makefile
src/backend/libpq/README.SSL
src/backend/libpq/auth.c
src/backend/libpq/be-fsstubs.c
src/backend/libpq/be-secure.c
src/backend/libpq/crypt.c
src/backend/libpq/hba.c
src/backend/libpq/md5.c
src/backend/libpq/pg_hba.conf.sample
src/backend/libpq/pg_ident.conf.sample
src/backend/libpq/pqcomm.c
src/backend/libpq/pqformat.c
src/backend/libpq/pqsignal.c
src/backend/main/Makefile
src/backend/main/main.c
src/backend/nodes/Makefile
src/backend/nodes/README
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/list.c
src/backend/nodes/makefuncs.c
src/backend/nodes/nodeFuncs.c
src/backend/nodes/nodes.c
src/backend/nodes/outfuncs.c
src/backend/nodes/print.c
src/backend/nodes/read.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/Makefile
src/backend/optimizer/README
src/backend/optimizer/geqo/Makefile
src/backend/optimizer/geqo/geqo_copy.c
src/backend/optimizer/geqo/geqo_cx.c
src/backend/optimizer/geqo/geqo_erx.c
src/backend/optimizer/geqo/geqo_eval.c
src/backend/optimizer/geqo/geqo_main.c
src/backend/optimizer/geqo/geqo_misc.c
src/backend/optimizer/geqo/geqo_mutation.c
src/backend/optimizer/geqo/geqo_ox1.c
src/backend/optimizer/geqo/geqo_ox2.c
src/backend/optimizer/geqo/geqo_pmx.c
src/backend/optimizer/geqo/geqo_pool.c
src/backend/optimizer/geqo/geqo_px.c
src/backend/optimizer/geqo/geqo_recombination.c
src/backend/optimizer/geqo/geqo_selection.c
src/backend/optimizer/path/Makefile
src/backend/optimizer/path/_deadcode/predmig.c
src/backend/optimizer/path/_deadcode/xfunc.c
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/clausesel.c
src/backend/optimizer/path/costsize.c
src/backend/optimizer/path/indxpath.c
src/backend/optimizer/path/joinpath.c
src/backend/optimizer/path/joinrels.c
src/backend/optimizer/path/orindxpath.c
src/backend/optimizer/path/pathkeys.c
src/backend/optimizer/path/tidpath.c
src/backend/optimizer/plan/Makefile
src/backend/optimizer/plan/README
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/initsplan.c
src/backend/optimizer/plan/planmain.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/plan/subselect.c
src/backend/optimizer/prep/Makefile
src/backend/optimizer/prep/_deadcode/prepkeyset.c
src/backend/optimizer/prep/prepqual.c
src/backend/optimizer/prep/preptlist.c
src/backend/optimizer/prep/prepunion.c
src/backend/optimizer/util/Makefile
src/backend/optimizer/util/clauses.c
src/backend/optimizer/util/joininfo.c
src/backend/optimizer/util/pathnode.c
src/backend/optimizer/util/plancat.c
src/backend/optimizer/util/relnode.c
src/backend/optimizer/util/restrictinfo.c
src/backend/optimizer/util/tlist.c
src/backend/optimizer/util/var.c
src/backend/parser/.cvsignore
src/backend/parser/Makefile
src/backend/parser/README
src/backend/parser/analyze.c
src/backend/parser/gram.y
src/backend/parser/keywords.c
src/backend/parser/parse_agg.c
src/backend/parser/parse_clause.c
src/backend/parser/parse_coerce.c
src/backend/parser/parse_expr.c
src/backend/parser/parse_func.c
src/backend/parser/parse_node.c
src/backend/parser/parse_oper.c
src/backend/parser/parse_relation.c
src/backend/parser/parse_target.c
src/backend/parser/parse_type.c
src/backend/parser/parser.c
src/backend/parser/scan.l
src/backend/parser/scansup.c
src/backend/po/Makefile
src/backend/po/cs.po
src/backend/po/de.po
src/backend/po/hu.po
src/backend/po/nls.mk
src/backend/po/ru.po
src/backend/po/zh_CN.po
src/backend/po/zh_TW.po
src/backend/port/Makefile
src/backend/port/aix/mkldexport.sh
src/backend/port/beos/Makefile
src/backend/port/beos/sem.c
src/backend/port/beos/shm.c
src/backend/port/beos/support.c
src/backend/port/darwin/Makefile
src/backend/port/darwin/README
src/backend/port/darwin/system.c
src/backend/port/dynloader/README.dlfcn.aix
src/backend/port/dynloader/aix.c
src/backend/port/dynloader/aix.h
src/backend/port/dynloader/beos.c
src/backend/port/dynloader/beos.h
src/backend/port/dynloader/bsdi.c
src/backend/port/dynloader/bsdi.h
src/backend/port/dynloader/darwin.c
src/backend/port/dynloader/darwin.h
src/backend/port/dynloader/dgux.c
src/backend/port/dynloader/dgux.h
src/backend/port/dynloader/freebsd.c
src/backend/port/dynloader/freebsd.h
src/backend/port/dynloader/hpux.c
src/backend/port/dynloader/hpux.h
src/backend/port/dynloader/irix5.c
src/backend/port/dynloader/irix5.h
src/backend/port/dynloader/linux.c
src/backend/port/dynloader/linux.h
src/backend/port/dynloader/netbsd.c
src/backend/port/dynloader/netbsd.h
src/backend/port/dynloader/nextstep.c
src/backend/port/dynloader/nextstep.h
src/backend/port/dynloader/openbsd.c
src/backend/port/dynloader/openbsd.h
src/backend/port/dynloader/osf.c
src/backend/port/dynloader/osf.h
src/backend/port/dynloader/qnx4.c
src/backend/port/dynloader/qnx4.h
src/backend/port/dynloader/sco.c
src/backend/port/dynloader/sco.h
src/backend/port/dynloader/solaris.c
src/backend/port/dynloader/solaris.h
src/backend/port/dynloader/sunos4.c
src/backend/port/dynloader/sunos4.h
src/backend/port/dynloader/svr4.c
src/backend/port/dynloader/svr4.h
src/backend/port/dynloader/ultrix4.c
src/backend/port/dynloader/ultrix4.h
src/backend/port/dynloader/univel.c
src/backend/port/dynloader/univel.h
src/backend/port/dynloader/unixware.c
src/backend/port/dynloader/unixware.h
src/backend/port/dynloader/win.c
src/backend/port/dynloader/win.h
src/backend/port/gethostname.c
src/backend/port/getrusage.c
src/backend/port/hpux/tas.c.template
src/backend/port/inet_aton.c
src/backend/port/inet_aton.h
src/backend/port/ipc_test.c
src/backend/port/isinf.c
src/backend/port/memcmp.c
src/backend/port/nextstep/Makefile
src/backend/port/nextstep/port.c
src/backend/port/posix_sema.c
src/backend/port/qnx4/Makefile
src/backend/port/qnx4/ipc.h
src/backend/port/qnx4/isnan.c
src/backend/port/qnx4/rint.c
src/backend/port/qnx4/sem.c
src/backend/port/qnx4/sem.h
src/backend/port/qnx4/shm.c
src/backend/port/qnx4/shm.h
src/backend/port/qnx4/tstrint.c
src/backend/port/qnx4/tstsem.c
src/backend/port/qnx4/tstshm.c
src/backend/port/random.c
src/backend/port/snprintf.c
src/backend/port/srandom.c
src/backend/port/strcasecmp.c
src/backend/port/strerror.c
src/backend/port/strtol.c
src/backend/port/strtoul.c
src/backend/port/sunos4/Makefile
src/backend/port/sunos4/float.h
src/backend/port/sysv_sema.c
src/backend/port/sysv_shmem.c
src/backend/port/tas/dummy.s
src/backend/port/tas/hpux.s
src/backend/port/tas/solaris_i386.s
src/backend/port/tas/solaris_sparc.s
src/backend/postmaster/Makefile
src/backend/postmaster/pgstat.c
src/backend/postmaster/postmaster.c
src/backend/regex/COPYRIGHT
src/backend/regex/Makefile
src/backend/regex/WHATSNEW
src/backend/regex/engine.c
src/backend/regex/re_format.7
src/backend/regex/regcomp.c
src/backend/regex/regerror.c
src/backend/regex/regex.3
src/backend/regex/regexec.c
src/backend/regex/regfree.c
src/backend/regex/retest.c
src/backend/rewrite/Makefile
src/backend/rewrite/rewriteDefine.c
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteManip.c
src/backend/rewrite/rewriteRemove.c
src/backend/rewrite/rewriteSupport.c
src/backend/storage/Makefile
src/backend/storage/buffer/Makefile
src/backend/storage/buffer/README
src/backend/storage/buffer/buf_init.c
src/backend/storage/buffer/buf_table.c
src/backend/storage/buffer/bufmgr.c
src/backend/storage/buffer/freelist.c
src/backend/storage/buffer/localbuf.c
src/backend/storage/file/Makefile
src/backend/storage/file/buffile.c
src/backend/storage/file/fd.c
src/backend/storage/freespace/Makefile
src/backend/storage/freespace/freespace.c
src/backend/storage/ipc/Makefile
src/backend/storage/ipc/README
src/backend/storage/ipc/ipc.c
src/backend/storage/ipc/ipci.c
src/backend/storage/ipc/pmsignal.c
src/backend/storage/ipc/shmem.c
src/backend/storage/ipc/shmqueue.c
src/backend/storage/ipc/sinval.c
src/backend/storage/ipc/sinvaladt.c
src/backend/storage/large_object/Makefile
src/backend/storage/large_object/inv_api.c
src/backend/storage/lmgr/Makefile
src/backend/storage/lmgr/README
src/backend/storage/lmgr/deadlock.c
src/backend/storage/lmgr/lmgr.c
src/backend/storage/lmgr/lock.c
src/backend/storage/lmgr/lwlock.c
src/backend/storage/lmgr/proc.c
src/backend/storage/lmgr/s_lock.c
src/backend/storage/lmgr/spin.c
src/backend/storage/page/Makefile
src/backend/storage/page/bufpage.c
src/backend/storage/page/itemptr.c
src/backend/storage/smgr/Makefile
src/backend/storage/smgr/README
src/backend/storage/smgr/md.c
src/backend/storage/smgr/mm.c
src/backend/storage/smgr/smgr.c
src/backend/storage/smgr/smgrtype.c
src/backend/tcop/Makefile
src/backend/tcop/dest.c
src/backend/tcop/fastpath.c
src/backend/tcop/postgres.c
src/backend/tcop/pquery.c
src/backend/tcop/utility.c
src/backend/tioga/Arr_TgRecipe.h
src/backend/tioga/Makefile
src/backend/tioga/Varray.c
src/backend/tioga/Varray.h
src/backend/tioga/tgRecipe.c
src/backend/tioga/tgRecipe.h
src/backend/utils/.cvsignore
src/backend/utils/Gen_fmgrtab.sh
src/backend/utils/Makefile
src/backend/utils/adt/Makefile
src/backend/utils/adt/acl.c
src/backend/utils/adt/arrayfuncs.c
src/backend/utils/adt/arrayutils.c
src/backend/utils/adt/ascii.c
src/backend/utils/adt/bool.c
src/backend/utils/adt/cash.c
src/backend/utils/adt/char.c
src/backend/utils/adt/date.c
src/backend/utils/adt/datetime.c
src/backend/utils/adt/datum.c
src/backend/utils/adt/encode.c
src/backend/utils/adt/float.c
src/backend/utils/adt/format_type.c
src/backend/utils/adt/formatting.c
src/backend/utils/adt/geo_ops.c
src/backend/utils/adt/geo_selfuncs.c
src/backend/utils/adt/inet_net_ntop.c
src/backend/utils/adt/inet_net_pton.c
src/backend/utils/adt/int.c
src/backend/utils/adt/int8.c
src/backend/utils/adt/like.c
src/backend/utils/adt/like_match.c
src/backend/utils/adt/mac.c
src/backend/utils/adt/misc.c
src/backend/utils/adt/nabstime.c
src/backend/utils/adt/name.c
src/backend/utils/adt/network.c
src/backend/utils/adt/not_in.c
src/backend/utils/adt/numeric.c
src/backend/utils/adt/numutils.c
src/backend/utils/adt/oid.c
src/backend/utils/adt/oracle_compat.c
src/backend/utils/adt/pg_locale.c
src/backend/utils/adt/pg_lzcompress.c
src/backend/utils/adt/pgstatfuncs.c
src/backend/utils/adt/quote.c
src/backend/utils/adt/regexp.c
src/backend/utils/adt/regproc.c
src/backend/utils/adt/ri_triggers.c
src/backend/utils/adt/ruleutils.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/adt/sets.c
src/backend/utils/adt/tid.c
src/backend/utils/adt/timestamp.c
src/backend/utils/adt/varbit.c
src/backend/utils/adt/varchar.c
src/backend/utils/adt/varlena.c
src/backend/utils/adt/version.c
src/backend/utils/cache/Makefile
src/backend/utils/cache/catcache.c
src/backend/utils/cache/fcache.c
src/backend/utils/cache/inval.c
src/backend/utils/cache/lsyscache.c
src/backend/utils/cache/relcache.c
src/backend/utils/cache/syscache.c
src/backend/utils/error/Makefile
src/backend/utils/error/assert.c
src/backend/utils/error/elog.c
src/backend/utils/error/exc.c
src/backend/utils/error/excabort.c
src/backend/utils/error/excid.c
src/backend/utils/error/format.c
src/backend/utils/fmgr/Makefile
src/backend/utils/fmgr/README
src/backend/utils/fmgr/dfmgr.c
src/backend/utils/fmgr/fmgr.c
src/backend/utils/hash/Makefile
src/backend/utils/hash/dynahash.c
src/backend/utils/hash/hashfn.c
src/backend/utils/hash/pg_crc.c
src/backend/utils/init/Makefile
src/backend/utils/init/findbe.c
src/backend/utils/init/globals.c
src/backend/utils/init/miscinit.c
src/backend/utils/init/postinit.c
src/backend/utils/mb/Makefile
src/backend/utils/mb/README
src/backend/utils/mb/Unicode/ISO10646-GB18030.TXT
src/backend/utils/mb/Unicode/Makefile
src/backend/utils/mb/Unicode/UCS_to_8859.pl
src/backend/utils/mb/Unicode/UCS_to_BIG5.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_CN.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_JP.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_KR.pl
src/backend/utils/mb/Unicode/UCS_to_EUC_TW.pl
src/backend/utils/mb/Unicode/UCS_to_GB18030.pl
src/backend/utils/mb/Unicode/UCS_to_GBK.pl
src/backend/utils/mb/Unicode/UCS_to_JOHAB.pl
src/backend/utils/mb/Unicode/UCS_to_SJIS.pl
src/backend/utils/mb/Unicode/UCS_to_UHC.pl
src/backend/utils/mb/Unicode/UCS_to_WIN874.pl
src/backend/utils/mb/Unicode/UCS_to_WINX.pl
src/backend/utils/mb/Unicode/UCS_to_cyrillic.pl
src/backend/utils/mb/Unicode/alt_to_utf8.map
src/backend/utils/mb/Unicode/big5_to_utf8.map
src/backend/utils/mb/Unicode/euc_cn_to_utf8.map
src/backend/utils/mb/Unicode/euc_jp_to_utf8.map
src/backend/utils/mb/Unicode/euc_kr_to_utf8.map
src/backend/utils/mb/Unicode/euc_tw_to_utf8.map
src/backend/utils/mb/Unicode/gb18030_to_utf8.map
src/backend/utils/mb/Unicode/gbk_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_10_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_13_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_14_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_15_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_16_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_2_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_3_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_4_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_5_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_6_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_7_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_8_to_utf8.map
src/backend/utils/mb/Unicode/iso8859_9_to_utf8.map
src/backend/utils/mb/Unicode/johab_to_utf8.map
src/backend/utils/mb/Unicode/koi8r_to_utf8.map
src/backend/utils/mb/Unicode/sjis_to_utf8.map
src/backend/utils/mb/Unicode/tcvn_to_utf8.map
src/backend/utils/mb/Unicode/ucs2utf.pl
src/backend/utils/mb/Unicode/uhc_to_utf8.map
src/backend/utils/mb/Unicode/utf8_to_alt.map
src/backend/utils/mb/Unicode/utf8_to_big5.map
src/backend/utils/mb/Unicode/utf8_to_euc_cn.map
src/backend/utils/mb/Unicode/utf8_to_euc_jp.map
src/backend/utils/mb/Unicode/utf8_to_euc_kr.map
src/backend/utils/mb/Unicode/utf8_to_euc_tw.map
src/backend/utils/mb/Unicode/utf8_to_gb18030.map
src/backend/utils/mb/Unicode/utf8_to_gbk.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_10.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_13.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_14.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_15.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_16.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_2.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_3.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_4.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_5.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_6.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_7.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_8.map
src/backend/utils/mb/Unicode/utf8_to_iso8859_9.map
src/backend/utils/mb/Unicode/utf8_to_johab.map
src/backend/utils/mb/Unicode/utf8_to_koi8r.map
src/backend/utils/mb/Unicode/utf8_to_sjis.map
src/backend/utils/mb/Unicode/utf8_to_tcvn.map
src/backend/utils/mb/Unicode/utf8_to_uhc.map
src/backend/utils/mb/Unicode/utf8_to_win1250.map
src/backend/utils/mb/Unicode/utf8_to_win1251.map
src/backend/utils/mb/Unicode/utf8_to_win1256.map
src/backend/utils/mb/Unicode/utf8_to_win874.map
src/backend/utils/mb/Unicode/win1250_to_utf8.map
src/backend/utils/mb/Unicode/win1251_to_utf8.map
src/backend/utils/mb/Unicode/win1256_to_utf8.map
src/backend/utils/mb/Unicode/win874_to_utf8.map
src/backend/utils/mb/alt.c
src/backend/utils/mb/big5.c
src/backend/utils/mb/conv.c
src/backend/utils/mb/encnames.c
src/backend/utils/mb/iso.c
src/backend/utils/mb/mbutils.c
src/backend/utils/mb/sjis.map
src/backend/utils/mb/wchar.c
src/backend/utils/mb/win.c
src/backend/utils/mb/win1251.c
src/backend/utils/mb/wstrcmp.c
src/backend/utils/mb/wstrncmp.c
src/backend/utils/misc/.cvsignore
src/backend/utils/misc/Makefile
src/backend/utils/misc/README
src/backend/utils/misc/database.c
src/backend/utils/misc/guc-file.l
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/backend/utils/misc/ps_status.c
src/backend/utils/misc/superuser.c
src/backend/utils/mmgr/Makefile
src/backend/utils/mmgr/README
src/backend/utils/mmgr/aset.c
src/backend/utils/mmgr/mcxt.c
src/backend/utils/mmgr/portalmem.c
src/backend/utils/sort/Makefile
src/backend/utils/sort/logtape.c
src/backend/utils/sort/tuplesort.c
src/backend/utils/sort/tuplestore.c
src/backend/utils/time/Makefile
src/backend/utils/time/tqual.c
src/bin/Makefile
src/bin/initdb/Makefile
src/bin/initdb/initdb.sh
src/bin/initlocation/Makefile
src/bin/initlocation/initlocation.sh
src/bin/ipcclean/Makefile
src/bin/ipcclean/ipcclean.sh
src/bin/pg_config/Makefile
src/bin/pg_config/pg_config.sh
src/bin/pg_ctl/Makefile
src/bin/pg_ctl/pg_ctl.sh
src/bin/pg_dump/Makefile
src/bin/pg_dump/README
src/bin/pg_dump/common.c
src/bin/pg_dump/cs.po
src/bin/pg_dump/de.po
src/bin/pg_dump/nls.mk
src/bin/pg_dump/pg_backup.h
src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_backup_archiver.h
src/bin/pg_dump/pg_backup_custom.c
src/bin/pg_dump/pg_backup_db.c
src/bin/pg_dump/pg_backup_db.h
src/bin/pg_dump/pg_backup_files.c
src/bin/pg_dump/pg_backup_null.c
src/bin/pg_dump/pg_backup_tar.c
src/bin/pg_dump/pg_backup_tar.h
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h
src/bin/pg_dump/pg_dumpall.sh
src/bin/pg_dump/pg_restore.c
src/bin/pg_dump/ru.po
src/bin/pg_dump/sv.po
src/bin/pg_dump/zh_CN.po
src/bin/pg_dump/zh_TW.po
src/bin/pg_encoding/Makefile
src/bin/pg_encoding/pg_encoding.c
src/bin/pg_id/Makefile
src/bin/pg_id/pg_id.c
src/bin/pgaccess/Makefile
src/bin/pgaccess/README
src/bin/pgaccess/copyright.html
src/bin/pgaccess/demo/formdemo.sql
src/bin/pgaccess/doc/html/a_right.gif
src/bin/pgaccess/doc/html/addindex.gif
src/bin/pgaccess/doc/html/api.html
src/bin/pgaccess/doc/html/ball.gif
src/bin/pgaccess/doc/html/contents.html
src/bin/pgaccess/doc/html/copyright.html
src/bin/pgaccess/doc/html/documentation.html
src/bin/pgaccess/doc/html/download.html
src/bin/pgaccess/doc/html/faq.html
src/bin/pgaccess/doc/html/features.html
src/bin/pgaccess/doc/html/formdemo.sql
src/bin/pgaccess/doc/html/forms.gif
src/bin/pgaccess/doc/html/forms.html
src/bin/pgaccess/doc/html/function.gif
src/bin/pgaccess/doc/html/help.gif
src/bin/pgaccess/doc/html/index.html
src/bin/pgaccess/doc/html/irix.html
src/bin/pgaccess/doc/html/linux1.gif
src/bin/pgaccess/doc/html/maillist.html
src/bin/pgaccess/doc/html/main.html
src/bin/pgaccess/doc/html/mainwindow.gif
src/bin/pgaccess/doc/html/newtable.gif
src/bin/pgaccess/doc/html/newuser.gif
src/bin/pgaccess/doc/html/old_index.html
src/bin/pgaccess/doc/html/permissions.gif
src/bin/pgaccess/doc/html/pg93patch.html
src/bin/pgaccess/doc/html/pga-rad.html
src/bin/pgaccess/doc/html/qbtclet.html
src/bin/pgaccess/doc/html/qbtclet.tcl
src/bin/pgaccess/doc/html/screenshots.html
src/bin/pgaccess/doc/html/specialchars.html
src/bin/pgaccess/doc/html/todo.html
src/bin/pgaccess/doc/html/tutorial/addref.jpg
src/bin/pgaccess/doc/html/tutorial/altern_q.jpg
src/bin/pgaccess/doc/html/tutorial/altern_v.jpg
src/bin/pgaccess/doc/html/tutorial/copyright.html
src/bin/pgaccess/doc/html/tutorial/index.html
src/bin/pgaccess/doc/html/tutorial/intro.html
src/bin/pgaccess/doc/html/tutorial/irix.html
src/bin/pgaccess/doc/html/tutorial/newref.txt
src/bin/pgaccess/doc/html/tutorial/newtable.jpg
src/bin/pgaccess/doc/html/tutorial/newtable.tga
src/bin/pgaccess/doc/html/tutorial/problems.html
src/bin/pgaccess/doc/html/tutorial/screen1.jpg
src/bin/pgaccess/doc/html/tutorial/sel_tbl.jpg
src/bin/pgaccess/doc/html/tutorial/start.html
src/bin/pgaccess/doc/html/tutorial/tut.html
src/bin/pgaccess/doc/html/tutorial/tut_edit.html
src/bin/pgaccess/doc/html/tutorial/tut_new.html
src/bin/pgaccess/doc/html/tutorial/tut_sel1.html
src/bin/pgaccess/doc/html/tutorial/tut_user.html
src/bin/pgaccess/doc/html/vdesigner.gif
src/bin/pgaccess/doc/html/whatsnew.html
src/bin/pgaccess/doc/html/win32.html
src/bin/pgaccess/images/icon_button.gif
src/bin/pgaccess/images/icon_checkbutton.gif
src/bin/pgaccess/images/icon_entry.gif
src/bin/pgaccess/images/icon_frame.gif
src/bin/pgaccess/images/icon_label.gif
src/bin/pgaccess/images/icon_listbox.gif
src/bin/pgaccess/images/icon_query.gif
src/bin/pgaccess/images/icon_radiobutton.gif
src/bin/pgaccess/images/icon_text.gif
src/bin/pgaccess/lib/database.tcl
src/bin/pgaccess/lib/forms.tcl
src/bin/pgaccess/lib/functions.tcl
src/bin/pgaccess/lib/help/abort.hlp
src/bin/pgaccess/lib/help/add_records.hlp
src/bin/pgaccess/lib/help/alter_table.hlp
src/bin/pgaccess/lib/help/alter_user.hlp
src/bin/pgaccess/lib/help/author.hlp
src/bin/pgaccess/lib/help/begin.hlp
src/bin/pgaccess/lib/help/close.hlp
src/bin/pgaccess/lib/help/cluster.hlp
src/bin/pgaccess/lib/help/commit.hlp
src/bin/pgaccess/lib/help/copy.hlp
src/bin/pgaccess/lib/help/copyrights.hlp
src/bin/pgaccess/lib/help/create_aggregate.hlp
src/bin/pgaccess/lib/help/create_database.hlp
src/bin/pgaccess/lib/help/create_function.hlp
src/bin/pgaccess/lib/help/create_index.hlp
src/bin/pgaccess/lib/help/create_language.hlp
src/bin/pgaccess/lib/help/create_operator.hlp
src/bin/pgaccess/lib/help/create_rule.hlp
src/bin/pgaccess/lib/help/create_sequence.hlp
src/bin/pgaccess/lib/help/create_table.hlp
src/bin/pgaccess/lib/help/create_table_as.hlp
src/bin/pgaccess/lib/help/create_trigger.hlp
src/bin/pgaccess/lib/help/create_type.hlp
src/bin/pgaccess/lib/help/create_user.hlp
src/bin/pgaccess/lib/help/create_view.hlp
src/bin/pgaccess/lib/help/data_types.hlp
src/bin/pgaccess/lib/help/datefunc.hlp
src/bin/pgaccess/lib/help/declare.hlp
src/bin/pgaccess/lib/help/delete.hlp
src/bin/pgaccess/lib/help/drop_aggregate.hlp
src/bin/pgaccess/lib/help/drop_database.hlp
src/bin/pgaccess/lib/help/drop_function.hlp
src/bin/pgaccess/lib/help/drop_index.hlp
src/bin/pgaccess/lib/help/drop_language.hlp
src/bin/pgaccess/lib/help/drop_operator.hlp
src/bin/pgaccess/lib/help/drop_rule.hlp
src/bin/pgaccess/lib/help/drop_sequence.hlp
src/bin/pgaccess/lib/help/drop_table.hlp
src/bin/pgaccess/lib/help/drop_trigger.hlp
src/bin/pgaccess/lib/help/drop_type.hlp
src/bin/pgaccess/lib/help/drop_user.hlp
src/bin/pgaccess/lib/help/drop_view.hlp
src/bin/pgaccess/lib/help/explain.hlp
src/bin/pgaccess/lib/help/fetch.hlp
src/bin/pgaccess/lib/help/form_design.hlp
src/bin/pgaccess/lib/help/forms.hlp
src/bin/pgaccess/lib/help/functions.hlp
src/bin/pgaccess/lib/help/geomfunc.hlp
src/bin/pgaccess/lib/help/grant.hlp
src/bin/pgaccess/lib/help/history.hlp
src/bin/pgaccess/lib/help/index.hlp
src/bin/pgaccess/lib/help/inheritance.hlp
src/bin/pgaccess/lib/help/insert.hlp
src/bin/pgaccess/lib/help/ipv4func.hlp
src/bin/pgaccess/lib/help/isolation.hlp
src/bin/pgaccess/lib/help/keywords.hlp
src/bin/pgaccess/lib/help/listen.hlp
src/bin/pgaccess/lib/help/load.hlp
src/bin/pgaccess/lib/help/lock.hlp
src/bin/pgaccess/lib/help/mathfunc.hlp
src/bin/pgaccess/lib/help/move.hlp
src/bin/pgaccess/lib/help/mvcc.hlp
src/bin/pgaccess/lib/help/new_query.hlp
src/bin/pgaccess/lib/help/new_table.hlp
src/bin/pgaccess/lib/help/notify.hlp
src/bin/pgaccess/lib/help/open_query.hlp
src/bin/pgaccess/lib/help/open_table.hlp
src/bin/pgaccess/lib/help/pgfunctions.hlp
src/bin/pgaccess/lib/help/postgresql.hlp
src/bin/pgaccess/lib/help/queries.hlp
src/bin/pgaccess/lib/help/reports.hlp
src/bin/pgaccess/lib/help/reset.hlp
src/bin/pgaccess/lib/help/revoke.hlp
src/bin/pgaccess/lib/help/rollback.hlp
src/bin/pgaccess/lib/help/schema.hlp
src/bin/pgaccess/lib/help/scripts.hlp
src/bin/pgaccess/lib/help/select.hlp
src/bin/pgaccess/lib/help/select_into.hlp
src/bin/pgaccess/lib/help/sequences.hlp
src/bin/pgaccess/lib/help/set.hlp
src/bin/pgaccess/lib/help/show.hlp
src/bin/pgaccess/lib/help/sql_guide.hlp
src/bin/pgaccess/lib/help/sqlfunc.hlp
src/bin/pgaccess/lib/help/stringfunc.hlp
src/bin/pgaccess/lib/help/tables.hlp
src/bin/pgaccess/lib/help/unlisten.hlp
src/bin/pgaccess/lib/help/update.hlp
src/bin/pgaccess/lib/help/users.hlp
src/bin/pgaccess/lib/help/vacuum.hlp
src/bin/pgaccess/lib/help/view_table_structure.hlp
src/bin/pgaccess/lib/help/views.hlp
src/bin/pgaccess/lib/help/visual_designer.hlp
src/bin/pgaccess/lib/help/y2k.hlp
src/bin/pgaccess/lib/help.tcl
src/bin/pgaccess/lib/languages/chinese_big5
src/bin/pgaccess/lib/languages/chinese_gb
src/bin/pgaccess/lib/languages/czech
src/bin/pgaccess/lib/languages/deutsch
src/bin/pgaccess/lib/languages/euskara
src/bin/pgaccess/lib/languages/francais
src/bin/pgaccess/lib/languages/italiano
src/bin/pgaccess/lib/languages/japanese
src/bin/pgaccess/lib/languages/magyar
src/bin/pgaccess/lib/languages/nederlands
src/bin/pgaccess/lib/languages/portugues
src/bin/pgaccess/lib/languages/romana
src/bin/pgaccess/lib/languages/russian.koi8r
src/bin/pgaccess/lib/languages/russian_win
src/bin/pgaccess/lib/languages/spanish
src/bin/pgaccess/lib/mainlib.tcl
src/bin/pgaccess/lib/preferences.tcl
src/bin/pgaccess/lib/queries.tcl
src/bin/pgaccess/lib/reports.tcl
src/bin/pgaccess/lib/schema.tcl
src/bin/pgaccess/lib/scripts.tcl
src/bin/pgaccess/lib/sequences.tcl
src/bin/pgaccess/lib/tables.tcl
src/bin/pgaccess/lib/users.tcl
src/bin/pgaccess/lib/views.tcl
src/bin/pgaccess/lib/visualqb.tcl
src/bin/pgaccess/main.tcl
src/bin/pgaccess/pgaccess.sh
src/bin/pgtclsh/Makefile
src/bin/pgtclsh/README
src/bin/pgtclsh/pgtclAppInit.c
src/bin/pgtclsh/pgtclUtils.tcl
src/bin/pgtclsh/pgtkAppInit.c
src/bin/pgtclsh/updateStats.tcl
src/bin/psql/.cvsignore
src/bin/psql/Makefile
src/bin/psql/command.c
src/bin/psql/command.h
src/bin/psql/common.c
src/bin/psql/common.h
src/bin/psql/copy.c
src/bin/psql/copy.h
src/bin/psql/create_help.pl
src/bin/psql/cs.po
src/bin/psql/de.po
src/bin/psql/describe.c
src/bin/psql/describe.h
src/bin/psql/fr.po
src/bin/psql/help.c
src/bin/psql/help.h
src/bin/psql/input.c
src/bin/psql/input.h
src/bin/psql/large_obj.c
src/bin/psql/large_obj.h
src/bin/psql/mainloop.c
src/bin/psql/mainloop.h
src/bin/psql/mbprint.c
src/bin/psql/mbprint.h
src/bin/psql/nls.mk
src/bin/psql/print.c
src/bin/psql/print.h
src/bin/psql/prompt.c
src/bin/psql/prompt.h
src/bin/psql/ru.po
src/bin/psql/settings.h
src/bin/psql/startup.c
src/bin/psql/stringutils.c
src/bin/psql/stringutils.h
src/bin/psql/sv.po
src/bin/psql/tab-complete.c
src/bin/psql/tab-complete.h
src/bin/psql/variables.c
src/bin/psql/variables.h
src/bin/psql/win32.mak
src/bin/psql/zh_CN.po
src/bin/psql/zh_TW.po
src/bin/scripts/Makefile
src/bin/scripts/createdb
src/bin/scripts/createlang.sh
src/bin/scripts/createuser
src/bin/scripts/dropdb
src/bin/scripts/droplang
src/bin/scripts/dropuser
src/bin/scripts/vacuumdb
src/corba/CosQuery.idl
src/corba/CosQueryCollection.idl
src/corba/pgsql.idl
src/corba/pgsql_int.idl
src/corba/server.cc
src/data/charset.conf
src/data/isocz-wincz.tab
src/data/koi-alt.tab
src/data/koi-iso.tab
src/data/koi-koi.tab
src/data/koi-mac.tab
src/data/koi-win.tab
src/include/Makefile
src/include/access/attnum.h
src/include/access/clog.h
src/include/access/genam.h
src/include/access/gist.h
src/include/access/gistscan.h
src/include/access/hash.h
src/include/access/heapam.h
src/include/access/hio.h
src/include/access/htup.h
src/include/access/ibit.h
src/include/access/iqual.h
src/include/access/istrat.h
src/include/access/itup.h
src/include/access/nbtree.h
src/include/access/printtup.h
src/include/access/relscan.h
src/include/access/rmgr.h
src/include/access/rtree.h
src/include/access/rtscan.h
src/include/access/sdir.h
src/include/access/skey.h
src/include/access/strat.h
src/include/access/transam.h
src/include/access/tupdesc.h
src/include/access/tupmacs.h
src/include/access/tuptoaster.h
src/include/access/valid.h
src/include/access/xact.h
src/include/access/xlog.h
src/include/access/xlogdefs.h
src/include/access/xlogutils.h
src/include/bootstrap/bootstrap.h
src/include/c.h
src/include/catalog/catalog.h
src/include/catalog/catname.h
src/include/catalog/catversion.h
src/include/catalog/duplicate_oids
src/include/catalog/heap.h
src/include/catalog/index.h
src/include/catalog/indexing.h
src/include/catalog/namespace.h
src/include/catalog/pg_aggregate.h
src/include/catalog/pg_am.h
src/include/catalog/pg_amop.h
src/include/catalog/pg_amproc.h
src/include/catalog/pg_attrdef.h
src/include/catalog/pg_attribute.h
src/include/catalog/pg_class.h
src/include/catalog/pg_control.h
src/include/catalog/pg_database.h
src/include/catalog/pg_description.h
src/include/catalog/pg_group.h
src/include/catalog/pg_index.h
src/include/catalog/pg_inherits.h
src/include/catalog/pg_language.h
src/include/catalog/pg_largeobject.h
src/include/catalog/pg_listener.h
src/include/catalog/pg_namespace.h
src/include/catalog/pg_opclass.h
src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h
src/include/catalog/pg_relcheck.h
src/include/catalog/pg_rewrite.h
src/include/catalog/pg_shadow.h
src/include/catalog/pg_statistic.h
src/include/catalog/pg_trigger.h
src/include/catalog/pg_type.h
src/include/catalog/pg_version.h
src/include/catalog/unused_oids
src/include/commands/async.h
src/include/commands/cluster.h
src/include/commands/comment.h
src/include/commands/copy.h
src/include/commands/dbcommands.h
src/include/commands/defrem.h
src/include/commands/explain.h
src/include/commands/lockcmds.h
src/include/commands/portalcmds.h
src/include/commands/proclang.h
src/include/commands/schemacmds.h
src/include/commands/sequence.h
src/include/commands/tablecmds.h
src/include/commands/trigger.h
src/include/commands/user.h
src/include/commands/vacuum.h
src/include/commands/variable.h
src/include/commands/version.h
src/include/commands/view.h
src/include/executor/execdebug.h
src/include/executor/execdefs.h
src/include/executor/execdesc.h
src/include/executor/executor.h
src/include/executor/functions.h
src/include/executor/hashjoin.h
src/include/executor/instrument.h
src/include/executor/nodeAgg.h
src/include/executor/nodeAppend.h
src/include/executor/nodeFunctionscan.h
src/include/executor/nodeGroup.h
src/include/executor/nodeHash.h
src/include/executor/nodeHashjoin.h
src/include/executor/nodeIndexscan.h
src/include/executor/nodeLimit.h
src/include/executor/nodeMaterial.h
src/include/executor/nodeMergejoin.h
src/include/executor/nodeNestloop.h
src/include/executor/nodeResult.h
src/include/executor/nodeSeqscan.h
src/include/executor/nodeSetOp.h
src/include/executor/nodeSort.h
src/include/executor/nodeSubplan.h
src/include/executor/nodeSubqueryscan.h
src/include/executor/nodeTidscan.h
src/include/executor/nodeUnique.h
src/include/executor/spi.h
src/include/executor/spi_priv.h
src/include/executor/tuptable.h
src/include/fmgr.h
src/include/lib/dllist.h
src/include/lib/lispsort.h
src/include/lib/stringinfo.h
src/include/libpq/auth.h
src/include/libpq/be-fsstubs.h
src/include/libpq/crypt.h
src/include/libpq/hba.h
src/include/libpq/libpq-be.h
src/include/libpq/libpq-fs.h
src/include/libpq/libpq.h
src/include/libpq/password.h
src/include/libpq/pqcomm.h
src/include/libpq/pqformat.h
src/include/libpq/pqsignal.h
src/include/mb/pg_wchar.h
src/include/miscadmin.h
src/include/nodes/execnodes.h
src/include/nodes/makefuncs.h
src/include/nodes/memnodes.h
src/include/nodes/nodeFuncs.h
src/include/nodes/nodes.h
src/include/nodes/params.h
src/include/nodes/parsenodes.h
src/include/nodes/pg_list.h
src/include/nodes/plannodes.h
src/include/nodes/primnodes.h
src/include/nodes/print.h
src/include/nodes/readfuncs.h
src/include/nodes/relation.h
src/include/optimizer/_deadcode/xfunc.h
src/include/optimizer/clauses.h
src/include/optimizer/cost.h
src/include/optimizer/geqo.h
src/include/optimizer/geqo_copy.h
src/include/optimizer/geqo_gene.h
src/include/optimizer/geqo_misc.h
src/include/optimizer/geqo_mutation.h
src/include/optimizer/geqo_pool.h
src/include/optimizer/geqo_random.h
src/include/optimizer/geqo_recombination.h
src/include/optimizer/geqo_selection.h
src/include/optimizer/joininfo.h
src/include/optimizer/pathnode.h
src/include/optimizer/paths.h
src/include/optimizer/plancat.h
src/include/optimizer/planmain.h
src/include/optimizer/planner.h
src/include/optimizer/prep.h
src/include/optimizer/restrictinfo.h
src/include/optimizer/subselect.h
src/include/optimizer/tlist.h
src/include/optimizer/var.h
src/include/parser/analyze.h
src/include/parser/gramparse.h
src/include/parser/keywords.h
src/include/parser/parse_agg.h
src/include/parser/parse_clause.h
src/include/parser/parse_coerce.h
src/include/parser/parse_expr.h
src/include/parser/parse_func.h
src/include/parser/parse_node.h
src/include/parser/parse_oper.h
src/include/parser/parse_relation.h
src/include/parser/parse_target.h
src/include/parser/parse_type.h
src/include/parser/parser.h
src/include/parser/parsetree.h
src/include/parser/scansup.h
src/include/pg_config.h.in
src/include/pg_config.h.win32
src/include/pgstat.h
src/include/port/aix.h
src/include/port/beos.h
src/include/port/bsdi.h
src/include/port/darwin.h
src/include/port/dgux.h
src/include/port/freebsd.h
src/include/port/hpux.h
src/include/port/irix5.h
src/include/port/linux.h
src/include/port/netbsd.h
src/include/port/nextstep.h
src/include/port/openbsd.h
src/include/port/osf.h
src/include/port/qnx4.h
src/include/port/sco.h
src/include/port/solaris.h
src/include/port/sunos4.h
src/include/port/svr4.h
src/include/port/ultrix4.h
src/include/port/univel.h
src/include/port/unixware.h
src/include/port/win.h
src/include/port/win32.h
src/include/postgres.h
src/include/postgres_ext.h
src/include/postgres_fe.h
src/include/regex/cclass.h
src/include/regex/cname.h
src/include/regex/regex.h
src/include/regex/regex2.h
src/include/regex/utils.h
src/include/rewrite/prs2lock.h
src/include/rewrite/rewriteDefine.h
src/include/rewrite/rewriteHandler.h
src/include/rewrite/rewriteManip.h
src/include/rewrite/rewriteRemove.h
src/include/rewrite/rewriteSupport.h
src/include/rusagestub.h
src/include/storage/backendid.h
src/include/storage/block.h
src/include/storage/buf.h
src/include/storage/buf_internals.h
src/include/storage/buffile.h
src/include/storage/bufmgr.h
src/include/storage/bufpage.h
src/include/storage/fd.h
src/include/storage/freespace.h
src/include/storage/ipc.h
src/include/storage/item.h
src/include/storage/itemid.h
src/include/storage/itempos.h
src/include/storage/itemptr.h
src/include/storage/large_object.h
src/include/storage/lmgr.h
src/include/storage/lock.h
src/include/storage/lwlock.h
src/include/storage/off.h
src/include/storage/page.h
src/include/storage/pg_sema.h
src/include/storage/pg_shmem.h
src/include/storage/pmsignal.h
src/include/storage/pos.h
src/include/storage/proc.h
src/include/storage/relfilenode.h
src/include/storage/s_lock.h
src/include/storage/shmem.h
src/include/storage/sinval.h
src/include/storage/sinvaladt.h
src/include/storage/smgr.h
src/include/storage/spin.h
src/include/strdup.h
src/include/tcop/dest.h
src/include/tcop/fastpath.h
src/include/tcop/pquery.h
src/include/tcop/tcopdebug.h
src/include/tcop/tcopprot.h
src/include/tcop/utility.h
src/include/utils/acl.h
src/include/utils/array.h
src/include/utils/ascii.h
src/include/utils/bit.h
src/include/utils/builtins.h
src/include/utils/cash.h
src/include/utils/catcache.h
src/include/utils/date.h
src/include/utils/datetime.h
src/include/utils/datum.h
src/include/utils/dynahash.h
src/include/utils/dynamic_loader.h
src/include/utils/elog.h
src/include/utils/exc.h
src/include/utils/excid.h
src/include/utils/fcache.h
src/include/utils/fmgrtab.h
src/include/utils/formatting.h
src/include/utils/geo_decls.h
src/include/utils/guc.h
src/include/utils/hsearch.h
src/include/utils/inet.h
src/include/utils/int8.h
src/include/utils/inval.h
src/include/utils/logtape.h
src/include/utils/lsyscache.h
src/include/utils/memutils.h
src/include/utils/nabstime.h
src/include/utils/numeric.h
src/include/utils/palloc.h
src/include/utils/pg_crc.h
src/include/utils/pg_locale.h
src/include/utils/pg_lzcompress.h
src/include/utils/portal.h
src/include/utils/ps_status.h
src/include/utils/rel.h
src/include/utils/relcache.h
src/include/utils/selfuncs.h
src/include/utils/sets.h
src/include/utils/syscache.h
src/include/utils/timestamp.h
src/include/utils/tqual.h
src/include/utils/tuplesort.h
src/include/utils/tuplestore.h
src/include/utils/varbit.h
src/interfaces/Makefile
src/interfaces/cli/example1.c
src/interfaces/cli/example2.c
src/interfaces/cli/sqlcli.h
src/interfaces/jdbc/CHANGELOG
src/interfaces/jdbc/Implementation
src/interfaces/jdbc/Makefile
src/interfaces/jdbc/README
src/interfaces/jdbc/build.xml
src/interfaces/jdbc/example/ImageViewer.java
src/interfaces/jdbc/example/Unicode.java
src/interfaces/jdbc/example/basic.java
src/interfaces/jdbc/example/blobtest.java
src/interfaces/jdbc/example/corba/StockClient.java
src/interfaces/jdbc/example/corba/StockDB.java
src/interfaces/jdbc/example/corba/StockDispenserImpl.java
src/interfaces/jdbc/example/corba/StockItemImpl.java
src/interfaces/jdbc/example/corba/StockServer.java
src/interfaces/jdbc/example/corba/readme
src/interfaces/jdbc/example/corba/stock.idl
src/interfaces/jdbc/example/corba/stock.sql
src/interfaces/jdbc/example/datestyle.java
src/interfaces/jdbc/example/metadata.java
src/interfaces/jdbc/example/psql.java
src/interfaces/jdbc/example/threadsafe.java
src/interfaces/jdbc/jdbc.jpx
src/interfaces/jdbc/org/postgresql/Connection.java
src/interfaces/jdbc/org/postgresql/Driver.java.in
src/interfaces/jdbc/org/postgresql/Field.java
src/interfaces/jdbc/org/postgresql/PG_Stream.java
src/interfaces/jdbc/org/postgresql/PostgresqlDataSource.java
src/interfaces/jdbc/org/postgresql/ResultSet.java
src/interfaces/jdbc/org/postgresql/Statement.java
src/interfaces/jdbc/org/postgresql/core/BytePoolDim1.java
src/interfaces/jdbc/org/postgresql/core/BytePoolDim2.java
src/interfaces/jdbc/org/postgresql/core/Encoding.java
src/interfaces/jdbc/org/postgresql/core/MemoryPool.java
src/interfaces/jdbc/org/postgresql/core/ObjectPool.java
src/interfaces/jdbc/org/postgresql/core/QueryExecutor.java
src/interfaces/jdbc/org/postgresql/core/SimpleObjectPool.java
src/interfaces/jdbc/org/postgresql/core/StartupPacket.java
src/interfaces/jdbc/org/postgresql/errors.properties
src/interfaces/jdbc/org/postgresql/errors_de.properties
src/interfaces/jdbc/org/postgresql/errors_fr.properties
src/interfaces/jdbc/org/postgresql/errors_it.properties
src/interfaces/jdbc/org/postgresql/errors_nl.properties
src/interfaces/jdbc/org/postgresql/errors_zh_TW.properties
src/interfaces/jdbc/org/postgresql/fastpath/Fastpath.java
src/interfaces/jdbc/org/postgresql/fastpath/FastpathArg.java
src/interfaces/jdbc/org/postgresql/geometric/PGbox.java
src/interfaces/jdbc/org/postgresql/geometric/PGcircle.java
src/interfaces/jdbc/org/postgresql/geometric/PGline.java
src/interfaces/jdbc/org/postgresql/geometric/PGlseg.java
src/interfaces/jdbc/org/postgresql/geometric/PGpath.java
src/interfaces/jdbc/org/postgresql/geometric/PGpoint.java
src/interfaces/jdbc/org/postgresql/geometric/PGpolygon.java
src/interfaces/jdbc/org/postgresql/jdbc1/CallableStatement.java
src/interfaces/jdbc/org/postgresql/jdbc1/Connection.java
src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java
src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java
src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc1/ResultSetMetaData.java
src/interfaces/jdbc/org/postgresql/jdbc1/Statement.java
src/interfaces/jdbc/org/postgresql/jdbc2/Array.java
src/interfaces/jdbc/org/postgresql/jdbc2/CallableStatement.java
src/interfaces/jdbc/org/postgresql/jdbc2/Connection.java
src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
src/interfaces/jdbc/org/postgresql/jdbc2/PBatchUpdateException.java
src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java
src/interfaces/jdbc/org/postgresql/jdbc2/Statement.java
src/interfaces/jdbc/org/postgresql/jdbc2/UpdateableResultSet.java
src/interfaces/jdbc/org/postgresql/largeobject/BlobInputStream.java
src/interfaces/jdbc/org/postgresql/largeobject/BlobOutputStream.java
src/interfaces/jdbc/org/postgresql/largeobject/LargeObject.java
src/interfaces/jdbc/org/postgresql/largeobject/LargeObjectManager.java
src/interfaces/jdbc/org/postgresql/largeobject/PGblob.java
src/interfaces/jdbc/org/postgresql/largeobject/PGclob.java
src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java
src/interfaces/jdbc/org/postgresql/test/README
src/interfaces/jdbc/org/postgresql/test/jdbc2/ANTTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/BatchExecuteTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/BlobTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/ConnectionTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/DateTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/DriverTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/EncodingTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/JBuilderTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/MiscTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/TimeTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/TimestampTest.java
src/interfaces/jdbc/org/postgresql/test/jdbc2/UpdateableResultTest.java
src/interfaces/jdbc/org/postgresql/util/MD5Digest.java
src/interfaces/jdbc/org/postgresql/util/MessageTranslator.java
src/interfaces/jdbc/org/postgresql/util/PGbytea.java
src/interfaces/jdbc/org/postgresql/util/PGmoney.java
src/interfaces/jdbc/org/postgresql/util/PGobject.java
src/interfaces/jdbc/org/postgresql/util/PGtokenizer.java
src/interfaces/jdbc/org/postgresql/util/PSQLException.java
src/interfaces/jdbc/org/postgresql/util/Serialize.java
src/interfaces/jdbc/org/postgresql/util/UnixCrypt.java
src/interfaces/jdbc/org/postgresql/xa/ClientConnection.java
src/interfaces/jdbc/org/postgresql/xa/TwoPhaseConnection.java
src/interfaces/jdbc/org/postgresql/xa/TxConnection.java
src/interfaces/jdbc/org/postgresql/xa/XAConnectionImpl.java
src/interfaces/jdbc/org/postgresql/xa/XADataSourceImpl.java
src/interfaces/jdbc/utils/CheckVersion.java
src/interfaces/jdbc/utils/buildDriver
src/interfaces/jdbc/utils/changelog.pl
src/interfaces/libpgeasy/Makefile
src/interfaces/libpgeasy/README
src/interfaces/libpgeasy/examples/Makefile
src/interfaces/libpgeasy/examples/pginsert.c
src/interfaces/libpgeasy/examples/pgmultiresult.c
src/interfaces/libpgeasy/examples/pgnulltest.c
src/interfaces/libpgeasy/examples/pgwordcount.c
src/interfaces/libpgeasy/halt.c
src/interfaces/libpgeasy/halt.h
src/interfaces/libpgeasy/libpgeasy.c
src/interfaces/libpgeasy/libpgeasy.h
src/interfaces/libpgtcl/Makefile
src/interfaces/libpgtcl/README
src/interfaces/libpgtcl/libpgtcl.def
src/interfaces/libpgtcl/libpgtcl.h
src/interfaces/libpgtcl/pgtcl.c
src/interfaces/libpgtcl/pgtclCmds.c
src/interfaces/libpgtcl/pgtclCmds.h
src/interfaces/libpgtcl/pgtclId.c
src/interfaces/libpgtcl/pgtclId.h
src/interfaces/libpgtcl/win32.mak
src/interfaces/libpq/Makefile
src/interfaces/libpq/README
src/interfaces/libpq/cs.po
src/interfaces/libpq/de.po
src/interfaces/libpq/fe-auth.c
src/interfaces/libpq/fe-auth.h
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-lobj.c
src/interfaces/libpq/fe-misc.c
src/interfaces/libpq/fe-print.c
src/interfaces/libpq/fe-secure.c
src/interfaces/libpq/fr.po
src/interfaces/libpq/libpq-fe.h
src/interfaces/libpq/libpq-int.h
src/interfaces/libpq/libpq.rc
src/interfaces/libpq/libpqdll.c
src/interfaces/libpq/libpqdll.def
src/interfaces/libpq/nls.mk
src/interfaces/libpq/pqexpbuffer.c
src/interfaces/libpq/pqexpbuffer.h
src/interfaces/libpq/pqsignal.c
src/interfaces/libpq/pqsignal.h
src/interfaces/libpq/ru.po
src/interfaces/libpq/sv.po
src/interfaces/libpq/win32.c
src/interfaces/libpq/win32.h
src/interfaces/libpq/win32.mak
src/interfaces/libpq/zh_CN.po
src/interfaces/libpq/zh_TW.po
src/interfaces/libpq++/CHANGES
src/interfaces/libpq++/Makefile
src/interfaces/libpq++/README
src/interfaces/libpq++/TODO
src/interfaces/libpq++/examples/Makefile
src/interfaces/libpq++/examples/testlibpq0.cc
src/interfaces/libpq++/examples/testlibpq1.cc
src/interfaces/libpq++/examples/testlibpq2.cc
src/interfaces/libpq++/examples/testlibpq2.sql
src/interfaces/libpq++/examples/testlibpq3.cc
src/interfaces/libpq++/examples/testlibpq3.sql
src/interfaces/libpq++/examples/testlibpq4.cc
src/interfaces/libpq++/examples/testlibpq4.sql
src/interfaces/libpq++/examples/testlibpq5.cc
src/interfaces/libpq++/examples/testlibpq5.sql
src/interfaces/libpq++/examples/testlibpq6.cc
src/interfaces/libpq++/examples/testlo.cc
src/interfaces/libpq++/libpq++.h
src/interfaces/libpq++/libpq++dll.rc
src/interfaces/libpq++/pgconnection.cc
src/interfaces/libpq++/pgconnection.h
src/interfaces/libpq++/pgcursordb.cc
src/interfaces/libpq++/pgcursordb.h
src/interfaces/libpq++/pgdatabase.cc
src/interfaces/libpq++/pgdatabase.h
src/interfaces/libpq++/pglobject.cc
src/interfaces/libpq++/pglobject.h
src/interfaces/libpq++/pgtransdb.cc
src/interfaces/libpq++/pgtransdb.h
src/interfaces/libpq++/win32.mak
src/interfaces/odbc/GNUmakefile
src/interfaces/odbc/bind.c
src/interfaces/odbc/bind.h
src/interfaces/odbc/columninfo.c
src/interfaces/odbc/columninfo.h
src/interfaces/odbc/connection.c
src/interfaces/odbc/connection.h
src/interfaces/odbc/convert.c
src/interfaces/odbc/convert.h
src/interfaces/odbc/descriptor.h
src/interfaces/odbc/dlg_specific.c
src/interfaces/odbc/dlg_specific.h
src/interfaces/odbc/dlg_wingui.c
src/interfaces/odbc/drvconn.c
src/interfaces/odbc/environ.c
src/interfaces/odbc/environ.h
src/interfaces/odbc/execute.c
src/interfaces/odbc/gpps.c
src/interfaces/odbc/gpps.h
src/interfaces/odbc/info.c
src/interfaces/odbc/info30.c
src/interfaces/odbc/iodbc.h
src/interfaces/odbc/isql.h
src/interfaces/odbc/isqlext.h
src/interfaces/odbc/license.txt
src/interfaces/odbc/lobj.c
src/interfaces/odbc/lobj.h
src/interfaces/odbc/md5.c
src/interfaces/odbc/md5.h
src/interfaces/odbc/misc.c
src/interfaces/odbc/misc.h
src/interfaces/odbc/multibyte.c
src/interfaces/odbc/multibyte.h
src/interfaces/odbc/notice.txt
src/interfaces/odbc/odbc.sql
src/interfaces/odbc/odbcapi.c
src/interfaces/odbc/odbcapi25w.c
src/interfaces/odbc/odbcapi30.c
src/interfaces/odbc/odbcapi30w.c
src/interfaces/odbc/odbcapiw.c
src/interfaces/odbc/odbcinst.ini
src/interfaces/odbc/options.c
src/interfaces/odbc/parse.c
src/interfaces/odbc/pgapi30.c
src/interfaces/odbc/pgapifunc.h
src/interfaces/odbc/pgtypes.c
src/interfaces/odbc/pgtypes.h
src/interfaces/odbc/psqlodbc.c
src/interfaces/odbc/psqlodbc.h
src/interfaces/odbc/psqlodbc.rc
src/interfaces/odbc/psqlodbc.reg
src/interfaces/odbc/psqlodbc30.reg
src/interfaces/odbc/psqlodbc30w.reg
src/interfaces/odbc/psqlodbc_api30.def
src/interfaces/odbc/psqlodbc_api30w.def
src/interfaces/odbc/psqlodbc_apiw.def
src/interfaces/odbc/psqlodbc_win32.def
src/interfaces/odbc/qresult.c
src/interfaces/odbc/qresult.h
src/interfaces/odbc/readme.txt
src/interfaces/odbc/resource.h
src/interfaces/odbc/results.c
src/interfaces/odbc/setup.c
src/interfaces/odbc/setup.rul
src/interfaces/odbc/socket.c
src/interfaces/odbc/socket.h
src/interfaces/odbc/statement.c
src/interfaces/odbc/statement.h
src/interfaces/odbc/tuple.c
src/interfaces/odbc/tuple.h
src/interfaces/odbc/tuplelist.c
src/interfaces/odbc/tuplelist.h
src/interfaces/odbc/version.h
src/interfaces/odbc/win32.mak
src/interfaces/odbc/win32_30.mak
src/interfaces/odbc/win32_30w.mak
src/interfaces/odbc/win32w.mak
src/interfaces/odbc/win_md5.c
src/interfaces/odbc/win_setup.h
src/interfaces/odbc/win_unicode.c
src/interfaces/perl5/Changes
src/interfaces/perl5/GNUmakefile
src/interfaces/perl5/MANIFEST
src/interfaces/perl5/Makefile.PL
src/interfaces/perl5/Pg.pm
src/interfaces/perl5/Pg.xs
src/interfaces/perl5/README
src/interfaces/perl5/examples/ApachePg.pl
src/interfaces/perl5/examples/example.newstyle
src/interfaces/perl5/examples/example.oldstyle
src/interfaces/perl5/ppport.h
src/interfaces/perl5/test.pl
src/interfaces/perl5/typemap
src/interfaces/python/Announce
src/interfaces/python/ChangeLog
src/interfaces/python/GNUmakefile
src/interfaces/python/PyGreSQL.spec
src/interfaces/python/README
src/interfaces/python/README.linux
src/interfaces/python/Setup.in.raw
src/interfaces/python/pg.py
src/interfaces/python/pgdb.py
src/interfaces/python/pgmodule.c
src/interfaces/python/setup.py
src/interfaces/python/tutorial/advanced.py
src/interfaces/python/tutorial/basics.py
src/interfaces/python/tutorial/func.py
src/interfaces/python/tutorial/syscat.py
src/interfaces/ssl/client.conf
src/interfaces/ssl/mkcert.sh
src/interfaces/ssl/pgkeygen.sh
src/interfaces/ssl/root.conf
src/interfaces/ssl/server.conf
src/makefiles/Makefile.aix
src/makefiles/Makefile.beos
src/makefiles/Makefile.bsdi
src/makefiles/Makefile.darwin
src/makefiles/Makefile.dgux
src/makefiles/Makefile.freebsd
src/makefiles/Makefile.hpux
src/makefiles/Makefile.irix5
src/makefiles/Makefile.linux
src/makefiles/Makefile.netbsd
src/makefiles/Makefile.openbsd
src/makefiles/Makefile.osf
src/makefiles/Makefile.qnx4
src/makefiles/Makefile.sco
src/makefiles/Makefile.solaris
src/makefiles/Makefile.sunos4
src/makefiles/Makefile.svr4
src/makefiles/Makefile.ultrix4
src/makefiles/Makefile.univel
src/makefiles/Makefile.unixware
src/makefiles/Makefile.win
src/nls-global.mk
src/pl/Makefile
src/pl/plperl/GNUmakefile
src/pl/plperl/README
src/pl/plperl/SPI.xs
src/pl/plperl/eloglvl.c
src/pl/plperl/eloglvl.h
src/pl/plperl/plperl.c
src/pl/plperl/ppport.h
src/pl/plpgsql/Makefile
src/pl/plpgsql/src/.cvsignore
src/pl/plpgsql/src/INSTALL
src/pl/plpgsql/src/Makefile
src/pl/plpgsql/src/gram.y
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/pl_exec.c
src/pl/plpgsql/src/pl_funcs.c
src/pl/plpgsql/src/pl_handler.c
src/pl/plpgsql/src/plpgsql.h
src/pl/plpgsql/src/scan.l
src/pl/plpgsql/test/README
src/pl/plpgsql/test/expected/tables.out
src/pl/plpgsql/test/expected/test.out
src/pl/plpgsql/test/expected/triggers.out
src/pl/plpgsql/test/expected/views.out
src/pl/plpgsql/test/runtest
src/pl/plpgsql/test/tables.sql
src/pl/plpgsql/test/test.sql
src/pl/plpgsql/test/triggers.sql
src/pl/plpgsql/test/views.sql
src/pl/plpython/Makefile
src/pl/plpython/README
src/pl/plpython/TODO
src/pl/plpython/error.expected
src/pl/plpython/feature.expected
src/pl/plpython/plpython.c
src/pl/plpython/plpython.h
src/pl/plpython/plpython_depopulate.sql
src/pl/plpython/plpython_deschema.sql
src/pl/plpython/plpython_drop.sql
src/pl/plpython/plpython_error.sql
src/pl/plpython/plpython_function.sql
src/pl/plpython/plpython_populate.sql
src/pl/plpython/plpython_schema.sql
src/pl/plpython/plpython_setof.sql
src/pl/plpython/plpython_test.sql
src/pl/plpython/test.sh
src/pl/tcl/Makefile
src/pl/tcl/license.terms
src/pl/tcl/modules/Makefile
src/pl/tcl/modules/README
src/pl/tcl/modules/pltcl_delmod.in
src/pl/tcl/modules/pltcl_listmod.in
src/pl/tcl/modules/pltcl_loadmod.in
src/pl/tcl/modules/unknown.pltcl
src/pl/tcl/pltcl.c
src/pl/tcl/test/README
src/pl/tcl/test/runtest
src/pl/tcl/test/test.expected
src/pl/tcl/test/test_queries.sql
src/pl/tcl/test/test_setup.sql
src/template/aix
src/template/beos
src/template/bsdi
src/template/darwin
src/template/dgux
src/template/freebsd
src/template/hpux
src/template/irix5
src/template/linux
src/template/netbsd
src/template/nextstep
src/template/openbsd
src/template/osf
src/template/qnx4
src/template/sco
src/template/solaris
src/template/sunos4
src/template/svr4
src/template/ultrix4
src/template/univel
src/template/unixware
src/template/win
src/test/Makefile
src/test/bench/Makefile
src/test/bench/WISC-README
src/test/bench/create.sh
src/test/bench/create.source
src/test/bench/perquery
src/test/bench/query01
src/test/bench/query02
src/test/bench/query03
src/test/bench/query04
src/test/bench/query05
src/test/bench/query06
src/test/bench/query07
src/test/bench/query08
src/test/bench/query09
src/test/bench/query10
src/test/bench/query11
src/test/bench/query12
src/test/bench/query13
src/test/bench/query14
src/test/bench/query15
src/test/bench/query16
src/test/bench/query17
src/test/bench/query18
src/test/bench/query19
src/test/bench/query20
src/test/bench/query21
src/test/bench/query22
src/test/bench/query23
src/test/bench/query24
src/test/bench/query25
src/test/bench/query26
src/test/bench/query27
src/test/bench/query28
src/test/bench/query29
src/test/bench/query30
src/test/bench/query31
src/test/bench/query32
src/test/bench/runwisc.sh
src/test/bench/wholebench.sh
src/test/examples/Makefile
src/test/examples/testlibpq.c
src/test/examples/testlibpq2.c
src/test/examples/testlibpq2.sql
src/test/examples/testlibpq3.c
src/test/examples/testlibpq3.sql
src/test/examples/testlibpq4.c
src/test/examples/testlo.c
src/test/locale/Makefile
src/test/locale/README
src/test/locale/de_DE.ISO8859-1/Makefile
src/test/locale/de_DE.ISO8859-1/README
src/test/locale/de_DE.ISO8859-1/expected/de-ctype.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-char.sql.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-select.sql.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-sort.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-text.sql.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-upper-char.sql.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-upper-text.sql.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-upper-varchar.sql.out
src/test/locale/de_DE.ISO8859-1/expected/test-de-varchar.sql.out
src/test/locale/de_DE.ISO8859-1/runall
src/test/locale/de_DE.ISO8859-1/test-de-select.sql.in
src/test/locale/de_DE.ISO8859-1/test-de-sort.in
src/test/locale/de_DE.ISO8859-1/test-de-upper.sql.in
src/test/locale/de_DE.ISO8859-1/test-de.sql.in
src/test/locale/gr_GR.ISO8859-7/Makefile
src/test/locale/gr_GR.ISO8859-7/README
src/test/locale/gr_GR.ISO8859-7/expected/gr-ctype.out
src/test/locale/gr_GR.ISO8859-7/expected/test-gr-char.sql.out
src/test/locale/gr_GR.ISO8859-7/expected/test-gr-select.sql.out
src/test/locale/gr_GR.ISO8859-7/expected/test-gr-sort.out
src/test/locale/gr_GR.ISO8859-7/expected/test-gr-text.sql.out
src/test/locale/gr_GR.ISO8859-7/expected/test-gr-varchar.sql.out
src/test/locale/gr_GR.ISO8859-7/runall
src/test/locale/gr_GR.ISO8859-7/test-gr-select.sql.in
src/test/locale/gr_GR.ISO8859-7/test-gr-sort.in
src/test/locale/gr_GR.ISO8859-7/test-gr.sql.in
src/test/locale/koi8-r/Makefile
src/test/locale/koi8-r/expected/koi8-ctype.out
src/test/locale/koi8-r/expected/test-koi8-char.sql.out
src/test/locale/koi8-r/expected/test-koi8-select.sql.out
src/test/locale/koi8-r/expected/test-koi8-sort.out
src/test/locale/koi8-r/expected/test-koi8-text.sql.out
src/test/locale/koi8-r/expected/test-koi8-varchar.sql.out
src/test/locale/koi8-r/runall
src/test/locale/koi8-r/test-koi8-select.sql.in
src/test/locale/koi8-r/test-koi8-sort.in
src/test/locale/koi8-r/test-koi8.sql.in
src/test/locale/koi8-to-win1251/Makefile
src/test/locale/koi8-to-win1251/README
src/test/locale/koi8-to-win1251/expected/test-koi8-char.sql.out
src/test/locale/koi8-to-win1251/expected/test-koi8-select.sql.out
src/test/locale/koi8-to-win1251/expected/test-koi8-sort.out
src/test/locale/koi8-to-win1251/expected/test-koi8-text.sql.out
src/test/locale/koi8-to-win1251/expected/test-koi8-varchar.sql.out
src/test/locale/koi8-to-win1251/runall
src/test/locale/koi8-to-win1251/test-koi8-select.sql.in
src/test/locale/koi8-to-win1251/test-koi8-sort.in
src/test/locale/koi8-to-win1251/test-koi8.sql.in
src/test/locale/sort-test.pl
src/test/locale/sort-test.py
src/test/locale/test-ctype.c
src/test/locale/test-pgsql-locale.c
src/test/mb/README
src/test/mb/expected/big5.out
src/test/mb/expected/euc_cn.out
src/test/mb/expected/euc_jp.out
src/test/mb/expected/euc_kr.out
src/test/mb/expected/euc_tw.out
src/test/mb/expected/mule_internal.out
src/test/mb/expected/sjis.out
src/test/mb/expected/unicode.out
src/test/mb/mbregress.sh
src/test/mb/sql/big5.sql
src/test/mb/sql/euc_cn.sql
src/test/mb/sql/euc_jp.sql
src/test/mb/sql/euc_kr.sql
src/test/mb/sql/euc_tw.sql
src/test/mb/sql/mule_internal.sql
src/test/mb/sql/sjis.sql
src/test/mb/sql/unicode.sql
src/test/performance/results/PgSQL.970926
src/test/performance/runtests.pl
src/test/performance/sqls/connection
src/test/performance/sqls/crtsimple
src/test/performance/sqls/crtsimpleidx
src/test/performance/sqls/drpsimple
src/test/performance/sqls/inssimple
src/test/performance/sqls/inssimple.data
src/test/performance/sqls/orbsimple
src/test/performance/sqls/slcsimple
src/test/performance/sqls/slcsimple.data
src/test/performance/sqls/vacuum
src/test/performance/start-pgsql.sh
src/test/regress/GNUmakefile
src/test/regress/Makefile
src/test/regress/README
src/test/regress/data/agg.data
src/test/regress/data/constrf.data
src/test/regress/data/constro.data
src/test/regress/data/dept.data
src/test/regress/data/desc.data
src/test/regress/data/emp.data
src/test/regress/data/hash.data
src/test/regress/data/onek.data
src/test/regress/data/person.data
src/test/regress/data/real_city.data
src/test/regress/data/rect.data
src/test/regress/data/streets.data
src/test/regress/data/stud_emp.data
src/test/regress/data/student.data
src/test/regress/data/tenk.data
src/test/regress/expected/abstime-solaris-1947.out
src/test/regress/expected/abstime.out
src/test/regress/expected/aggregates.out
src/test/regress/expected/alter_table.out
src/test/regress/expected/arrays.out
src/test/regress/expected/bit.out
src/test/regress/expected/boolean.out
src/test/regress/expected/box.out
src/test/regress/expected/btree_index.out
src/test/regress/expected/case.out
src/test/regress/expected/char.out
src/test/regress/expected/char_1.out
src/test/regress/expected/circle.out
src/test/regress/expected/comments.out
src/test/regress/expected/create_aggregate.out
src/test/regress/expected/create_index.out
src/test/regress/expected/create_misc.out
src/test/regress/expected/create_operator.out
src/test/regress/expected/create_table.out
src/test/regress/expected/create_type.out
src/test/regress/expected/create_view.out
src/test/regress/expected/date.out
src/test/regress/expected/domain.out
src/test/regress/expected/errors.out
src/test/regress/expected/euc_cn.out
src/test/regress/expected/euc_jp.out
src/test/regress/expected/euc_kr.out
src/test/regress/expected/euc_tw.out
src/test/regress/expected/float4-exp-three-digits.out
src/test/regress/expected/float4.out
src/test/regress/expected/float8-exp-three-digits.out
src/test/regress/expected/float8-fp-exception.out
src/test/regress/expected/float8-small-is-zero.out
src/test/regress/expected/float8.out
src/test/regress/expected/foreign_key.out
src/test/regress/expected/geometry-alpha-precision.out
src/test/regress/expected/geometry-bsdi-precision.out
src/test/regress/expected/geometry-i86-gnulibc.out
src/test/regress/expected/geometry-intel-beos.out
src/test/regress/expected/geometry-irix.out
src/test/regress/expected/geometry-positive-zeros-bsd.out
src/test/regress/expected/geometry-positive-zeros.out
src/test/regress/expected/geometry-powerpc-aix4.out
src/test/regress/expected/geometry-powerpc-darwin.out
src/test/regress/expected/geometry-powerpc-linux-gnulibc1.out
src/test/regress/expected/geometry-solaris-i386-pc.out
src/test/regress/expected/geometry-solaris-precision.out
src/test/regress/expected/geometry-uw7-cc.out
src/test/regress/expected/geometry-uw7-gcc.out
src/test/regress/expected/geometry.out
src/test/regress/expected/hash_index.out
src/test/regress/expected/horology-no-DST-before-1970.out
src/test/regress/expected/horology-solaris-1947.out
src/test/regress/expected/horology.out
src/test/regress/expected/inet.out
src/test/regress/expected/inherit.out
src/test/regress/expected/insert.out
src/test/regress/expected/int2.out
src/test/regress/expected/int4.out
src/test/regress/expected/int8-exp-three-digits.out
src/test/regress/expected/int8.out
src/test/regress/expected/interval.out
src/test/regress/expected/join.out
src/test/regress/expected/limit.out
src/test/regress/expected/lseg.out
src/test/regress/expected/mule_internal.out
src/test/regress/expected/name.out
src/test/regress/expected/numeric.out
src/test/regress/expected/numeric_big.out
src/test/regress/expected/numerology.out
src/test/regress/expected/oid.out
src/test/regress/expected/oidjoins.out
src/test/regress/expected/opr_sanity.out
src/test/regress/expected/path.out
src/test/regress/expected/plpgsql.out
src/test/regress/expected/point.out
src/test/regress/expected/polygon.out
src/test/regress/expected/portals.out
src/test/regress/expected/portals_p2.out
src/test/regress/expected/privileges.out
src/test/regress/expected/random.out
src/test/regress/expected/reltime.out
src/test/regress/expected/rules.out
src/test/regress/expected/sanity_check.out
src/test/regress/expected/select.out
src/test/regress/expected/select_distinct.out
src/test/regress/expected/select_distinct_on.out
src/test/regress/expected/select_having.out
src/test/regress/expected/select_having_1.out
src/test/regress/expected/select_implicit.out
src/test/regress/expected/select_implicit_1.out
src/test/regress/expected/select_into.out
src/test/regress/expected/select_views.out
src/test/regress/expected/select_views_1.out
src/test/regress/expected/sql_ascii.out
src/test/regress/expected/strings.out
src/test/regress/expected/subselect.out
src/test/regress/expected/temp.out
src/test/regress/expected/text.out
src/test/regress/expected/time.out
src/test/regress/expected/timestamp.out
src/test/regress/expected/timestamptz.out
src/test/regress/expected/timetz.out
src/test/regress/expected/tinterval-solaris-1947.out
src/test/regress/expected/tinterval.out
src/test/regress/expected/transactions.out
src/test/regress/expected/triggers.out
src/test/regress/expected/type_sanity.out
src/test/regress/expected/union.out
src/test/regress/expected/varchar.out
src/test/regress/expected/varchar_1.out
src/test/regress/input/constraints.source
src/test/regress/input/copy.source
src/test/regress/input/create_function_1.source
src/test/regress/input/create_function_2.source
src/test/regress/input/misc.source
src/test/regress/output/constraints.source
src/test/regress/output/copy.source
src/test/regress/output/create_function_1.source
src/test/regress/output/create_function_2.source
src/test/regress/output/misc.source
src/test/regress/parallel_schedule
src/test/regress/pg_regress.sh
src/test/regress/regress.c
src/test/regress/regressplans.sh
src/test/regress/resultmap
src/test/regress/serial_schedule
src/test/regress/sql/abstime.sql
src/test/regress/sql/aggregates.sql
src/test/regress/sql/alter_table.sql
src/test/regress/sql/arrays.sql
src/test/regress/sql/bit.sql
src/test/regress/sql/boolean.sql
src/test/regress/sql/box.sql
src/test/regress/sql/btree_index.sql
src/test/regress/sql/case.sql
src/test/regress/sql/char.sql
src/test/regress/sql/circle.sql
src/test/regress/sql/comments.sql
src/test/regress/sql/create_aggregate.sql
src/test/regress/sql/create_index.sql
src/test/regress/sql/create_misc.sql
src/test/regress/sql/create_operator.sql
src/test/regress/sql/create_table.sql
src/test/regress/sql/create_type.sql
src/test/regress/sql/create_view.sql
src/test/regress/sql/date.sql
src/test/regress/sql/domain.sql
src/test/regress/sql/drop.sql
src/test/regress/sql/errors.sql
src/test/regress/sql/euc_cn.sql
src/test/regress/sql/euc_jp.sql
src/test/regress/sql/euc_kr.sql
src/test/regress/sql/euc_tw.sql
src/test/regress/sql/float4.sql
src/test/regress/sql/float8.sql
src/test/regress/sql/foreign_key.sql
src/test/regress/sql/geometry.sql
src/test/regress/sql/hash_index.sql
src/test/regress/sql/horology.sql
src/test/regress/sql/inet.sql
src/test/regress/sql/inherit.sql
src/test/regress/sql/insert.sql
src/test/regress/sql/int2.sql
src/test/regress/sql/int4.sql
src/test/regress/sql/int8.sql
src/test/regress/sql/interval.sql
src/test/regress/sql/join.sql
src/test/regress/sql/limit.sql
src/test/regress/sql/lseg.sql
src/test/regress/sql/mule_internal.sql
src/test/regress/sql/name.sql
src/test/regress/sql/numeric.sql
src/test/regress/sql/numeric_big.sql
src/test/regress/sql/numerology.sql
src/test/regress/sql/oid.sql
src/test/regress/sql/oidjoins.sql
src/test/regress/sql/opr_sanity.sql
src/test/regress/sql/path.sql
src/test/regress/sql/plpgsql.sql
src/test/regress/sql/point.sql
src/test/regress/sql/polygon.sql
src/test/regress/sql/portals.sql
src/test/regress/sql/portals_p2.sql
src/test/regress/sql/privileges.sql
src/test/regress/sql/random.sql
src/test/regress/sql/reltime.sql
src/test/regress/sql/rules.sql
src/test/regress/sql/sanity_check.sql
src/test/regress/sql/select.sql
src/test/regress/sql/select_distinct.sql
src/test/regress/sql/select_distinct_on.sql
src/test/regress/sql/select_having.sql
src/test/regress/sql/select_implicit.sql
src/test/regress/sql/select_into.sql
src/test/regress/sql/select_views.sql
src/test/regress/sql/sql_ascii.sql
src/test/regress/sql/strings.sql
src/test/regress/sql/subselect.sql
src/test/regress/sql/temp.sql
src/test/regress/sql/text.sql
src/test/regress/sql/time.sql
src/test/regress/sql/timestamp.sql
src/test/regress/sql/timestamptz.sql
src/test/regress/sql/timetz.sql
src/test/regress/sql/tinterval.sql
src/test/regress/sql/transactions.sql
src/test/regress/sql/triggers.sql
src/test/regress/sql/type_sanity.sql
src/test/regress/sql/union.sql
src/test/regress/sql/varchar.sql
src/tools/RELEASE_CHANGES
src/tools/backend/README
src/tools/backend/backend_dirs.html
src/tools/backend/flow.fig
src/tools/backend/flow.gif
src/tools/backend/index.html
src/tools/ccsym
src/tools/copyright
src/tools/entab/Makefile
src/tools/entab/entab.c
src/tools/entab/entab.man
src/tools/entab/halt.c
src/tools/find_badmacros
src/tools/find_static
src/tools/find_typedef
src/tools/make_ctags
src/tools/make_diff/README
src/tools/make_diff/cporig
src/tools/make_diff/difforig
src/tools/make_diff/rmorig
src/tools/make_etags
src/tools/make_keywords
src/tools/make_mkid
src/tools/pgcvslog
src/tools/pginclude/README
src/tools/pginclude/pgcompinclude
src/tools/pginclude/pgdefine
src/tools/pginclude/pgfixinclude
src/tools/pginclude/pgrminclude
src/tools/pgindent/README
src/tools/pgindent/indent.bsd.patch
src/tools/pgindent/pgcppindent
src/tools/pgindent/pgindent
src/tools/pgindent/pgjindent
src/tutorial/Makefile
src/tutorial/README
src/tutorial/advanced.source
src/tutorial/basics.source
src/tutorial/beard.c
src/tutorial/complex.c
src/tutorial/complex.source
src/tutorial/funcs.c
src/tutorial/funcs.source
src/tutorial/funcs_new.c
src/tutorial/syscat.source
src/utils/Makefile
src/utils/README
src/utils/dllinit.c
src/utils/getopt.c
src/utils/strdup.c
src/win32.mak
Diffstat (limited to 'contrib/oracle/Ora2Pg.pm')
-rw-r--r-- | contrib/oracle/Ora2Pg.pm | 1931 |
1 files changed, 0 insertions, 1931 deletions
diff --git a/contrib/oracle/Ora2Pg.pm b/contrib/oracle/Ora2Pg.pm deleted file mode 100644 index e2dabfc75b8..00000000000 --- a/contrib/oracle/Ora2Pg.pm +++ /dev/null @@ -1,1931 +0,0 @@ -package Ora2Pg; -#------------------------------------------------------------------------------ -# Project : Oracle to PostgreSQL database schema converter -# Name : Ora2Pg.pm -# Language : 5.006 built for i686-linux -# OS : linux RedHat 6.2 kernel 2.2.14-5 -# Authors : Gilles Darold, gilles@darold.net -# Copyright: Copyright (c) 2000 : Gilles Darold - All rights reserved - -# Function : Main module used to export Oracle database schema to PostgreSQL -# Usage : See documentation in this file with perldoc. -#------------------------------------------------------------------------------ -# This program is free software; you can redistribute it and/or modify it under -# the same terms as Perl itself. -#------------------------------------------------------------------------------ - -#use strict; -use vars qw($VERSION $PSQL); -use Carp qw(confess); -use DBI; - -$VERSION = "1.8"; -$PSQL = "psql"; - -=head1 NAME - -Ora2Pg - Oracle to PostgreSQL database schema converter - - -=head1 SYNOPSIS - - BEGIN { - $ENV{ORACLE_HOME} = '/usr/local/oracle/oracle816'; - } - - use strict; - - use Ora2Pg; - - # Init the database connection - my $dbsrc = 'dbi:Oracle:host=testdb.samse.fr;sid=TEST;port=1521'; - my $dbuser = 'system'; - my $dbpwd = 'manager'; - - # Create an instance of the Ora2Pg perl module - my $schema = new Ora2Pg ( - datasource => $dbsrc, # Database DBD datasource - user => $dbuser, # Database user - password => $dbpwd, # Database password - { - PrintError => 0, - RaiseError => 1, - AutoCommit => 0 - } - ); - - # Create the POSTGRESQL representation of all objects in the database - $schema->export_schema("output.sql"); - - exit(0); - -or if you only want to extract some tables: - - # Create an instance of the Ora2Pg perl module - my @tables = ('tab1', 'tab2', 'tab3'); - my $schema = new Ora2Pg ( - datasource => $dbsrc, # Database DBD datasource - user => $dbuser, # Database user - password => $dbpwd, # Database password - tables => \@tables, - or # Tables to extract - tables => [('tab1','tab2')], - debug => 1 # To show somethings when running - ); - -or if you only want to extract the 10 first tables: - - # Create an instance of the Ora2Pg perl module - my $schema = new Ora2Pg ( - datasource => $dbsrc, # Database DBD datasource - user => $dbuser, # Database user - password => $dbpwd, # Database password - max => 10 # 10 first tables to extract - ); - -or if you only want to extract tables 10 to 20: - - # Create an instance of the Ora2Pg perl module - my $schema = new Ora2Pg ( - datasource => $dbsrc, # Database DBD datasource - user => $dbuser, # Database user - password => $dbpwd, # Database password - min => 10, # Begin extraction at indice 10 - max => 20 # End extraction at indice 20 - ); - -To choose a particular Oracle schema to export just set the following option -to your schema name: - - schema => 'APPS' - -This schema definition can also be needed when you want to export data. If export -failed and complain that the table doesn't exists use this to prefix the table name -by the schema name. - -To know at which indices tables can be found during extraction use the option: - - showtableid => 1 - -To extract all views set the type option as follow: - - type => 'VIEW' - -To extract all grants set the type option as follow: - - type => 'GRANT' - -To extract all sequences set the type option as follow: - - type => 'SEQUENCE' - -To extract all triggers set the type option as follow: - - type => 'TRIGGER' - -To extract all functions set the type option as follow: - - type => 'FUNCTION' - -To extract all procedures set the type option as follow: - - type => 'PROCEDURE' - -To extract all packages and body set the type option as follow: - - type => 'PACKAGE' - -Default is table extraction - - type => 'TABLE' - -To extract all data from table extraction as INSERT statement use: - - type => 'DATA' - -To extract all data from table extraction as COPY statement use: - - type => 'COPY' - -and data_limit => n to specify the max tuples to return. If you set -this options to 0 or nothing, no limitation are used. Additional option -'table', 'min' and 'max' can also be used. - -When use of COPY or DATA you can export data by calling method: - -$schema->export_data("output.sql"); - -Data are dumped to the given filename or to STDOUT with no argument. -You can also send these data directly to a PostgreSQL backend using - the following method: - -$schema->send_to_pgdb($destdatasrc,$destuser,$destpasswd); - -In this case you must call export_data() without argument after the -call to method send_to_pgdb(). - -If you set type to COPY and you want to dump data directly to a PG database, -you must call method send_to_pgdb but data will not be sent via DBD::Pg but -they will be load to the database using the psql command. Calling this method -is istill required to be able to extract database name, hostname and port -information. Edit the $PSQL variable to match the path of your psql -command (nothing to edit if psql is in your path). - - -=head1 DESCRIPTION - -Ora2Pg is a perl OO module used to export an Oracle database schema -to a PostgreSQL compatible schema. - -It simply connect to your Oracle database, extract its structure and -generate a SQL script that you can load into your PostgreSQL database. - -I'm not a Oracle DBA so I don't really know something about its internal -structure so you may find some incorrect things. Please tell me what is -wrong and what can be better. - -It currently dump the database schema (tables, views, sequences, indexes, grants), -with primary, unique and foreign keys into PostgreSQL syntax without editing the -SQL code generated. - -It now can dump Oracle data into PostgreSQL DB as online process. You can choose -what columns can be exported for each table. - -Functions, procedures and triggers PL/SQL code generated must be reviewed to match -the PostgreSQL syntax. Some usefull recommandation on porting Oracle to PostgreSQL -can be found at http://techdocs.postgresql.org/ under the "Converting from other -Databases to PostgreSQL" Oracle part. I just notice one thing more is that the -trunc() function in Oracle is the same for number or date so be carefull when -porting to PostgreSQL to use trunc() for number and date_trunc() for date. - - -=head1 ABSTRACT - -The goal of the Ora2Pg perl module is to cover all part needed to export -an Oracle database to a PostgreSQL database without other thing that provide -the connection parameters to the Oracle database. - -Features must include: - - - Database schema export (tables, views, sequences, indexes), - with unique, primary and foreign key. - - Grants/privileges export by user and group. - - Table selection (by name and max table) export. - - Predefined functions/triggers/procedures/packages export. - - Data export. - - Sql query converter (todo) - -My knowledge regarding database is really poor especially for Oracle -so contribution is welcome. - - -=head1 REQUIREMENT - -You just need the DBI, DBD::Pg and DBD::Oracle perl module to be installed - - - -=head1 PUBLIC METHODS - -=head2 new HASH_OPTIONS - -Creates a new Ora2Pg object. - -Supported options are: - - - datasource : DBD datasource (required) - - user : DBD user (optional with public access) - - password : DBD password (optional with public access) - - schema : Oracle internal schema to extract - - type : Type of data to extract, can be TABLE,VIEW,GRANT,SEQUENCE, - TRIGGER,FUNCTION,PROCEDURE,DATA,COPY,PACKAGE - - debug : Print the current state of the parsing - - tables : Extract only the given tables (arrayref) - - showtableid : Display only the table indice during extraction - - min : Indice to begin extraction. Default to 0 - - max : Indice to end extraction. Default to 0 mean no limits - - data_limit : Number max of tuples to return during data extraction (default 10) - -Attempt that this list should grow a little more because all initialization is -done by this way. - -=cut - -sub new -{ - my ($class, %options) = @_; - - # This create an OO perl object - my $self = {}; - bless ($self, $class); - - # Initialize this object - $self->_init(%options); - - # Return the instance - return($self); -} - - -=head2 export_data FILENAME - -Print SQL data output to a filename or -to STDOUT if no file is given. - -Must be used only if type option is set to DATA or COPY -=cut - -sub export_data -{ - my ($self, $outfile) = @_; - - $self->_get_sql_data($outfile); -} - - -=head2 export_sql FILENAME - -Print SQL conversion output to a filename or -simply return these data if no file is given. - -=cut - -sub export_schema -{ - my ($self, $outfile) = @_; - - if ($outfile) { - # Send output to the given file - open(FILE,">$outfile") or die "Can't open $outfile: $!"; - print FILE $self->_get_sql_data(); - close FILE; - return; - } - - # Return data as string - return $self->_get_sql_data(); - -} - - -=head2 send_to_pgdb DEST_DATASRC DEST_USER DEST_PASSWD - -Open a DB handle to a PostgreSQL database - -=cut - -sub send_to_pgdb -{ - my ($self, $destsrc, $destuser, $destpasswd) = @_; - - # Connect the database - $self->{dbhdest} = DBI->connect($destsrc, $destuser, $destpasswd); - - $destsrc =~ /dbname=([^;]*)/; - $self->{dbname} = $1; - $destsrc =~ /host=([^;]*)/; - $self->{dbhost} = $1; - $self->{dbhost} = 'localhost' if (!$self->{dbhost}); - $destsrc =~ /port=([^;]*)/; - $self->{dbport} = $1; - $self->{dbport} = 5432 if (!$self->{dbport}); - $self->{dbuser} = $destuser; - - # Check for connection failure - if (!$self->{dbhdest}) { - die "Error : $DBI::err ... $DBI::errstr\n"; - } - -} - - -=head2 modify_struct TABLE_NAME ARRAYOF_FIELDNAME - -Modify a table structure during export. Only given fieldname -will be exported. - -=cut - -sub modify_struct -{ - my ($self, $table, @fields) = @_; - - map { $_ = lc($_) } @fields; - $table = lc($table); - - push(@{$self->{modify}{$table}}, @fields); - -} - - - - -#### Private subroutines #### - -=head1 PRIVATE METHODS - -=head2 _init HASH_OPTIONS - -Initialize a Ora2Pg object instance with a connexion to the -Oracle database. - -=cut - -sub _init -{ - my ($self, %options) = @_; - - # Connect the database - $self->{dbh} = DBI->connect($options{datasource}, $options{user}, $options{password}); - - # Check for connection failure - if (!$self->{dbh}) { - die "Error : $DBI::err ... $DBI::errstr\n"; - } - - # Save the DB connection - $self->{datasource} = $options{datasource}; - $self->{user} = $options{user}; - $self->{password} = $options{password}; - - $self->{debug} = 0; - $self->{debug} = 1 if ($options{debug}); - - $self->{limited} = (); - $self->{limited} = $options{tables} if ($options{tables}); - - $self->{schema} = ''; - $self->{schema} = $options{schema} if ($options{schema}); - - $self->{min} = 0; - $self->{min} = $options{min} if ($options{min}); - - $self->{max} = 0; - $self->{max} = $options{max} if ($options{max}); - - $self->{showtableid} = 0; - $self->{showtableid} = $options{showtableid} if ($options{showtableid}); - - $self->{dbh}->{LongReadLen} = 0; - #$self->{dbh}->{LongTruncOk} = 1; - - $self->{data_limit} = 10; - $self->{data_current} = 0; - $self->{data_limit} = $options{data_limit} if (exists $options{data_limit}); - - # Retreive all table informations - if (!exists $options{type} || ($options{type} eq 'TABLE') || ($options{type} eq 'DATA') || ($options{type} eq 'COPY')) { - $self->_tables(); - } elsif ($options{type} eq 'VIEW') { - $self->{dbh}->{LongReadLen} = 100000; - $self->_views(); - } elsif ($options{type} eq 'GRANT') { - $self->_grants(); - } elsif ($options{type} eq 'SEQUENCE') { - $self->_sequences(); - } elsif ($options{type} eq 'TRIGGER') { - $self->{dbh}->{LongReadLen} = 100000; - $self->_triggers(); - } elsif (($options{type} eq 'FUNCTION') || ($options{type} eq 'PROCEDURE')) { - $self->{dbh}->{LongReadLen} = 100000; - $self->_functions($options{type}); - } elsif ($options{type} eq 'PACKAGE') { - $self->{dbh}->{LongReadLen} = 100000; - $self->_packages(); - } else { - die "type option must be TABLE, VIEW, GRANT, SEQUENCE, TRIGGER, PACKAGE, FUNCTION or PROCEDURE\n"; - } - $self->{type} = $options{type}; - - # Disconnect from the database - $self->{dbh}->disconnect() if ($self->{dbh}); - -} - - -# We provide a DESTROY method so that the autoloader doesn't -# bother trying to find it. We also close the DB connexion -sub DESTROY { } - - -=head2 _grants - -This function is used to retrieve all privilege information. - -It extract all Oracle's ROLES to convert them as Postgres groups -and search all users associated to these roles. - -Set the main hash $self->{groups}. -Set the main hash $self->{grantss}. - -=cut - -sub _grants -{ - my ($self) = @_; - -print STDERR "Retrieving groups/users information...\n" if ($self->{debug}); - $self->{users} = $self->_get_users(); - $self->{groups} = $self->_get_roles(); - $self->{grants} = $self->_get_all_grants(); - -} - - -=head2 _sequences - -This function is used to retrieve all sequences information. - -Set the main hash $self->{sequences}. - -=cut - -sub _sequences -{ - my ($self) = @_; - -print STDERR "Retrieving sequences information...\n" if ($self->{debug}); - $self->{sequences} = $self->_get_sequences(); - -} - - -=head2 _triggers - -This function is used to retrieve all triggers information. - -Set the main hash $self->{triggers}. - -=cut - -sub _triggers -{ - my ($self) = @_; - -print STDERR "Retrieving triggers information...\n" if ($self->{debug}); - $self->{triggers} = $self->_get_triggers(); - -} - - -=head2 _functions - -This function is used to retrieve all functions information. - -Set the main hash $self->{functions}. - -=cut - -sub _functions -{ - my ($self, $type) = @_; - -print STDERR "Retrieving functions information...\n" if ($self->{debug}); - $self->{functions} = $self->_get_functions($type); - -} - - -=head2 _packages - -This function is used to retrieve all packages information. - -Set the main hash $self->{packages}. - -=cut - -sub _packages -{ - my ($self) = @_; - -print STDERR "Retrieving packages information...\n" if ($self->{debug}); - $self->{packages} = $self->_get_packages(); - -} - - -=head2 _tables - -This function is used to retrieve all table information. - -Set the main hash of the database structure $self->{tables}. -Keys are the names of all tables retrieved from the current -database. Each table information compose an array associated -to the table_info key as array reference. In other way: - - $self->{tables}{$class_name}{table_info} = [(OWNER,TYPE)]; - -DBI TYPE can be TABLE, VIEW, SYSTEM TABLE, GLOBAL TEMPORARY, LOCAL TEMPORARY, -ALIAS, SYNONYM or a data source specific type identifier. This only extract -TABLE type. - -It also get the following informations in the DBI object to affect the -main hash of the database structure : - - $self->{tables}{$class_name}{field_name} = $sth->{NAME}; - $self->{tables}{$class_name}{field_type} = $sth->{TYPE}; - -It also call these other private subroutine to affect the main hash -of the database structure : - - @{$self->{tables}{$class_name}{column_info}} = $self->_column_info($class_name); - @{$self->{tables}{$class_name}{primary_key}} = $self->_primary_key($class_name); - @{$self->{tables}{$class_name}{unique_key}} = $self->_unique_key($class_name); - @{$self->{tables}{$class_name}{foreign_key}} = $self->_foreign_key($class_name); - -=cut - -sub _tables -{ - my ($self) = @_; - - # Get all tables information given by the DBI method table_info -print STDERR "Retrieving table information...\n" if ($self->{debug}); - - my $sth = $self->_table_info or die $self->{dbh}->errstr; - my @tables_infos = $sth->fetchall_arrayref(); - - if ($self->{showtableid}) { - foreach my $table (@tables_infos) { - for (my $i=0; $i<=$#{$table};$i++) { - print STDERR "[", $i+1, "] ${$table}[$i]->[2]\n"; - } - } - return; - } -my @done = (); - foreach my $table (@tables_infos) { - # Set the table information for each class found - my $i = 1; -print STDERR "Min table dump set to $self->{min}.\n" if ($self->{debug} && $self->{min}); -print STDERR "Max table dump set to $self->{max}.\n" if ($self->{debug} && $self->{max}); - foreach my $t (@$table) { - # Jump to desired extraction -if (grep(/^${@$t}[2]$/, @done)) { -print STDERR "Duplicate entry found: ${@$t}[0] - ${@$t}[1] - ${@$t}[2]\n"; -} else { -push(@done, ${@$t}[2]); -} - $i++, next if ($self->{min} && ($i < $self->{min})); - last if ($self->{max} && ($i > $self->{max})); - next if (($#{$self->{limited}} >= 0) && !grep(/^${@$t}[2]$/, @{$self->{limited}})); -print STDERR "[$i] " if ($self->{max} || $self->{min}); -print STDERR "Scanning ${@$t}[2] (@$t)...\n" if ($self->{debug}); - - # Check of uniqueness of the table - if (exists $self->{tables}{${@$t}[2]}{field_name}) { - print STDERR "Warning duplicate table ${@$t}[2], SYNONYME ? Skipped.\n"; - next; - } - - # usually OWNER,TYPE. QUALIFIER is omitted until I know what to do with that - $self->{tables}{${@$t}[2]}{table_info} = [(${@$t}[1],${@$t}[3])]; - # Set the fields information - my $sth = $self->{dbh}->prepare("SELECT * FROM ${@$t}[1].${@$t}[2] WHERE 1=0"); - if (!defined($sth)) { - warn "Can't prepare statement: $DBI::errstr"; - next; - } - $sth->execute; - if ($sth->err) { - warn "Can't execute statement: $DBI::errstr"; - next; - } - $self->{tables}{${@$t}[2]}{field_name} = $sth->{NAME}; - $self->{tables}{${@$t}[2]}{field_type} = $sth->{TYPE}; - - @{$self->{tables}{${@$t}[2]}{column_info}} = $self->_column_info(${@$t}[2]); - @{$self->{tables}{${@$t}[2]}{primary_key}} = $self->_primary_key(${@$t}[2]); - @{$self->{tables}{${@$t}[2]}{unique_key}} = $self->_unique_key(${@$t}[2]); - ($self->{tables}{${@$t}[2]}{foreign_link}, $self->{tables}{${@$t}[2]}{foreign_key}) = $self->_foreign_key(${@$t}[2]); - ($self->{tables}{${@$t}[2]}{uniqueness}, $self->{tables}{${@$t}[2]}{indexes}) = $self->_get_indexes(${@$t}[2]); - $i++; - } - } - -} - - -=head2 _views - -This function is used to retrieve all views information. - -Set the main hash of the views definition $self->{views}. -Keys are the names of all views retrieved from the current -database values are the text definition of the views. - -It then set the main hash as follow: - - # Definition of the view - $self->{views}{$table}{text} = $view_infos{$table}; - -=cut - -sub _views -{ - my ($self) = @_; - - # Get all views information -print STDERR "Retrieving views information...\n" if ($self->{debug}); - my %view_infos = $self->_get_views(); - - if ($self->{showtableid}) { - my $i = 1; - foreach my $table (sort keys %view_infos) { - print STDERR "[$i] $table\n"; - $i++; - } - return; - } - -print STDERR "Min view dump set to $self->{min}.\n" if ($self->{debug} && $self->{min}); -print STDERR "Max view dump set to $self->{max}.\n" if ($self->{debug} && $self->{max}); - my $i = 1; - foreach my $table (sort keys %view_infos) { - # Set the table information for each class found - # Jump to desired extraction - next if ($table =~ /\$/); - $i++, next if ($self->{min} && ($i < $self->{min})); - last if ($self->{max} && ($i > $self->{max})); - next if (($#{$self->{limited}} >= 0) && !grep(/^$table$/, @{$self->{limited}})); -print STDERR "[$i] " if ($self->{max} || $self->{min}); -print STDERR "Scanning $table...\n" if ($self->{debug}); - $self->{views}{$table}{text} = $view_infos{$table}; - ## Added JFR : 3/3/02 : Retrieve also aliases from views - $self->{views}{$table}{alias}= $view_infos{$table}{alias}; - $i++; - } - -} - - -=head2 _get_sql_data - -Returns a string containing the entire SQL Schema definition compatible with PostgreSQL - -=cut - -sub _get_sql_data -{ - my ($self, $outfile) = @_; - - my $sql_header = "-- Generated by Ora2Pg, the Oracle database Schema converter, version $VERSION\n"; - $sql_header .= "-- Copyright 2000 Gilles DAROLD. All rights reserved.\n"; - $sql_header .= "--\n"; - $sql_header .= "-- This program is free software; you can redistribute it and/or modify it under\n"; - $sql_header .= "-- the same terms as Perl itself.\n\n"; - $sql_header .= "BEGIN TRANSACTION;\n\n"; - - my $sql_output = ""; - - # Process view only - if ($self->{type} eq 'VIEW') { -print STDERR "Add views definition...\n" if ($self->{debug}); - foreach my $view (sort keys %{$self->{views}}) { - if (!@{$self->{views}{$view}{alias}}) { - $sql_output .= "CREATE VIEW \"\L$view\E\" AS $self->{views}{$view}{text};\n"; - } else { - $sql_output .= "CREATE VIEW \"\L$view\E\" ("; - my $count = 0; - foreach my $d (@{$self->{views}{$view}{alias}}) { - if ($count == 0) { - $count = 1; - } else { - $sql_output .= ", " - } - $sql_output .= "$d->[0]"; - } - $sql_output .= ") AS $self->{views}{$view}{text};\n"; - } - } - - if (!$sql_output) { - $sql_output = "-- Nothing found of type $self->{type}\n"; - } else { - $sql_output .= "\n"; - } - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; - } - - # Process grant only - if ($self->{type} eq 'GRANT') { -print STDERR "Add groups/users privileges...\n" if ($self->{debug}); - # Add groups definition - my $groups = ''; - my @users = (); - my @grps = (); - foreach (@{$self->{users}}) { - next if (exists $self->{groups}{"$_"}); - next if ($self->{schema} && ($_ ne $self->{schema})); - $sql_header .= "CREATE USER $_ WITH PASSWORD 'secret';\n"; - } - foreach my $role (sort keys %{$self->{groups}}) { - push(@grps, $role); - $groups .= "CREATE GROUP $role WITH USER " . join(',', @{$self->{groups}{$role}}) . ";\n"; - } - $sql_header .= "\n" . $groups . "\n"; - - # Add privilege definition - my $grants = ''; - foreach my $table (sort keys %{$self->{grants}}) { - $grants .= "REVOKE ALL ON $table FROM PUBLIC;\n"; - foreach my $priv (sort keys %{$self->{grants}{$table}}) { - my $usr = ''; - my $grp = ''; - foreach my $user (@{$self->{grants}{$table}{$priv}}) { - if (grep(/^$user$/, @grps)) { - $grp .= "$user,"; - } else { - $usr .= "$user,"; - } - } - $grp =~ s/,$//; - $usr =~ s/,$//; - if ($grp) { - $grants .= "GRANT $priv ON $table TO GROUP $grp;\n"; - } else { - $grants .= "GRANT $priv ON $table TO $usr;\n"; - } - } - } - - if (!$grants) { - $$grants = "-- Nothing found of type $self->{type}\n"; - } - - $sql_output .= "\n" . $grants . "\n"; - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; - } - - # Process sequences only - if ($self->{type} eq 'SEQUENCE') { -print STDERR "Add sequences definition...\n" if ($self->{debug}); - foreach my $seq (@{$self->{sequences}}) { - my $cache = 1; - $cache = $seq->[5] if ($seq->[5]); - my $cycle = ''; - $cycle = ' CYCLE' if ($seq->[6] eq 'Y'); - if ($seq->[2] > 2147483646) { - $seq->[2] = 2147483646; - } - if ($seq->[1] < -2147483647) { - $seq->[1] = -2147483647; - } - $sql_output .= "CREATE SEQUENCE \L$seq->[0]\E INCREMENT $seq->[3] MINVALUE $seq->[1] MAXVALUE $seq->[2] START $seq->[4] CACHE $cache$cycle;\n"; - } - - if (!$sql_output) { - $sql_output = "-- Nothing found of type $self->{type}\n"; - } - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; - } - - # Process triggers only. PL/SQL code is pre-converted to PL/PGSQL following - # the recommendation of Roberto Mello, see http://techdocs.postgresql.org/ - # Oracle's PL/SQL to PostgreSQL PL/pgSQL HOWTO - if ($self->{type} eq 'TRIGGER') { -print STDERR "Add triggers definition...\n" if ($self->{debug}); - foreach my $trig (@{$self->{triggers}}) { - $trig->[1] =~ s/ EACH ROW//; - chop($trig->[4]); - chomp($trig->[4]); - # Check if it's a pg rule - if ($trig->[1] =~ /INSTEAD OF/) { - $sql_output .= "CREATE RULE \L$trig->[0]\E AS\n\tON \L$trig->[3]\E\n\tDO INSTEAD\n(\n\t$trig->[4]\n);\n\n"; - } else { - - #-------------------------------------------- - # PL/SQL to PL/PGSQL code conversion - #-------------------------------------------- - # Change NVL to COALESCE - #$trig->[4] =~ s/NVL\(/coalesce(/igs; - # Change trunc() to date_trunc('day', field) - # Trunc is replaced with date_trunc if we find date in the name of the value - # because Oracle have the same trunc function on number and date type :-((( - #$trig->[4] =~ s/trunc\(([^\)]*date[^\)]*)\)/date_trunc('day', $1)/igs; - # Change SYSDATE to 'now' - #$trig->[4] =~ s/SYSDATE/CURRENT_TIMESTAMP/igs; - # Change nextval on sequence - # Oracle's sequence grammar is sequence_name.nextval. - # Postgres's sequence grammar is nextval('sequence_name'). - #$trig->[4] =~ s/(\w+)\.nextval/nextval('$1')/isg; - # Escaping Single Quotes - #$trig->[4] =~ s/'/''/sg; - - $sql_output .= "CREATE FUNCTION pg_fct_\L$trig->[0]\E () RETURNS OPAQUE AS '\n$trig->[4]\n' LANGUAGE 'plpgsql'\n\n"; - $sql_output .= "CREATE TRIGGER \L$trig->[0]\E\n\t$trig->[1] $trig->[2] ON \L$trig->[3]\E FOR EACH ROW\n\tEXECUTE PROCEDURE pg_fct_\L$trig->[0]\E();\n\n"; - } - } - - if (!$sql_output) { - $sql_output = "-- Nothing found of type $self->{type}\n"; - } - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; - } - - # Process functions only - if (($self->{type} eq 'FUNCTION') || ($self->{type} eq 'PROCEDURE')) { -print STDERR "Add functions definition...\n" if ($self->{debug}); - foreach my $fct (sort keys %{$self->{functions}}) { - my @tmp = (); - if ($self->{functions}{$fct} =~ /^[\s\t]*function/is) { - #$self->{functions}{$fct} =~ /function[\s\n\t]*$fct[\s\n\t]*\(([^\)]*)\)/is; - $self->{functions}{$fct} =~ /function[\s\n\t]*$fct[\s\n\t]*\(([^\)]*)\)[\s\n\t]*is/is; - @tmp = split(/\n/, $1); - } else { - #$self->{functions}{$fct} =~ /procedure[\s\n\t]*$fct[\s\n\t]*\(([^\)]*)\)/is; - $self->{functions}{$fct} =~ /procedure[\s\n\t]*$fct[\s\n\t]*\(([^\)]*)\)[\s\n\t]*is\W/is; - @tmp = split(/\n/, $1); - } - my @argu = split(/,/, join(' ', @tmp)); - map { s/^.* in //is } @argu; - map { s/^.* out //is } @argu; - map { $_ = $self->_sql_type(uc($_)) } @argu; - $self->{functions}{$fct} =~ /return ([^\s]*) is/is; - $self->{functions}{$fct} = "-- Oracle function declaration, please edit to match PostgreSQL syntax.\n$self->{functions}{$fct}"; - $sql_output .= "-- PostgreSQL possible function declaration, please edit to match your needs.\nCREATE FUNCTION \L$fct\E(" . join(',', @argu) . ") RETURNS " . $self->_sql_type(uc($1)) . " AS '\n$self->{functions}{$fct}\n' LANGUAGE 'sql'\n\n"; - } - - if (!$sql_output) { - $sql_output = "-- Nothing found of type $self->{type}\n"; - } - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; - } - - # Process functions only - if ($self->{type} eq 'PACKAGE') { -print STDERR "Add packages definition...\n" if ($self->{debug}); - foreach my $pkg (sort keys %{$self->{packages}}) { - $sql_output .= "-- Oracle package '$pkg' declaration, please edit to match PostgreSQL syntax.\n"; - $sql_output .= "$self->{packages}{$pkg}\n"; - $sql_output .= "-- End of Oracle package '$pkg' declaration\n\n"; - } - - if (!$sql_output) { - $sql_output = "-- Nothing found of type $self->{type}\n"; - } - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; - } - - - - # Extract data only - if (($self->{type} eq 'DATA') || ($self->{type} eq 'COPY')) { - # Connect the database - $self->{dbh} = DBI->connect($self->{datasource}, $self->{user}, $self->{password}); - # Check for connection failure - if (!$self->{dbh}) { - die "Error : $DBI::err ... $DBI::errstr\n"; - } - - if (!$self->{dbhdest}) { - if ($outfile) { - open(FILE,">$outfile") or die "Can't open $outfile: $!"; - print FILE $sql_header; - } else { - print $sql_header; - } - } else { - if ($self->{type} eq 'COPY') { - open(DBH, "| $PSQL -h $self->{dbhost} -p $self->{dbport} -d $self->{dbname}") or die "Can't open $PSQL command, $!\n"; - } - } - - foreach my $table (keys %{$self->{tables}}) { -print STDERR "Dumping table $table...\n" if ($self->{debug}); - my @tt = (); - my @nn = (); - my $s_out = "INSERT INTO \"\L$table\E\" ("; - if ($self->{type} eq 'COPY') { - $s_out = "COPY \"\L$table\E\" FROM stdin;\n"; - } - - foreach my $i ( 0 .. $#{$self->{tables}{$table}{field_name}} ) { - my $fieldname = ${$self->{tables}{$table}{field_name}}[$i]; - if (exists $self->{modify}{"\L$table\E"}) { - next if (!grep(/\L$fieldname\E/, @{$self->{modify}{"\L$table\E"}})); - } - foreach my $f (@{$self->{tables}{$table}{column_info}}) { - next if (${$f}[0] ne "$fieldname"); - my $type = $self->_sql_type(${$f}[1], ${$f}[2], ${$f}[5], ${$f}[6]); - $type = "${$f}[1], ${$f}[2]" if (!$type); - push(@tt, $type); - push(@nn, ${$f}[0]); - if ($self->{type} ne 'COPY') { - $s_out .= "\"\L${$f}[0]\E\","; - } - last; - } - } - - if ($self->{type} ne 'COPY') { - $s_out =~ s/,$//; - $s_out .= ") VALUES ("; - } - # Extract all data from the current table - $self->{data_current} = 0; - $self->{data_end} = 0; - while ( !$self->{data_end} ) { - my $sth = $self->_get_data($table, \@nn, \@tt); - $self->{data_end} = 1 if (!$self->{data_limit}); - my $count = 0; - my $sql = ''; - if ($self->{type} eq 'COPY') { - if ($self->{dbhdest}) { - $sql = $s_out; - } else { - if ($outfile) { - print FILE $s_out; - } else { - print $s_out; - } - } - } - while (my $row = $sth->fetch) { - if ($self->{type} ne 'COPY') { - if ($self->{dbhdest}) { - $sql .= $s_out; - } else { - if ($outfile) { - print FILE $s_out; - } else { - print $s_out; - } - } - } - for (my $i = 0; $i <= $#{$row}; $i++) { - if ($self->{type} ne 'COPY') { - if ($tt[$i] =~ /(char|date|time|text)/) { - $row->[$i] =~ s/'/''/gs; - if ($row->[$i]) { - $row->[$i] = "'$row->[$i]'"; - } else { - $row->[$i] = 'NULL'; - } - if ($self->{dbhdest}) { - $sql .= $row->[$i]; - } else { - if ($outfile) { - print FILE $row->[$i]; - } else { - print $row->[$i]; - } - } - } else { - if (!$row->[$i]) { - $row->[$i] = 'NULL'; - } - if ($self->{dbhdest}) { - $sql .= $row->[$i]; - } else { - if ($outfile) { - print FILE $row->[$i]; - } else { - print $row->[$i]; - } - } - } - if ($i < $#{$row}) { - if ($self->{dbhdest}) { - $sql .= ","; - } else { - if ($outfile) { - print FILE ","; - } else { - print ","; - } - } - } - } else { - if (!$row->[$i]) { - $row->[$i] = '\N'; - } - if ($self->{dbhdest}) { - $sql .= $row->[$i]; - } else { - if ($outfile) { - print FILE $row->[$i]; - } else { - print $row->[$i]; - } - } - if ($i < $#{$row}) { - if ($self->{dbhdest}) { - $sql .= "\t"; - } else { - if ($outfile) { - print FILE "\t"; - } else { - print "\t"; - } - } - } else { - if ($self->{dbhdest}) { - $sql .= "\n"; - } else { - if ($outfile) { - print FILE "\n"; - } else { - print "\n"; - } - } - } - } - } - if ($self->{type} ne 'COPY') { - if ($self->{dbhdest}) { - $sql .= ");\n"; - } else { - if ($outfile) { - print FILE ");\n"; - } else { - print ");\n"; - } - } - } - $count++; - } - if ($self->{type} eq 'COPY') { - if ($self->{dbhdest}) { - $sql .= "\\.\n"; - } else { - if ($outfile) { - print FILE "\\.\n"; - } else { - print "\\.\n"; - } - } - } - if ($self->{data_limit}) { - $self->{data_end} = 1 if ($count+1 < $self->{data_limit}); - } - # Insert data if we are in online processing mode - if ($self->{dbhdest}) { - if ($self->{type} ne 'COPY') { - my $s = $self->{dbhdest}->prepare($sql) or die $self->{dbhdest}->errstr . "\n"; - $s->execute or die $s->errstr . "\n"; - } else { - print DBH "$sql"; - } - } - } - } - - # Disconnect from the database - $self->{dbh}->disconnect() if ($self->{dbh}); - - if (!$self->{dbhdest}) { - if ($outfile) { - print FILE "\nEND TRANSACTION;\n"; - } else { - print "\nEND TRANSACTION;\n"; - } - } - - $self->{dbhdest}->disconnect() if ($self->{dbhdest}); - - if ($self->{type} eq 'COPY') { - close DBH; - } - - return; - } - - - # Dump the database structure - foreach my $table (keys %{$self->{tables}}) { -print STDERR "Dumping table $table...\n" if ($self->{debug}); - $sql_output .= "CREATE ${$self->{tables}{$table}{table_info}}[1] \"\L$table\E\" (\n"; - my $sql_ukey = ""; - my $sql_pkey = ""; - foreach my $i ( 0 .. $#{$self->{tables}{$table}{field_name}} ) { - foreach my $f (@{$self->{tables}{$table}{column_info}}) { - next if (${$f}[0] ne "${$self->{tables}{$table}{field_name}}[$i]"); - my $type = $self->_sql_type(${$f}[1], ${$f}[2], ${$f}[5], ${$f}[6]); - $type = "${$f}[1], ${$f}[2]" if (!$type); - $sql_output .= "\t\"\L${$f}[0]\E\" $type"; - # Set the primary key definition - foreach my $k (@{$self->{tables}{$table}{primary_key}}) { - next if ($k ne "${$f}[0]"); - $sql_pkey .= "\"\L$k\E\","; - last; - } - if (${$f}[4] ne "") { - $sql_output .= " DEFAULT ${$f}[4]"; - } elsif (!${$f}[3] || (${$f}[3] eq 'N')) { - $sql_output .= " NOT NULL"; - } - # Set the unique key definition - foreach my $k (@{$self->{tables}{$table}{unique_key}}) { - next if ( ($k ne "${$f}[0]") || (grep(/^$k$/, @{$self->{tables}{$table}{primary_key}})) ); - $sql_ukey .= "\"\L$k\E\","; - last; - } - $sql_output .= ",\n"; - last; - } - } - $sql_ukey =~ s/,$//; - $sql_pkey =~ s/,$//; - $sql_output .= "\tUNIQUE ($sql_ukey),\n" if ($sql_ukey); - $sql_output .= "\tPRIMARY KEY ($sql_pkey),\n" if ($sql_pkey); - - # Add constraint definition - my @done = (); - foreach my $h (@{$self->{tables}{$table}{foreign_key}}) { - next if (grep(/^$h->[0]$/, @done)); - my $desttable = ''; - foreach (keys %{$self->{tables}{$table}{foreign_link}{$h->[0]}{remote}}) { - $desttable .= "$_"; - } - push(@done, $h->[0]); - $sql_output .= "\tCONSTRAINT \L$h->[0]\E FOREIGN KEY (" . lc(join(',', @{$self->{tables}{$table}{foreign_link}{$h->[0]}{local}})) . ") REFERENCES \L$desttable\E (" . lc(join(',', @{$self->{tables}{$table}{foreign_link}{$h->[0]}{remote}{$desttable}})) . ")"; - $sql_output .= " MATCH $h->[2]" if ($h->[2]); - $sql_output .= " ON DELETE $h->[3]"; - $sql_output .= " $h->[4]"; - $sql_output .= " INITIALLY $h->[5],\n"; - - } - $sql_output =~ s/,$//; - $sql_output .= ");\n"; - foreach my $idx (keys %{$self->{tables}{$table}{indexes}}) { - map { s/^/"/ } @{$self->{tables}{$table}{indexes}{$idx}}; - map { s/$/"/ } @{$self->{tables}{$table}{indexes}{$idx}}; - my $columns = join(',', @{$self->{tables}{$table}{indexes}{$idx}}); - my $unique = ''; - $unique = ' UNIQUE' if ($self->{tables}{$table}{uniqueness}{$idx} eq 'UNIQUE'); - $sql_output .= "CREATE$unique INDEX \"\L$idx\E\" ON \"\L$table\E\" (\L$columns\E);\n"; - } - $sql_output .= "\n"; - } - - if (!$sql_output) { - $sql_output = "-- Nothing found of type TABLE\n"; - } - - return $sql_header . $sql_output . "\nEND TRANSACTION;\n"; -} - - -=head2 _get_data TABLE - -This function implements a Oracle-native data extraction. - -Return a list of array reference containing the data - -=cut - -sub _get_data -{ - my ($self, $table, $name, $type) = @_; - - my $str = "SELECT "; - my $tmp = "SELECT "; - for my $k (0 .. $#{$name}) { - if ( $type->[$k] =~ /(date|time)/) { - $str .= "to_char($name->[$k], 'YYYY-MM-DD'),"; - } else { - $str .= "$name->[$k],"; - } - $tmp .= "$name->[$k],"; - } - $str =~ s/,$//; - $tmp =~ s/,$//; - my $tmp2 = $tmp; - $tmp2 =~ s/SELECT /SELECT ROWNUM as noline,/; - - # Fix a problem when the table need to be prefixed by the schema - if ($self->{schema}) { - $table = "$self->{schema}.$table"; - } - if ($self->{data_limit}) { - $str = $tmp . " FROM ( $tmp2 FROM ( $tmp FROM $table) "; - $str .= " WHERE ROWNUM < ($self->{data_limit} + $self->{data_current})) "; - $str .= " WHERE noline >= $self->{data_current}"; - } else { - $str .= " FROM $table"; - } - $self->{data_current} += $self->{data_limit}; - - # Fix a problem when exporting type LONG and LOB - $self->{dbh}->{'LongReadLen'} = 1023*1024; - $self->{dbh}->{'LongTruncOk'} = 1; - - my $sth = $self->{dbh}->prepare($str) or die $sth->errstr . "\n"; - $sth->execute or die $sth->errstr . "\n"; - - return $sth; - -} - - -=head2 _sql_type INTERNAL_TYPE LENGTH PRECISION SCALE - -This function return the PostgreSQL datatype corresponding to the -Oracle internal type. - -=cut - -sub _sql_type -{ - my ($self, $type, $len, $precision, $scale) = @_; - - my %TYPE = ( - # Oracle only has one flexible underlying numeric type, NUMBER. - # Without precision and scale it is set to PG type float8 to match all needs - 'NUMBER' => 'float8', - # CHAR types limit of 2000 bytes with default to 1 if no length is given. - # PG char type has max length set to 8104 so it should match all needs - 'CHAR' => 'char', - 'NCHAR' => 'char', - # VARCHAR types the limit is 2000 bytes in Oracle 7 and 4000 in Oracle 8. - # PG varchar type has max length iset to 8104 so it should match all needs - 'VARCHAR' => 'varchar', - 'NVARCHAR' => 'varchar', - 'VARCHAR2' => 'varchar', - 'NVARCHAR2' => 'varchar', - # The DATE data type is used to store the date and time information. - # Pg type timestamp should match all needs - 'DATE' => 'timestamp', - # Type LONG is like VARCHAR2 but with up to 2Gb. - # PG type text should match all needs or if you want you could use blob - 'LONG' => 'text', # Character data of variable length - 'LONG RAW' => 'text', # Raw binary data of variable length - # Types LOB and FILE are like LONG but with up to 4Gb. - # PG type text should match all needs or if you want you could use blob (large object) - 'CLOB' => 'text', # A large object containing single-byte characters - 'NLOB' => 'text', # A large object containing national character set data - 'BLOB' => 'text', # Binary large object - 'BFILE' => 'text', # Locator for external large binary file - # The RAW type is presented as hexadecimal characters. The contents are treated as binary data. Limit of 2000 bytes - # Pg type text should match all needs or if you want you could use blob (large object) - 'RAW' => 'text', - 'ROWID' => 'oid', - 'LONG RAW' => 'binary', - 'FLOAT' => 'float8' - ); - - # Overide the length - $len = $precision if ( ($type eq 'NUMBER') && $precision ); - - if (exists $TYPE{$type}) { - if ($len) { - if ( ($type eq "CHAR") || ($type =~ /VARCHAR/) ) { - # Type CHAR have default length set to 1 - # Type VARCHAR(2) must have a given length - $len = 1 if (!$len && ($type eq "CHAR")); - return "$TYPE{$type}($len)"; - } elsif ($type eq "NUMBER") { - # This is an integer - if (!$scale) { - if ($precision) { - return "numeric($precision)"; - } - } else { - if ($precision) { - return "decimal($precision,$scale)"; - } - } - return "$TYPE{$type}"; - } else { - return "$TYPE{$type}"; - } - } else { - - return $TYPE{$type}; - } - } - - return; -} - - -=head2 _column_info TABLE - -This function implements a Oracle-native column information. - -Return a list of array reference containing the following informations -for each column the given a table - -[( - column name, - column type, - column length, - nullable column, - default value -)] - -=cut - -sub _column_info -{ - my ($self, $table) = @_; - - my $sth = $self->{dbh}->prepare(<<END) or die $self->{dbh}->errstr; -SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE, DATA_DEFAULT, DATA_PRECISION, DATA_SCALE -FROM DBA_TAB_COLUMNS -WHERE TABLE_NAME='$table' -END - $sth->execute or die $sth->errstr; - my $data = $sth->fetchall_arrayref(); -if ($self->{debug}) { - foreach my $d (@$data) { -print STDERR "\t$d->[0] => type:$d->[1] , length:$d->[2], precision:$d->[5], scale:$d->[6], nullable:$d->[3] , default:$d->[4]\n"; - } -} - - return @$data; - -} - - -=head2 _primary_key TABLE - -This function implements a Oracle-native primary key column -information. - -Return a list of all column name defined as primary key -for the given table. - -=cut - -sub _primary_key -{ - my($self, $table) = @_; - - my $sth = $self->{dbh}->prepare(<<END) or die $self->{dbh}->errstr; -select all_cons_columns.COLUMN_NAME -from all_constraints, all_cons_columns -where all_constraints.CONSTRAINT_TYPE='P' -and all_constraints.constraint_name=all_cons_columns.constraint_name -and all_constraints.STATUS='ENABLED' -and all_constraints.TABLE_NAME='$table' -order by all_cons_columns.position -END - $sth->execute or die $sth->errstr; - my @data = (); - while (my $row = $sth->fetch) { - push(@data, ${@$row}[0]) if (${@$row}[0] !~ /\$/); - } - return @data; -} - - -=head2 _unique_key TABLE - -This function implements a Oracle-native unique key column -information. - -Return a list of all column name defined as unique key -for the given table. - -=cut - -sub _unique_key -{ - my($self, $table) = @_; - - my $sth = $self->{dbh}->prepare(<<END) or die $self->{dbh}->errstr; -select all_cons_columns.COLUMN_NAME -from all_constraints, all_cons_columns -where all_constraints.CONSTRAINT_TYPE='U' -and all_constraints.constraint_name=all_cons_columns.constraint_name -and all_constraints.STATUS='ENABLED' -and all_constraints.TABLE_NAME='$table' -order by all_cons_columns.position -END - $sth->execute or die $sth->errstr; - - my @data = (); - while (my $row = $sth->fetch) { - push(@data, ${@$row}[0]) if (${@$row}[0] !~ /\$/); - } - return @data; -} - - -=head2 _foreign_key TABLE - -This function implements a Oracle-native foreign key reference -information. - -Return a list of hash of hash of array reference. Ouuf! Nothing very difficult. -The first hash is composed of all foreign key name. The second hash just have -two key known as 'local' and remote' corresponding to the local table where the -foreign key is defined and the remote table where the key refer. - -The foreign key name is composed as follow: - - 'local_table_name->remote_table_name' - -Foreign key data consist in two array representing at the same indice the local -field and the remote field where the first one refer to the second. -Just like this: - - @{$link{$fkey_name}{local}} = @local_columns; - @{$link{$fkey_name}{remote}} = @remote_columns; - -=cut - -sub _foreign_key -{ - my ($self, $table) = @_; - - my $str = "SELECT CONSTRAINT_NAME,R_CONSTRAINT_NAME,SEARCH_CONDITION,DELETE_RULE,DEFERRABLE,DEFERRED FROM DBA_CONSTRAINTS WHERE CONSTRAINT_TYPE='R' AND STATUS='ENABLED' AND TABLE_NAME='$table'"; - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my @data = (); - my %link = (); - my @tab_done = (); - while (my $row = $sth->fetch) { - next if (grep(/^$row->[0]$/, @tab_done)); - push(@data, [ @$row ]); - push(@tab_done, $row->[0]); - my $sql = "SELECT DISTINCT COLUMN_NAME FROM DBA_CONS_COLUMNS WHERE CONSTRAINT_NAME='$row->[0]'"; - my $sth2 = $self->{dbh}->prepare($sql) or die $self->{dbh}->errstr; - $sth2->execute or die $sth2->errstr; - my @done = (); - while (my $r = $sth2->fetch) { - if (!grep(/^$r->[0]$/, @done)) { - push(@{$link{$row->[0]}{local}}, $r->[0]); - push(@done, $r->[0]); - } - } - $sql = "SELECT DISTINCT TABLE_NAME,COLUMN_NAME FROM DBA_CONS_COLUMNS WHERE CONSTRAINT_NAME='$row->[1]'"; - $sth2 = $self->{dbh}->prepare($sql) or die $self->{dbh}->errstr; - $sth2->execute or die $sth2->errstr; - @done = (); - while (my $r = $sth2->fetch) { - if (!grep(/^$r->[1]$/, @done)) { - push(@{$link{$row->[0]}{remote}{$r->[0]}}, $r->[1]); - push(@done, $r->[1]); - } - } - } - - return \%link, \@data; -} - - -=head2 _get_users - -This function implements a Oracle-native users information. - -Return a hash of all users as an array. - -=cut - -sub _get_users -{ - my($self) = @_; - - # Retrieve all USERS defined in this database - my $str = "SELECT USERNAME FROM DBA_USERS"; - if (!$self->{schema}) { - $str .= " WHERE USERNAME <> 'SYS' AND USERNAME <> 'SYSTEM' AND USERNAME <> 'DBSNMP' AND USERNAME <> 'OUTLN'"; - } else { - $str .= " WHERE USERNAME = '$self->{schema}'"; - } - $str .= " ORDER BY USERNAME"; - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - - $sth->execute or die $sth->errstr; - my @users = (); - while (my $row = $sth->fetch) { - push(@users, $row->[0]); - } - - return \@users; -} - - - -=head2 _get_roles - -This function implements a Oracle-native roles -information. - -Return a hash of all groups (roles) as an array of associated users. - -=cut - -sub _get_roles -{ - my($self) = @_; - - # Retrieve all ROLES defined in this database - my $str = "SELECT GRANTED_ROLE,GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTEE NOT IN (select distinct role from dba_roles)"; - if (!$self->{schema}) { - $str .= " AND GRANTEE <> 'SYS' AND GRANTEE <> 'SYSTEM' AND GRANTEE <> 'DBSNMP' AND GRANTEE <> 'OUTLN'"; - } else { - $str .= " AND GRANTEE = '$self->{schema}'"; - } - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - - $sth->execute or die $sth->errstr; - my %roles = (); - while (my $row = $sth->fetch) { - push(@{$roles{"$row->[0]"}}, $row->[1]); - } - - return \%roles; -} - - -=head2 _get_all_grants - -This function implements a Oracle-native user privilege -information. - -Return a hash of all tables grants as an array of associated users. - -=cut - -sub _get_all_grants -{ - my($self) = @_; - - my @PG_GRANTS = ('DELETE', 'INSERT', 'SELECT', 'UPDATE'); - - # Retrieve all ROLES defined in this database - my $str = "SELECT table_name,privilege,grantee FROM DBA_TAB_PRIVS"; - if ($self->{schema}) { - $str .= " WHERE GRANTEE = '$self->{schema}'"; - } else { - $str .= " WHERE GRANTEE <> 'SYS' AND GRANTEE <> 'SYSTEM' AND GRANTEE <> 'DBSNMP' AND GRANTEE <> 'OUTLN'"; - } - $str .= " ORDER BY TABLE_NAME"; - - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - - $sth->execute or die $sth->errstr; - my %grants = (); - while (my $row = $sth->fetch) { - push(@{$grants{"$row->[0]"}{"$row->[1]"}}, $row->[2]) if (grep(/$row->[1]/, @PG_GRANTS)); - } - - return \%grants; -} - - - -=head2 _get_indexes TABLE - -This function implements a Oracle-native indexes information. - -Return hash of array containing all unique index and a hash of -array of all indexes name which are not primary keys for the -given table. - -=cut - -sub _get_indexes -{ - my($self, $table) = @_; - - # Retrieve all indexes - my $str = "SELECT DISTINCT DBA_IND_COLUMNS.INDEX_NAME, DBA_IND_COLUMNS.COLUMN_NAME, DBA_INDEXES.UNIQUENESS FROM DBA_IND_COLUMNS, DBA_INDEXES WHERE DBA_IND_COLUMNS.TABLE_NAME='$table' AND DBA_INDEXES.INDEX_NAME=DBA_IND_COLUMNS.INDEX_NAME AND DBA_IND_COLUMNS.INDEX_NAME NOT IN (SELECT CONSTRAINT_NAME FROM ALL_CONSTRAINTS WHERE TABLE_NAME='$table')"; - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my %data = (); - my %unique = (); - while (my $row = $sth->fetch) { - $unique{$row->[0]} = $row->[2]; - push(@{$data{$row->[0]}}, $row->[1]); - } - - return \%unique, \%data; -} - - -=head2 _get_sequences - -This function implements a Oracle-native sequences -information. - -Return a hash of array of sequence name with MIN_VALUE, MAX_VALUE, -INCREMENT and LAST_NUMBER for the given table. - -=cut - -sub _get_sequences -{ - my($self) = @_; - - # Retrieve all indexes - my $str = "SELECT DISTINCT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER, CACHE_SIZE, CYCLE_FLAG FROM DBA_SEQUENCES"; - if (!$self->{schema}) { - $str .= " WHERE SEQUENCE_OWNER <> 'SYS' AND SEQUENCE_OWNER <> 'SYSTEM' AND SEQUENCE_OWNER <> 'DBSNMP' AND SEQUENCE_OWNER <> 'OUTLN'"; - } else { - $str .= " WHERE SEQUENCE_OWNER = '$self->{schema}'"; - } - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my @seqs = (); - while (my $row = $sth->fetch) { - push(@seqs, [ @$row ]); - } - - return \@seqs; -} - - -=head2 _get_views - -This function implements a Oracle-native views information. - -Return a hash of view name with the SQL query it is based on. - -=cut - -sub _get_views -{ - my($self) = @_; - - # Retrieve all views - my $str = "SELECT VIEW_NAME,TEXT FROM DBA_VIEWS"; - if (!$self->{schema}) { - $str .= " WHERE OWNER <> 'SYS' AND OWNER <> 'SYSTEM' AND OWNER <> 'DBSNMP' AND OWNER <> 'OUTLN'"; - } else { - $str .= " WHERE OWNER = '$self->{schema}'"; - } - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my %data = (); - while (my $row = $sth->fetch) { - $data{$row->[0]} = $row->[1]; - @{$data{$row->[0]}{alias}} = $self->_alias_info ($row->[0]); - } - - return %data; -} - -=head2 _alias_info - -This function implements a Oracle-native column information. - -Return a list of array reference containing the following informations -for each alias of the given view - -[( - column name, - column id -)] - -=cut - -sub _alias_info -{ - my ($self, $view) = @_; - - my $sth = $self->{dbh}->prepare(<<END) or die $self->{dbh}->errstr; -SELECT COLUMN_NAME, COLUMN_ID -FROM DBA_TAB_COLUMNS -WHERE TABLE_NAME='$view' -END - $sth->execute or die $sth->errstr; - my $data = $sth->fetchall_arrayref(); - if ($self->{debug}) { - foreach my $d (@$data) { - print STDERR "\t$d->[0] => column id:$d->[1]\n"; - } - } - - return @$data; - -} - -=head2 _get_triggers - -This function implements a Oracle-native triggers information. - -Return an array of refarray of all triggers informations - -=cut - -sub _get_triggers -{ - my($self) = @_; - - # Retrieve all indexes - my $str = "SELECT TRIGGER_NAME, TRIGGER_TYPE, TRIGGERING_EVENT, TABLE_NAME, TRIGGER_BODY FROM DBA_TRIGGERS WHERE STATUS='ENABLED'"; - if (!$self->{schema}) { - $str .= " AND OWNER <> 'SYS' AND OWNER <> 'SYSTEM' AND OWNER <> 'DBSNMP' AND OWNER <> 'OUTLN'"; - } else { - $str .= " AND OWNER = '$self->{schema}'"; - } - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my @triggers = (); - while (my $row = $sth->fetch) { - push(@triggers, [ @$row ]); - } - - return \@triggers; -} - - -=head2 _get_functions - -This function implements a Oracle-native functions information. - -Return a hash of all function name with their PLSQL code - -=cut - -sub _get_functions -{ - my($self, $type) = @_; - - # Retrieve all indexes - my $str = "SELECT DISTINCT OBJECT_NAME,OWNER FROM DBA_OBJECTS WHERE OBJECT_TYPE='$type' AND STATUS='VALID'"; - if (!$self->{schema}) { - $str .= " AND OWNER <> 'SYS' AND OWNER <> 'SYSTEM' AND OWNER <> 'DBSNMP' AND OWNER <> 'OUTLN'"; - } else { - $str .= " AND OWNER = '$self->{schema}'"; - } - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my %functions = (); - my @fct_done = (); - while (my $row = $sth->fetch) { - next if (grep(/^$row->[0]$/, @fct_done)); - push(@fct_done, $row->[0]); - my $sql = "SELECT TEXT FROM DBA_SOURCE WHERE OWNER='$row->[1]' AND NAME='$row->[0]' ORDER BY LINE"; - my $sth2 = $self->{dbh}->prepare($sql) or die $self->{dbh}->errstr; - $sth2->execute or die $sth2->errstr; - while (my $r = $sth2->fetch) { - $functions{"$row->[0]"} .= $r->[0]; - } - } - - return \%functions; -} - - -=head2 _get_packages - -This function implements a Oracle-native packages information. - -Return a hash of all function name with their PLSQL code - -=cut - -sub _get_packages -{ - my ($self) = @_; - - # Retrieve all indexes - my $str = "SELECT DISTINCT OBJECT_NAME,OWNER FROM DBA_OBJECTS WHERE OBJECT_TYPE='PACKAGE' AND STATUS='VALID'"; - if (!$self->{schema}) { - $str .= " AND OWNER <> 'SYS' AND OWNER <> 'SYSTEM' AND OWNER <> 'DBSNMP' AND OWNER <> 'OUTLN'"; - } else { - $str .= " AND OWNER = '$self->{schema}'"; - } - - my $sth = $self->{dbh}->prepare($str) or die $self->{dbh}->errstr; - $sth->execute or die $sth->errstr; - - my %packages = (); - my @fct_done = (); - while (my $row = $sth->fetch) { -print STDERR "\tFound Package: $row->[0]\n" if ($self->{debug}); - next if (grep(/^$row->[0]$/, @fct_done)); - push(@fct_done, $row->[0]); - my $sql = "SELECT TEXT FROM DBA_SOURCE WHERE OWNER='$row->[1]' AND NAME='$row->[0]' ORDER BY LINE"; - my $sth2 = $self->{dbh}->prepare($sql) or die $self->{dbh}->errstr; - $sth2->execute or die $sth2->errstr; - while (my $r = $sth2->fetch) { - $packages{"$row->[0]"} .= $r->[0]; - } - } - - return \%packages; -} - - - -=head2 _table_info - -This function retrieve all Oracle-native tables information. - -Return a handle to a DB query statement - -=cut - - -sub _table_info -{ - my $self = shift; - - my $sql = "SELECT - NULL TABLE_CAT, - at.OWNER TABLE_SCHEM, - at.TABLE_NAME, - tc.TABLE_TYPE, - tc.COMMENTS REMARKS - from ALL_TABLES at, ALL_TAB_COMMENTS tc - where at.OWNER = tc.OWNER - and at.TABLE_NAME = tc.TABLE_NAME - "; - - if ($self->{schema}) { - $sql .= " and at.OWNER='$self->{schema}'"; - } else { - $sql .= "AND at.OWNER <> 'SYS' AND at.OWNER <> 'SYSTEM' AND at.OWNER <> 'DBSNMP' AND at.OWNER <> 'OUTLN'"; - } - $sql .= " order by tc.TABLE_TYPE, at.OWNER, at.TABLE_NAME"; - my $sth = $self->{dbh}->prepare( $sql ) or return undef; - $sth->execute or return undef; - $sth; -} - -1; - -__END__ - - -=head1 AUTHOR - -Gilles Darold <gilles@darold.net> - - -=head1 COPYRIGHT - -Copyright (c) 2001 Gilles Darold - All rights reserved. - -This program is free software; you can redistribute it and/or modify it under -the same terms as Perl itself. - - -=head1 BUGS - -This perl module is in the same state as my knowledge regarding database, -it can move and not be compatible with older version so I will do my best -to give you official support for Ora2Pg. Your volontee to help construct -it and your contribution are welcome. - - -=head1 SEE ALSO - -L<DBI>, L<DBD::Oracle>, L<DBD::Pg> - - -=head1 ACKNOWLEDGEMENTS - -Thanks to Jason Servetar who decided me to implement data extraction. - -=cut - - |