リリース日: 1998-03-01
このリリースでは、多くの 新機能や改良があります。以下に、簡単に概要を示します。
完全な SQL92 の副セレクト機能を含む、多くの新しい SQL機能 (ターゲットリストの副セレクトを除く全て)。
タイムゾーン、日付書式を指定する、クライアント側の環境変数のサポート。
クライアント/サーバ接続用のソケットインタフェース。現在、これがデフォルトとなりましたので、postmaster 起動時に -i フラグが必要になる可能性があります。
より優れたパスワード認証機構。デフォルトのテーブル権限が変更されました。
time travelという古い形式が削除されました。性能が向上しました。
注意: Bruce Momjian による、このリリースを紹介する以下のノートがあります。
いくつか言及すべき、6.3 の一般的な問題点があります。一行では書き表せない程度の項目です。詳細な変更点リストの再検査がまだ必要です。
まず、副セレクトが可能になりました。これが可能になった今、副セレクトがない SQL は非常に限定された言語であるということができます。副セレクトは大きな機能であり、副セレクトによってより良い問い合わせが行うことができるかどうか、コードを見直すべきです。想像するよりも多くのことが副セレクトで行うことができることが判るでしょう。Vadim は副セレクトを使用した大きな SQL マップを残し、また、完全な副セレクト関数も残しました。副セレクトを使うことができないものは、目的リストだけです。
次に、6.3 はデフォルトで、 TCP/IPではなく Unix ドメインソケットを使用するようになりました。他のマシンからの接続を可能にするには、postmaster の新規の -i オプションを使用し、もちろん、pg_hba.conf ファイルを編集しなければなりません。また、このため、pg_hba.conf の書式が変更されました。
3番目に、char() フィールドは、varchar() や text よりも高速にアクセスできるようになりました。特に、text や varchar() には、この型の最初の列の後にある列へのアクセスにペナルティがあります。 char() にもこのアクセスペナルティがありましたが、今回なくなりました。特に、短い文字用の列に varchar() や text を使用しているような場合、テーブルの再設計を行うことを勧めます。この点や他の変更点により、6.3 は以前のリリースよりも高速になっています。
Unix ファイルに依存しないパスワード定義が可能になりました。新しい SQL コマンドがあります。より詳細は 管理者用ガイドを参照して下さい。ユーザの情報やそのパスワードを格納する、pg_shadow という新しいテーブルがあります。 また、デフォルトではこのテーブルは postgres スーパーユーザからのみSELECTすることができます。 pg_user は pg_shadow のビューとなり、PUBLIC より SELECT 可能です。アプリケーションを変更することなく、pg_user を使用し続けることができます。
ユーザが作成したテーブルは、デフォルトで、PUBLIC から SELECT できなくなりました。これはANSI 標準の要求に従うために変更されました。もちろんテーブルを作成した後に必要な権限を GRANT することができます。システムテーブルは現在でも PUBLIC から SELECT 可能です。
本物のデッドロック検出コードが追加されました。60秒のタイムアウトはもうありません。この新しいロックコードは よりよいFIFO を実装していますので、高負荷時のリソースの消費量が少なくなるはずです。
以前のリリースでは、不適当な文書に関する批判が多くありました。Thomas は頑張ってこのリリースで多くの新しいマニュアルを作成しました。doc/ディレクトリに注目して下さい。
性能上の理由により、time travel はなくなりました。 トリガを使用して実装することができます(pgsql/contrib/spi/READMEを参照して下さい)。型、演算子などの \d コマンドをチェックして下さい。 また、ビューは元となったテーブルとは別に、独自の権限を持つようになりました。 ですから、これらの権限は別々に設定しなければなりません。いくつかの新しい PostgreSQL との通信方法については /pgsql/interfaces をチェックして下さい。
これは既存のユーザへの説明が必要となる初めてのリリースです。多くの点において、この新しいリリースでは多くの制限が削除され、そのために行っていた回避策が不要になったため、この説明が必要でした。
Bug Fixes --------- Fix binary cursors broken by MOVE implementation(Vadim) Fix for tcl library crash(Jan) Fix for array handling, from Gerhard Hintermayer Fix acl error, and remove duplicate pqtrace(Bruce) Fix psql \e for empty file(Bruce) Fix for textcat on varchar() fields(Bruce) Fix for DBT Sendproc (Zeugswetter Andres) Fix vacuum analyze syntax problem(Bruce) Fix for international identifiers(Tatsuo) Fix aggregates on inherited tables(Bruce) Fix substr() for out-of-bounds data Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce) Fix notty output to show status result. -q option still turns it off(Bruce) Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce) Fix cluster(Bruce) Fix for PQtrace start/stop several times(Bruce) Fix a variety of locking problems like newer lock waiters getting lock before older waiters, and having readlock people not share locks if a writer is waiting for a lock, and waiting writers not getting priority over waiting readers(Bruce) Fix crashes in psql when executing queries from external files(James) Fix problem with multiple order by columns, with the first one having NULL values(Jeroen) Use correct hash table support functions for float8 and int4(Thomas) Re-enable JOIN= option in CREATE OPERATOR statement (Thomas) Change precedence for boolean operators to match expected behavior(Thomas) Generate elog(ERROR) on over-large integer(Bruce) Allow multiple-argument functions in constraint clauses(Thomas) Check boolean input literals for 'true','false','yes','no','1','0' and throw elog(ERROR) if unrecognized(Thomas) Major large objects fix Fix for GROUP BY showing duplicates(Vadim) Fix for index scans in MergeJion(Vadim) Enhancements ------------ Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas) New User Manual(Thomas, others) Speedup by inlining some frequently-called functions Real deadlock detection, no more timeouts(Bruce) Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER(Thomas) Modify constraint syntax to be SQL92-compliant(Thomas) Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas) Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas) Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas) Allow PostgreSQL-style casting ("::") of non-constants(Thomas) Add support for SQL3 TRUE and FALSE boolean constants(Thomas) Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas) Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas) Allow SQL92 delimited identifiers(Thomas) Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas) Support SQL92 syntax for type coercion of literal strings (e.g. "DATETIME 'now'")(Thomas) Add conversions for int2, int4, and OID types to and from text(Thomas) Use shared lock when building indexes(Vadim) Free memory allocated for an user query inside transaction block after this query is done, was turned off in <= 6.2.1(Vadim) New SQL statement CREATE PROCEDURAL LANGUAGE(Jan) New PostgreSQL Procedural Language (PL) backend interface(Jan) Rename pg_dump -H option to -h(Bruce) Add Java support for passwords, European dates(Peter) Use indexes for LIKE and ~, !~ operations(Bruce) Add hash functions for datetime and timespan(Thomas) Time Travel removed(Vadim, Bruce) Add paging for \d and \z, and fix \i(Bruce) Add Unix domain socket support to backend and to frontend library(Goran) Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas) Allow more SQL92 and/or PostgreSQL reserved words as column identifiers(Thomas) Augment support for SQL92 SET TIME ZONE...(Thomas) SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas) Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas) Enable SET TIME ZONE using TZ environment variable(Thomas) Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas) Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO frontend library initialization environment variables(Thomas) Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas) Add pg_description table for info on tables, columns, operators, types, and aggregates(Bruce) Increase 16 char limit on system table/index names to 32 characters(Bruce) Rename system indexes(Bruce) Add 'GERMAN' option to SET DATESTYLE(Thomas) Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas) Allow fractional values for delta times (e.g. '2.5 days')(Thomas) Validate numeric input more carefully for delta times(Thomas) Implement day of year as possible input to date_part()(Thomas) Define timespan_finite() and text_timespan() functions(Thomas) Remove archive stuff(Bruce) Allow for a pg_password authentication database that is separate from the system password file(Todd) Dump ACLs, GRANT, REVOKE privileges(Matt) Define text, varchar, and bpchar string length functions(Thomas) Fix Query handling for inheritance, and cost computations(Bruce) Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas) Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas) Implement UNIONs for SELECT(Bruce) Add UNION, GROUP, DISTINCT to INSERT(Bruce) varchar() stores only necessary bytes on disk(Bruce) Fix for BLOBs(Peter) Mega-Patch for JDBC...see README_6.3 for list of changes(Peter) Remove unused "option" from PQconnectdb() New LOCK command and lock manual page describing deadlocks(Bruce) Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce) Enhance psql \z to show sequences(Bruce) Show NOT NULL and DEFAULT in psql \d table(Bruce) New psql .psqlrc file start-up(Andrew) Modify sample start-up script in contrib/linux to show syslog(Thomas) New types for IP and MAC addresses in contrib/ip_and_mac(TomH) Unix system time conversions with date/time types in contrib/unixdate(Thomas) Update of contrib stuff(Massimo) Add Unix socket support to DBD::Pg(Goran) New python interface (PyGreSQL 2.0)(D'Arcy) New frontend/backend protocol has a version number, network byte order(Phil) Security features in pg_hba.conf enhanced and documented, many cleanups(Phil) CHAR() now faster access than VARCHAR() or TEXT ecpg embedded SQL preprocessor Reduce system column overhead(Vadmin) Remove pg_time table(Vadim) Add pg_type attribute to identify types that need length (bpchar, varchar) Add report of offending line when COPY command fails Allow VIEW privileges to be set separately from the underlying tables. For security, use GRANT/REVOKE on views as appropriate(Jan) Tables now have no default GRANT SELECT TO PUBLIC. You must explicitly grant such privileges. Clean up tutorial examples(Darren) Source Tree Changes ------------------- Add new html development tools, and flow chart in /tools/backend Fix for SCO compiles Stratus computer port Robert Gillies Added support for shlib for BSD44_derived & i386_solaris Make configure more automated(Brook) Add script to check regression test results Break parser functions into smaller files, group together(Bruce) Rename heap_create to heap_create_and_catalog, rename heap_creatr to heap_create()(Bruce) Sparc/Linux patch for locking(TomS) Remove PORTNAME and reorganize port-specific stuff(Marc) Add optimizer README file(Bruce) Remove some recursion in optimizer and clean up some code there(Bruce) Fix for NetBSD locking(Henry) Fix for libptcl make(Tatsuo) AIX patch(Darren) Change IS TRUE, IS FALSE, ... to expressions using "=" rather than function calls to istrue() or isfalse() to allow optimization(Thomas) Various fixes NetBSD/Sparc related(TomH) Alpha linux locking(Travis,Ryan) Change elog(WARN) to elog(ERROR)(Bruce) FAQ for FreeBSD(Marc) Bring in the PostODBC source tree as part of our standard distribution(Marc) A minor patch for HP/UX 10 vs 9(Stan) New pg_attribute.atttypmod for type-specific info like varchar length(Bruce) UnixWare patches(Billy) New i386 'lock' for spinlock asm(Billy) Support for multiplexed backends is removed Start an OpenBSD port Start an AUX port Start a Cygnus port Add string functions to regression suite(Thomas) Expand a few function names formerly truncated to 16 characters(Thomas) Remove un-needed malloc() calls and replace with palloc()(Bruce)